Nmap Summary (ESP)

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки 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 <numero> Аналізує цю кількість головних (від 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> Аналізує найбільш поширені порти за відношенням, я --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> (Adjust parallel scan group sizes)

Можна контролювати кількість сканерів, які працюють паралельно, але краще цього не робити (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:<number> Для генерації <number> випадкових 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 будуть повністю ігноруватися.

Last updated