Post

Nmap: Arqumentlərin aşağı səviyyədə paket davranışı

Nmap: Arqumentlərin aşağı səviyyədə paket davranışı

Nmap (Network Mapper) — şəbəkə kəşfiyyatı və təhlükəsizlik analizi üçün istifadə olunan opensource bir alətdir. Əsas məqsədi şəbəkədə mövcud olan hostları, onların açıq portlarını, istifadə olunan servisləri və əməliyyat sistemlərini müəyyən etməkdir. Nmap müxtəlif scan texnikalarından istifadə edərək TCP/IP paketlərini birbaşa şəbəkəyə göndərir və cavabları analiz edir. Bu xüsusiyyəti sayəsində o, həm sistem administratorları, həm də penetration testing və cybersecurity sahəsində çalışan mütəxəssislər üçün vacib bir alətdir.

Bu gün isə biz Nmap-da mövcud olan arqumentlərin necə işlədiyini, yəni arxa planda hansı tip paketlərin göndərildiyini, açıq, filterlənmiş və ya bağlı portların necə müəyyən edildiyini araşdıracağıq. Həmçinin Nmap-in göndərilən paketlərin hansı TCP/IP flag-larına və cavab mexanizmlərinə baxaraq qərar verdiyini paket səviyyəsində öyrənəcəyik.

SS

Bildiyimiz kimi, Nmap alətində müxtəlif scan arqumentləri mövcuddur və bu arqumentlərin hər biri müəyyən bir scan növünü ifadə edir. Bu scan növləri fərqli məqsədlərə və işləmə mexanizmlərinə malikdir. Məqalə çərçivəsində bütün scan texnikalarına deyil, praktikada ən çox istifadə olunan Nmap scan növlərinə və onların paket səviyyəsində işləmə prinsiplərinə nəzər salacağıq.

-sS

TCP SYN Scan (-sS) nədir?

TCP SYN scan Nmap-in ən çox istifadə olunan və ən effektiv scan növlərindən biridir. Bu scan növü TCP three-way handshake prosesini tamamlamaq əvəzinə, yalnız ilk mərhələdə dayanaraq portun vəziyyəti haqqında qərar verir. Bu səbəbdən tez-tez “half-open scan” və ya “stealth scan” adlandırılır.

SS

Burada biz -sS parametrindən istifadə edərək 95.255.156.247 IP ünvanının 3 portunu skan edirik və bizə bu cavab qaytarılır.

SS

Skana başladıq və Wireshark-da filtr tətbiq edərək şəbəkə trafikini izlədik. Gördük ki, Nmap burada hostun “up” olduğunu öyrənmək üçün ilk olaraq ICMP Echo Request göndərib və host da bizə cavab olaraq Echo Reply göndərib.

Daha sonra hədəfin müəyyən portlarının açıq olub‑olmadığını öyrənmək üçün TCP SYN flaqı göndərilir. Bəs ACK nə üçündür? Bu ACK bağlantı (connection) açmaq üçün deyil və portun açıq olub‑olmadığını yoxlamaq məqsədi də daşımır. O, sadəcə bunu yoxlayır: “Firewall tərəfindən hər hansı cavab gəlirmi?” Əgər host RST ilə cavab verirsə, host up hesab olunur.

Əgər hədəfdən bizə RST + ACK flaqı qayıdırsa, bu o deməkdir ki, port bağlıdır (CLOSED), amma host aktivdir. Qısaca, host up, servis yoxdur. Firewall blok edə bilər, amma bu necə blokladığından asılıdır. Əgər firewall RST + ACK göndərirsə, bu aktiv bloklamadır. Nmap bunu CLOSED kimi görür və mənası budur: “Bu port qadağandır / servis yoxdur.”

Yaxşı, bəs bizdə 53 və 443 portları niyə filtered kimi göstərilib? Çünki -Pn argumenti yoxdur ICMP və TCP ACK ilə 80 portu üçün host RST + ACK göndərir və Nmap deyir ki, host updır Port scan mərhələsində (-sS) TCP SYN 53 və 443 portlarına göndərilir və heç bir cavab yoxdur (DROP) host alivedir və portlar filtered kimi görünür.

1
2
3
Yekun:
SYN‑ACK = OPEN
RST-ACK = CLOSED/Filtered 

-sU

TCP UDP Scan (-sU) nədir?

UDP scan Nmap‑in UDP protokolu üzərindən işləyən scan növüdür və hədəfdəki UDP portlarının açıq olub‑olmadığını müəyyən etmək üçün istifadə olunur. Bu scan növü TCP-də olduğu kimi three‑way handshake mexanizminə əsaslanmır, çünki UDP bağlantısız (connectionless) protokoldur.

Nmap UDP scan zamanı hədəf portlara UDP paketləri göndərir və gələn cavablara əsasən portun vəziyyəti haqqında qərar verir. Əgər ICMP Port Unreachable cavabı alınarsa, port closed hesab olunur. Heç bir cavab gəlməzsə, port open və ya filtered kimi qiymətləndirilir.

UDP scan TCP scan-lərə nisbətən daha yavaş və qeyri‑müəyyəndir, çünki firewall-lar və sistemlər çox vaxt UDP paketlərini səssizcə drop edir. Buna baxmayaraq DNS 53, SNMP 161 və NTP 123 kimi UDP servislərini aşkar etmək üçün vacibdir.

SS

Burada biz 95.255.156.247 IP ünvanının 53, 443 və 80 portlarını UDP scan edirik və bizə bu cavab qaytarılır.(host up olduğundan əmin olduqumuz üçün -Pn yazaraq ICMP Request getməsinin qarşını alırıq)

SS

53 udp, 80 udp və 443 udp portları üçün open filtered statusu göstərilir, çünki Nmap heç bir cavab almayıb. Bu isə o deməkdir ki, port açıq ola bilər, firewall cavabı bloklayır ola bilər və ya UDP paketi itmişdə ola bilər. Yəni Nmap bu halda open filtered statusunu göstərir, çünki portun vəziyyəti tam dəqiq müəyyən edilə bilmir. UDP “connectionless” protokoldur paket itə bilər, firewall bloklaya bilər, server cavab göndərməyə bilər. Fərqli host yoxlayaraq davam edək

SS

bu hostda isə bizə 53 portunun açıq olduqu cavabı qaytarılır, gəlin trafiki analiz edək

SS

Digər hostdan fərqli olaraq, burada hədəf host bizim UDP sorğumuza DNS cavabı qaytardı və Nmap 53-cü portun açıq olduğu qərarına gəldi.

SS

Bizdən gedən ICMP paketləri də görünür. Bu paketlərin getməsi çox önəmli deyil, amma əgər host bizə ICMP Code 3 cavabı göndərirsə, bu portun bağlı (closed) olduğunu göstərir.

-sV

Service Version Scan (-sV) nədir?

Service Version scan Nmap‑in hədəf portlarda çalışan servisləri və onların versiyalarını müəyyən etmək üçün istifadə etdiyi scan növüdür. Bu scan növü portun sadəcə açıq olub‑olmadığını yox, həmin port üzərində hansı servis işlədiyini və mümkün olduqda servis versiyasını aşkar edir.

SS

Burada biz 95.255.156.247 IP ünvanının 53, 443 və 80 portlarını Version scan edirik və bizə bu cavab qaytarılır. 53 port və 443 port filtered olaraq işarətlənib çünki Nmap SYN probe göndərib, heç bir cavab gəlməyib → firewall və ya filter var. 80 portun isə versiasi bizə qaytarılıb amma necə? Nmap banner grab edib versiyanı tapıb HTTP servisi Apache Tomcat 9.0.26 işləyir.

SS

Burada olan paket və flagların coxsunu yuxarda başa saldığmdan bilirsiniz əsas olaraq bizim diqqətimizi çoxlu HTTP sorğuları çəkir. Yaxşı Nmap Apache Tomcat 9.0.26 olduğunu NECƏ tapdı?

-sV scan zamanı Nmap əvvəlcə portun açıq olduğunu müəyyən edir. Bunun üçün TCP SYN göndərir və əgər SYN‑ACK cavabı gələrsə, məsələn 80/tcp portu open kimi qəbul olunur. Daha sonra -sV zamanı Nmap yarım açıq vəziyyətdə qalmır və normal TCP bağlantısı qurur. Yəni three‑way handshake prosesini tamamlayır SYN göndərir SYN‑ACK alır və ACK göndərir. Bundan sonra Nmap servis məlumatını əldə etmək üçün probe-lar göndərir. HTTP üçün bu adətən GET və ya HEAD sorğuları olur.

Server bu sorğulara cavab verir

SS

və əsas məlumat da məhz bu cavabda ortaya çıxır. Məsələn Tomcat server cavab başlıqlarında Server Apache‑Coyote/1.1 göndərə bilər və ya HTML məzmununun içində Apache Tomcat 9.0.26 kimi məlumatlar ola bilər. Sonda Nmap bu cavabları özünün nmap‑service‑probes bazası ilə müqayisə edir və uyğunluq tapdıqda servisin adını və versiyasını müəyyən edir, məsələn Apache Tomcat 9.0.26.

-sX

TCP Xmas Scan (-sX) nədir?

TCP Xmas scan Nmap‑in daha az istifadə olunan və daha çox stealth məqsədli scan növlərindən biridir. Bu scan növü TCP three‑way handshake prosesini ümumiyyətlə başlatmır. Bunun əvəzinə FIN PSH və URG flaq­ları aktiv olan xüsusi TCP paketləri göndərərək portun vəziyyəti haqqında qərar verir.

SS

Burada biz 82.165.202.206 IP ünvanının 53, 443 və 80 portlarını XMAS scan (-sX) edirik və bizə bu cavab qaytarılır.

SS

TCP standartlarına görə, əgər port bağlıdırsa, hədəf bu cür paketlərə RST cavabı göndərməlidir. Əgər heç bir cavab gəlmirsə, port open və ya filtered kimi qiymətləndirilir. Məhz bu səbəbdən -sX scan firewall və IDS sistemlərindən yayınmaq üçün istifadə oluna bilər.

XMAS scan zamanı Nmap FIN, PSH və URG flag‑ləri aktiv olan TCP paketləri göndərir. Nəticədə bütün portlar open|filtered olaraq işarələnib, çünki göndərilən XMAS probe‑larına hədəfdən heç bir cavab gəlməyib. Bu vəziyyət portların ya açıq olduğunu, ya da firewall tərəfindən filtr olunduğunu göstərir və XMAS scan bu mərhələdə portun dəqiq açıq və ya bağlı olduğunu müəyyən edə bilmir.

Nəticə olaraq XMAS scan UDP və SYN scan-dan fərqlənir. XMAS scan zamanı cavab gəlməzsə, port open və ya filtered kimi qiymətləndirilir. Əgər RST cavabı gələrsə, bu portun closed olduğunu göstərir.

-f

Fragmentation Scan (-f) nədir?

Fragmentation scan Nmap‑in paketləri bilərəkdən kiçik hissələrə bölərək göndərdiyi scan üsuludur. Bu üsul birbaşa portun vəziyyətini müəyyən edən müstəqil scan növü deyil, daha çox firewall və IDS sistemlərindən yayınmaq üçün istifadə olunan texnikadır.

SS

Burada biz 95.255.156.247 IP ünvanının 53, 443 və 80 portlarını SYN scan (-sS) ilə yoxlayırıq və eyni zamanda -f argumenti ilə paketləri IP fragmentasiyaya bölürük. Fragmentasiya zamanı TCP SYN paketləri təxminən 8 byte-lıq hissələrə parçalanır.

SS

Nəticədə 53 və 443 portları filtered olaraq işarələnib, çünki fragment olunmuş SYN paketlərinə hədəfdən heç bir cavab gəlməyib, bu da firewall və ya filtrin mövcud olduğunu göstərir. 80 port isə open olaraq müəyyən edilib, yəni fragmentlər düzgün şəkildə birləşdirilib və hədəfdən SYN‑ACK cavabı alınıb, bu da 80 portun açıq olduğunu göstərir.

IP fragmentation necə işləyir?

IP fragmentation zamanı böyük bir IP paket daha kiçik hissələrə bölünür. Hər hissə ayrıca IP paketi kimi göndərilir və bu paketlərin hamısında eyni Identification dəyəri olur. Yalnız son fragmentdə More Fragments sahəsi sıfır olur. Wireshark-da IP header‑ə baxdıqda Flags sahəsində More Fragments dəyərini görmək mümkündür.

SS

Əgər More Fragments set olunubsa, bu paket son fragment deyil və davamı gələcək deməkdir. Əgər Not set vəziyyətindədirsə, bu artıq son fragmentdir. Fragment offset sahəsi isə həmin fragmentin orijinal paket daxilində haradan başladığını göstərir. Konkret olaraq More Fragments = 1 olması onu bildirir ki, paket parçalanıb və hələ digər fragmentlər də göndəriləcək. Bu halda TCP header tam şəkildə həmin fragmentdə olmaya bilər və firewall və ya IDS sistemi paketi tam oxuya bilməyə bilər. Məhz buna görə də -f parametri firewall bypass məqsədilə istifadə olunur.

Nəticə

Bu məqalədə biz Nmap-in populyar scan metodlarını və onların paket səviyyəsində necə işlədiyini nəzərdən keçirdik. Gördüyümüz kimi, hər scan növünün fərqli bir məqsədi və istifadə yeri var. -sS sürətli, -sU UDP servislərini tapmaq üçün əvəzolunmazdır, -sV versiya məlumatlarını dəqiq verir, -sX firewall qaydalarını test etmək üçün idealdır, -f isə müdafiə sistemlərindən yayınmaq üçün istifadə edilir.

Bir cybersecurity mütəxəssisi üçün sadəcə aləti işlətmək kifayət deyil, onun arxasında gedən prosesləri anlamaq vacibdir. Paketlərin dilini bildikdə, həm hücum, həm də müdafiə tərəfində nələrin baş verdiyini daha aydın görə bilərsiniz. Ümid edirəm ki, bu məqalə Nmap-in iş prinsipləri haqqında suallarınıza cavab oldu.

This post is licensed under CC BY 4.0 by the author.