NetExec All-in-One Tool เครื่องมือเดียวครบจบ

สวัสดีเหล่านักอ่านและผู้หลงใหลในศิลปะแห่งการแฮกทุกท่าน วันนี้เราจะมาพูดถึงเครื่องมือที่หลายคนอาจเคยได้ยินชื่อกันมาบ้างแล้วนั่นก็คือ NetExec เครื่องมือนี้ถือเป็นทายาทรุ่นใหม่ที่พัฒนาต่อยอดมาจาก CrackMapExec หรือที่หลายคนยกให้เป็น “รุ่นคุณปู่” ของสาย Red Team ในบทความนี้ เราจะพาไปทำความรู้จักกับ Module ที่น่าสนใจของ NetExec พร้อมสาธิตการใช้งานจริงกันครับ

NetExec คืออะไร
สำหรับคนที่ยังไม่รู้จัก NetExec มันคือเครื่องมือ Post-exploitation และ Lateral Movement ที่ออกแบบมาสำหรับเจาะระบบเครือข่ายภายใน (Internal Network) โดยเฉพาะ ซึ่งก็ยังมีการอัปเดทมาเรื่อย ๆ จนถึงปัจจุบัน และเพื่อน ๆ สามารถเข้าไปดูรายละเอียดหรือลองใช้งานได้ที่ Github (https://github.com/Pennyw0rth/NetExec)
NetExec สามารถทำงานได้หลายอย่างตั้งแต่
· สแกนและเก็บข้อมูลระบบในเครือข่าย
- เราสามารถสั่ง NetExec ให้สแกนหาคอมพิวเตอร์ที่เชื่อมต่อกับเครือข่ายเดียวกัน พร้อมแสดงสถานะและข้อมูลเบื้องต้น เช่น ระบบปฏิบัติการ
· ตรวจสอบและยืนยัน Credential
- NetExec ช่วยทดสอบว่า Username กับ Password ที่เรามีใช้งานได้หรือไม่บนเครื่องเป้าหมาย โดยไม่ต้องนั่งลองทีละเครื่องเอง
· ดึงข้อมูลสำคัญจากเครื่องเป้าหมาย
- อย่างเช่น รายชื่อผู้ใช้ที่กำลังล็อกอินอยู่, รายการโปรแกรมแอนตี้ไวรัสที่ติดตั้ง หรือข้อมูลใน Active Directory
· รันคำสั่งระยะไกล (Remote Command Execution)
- สามารถรันคำสั่งบนเครื่องเป้าหมายผ่านทาง SMB หรือ WinRM ได้ทันที เพื่อให้เราควบคุมเครื่องได้เหมือนนั่งอยู่หน้าคอมพิวเตอร์เครื่องนั้น
· การทำ Lateral Movement ไปยังเครื่องอื่นใน Domain
- เมื่อตรวจสอบแล้วว่าเครื่องไหนรหัสผ่านใช้งานได้ ก็สามารถใช้ NetExec เพื่อเข้าไปควบคุมเครื่องอื่น ๆ ในเครือข่ายได้
เดิมทีแล้ว NetExec พัฒนาต่อยอดมาจาก CrackMapExec (CME) ที่เป็นเครื่องมือดังในสาย Red Team แต่ได้มีการปรับโครงสร้างโค้ดใหม่ให้ เบา, เร็ว, และรองรับโมดูลเสริมได้ง่ายกว่า รวมถึงแก้ปัญหาที่ CME เคยมีเรื่อง Dependency เก่า และการดูแลโค้ดที่ซับซ้อนทำให้ยากต่อการพัฒนาและบำรุงรักษา
NetExec vs CrackMapExec แบบคร่าวๆ
NetExec มีการรองรับ Protocol มากกว่า จากตารางเปรียบเทียบจะเห็นว่า NetExec รองรับทุก protocol ที่ CME รองรับ และเพิ่มเติมอีก 3 Protocol:
· NFS (Network File System)
· WMI (Windows Management Instrumentation)
· VNC (Virtual Network Computing)

จากการเพิ่ม Protocol เข้ามาใหม่ทำให้เราสามารถ Post-exploitation และ Lateral Movement ได้มากขึ้นตามไปด้วย นอกจากนี้ยังมีการปรับปรุงประสิทธิภาพในการทำงานแบบ Multi-threading และถูกเขียนใหม่ด้วยโครงสร้างที่ดีกว่า ทำให้ง่ายต่อการพัฒนาและบำรุงรักษานั้นเอง
ตัวอย่างคำสั่ง NetExec
NetExec รองรับการเรียกใช้งานผ่านคำสั่งย่อ nxc ซึ่งจะช่วยให้ผู้ใช้สามารถพิมพ์คำสั่งได้สั้นลง และทำงานได้สะดวกมากขึ้นนั้นเอง
# SMB enumeration
nxc smb 192.168.1.0/24 -u username -p password
# WMI command execution
nxc wmi 192.168.1.100 -u admin -p password -x “whoami”
# NFS enumeration
nxc nfs 192.168.1.0/24 - shares
# LDAP query
nxc ldap dc01.domain.com -u user -p pass - users
ภาพตัวอย่างการใช้งาน

การใช้งานเพื่อดึงข้อมูล Domain
การที่เราจะหาทางโจมตี Domain คงจะหนีไม่พ้น Module พื้นฐานอย่าง bloodhound, kerberoasting และ asreproast ซึ่งจะช่วยให้เราดึงข้อมูลได้อย่างรวดเร็วและง่ายดาย ยกตัวอย่างการใช้งานตามภาพด้านล่าง
nxc ldap 192.168.117.200 -u usern -p ‘s0met1me.’ -d ‘ASGARD.LOCAL’ — bloodhound -c All

ถ้าหากเราใช้ — bloodhound ดึงข้อมูลสำเร็จเครื่องมือ NetExec จะแดงที่อยู่ของไฟล์ ZIP เราก็เพียงนำไฟล์นี้ไปเปิดต่อในโปรแกรม BloodHound ได้เลยครับ

จากนั้นเมื่อเปิดดูข้อมูลแล้วเราพบว่าผู้ใช้ชื่อ lolipop ถูกตั้งค่าให้เป็น AS-REP Roastable เราก็สามารถใช้ Module asreproast ดึงค่า Hash ของผู้ใช้นี้ออกมา แล้วนำไปใช้กับเครื่องมือ crack รหัสผ่านต่อได้ทันที
ต่อมาเราสามารถใช้คำสั่ง –asreproast เพื่อดึงข้อมูล Hash ของผู้ใช้งานที่ถูกตั้งค่า AS-REP Roastable ได้
nxc ldap 192.168.117.200 -u usern -p ‘s0met1me.’ -d ‘ASGARD.LOCAL’ — asreproast output.txt

ที่เหลือเราสามารถใช้เครื่องมืออย่าง Hashcat หรือ John the ripper ในการ Crack รหัสผ่านได้เลยครับ
Module ที่พูดเขียนชอบใช้งาน
ในขั้นตอน Post-exploitation หลังจากที่เราสามารถยึดเครื่องเป้าหมายได้แล้วนั้น เป้าหมายต่อไปย่อมเป็นการหาวิธีโจมตีต่อเพื่อเข้าถึงเครื่องอื่นหรือยึดครอง Domain ซึ่งในสถานการณ์แบบนี้ ผู้เขียนมักเลือกใช้โมดูลบางตัวเป็นพิเศษเพื่อช่วยเก็บข้อมูลสำคัญและโจมตีเครื่องถัดไป ยกตัวอย่างเช่น หากเราโจมตีเครื่องเซิร์ฟเวอร์จนได้รับสิทธิ์ Administrator เรียบร้อยแล้ว เราสามารถใช้คำสั่ง — loggedon-users เพื่อดูว่ามี Active Session ของผู้ใช้หรือบัญชีใดบ้างที่กำลังเชื่อมต่ออยู่กับเครื่องนั้นได้

จากการใช้คำสั่ง — loggedon-users ตามภาพ จะเห็นได้ว่าเครื่องเซิร์ฟเวอร์ SRV1 มีการล็อกอินหรือมี Active Session ของผู้ใช้ ASGARD\Administrator อยู่ ซึ่งจากชื่อบัญชีนี้ก็พอจะเดาได้ไม่ยากว่าเป็น Domain Admin ของระบบ ซึ่งถ้าเราสามารถรันคำสั่งหรือเข้าถึงสิทธิ์ของผู้ใช้นี้ได้ ก็เท่ากับว่าเราสามารถยึดโดเมนทั้งหมดได้ทันที

แล้วถ้าเราต้องการใช้งาน Active Session ที่เจออยู่ล่ะ… ทำได้ไหม? คำตอบคือ ทำได้แน่นอน โดย NetExec มีโมดูลที่ช่วยให้เราสามารถสั่งรันคำสั่งบนเซสชันของผู้ใช้นั้นได้ทันที เช่น ในกรณีนี้เราสามารถใช้โมดูล schtask_as (อยู่ในหมวด Protocol SMB) เพื่อสวมสิทธิ์และรันคำสั่งเป็น ASGARD\Administrator ได้

นอกจากนี้ NetExec ยังมีโมดูลอีกมากมายที่น่าสนใจรอให้ลองใช้งาน เพื่อน ๆ สามารถเรียกดูรายการโมดูลทั้งหมดพร้อมคำอธิบายได้ง่าย ๆ ด้วยคำสั่ง
nxc <จากที่ลองใช้งาน NetExec ในหลาย ๆ โมดูล ผู้เขียนก็ลุ้นอยากให้เพิ่มโมดูลช่วยโจมตีท่า ESC (Enterprise Session Certificate) แบบอัตโนมัติ เพราะจะทำให้การโจมตี Certificate ง่ายและเร็วขึ้น แถมยังช่วยให้เรายึด Domain Controller ได้ครบจบในเครื่องมือเดียวเลย
เป็นยังไงกันบ้างครับกับบทความของ NetExec ที่ผมเอามาฝากในวันนี้ หวังว่าจะช่วยให้เพื่อน ๆ เห็นภาพว่าเครื่องมือนี้ไม่ได้มีดีแค่การสแกนหรือยิง credential แต่ยังสามารถต่อยอดทำ Post-exploitation และ Lateral Movement ได้หลากหลายภายในตัวเดียว สุดท้ายนี้ฝากกดติดตามเพจเพื่อติดตามข่าวสารกันด้วยนะครับ