Nmap Summary (ESP)

Вивчайте та практикуйте взлом AWS: Навчання HackTricks AWS Red Team Expert (ARTE) Вивчайте та практикуйте взлом GCP: Навчання HackTricks 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 для вирішення імен. Корисно знати, чи всі IP-адреси наші цілі, наприклад www.prueba.es/24.

  • -Pn: Без пінгу. Корисно, якщо ви знаєте, що всі вони активні (якщо ні, ви можете втратити багато часу, але ця опція також може давати помилкові відповіді, що вони не активні), це запобігає фазі виявлення.

  • -sn : Без сканування портів. Після завершення фази розвідки не сканує порти. Це відносно приховане і дозволяє невелике сканування мережі. З привілеями він відправляє ACK (-PA) на 80, SYN(-PS) на 443 та запит на ехо та запит на мітку часу, без привілеїв завжди завершує підключення. Якщо ціль - мережа, використовується тільки ARP(-PR). Якщо використовується з іншою опцією, відкидаються тільки пакети іншої опції.

  • -PR: Пінг ARP. Використовується за замовчуванням при аналізі комп'ютерів у нашій мережі, він швидше, ніж використання пінгів. Якщо ви не хочете використовувати пакети ARP, використовуйте --send-ip.

  • -PS <ports>: Він відправляє пакети SYN, на які, якщо відповідає SYN/ACK, він відкритий (на який відповідає RST, щоб не завершити підключення), якщо відповідає RST, він закритий, якщо не відповідає, він недосяжний. У випадку відсутності привілеїв автоматично використовується загальне підключення. Якщо порти не вказані, він відправляє їх на 80.

  • -PA <ports>: Те саме, що й попереднє, але з ACK, поєднуючи обидва, дає кращі результати.

  • -PU <ports>: Мета полягає в тому, що вони відправляються на порти, які очікуються бути закритими. Деякі брандмауери перевіряють тільки TCP-підключення. Якщо він закритий, відповідається з недоступним портом, якщо відповідається іншим icmp або не відповідає, він залишається як недосяжний пункт призначення.

  • -PE, -PP, -PM : ICMP ПІНГИ: відповідь на ехо, мітка часу та маска адреси. Вони запускаються для визначення активності цілі.

  • -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: Сканування Maimon: Відправляє прапори 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>] Майже всі ftp-сервери більше не дозволяють це робити, тому це має мало практичного застосування.

Централізувати аналіз

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

-sV Сканування версій, можна регулювати --osscan-guess Коли виявлення os не є ідеальним, це змушує його працювати більше

Сценарії

--script <filename>|<category>|<directory>|<expression>[,...]

Для використання типових достатньо -sC або --script=default

Існують такі типи: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, and 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 <n1>=<v1>,<n2>={<n3>=<v3>},<n4>={<v4>,<v5>}

--script-args-file <filename>

--script-help <filename>|<category>|<directory>|<expression>|all[,...]

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

--script-updatedb

Для використання сценарію просто вкажіть: namp --script Назва_сценарію ціль --> При вказанні сценарію виконується як сценарій, так і сканер, тому можна додати “safe=1” для виконання лише безпечних сценаріїв.

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

Nmap може змінювати час у секундах, хвилинах, мс: --host-timeout arguments 900000ms, 900, 900s, and 15m all do the same thing.

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

Це можна змінити за допомогою**--min-hostgroup** <numhosts>; --max-hostgroup <numhosts> (Налаштування паралельних розмірів груп сканування)

Можна контролювати кількість сканерів, які працюють паралельно, але краще цього не робити (nmap вже має автоматичний контроль на основі стану мережі): --min-parallelism <numprobes>; --max-parallelism <numprobes>

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

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

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

Можна змінити час між кожним тестом, щоб він працював повільніше: --scan-delay <time>; --max-scan-delay <time>

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

Багато портів довго відповідають через фільтрацію або закриття, якщо нас цікавлять лише відкриті, ми можемо прискорити процес за допомогою: --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 Ip_ціль

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

-e <interface> Вибір інтерфейсу

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

--data <hex string> Для відправки шістнадцяткового тексту: --data 0xdeadbeef and --data \xCA\xFE\x09

--data-string <string> Для відправки звичайного тексту: --data-string "Scan conducted by Security Ops, extension 7192"

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

Для повного налаштування IP-пакета використовуйте --ip-options

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

--ttl <value>

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

--spoof-mac <MAC address, prefix, or vendor name> Для зміни MAC-адреси приклади: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, and Cisco --proxies <Список URL-адресів проксі> Для використання проксі, іноді проксі не утримує стільки відкритих з'єднань, скільки хоче nmap, тому потрібно змінити паралельність: --max-parallelism

-sP Для виявлення хостів у мережі, в якій ми знаходимося, за допомогою ARP

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

Виведення

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

-oX file XML-вивід

-oS file Вивід для скрипт-дітей

-oG file Grepable-вивід

-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. Securitytracker.csv | http://www.securitytracker.com

Для завантаження та встановлення його в папку 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_A_ESCANEAR

Для використання конкретної бази даних: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_A_ESCANEAR

Прискорення сканування сервісів 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 будуть повністю ігноруватися.

Вивчайте та практикуйте взлом AWS:Навчання HackTricks AWS Red Team Expert (ARTE) Вивчайте та практикуйте взлом GCP: Навчання HackTricks GCP Red Team Expert (GRTE)

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

Last updated