CERT Kaiju คือชุดเครื่องมือวิเคราะห์ไบนารีสำหรับ Ghidra
นี่คือการนำ Ghidra/Java ไปใช้ฟีเจอร์บางอย่างของ CERT Pharos Binary Analysis Framework โดยเฉพาะเครื่องมือแฮชฟังก์ชันและการวิเคราะห์มัลแวร์ แต่คาดว่าจะเพิ่มเครื่องมือและความสามารถใหม่ๆ เมื่อเวลาผ่านไป
เนื่องจากนี่เป็นความพยายามใหม่ การใช้งานนี้จึงยังไม่มีความเท่าเทียมกันของฟีเจอร์เต็มรูปแบบกับการใช้งาน C++ ดั้งเดิมที่ใช้ ROSE อย่างไรก็ตาม การย้ายไปยัง Java และ Ghidra ได้เปิดใช้งานฟีเจอร์ใหม่ๆ บางอย่างที่ไม่มีในเฟรมเวิร์กดั้งเดิม โดยเฉพาะอย่างยิ่ง การปรับปรุงการจัดการสถาปัตยกรรมที่ไม่ใช่ x86 เนื่องจากมีการวางสถาปัตยกรรมใหม่ที่สำคัญของเฟรมเวิร์กและเครื่องมือ และการย้ายไปยัง Java และ Ghidra ทำให้มีความสามารถที่แตกต่างจากการใช้งาน C++ จึงมีการตัดสินใจใช้การสร้างแบรนด์ใหม่ เพื่อให้เกิดความสับสนน้อยลงระหว่างการใช้งานเมื่อหารือเกี่ยวกับ เครื่องมือและความสามารถที่แตกต่างกัน
ความตั้งใจของเราในอนาคตอันใกล้นี้คือการรักษาทั้งเฟรมเวิร์ก Pharos ดั้งเดิมและ Kaiju ไว้เคียงข้างกัน เนื่องจากทั้งสองสามารถมอบคุณสมบัติและความสามารถที่เป็นเอกลักษณ์ได้
คำเตือน: ในฐานะต้นแบบ มีปัญหามากมายที่อาจเกิดขึ้นเมื่อประเมินฟังก์ชันแฮชที่สร้างโดยปลั๊กอินนี้ ตัวอย่างเช่น ไม่เหมือนกับการนำ Pharos ไปใช้ตรงที่โมดูลแฮชฟังก์ชันของ Kaiju จะสร้างแฮชสำหรับฟังก์ชันที่มีขนาดเล็กมาก (เช่น ฟังก์ชันที่มีคำสั่งเดียว เช่น RET ทำให้เกิดการชนกันโดยไม่ได้ตั้งใจหลายครั้ง) ดังนั้นผลการวิเคราะห์อาจแตกต่างกันระหว่างปลั๊กอินนี้และ Pharos fn2hash
มีแพ็คเกจ Kaiju ที่สร้างไว้ล่วงหน้าแล้ว เพียงดาวน์โหลดไฟล์ ZIP ที่สอดคล้องกับเวอร์ชันของ Ghidra ของคุณ และติดตั้งตามคำแนะนำด้านล่าง ขอแนะนำให้ติดตั้งผ่านอินเทอร์เฟซกราฟิกของ Ghidra แต่ก็สามารถแตกไฟล์ลงในไดเร็กทอรีที่เหมาะสมเพื่อติดตั้งได้ด้วยตนเอง
CERT Kaiju ต้องการการพึ่งพารันไทม์ต่อไปนี้:
Z3 ได้รับการจัดเตรียมไว้ล่วงหน้าโดยเป็นส่วนหนึ่งของแพ็คเกจที่สร้างไว้ล่วงหน้า หรือคุณอาจสร้าง Z3 ด้วยตัวเอง หรือใช้แพ็คเกจของการแจกจ่าย Linux ของคุณ
เริ่ม Ghidra และจากหน้าต่างที่เปิดอยู่ ให้เลือกจากเมนู: File > Install Extension
คลิกเครื่องหมายบวกที่ด้านบนของหน้าต่างส่วนขยาย นำทางและเลือกไฟล์ .zip ในไฟล์เบราว์เซอร์ แล้วกดตกลง ส่วนขยายจะได้รับการติดตั้งและจะมีการทำเครื่องหมายในช่องถัดจากชื่อส่วนขยายในหน้าต่างเพื่อแจ้งให้คุณทราบว่าส่วนขยายได้รับการติดตั้งและพร้อมใช้งานแล้ว
อินเทอร์เฟซจะขอให้คุณรีสตาร์ท Ghidra เพื่อเริ่มใช้ส่วนขยาย เพียงรีสตาร์ท จากนั้นฟีเจอร์พิเศษของ Kaiju จะพร้อมใช้งานแบบโต้ตอบหรือในสคริปต์
ฟังก์ชั่นบางอย่างอาจต้องเปิดใช้งานปลั๊กอิน Kaiju ในการดำเนินการนี้ ให้เปิดเบราว์เซอร์โค้ด จากนั้นไปที่เมนู File > Configure
ในหน้าต่างที่ปรากฏขึ้น ให้คลิกลิงก์ Configure
ใต้ไอคอนหมวดหมู่ "CERT Kaiju" ป๊อปอัปจะแสดงปลั๊กอิน Kaiju ที่เผยแพร่ต่อสาธารณะทั้งหมด ตรวจสอบปลั๊กอินที่คุณต้องการเปิดใช้งาน จากนั้นกดตกลง ขณะนี้คุณจะสามารถเข้าถึงคุณลักษณะปลั๊กอินแบบโต้ตอบได้
หากไม่สามารถมองเห็นปลั๊กอินได้ทันทีเมื่อเปิดใช้งาน คุณจะพบปลั๊กอินใต้เมนู Window
ในเบราว์เซอร์โค้ด
เครื่องมือในอนาคตเวอร์ชันทดลอง "อัลฟ่า" อาจมีจำหน่ายในหมวดหมู่ "ทดลอง" หากคุณต้องการทดสอบ อย่างไรก็ตาม ปลั๊กอินเหล่านี้เป็นรุ่นทดลองและไม่รองรับอย่างแน่นอน และไม่แนะนำให้ใช้ในการใช้งานจริง เรายินดีรับข้อเสนอแนะตั้งแต่เนิ่นๆ!
ส่วนขยาย Ghidra เช่น Kaiju สามารถติดตั้งได้ด้วยตนเองโดยการคลายซิปเนื้อหาส่วนขยายลงในไดเร็กทอรีที่เหมาะสมของการติดตั้ง Ghidra ของคุณ สำหรับข้อมูลเพิ่มเติม โปรดดูคู่มือการติดตั้ง Ghidra
คุณยังสามารถสร้างส่วนขยาย Kaiju ได้โดยตรงจากซอร์สโค้ด ดูไฟล์ INSTALL.md
ที่รวมอยู่ในไดเร็กทอรีต้นทางยอดนิยมของ Kaiju
เครื่องมือของ Kaiju อาจใช้ในรูปแบบกราฟิกเชิงโต้ตอบหรือผ่านโหมด "ไร้หัว" ที่เหมาะกับงานแบทช์มากกว่า เครื่องมือบางอย่างอาจใช้ได้เฉพาะสำหรับการใช้งานแบบกราฟิกหรือแบบไม่มีหัวเท่านั้นโดยธรรมชาติของเครื่องมือ
Kaiju สร้างอินเทอร์เฟซกราฟิกแบบโต้ตอบ (GUI) ภายใน Ghidra โดยใช้สถาปัตยกรรมปลั๊กอินของ Java Swing และ Ghidra
เครื่องมือของ Kaiju ส่วนใหญ่เป็นปลั๊กอินการวิเคราะห์ที่ทำงานโดยอัตโนมัติเมื่อเลือกตัวเลือก "การวิเคราะห์อัตโนมัติ" ไม่ว่าจะนำเข้าไฟล์ปฏิบัติการใหม่เพื่อแยกชิ้นส่วน หรือโดยการเลือก Analysis > Auto Analyze...
จากหน้าต่างเบราว์เซอร์โค้ด คุณจะเห็นปลั๊กอินการวิเคราะห์ CERT หลายรายการที่เลือกไว้ตามค่าเริ่มต้นในเครื่องมือวิเคราะห์อัตโนมัติ แต่คุณสามารถเปิด/ปิดใช้งานปลั๊กอินใดก็ได้ตามต้องการ
อย่างไรก็ตาม จะต้องเรียกใช้เครื่องมือการวิเคราะห์ก่อนที่เครื่องมือ GUI ต่างๆ จะทำงานได้ ในบางกรณี การเรียกใช้การวิเคราะห์อัตโนมัติสองครั้งอาจเป็นประโยชน์เพื่อให้แน่ใจว่าข้อมูลเมตาทั้งหมดถูกสร้างขึ้นเพื่อสร้างข้อมูลการแบ่งพาร์ติชันและการแยกชิ้นส่วนที่ถูกต้อง ซึ่งจะส่งผลต่อผลลัพธ์ของแฮช
เครื่องวิเคราะห์จะทำงานโดยอัตโนมัติในระหว่างขั้นตอนการวิเคราะห์ของ Ghidra และประกอบด้วย:
เครื่องมือ GUI ประกอบด้วย:
Kaiju > GhiHorn
เพื่อเข้าถึงเครื่องมือนี้จาก CodeBrowser ของ Ghidra คุณยังสามารถเปิดปลั๊กอินได้โดยกด CTRL-G
Window > CERT Function Hash Viewer
จากเมนูเพื่อเริ่มต้นใช้งานเครื่องมือนี้ หากยังไม่ปรากฏให้เห็น หน้าต่างใหม่จะปรากฏขึ้นเพื่อแสดงตารางแฮชและข้อมูลอื่นๆ ปุ่มที่ด้านบนของหน้าต่างสามารถรีเฟรชตารางหรือส่งออกข้อมูลเป็นไฟล์หรือลายเซ็น YARA หน้าต่างนี้อาจเชื่อมต่อกับ Ghidra CodeBrowser หลักเพื่อให้ใช้งานควบคู่ไปกับปลั๊กอินอื่นๆ ได้ง่ายขึ้น เอกสารการใช้งานเพิ่มเติมสามารถพบได้ในเมนู Help > Contents
ของ Ghidra เมื่อใช้เครื่องมือKaiju > OOAnalyzer Importer
จากเมนูเพื่อเริ่มต้นใช้งานเครื่องมือนี้ ป๊อปอัปกล่องโต้ตอบธรรมดาจะขอให้คุณค้นหาไฟล์ JSON ที่คุณต้องการนำเข้า เอกสารการใช้งานเพิ่มเติมสามารถพบได้ในเมนู Help > Contents
ของ Ghidra เมื่อใช้เครื่องมือGhidra ยังรองรับโหมด "ไร้หัว" ที่ทำให้เครื่องมือสามารถทำงานได้ในบางกรณีโดยไม่ต้องใช้ GUI แบบโต้ตอบ คำสั่งเหล่านี้จึงสามารถใช้สำหรับการเขียนสคริปต์และงาน "โหมดแบตช์" ของไฟล์จำนวนมากได้
เครื่องมือไร้หัวส่วนใหญ่อาศัยฟังก์ชัน GhidraScript ของ Ghidra
เครื่องมือที่ไม่มีหัว ได้แก่ :
สคริปต์เรียกใช้เชลล์อย่างง่ายชื่อ kaijuRun
ได้รับการรวมไว้เพื่อรันคำสั่ง headless เหล่านี้สำหรับสถานการณ์ง่าย ๆ เช่นการส่งออกฟังก์ชันแฮชสำหรับทุกฟังก์ชันในไฟล์ปฏิบัติการเดียว สมมติว่ามีการตั้งค่าตัวแปร GHIDRA_INSTALL_DIR
ตัวอย่างหนึ่งอาจเรียกใช้สคริปต์เรียกใช้งานบนไฟล์ปฏิบัติการเดียวดังต่อไปนี้:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun fn2hash example.exe
คำสั่งนี้จะส่งออกผลลัพธ์ไปยังไฟล์ที่มีชื่อโดยอัตโนมัติเป็น example.exe.Hashes.csv
ความช่วยเหลือพื้นฐานสำหรับสคริปต์ kaijuRun
มีให้ใช้งานโดยการเรียกใช้:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun --help
โปรดดูไฟล์ docs/HeadlessKaiju.md
ในพื้นที่เก็บข้อมูลสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้โหมดนี้และสคริปต์ตัวเรียกใช้งาน kaijuRun
มีเอกสารและความช่วยเหลือที่ครอบคลุมมากขึ้น ในรูปแบบใดรูปแบบหนึ่งจากสองรูปแบบ
ดูไดเร็กทอรี docs/
สำหรับเอกสารประกอบในรูปแบบ Markdown และความช่วยเหลือสำหรับเครื่องมือและส่วนประกอบ Kaiju ทั้งหมด เอกสารเหล่านี้ง่ายต่อการบำรุงรักษา แก้ไข และอ่านได้จากบรรทัดคำสั่ง
หรือคุณอาจพบเอกสารเดียวกันนี้ได้ในระบบช่วยเหลือในตัวของ Ghidra หากต้องการเข้าถึงเอกสารวิธีใช้เหล่านี้ จากเมนู Ghidra ให้ไปที่ Help > Contents
จากนั้นเลือก CERT Kaiju
จากการนำทางแบบต้นไม้ทางด้านซ้ายมือของหน้าต่างวิธีใช้
โปรดทราบว่าเอกสาร Ghidra Help เป็นเนื้อหาเดียวกันกับไฟล์ Markdown ในไดเร็กทอรี docs/
ต้องขอบคุณปลั๊กอิน gradle ในแผนผัง gradle จะแยกวิเคราะห์ Markdown โดยอัตโนมัติและส่งออกไปยัง Ghidra HTML ในระหว่างกระบวนการสร้าง ซึ่งช่วยให้การบำรุงรักษาง่ายขึ้น (อัปเดตเอกสารในที่เดียว ไม่ใช่สองแห่ง) และช่วยให้ทั้งสองแห่งซิงค์กัน
ควรเพิ่มเอกสารใหม่ทั้งหมดลงในไดเร็กทอรี docs/
ซอฟต์แวร์นี้ได้รับอนุญาตภายใต้ใบอนุญาตสไตล์ BSD แบบง่ายโดย Software Engineering Institute ที่ Carnegie Mellon University โปรดดูรายละเอียดทั้งหมดของใบอนุญาตนี้ รวมถึงเงื่อนไขการอนุญาตสิทธิ์การใช้งานที่ใช้ในโปรเจ็กต์นี้ในไฟล์ LICENSE.md
ในรากของพื้นที่เก็บข้อมูลนี้
โลโก้ CERT Kaiju อิงจากงานศิลปะที่สร้างขึ้นโดย Cameron Spahn ซึ่งเผยแพร่ครั้งแรกภายใต้เงื่อนไขของใบอนุญาต Creative Commons Attribution-Share Alike 4.0 International