Port scanning — bu nishondagi (ya'ni masofadagi) kompyuterda ochiq bo‘lgan TCP yoki UDP portlarni tekshirish jarayonidir. Maqsad — ushbu portlarda qanday xizmatlar (services) ishlayotganini aniqlash va qanday hujum yo‘llari (attack vectors) mavjud bo‘lishi mumkinligini bilishdir.
Iltimos, shuni yodda tutingki, port scanning an'anaviy foydalanuvchi faoliyatiga kirmaydi va ayrim hududlarda noqonuniy hisoblanishi mumkin. Shu sababli, laboratoriyadan tashqarida nishon tarmoq egasining bevosita yozma ruxsatisiz port scanning o'tkazilmasligi kerak.
Port scanning’ning oqibatlarini, shuningdek, u qanday ta’sir ko‘rsatishini tushunish juda muhimdir. Ba’zi scan’lar katta trafik hosil qilishi va tajovuzkor bo‘lishi sababli, beparvo tarzda port scan qilish nishon tizimlar yoki mijoz tarmog‘iga salbiy ta’sir ko‘rsatishi mumkin, masalan: serverlarni yoki tarmoq liniyalarini haddan tashqari yuklash yoki IDS/IPS tizimlarini ishga tushurish. Noto‘g‘ri scan ishlatilsa, bu mijoz uchun tizim ishdan chiqishiga ham olib kelishi mumkin.
To‘g‘ri port scanning metodologiyasini ishlatish bizni penetration tester sifatida samaradorligimizni oshiradi va ko‘plab xatarlardan saqlaydi. Engagement (vazifa) doirasiga qarab, to‘liq port scan qilish o‘rniga, avval faqat 80 va 443 portlarini scan qilishdan boshlashimiz mumkin. Potensial web serverlar ro‘yxati tayyor bo‘lgach, ular ustida background’da to‘liq port scan olib boramiz va shu bilan birga boshqa enumeration ishlarini ham bajaramiz. To‘liq scan tugagach, yanada chuqurroq tekshiruvlar qilish uchun keyingi scan’lar orqali qo‘shimcha ma’lumotlar yig‘amiz. Port scanning bu statik emas, balki engagement’ga qarab o‘zgaruvchi jarayon bo‘lib, bir scan natijasi keyingi scan turini va hajmini belgilab beradi.
Biz port scanning’ni oddiy TCP va UDP scan bilan Netcat yordamida boshlaymiz. E’tibor bering, Netcat bu port scanner emas, ammo oddiy port scan qilish uchun undan foydalanish mumkin. Bu orqali port scanner’larning qanday ishlashini oddiy usulda ko‘rsatish mumkin.
Netcat ko‘plab tizimlarda allaqachon mavjud bo‘lgani uchun, biz uning ba’zi funksiyalaridan foydalanib, to‘liq port scanner kerak bo‘lmagan holatlarda oddiy scan ishlarini bajarishimiz mumkin. Ammo, albatta, port scanning’ga maxsus mo‘ljallangan kuchliroq vositalarni ham keyinroq o‘rganamiz.
Keling, TCP scanning texnikalaridan boshlaymiz, keyinroq UDP scanning’ni ko‘rib chiqamiz. Eng oddiy TCP port scanning texnikasi — bu CONNECT scanning deb nomlanadi va TCP three-way handshake mexanizmiga tayanadi. Bu mexanizm orqali ikki host (kompyuter) tarmoq TCP socket ulanishi parametrlari ustida kelishib oladi va undan so‘ng ma’lumot uzatishni boshlaydi.
Oddiy qilib aytganda, bir host manzil portiga SYN paketi yuboradi. Agar port ochiq bo‘lsa, server javoban SYN-ACK yuboradi va client bu javobga ACK yuboradi. Shu bilan handshake yakunlanadi va port ochiq deb baholanadi.
Buni Netcat yordamida TCP port scan qilish orqali ko‘rsatamiz — 3388-3390 portlar oralig‘ini scan qilamiz. Bu yerda biz -w opsiyasidan foydalanamiz (connection timeout, soniyalarda) va -z opsiyasini belgilaymiz (zero-I/O mode, ya’ni hech qanday ma’lumot yuborilmaydi).
kali@kali:~$ nc -nvv -w 1 -z 192.168.50.152 3388-3390
(UNKNOWN) [192.168.50.152] 3390 (?) : Connection refused
(UNKNOWN) [192.168.50.152] 3389 (ms-wbt-server) open
(UNKNOWN) [192.168.50.152] 3388 (?) : Connection refused
sent 0, rcvd 0
Listing 20 - Netcat yordamida TCP port scan
Yuqoridagi natijadan ko‘rinib turibdiki, 3389-port ochiq, 3388 va 3390 portlarga esa ulanish rad etilgan. Quyida bu scan’ning Wireshark tarmoq trafik yozuvi (capture) keltirilgan:

Figure 17: Netcat TCP scan’ining Wireshark yozuvi
Bu yozuvda (17-rasm) Netcat TCP SYN paketlarini portlarga yuborgan: 3390, 3389, va 3388 — mos ravishda paketlar 1, 3 va 7. Tizimdagi timing muammolari tufayli ular Wireshark’da tartibsiz ko‘rinishi mumkin. Server 3389-portdan SYN-ACK yuborgan (paket 4), bu esa uning ochiq ekanligini bildiradi. Boshqa portlar esa SYN-ACK o‘rniga RST-ACK yuborgan — bu rad etilgan ulanish. Keyinchalik, paket 6 orqali Netcat FIN-ACK yuborib ulanishni yopgan.
Endi TCP handshake mexanizmini tushunib oldik va TCP scan qanday ishlashini ko‘rdik. Endi UDP scanning’ni ko‘rib chiqamiz. UDP stateless protokol bo‘lib, TCP’dagi kabi three-way handshake ishlatilmaydi. Shu sababli, UDP scan boshqa usulda bajariladi.
Keling, boshqa nishonda 120-123 portlar oralig‘ida Netcat yordamida UDP scan qilamiz. Bu yerda biz hali foydalanmagan -u opsiyasidan foydalanamiz — bu UDP scan rejimi uchun.
kali@kali:~$ nc -nv -u -z -w 1 192.168.50.149 120-123
(UNKNOWN) [192.168.50.149] 123 (ntp) open
Listing 21 - Netcat yordamida UDP port scan
Wireshark yozuviga ko‘ra, UDP scan TCP scan’dan boshqacha ishlaydi: