🔴 Red Team 101 — บทที่ 2: Scanning & Enumeration เมื่อ Recon พอ ก็ต้องสำรวจลึกขึ้น

⚠️ คำเตือนกฎหมาย — อ่านก่อนอ่านบทความ
บทความนี้เขียนขึ้นเพื่อ การศึกษาและการป้องกัน เท่านั้น — ไม่ส่งเสริมให้ฝ่าฝืนกฎหมาย
พรบ.คอมพิวเตอร์ พ.ศ. 2550 ที่ต้องรู้:
- มาตรา 10: เข้าถึงระบบคอมพิวเตอร์โดยไม่ได้รับอนุญาต — โทษจำคุกไม่เกิน 2 ปี ปรับไม่เกิน 40,000 บาท
- มาตรา 10/1: เข้าถึงข้อมูลความลับ — โทษจำคุกไม่เกิน 5 ปี ปรับไม่เกิน 100,000 บาท
- มาตรา 11: ขัดขวาง/แทรกแซงระบบ — โทษจำคุกไม่เกิน 5 ปี
- มาตรา 14: นำข้อมูลมิชอบเข้าสู่ระบบ — โทษจำคุกไม่เกิน 5 ปี
กฎทั่วไป: ต้องได้รับอนุญาต (Written Authorization/Scope) ก่อนทดสอบระบบใดๆ — แม้จะเป็นเว็บของตัวเองก็ตาม สำหรับ Bug Bounty ต้องอยู่ใน scope ที่บริษัทกำหนด
🎯 Scanning & Enumeration ต่างจาก Recon ยังไง?
ในบทที่ 1 เราเรียนเรื่อง Reconnaissance — การเก็บข้อมูลจากแหล่งสาธารณะ
ในบทนี้ เราเรียน Scanning & Enumeration — การสำรวจระบบโดยตรงเพื่อหา:
- Port ที่เปิดอยู่
- Service ที่ทำงานอยู่
- Version ของ software
- ช่องโหที่อาจเป็นจุดเข้าถึง
🔧 Phase 1: Network Scanning
Network Scanning คือการสำรวจ network ของเป้าหมายเพื่อหา hosts, ports, services ที่เปิดอยู่
1. Ping Sweep — หา Host ที่ Online
ก่อนจะ scan ports ต้องรู้ก่อนว่า host ไหน online:
# Ping sweep ด้วย nmap nmap -sn 192.168.1.0/24 # Ping sweep ด้วย fping fping -a -g 192.168.1.0/24 2>/dev/null # Ping sweep ด้วย masscan (เร็วมาก) masscan 192.168.1.0/24 -p0 --rate=1000
อย่าลืม: การ ping ระบบที่ไม่ได้รับอนุญาต อาจถือเป็นการ "เข้าถึงโดยไม่ชอบ" ตาม ม.10 — ทำเฉพาะระบบที่ได้รับอนุญาตเท่านั้น
2. Port Scanning — หา Port ที่เปิด
nmap เป็น tool หลักสำหรับ port scanning:
# SYN Scan (Stealth — ไม่ทำ full TCP handshake) sudo nmap -sS target.com # TCP Connect Scan (ไม่ต้อง root แต่ไม่ stealth) nmap -sT target.com # UDP Scan (สำหรับ UDP services เช่น DNS, SNMP) sudo nmap -sU target.com # Scan specific ports nmap -p 21,22,25,80,443,3306 target.com # Scan all 65535 ports nmap -p- target.com --min-rate=1000
Port ที่ควรรู้:
| Port | Service | ควรเปิดไหม? |
|---|---|---|
| 21 | FTP | ⚠️ ไม่ควร — ใช้ SFTP แทน |
| 22 | SSH | ✅ ถ้าจำเป็น — ใช้ key-based auth |
| 25 | SMTP | ⚠️ เฉพาะ mail server |
| 53 | DNS | ⚠️ เฉพาะ DNS server |
| 80 | HTTP | ✅ redirect ไป 443 |
| 443 | HTTPS | ✅ ควรเปิด |
| 3306 | MySQL | ❌ ไม่ควรเปิดสู่ public |
| 3389 | RDP | ❌ ไม่ควรเปิดสู่ public |
⚠️ ฝั่ง White Hat — สิ่งที่ต้องทำ: ปิด port ที่ไม่จำเป็น, ใช้ firewall กรอง, ใช้ VPN สำหรับ internal services
3. Service Version Detection
เมื่อรู้ว่า port ไหนเปิด ก็ต้องดูว่า service version อะไร — เพราะ version เก่าอาจมี CVE ที่รู้จัก:
# Detect service version nmap -sV target.com # Aggressive version detection nmap -sV --version-intensity 9 target.com # OS detection nmap -O target.com # Combined scan (most common) nmap -sV -sC -O target.com
ทำไม version สำคังมาก?
- OpenSSH 7.2 — มี CVE ที่รู้จัก
- Apache 2.4.49 — มี path traversal (CVE-2021-41773)
- Nginx 1.x — มี vulnerable configurations
- WordPress 5.x — มี plugin vulnerabilities มากมาย
เมื่อรู้ version ก็ค้นหา CVE ได้ที่ NVD, Exploit-DB, MITRE CVE
📋 Phase 2: Enumeration — ลงลึกแต่ละ Service
Enumeration คือการ ดึงข้อมูลจาก service ที่เปิดอยู่ — เช่น users, shares, DNS records, SNMP data
1. DNS Enumeration
# Zone transfer (ถ้า DNS misconfigured) dig axfr @ns1.target.com target.com # DNS enumeration ด้วย dnsenum dnsenum target.com # DNS enumeration ด้วย fierce fierce --domain target.com # Reverse DNS lookup dig -x 192.168.1.1
2. SNMP Enumeration
SNMP (Simple Network Management Protocol) — ถ้าเปิด port 161 UDP อาจดึงข้อมูลได้:
# SNMP enumeration snmpwalk -v2c -c public target.com # SNMP with onesixtyone onesixtyone -c /usr/share/doc/onesixtyone/dict.txt target.com # SNMP enumeration ด้วย snmp-check snmp-check target.com
ข้อมูลที่อาจได้จาก SNMP: OS version, running processes, network interfaces, installed software, uptime — ข้อมูลที่ Red Team ชอบมาก
3. SMB Enumeration
SMB (Server Message Block) — port 445 — พบบ่อยใน Windows networks:
# SMB share enumeration smbclient -L //target.com -N # SMB enumeration ด้วย enum4linux enum4linux -a target.com # SMB enumeration ด้วย smbmap smbmap -H target.com -u guest # SMB enumeration ด้วย crackmapexec crackmapexec smb target.com -u '' -p '' --shares
4. LDAP Enumeration
LDAP (port 389) — ใน Active Directory environments:
# LDAP enumeration ldapsearch -x -H ldap://target.com -b 'dc=target,dc=com' # LDAP enumeration ด้วย windapsearch python3 windapsearch.py -d target.com --dc-ip 192.168.1.1 -U
🧠 มุมมอง Red Team ต่อ Scanning
สิ่งที่ White Hat มองไม่เห็น — Red Team เห็น:
ตัวอย่าง: เจอ port 3306 เปิดอยู่ — คนปกติคิด "MySQL เปิดอยู่นะ" แต่ Red Team คิด:
- MySQL version อะไร? ถ้าเก่าอาจ brute force ได้
- รองรับ remote access ไหม?
- Default credentials ไหม? (root/root, root/empty)
- มี database อะไรบ้าง? มีข้อมูล sensitive ไหม?
- MySQL user มี FILE privilege ไหม? (อ่านไฟล์จาก server ได้)
ทุก port ที่เปิด = ทุกช่องที่อาจเป็นทางเข้า
🛡️ ฝั่ง White Hat — ป้องกัน Scanning & Enumeration
- Firewall Rules — อนุญาตเฉพาะ port ที่จำเป็น, block ที่เหลือ
- Disable Unnecessary Services — ถ้าไม่ใช่ MySQL ก็ปิด 3306, ถ้าไม่ใช่ SMB ก็ปิด 445
- SNMP Hardening — เปลี่ยน community string จาก "public", ใช้ SNMPv3
- DNS Hardening — ปิด zone transfer สู่ public, ใช้ DNSSEC
- Port Knocking — ซ่อน services ด้วย port knocking sequence
- IDS/IPS — ติดตั้ง Intrusion Detection/Prevention System เช่น Snort, Suricata
- Rate Limiting — จำกัด connection rate detect port scanning
📝 สรุปบทที่ 2
- Network Scanning — Ping Sweep, Port Scanning (SYN, TCP, UDP)
- Service Version Detection — nmap -sV, ค้นหา CVE
- Enumeration — DNS, SNMP, SMB, LDAP
- ทุก port ที่เปิด = ทุกช่องที่อาจเป็นทางเข้า
- กฎสำคัญ: ทำเฉพาะระบบที่ได้รับอนุญาต — ไม่งั้น ม.10 รอคุณอยู่
บทต่อไป: 🔴 Red Team 101 — บทที่ 3: Vulnerability Assessment เมื่อ Scan เสร็จ ก็ต้องวิเคราะห์ช่องโหว่
🦉 "การสำรวจที่ดีคือครึ่งหนึ่งของชัยชนะ — อีกครึ่งคือรู้จักตัวเองดีพอที่จะไม่แพ้"