Немного об nmap (Вернул из кэш)

Discussion in 'Песочница' started by SooLFaa, 21 Aug 2016.

  1. SooLFaa

    SooLFaa Members of Antichat

    Joined:
    17 Mar 2014
    Messages:
    530
    Likes Received:
    498
    Reputations:
    154
    Всем привет. Разбирался со всей мощью такого сканера, как nmap и решил написать несколько строк о нем.
    Статьяhttps://nmap.org/book/man.html из разряда бесполезных и не очень, но в целом выйдет небольшой И НЕ ПОЛНЫЙ мануальчик.
    Полный же мануальчик (которым и не только которым я пользовался при написании этой статьи) можно глянуть здесь.

    EN
    RU

    Как читать?
    Новичкам взглянуть по первому абзацу, а потом обращаться при практике.
    Опытным можно пробежаться в скольз по интересующим разделам.
    Совсем опытным сразу в конец.

    Для начала рассмотрим в каких форматах можно задавать цели.

    nmap -iL <имя файла со списком адресов>

    nmap -iR 4 - где номер означает количество РАНДОМНЫХ хостов, то есть два раза выполнив эту команду выполнится сканирование разных хостов.

    Зачем? Можно поискать уязвимые хосты с помощью скриптов, или просто с открытым портом во всём интернете(Пример nmap -iR 100000 -PN -p 80). -PN опция очень удобная, когда сканируем два три порта у диапазона адресов. Отключает определение доступности хоста, т.е. мы не спрашиваем у хоста: «А доступен ли ты?» -, мы сразу спрашиваем: «А открыт ли у тебя такой порт?».

    nmap 192.168.101.1,192.168.101.2

    nmap 192.168.1-101.1 Просканирует 192.168.2.1,192.168.3.1....192.168.100.1,192.168.101.1

    nmap 192.168.1.1/24 по 24 маске 0.0.0.255 (Другие маски можно глянуть тут http://www.networkcenter.info/inform/netmask)

    nmap 192.168.0.101,102,103

    Определение Хостов

    nmap -n -sL megahacker.ru - Быстрое определение хоста. Это штука ничего никуда не посылает, а просто выводит список всего того что ВЫ собирались сканировать.

    -sP - Ping запрос, спрашиваем, а работает вообще наш хост (Обратное Pn)?

    -PN - не определять хост на работоспособность (уменьшает время работы при сканировании 1 - 2 портов)

    --dns-servers - если надо можно задать собственные сервера (например если у Вас свой dnsсервер)

    Посмотрим на флаги

    -sS/sT/sA/sW/sM

    nmap -sS СТЕЛС - СКАНИРОВАНИЕ. Как видно из названия скрытое сканирование методом (TCP CYN). Отправляется SYN - пакет на нужный порт и анализируя пакет определяется его состояние. Наиболее быстрый и более незаметный поэтому на первом месте.

    nmap -sT - Бывают ситуации, когда полномочия суперпользователя отсутствуют обычное сканирование с помощью вызова функции системной функции connect. Менее приоритетный режим, работает дольше, так как устанавливается полное соединение, и даже простенькая IDS сможет его словить.

    nmap -sA Определение фильтрованных и не фильтрованных портов НО НЕ ОПРЕДЕЛЯЕТ НА ОТКРЫТЫЕ И ЗАКРЫТЫЕ.

    nmap–unprivileges/ privileges – считаем по дефолту что у нас нет/есть права root.

    nmap -sWWindows сканирование. Тоже что и -sA, но в некоторых сборках может возвращать и открытые порты.

    nmap -sN; -sF; -sX (TCP NULL, FIN и Xmas сканирования) - Еще больше стелс чем SYN. Суть этих трех методов заключается в установке некоторых (или ничего не устанавливать) флагов.

    (с)Работает в режиме обнаружения портов, удобно использовать на UNIX системах, хотя есть и недостатки, неспособность разделять порты на открытые и фильтруемые. (с) И работать может не на всех системах. RFC 793 - наше всё

    nmap -sM тоже что и (TCP NULL, FIN и Xmas), с той лишь разницей что RST пакет тупо отбрасывается если порт закрыт. Нам это дает обход некоторых уникальных IDS. И может работать там, где не работает способ выше.


    Эти методы по сути проверяют фаервол на уязвимости

    nmap --scanflags URGACKPSHRSTSYNFIN – Устанавливать указанные флаги по стандарту RFC каждый из методов по-своему проверяет открытие закрытие порта. По сути это альтернатива некоторых других режимов, но так же и позволяет обойти IDS.

    nmap -sI - ещё один стел режим. Запросы идут с Вашей зомби машины. Пример: nmap -Pn -p- -sI www.proxy.ruwww.hack.com

    nmap -b <имя_пользователя>:<пароль>@<сервер>:<порт> - Сканирование портов, используя протокол FTP. Минусы: почти не осталось FTP серверов поддерживающих FTP bounce. Плюсы: Обход брандмауэра.

    nmap --allports смотреть все порты (по умолчанию nmap пропускает некоторые порты, например, 9100)

    nmap -sV - определение версий и служб на открытых портах. Сервисы хранятся в базе данных nmap <nmap-services>.

    nmap -A - Что описано выше, но плюс обнаружение версии ОС

    nmap --version-intensity от 1 до 9 - всё просто, чем ниже уровень, тем быстрее, но тем меньше вероятность правильного обнаружения Пример: nmap --version-intensity 9 <target>

    nmap --version-light как (nmap --version- intensity 2 <target>)

    nmap --version-all как (nmap --version-intensit 9 host)

    nmap -O - определение ОС

    Итак, скрипты. Пожалуй, мы подошли к более-менее интересной части статьи.

    Мало для кого секрет что nmap не был бы таким мощным инструментом без поддержки nse сркиптов.

    Скрипты же эти разделяются на следующие категории:

    auth, default, discovery, external, fuzzer, intrusive, malware, safe, version, vuln ….

    Каждая категория определенный спектр.

    Рассмотрим их с примерами. (полный список скриптов здесь)

    Напоминаю запустить скрипты определённой категории можно так nmap --scripts=auth,default <target>

    1)auth сценарии для обнаружения учетных данных или обход авторизации
    Перебор пользователей веб сервера с включенным модулем mod_userdir
    nmap -sV --script=http-userdir-enum <host>

    2) broadcast - здесь различные приемы обнаружения хостов.
    Пример:
    Обнаружение хостов с помощью DNS Service Discovery протокола
    nmap --script=broadcast-dns-service-discovery

    3) brute - очевидно по названию
    Пример: nmap --script http-form-brute -p 80 <host> Брутит форму по указанному адресу.

    4) default - здесь собранные различные скрипты
    Попробуем прочекать наш хост на гит репозиторий
    nmap --script=http-git <target>

    5) discovery - различные скрипты для сбора информации
    nmap --script dns-brute www.foo.com
    Найдет домены и субдомены данного хоста

    6) dos - Очевидно проверка на dos уязвимости
    nmap --script http-slowloris --max-parallelism 400 <target>
    Тестирует сервер на Slowloris DoS

    7) exploit советую её поизучать по подробней , например как можно создать бэкдор в proftpd 1.3.3c
    nmap --script ftp-proftpd-backdoor -p 21 <host>

    8) external - использует внешние ресурсы для сканирования.
    Например посмотреть по хэшсумме какой то файл на вирус тотал (никогда не заливайте туда свои малвари)
    nmap --script http-virustotal --script-args='http-virustotal.apikey="<key>",http-virustotal.checksum="275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f"'

    9) fuzzer - как видно из названия здесь краулеры и чекеры на различные клевые штуки
    Пример. соберем php файлы и прочекаем их на XSS
    nmap --script=http-phpself-xss -p80 <target>

    10) intrusive - здесь самые "шумящие" сценарии из всех категорий;

    11) malware - эти сценарии для нахождения вредносов или бэкдоров;

    12) safe противоположное intrusive - самые тихие сценарии

    13) vuln сценарии определяют некоторые уязвимости

    Пример:
    nmap --script ftp-vuln-cve2010-4221 -p 21 <host>

    Вывод:

    1/tcp open ftp
    | ftp-vuln-cve2010-4221:
    | VULNERABLE:
    | ProFTPD server TELNET IAC stack overflow
    | State: VULNERABLE
    | IDs: CVE:CVE-2010-4221 BID:44562 OSVDB:68985
    | Risk factor: High CVSSv2: 10.0 (HIGH) (AV:N/AC:L/Au:N/C:C/I:C/A:C)
    | Description:
    .....


    Некоторые приколюшные опции не описанные ранее (ниже копипаст с nmap.org)

    --traceroute: Отслеживать путь к хосту

    --reason: Выводить причину нахождения порта в определенном состоянии

    -S <ip address> — использование чужого IP-адреса в посылаемых компьютеру пакетах. В этом случае сервер вернет ответ по указанному адресу;

    -e <interface> — применение только определенного сетевого интерфейса, например, Nmap –e eth0;

    -v; -d [level] — вывод текущего состояния сканирования в режиме онлайн. Директива -d включает режим debug, где показывается вся возможная информация о текущем состоянии работы, а также ошибки и их коды;

    -g <port> (альтернатива --source-port <port>) — позволяет выбрать порт-источник, с которого будут посылаться пакеты при сканировании;

    -data-length <number> — дает возможность задать размер пакета в байтах. По умолчанию используются значения 40 и 28 для TCP- и ICMP-запросов соответственно;

    -ttl <value> — позволяет задать время для IP-пакета в поле time-to-live;

    -spoof-mac <mac address, prefix, or vendor name> — позволяет задать другой MAC-адрес (физический) для фреймов. Пример применения: Dlink, 0, 01:02:03:04:05:06;

    -badsum — посылает пакеты TCP и ICMP с искаженной проверочной суммой. Брандмауэры или системы безопасности, как правило, отвечают на такой пакет;

    -6 — использование сканирования для IPv6-сетей. В этом случае следует задать IPv6-адрес или название хоста;

    -log-errors — все ошибки записываются в лог-файл;

    -oN - Вывести в нормальном виде в файл

    -oX - Вывести в xml формате

    -oS - Формат называется ScriptKidd - Типа хакерский язык
    Пример: 139/Tcp F|LtEr3d NEtbIos-$$n
    Никакой пользы от него я не увидел.

    -oG - Grepable format как ясно из названия очень удобно искать утилитой grep

    --append-output Добавлять в конец, а не перезаписывать выходные файлы

    --resume <имя_файла> Продолжить прерванное сканирование одна из клевых штук по файлам

    --stylesheet <путь/URL> Устанавливает XSL таблицу стилей для преобразования XML вывода в HTML

    --webxml Загружает таблицу стилей с Nmap.Org

    Пожалуй, на этом всё. Постарался не тупо переписывать вкратце мануал, а дать оценку тем или иным методам, в каких ситуациях что было бы интереснее. Любая адекватная критика есть гуд. Всем спасибо. ;)
     
    _________________________
    Adagumer, gartos, Filipp and 5 others like this.