Home Grown Red Team: จากเวิร์กสเตชันไปจนถึงตัวควบคุมโดเมนด้วย Havoc C2 และ Microsoft EDR

Nov 28 2022
ยินดีต้อนรับกลับ! ในรายการบล็อกนี้ เราจะเผชิญหน้ากับ Defender For Endpoint EDR ของ Microsoft อีกครั้งเพื่อดูว่าเราสามารถเปลี่ยนจากบริบทที่มีความสมบูรณ์ต่ำไปเป็น Domain Admin และรับการเรียกใช้โค้ดจากระยะไกลบน Domain Controller ได้หรือไม่ ในช่วง 2-3 เดือนที่ผ่านมา ฉันได้ศึกษาเทคนิคต่างๆ เพื่อดูว่าเราสามารถใช้เครื่องมือโอเพ่นซอร์สทำอะไรได้บ้างกับ EDR ที่ได้รับความนิยมสูงสุด ในบล็อกนี้ ฉันจะพูดถึงแนวคิดทั่วไปบางประการของการเข้าสู่ Domain Controller แต่ด้วยเทคนิคต่างๆ ที่ฉันได้พบ

ยินดีต้อนรับกลับ! ในรายการบล็อกนี้ เราจะเผชิญหน้ากับ Defender For Endpoint EDR ของ Microsoft อีกครั้งเพื่อดูว่าเราสามารถเปลี่ยนจากบริบทที่มีความสมบูรณ์ต่ำไปเป็น Domain Admin และรับการเรียกใช้โค้ดจากระยะไกลบน Domain Controller ได้หรือไม่

ในช่วง 2-3 เดือนที่ผ่านมา ฉันได้ศึกษาเทคนิคต่างๆ เพื่อดูว่าเราสามารถใช้เครื่องมือโอเพ่นซอร์สทำอะไรได้บ้างกับ EDR ที่ได้รับความนิยมสูงสุด

ในบล็อกนี้ ฉันจะพูดถึงแนวคิดทั่วไปบางประการของการเข้าสู่ Domain Controller แต่ด้วยเทคนิคต่างๆ ที่ฉันได้พบ

เหล่านี้รวมถึง:

  • บายพาส UAC ด้วยไบนารีที่กำหนดเอง UACME
  • การเคลื่อนไหวด้านข้างด้วย CrackMapExec และ SharpWMI.exe
  • เซสชันที่ผ่านไปยังพันธสัญญา
  • DCSync กับพันธสัญญา

ความเสียหาย C2

ฉันได้กล่าวถึงวิธีการทำให้ Havoc พร้อมใช้งานแล้ว หากคุณไม่คุ้นเคยกับมัน คุณสามารถดูโพสต์ของฉันเรื่องGet System On Windows 11 With Havoc C2

เมื่อ C2 ของฉันขึ้นไป ฉันจะสร้างเชลล์โค้ดและเรียกใช้ผ่านเครื่องมือเชลล์โค้ดของฉันเอง แฮเรียต

ตอนนี้ฉันมีไบนารี FUD แล้ว ฉันก็สามารถถ่ายโอนไปยังเวิร์กสเตชันแรกในสภาพแวดล้อม AD ของฉันได้

ตามโพสต์ก่อนหน้าของฉัน เรามีสภาพแวดล้อม AD ขนาดเล็กมากที่นี่ สำหรับวัตถุประสงค์ของเวลาและพื้นที่บล็อก เราจะเริ่มต้นด้วย DA ที่รู้จักในบริบทขนาดกลาง

ฉันโอนรากฟันเทียมของฉันไปที่ Win11-Blue.blueteam.local และได้รับบีคอนเริ่มต้นกลับมา

ตรวจสอบ EDR และดูว่าการดำเนินการเริ่มต้นผ่านไปหรือไม่

เงียบกันหมด! ตกลง! เราสามารถไปต่อได้ การใช้คำสั่ง “whoami” แบบง่ายๆ แสดงให้เราเห็นว่า Danny อยู่ในกลุ่ม DA

การเรียกใช้ SharpUp บอกเราว่าเราสามารถทำบายพาส UAC เพื่อรับสิทธิ์ของผู้ดูแลระบบได้

ไบนารี UACME แบบกำหนดเอง

ในโพสต์ก่อนหน้านี้ฉันใช้วิธี ComputerDefaults ในการรับผู้ดูแลระบบ แต่ Defender For Endpoint กำลังถูกจับอยู่ เราต้องการรับ DA โดยไม่มีการแจ้งเตือน ดังนั้นเราจะทำบางสิ่งที่อุกอาจ: วางบางอย่างลงดิสก์!

บนเครื่องพัฒนา Windows 11 ของฉัน ฉันโคลนโครงการ UACME

โคลนคอมไพล์https://github.com/hfiref0x/UACME.git

เราโหลดไฟล์ sln และเราโหลดโครงการของเราแล้ว

เมื่อคอมไพล์แล้ว ไบนารี UACME จะมีชื่อว่า Akagi ดังนั้นเราจะเริ่มปรับแต่งไฟล์ที่พบในส่วนนั้นของตัวสำรวจโซลูชัน

เมื่อขยายโครงการ เราจะเห็นหลายส่วนสำหรับไฟล์ส่วนหัว ทรัพยากร และอื่นๆ

เราสามารถเริ่มต้นกระบวนการของเราโดยการค้นหาและแทนที่อย่างรวดเร็วสำหรับสตริงทั่วไปที่พบในโครงการ

สตริงอื่นๆ ที่เราสามารถแทนที่ได้มีดังนี้:

อาคางิ

ยูเอซีเอ็ม

ยูเอซี

เพย์โหลด

หากเราพยายามสร้างวิธีแก้ปัญหาตอนนี้ มันจะล้มเหลว

ไม่พบไฟล์ไอคอนเนื่องจากเรายังไม่ได้เปลี่ยนชื่อ ดังนั้นเราต้องเปลี่ยนชื่อในโฟลเดอร์ Akagi

เมื่อเราเปลี่ยนชื่อไอคอน มันก็สร้างสำเร็จ

ตอนนี้ถ้าเราดูรายละเอียดของไบนารีที่สร้างขึ้น เราจะเห็นว่ามีคุณสมบัติในการบอกบางอย่าง

เราทำการค้นหาอย่างรวดเร็วสำหรับ APT 92 ในโครงการของเรา เราพบไฟล์ Resources.rc พร้อมคำอธิบายเหล่านี้

เมื่อผ่านไฟล์ต้นฉบับเราจะเห็นโฟลเดอร์วิธีการ

ไฟล์เมธอดเหล่านี้แต่ละไฟล์แสดงถึงการบายพาส UAC ที่แตกต่างกันที่จะใช้ในไบนารีที่คอมไพล์แล้ว หากเราทำตามแต่ละวิธี เราจะเห็นความคิดเห็นต่างๆ พร้อมชื่อวิธี เพื่อให้ผ่าน Defender และเครื่องมือ AV อื่นๆ เราจำเป็นต้องลบความคิดเห็นเหล่านี้ออกจากไฟล์เมธอดแต่ละไฟล์

การลบความคิดเห็นทั้งหมดออกจากไฟล์วิธีการอาจใช้เวลานาน แต่เราควรทำเพียงครั้งเดียวก่อนที่จะมีไบนารี่ที่ไม่ถูกดักจับโดย AV

และหลังจากที่เราลบความคิดเห็นทั้งหมดออกจากไฟล์และคอมไพล์ใหม่ เราก็จะได้ไบนารีของเรา เมื่อใช้งานกับ AntiScan.me เราพบว่าเราได้ข้ามผู้จำหน่าย AV หลายราย

เมื่อสแกนกับ Windows Defender เราพบว่าตรวจไม่พบ

รับแอดมิน

กลับมาที่ Havoc เราเพียงแค่ต้องอัปโหลดไบนารีไปยังเป้าหมายของเรา

ลองตรวจสอบกับ EDR ของ Microsoft เพื่อดูว่าเราถูกจับหรือยัง

ดูไม่เหมือนเลย ไปต่อกันเถอะ!

ด้วยไบนารี UACME ของเราบนเป้าหมาย เราจำเป็นต้องดำเนินการด้วยวิธีการของเรา คำสั่ง Powershell และเชลล์อาจทำให้เราถูกจับได้ ดังนั้นมาใช้ WMI กันเถอะ โชคดีที่ SharpWMI ช่วยให้เราสามารถเรียกใช้คำสั่งในหน่วยความจำได้

แต่ก่อนอื่น เราต้องมีวิธีการสำหรับ Windows 11

59 ดูดี เรียกวิธีการของเราด้วย SharpWMI

dotnet inline-execute /home/user/Desktop/SharpWMI.exe action=exec computername=WIN11-BLUE.blueteam.local command=”C:\Users\danny\Downloads\Acaji.exe 59 C:\Users\danny\Downloads \Inj3c13.exe”

และเราก็ได้ Admin beacon กลับมาแล้ว!

เมื่อกลับมาตรวจสอบที่ EDR เราตรวจไม่พบ

ยอดเยี่ยม! ตอนนี้เราได้พิจารณาแล้วว่าเราสามารถรับการเรียกใช้โค้ดโดยไม่ต้องเรียกใช้ EDR เราสามารถใช้วิธีเดียวกันนี้เพื่อย้ายข้ามโดเมนไปยัง DC

หมายเหตุ:แน่นอนคุณจะไม่ทำเช่นนี้ในแอปพลิเคชันในโลกแห่งความเป็นจริง เรามี DA ดังนั้นเราจึงทำได้เพียงแค่ DCsync แต่เราต้องการดูว่าเราสามารถย้ายโดยไม่เปลี่ยน EDR ได้หรือไม่

การเคลื่อนไหวด้านข้าง

ดังนั้นใน WIN11-BLUE เราจึงมีความสามารถในการอัปโหลดไบนารีของเรา แต่เราจะทำอย่างไรเมื่อเราไม่มีบีคอนบน DC

ในโพสต์ก่อนหน้านี้ ฉันได้พิสูจน์แล้วว่าเราสามารถทำได้ด้วย Powershell และงานที่กำหนดเวลาไว้ ในบทความนี้ เราจะใช้วิธีอื่น เราจะอัปโหลดไบนารีของเราไปยังเป้าหมายโดยใช้ CrackMapExec แล้วเรียกมันด้วย SharpWMI

การตั้งค่าสำหรับการโจมตีของเรา

ดังนั้นสำหรับ POC นี้ เราจะแสร้งทำเป็นอีกครั้งว่ามีเอกสารลับสุดยอดใน DC ที่เราต้องกำจัด สิ่งแรกที่เราต้องทำคือรับรหัสผ่านหรือแฮชสำหรับผู้ใช้ของเรา Danny

เนื่องจากเราเป็นผู้ดูแลระบบ เราสามารถใช้หลายวิธีในการรับแฮช แต่วิธีที่ง่ายที่สุดสำหรับฉันคือการส่งต่อเซสชันไปยัง Covenant และใช้คำสั่ง DCsync

ดังนั้นใน Covenant เราจึงตั้งค่าไฟล์ shellcode และดาวน์โหลดลงในระบบภายในของเรา

เพื่อความง่าย ฉันจะเปลี่ยนชื่อไฟล์เป็น grunt.bin แล้วฉันจะเรียกใช้ผ่าน Harriet สิ่งนี้จะเข้ารหัสเพื่อให้เราผ่าน EDR ได้

ตอนนี้เรามีไบนารีแล้ว เราสามารถใช้ Donut เพื่อเปลี่ยนกลับเป็นเชลล์โค้ดได้

และส่วนสุดท้ายคือการแทรกเข้าไปในกระบวนการปฏิบัติการความเสียหายของเรา

เมื่อฉีด shellcode สำเร็จแล้ว เราไปที่ Covenant และเรามีการตรวจสอบครั้งใหม่

มาดู EDR กัน

ไม่มีอะไรให้ดูที่นี่! พวกเราไปกันได้แล้ว!

กลับมาที่ Covenant เราสามารถใช้คำสั่ง DCsync และรับแฮชของ Danny และหลังจากนั้นไม่กี่วินาที Danny และโดเมนก็กลายเป็นเจ้าของแล้ว

ได้เลย ใจเย็นๆ เราจึงได้แสดงให้เห็นว่า เราสามารถรับแฮชของ DA ได้ แต่คุณจะทำอย่างไรกับมันเมื่อคุณมีมัน? โปรดจำไว้ว่า เป้าหมายของการดำเนินการของเราไม่ใช่เพื่อรับการควบคุมโดเมน แต่เป็นการรับเอกสารลับใน DC

ย้ายไปยังตัวควบคุมโดเมน

เรามีไฟล์ปฏิบัติการ FUD ที่เราจำเป็นต้องอัปโหลดไปยัง DC สำหรับสิ่งนี้ เราจะใช้ CrackMapExec นี่คือคำสั่งของเรา

crackmapexec smb 192.168.1.9 -u danny -H 83c4be1a3fd33a182dafc8bd3bf53d00 -d blueteam.local — ใส่ไฟล์ /home/kali/Desktop/Inj3c13.exe \\WINDOWS\\TEMP\\25N0v3.exe

เรากำลังใช้โมดูล SMB และเรามี IP ไปยังตัวควบคุมโดเมน จากนั้นเราใช้ชื่อผู้ใช้ของ danny และป้อนแฮช NTLM ของเขา เรามีโดเมนแล้วใช้ คำสั่ง “ — put-file”กับพาธไปยังไฟล์ปฏิบัติการ FUD ของเรา จากนั้นไดเร็กทอรีที่เราต้องการวางไฟล์ลงใน DC

มาลองดูกัน

และเช่นเดียวกับที่โปรแกรมปฏิบัติการของเราอยู่ใน DC! ตอนนี้เราต้องเรียกมันว่า เราสามารถใช้ SharpWMI.exe เพื่อทำสิ่งนี้ในหน่วยความจำเหมือนกับที่เราทำกับ WIN11-BLUE

และตอนนี้เรามีสัญญาณที่มีความสมบูรณ์สูงใน DC!

มาหาของขวัญกันเถอะ!

หลังจากการแจงนับเล็กน้อย เราพบว่ามันอยู่ในโฟลเดอร์ Documents ของ Danny

มาดาวน์โหลดกันเลย

ก่อนที่เราจะดู เรามาตรวจสอบกับ EDR กันก่อน

สิ่งนี้ดีสำหรับอะไร

และนี่คือของขวัญ!

ไม่เป็นไร! สรุปบทความนี้เรามาพูดถึงสิ่งที่เราทำและวิธีที่เราทำกันสักหน่อย

เราเริ่มต้นด้วยบีคอนที่มีความสมบูรณ์ต่ำและยกระดับความเป็นส่วนตัวของเราด้วยการสร้างไบนารี UACME แบบกำหนดเองที่ผ่าน Windows Defender และ Windows Defender for Endpoint

จากนั้นเราเรียกไบนารี UACME ด้วย SharpWMI.exe ในหน่วยความจำเพื่อเป็นแนวทางที่ซ่อนเร้นมากขึ้นสำหรับ Powershell หรือคำสั่งเชลล์

เมื่อ privs ของเราขยายใหญ่สุดแล้ว เราก็ส่งต่อเซสชันไปยัง Covenant เพื่อใช้คำสั่ง DCsync เพื่อรับแฮช NTLM ของ DA จากนั้นเราใช้ CrackMapExec เพื่ออัปโหลดบีคอนไปยัง DC และเรียกมันโดยใช้ SharpWMI.exe

ดังนั้น สภาพแวดล้อมนี้เป็นอย่างไรสำหรับความสำเร็จของเรา WMI ไม่ได้เปิดใช้งานตามค่าเริ่มต้นสำหรับตัวควบคุมโดเมน เซิร์ฟเวอร์ Windows หรือเวิร์กสเตชัน Windows 11

อย่างไรก็ตาม ในสภาพแวดล้อมขององค์กรสมัยใหม่ เครื่องเหล่านี้ส่วนใหญ่จะเปิด WMI เพื่อให้ผู้ดูแลระบบมีเวลาแก้ไขปัญหาได้ง่ายขึ้น เรายังเริ่มต้นการเดินทางด้วยบัญชีของ DA แต่นั่นเป็นเพียงการทำให้สะดวกขึ้นเล็กน้อยสำหรับการเขียน

สิ่งสำคัญคือต้องเข้าใจว่าเราไม่ได้ติดตั้ง AV อื่นใดในระบบ หากคุณจำได้ BitDefender เห็นไบนารี UACME ของเราว่าเป็นอันตราย ดังนั้นโปรดใช้ความระมัดระวังเมื่อใช้กับเพนเทสจริง

หากคุณสนุกกับการเขียนบทความนี้และต้องการดูว่าฉันกำลังทำอะไรอยู่ โปรดติดตามฉันที่นี่หรือบน Twitter @assume_breach