Nmap Summary (ESP)
Last updated
Last updated
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
<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, якщо закриті. Він може проходити через брандмауери, які не проходять через init, погано те, що він не розрізняє між фільтрованими та відкритими.
-sO
: Сканування протоколу Ip. Надсилає погані та порожні заголовки, в яких іноді навіть протокол не можна розрізнити. Якщо прибуває ICMP недоступний протокол, він закритий, якщо прибуває недоступний порт, він відкритий, якщо прибуває інша помилка, фільтровано, якщо нічого не прибуває, відкрито|фільтровано.
-b <server>
: FTPhost--> Використовується для сканування хоста з іншого, це робиться, підключаючи ftp іншої машини та просячи її надіслати файли на порти, які ви хочете сканувати з іншої машини, відповідно до відповідей ми дізнаємося, чи вони відкриті чи ні. [<user>:<password>@]<server>[:<port>] Майже всі ftps сервери більше не дозволяють це робити, тому це має мало практичного використання.
-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 Сканування версії, можна регулювати інтенсивність від 0 до 9, за замовчуванням 7.
--version-intensity <number> Регулюємо інтенсивність, так що чим нижче, тим більше запускатиме лише найбільш ймовірні зонда, але не всі. Це може значно скоротити час сканування UDP.
-O Виявлення ОС.
--osscan-limit Щоб добре просканувати хост, потрібно, щоб принаймні один порт був відкритий, а інший закритий, якщо ця умова не виконується і ми це вказали, не намагається робити прогноз ОС (економить час).
--osscan-guess Коли виявлення ОС не є ідеальним, це змушує його більше старатися.
Скрипти
--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: перевіряє, чи є відкриті з'єднання через шкідливі коди або backdoors (задні двері).
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, і 15m все робить одне й те саме.
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:<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 та --data \xCA\xFE\x09.
--data-string <string> Щоб надіслати звичайний текст: --data-string "Сканування проведено Security Ops, розширення 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, і Cisco.
--proxies <Comma-separated list of proxy URLs> Щоб використовувати проксі, іноді проксі не підтримує стільки з'єднань, скільки хоче nmap, тому потрібно змінити паралелізм: --max-parallelism.
-sP Щоб виявити хости в мережі, в якій ми знаходимося, за допомогою ARP.
Багато адміністраторів створюють правило в брандмауері, яке дозволяє проходити всі пакети, що надходять з певного порту (наприклад, 20,53 і 67), ми можемо сказати nmap, щоб надіслав наші пакети з цих портів: nmap --source-port 53 Ip.
Виходи
-oN file Звичайний вихід.
-oX file Вихід XML.
-oS file Вихід скриптів kiddies.
-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, який перевіряє версії отриманих служб у офлайн базі даних (яка завантажується з інших дуже важливих) і повертає можливі вразливості.
Бази даних, які він використовує:
Scipvuldb.csv | http://www.scip.ch/en/?vuldb
Cve.csv | http://cve.mitre.org
Osvdb.csv | http://www.osvdb.org
Securityfocus.csv | http://www.securityfocus.com/bid/
Securitytracker.csv | http://www.securitytracker.com
Xforce.csv | http://xforce.iss.net
Exploitdb.csv | http://www.exploit-db.com
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_A_ESCANEAR.
Щоб використовувати конкретну базу даних: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_A_ESCANEAR.
Згідно з цим постом, ви можете прискорити аналіз сервісів 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 Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вчіться та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)