แปลงไฟล์เอลฟ์มาตรฐานเป็นเชลล์สแตนด์อโลน โปรดอ่านเอกสารต่อไปนี้และดูตัวอย่างสำหรับโครงการนี้เพื่อทำงานอย่างถูกต้อง
คนอื่น ๆ
Pypi
pip install py_shelfไลบรารี Python แยกวิเคราะห์ ELF และสร้างรูปแบบไฟล์ relocatable อย่างง่ายที่เรียกว่าชั้นวาง (ShellCode ELF)
ตัวโหลดขนาดเล็กถูกแทรกเป็นจุดเข้าชั้นวาง
ตัวโหลดขนาดเล็กจะโหลดและย้ายที่อยู่ชั้นวางจากนั้นจะดำเนินการ ไม่มีข้อกำหนดพิเศษห้องสมุดมีรถตักขนาดเล็กและทรัพยากรที่รวบรวมไว้
แผนภาพด้านล่างอธิบายรูปแบบ (ทำงานในเบราว์เซอร์เท่านั้น)
ชั้นเรียน
shellcodeentrypoint -|> miniloader
ShellCodeEntryPoint: ShellCode ที่มีลอจิก Pre Mini Mini
miniloader -|> ตารางการย้ายถิ่นฐาน
Miniloader: มีตรรกะทั้งหมดสำหรับการแยกวิเคราะห์ตารางการย้ายถิ่นฐาน
MINILOADER: เป็นอิสระระบบปฏิบัติการอย่างเต็มที่
ตารางการย้ายถิ่นฐาน -|> hooks เป็นตัวเลือก
ตารางการย้ายถิ่นฐาน: มีตารางที่จำเป็นสำหรับการย้ายถิ่นฐาน ShellCode Runtime
Hooks เลือก -|> ชั้นวาง
Hooks เลือก: อ่านเพิ่มเติมเกี่ยวกับ hooks ในเอกสารด้านล่าง
Hooks เลือก: ส่วนนี้เป็นทางเลือกและมีอยู่เฉพาะในกรณีที่ใช้ตะขอ
ชั้นวาง: ShellCode Elf - นี่คือไบนารีที่รวบรวมไว้ที่เราแปลงเป็น ShellCode
ชั้นวาง: ไบนารีนี้ถูกถอดออกเป็น opcodes เท่านั้น
ชั้นวาง: relocatable อย่างเต็มที่โดยใช้ตารางการย้ายถิ่นฐาน
โครงการนี้มีวัตถุประสงค์เพื่อแปลง ELF เป็นเชลล์อิสระ OS ตัวโหลดไม่ได้จัดสรรหน่วยความจำและรูปแบบเชลล์ไม่ได้บรรจุ คุณสามารถดำเนินการได้เช่น ...
(( void ( * )()) shellcode )();ทำตามตัวอย่างด้านล่าง
จำเป็นต้องมีธงรวบรวมบางอย่างเพื่อให้ทำงานได้อย่างถูกต้อง คุณต้องรวบรวมไบนารีด้วย -fpie และ -คงที่ดูตัวอย่างที่ให้ไว้ด้านล่าง (MakeFile)
ShellCode เป็นไบนารีที่ถอดออกโดยไม่มีสัญลักษณ์และไม่มีข้อมูล ELF เท่านั้น opcodes เพื่อที่จะทำให้ ShellCode นี้ไลบรารีนี้ต้องการไบนารีที่มีข้อมูล ELF ดังนั้นตรวจสอบให้แน่ใจว่าคุณไม่ได้ลอกเลขฐานสองก่อนที่จะใช้ห้องสมุดนี้
ง่ายขึ้นคำสั่งสำหรับ mips big endian
gcc example . c - fno - stack - protector - fPIE - fpic - static - nostartfiles -- entry = main - o binary . out
python - m shelf -- input binary . out makefile
ตัวอย่าง. c
คุณสามารถใช้ตัวโหลดเชลล์ที่ให้ไว้เพื่อทดสอบเชลล์ของคุณ
qemu-mips ./shellcode_loader ./myshellcode.outขอแนะนำให้ใช้ไลบรารีตัวโหลดชั้นวางเพื่อทดสอบ ShellCode ของคุณที่นี่คุณสามารถอ่านเพิ่มเติมเกี่ยวกับมัน: เอกสารการโหลดชั้นวางของชั้นวาง
สำหรับลิงค์ต่อไปนี้ทำงานเฉพาะในหน้า GitHub