Better Security & Port Scanning tool (2)

Datafarm
5 min readMay 3, 2023

สวัสดีค่ะ สำหรับบทความในวันนี้จะมาแนะนำเครื่องมือพื้นฐานการ Scanning ที่เราใช้ Scan Network และเป็นเครื่องมือใกล้ตัวกันค่ะ

ซึ่งทุกครั้งก่อนที่เราต้องการที่จะเริ่มตรวจสอบระบบ IT หรืออุปกรณ์ IP ต่าง ๆ สิ่งที่เราต้องทำ คือการทำการ Recon เพื่อรวบรวมข้อมูลเบื้องต้นของอุปกรณ์เหล่านั้น ว่ามีอะไรเปิดใช้งานอยู่ เช่น whois ping nslookup เมื่อเรารู้ข้อมูลเบี้องต้น ขั้นตอนถัดมาคือการ Scanning

โดยจากบทความก่อนหน้าได้อธิบายเกี่ยวกับการทำงานของ NMAP, การเรียกใช้ NMAP ในการสแกนระบบเป้าหมายเพื่อค้นหา Service ต่าง ๆ และหมายเลขพอร์ตที่เปิดใช้งาน โดยสามารถช่วยให้เราตรวจสอบความปลอดภัยระบบทั้งในรูปแบบ VA, Pentest, Security Audit และ Fingerprinting OS ได้ด้วย ซึ่งจะเน้นไปที่ Scanning Network ต่าง ๆ ได้ และจบลงด้วยเรื่อง NSE Scripting Engine (.nse) ที่ผู้ใช้งานสามารถเขียน Script ได้เอง โดยภาษา Lua

ดังนั้น วันนี้จึงอยากจะแนะนำ NSE Script เพิ่มเติม เพื่อช่วยในการทำ Reconnaissance ระบบง่าย ๆ กันค่ะ ซึ่ง NSE Script จะเป็น Standard ได้จากการ Install NMAP อยู่แล้ว สามารถตรวจสอบ NSE Script โดยไปที่ NMAP file locate ได้ที่คำสั่ง

> locate *.nse

NSE Script ก็จะเรียกใช้ผ่านคำสั่งแฟล็ก — — script ต่าง ๆ แบ่งกลุ่มเป็นเช่น authentication (auth), การค้นหา hosts (broadcast), การโจมตีด้วยวิธีการ Brute force รวมทั้งคาดเดา credentials (brute), การค้นหา network (discovery), denial of service (dos), Exploiting vulnerability (exploit) เป็นต้น จะเห็นว่า NSE Script มีความหลากหลาย สามารถใช้ได้ทั้งในรูปแบบของเป้าหมายที่เป็น Network และ แอปพลิเคชัน จะขอยกตัวอย่าง 5 คำสั่งที่สามารถใช้งานได้ง่ายค่ะ

การค้นหาไฟล์หรือ Folder บน Web Server

ในการตรวจสอบระบบหนึ่งนั้น Task ที่เราจะใช้ต้องมีเครื่องมือในการทำคือ การค้นหาไฟล์และ Directory ที่ Host บนเว็บเซิร์ฟเวอร์ ซึ่งก็จะมีเครื่องมือหลายที่สามารถทำได้ แต่ในฝั่งของ NSE Http-emun Script เองก็มีฐานข้อมูลที่ครอบคลุมไฟล์ใน Database เช่น README, Dump DB, Config Backups, Directory และสามารถระบุเวอร์ชันของเว็บแอปพลิเคชันได้โดยใช้คำสั่ง

> nmap — script http-enum -sV <target>

|-sV — script http-enum บอกให้ Nmap เริ่มต้นตรวจสอบ http-enum หากพบเว็บเซิร์ฟเวอร์ ผลที่ได้คือพบไฟล์บน Web Server โดย http-enum script จะมีการเพิ่มข้อมูล fingerprints ล่าสุดฐานข้อมูลที่ไปเรียก

การตรวจสอบ HTTP-header

สำหรับการตรวจสอบ HTTP-header โดยใช้คำสั่ง http-headers.nse จะเช็กในส่วน HTTP HEADER สำหรับโฟลเดอร์รูท (“/”) ของเว็บเซิร์ฟเวอร์ และแสดงค่า HTTP Header กลับมา

> nmap — script http-headers <target>

การค้นหา Hostname ด้วยการ Bruteforce DNS

การหา Sub-domain โดยใช้ NSE Script ในการตรวจสอบ Sub-domain ภายใน Domain ขององค์กรของเราช่วยให้เราอาจจะพบ Target แปลก ๆ ในการตรวจสอบระบบ บางครั้ง Hostname ที่ค้นพบอาจเป็นแบบ Virtual Host บนเซิร์ฟเวอร์เว็บเดียวหรือโฮสต์ที่แตกต่างกันบน IP Address แปลก ๆ ต่าง ๆ สามารถทดสอบด้วยคำสั่ง

> nmap -sn — script dns-brute <target>

|-sn — script dns-brute จะทำการสแกน dns-brute ไม่ต้องเช็ก port scanning phase (-sn) NSE script โดยพยายามค้นหา Hostname จากการ Bruteforce ที่ DNS ของเป้าหมาย Script จะวนซ้ำในรายการ word lists และตรวจสอบรายการ DNS ว่ามีอยู่หรือไม่

> nmap -p 80 — script dns-brute.nse <target>

Default ข้อมูล wordlist นี้จะถูก hardcode ใน NSE file ที่เราไปเรียกใช้พาธ /scripts/dns-brute.nse หากต้องการจะเพิ่ม Dictionary file สามารถเรียกใช้คำสั่ง dns-brute.hostlist

> nmap -sn — script dns-brute — script-args dns-brute.hostlist=wordlist.txt <target>

หรือว่าต้องการปรับจำนวนของ NSE threads สามารถเรียกใช้คำสั่ง dns-brute.hostlist

> nmap -sn — script dns-brute — script-args dns-brute.threads=8 <target>

สามารถระบุ DNS Service ที่ queried — dns-servers <serv1[,serv2],…>

> nmap — dns-servers 8.8.8.8,8.8.4.4 scanme.nmap.orgs

Scanning for Vulnerabilities

>Nmap -p<rang> — script=vuln <IP target>

ผลลัพธ์แสดงให้เห็นได้ว่า Server มีปัจจัยเสี่ยงสูง

>Nmap -p<rang> -sV — script=vuln -t5 — version-intensity 9 — Pn -sS -oX <file name.xml> <IP target>

|-p<ranges> ระบุ port

|-sV ตรวจสอบ Service Version

| — script=vuln ตรวจสอบหาช่องโหว่ของ Service ที่ทำงานอยู่บนระบบเป้าหมาย

|-t<0–5> สามารถระบุ Timing และ Performance

|-Pn ต้องการข้ามการ ping

|-sS TCP SYN Scan

|-oX Output XML File เพื่อใช้ในการเจาะระบบอื่น ๆ ต่อไป

ผลที่ได้ Export file ผลออกมา พบช่องโหว่ phpMyAdmin grab_globals.lib.php subform Parameter Traversal Local File Inclusion อยู่ใน Likely Vulnerable

Traceroute Geolocation

สามารถใช้ตรวจสอบเส้นทางเครือข่ายระหว่างต้นทางและปลายทาง และเราสามารถรวมเข้ากับฟังก์ชันการสืบค้นกลับของ Nmap กับ traceroute เพื่อรับข้อมูลตำแหน่ง ใช้เช็กเส้นทางเป้าหมายโดยใช้คำสั่ง

> nmap — script http-enum -sV <target>

สามารถ Export KML format และวาดผลใน Google Map หรือ Google Earth ได้ โดยใช้คำสั่ง

>nmap — traceroute — script traceroute-geolocation — script-args traceroute-geolocation.kmlfile=<output file> <target>

ผลที่ได้ Traceroute Result Map กับ Google Map ได้ด้วย

ถัดไปจะแนะนำคำสั่งทั่วไป ที่ไม่ได้เรียกใช้ NSE Script แต่นิยมใช้ในการตรวจสอบหาระบบที่กำลังทำงาน (Finding online hosts) เนื่องจากการเช็ก Live Host IP ที่ On ในวง Lan ถ้า Ping แบบ Script เราจะพบว่าค่อนข้างช้า และอ่านเข้าใจยาก ซึ่ง NMAP เป็นอีกทางจะช่วยให้เราตรวจสอบได้ง่ายมากขึ้น

>Nmap -sn <IP Target>

|-sn ปิดการทำงาน Port Scanning ค้นหาแค่ Host ที่ออนไลน์หรือ enabled โดยทำการ ping ส่งแพ็กเก็ต TCP SYN ไปยังพอร์ต 443 แพ็กเก็ต TCP ACK ไปยังพอร์ต 80 และ ICMP echo และขอ timestamp หากมีการใช้งาน

ผลลัพธ์แสดงให้เห็นได้ว่าการสแกน Ping ใน Nmap สามารถแสดงระบุ MAC Address ของปลายทางรวมด้วยถ้าสแกนสิทธิ์ root ของ Local Ethernet นั้น วิธีนี้เหมาะกับการจำกัดกลุ่มเป้าหมายในกรณีที่ทำการตรวจสอบบนเครือข่ายขนาดใหญ่ เนื่องจากมีการทำงานที่รวดเร็ว

สุดท้ายอยากจะแนะนำในส่วนของ GUI NMAP สำหรับใครที่อาจจะเปิด NMAP ผ่าน CMD หรือ terminal NMAP ไม่ถนัด NMAP เองก็มี GUI ชื่อว่า ZeNmap ด้วย Download ได้ที่ https://nmap.org/zenmap/ เมื่อเปิดโปรแกรม Zenmap ขึ้นมาจะพบกับหน้าต่างจะที่มีการแบ่งผลการสแกนของ Host ต่าง ๆ ไว้ มีสีบอกสถานะ UP/DOWN แต่ละ Post ที่เปิดอยู่ นับว่าเป็น GUI ที่ช่วยในเราสามารถอ่านผลการสแกนได้ง่ายขึ้น และช่วยลดความตาลายด้วยนะคะ

Reference

--

--