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

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

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

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

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

Категории

Все категории
Loading categories
Portspoof — Эмулирует открытые порты и сигнатуры сервисов на всех 65535 TCP-портах, чтобы замедлить разведку, запутать сканеры и истощить ресурсы атакующего с помощью правдоподобных поддельных сервисов и заманивания в ловушку (tarpitting). | Kitploit
Инструменты/GitHubGitHub/drk1wi/portspoof
Оборонительные ИнструментыРазведкаАнализ уязвимостейОбход IDS/IPSСетевая безопасностьRed Teaming
GitHubdrk1wi/portspoof

Portspoof

Эмулирует открытые порты и сигнатуры сервисов на всех 65535 TCP-портах, чтобы замедлить разведку, запутать сканеры и истощить ресурсы атакующего с помощью правдоподобных поддельных сервисов и заманивания в ловушку (tarpitting).

Репозиторий
2.4k179414 дней назадПроверено Kitploit

Популярное

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

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

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

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

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

Portspoof

License Platform Build Status

Portspoof эмулирует открытые порты и сигнатуры сервисов на всех 65535 TCP-портах, превращая этап разведки из быстрого сканирования в долгий и ресурсоемкий процесс. Сканеры видят тысячи убедительных, но поддельных сервисов, что делает выявление реальной поверхности атаки практически невозможным.

Содержание

  • Обзор
  • Ключевые возможности
  • Как это работает
  • Подход к проектированию
  • Установка
  • Настройка
  • Использование
  • Усиление защиты с помощью iptables
  • Portspoof Pro
  • Авторы и лицензия

Обзор

Основная цель Portspoof — сделать разведку медленной, дорогостоящей и ненадежной для атакующих. Вместо стандартного 5-секундного сканирования Nmap, которое отображает все реальные сервисы системы, атакующий, столкнувшийся с Portspoof, видит 65535 открытых портов, каждый из которых работает как будто под разным легитимным сервисом. Быстро определить, какие из них реальны, невозможно.

Ключевые возможности

  • Все 65535 TCP-портов всегда открыты: Вместо того чтобы сообщать атакующему, что порт ЗАКРЫТ или ОТФИЛЬТРОВАН, Portspoof возвращает SYN+ACK на каждую попытку подключения.
  • Эмуляция сервисов: Более 9000 динамических сигнатур сервисов, сгенерированных на основе регулярных выражений. Каждый порт отвечает на зонды разной, убедительной идентичностью сервиса.
  • Смешанные режимы доставки: Каждому порту при запуске назначается различный поведенческий профиль (немедленный баннер, задержка ответа или молчаливое удержание) с временем удержания, распределенным в широком диапазоне. Полное обнаружение версий (nmap -sV -p-) выходит далеко за практические пределы.
  • Наступательная защита: Может использоваться как «Фронтенд эксплуатационного фреймворка» для эксплуатации уязвимостей в собственных инструментах сканирования атакующего.
  • Легковесность и безопасность: Работает в пользовательском пространстве (не требует прав root), привязывается всего к ОДНОМУ TCP-порту на каждый запущенный экземпляр и имеет минимальное потребление CPU/памяти.

Как это работает

1. Обход сканеров портов

Пример сканирования Nmap:

root@kitploit:~
$ nmap -p 1-20 target
Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for target
Host is up (0.00016s latency).
PORT   STATE SERVICE
1/tcp  open  tcpmux
2/tcp  open  compressnet
3/tcp  open  compressnet
4/tcp  open  unknown
5/tcp  open  rje
6/tcp  open  unknown
7/tcp  open  echo
8/tcp  open  unknown
9/tcp  open  discard
10/tcp open  unknown
11/tcp open  systat
12/tcp open  unknown
13/tcp open  daytime
14/tcp open  unknown
15/tcp open  netstat
16/tcp open  unknown
17/tcp open  qotd
18/tcp open  unknown
19/tcp open  chargen
20/tcp open  ftp-data

2. Сбивание с толку определения версий

Portspoof отвечает на зонды сервисов валидными, динамически сгенерированными сигнатурами на основе огромной базы регулярных выражений. В результате атакующий не сможет определить, какие номера портов ваша система действительно использует.

Пример сканирования версий (порты 1–100):

root@kitploit:~
$ nmap -sV -p 1-100 target
Nmap scan report for target
Host is up (0.00016s latency).
PORT    STATE SERVICE            VERSION
1/tcp   open  tcpmux?
2/tcp   open  irc                ircu ircd
3/tcp   open  tcpwrapped
5/tcp   open  http               Polycom CMA Global Address Book (GAB) httpd
10/tcp  open  http               PGP Universal httpd
11/tcp  open  http               SnapStream Media Beyond TV PVR http config
12/tcp  open  pop3               Novell GroupWise pop3d
13/tcp  open  http               micro_httpd
15/tcp  open  ssh                OpenSSH r (protocol 8; NCSA GSSAPI authentication patch)
16/tcp  open  ftp                QMS/Minolta Magicolor 2200 DeskLaser printer ftpd
17/tcp  open  smtp               Network Box smtpd
21/tcp  open  ftp?
22/tcp  open  ssh                OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
23/tcp  open  tcpwrapped
25/tcp  open  smtp?
27/tcp  open  http               BMC/Marimba Management http config
37/tcp  open  http               Indy httpd qlRKjiF
39/tcp  open  pop3
41/tcp  open  ftp                VSE ftpd WhH
43/tcp  open  imap               Scalix imapd 6
46/tcp  open  telnet             AXIS webcam telnetd 96747 (Linux)
49/tcp  open  smtp               Openwave Email Mx smtpd
50/tcp  open  http               3Ware web interface 3v (RAID storage)
51/tcp  open  ftp                WebStar 4dftp ...
53/tcp  open  tcpwrapped
55/tcp  open  webdav             Tonido WebDAV
56/tcp  open  tor-control        Tor control port (Authentication required)
59/tcp  open  irc                ircu ircd
60/tcp  open  rtsp               GStreamer rtspd
64/tcp  open  http               BaseHTTPServer CAxoE (Mercurial hg serve; Python LDkW)
66/tcp  open  telnet             Slirp PPP/SLIP-on-terminal emulator telnetd
70/tcp  open  smtp               qpsmtpd
71/tcp  open  smtp               Microsoft Exchange smtpd
73/tcp  open  http               Avaya IP Office VoIP PBX httpd
77/tcp  open  smtp               Zeus SMTPS smtpd
79/tcp  open  ftp                Sambar ftpd
80/tcp  open  tcpwrapped
81/tcp  open  imap-proxy         nginx imap proxy
82/tcp  open  ssh                (protocol 811)
83/tcp  open  http               peercast.org
88/tcp  open  csta               Alcatel OmniPCX Enterprise
90/tcp  open  http               WASD httpd
91/tcp  open  http               Fortinet FortiGate 50B firewall http config
93/tcp  open  imap               ModusMail imapd 4
98/tcp  open  ssh                Sysax Multi Server sshd 7 (protocol 940)
99/tcp  open  http               2Wire HomePortal http config 5473
100/tcp open  newacct?

Результат

В сочетании эти методы означают:

  • Быстрого способа отличить реальные сервисы от поддельных не существует. Время отклика, поведение и содержимое баннеров различаются по всему диапазону портов.
  • Полное сканирование версий (nmap -sV -p-) с настройками tarpit по умолчанию занимает более 10 часов и генерирует сотни мегабайт фиктивных данных.
  • Сканер атакующего тратит время и потоки на соединения, которые ни к чему не ведут.

Подход к проектированию

Реальные сервисы (SSH, SMTP, FTP, HTTP) отправляют баннер и удерживают соединение открытым, ожидая ввода от клиента. Убедительная эмуляция означает то же самое: принять, отправить, удержать. Но модель «один поток на клиента» тратит память и CPU на переключение контекста, и в масштабе защитник истощает ресурсы раньше, чем у атакующего заканчивается терпение. Инструмент обмана становится вектором само-DoS.

Подход: однопоточный цикл событий epoll. Каждому порту при запуске назначается режим доставки: некоторые отправляют баннер немедленно, некоторые ждут, пока клиент отправит данные, прежде чем ответить, а некоторые остаются молчаливыми. Время удержания распределено по порядкам величины (десятки миллисекунд до минут) с джиттером на каждое соединение, так что повторные зонды одного и того же порта не возвращают одинаковое время отклика.

Это важно, потому что без этого атакующий может отправить мусор на каждый порт и измерить время ответа: реальные сервисы закрываются быстро (неправильный протокол), а наивный tarpit удерживает секунды. Со смешанными режимами и широким разбросом времени тысячи поддельных портов также закрываются в том же диапазоне, что и реальные сервисы. Нет чистого порога для фильтрации.

Экономика работает благодаря асимметрии:

  • Стоимость для защитника: ~1–2 КБ памяти ядра на каждое бездействующее соединение. Цикл epoll однопоточный, без накладных расходов на переключение контекста. Скромный хост удерживает 10k+ одновременных соединений без проблем.
  • Стоимость для атакующего: время и усилия. Сканирование портов не говорит им ничего — каждый порт открыт. Чтобы найти реальные сервисы, им нужно обнаружение версий на всех 65535 портах, а затем зондирование на уровне протокола всего, что выглядит правдоподобно. 5-секундное сканирование превращается в 10+ часов активной работы, результат всё ещё стог сена, и большинство атакующих переключаются на более легкую цель.

Режимы доставки для каждого порта фиксированы на всё время жизни процесса, но непредсказуемы при перезапусках. Время удержания имеет случайную составляющую для каждого соединения, так что повторные зонды показывают естественную вариативность, аналогично реальным сервисам под нагрузкой.

v2.0 заменяет исходное поведение «баннер и закрытие», которое было уязвимо для обхода по закрытию соединения (см. пост блога Vicarius/Hored1971). Движок tarpit удерживает все соединения открытыми со смешанным временем, что позволяет обойти фильтрацию по закрытию соединения, тайминг-фингерпринтинг, анализ баннеров и статистическое моделирование шаблонов.


Установка

Предварительные требования

Убедитесь, что у вас установлены компилятор C++ и CMake (3.10+).

Сборка из исходников

root@kitploit:~
mkdir build && cd build
cmake -DCMAKE_INSTALL_SYSCONFDIR=/etc .. 
make
sudo make install

Настройка

Portspoof работает в пользовательском пространстве, но полагается на правила системного брандмауэра для перехвата трафика, предназначенного для других портов.

1. Настройка брандмауэра (iptables)

Перенаправьте весь входящий TCP-трафик (порты 1-65535) на порт Portspoof (по умолчанию 4444).

Linux (iptables):

root@kitploit:~
# Сначала исключите реальные сервисы, затем перенаправьте остальное на Portspoof
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j RETURN
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp -j REDIRECT --to-ports 4444

Примечание: замените eth0 на ваш сетевой интерфейс. Добавьте правило RETURN для каждого порта, на котором работает реальный сервис.

Чтобы сделать это постоянным, вы можете сохранить правила iptables или использовать iptables-config, предоставленный в каталоге system_files.

2. Автозапуск системы

Вы можете добавить Portspoof в скрипты автозапуска, используя примеры из system_files/init.d/.


Использование

Режим эмуляции сервисов (рекомендуется)

Этот режим генерирует и подает сканерам портов поддельные сигнатуры сервисов.

root@kitploit:~
portspoof -c /etc/portspoof.conf -s /etc/portspoof_signatures -D

С пользовательскими временами удержания tarpit (удерживать каждое соединение от 10 до 60 секунд):

root@kitploit:~
portspoof -s /etc/portspoof_signatures -t 10 -T 60 -D

Режим открытого порта

Этот режим просто возвращает состояние OPEN для каждой попытки подключения без отправки баннеров сервисов. Соединения по-прежнему удерживаются в tarpit.

root@kitploit:~
portspoof -D

Режим фаззинга

Portspoof может использоваться для фаззинга инструментов сканирования путем отправки случайных или основанных на словаре нагрузок.

Фаззинг со встроенным генератором:

root@kitploit:~
# Генерирует случайные нагрузки случайного размера
portspoof -1 -v

Фаззинг со словарем:

root@kitploit:~
portspoof -f payloads.txt -v

Усиление защиты с помощью iptables

Базовое правило REDIRECT выше работает, но агрессивный сканер все еще может попытаться перегрузить Portspoof соединениями. Следующий набор правил добавляет ограничение скорости и автоматическую блокировку хостов, превышающих порог соединений. Порты, на которых работают реальные сервисы (в этом примере SSH), исключены из перенаправления, но по-прежнему защищены глобальным правилом блокировки.

root@kitploit:~
# --- NAT: перенаправить всё, кроме реальных сервисов ---
# добавьте правило RETURN для каждого порта, который вы реально используете (SSH, HTTP и т.д.)
iptables -t nat -A PREROUTING -p tcp --dport 22 -j RETURN
iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-ports 4444

# --- FILTER: эшелонированная защита ---

# разрешить loopback (критически важно: предотвращает поломку локальных сервисов)
iptables -A INPUT -i lo -j ACCEPT

# если этот IP был отмечен как злоупотребляющий, отбрасывать всё (тихо, без RST)
iptables -A INPUT -m recent --name PORTSCAN --rcheck --seconds 60 -j DROP

# ограничить скорость новых SYN на исходный IP
iptables -A INPUT -p tcp --syn -m hashlimit \
  --hashlimit-above 10/sec --hashlimit-burst 30 \
  --hashlimit-mode srcip --hashlimit-name syn_throttle -j DROP

# если один IP держит 100+ соединений с portspoof, отметить и отбросить
iptables -A INPUT -p tcp --syn --dport 4444 -m connlimit \
  --connlimit-above 100 --connlimit-mask 32 \
  -m recent --name PORTSCAN --set -j DROP

# разрешить установленный трафик и новые соединения
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --syn -j ACCEPT
iptables -A INPUT -j DROP

Для развертываний с высоким трафиком увеличьте размер списка xt_recent:

root@kitploit:~
echo "options xt_recent ip_list_tot=10000" > /etc/modprobe.d/xt_recent.conf

И настройте отслеживание соединений ядра:

root@kitploit:~
sysctl -w net.netfilter.nf_conntrack_max=131072
sysctl -w net.core.somaxconn=4096

Portspoof Pro

Portspoof Pro масштабирует обман с одного хоста на всю сеть. Один сенсор эмулирует целые сети /16: тысячи IP-адресов, каждый с уникальными сервисами на всех портах, поддерживающими многошаговые разговоры с сохранением состояния.

  • Обман на уровне сети. Превратите темное IP-пространство и неиспользуемые подсети в активную сеть обмана. Каждый эмулируемый хост представляет уникальные сервисы с разными «личностью» в зависимости от IP-адреса источника. Активный tarpitting истощает пулы сокетов атакующего и замедляет автоматизированные инструменты.
  • Обнаружение сканирования и идентификация инструментов. Обнаруживает методы сканирования SYN, FIN, NULL, XMAS, ACK. Идентифицирует Nmap, Masscan, ZMap и кастомные сканеры. Структурированная телеметрия JSON с привязкой к MITRE ATT&CK, передаваемая в вашу SIEM.
  • Безопасное развертывание в production. Работает в изолированной среде наряду с производственным трафиком. Политики маршрутизации направляют трафик обмана на сенсор. Никаких встроенных точек контроля, никакого риска для реальных рабочих нагрузок.
  • Соответствие требованиям «из коробки». Поддерживает NIS2, DORA, ISO 27001, NIST CSF и CIS Controls.

portspoof.io


Авторы и лицензия

Автор: Piotr Duszyński (@drk1wi)

Лицензия: GNU General Public License v2.0 (GPLv2). Подробности см. в файле LICENSE.

Для коммерческих, легитимных применений, пожалуйста, свяжитесь с автором для получения соответствующих лицензионных договоренностей.


Сообщение об ошибках

Если вы обнаружите какие-либо ошибки или у вас есть предложения по функционалу, сообщите о них в GitHub Issue Tracker или свяжитесь с автором по электронной почте piotr [at] duszynski.eu.

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