Памятка по использованию Nmap и сопутствующих утилит
12 октября 2015
Данный пост представляет собой небольшую шпаргалку по сканеру портов Nmap, а также утилитам, идущим с ним в комплекте — Ncrack, Ncat, Ndiff и Nping. Уметь пользоваться Nmap полезно не только злобным хакерам, но и системным администраторам, а также devops. Как еще, например, проверить, не осталось ли в системе лишних открытых портов? Или избавиться от сигнатур, по которым можно удаленно определить используемую на сервере ОС? Как обычно, здесь мы рассмотрим самые основные параметры и флаги, а более подробную информацию всегда можно найти в man.
Далее, если для выполнения команды требуются права суперпользователя, она выполняется через sudo. Если такие права не требуются, sudo не используется.
Установка Nmap в Debian/Ubuntu:
Установка утилиты Ncrack (на момент написания поста она находится в альфе и потому не содержится в deb-пакете):
tar -xvzf ncrack-0.4ALPHA.tar.gz
cd ncrack-0.4ALPHA
./configure
make
sudo ckeckinstall
Сканируем 1000 наиболее часто используемых портов:
Указываем список портов:
Сканирование подсети:
Сканирование списка хостов из файла:
Генерировать списки случайных IP можно, например, таким скриптом на Perl:
use strict;
use warnings;
my $cnt = 0;
my %filter;
my $gen_number = shift;
if(!$gen_number) {
die "Usage: $0 <number>";
}
while($cnt < $gen_number) {
my $x = 1 + int(rand(239));
my $y = int(rand(256));
my $z = int(rand(256));
my $w = 1 + int(rand(254));
# see https://en.wikipedia.org/wiki/Reserved_IP_addresses
if(($x == 10) || ($x == 127)) { next; }
if(($x == 100) && ($y >= 64) && ($y <= 127)) { next; }
if(($x == 169) && ($y == 254)) { next; }
if(($x == 172) && ($y >= 16) && ($y <= 31)) { next; }
if(($x == 192) && ($y == 0) && ($z == 0)) { next; }
if(($x == 192) && ($y == 0) && ($z == 2)) { next; }
if(($x == 192) && ($y == 88) && ($z == 99)) { next; }
if(($x == 192) && ($y == 168)) { next; }
if(($x == 198) && ($y == 18)) { next; }
if(($x == 198) && ($y == 19)) { next; }
if(($x == 198) && ($y == 51) && ($z == 100)) { next; }
if(($x == 203) && ($y == 0) && ($z == 113)) { next; }
if(($x >= 224) && ($x <= 239)) { next; }
my $ip = "$x.$y.$z.$w";
if($filter{$ip}) { next; }
$filter{$ip} = 1;
print "$ip\n";
$cnt++;
}
Сканирование методом установки TCP соединения:
SYN-сканирование:
Прочие виды сканирования: FIN, Xmas Tree и NULL:
sudo nmap -p22,80 -sX 12.34.56.78
sudo nmap -p22,80 -sN 12.34.56.78
Не определять доменные имена для сканируемых IP:
Показывать причину, по которой определенный порт считается «открытым»:
Определение версии сервисов:
Определение операционной системы:
Пингануть хосты для проверки, онлайн ли они, но не сканировать порты:
Сканировать хосты, даже если они не отвечают на пинги:
Считать, что хост онлайн, если он отвечает на SYN, посланный на порт 443:
Сканирование UDP (работает медленнее обычного сканирования TCP):
Ограничиваем время, которое можно потратить на один хост:
Управление степенью параллелизма:
nmap -p22 --min-parallelism 2 12.34.56.78
Делаем паузу прежде, чем перейти к следующему хосту:
Ограничение на число пакетов, посылаемых в секунду:
Использование NSE (Nmap Scripting Engine):
sudo nmap --script-updatedb
# натравляем все скрипты из группы default:
nmap --script default 12.34.56.78
# все скрипты, название которых начинается на http
nmap --script http-* 12.34.56.78
Ломаем SSH с помощью Ncrack:
ncrack --user root ssh://12.34.56.78
Fun fact! Существуют и другие утилиты для подбора паролей, заметно отличающиеся между собой поддерживаемыми протоколами и опциями. В частности, стоит обратить внимание на утилиты hydra и medusa.
Указываем списки логинов и паролей для Ncrack:
Выводим больше отладочной информации, включая подбираемые логины и пароли:
Используем Ncrack совместно с Nmap:
ncrack -iX scan.xml
Использование Ndiff:
Пример использования Nping:
Примеры использования Ncat:
ncat -l > received.txt
Использование Ncat в качестве бэкдора:
ncat localhost 3344
Ncat для пробрасывания портов:
--sh-exec "ncat 192.168.2.15 22"
ssh user@10.1.2.3 -p 2222
Ncat для расшифровки SSL:
--sh-exec "ncat --ssl encrypted.google.com 443"
С сохранением трафика в файл:
--sh-exec "ncat --ssl encrypted.google.com 443"
Такая вот незамысловатая шпаргалка. Если вам есть, что к ней добавить, не стесняйтесь воспользоваться комментариями.
Метки: Linux, Безопасность, Сети.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.