
Эмулирует открытые порты и сигнатуры сервисов на всех 65535 TCP-портах, чтобы замедлить разведку, запутать сканеры и истощить ресурсы атакующего с помощью правдоподобных поддельных сервисов и заманивания в ловушку (tarpitting).
Portspoof эмулирует открытые порты и сигнатуры сервисов на всех 65535 TCP-портах, превращая этап разведки из быстрого сканирования в долгий и ресурсоемкий процесс. Сканеры видят тысячи убедительных, но поддельных сервисов, что делает выявление реальной поверхности атаки практически невозможным.
Основная цель Portspoof — сделать разведку медленной, дорогостоящей и ненадежной для атакующих. Вместо стандартного 5-секундного сканирования Nmap, которое отображает все реальные сервисы системы, атакующий, столкнувшийся с Portspoof, видит 65535 открытых портов, каждый из которых работает как будто под разным легитимным сервисом. Быстро определить, какие из них реальны, невозможно.
SYN+ACK на каждую попытку подключения.nmap -sV -p-) выходит далеко за практические пределы.Пример сканирования Nmap:
$ 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
Portspoof отвечает на зонды сервисов валидными, динамически сгенерированными сигнатурами на основе огромной базы регулярных выражений. В результате атакующий не сможет определить, какие номера портов ваша система действительно использует.
Пример сканирования версий (порты 1–100):
$ 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 удерживает секунды. Со смешанными режимами и широким разбросом времени тысячи поддельных портов также закрываются в том же диапазоне, что и реальные сервисы. Нет чистого порога для фильтрации.
Экономика работает благодаря асимметрии: