Маскировка сканирования
У nmap есть несколько опций сканирования. Некоторые из них могут помочь скрыть сканирование портов от определения по системным журналам с помощью брандмауэров и IDSs-систем. Вдобавок, nmap предоставляет вам некоторые возможности рандомизации и маскировки, которые предоставляются такими программами, как Netcat и hping.
FTP Bounce. У FTP есть ошибка, которая может дать преимущество при использовании nmap. Когда вы соединяетесь с FTP-сервером при помощи FTP-клиента, ваш клиент взаимодействует с FTP-сервером по 21 порту. Это TCP-соединение называется контрольным соединением (control). FTP-сервер требует установления отдельного соединения с клиентом, называемого соединением по данным (data), через которое будут передаваться данные. Клиент ожидает от сервера установления соединения по данным на отдельном TCP-порте. Он передает серверу команду PORT, чтобы сообщить ему о необходимости инициировать соединение с клиентским IP-адресом и вновь открытым портом. Этот метод взаимодействия называется активной передачей. Поскольку многие клиентские машины используют трансляцию адресов (NAT) или находятся за брандмауэром во внутренней сети, активное FTP-соединение обычно не работает, поскольку инициированное сервером соединение с клиентом не может проникнуть внутрь защищенной зоны.
Примечание. Большинством FTP-клиентов и серверов используется пассивная передача, поскольку в этом случае клиент инициирует оба соединения - и контрольное, и соединение по данным - передавая информацию через брандмауэр или систему NAT.
Сосредоточимся на команде PORT. Ее законное использование сообщает FTP-серверу о необходимости установить обратное соединение по данным с только что открытым портом. Но поскольку мы определили для использования не только порт, но и IP-адрес, наш клиент, передавший команду PORT на сервер, может попытаться установить соединение с кем-то, находящимся где-либо. Nmap может использовать такое поведение для сканирования порта с целью определения уязвимого FTP-сервера и интерпретации полученных результатов.
Такой прием называется FTP-сканированием. nmap создает активное FTP-соединение с сервером и передает команды PORT, содержащие IP-адрес и порт сканируемого хоста. Затем Nmap может интерпретировать полученные результаты и выводить их в том же самом формате, что и нормальные результаты сканирования порта.
Как найти FTP-сервер, который можно так использовать? Это самая интересная часть. Это ошибка проектирования, а не только недостатки реализации. FTP-серверы, разработанные в соответствии с документом RFC 959 для протокола FTP, должны реализовывать эту возможность. Многие пакеты FTP-серверов, такие как wu-ftpd, модифицированы для передачи команды PORT только оригинальному хосту, и многие поставщики операционных систем со встроенными FTP-серверами скорректированы в соответствии с этим. Но некоторые по-прежнему запускают устаревшие или не скорректированные FTP-серверы. Не следует запускать анонимный FTP-сервер, если в этом нет очень серьезной необходимости.
Пойдем дальше. Выберем анонимный FTP-сервер и попытаемся выполнить:
nmap -b anonymous@ftp.lame_host.com -p 6000 192.168.1.200
Предыдущая команда пытается использовать ftp.lame_host.com для сканирования порта с номером 6000 на машине 192.168.1.200, чтобы сообщить, используется ли там X Window-сервер. А вот пример взаимодействия nmap с этим сервером.
Server: 220 LAME_HOST FTP server version 4 ready Client: USER anonymous Server: 331 Guest login OK, send e-mail as password Client: PASS -wwwuser@ Server: 230 Login successful Client: PORT 192,168,1,200,23,112 Server: 200 PORT command successful Client: LIST Server: 150 Opening ASCII connection for "/bin/ls" Server: 226 Transfer complete
Nmap сообщает о необходимости открыть соединение по порту 6000 на машине 192.168.1.200, используя команду PORT. Последние две цифры в конце команды PORT, 23 и 112, представляют собой порт с номером 6000. (FTP определяет это, умножая первое число на 256 и складывая со вторым числом 23*256+112=6000). Если команда успешно выполнена, появляется возможность выполнить команду LIST.
Поскольку это позволяет открыть соединение, порт 6000 открыт на машине 192.168.1.200. Если сервер вместо этого сообщает "425 Can't build data connection", мы можем определить, что порт 6000 закрыт.
Если команда PORT работает, вы можете не только сканировать кого-либо еще, но и порты любой машины, к которой имеет доступ FTP-сервер. Это великолепный способ обойти фильтры портов и брандмауэры, которые обычно не пропускают ваши попытки сканирования. Однако всегда будьте осмотрительны, используя маскировку, подобную этой. Помните, что FTP-серверы могут зафиксировать ваши соединения в журнале. Если кто-либо заподозрит LameHost в сканировании его сети в 13:45 6 января, и у него есть анонимное FTP-соединение с вашей домашней машиной в это же самое время, вы попались.
Даже если вы нашли сервер, уязвимый с точки зрения FTP, это не дает вам возможности сканировать привилегированные порты (с номером ниже 1024), поскольку FTP-клиент обычно не должен прослушивать привилегированные порты в ожидании соединения по данным.
Фрагментация. Опция -f nmap, указывает на необходимость выполнения скрытого сканирования (-sS, -sF, -sX или -sN) с использованием фрагментированных IP-пакетов, у которых разорваны TCP-заголовки. Идея состоит в предохранении таких "искаженных" TCP-пакетов с необычными флагами от блокировки брандмауэрами. Эта опция может привести к нарушению в работе некоторых систем и не может корректно работать на всех разновидностях Unix, поэтому применяйте ее осторожно.
Заманивание. Мы беседовали о том, как можно замаскировать сканирование портов, сохранив при этом возможность получения результатов сканирования (вместо того чтобы передавать их на наш неизвестный адрес). Мы также обсуждали, как это сложно сделать (в лекциях "NETCAT и CRYPTCAT" и "Системные средства" и на протяжении всей этой лекции). Nmap дает возможность определить хост "ловушку", используя опцию -D. Идея состоит в определении нескольких "мистических жертв" - хостов в интернете - и задания их в разделенном запятыми списке после флага -D.
Nmap будет, как обычно, выполнять роль сканера порта, но при этом определяться среди замаскированных сканеров портов с IP-адресами - ловушками. Системный администратор увидит несколько различных сканеров портов, но только один из них будет настоящим.
Примечание. Опция -S nmap позволяет вам задать исходящий IP-адрес для ваших пакетов. Вы можете использовать это для создания впечатления, что сканирование производится с заданного вами адреса. Эта функция имеет смысл для хоста с несколькими адресами, но может быть использована для маскировки и создания общего беспорядка. Вы не сможете получить обратно результаты сканирования, но вы можете выставить кого-то, как вредителя. Но будьте осторожны, маскируясь под других людей. В случае если системы обнаружения вторжений или брандмауэры оснащены функциями против приманки, вы можете объявить о себе во всеуслышанье, вместо того чтобы остаться незамеченным.
Рандомизация портов и хостов. Nmap по умолчанию перебирает заданные вами порты случайным образом. Вы можете выключить эту возможность, воспользовавшись флагом -r. Если вы задали список хостов для сканирования, то можете задать случайный порядок сканирования, используя флаг -randomize_hosts.