
Stringsifter เป็นเครื่องมือการเรียนรู้ของเครื่องที่จัดอันดับสตริงโดยอัตโนมัติตามความเกี่ยวข้องของพวกเขาสำหรับการวิเคราะห์มัลแวร์
Stringsifter ต้องการ Python เวอร์ชัน 3.9 หรือใหม่กว่า เรียกใช้คำสั่งต่อไปนี้เพื่อรับรหัสเรียกใช้การทดสอบหน่วยและใช้เครื่องมือ:
pip install stringsifterเพื่อการพัฒนาใช้บทกวี:
git clone https://github.com/mandiant/stringsifter.git
cd stringsifter
poetry install --with devในการเรียกใช้การทดสอบหน่วยจากไดเรกทอรีการติดตั้ง StringSifter:
poetry run tests -v คำสั่ง pip install ติดตั้งสคริปต์ที่ flarestrings ใช้สองตัวและ rank_strings ลงในสภาพแวดล้อม Python ของคุณ เมื่อพัฒนาจากแหล่งที่มาให้ใช้ pipenv run flarestrings และ pipenv run rank_strings
flarestrings เลียนแบบคุณสมบัติของ strings ของ GNU Binutils และ rank_strings ยอมรับอินพุต PIPED เช่น:
flarestrings < my_sample > | rank_strings rank_strings รองรับอาร์กิวเมนต์บรรทัดคำสั่งจำนวนหนึ่ง อาร์กิวเมนต์ positiveal input_strings ระบุไฟล์ของสตริงที่จะจัดอันดับ อาร์กิวเมนต์เสริมคือ:
| ตัวเลือก | ความหมาย |
|---|---|
| -คะแนน (-S) | รวมคะแนนอันดับในผลลัพธ์ |
| -จำกัด (-l) | จำกัด เอาต์พุตไปยังสตริงอันดับสูงสุดของขีด limit ด้านบน |
| -คะแนน-(-m) | จำกัด เอาต์พุตไปยังสตริงด้วยคะแนน> = min-score |
| -แบทช์ (-B) | ระบุโฟลเดอร์ของ strings outputs สำหรับการประมวลผลแบทช์ |
สตริงอันดับจะถูกเขียนไปยังเอาต์พุตมาตรฐานเว้นแต่จะมีการระบุตัวเลือก --batch ทช์ทำให้เอาต์พุตอันดับที่จะเขียนไปยังไฟล์ชื่อ <input_file>.ranked_strings
flarestrings รองรับตัวเลือก -n (หรือ --min-len ) เพื่อพิมพ์ลำดับของอักขระที่มีความยาวอักขระ min-len อย่างน้อยแทนที่จะเป็นค่าเริ่มต้น 4 ตัวอย่างเช่น:
flarestrings -n 8 < my_sample > | rank_stringsจะพิมพ์และจัดอันดับเฉพาะความยาว 8 ขึ้นไป
docker build -t stringsifter -f docker/Dockerfile .flarestrings หรือ rank_strings เพื่อใช้คำสั่งที่เกี่ยวข้อง คำสั่ง containerized สามารถใช้ในท่อ: cat < my_sample > | docker run -i stringsifter flarestrings | docker run -i stringsifter rank_strings-v เพื่อเปิดเผยไดเรกทอรีโฮสต์ไปยังคอนเทนเนอร์: docker run -v < my_malware > :/samples -it stringsifter โดยที่ <my_malware> มีตัวอย่างสำหรับการวิเคราะห์ตัวอย่างเช่น:
docker run -v $HOME /malware/binaries:/samples -it stringsifterflarestrings /samples/ < my_sample > | rank_strings < options >อาร์กิวเมนต์บรรทัดคำสั่งทั้งหมดได้รับการสนับสนุนในสคริปต์คอนเทนเนอร์
Stringsifter สามารถนำไปใช้กับรายการสตริงโดยพลการทำให้มีประโยชน์สำหรับผู้ปฏิบัติงานที่มองหาข้อมูลเชิงลึกจากแหล่งรวบรวมข้อมูลทางเลือกเช่นการถ่ายโอนข้อมูลหน่วยความจำแบบมีชีวิต ตัวอย่างเช่น FireEye Labs Strings Solver (Floss) สารสกัดจากสตริงที่พิมพ์ได้เช่นเดียวกับ สตริง ที่ทำ แต่ยังเผยให้เห็นสตริงที่สับสนซึ่งได้รับการเข้ารหัสบรรจุหรือสร้างขึ้นด้วยตนเองบนสแต็ก มันสามารถใช้เป็นการทดแทนแบบอินไลน์สำหรับสตริงซึ่งหมายความว่า Stringsifter สามารถเรียกใช้ในทำนองเดียวกันกับเอาต์พุตไหมขัดฟันโดยใช้คำสั่งต่อไปนี้:
$PY2_VENV /bin/floss –q < options > < my_sample > | rank_strings < options >หมายเหตุ:
–q ยับยั้งส่วนหัวและการจัดรูปแบบเพื่อแสดงเฉพาะสตริงที่สกัด หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับตัวเลือกไหมขัดฟันเพิ่มเติมโปรดดูเอกสารการใช้งานfloss หรือ rank_strings จะต้องมีเส้นทางสัมพัทธ์ที่อ้างอิงถึงสภาพแวดล้อมเสมือนจริงของ Pythonstrings ที่กำลังวิ่ง การกระจายนี้รวมถึงโปรแกรม flarestrings เพื่อให้แน่ใจว่าเอาต์พุตที่คาดการณ์ได้ในแพลตฟอร์ม หากคุณเลือกที่จะเรียกใช้ strings ที่ติดตั้งระบบของระบบของคุณโปรดทราบว่าตัวเลือกของมันไม่สอดคล้องกันในเวอร์ชันและแพลตฟอร์ม:
การแจกแจง Linux ส่วนใหญ่รวมถึงโปรแกรม strings จาก GNU binutils ในการแยกสาย "กว้าง" และ "แคบ" โปรแกรมจะต้องเรียกใช้สองครั้งโดยส่งไปยังไฟล์เอาต์พุต:
strings < my_sample > > strs.txt # narrow strings
strings -el < my_sample > >> strs.txt # wide strings. note the ">>" strings BSD บางรุ่นที่บรรจุด้วย macOS ไม่รองรับสตริงกว้าง นอกจากนี้โปรดทราบว่าตัวเลือก -a สำหรับสตริงเพื่อสแกนไฟล์ทั้งหมดอาจถูกปิดใช้งานในการกำหนดค่าเริ่มต้น หาก -a สตริงที่ให้ข้อมูลอาจหายไป เราขอแนะนำให้ติดตั้ง GNU binutils ผ่าน Homebrew หรือ MacPorts เพื่อรับสตริง strings ที่รองรับอักขระกว้าง ใช้การดูแลเพื่อเรียกใช้ strings เวอร์ชันที่ถูกต้อง
strings ไม่ได้ติดตั้งโดยค่าเริ่มต้นบน Windows เราขอแนะนำให้ติดตั้ง Windows Sysinternals, Cygwin หรือ Malcode Analyst Pack เพื่อรับ strings การทำงาน
Stringsifter รุ่นนี้ได้รับการฝึกฝนโดยใช้เอาต์พุต สตริง จากไบนารีมัลแวร์ตัวอย่างที่เกี่ยวข้องกับชุดข้อมูล Ember ตัวแรก ฉลากลำดับถูกสร้างขึ้นโดยใช้ขั้นตอนการกำกับดูแลที่อ่อนแอและการเรียนรู้ภายใต้การดูแลนั้นดำเนินการโดยต้นไม้ตัดสินใจที่เพิ่มความลาดชันด้วยฟังก์ชั่นการเรียนรู้ตามวัตถุประสงค์ ดูลิงค์ด่วนสำหรับรายละเอียดทางเทคนิคเพิ่มเติม โปรดทราบว่าไม่มีข้อมูลที่มีป้ายกำกับหรือรหัสการฝึกอบรมในขณะนี้แม้ว่าเราอาจพิจารณาวิธีการนี้ในการเผยแพร่ในอนาคต
เราใช้ปัญหา GitHub สำหรับการโพสต์ข้อบกพร่องและคำขอคุณสมบัติ
flarestrings ได้มาจากการใช้ไหมขัดฟันที่ยอดเยี่ยม