Repo นี้มีวัตถุประสงค์เพื่อให้บริการสองวัตถุประสงค์ ขั้นแรก ให้ชุดคำสั่งการรับรู้สถานการณ์พื้นฐานที่ดีที่ใช้ใน Beacon Object File (BOF) สิ่งนี้ทำให้คุณสามารถตรวจสอบโฮสต์ได้ก่อนที่คุณจะเริ่มดำเนินการคำสั่งที่อาจรุกรานมากขึ้น
เป้าหมายที่ใหญ่กว่าคือการจัดเตรียมตัวอย่างโค้ดและขั้นตอนการทำงานให้กับผู้อื่นเพื่อเริ่มสร้าง BOF มากขึ้น เป็นเอกสารที่แสดงร่วมกับโพสต์บล็อกที่ทำที่นี่: https://www.trustedsec.com/blog/a-developers-introduction-to-beacon-object-files/
หากคุณต้องการใช้เวิร์กโฟลว์เดียวกันกับที่เก็บนี้ ขั้นตอนพื้นฐานของคุณจะเป็นดังนี้:
ตามความเป็นจริง สิ่งนี้สามารถบีบอัดเป็นสคริปต์ตัวช่วยได้ แต่ขั้นตอนเหล่านั้นไม่ได้ดำเนินการเพื่อความพยายามนี้
คำสั่ง | การใช้งาน | หมายเหตุ |
---|---|---|
adcs_enum | adcs_enum | ระบุ CA และเทมเพลตใน AD โดยใช้ฟังก์ชัน Win32 |
adcs_enum_com | adcs_enum_com | ระบุ CA และเทมเพลตใน AD โดยใช้วัตถุ ICertConfig COM |
adcs_enum_com2 | adcs_enum_com2 | ระบุ CA และแม่แบบในโฆษณาโดยใช้วัตถุ IX509PolicyServerListManager COM |
adv_audit_policies | adv_audit_policies | รับนโยบายการตรวจสอบความปลอดภัยขั้นสูง |
เออาร์พี | เออาร์พี | แสดงรายการตาราง ARP |
cacls | cacls [เส้นทางไฟล์] | แสดงรายการสิทธิ์ผู้ใช้สำหรับไฟล์ที่ระบุ รองรับไวด์การ์ด |
ผบ | dir [ไดเรกทอรี] [/s] | แสดงรายการไฟล์ในไดเร็กทอรี รองรับไวด์การ์ด (เช่น "C:WindowsS*") ซึ่งต่างจากคำสั่ง CobaltStrike ls |
ไดรเวอร์ | ไดรเวอร์ | ระบุบริการที่ติดตั้ง Imagepaths เพื่อตรวจสอบใบรับรองการลงนามกับผู้จำหน่าย AV/EDR ที่รู้จัก |
enum_filter_driver | enum_filter_driver [ตัวเลือก: คอมพิวเตอร์] | ระบุไดรเวอร์ตัวกรอง |
enumLocalSessions | enumLocalSessions | ระบุเซสชันผู้ใช้ที่แนบมาในปัจจุบันทั้งภายในเครื่องและผ่าน RDP |
สิ่งแวดล้อม | สิ่งแวดล้อม | แสดงรายการตัวแปรสภาพแวดล้อมกระบวนการ |
ค้นหา LoadedModule | findLoadedModule [ส่วนโมดูล] [ตัวเลือก: procnamepart] | ค้นหากระบวนการที่ *modulepart* ถูกโหลดเข้าไป โดยอาจเลือกค้นหาเพียง *procnamepart* |
get_password_policy | get_password_policy [ชื่อโฮสต์] | รับนโยบายรหัสผ่านและการล็อกที่กำหนดค่าของเซิร์ฟเวอร์เป้าหมายหรือโดเมน |
ไอพีคอนฟิก | ไอพีคอนฟิก | แสดงรายการที่อยู่ IPv4 ชื่อโฮสต์ และเซิร์ฟเวอร์ DNS |
ldapsearch | ldapsearch [แบบสอบถาม] [ตัวเลือก: คุณลักษณะ] [ตัวเลือก: results_limit] [ตัวเลือก: ชื่อโฮสต์ DC หรือ IP] [ตัวเลือก: ชื่อที่แตกต่าง] | ดำเนินการค้นหา LDAP (หมายเหตุ: ระบุ *,ntsecuritydescriptor เป็นพารามิเตอร์แอตทริบิวต์ หากคุณต้องการให้แอตทริบิวต์ทั้งหมด + ACL ที่เข้ารหัส base64 ของออบเจ็กต์ ซึ่งสามารถแก้ไขได้โดยใช้ BOFHound อาจแบ่งการแบ่งหน้าได้ แม้ว่าทุกอย่างจะดูดีในระหว่างการทดสอบก็ตาม) |
รายการ DNS | รายการ DNS | แสดงรายการแคช DNS พยายามสอบถามและแก้ไขแต่ละรายการ |
list_firewall_rules | list_firewall_rules | แสดงรายการกฎไฟร์วอลล์ Windows |
รายการ mods | listmods [ตัวเลือก: pid] | แสดงรายการโมดูลกระบวนการ (DLL) กำหนดเป้าหมายกระบวนการปัจจุบันหาก PID ว่างเปล่า ส่วนเสริมของไดรเวอร์เพื่อตรวจสอบว่ากระบวนการของเราถูกแทรกโดย AV/EDR หรือไม่ |
รายการท่อ | รายการท่อ | รายการชื่อไปป์ |
สถานที่ | สถานที่ | แสดงรายการภาษาของระบบ, รหัสสถานที่, วันที่, เวลา และประเทศ |
netGroupList | netGroupList [ตัวเลือก: โดเมน] | รายชื่อกลุ่มจากโดเมนเริ่มต้นหรือที่ระบุ |
netGroupListMembers | netGroupListMembers [ชื่อกลุ่ม] [ตัวเลือก: โดเมน] | สมาชิกกลุ่มรายการจากโดเมนเริ่มต้นหรือที่ระบุ |
netLocalGroupList | netLocalGroupList [ตัวเลือก: เซิร์ฟเวอร์] | แสดงรายการกลุ่มท้องถิ่นจากคอมพิวเตอร์ท้องถิ่นหรือที่ระบุ |
netLocalGroupListMembers | netLocalGroupListMembers [ชื่อกลุ่ม] [ตัวเลือก: เซิร์ฟเวอร์] | แสดงรายการกลุ่มท้องถิ่นจากคอมพิวเตอร์ท้องถิ่นหรือที่ระบุ |
netLocalGroupListMembers2 | netLocalGroupListMembers2 [ตัวเลือก: ชื่อกลุ่ม] [ตัวเลือก: เซิร์ฟเวอร์] | เวอร์ชันแก้ไขของ netLocalGroupListMembers ที่รองรับ BOFHound |
netloggedon | netloggedon [ชื่อโฮสต์] | ส่งคืนผู้ใช้ที่เข้าสู่ระบบในคอมพิวเตอร์ท้องถิ่นหรือคอมพิวเตอร์ระยะไกล |
netloggedon2 | netloggedon2 [ตัวเลือก: ชื่อโฮสต์] | netloggedon เวอร์ชันแก้ไขที่รองรับ BOFHound |
เซสชันเน็ต | netsession [ตัวเลือก: คอมพิวเตอร์] | ระบุเซสชันบนคอมพิวเตอร์เฉพาะที่หรือที่ระบุ |
netsession2 | netsession2 [ตัวเลือก: คอมพิวเตอร์] [ตัวเลือก: วิธีการแก้ไข] [ตัวเลือก: เซิร์ฟเวอร์ DNS] | netsession เวอร์ชันแก้ไขที่รองรับ BOFHound |
เน็ตแชร์ | netshares [ชื่อโฮสต์] | แสดงรายการการแชร์บนเครื่องคอมพิวเตอร์ท้องถิ่นหรือระยะไกล |
เน็ตสแตท | เน็ตสแตท | พอร์ตรายการ TCP และ UDP IPv4 |
เวลาเน็ต | เน็ตไทม์ [ชื่อโฮสต์] | แสดงเวลาบนคอมพิวเตอร์ระยะไกล |
เวลาเน็ตอัพ | netuptime [ชื่อโฮสต์] | ส่งกลับข้อมูลเกี่ยวกับเวลาบูตบนเครื่องคอมพิวเตอร์ท้องถิ่นหรือระยะไกล |
ผู้ใช้เน็ต | netuser [ชื่อผู้ใช้] [เลือก: โดเมน] | รับข้อมูลเกี่ยวกับผู้ใช้เฉพาะ ดึงจากโดเมนหากมีการระบุชื่อโดเมน |
netuse_add | netuse_add [sharename] [opt:ชื่อผู้ใช้] [opt:password] [opt:/DEVICE:devicename] [opt:/PERSIST] [opt:/REQUIREPRIVACY] | ผูกการเชื่อมต่อใหม่กับคอมพิวเตอร์ระยะไกล |
netuse_delete | netuse_delete [อุปกรณ์||sharename] [opt:/PERSIST] [opt:/FORCE] | ลบอุปกรณ์ที่ถูกผูกไว้ / ชื่อแชร์] |
netuse_list | netuse_list [ตัวเลือก: เป้าหมาย] | แสดงรายการทรัพยากรการแชร์ที่ถูกผูกไว้ทั้งหมดหรือข้อมูลเกี่ยวกับทรัพยากรท้องถิ่นเป้าหมาย |
เน็ตวิว | เน็ตวิว | แสดงรายการคอมพิวเตอร์ที่สามารถเข้าถึงได้ในโดเมนปัจจุบัน |
nslookup | nslookup [ชื่อโฮสต์] [ตัวเลือก: เซิร์ฟเวอร์ DNS] [ตัวเลือก: ประเภทบันทึก] | สร้างแบบสอบถาม DNS เซิร์ฟเวอร์ DNS คือเซิร์ฟเวอร์ที่คุณต้องการสอบถาม (ไม่ต้องระบุหรือ 0 เป็นค่าเริ่มต้น) ประเภทบันทึกคือ A, AAAA หรือ ANY บางสถานการณ์ถูกจำกัดเนื่องจากการขัดข้องที่สังเกตได้ |
สอบสวน | โพรบ [โฮสต์] [พอร์ต] | ตรวจสอบว่าพอร์ตเฉพาะเปิดอยู่หรือไม่ |
การถดถอย | การถดถอย [ตัวเลือก: ชื่อโฮสต์] | ส่งคืน SID ของผู้ใช้ที่ล็อกออนโดยการแจงนับ HKEY_USERS รองรับ BOFHound |
reg_query | [opt:ชื่อโฮสต์] [ไฮฟ์] [เส้นทาง] [เลือก: ค่าที่จะสืบค้น] | ค้นหาค่ารีจิสทรีหรือระบุคีย์เดียว |
reg_query_recursive | [opt: ชื่อโฮสต์] [รัง] [เส้นทาง] | ระบุคีย์ซ้ำๆ โดยเริ่มต้นที่เส้นทาง |
ทรัพยากร | ทรัพยากร | แสดงรายการการใช้หน่วยความจำและพื้นที่ว่างในดิสก์บนฮาร์ดไดรฟ์หลัก |
พิมพ์เส้นทาง | พิมพ์เส้นทาง | แสดงรายการเส้นทาง IPv4 |
sc_enum | sc_enum [ตัวเลือก: เซิร์ฟเวอร์] | ระบุบริการสำหรับข้อมูล qc, การสืบค้น, qfailure และ qtriggers |
sc_qc | sc_qc [ชื่อบริการ] [ตัวเลือก: เซิร์ฟเวอร์] | การบังคับใช้ sc qc ใน BOF |
sc_qdescription | sc_qdescription [ชื่อบริการ] [ตัวเลือก: เซิร์ฟเวอร์] | การใช้งาน sc qdescription ใน BOF |
sc_qfailure | sc_qfailure [ชื่อบริการ] [ตัวเลือก: เซิร์ฟเวอร์] | สอบถามบริการสำหรับเงื่อนไขความล้มเหลว |
sc_qtriggerinfo | sc_qtriggerinfo [ชื่อบริการ] [ตัวเลือก: เซิร์ฟเวอร์] | สอบถามบริการสำหรับเงื่อนไขทริกเกอร์ |
sc_query | sc_query [ตัวเลือก: ชื่อบริการ] [ตัวเลือก: เซิร์ฟเวอร์] | การใช้แบบสอบถาม sc ใน BOF |
ชทาสเซนัม | schtasksenum [ตัวเลือก: เซิร์ฟเวอร์] | ระบุงานที่กำหนดเวลาไว้บนคอมพิวเตอร์ภายในเครื่องหรือระยะไกล |
schtasksquery | schtasksquery [ตัวเลือก: เซิร์ฟเวอร์] [เส้นทางงาน] | ค้นหางานที่กำหนดบนคอมพิวเตอร์ภายในเครื่องหรือระยะไกล |
รายการงาน | รายการงาน [ตัวเลือก: เซิร์ฟเวอร์] | แสดงรายการกระบวนการที่ทำงานอยู่ รวมถึง PID, PPID และ ComandLine (ใช้ wmi) |
เวลาทำงาน | เวลาทำงาน | แสดงรายการเวลาบูตระบบและระยะเวลาที่ระบบทำงาน |
vssenum | vssenum [ชื่อโฮสต์] [ตัวเลือก: ชื่อแชร์] | ระบุ Shadow Copies บนเซิร์ฟเวอร์ Server 2012+ บางเซิร์ฟเวอร์ |
โฮอามิ | โฮอามิ | รายการ whoami /ทั้งหมด |
รายการหน้าต่าง | รายการหน้าต่าง [เลือก: ทั้งหมด] | แสดงรายการหน้าต่างที่มองเห็นได้ในเซสชันผู้ใช้ปัจจุบัน |
wmi_query | แบบสอบถาม wmi_query [ตัวเลือก: เซิร์ฟเวอร์] [ตัวเลือก: เนมสเปซ] | เรียกใช้แบบสอบถาม WMI และแสดงผลลัพธ์ในรูปแบบ CSV |
โปรดสังเกตเหตุผลในการรวม reg_query เมื่อ CS มีคำสั่ง reg query(v) ในตัว เนื่องจากคำสั่งนี้สามารถกำหนดเป้าหมายคอมพิวเตอร์ระยะไกลได้ และมีความสามารถในการระบุคีย์ทั้งหมดแบบวนซ้ำ
รหัสการทำงานของคำสั่งเหล่านี้ส่วนใหญ่นำมาจากโครงการ reactos หรือตัวอย่างโค้ดที่โฮสต์บน MSDN รหัสฐาน driversigs มาจาก https://gist.github.com/jthuraisamy/4c4c751df09f83d3620013f5d370d3b9
ขอขอบคุณผู้ร่วมให้ข้อมูลทั้งหมดที่อยู่ในรายชื่อผู้ร่วมให้ข้อมูล พวกคุณแต่ละคนได้มีส่วนร่วมกับบางสิ่งที่มีความหมายต่อพื้นที่เก็บข้อมูลนี้ และจัดการกับฉันและกระบวนการตรวจสอบของฉัน ฉันขอขอบคุณพวกคุณทุกคนที่สอนฉันและช่วยทำให้พื้นที่เก็บข้อมูล BOF นี้ดีที่สุดเท่าที่จะเป็นไปได้!
BOF ที่คอมไพล์ไว้ล่วงหน้ามีให้ในโปรเจ็กต์นี้ และคอมไพล์โดยใช้ Mingw-w64 เวอร์ชันล่าสุดซึ่งโดยทั่วไปจะติดตั้งจาก Brew
BOF เหล่านี้เขียนขึ้นโดยคำนึงถึงการรองรับ Windows Vista+ สาขาใหม่ที่เรียกว่า winxp_2003 ได้ถูกสร้างขึ้น หากคุณต้องการใช้ชุดหลักของ BOF บนระบบเก่าเหล่านั้น สาขานี้จะยังคงอยู่ในสถานะที่รองรับน้อยกว่า มันจะใช้งานได้ แต่จะไม่อัปเดตเมื่อมีการผลักดัน / ฟีเจอร์ใหม่ทั้งหมดที่เราอาจเพิ่ม