Увеличение задержки между пробами портов — не единственный способ скрыть, что машина сканируется. Еще один интересный метод — одновременно запустить несколько потоков сканирования, подменяя обратный IP-адрес во всех случаях, кроме одного.
Вас может заинтересовать стать «Обход фаервола и IDS в Nmap».
Скрытое сканирование Nmap
Смысл здесь в том, чтобы запутать IDS и администратора машины. В логах IDS окажется сразу несколько попыток сканирования с разных адресов, среди которых будет только один настоящий.
Использовать такой метод довольно просто:
1 |
$ sudo nmap -D адрес1,адрес2,адрес3 192.168.0.1 |
Вы можете указать сколько угодно фиктивных адресов или позволить Nmap сгeнерировать рандомные адреса за тебя (в данном случае десять адреcов):
1 |
$ sudo nmap -D RND:10 192.168.0.1 |
Однако тут необходимо иметь в виду, что случайные адреса часто будут указывать на нeсуществующие или отключенные машины. IDS и хороший админ смогут отсеять их, чтобы вычислить реальный адрес.
Более сложный способ — организовать так называемое Idle-сканирование. Это очень интересная техника, которая базируется на трех простых фактах:
- При выполнении SYN-сканирования удаленная сторона посылает пакет SYN/ACK в случае, если порт открыт, и пакет RST, если нет.
- Машина, получившая незапрошенный пакет SYN/ACK, должна отвечать пакетом RST, а при получении незапрошенного RST — игнорировать его.
- Каждый IP-пакет, отправленный машиной, имеет IPID, а многие ОС при отправке пакета просто увеличивают IPID.
Сама техника заключается в том, чтобы найти неактивную сетевую машину, которая просто ничего не делает (Idle), но при этом находится в рабочем состоянии и способна отвечать на сетевые запросы. Более того, машина должна работать на древней ОС, которая увеличивает IPID пакетов вместо рандомизации, как современные ОС.
Сделать это можно с помощью все тех же флагов -O -v Nmap (строка IP ID Sequence Generation в выводе) либо с помощью Metasploit Framework (это удобнее и быстрее):
1 2 3 |
> use auxiliary/scanner/ip/ipidseq > set RHOSTS 192.168.0.1-192.168.0.255 > run |
Далее вы запускаете сканирование портов:
1 |
$ sudo nmap -sI IP-Idle-машины 192.168.0.1 |
На каждую пробу порта Nmap сначала будет посылать запрос Idle-машине, записывать IPID пакета, затем посылать SYN-пакет жертве, подменяя обратный адрес на IP Idle-машины, затем снова посылать запрос Idle-машине и сверять IPID с ранее сохраненным. Если IPID увеличился со времени прошлой проверки, значит, машина посылала пакеты, а, как мы знаем из второго пункта выше, это означает, что она ответила пакeтом RST. Это, в свою очередь, говорит, что проверяемый порт жертвы открыт. Если IPID не увеличился, значит, порт закрыт.
В современном мире, где уже не осталось Windows 95, это действительно сложно реализуемая техника, но она позволяет полностью отвести от себя подозрения о сканировании. IDS обвинит в сканировании Idle-машину.