Stealth-сканирование портов
Pavel Martinov aka kurt
Xakep, номер #060, стр. 060-078-1
(xkurt@inbox.ru)
Как хакер остается незамеченным
Как правильно пользоваться сканерами? Нет, конечно, понятно – сливаешь любой сканер и начинаешь тут же производишь аудит безопасности удаленного сервера :). Но представь себе ситуацию, когда админ хоста не полное дерево, а нормальный рабочий. Тогда он наверняка просечет эти действия через какой-нибудь firewall или IDS. Чтобы избежать подобных ситуаций, были придуманы хитрые способы скана.
Ликбез
А для чего вообще нужно сканировать порты? Хакеры, например, проводят сканы для получения списка запущенных на хосте демонов (сервисов). По ним они находят дырявые версии установленного софта, даунлодят соответствующие эксплоиты и в итоге получают некие права в системе. При необходимости они поднимают их до рутовых уже при помощи локальных сплоитов. После получения рута машина полностью принадлежит хакеру, и он волен делать с ней все что захочет, начиная от банального дефейса и заканчивая установкой руткитов, сниферов и прочего софта. Администратору же сканеры необходимы для проверки безопасности системы. Он проделывает все те же самые действия, что и хакер, но вместо взлома патчит систему от найденных ошибок.
Как работает простейший порт сканер? Он просто пытается приконнектиться на необходимые порты. Если коннект удался - порт открыт, если нет – закрыт. Все очень просто. Но это хорошо, когда кто-то сканит какой-нибудь yahoo.com, ведь его все равно сканят по сотни раз в день. А что делать, если надо изучить сервак на работе или в домашней локалке? Причем сделать это надо быстро. В такой ситуации есть два выхода:
1. Сканить через шелл.
2. Стелс-сканирование.
Первый способ возможен далеко не всегда. Например, если нет выхода из локалки в инет, то выйдет облом. Остается только второй вариант – провести stealth scan. Львиную долю таких сканов делает известная всем софтина nmap (Network Mapper). Поэтому в своих примерах я буду опираться именно на нее.
Далее мы рассмотрим, как же работают эти самые сканеры. Сразу оговорюсь: стелс-скан не дает 100% гарантии в том, что админ не заметит тебя, т.к. уже давно существуют специальные детекторы и фаерволы. Так вот, для проведения stealth-скана необходимо иметь права рута - для создания неполного коннекта приходится "шаманить" с заголовком пакета. Если у тебя есть root акцес на тачке, то попробуй для начала посканить самого себя (nmap 127.0.0.1). В итоге должно получиться что-то вроде этого:
Скан nmap’ом
[kurt@localhost kurt]$ nmap 127.0.0.1
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on localhost.localdomain (127.0.0.1):
(The 1598 ports scanned but not shown below are in state: closed)
Port State Service
25/tcp open smtp
111/tcp open sunrpc
6000/tcp open X11
Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
Флаги
Чтобы ты лучше понял, о чем идет речь, тебе необходимо знать краткое назначение флагов TCP-протокола. TCP-заголовок содержит 6 полей для флагов.
[URG] urgent:
Этот флаг говорит TCP-модулю о том, что поле Urgent Pointer указывает на срочные данные. TCP-модуль должен обрабатывать такие данные вне очереди.