
HTTP/HTTPS MITM прокси и рекордер.
Hyperfox — это инструмент аудита безопасности, который проксирует и записывает HTTP- и HTTPS-трафик между двумя точками.
Вы можете установить последнюю версию hyperfox в /usr/local/bin с помощью следующей команды (требуются права администратора):
curl -sL 'https://raw.githubusercontent.com/malfunkt/hyperfox/master/install.sh' | sh
Если вы предпочитаете не брать конфеты из этого фургона, вы также можете загрузить релиз со страницы релизов и установить его вручную.
hyperfox из исходного кодаДля сборки hyperfox из исходного кода вам понадобятся Go и C-компилятор:
Используйте go install для сборки и установки hyperfox:
go install github.com/malfunkt/hyperfox
Hyperfox создает прозрачный HTTP-прокси-сервер и привязывает его к порту 1080/TCP на localhost (-addr 127.0.0.1 -http 1080). Прокси-сервер читает обычные HTTP-запросы и перенаправляет их к целевой точке назначения (заголовок Host используется для определения назначения), когда целевая точка отвечает, Hyperfox перехватывает ответ и пересылает его исходному клиенту.
Все HTTP-коммуникации между источником и назначением перехватываются Hyperfox и записываются в базу данных SQLite, которая создается автоматически. Каждый раз при запуске Hyperfox создается новая база данных (например: hyperfox-00123.db). Вы можете изменить это поведение, явно указав имя базы данных (например: -db traffic-log.db).
Запустите Hyperfox с конфигурацией по умолчанию:
hyperfox
используйте cURL для запроса любой HTTP-страницы, параметр -x указывает cURL использовать hyperfox в качестве прокси:
curl -x http://127.0.0.1:1080 example.com
вы сможете увидеть запись запрошенной страницы в выводе Hyperfox:
127.0.0.1:44254 - - [11/Apr/2020:19:19:48 -0500] "GET http://example.com/ HTTP/1.1" 200 -1
-ui)
Используйте параметр -ui для включения пользовательского интерфейса Hyperfox, который откроется в новом окне браузера:
hyperfox -db records.db -ui
Приведенная выше команда создает веб-сервер, который привязывается к 127.0.0.1:1984. Если вы хотите изменить адрес или порт привязки, используйте флаг -ui-addr:
hyperfox -db records.db -ui -ui-addr 127.0.0.1:3000
Изменение адреса сервера интерфейса особенно полезно, когда Hyperfox работает на удаленном хосте или хосте без графического интерфейса, и вы хотите увидеть интерфейс с другого хоста.
Включение пользовательского интерфейса также включает минимальный REST API (на 127.0.0.1:4891), который используется фронтенд-приложением.
Обратите внимание, что REST API Hyperfox защищен только случайно сгенерированным ключом, который меняется при каждом запуске Hyperfox; в зависимости от вашего сценария использования это может быть неадекватно.
Когда параметр -ui-addr отличается от 127.0.0.1, Hyperfox выведет QR-код, чтобы упростить подключение с мобильных устройств:
hyperfox -db records.db -ui -ui-addr 192.168.1.23:1984
-ca-cert и -ca-key)SSL/TLS-соединения защищены сквозным шифрованием и защищены от подслушивания. Hyperfox не сможет видеть ничего, что происходит между клиентом и защищенным назначением. Это справедливо только до тех пор, пока цепочка доверия остается нетронутой.
Предположим, что клиент доверяет корневому сертификату CA, который известен Hyperfox; если это произойдет, Hyperfox сможет выпускать сертификаты, которым будет доверять клиент.
Примеры таких поддельных корневых файлов CA можно найти здесь:
вы также можете сгенерировать собственный корневой сертификат CA и ключ.
Существует ряд способов установки корневых сертификатов CA в зависимости от вашей операционной системы.
Этот QR-код может пригодиться при установке корневого CA Hyperfox на мобильном устройстве:
Hyperfox root CA certificate
Используйте флаги -ca-cert и -ca-key, чтобы предоставить Hyperfox корневой сертификат CA и ключ, которые вы хотите использовать:
hyperfox -ca-cert rootCA.crt -ca-key rootCA.key
приведенная выше команда создает специальный сервер и привязывает его к 127.0.0.1:10443, этот сервер ожидает поступления SSL/TLS-соединения. Когда поступает новое SSL/TLS-соединение, Hyperfox использует расширение SNI для идентификации целевого сервера имен и создания для него SSL/TLS-сертификата, этот сертификат подписывается предоставленным ключом корневого CA.
Запустите Hyperfox с соответствующими параметрами TLS и -http 443 (порт 443 требует прав администратора).
sudo hyperfox -ca-cert ./ca/rootCA.crt -ca-key ./ca/rootCA.key -https 443
Используйте cURL для выполнения HTTPS-запроса к example.com: опция -resolve указывает cURL пропустить проверку DNS и использовать 127.0.0.1 как законный адрес для example.com, а параметр -k указывает cURL принимать любой TLS-сертификат.
curl -k -resolve example.com:443:127.0.0.1 https://example.com
вы сможете увидеть запись запрошенной страницы в выводе Hyperfox:
127.0.0.1:36398 - - [11/Apr/2020:19:36:56 -0500] "GET https://example.com/ HTTP/2.0" 200 -1
/etc/hosts на localhostДобавьте хост, который хотите проверить, в файл /etc/hosts:
example.com 127.0.0.1
Запустите Hyperfox с нужными параметрами, только помните, что вы должны использовать порты 80 для HTTP и 443 для HTTPS, и это требует прав администратора. В дополнение к -http и -https используйте параметр -dns с действительным DNS-резолвером:
sudo hyperfox -ui -http 80 -dns 8.8.8.8
это заставит Hyperfox пропустить системный DNS-резолвер и использовать альтернативный (помните, что example.com указывает на 127.0.1).
Теперь используйте cURL и попробуйте перейти к назначению:
curl http://example.com
Hyperfox перехватит запрос и выведет его в свой вывод:
127.0.0.1:41766 - - [11/Apr/2020:19:43:30 -0500] "GET http://example.com/ HTTP/1.1" 200 -1
См. MITM-атака с Hyperfox и arpfox.
Выберите задачу, исправьте ее и отправьте pull request.
Copyright (c) 2012-today José Nieto, https://xiam.io
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.