Shinigami เป็นเครื่องมือทดลองที่ออกแบบมาเพื่อตรวจจับและแกะการฝังมัลแวร์ที่ถูกฉีดผ่านกระบวนการกลวงหรือรูทีนการบรรจุหีบห่อทั่วไป
เครื่องมือนี้ทำงานโดยเชื่อมต่อฟังก์ชัน NT ที่เกี่ยวข้องกับ Process Hollowing และทำเครื่องหมายเพจหน่วยความจำที่เรียกใช้งานได้ใหม่ด้วยบิตป้องกันหน้า เทคนิคนี้ช่วยให้ Shinigami ตรวจจับการเปลี่ยนแปลงการไหลทางอ้อม ซึ่งโดยทั่วไปเกิดจากเชลล์โค้ดหรือโค้ดที่คลายแพ็ก ซึ่งมักบ่งบอกถึงมัลแวร์ Shinigami สร้างเป้าหมายที่สามารถเรียกใช้งานได้ในสถานะหยุดชั่วคราวและแทรกไลบรารี DLL ที่เรียกว่า "Ichigo" ห้องสมุดนี้จะเชื่อมโยงทุกฟังก์ชันที่จำเป็นโดยอัตโนมัติเพื่อตรวจจับและดึงรากฟันเทียม เมื่ออาร์ติแฟกต์ถูกแยกออกจนหมด เครื่องมือจะยุติกระบวนการ
ประสิทธิผลของ Shinigami อาจแตกต่างกันไปขึ้นอยู่กับมัลแวร์เฉพาะที่เป็นเป้าหมาย อย่างไรก็ตาม นี่เป็นส่วนเสริมที่มีคุณค่าสำหรับชุดเครื่องมือวิเคราะห์มัลแวร์ใดๆ และอาจพิสูจน์ได้ว่ามีประโยชน์ในการตรวจจับและวิเคราะห์มัลแวร์ที่ใช้กระบวนการกลวงหรือรูทีนการบรรจุหีบห่อทั่วไป
สิ่งสำคัญ: นี่เป็นเครื่องมือเปิดบรรจุภัณฑ์แบบไดนามิก และไม่ควรรันบนเครื่องส่วนตัวของคุณหรือในห้องปฏิบัติการวิเคราะห์แบบคงที่
วิธีการหลักของ Shinigami ในการสกัดรากฟันเทียมที่ฉีดโดยใช้กระบวนการกลวงเกี่ยวข้องกับการเชื่อมฟังก์ชัน NT สองฟังก์ชัน: NtResumeThread และ NtWriteVirtualMemory นี่คือวิธีการทำงาน:
NtResumeThread
Hook
NtWriteVirtualMemory
Hook
--stop-at-write
ถูกส่งผ่านเท่านั้น โมดูล unpacker ทั่วไปของ Shinigami ทำเครื่องหมายพื้นที่หน่วยความจำที่จัดสรรใหม่ด้วยบิต PAGE_GUARD และยังใช้บิตนี้หากพื้นที่หน่วยความจำที่มีอยู่มีการป้องกันแทนที่ด้วยสิ่งที่ปฏิบัติการได้ ด้วยการใช้เพจป้องกัน จะสามารถติดตามพื้นที่หน่วยความจำที่จะใช้ในการจัดสรรเชลล์โค้ดหรืออิมเมจ PE บางส่วน
สำหรับแต่ละเชลล์โค้ดที่ตรวจพบ Shinigami จะบันทึกเชลล์โค้ดดิบไว้บนดิสก์ นอกจากนี้ยังสแกนขอบเขตหน่วยความจำนั้นเพื่อค้นหาไฟล์ PE และบันทึกด้วยเช่นกัน Shinigami ถือว่าการดำเนินการเชลล์โค้ดที่แตกต่างกันทุกครั้งเป็นขั้นตอนใหม่ ดังนั้น ในตอนท้าย คุณจะมีไดเร็กทอรีการทำงานพร้อมไฟล์ชื่อ filename_shellcode_STAGENUM.bin or .exe
เครื่องมือนี้มีสองตัวเลือก:
Usage: Shinigami [--help] [--version] [--output VAR] [--stop-at-write] [--verbose] [--only-executables] [--exported VAR] program_name
Positional arguments:
program_name Name of the program to execute
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
-o, --output Directory to dump artefacts
--stop-at-write Unhollow: Stop the execution when the PE file is being to be written
--verbose Display a verbose output
-p, --only-executables Only extract PE artefacts
-e, --exported Exported Function: Choose a exported function to execute if the target is a DLL (rundll will be used)
ตัวเลือกที่สำคัญบางประการ ได้แก่:
-o, --output : ระบุไดเร็กทอรีเพื่อดัมพ์สิ่งที่แยกออกมา ตามค่าเริ่มต้น อาร์ติแฟกต์ที่แยกออกมาจะถูกบันทึกลงในไดเร็กทอรีที่เรียกว่าเอาต์พุตในไดเร็กทอรีการทำงานปัจจุบัน คุณสามารถระบุไดเรกทอรีอื่นได้โดยส่งเส้นทางเป็นอาร์กิวเมนต์
--stop-at-write : อาร์กิวเมนต์นี้ใช้ในระหว่างการแกะกระบวนการที่กลวงออก เมื่อ Shinigami ตรวจพบว่าไฟล์ PE กำลังถูกเขียนไปยังกระบวนการแบบกลวง ไฟล์จะหยุดการดำเนินการและบันทึกไฟล์ PE ที่แตกออกมา ตัวเลือกนี้จะมีประโยชน์หากคุณต้องการหลีกเลี่ยงการดำเนินการกระบวนการที่กลวงทั้งหมด และจำเป็นต้องแตกโค้ดที่คลายแพ็กเท่านั้น
--verbose : แสดงเอาต์พุตแบบละเอียด สิ่งนี้มีประโยชน์สำหรับการแก้ไขข้อบกพร่องหรือทำความเข้าใจการทำงานภายในของ Shinigami
การทดสอบกับ Dridex |
หลังจากการแตกไฟล์เสร็จสิ้น กระบวนการจะถูกหยุดทำงาน และคุณจะได้ (ฉันหวังว่าจะเป็นเช่นนั้น) PE ที่แตกออกมา:
การปลูกถ่ายทิ้ง |
รากฟันเทียมที่ตรวจพบจะถูกทิ้งตามรูปแบบที่อธิบายไว้ในส่วนวิธีการตรวจจับ
การแกะโหลดเดอร์แบบสุ่มที่อธิบายไว้ที่นี่ |
ในตัวอย่างด้านบน Shinigami ตรวจพบพฤติกรรมของตัวโหลดทั่วไปโดยอัตโนมัติ และแยกเชลล์โค้ดที่ดำเนินการและรูปภาพภายในตัวโหลดทั้งหมด โดยไม่ต้องใช้สวิตช์เฉพาะใดๆ ในการเปิดหรือปิดใช้งานรูทีนการคลายแพ็ก สิ่งนี้เป็นไปได้เนื่องจาก Shinigami แชร์ฟังก์ชันบางอย่างกับโมดูล unhollow โดยใช้ hooks ที่ใช้ร่วมกันที่ไลบรารี Gancho เตรียมไว้ให้
กำลังแกะ Emotet DLL |
Shinigami ยังรองรับ DLL และความสามารถในการสร้างไบนารีที่ฉีดขึ้นมาใหม่โดยใช้ส่วนหัว DOS ที่แยกออกมา โดยเฉพาะอย่างยิ่ง ตัวอย่างมัลแวร์อย่าง Emotet ใช้เทคนิคนี้เพื่อหลบเลี่ยงเครื่องสแกน PE ในหน่วยความจำ Shinigami ตรวจพบชิ้นส่วนที่ขาดหายไป (ส่วนหัวของ DOS) และใช้การวิเคราะห์พฤติกรรมเพื่อสร้างชิ้นส่วนเหล่านั้นขึ้นมาใหม่
คว้ารสชาติของคุณได้ที่หน้าวางจำหน่าย
มันจะน่าทึ่งมากถ้าคุณช่วยโปรเจ็กต์นี้ ดังนั้นถ้าคุณต้องการที่นี่คือการอ้างอิงและขั้นตอนต่างๆ
โปรดเปิดปัญหาหรือดึงคำขอสำหรับการเปลี่ยนแปลงใดๆ ที่คุณต้องการดำเนินการ
ภาพมาสคอตสุดเจ๋งนี้ได้รับแรงบันดาลใจจาก Bleach และสร้างโดย Dall-E