Добро пожаловать обратно, мои начинающие кибервоины!
Межсетевой экран — важнейший компонент сетевой безопасности, который служит барьером между доверенными внутренними сетями и ненадежными внешними сетями, такими как Интернет. Он отслеживает и контролирует входящий и исходящий сетевой трафик на основе заранее определенных правил безопасности.
Межсетевые экраны могут быть реализованы в виде аппаратных устройств, программных приложений или их комбинации. Они служат различным целям:
5. Трансляция сетевых адресов (NAT) : некоторые брандмауэры выполняют NAT, что помогает скрыть внутренние сетевые адреса от внешних сетей, добавляя дополнительный уровень безопасности.
Современные межсетевые экраны выходят за рамки простой фильтрации пакетов. Они включают в себя расширенные функции, такие как глубокая проверка пакетов и фильтрация на уровне приложений, для обеспечения более комплексной защиты от сложных киберугроз.
В этой статье мы сосредоточимся на межсетевых экранах, работающих на уровне 7 модели OSI, также известном как прикладной уровень.
Рассматривая работу межсетевых экранов нового поколения (NGFW), вы можете заметить нечто интересное. Допустим, правило межсетевого экрана гласит: «Только команда A может использовать веб-порты (80 и 443)». Первоначальное сканирование портов с помощью инструмента, например, nmap, может показать множество открытых портов, что может ввести наблюдателя в заблуждение и заставить его подумать, что межсетевой экран неправильно настроен или неэффективен. Однако при попытке подключения к этим портам, которые кажутся открытыми, соединение вскоре неожиданно обрывается.
Конкретный пример такого поведения можно увидеть в Cisco Firepower Threat Defense (FTD), который использует механизм Snort для глубокой проверки пакетов. Согласно документации Cisco:
Чтобы движок Snort определил приложение, ему необходимо проинспектировать несколько пакетов (обычно от 3 до 10, в зависимости от декодера приложения). Таким образом, несколько пакетов пропускаются через FTD и достигают пункта назначения. Разрешенные пакеты по-прежнему подлежат проверке политикой вторжений, основанной на параметре «Политика доступа > Дополнительно > Политика вторжений, используемая до определения правила контроля доступа».
Это означает, что даже если соединение, по всей видимости, устанавливается, межсетевой экран может всё равно заблокировать его после анализа этих начальных пакетов. Такой подход позволяет межсетевому экрану принимать более обоснованные решения о трафике, но также может привести к появлению «открытых» портов, которые на самом деле недоступны.
Чтобы понять, как это происходит, полезно знать, как работают TCP-соединения.
Установление TCP-соединения (трехстороннее рукопожатие):
1. SYN: Клиент отправляет пакет SYN со случайным порядковым номером A.
2. SYN-ACK: Сервер отвечает SYN-ACK. Номер подтверждения — A + 1, а ему присваивается порядковый номер B.
3. ACK: Клиент отправляет ACK с порядковым номером A + 1 и номером подтверждения B + 1.
С этого момента приложение может начать взаимодействие и отправку данных через установленный сеанс. Чтобы закрыть соединение, конечная точка, которая хочет его завершить, инициирует завершение соединения:
Завершение TCP-соединения (четырехэтапное рукопожатие):
1. FIN: Один хост отправляет пакет FIN, чтобы начать закрытие соединения.
2. ACK: Другой хост подтверждает FIN.
3. FIN: Второй хост отправляет свой собственный FIN, когда готов к закрытию.
4. ACK: Первый хост отправляет последний ACK.
К настоящему моменту мы знаем, что система IPS/IDS изначально пропускает некоторые пакеты, пока не определит, являются ли они вредоносным трафиком. Таким образом, мы можем изменить общепринятую практику программирования и использовать эту возможность.
Общая архитектура программирования сокетов выглядит следующим образом:
Мы можем подключиться, отправить данные, получить ответы, закрыть сокет и повторить попытку. Это помогает избежать обнаружения системами IDS/IPS, которые в противном случае могли бы заблокировать соединение. Модифицированный алгоритм выглядит следующим образом:
Именно это и делает Fragtunnel!
Этот TCP-туннельный инструмент на основе Python предлагает уникальный метод обхода брандмауэров следующего поколения:
Основные характеристики:
Операционный механизм:
Чтобы начать работу, просто скачайте скрипт с GitHub и запустите его. Однако обратите внимание, что для корректной работы скрипта требуется настроить как туннельный сервер, так и туннельный клиент.
Выполните следующие действия на сервере:
сервер> git clone
github.com
сервер> cd fragtunnel/
сервер> sudo python3 fragtunnel.py -b 127.0.0.1:80 -v
Действия со стороны клиента:
kali> sudo python fragtunnel.py -p 1234 -t <целевой_IP>:80 -T <сервер_IP>:80 -v
После того как туннельный клиент запущен и подключен к туннельному серверу, вы можете взаимодействовать с целью так, как если бы вы обращались к ней напрямую локально на своей машине.
Если мы запустим tcpdump, то заметим, что все общение происходит с сервером, в данном случае AWS.
Во многих случаях при проведении разведки мы замечаем, что можем просканировать сервер и получить информацию о портах, но при попытке подключения к системе нас блокирует межсетевой экран. Даже небольшое знание принципов работы этих технологий нового поколения поможет нам обойти их.
Механизмы IDS/IPS, используемые большинством межсетевых экранов нового поколения, пропускают несколько пакетов данных до пункта назначения, собирая при этом достаточно информации для принятия решения о разрешении или блокировке трафика. Этот недостаток проектирования можно использовать для получения беспрепятственного доступа к серверу с помощью такого инструмента, как fragtunnel.
Межсетевой экран — важнейший компонент сетевой безопасности, который служит барьером между доверенными внутренними сетями и ненадежными внешними сетями, такими как Интернет. Он отслеживает и контролирует входящий и исходящий сетевой трафик на основе заранее определенных правил безопасности.
Межсетевые экраны могут быть реализованы в виде аппаратных устройств, программных приложений или их комбинации. Они служат различным целям:
- Контроль доступа: брандмауэры регулируют, какие сетевые соединения разрешены или заблокированы, на основе настроенных правил.
- Предотвращение угроз: они защищают от различных внешних угроз, включая вредоносные программы, вирусы и потенциальные хакерские атаки.
- Фильтрация трафика: межсетевые экраны можно настроить на разрешение или блокировку определенных типов сетевого трафика на основе различных критериев, таких как:
- IP-адреса источника и назначения
- Номера портов
- Протоколы
- Данные прикладного уровня
5. Трансляция сетевых адресов (NAT) : некоторые брандмауэры выполняют NAT, что помогает скрыть внутренние сетевые адреса от внешних сетей, добавляя дополнительный уровень безопасности.
Современные межсетевые экраны выходят за рамки простой фильтрации пакетов. Они включают в себя расширенные функции, такие как глубокая проверка пакетов и фильтрация на уровне приложений, для обеспечения более комплексной защиты от сложных киберугроз.
В этой статье мы сосредоточимся на межсетевых экранах, работающих на уровне 7 модели OSI, также известном как прикладной уровень.
Ошибка дизайна
Рассматривая работу межсетевых экранов нового поколения (NGFW), вы можете заметить нечто интересное. Допустим, правило межсетевого экрана гласит: «Только команда A может использовать веб-порты (80 и 443)». Первоначальное сканирование портов с помощью инструмента, например, nmap, может показать множество открытых портов, что может ввести наблюдателя в заблуждение и заставить его подумать, что межсетевой экран неправильно настроен или неэффективен. Однако при попытке подключения к этим портам, которые кажутся открытыми, соединение вскоре неожиданно обрывается.
Конкретный пример такого поведения можно увидеть в Cisco Firepower Threat Defense (FTD), который использует механизм Snort для глубокой проверки пакетов. Согласно документации Cisco:
Чтобы движок Snort определил приложение, ему необходимо проинспектировать несколько пакетов (обычно от 3 до 10, в зависимости от декодера приложения). Таким образом, несколько пакетов пропускаются через FTD и достигают пункта назначения. Разрешенные пакеты по-прежнему подлежат проверке политикой вторжений, основанной на параметре «Политика доступа > Дополнительно > Политика вторжений, используемая до определения правила контроля доступа».
Это означает, что даже если соединение, по всей видимости, устанавливается, межсетевой экран может всё равно заблокировать его после анализа этих начальных пакетов. Такой подход позволяет межсетевому экрану принимать более обоснованные решения о трафике, но также может привести к появлению «открытых» портов, которые на самом деле недоступны.
Чтобы понять, как это происходит, полезно знать, как работают TCP-соединения.
Установление TCP-соединения (трехстороннее рукопожатие):
1. SYN: Клиент отправляет пакет SYN со случайным порядковым номером A.
2. SYN-ACK: Сервер отвечает SYN-ACK. Номер подтверждения — A + 1, а ему присваивается порядковый номер B.
3. ACK: Клиент отправляет ACK с порядковым номером A + 1 и номером подтверждения B + 1.
С этого момента приложение может начать взаимодействие и отправку данных через установленный сеанс. Чтобы закрыть соединение, конечная точка, которая хочет его завершить, инициирует завершение соединения:
Завершение TCP-соединения (четырехэтапное рукопожатие):
1. FIN: Один хост отправляет пакет FIN, чтобы начать закрытие соединения.
2. ACK: Другой хост подтверждает FIN.
3. FIN: Второй хост отправляет свой собственный FIN, когда готов к закрытию.
4. ACK: Первый хост отправляет последний ACK.
Назад к основам
К настоящему моменту мы знаем, что система IPS/IDS изначально пропускает некоторые пакеты, пока не определит, являются ли они вредоносным трафиком. Таким образом, мы можем изменить общепринятую практику программирования и использовать эту возможность.
Общая архитектура программирования сокетов выглядит следующим образом:
Мы можем подключиться, отправить данные, получить ответы, закрыть сокет и повторить попытку. Это помогает избежать обнаружения системами IDS/IPS, которые в противном случае могли бы заблокировать соединение. Модифицированный алгоритм выглядит следующим образом:
Именно это и делает Fragtunnel!
Фрагтуннель
Этот TCP-туннельный инструмент на основе Python предлагает уникальный метод обхода брандмауэров следующего поколения:
Основные характеристики:
- В отличие от традиционных прокси-серверов и стандартных туннелей.
- Позволяет туннелировать трафик приложений на целевые серверы, избегая обнаружения NGFW.
Операционный механизм:
- Фрагментация данных: входящие данные приложения делятся на более мелкие фрагменты.
- Многосеансовая передача: каждый фрагмент отправляется индивидуально через отдельные сеансы TCP.
- Повторная сборка данных: фрагменты повторно объединяются в месте назначения для восстановления исходных данных.
- Окончательная доставка: повторно собранные данные отправляются по назначению.
Установка
Чтобы начать работу, просто скачайте скрипт с GitHub и запустите его. Однако обратите внимание, что для корректной работы скрипта требуется настроить как туннельный сервер, так и туннельный клиент.
Выполните следующие действия на сервере:
сервер> git clone
GitHub - efeali/fragtunnel: Fragtunnel is a proof-of-concept (PoC) TCP tunnel tool that you can use to tunnel your application's traffic and bypass next-generation firewalls en route to the target.
Fragtunnel is a proof-of-concept (PoC) TCP tunnel tool that you can use to tunnel your application's traffic and bypass next-generation firewalls en route to the target. - efeali/fragtunnel
сервер> cd fragtunnel/
сервер> sudo python3 fragtunnel.py -b 127.0.0.1:80 -v
- -b, –bind : Указывает IP-адрес и порт, на котором туннельный сервер будет прослушивать входящие соединения.
- v, –verbose : Включает подробный режим, предоставляя более подробный вывод или информацию о регистрации во время выполнения приложения туннелирования.
Действия со стороны клиента:
kali> sudo python fragtunnel.py -p 1234 -t <целевой_IP>:80 -T <сервер_IP>:80 -v
- -p, –port: указывает номер порта, который локальное приложение будет прослушивать для установления соединения.
- -t, –target: указывает IP-адрес и порт целевого сервера или службы, к которым намеревается подключиться локальное приложение.
- -T, –Tunnel : указывает IP-адрес и порт туннельного сервера, который будет способствовать соединению между локальным приложением и целевым сервером.
После того как туннельный клиент запущен и подключен к туннельному серверу, вы можете взаимодействовать с целью так, как если бы вы обращались к ней напрямую локально на своей машине.
Если мы запустим tcpdump, то заметим, что все общение происходит с сервером, в данном случае AWS.
Краткое содержание
Во многих случаях при проведении разведки мы замечаем, что можем просканировать сервер и получить информацию о портах, но при попытке подключения к системе нас блокирует межсетевой экран. Даже небольшое знание принципов работы этих технологий нового поколения поможет нам обойти их.
Механизмы IDS/IPS, используемые большинством межсетевых экранов нового поколения, пропускают несколько пакетов данных до пункта назначения, собирая при этом достаточно информации для принятия решения о разрешении или блокировке трафика. Этот недостаток проектирования можно использовать для получения беспрепятственного доступа к серверу с помощью такого инструмента, как fragtunnel.