Для перехвата и анализа трафика есть отличная утилита mitmproxy, а в паре с ProxyChains-ng они способны замитмить практически любое приложение macOS, которое использует HTTP.
Еще по теме: Проксирование с помощью 3proxy и SSH
В предыдущей статье мы делали быстрые алиасы для переключения архитектур, теперь самое время их применить.
Для переключения между архитектурами можно сделать себе такие алиасы в файле ~/.bashrc или ~/.zshrc:
1 2 |
alias intel="env /usr/bin/arch -x86_64 /bin/zsh --login" alias arm="env /usr/bin/arch -arm64 /bin/zsh --login" |
К слову, поддержку macOS Monterey и M1 в ProxyChains-ng добавили совсем недавно — в начале января 2022 года.
Мы соберем две разные версии библиотек libproxychains4.dylib для работы с обеими архитектурами. Большинство программ универсальны и скомпилированы для двух архитектур сразу (Mach-O universal binary). Например:
1 2 3 4 |
$ file /usr/bin/python /usr/bin/python: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64e:Mach-O 64-bit executable arm64e] /usr/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64 /usr/bin/python (for architecture arm64e): Mach-O 64-bit executable arm64e |
Версии для x86_64 и для ARM предназначены для работы с приложениями, собранными под соответствующие архитектуры. Начнем с x86_64.
1 2 3 4 5 6 7 |
$ intel $ arch i386 $ git clone https://github.com/rofl0r/proxychains-ng $ cd proxychains-ng $ ./configure $ make && make install |
Пробуем, например с TOR:
1 2 3 4 5 6 |
$ proxychains4 curl icanhazip.org [proxychains] config file found: /usr/local/etc/proxychains.conf [proxychains] preloading /usr/local/lib/libproxychains4.dylib [proxychains] DLL init: proxychains-ng 4.15-git-8-g2739fb5 [proxychains] Strict chain ... 127.0.0.1:9050 ... icanhazip.org:80 ... OK 45.153.160.135 |
Отлично работает для утилиты curl. Давайте попробуем сделать прокси для Telegram. Он как раз написан только под ARM, и нам потребуется пересобрать proxychains4.
Удостоверимся, что это приложение для ARM:
1 2 |
$ file /Applications/Telegram.app/Contents/MacOS/Telegram /Applications/Telegram.app/Contents/MacOS/Telegram: Mach-O 64-bit executable arm64 |
Все так, теперь меняем архитектуру:
1 2 3 |
$ arm $ arch arm64 |
Пересоберем ProxyChains-ng:
1 2 3 |
$ make clean $ ./configure $ make |
Здесь я намеренно не делал make inastall, так как затрется предыдущая версия. Буду запускать из папки proxychains-ng. После сборки бинарник и библиотека лежит в корне. Подкорректирую конфиг:
1 2 3 |
$ cp src/proxychains.conf ./ $ sed -i '' 's/socks4/#socks4/g' proxychains.conf $ echo "http 127.0.0.1 8080" >> proxychains.conf |
Теперь установим mitmproxy:
1 |
$ brew install mitmproxy |
Проверим работу:
1 |
$ mitmproxy |
Установим необходимые сертификаты:
1 |
$ sudo security add-trusted-cert -d -p ssl -p basic -k /Library/Keychains/System.keychain ~/.mitmproxy/mitmproxy-ca-cert.pem |
В одной вкладке терминала запускаем mitmproxy, в другой — Telegram через proxychains:
1 |
$ ./proxychains4 /Applications/Telegram.app/Contents/MacOS/Telegram |
Конечно, помимо «Телеграма», мы можем перехватывать, например, целый Firefox и смотреть, куда летят запросы самого браузера или его расширений:
1 |
$ proxychains4 /Applications/Firefox.app/Contents/MacOS/firefox |
Таким образом мы можем проксировать и захватывать трафик практически любых приложений для macOS. К слову, для анализа трафика на интерфейсе всегда можно использовать Wireshark, который с версии 3.6.0 стал нативным приложением для архитектуры ARM.
РЕКОМЕНДУЕМ: