Nmap Резюме (ESP)

Reading time: 13 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks
nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24

Параметри

IP-адреси для сканування

  • <ip>,<net/mask>: Вказати IP-адреси безпосередньо
  • -iL <ips_file>: list_IPs
  • -iR <number>: Кількість випадкових IP-адрес, ви можете виключити можливі IP-адреси за допомогою --exclude <Ips> або --excludefile <file>.

Виявлення обладнання

За замовчуванням Nmap запускає фазу виявлення, що складається з: -PA80 -PS443 -PE -PP

  • -sL: Не є інвазивним, перераховує цілі, роблячи DNS запити для розв'язання імен. Це корисно, щоб дізнатися, чи, наприклад, www.prueba.es/24 всі IP-адреси є нашими цілями.
  • -Pn: Без пінгу. Це корисно, якщо ви знаєте, що всі вони активні (якщо ні, ви можете втратити багато часу, але ця опція також дає хибні негативи, кажучи, що вони не активні), вона запобігає фазі виявлення.
  • -sn : Без сканування портів. Після завершення фази розвідки не сканує порти. Це відносно непомітно і дозволяє провести невелике сканування мережі. З привілеями надсилає ACK (-PA) на 80, SYN(-PS) на 443 і запит на ехо та запит на мітку часу, без привілеїв завжди завершує з'єднання. Якщо ціллю є мережа, використовується лише ARP(-PR). Якщо використовується з іншою опцією, скидаються лише пакети іншої опції.
  • -PR: Ping ARP. Використовується за замовчуванням при аналізі комп'ютерів у нашій мережі, швидше, ніж використання пінгів. Якщо ви не хочете використовувати ARP-пакети, використовуйте --send-ip.
  • -PS <ports>: Надсилає SYN-пакети, на які, якщо відповідає SYN/ACK, порт відкритий (на який відповідає RST, щоб не завершити з'єднання), якщо відповідає RST, він закритий, а якщо не відповідає, він недоступний. У разі відсутності привілеїв автоматично використовується загальне з'єднання. Якщо порти не вказані, він скидає на 80.
  • -PA <ports>: Як попередня, але з ACK, поєднання обох дає кращі результати.
  • -PU <ports>: Мета є протилежною, їх надсилають на порти, які, як очікується, закриті. Деякі брандмауери перевіряють лише TCP-з'єднання. Якщо закрито, відповідає з портом недоступним, якщо відповідає іншим icmp або не відповідає, залишає як недоступний.
  • -PE, -PP, -PM : ICMP PINGS: відповідь на ехо, мітка часу та маска адреси. Вони запускаються, щоб дізнатися, чи активна ціль.
  • -PY<ports>: Надсилає SCTP INIT запити на 80 за замовчуванням, INIT-ACK (відкрито) або ABORT (закрито) або нічого або ICMP недоступний (неактивний) можуть бути відповіді.
  • -PO <protocols>: Вказується протокол у заголовках, за замовчуванням 1 (ICMP), 2 (IGMP) і 4 (Encap IP). Для ICMP, IGMP, TCP (6) і UDP (17) протоколів надсилаються заголовки протоколів, для решти надсилається лише IP-заголовок. Мета цього полягає в тому, що через деформацію заголовків відповідають на запити "Протокол недоступний" або відповіді того ж протоколу, щоб дізнатися, чи він активний.
  • -n: Без DNS
  • -R: DNS завжди

Техніки сканування портів

  • -sS: Не завершує з'єднання, тому не залишає слідів, дуже добре, якщо його можна використовувати. (привілеї) Це той, що використовується за замовчуванням.
  • -sT: Завершує з'єднання, тому залишає слід, але його можна використовувати напевно. За замовчуванням без привілеїв.
  • -sU: Повільніше, для UDP. В основному: DNS(53), SNMP(161,162), DHCP(67 і 68), (-sU53,161,162,67,68): відкрито (відповідь), закрито (порт недоступний), фільтровано (інший ICMP), відкрито/фільтровано (нічого). У разі відкрито/фільтровано, -sV надсилає численні запити для виявлення будь-якої з версій, які підтримує nmap, і може виявити справжній стан. Це значно збільшує час.
  • -sY: Протокол SCTP не вдається встановити з'єднання, тому немає журналів, працює як -PY
  • -sN,-sX,-sF: Null, Fin, Xmas, можуть проникати через деякі брандмауери та витягувати інформацію. Вони базуються на тому, що машини, що відповідають стандартам, повинні відповідати RST на всі запити, які не мають SYN, RST або ACK затримок: відкрито/фільтровано (нічого), закрито (RST), фільтровано (ICMP недоступний). Ненадійно на Windows, Cisco, BSDI та OS/400. На unix так.
  • -sM: Сканування Мaimon: Надсилає FIN і ACK прапори, використовується для BSD, наразі поверне все як закрите.
  • -sA, sW: ACK і Window, використовується для виявлення брандмауерів, щоб дізнатися, чи порти фільтруються чи ні. -sW дійсно розрізняє між відкритими/закритими, оскільки відкриті відповідають з іншим значенням вікна: відкрито (RST з вікном, відмінним від 0), закрито (RST вікно = 0), фільтровано (ICMP недоступний або нічого). Не всі комп'ютери працюють таким чином, тому якщо все закрито, це не працює, якщо кілька відкриті, це працює добре, а якщо багато відкриті і кілька закриті, це працює навпаки.
  • -sI: Сканування в режимі простою. У випадках, коли є активний брандмауер, але ми знаємо, що він не фільтрує до певної IP-адреси (або коли ми просто хочемо анонімності), ми можемо використовувати зомбі-сканер (він працює для всіх портів), щоб шукати можливі зомбі, ми можемо використовувати скрипт ipidseq або експлойт auxiliary/scanner/ip/ipidseq. Цей сканер базується на номері IPID IP-пакетів.
  • --badsum: Надсилає неправильну суму, комп'ютери відкинуть пакети, але брандмауери можуть відповісти на щось, використовується для виявлення брандмауерів.
  • -sZ: "Дивний" SCTP сканер, при надсиланні запитів з фрагментами cookie echo їх слід відкинути, якщо відкрито, або відповісти ABORT, якщо закрито. Він може проходити через брандмауери, які не проходять через ініціалізацію, погано те, що він не розрізняє між фільтрованими та відкритими.
  • -sO: Сканування протоколу Ip. Надсилає погані та порожні заголовки, в яких іноді навіть протокол не можна розрізнити. Якщо прибуває ICMP недоступний протокол, він закритий, якщо прибуває недоступний порт, він відкритий, якщо прибуває інша помилка, фільтровано, якщо нічого не прибуває, відкрито|фільтровано.
  • -b <server>: FTPhost--> Використовується для сканування хоста з іншого, це робиться шляхом підключення до ftp іншої машини та прохання надіслати файли на порти, які ви хочете сканувати з іншої машини, відповідно до відповідей ми дізнаємося, чи вони відкриті чи ні. [<user>:<password>@]<server>[:<port>] Майже всі ftps сервери більше не дозволяють це робити, тому це має мало практичного використання.

Аналіз фокусу

-p: Використовується для вказівки портів для сканування. Щоб вибрати всі 65,335 портів: -p- або -p all. Nmap має внутрішню класифікацію на основі популярності. За замовчуванням використовує 1000 найпопулярніших портів. З -F (швидке сканування) аналізує 100 найпопулярніших. З --top-ports аналізує цю кількість найпопулярніших портів (від 1 до 65,335). Перевіряє порти в випадковому порядку; щоб запобігти цьому, використовуйте -r. Ми також можемо вибрати конкретні порти: 20-30,80,443,1024- (остання означає шукати з 1024 і далі). Ми також можемо групувати порти за протоколами: U:53,T:21-25,80,139,S:9. Ми також можемо вибрати діапазон серед популярних портів Nmap: -p [-1024] аналізує до порту 1024 з тих, що включені в nmap-services. --port-ratio Аналізує найпоширеніші порти в межах співвідношення від 0 до 1

-sV Сканування версій, інтенсивність можна регулювати від 0 до 9, за замовчуванням 7.

--version-intensity Ми регулюємо інтенсивність, так що чим нижча, тим лише найімовірніші запити, але не всі. З цим ми можемо значно скоротити час сканування UDP

-O Виявлення ОС

--osscan-limit Для правильного сканування хоста потрібно принаймні один відкритий порт і один закритий порт. Якщо ця умова не виконується і ми це встановили, він не спробує передбачити ОС (економить час)

--osscan-guess Коли виявлення ОС не ідеальне, це змушує його намагатися більше

Скрипти

--script |||[,...]

Щоб використовувати стандартні скрипти, використовуйте -sC або --script=default

Доступні типи: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, і vuln

  • Auth: виконує всі доступні скрипти аутентифікації
  • Default: виконує базові стандартні скрипти інструментів
  • Discovery: отримує інформацію з цілі або жертви
  • External: скрипт для використання зовнішніх ресурсів
  • Intrusive: використовує скрипти, які вважаються інвазивними для жертви або цілі
  • Malware: перевіряє на наявність з'єднань, відкритих шкідливим кодом або бекдорами
  • Safe: виконує неінвазивні скрипти
  • Vuln: виявляє найбільш відомі вразливості
  • All: виконує абсолютно всі доступні скрипти розширення NSE

Щоб шукати скрипти:

nmap --script-help="http-*" -> Ті, що починаються з http-

nmap --script-help="not intrusive" -> Усі, крім тих

nmap --script-help="default or safe" -> Ті в будь-якому з або обох

nmap --script-help="default and safe" --> Ті в обох

nmap --script-help="(default or safe or intrusive) and not http-*"

--script-args =,={=},={,}

--script-args-file

--script-help ||||all[,...]

--script-trace ---> Надає інформацію про те, як просувається скрипт

--script-updatedb

Щоб використовувати скрипт, просто наберіть: nmap --script Script_Name target --> При використанні скрипта, як скрипт, так і сканер виконуватимуться, тому також можна додати параметри сканера. Ми можемо додати "safe=1" для виконання лише безпечних.

Контроль часу

Nmap може змінювати час у секундах, хвилинах, мс: --host-timeout arguments 900000ms, 900, 900s, і 15m все робить те саме.

Nmap ділить загальну кількість хостів для сканування на групи та аналізує ці групи блоками, тому не переходить до наступного блоку, поки всі не будуть проаналізовані (і користувач не отримує жодних оновлень, поки блок не буде проаналізований). Таким чином, для Nmap оптимальніше використовувати великі групи. За замовчуванням у класі C використовує 256.

Це можна змінити за допомогою --min-hostgroup ; --max-hostgroup (Регулює розміри паралельних груп сканування)

Ви можете контролювати кількість паралельних сканерів, але краще цього не робити (Nmap вже включає автоматичний контроль на основі стану мережі): --min-parallelism ; --max-parallelism

Ми можемо змінити тайм-аут RTT, але зазвичай це не потрібно: --min-rtt-timeout , --max-rtt-timeout , --initial-rtt-timeout

Ми можемо змінити кількість спроб: --max-retries

Ми можемо змінити час сканування хоста: --host-timeout

Ми можемо змінити час між кожним тестом, щоб сповільнити його: --scan-delay ; --max-scan-delay

Ми можемо змінити кількість пакетів на секунду: --min-rate ; --max-rate

Багато портів займають багато часу для відповіді, коли вони фільтруються або закриті. Якщо нас цікавлять лише відкриті, ми можемо прискорити процес за допомогою: --defeat-rst-ratelimit

Щоб визначити, наскільки агресивним ми хочемо, щоб Nmap був: -T paranoid|sneaky|polite|normal|aggressive|insane

-T (0-1)

-T0 --> Сканує лише 1 порт за раз і чекає 5 хвилин до наступного

-T1 і T2 --> Дуже схожі, але чекають лише 15 і 0.4 секунди відповідно між кожним тестом

-T3 --> Операція за замовчуванням, включає паралельне сканування

-T4 --> --max-rtt-timeout 1250ms --min-rtt-timeout 100ms --initial-rtt-timeout 500ms --max-retries 6 --max-scan-delay 10ms

-T5 --> --max-rtt-timeout 300ms --min-rtt-timeout 50ms --initial-rtt-timeout 250ms --max-retries 2 --host-timeout 15m --max-scan-delay 5ms

Брандмауер/IDS

Вони не дозволяють доступ до портів і аналізують пакети.

-f Щоб фрагментувати пакети, за замовчуванням фрагментує їх на 8 байтів після заголовка, щоб вказати цей розмір, ми використовуємо ..mtu (з цим не використовуйте -f), зсув повинен бути кратним 8. Сканери версій і скрипти не підтримують фрагментацію

-D decoy1,decoy2,ME Nmap надсилає сканери, але з іншими IP-адресами як джерело, таким чином вони приховують вас. Якщо ви поставите ME в списку, Nmap помістить вас туди, краще поставити 5 або 6 перед вами, щоб повністю замаскувати вас. Випадкові IP-адреси можна згенерувати за допомогою RND: Щоб згенерувати випадкових IP-адрес. Вони не працюють з детекторами версій TCP без з'єднання. Якщо ви всередині мережі, вам цікаво використовувати активні IP-адреси, оскільки в іншому випадку буде дуже легко зрозуміти, що ви є єдиним активним.

Щоб використовувати випадкові IP-адреси: nmap -D RND:10 Target_IP

-S IP Коли Nmap не ловить вашу IP-адресу, ви повинні вказати її цим. Також служить для того, щоб змусити їх думати, що інша ціль сканує їх.

-e Щоб вибрати інтерфейс

Багато адміністраторів залишають вхідні порти відкритими, щоб все працювало правильно, і їм легше, ніж знайти інше рішення. Це можуть бути порти DNS або FTP... щоб знайти цю вразливість, Nmap включає: --source-port ;-g Вони еквівалентні

--data Щоб надіслати шістнадцятковий текст: --data 0xdeadbeef і --data \xCA\xFE\x09

--data-string Щоб надіслати звичайний текст: --data-string "Сканування проведено Security Ops, розширення 7192"

--data-length Nmap надсилає лише заголовки, з цим ми досягаємо додавання певної кількості байтів (які будуть згенеровані випадковим чином)

Щоб повністю налаштувати IP-пакет, використовуйте --ip-options

Якщо ви хочете побачити параметри в надісланих і отриманих пакетах, вкажіть --packet-trace. Для отримання додаткової інформації та прикладів використання IP-опцій з Nmap, дивіться http://seclists.org/nmap-dev/2006/q3/52.

--ttl

--randomize-hosts Щоб зробити атаку менш очевидною

--spoof-mac <MAC address, prefix, or vendor name> Щоб змінити MAC приклади: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, і Cisco

--proxies Щоб використовувати проксі, іноді проксі не підтримує так багато відкритих з'єднань, як хоче Nmap, тому паралелізм потрібно буде змінити: --max-parallelism

-sP Щоб виявити хости в нашій мережі за допомогою ARP

Багато адміністраторів створюють правило брандмауера, яке дозволяє всім пакетам, що надходять з певного порту, проходити (як 20,53 і 67), ми можемо сказати Nmap надіслати наші пакети з цих портів: nmap --source-port 53 IP

Виходи

-oN file Звичайний вихід

-oX file XML вихід

-oS file Вихід скрипт-кідів

-oG file Вихід, що підлягає grep

-oA file Усе, крім -oS

-v level детальність

-d level налагодження

--reason Чому хоста та стан

--stats-every time Кожен цей час говорить нам, як це йде

--packet-trace Щоб побачити, які пакети виходять, можна вказати фільтри, такі як: --version-trace або --script-trace

--open показує відкриті, відкриті|фільтровані та нефільтровані

--resume file Виводить підсумок

Різне

-6 Дозволяє IPv6

-A те саме, що -O -sV -sC --traceroute

Час виконання

Поки Nmap працює, ми можемо змінювати параметри:

v / V Збільшити / зменшити рівень детальності

d / D Збільшити / зменшити рівень налагодження

p / P Увімкнути / вимкнути трасування пакетів

? Друк екрану допомоги з взаємодії під час виконання

Vulscan

Скрипт Nmap, який переглядає версії служб, отриманих в офлайн базі даних (завантаженої з інших дуже важливих) і повертає можливі вразливості

Бази даних, які він використовує:

  1. Scipvuldb.csv | http://www.scip.ch/en/?vuldb
  2. Cve.csv | http://cve.mitre.org
  3. Osvdb.csv | http://www.osvdb.org
  4. Securityfocus.csv | http://www.securityfocus.com/bid/
  5. Securitytracker.csv | http://www.securitytracker.com
  6. Xforce.csv | http://xforce.iss.net
  7. Exploitdb.csv | http://www.exploit-db.com
  8. Openvas.csv | http://www.openvas.org

Щоб завантажити та встановити в папку Nmap:

wget http://www.computec.ch/projekte/vulscan/download/nmap_nse_vulscan-2.0.tar.gz && tar -czvf nmap_nse_vulscan-2.0.tar.gz vulscan/ && sudo cp -r vulscan/ /usr/share/nmap/scripts/

Вам також потрібно буде завантажити пакети БД та додати їх до /usr/share/nmap/scripts/vulscan/

Використання:

Щоб використовувати все: sudo nmap -sV --script=vulscan HOST_TO_SCAN

Щоб використовувати конкретну БД: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_TO_SCAN

Прискорення сканування служби Nmap x16

Згідно з цього посту, ви можете прискорити аналіз служби nmap, змінивши всі значення totalwaitms у /usr/share/nmap/nmap-service-probes на 300 і tcpwrappedms на 200.

Більше того, запити, які не мають спеціально визначеного servicewaitms, використовують значення за замовчуванням 5000. Тому ми можемо або додати значення до кожного з запитів, або ми можемо скомпілювати nmap самостійно та змінити значення за замовчуванням у service_scan.h.

Якщо ви не хочете змінювати значення totalwaitms і tcpwrappedms взагалі в файлі /usr/share/nmap/nmap-service-probes, ви можете редагувати код парсингу так, щоб ці значення у файлі nmap-service-probes були повністю проігноровані.

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks