
Клиент/серверные скрипты, предназначенные для тестирования правил исходящего (egress) межсетевого экрана.
Клиент/серверные скрипты, предназначенные для проверки правил исходящего (egress) межсетевого экрана.
Egresser — это инструмент для перечисления правил исходящего межсетевого экрана, предназначенный для пентестеров, чтобы оценить, насколько адекватна исходящая фильтрация внутри корпоративной сети. Последовательно проверяя каждый TCP-порт, сервер Egresser отвечает исходным IP-адресом и портом клиента, позволяя клиенту определить, разрешён ли исходящий порт (как для IPv4, так и для IPv6), и оценить, вероятно ли происходит прохождение NAT.
Как это работает
Серверный скрипт работает в связке с Iptables — перенаправляя весь TCP-трафик на порт 8080, где находится «настоящий» сервер. Серверный скрипт написан на Perl и представляет собой pre-forking сервер, использующий Net::Server::Prefork и прослушивающий как IPv4, так и IPv6, если они доступны. Любое TCP-соединение приводит к простому ответу, содержащему строку, завершающуюся нулевым символом и состоящую из IP-адреса и порта подключающегося клиента. Не стесняйтесь использовать Telnet для взаимодействия с сервисом, если вы находитесь в среде с ограничениями и не имеете доступа к клиенту Egresser (наш сервер Egresser находится по адресу egresser.labs.cyberis.co.uk, и вы можете использовать его в законных целях).
Клиент также написан на Perl и является многопоточным для скорости. По умолчанию он сканирует TCP-порты 1-1024, хотя это настраивается в скрипте. Можно принудительно использовать IPv4 с помощью аргумента командной строки «-4» или IPv6 с помощью «-6»; по умолчанию выбирается протокол, предпочитаемый вашей операционной системой. Если вы хотите явно перечислить все открытые/закрытые порты, укажите флаг подробного вывода (-v), так как обычный вывод — это краткая сводка только разрешённых портов.
Зачем?
Рекомендуется ограничивать правила исходящего межсетевого экрана в корпоративных средах, чтобы гарантировать, что периметровые средства контроля нелегко обойти. Например, недостаточная исходящая фильтрация в организации позволит злоумышленнику тривиально обойти веб-прокси, обеспечивающий фильтрацию/антивирус/журналирование, просто изменив настройки подключения браузера. Существует и множество других примеров — многие черви распространяются через протоколы SMB, вредоносное ПО может использовать многочисленные каналы для вывода данных, а потенциально неавторизованное ПО (например, торрент/пиринговый обмен файлами) может свободно работать, расходуя корпоративные ресурсы и значительно увеличивая вероятность проникновения вредоносного кода в среду.
В целом рекомендуется ограничивать все исходящие протоколы, разрешая исключения для конкретных хостов в каждом отдельном случае. Веб-сёрфинг должен осуществляться только через выделенные веб-прокси, а любые попытки прямых подключений должны регистрироваться периметровым межсетевым экраном и расследоваться при необходимости. Egresser — это простой в использовании инструмент, позволяющий пентестеру быстро перечислить разрешённые порты в корпоративной среде.
Требуются iptables 1.4.17 или выше, а для поддержки NAT для IPv6 — ядро 3.7+.
Для клиента требуются следующие модули Perl:
Thread::Queue ;
IO::Socket::IP;
Getopt::Long;
Для сервера требуются следующие модули Perl:
Net::Server::PreFork
Пожалуйста, сообщайте обо всех проблемах через https://github.com/cyberisltd/Egresser/issues