FLOSS - استخراج النصوص المشفرة للبرمجيات الخبيثة (Cheatsheet)
FLOSS (FLARE Obfuscated String Solver، من Mandiant) يستخرج النصوص المشفرة من البرمجيات الخبيثة تلقائياً. يقوم المؤلفون بإخفاء URLs ومفاتيح التسجيل والأوامر بانتظام بحيث تجد أداة strings الكلاسيكية لا شيء مفيد. يذهب FLOSS أبعد من ذلك: فهو يحدد روتينات فك التشفير داخل الملف الثنائي، يحاكيها، ويستعيد النص الواضح — ويكشف نصوص المكدس والنصوص الضيقة والنصوص المفكك تشفيرها التي لا يمكن للاستخراج الثابت أن يكتشفها. إنها أداة الفحص الأولى لأي عينة برمجيات خبيثة Windows.
حلل البرمجيات الخبيثة فقط في آلة افتراضية/صندوق رمل معزول. FLOSS تحاكي الكود من العينة.
التثبيت
| الطريقة | الأمر |
|---|
| ملف ثنائي مستقل | تنزيل من GitHub Releases (Windows/Linux/macOS) |
| pip | pip install flare-floss |
| التحقق | floss --version |
الاستخدام الأساسي
| الأمر | الوصف |
|---|
floss malware.exe | استخرج جميع أنواع النصوص |
floss -j malware.exe | مخرجات JSON |
floss --no static malware.exe | تخطي النصوص الثابتة العادية |
floss -n 6 malware.exe | الحد الأدنى لطول النص 6 |
floss --help | قائمة الخيارات الكاملة |
أنواع النصوص التي يستعيدها FLOSS
| النوع | ما هو |
|---|
| الثابت | النصوص العادية (ما يجده strings) |
| المكدس | بناء الأحرف حرفاً تلو الآخر على المكدس في وقت التشغيل |
| الضيق | مبني في حلقات ضيقة، غير موجود بالكامل في الذاكرة في وقت واحد |
| مفكك التشفير | ينتج عن روتين فك التشفير (XOR, RC4, مخصص) |
الثلاثة الأخيرة هي القيمة المضافة — فهي غير مرئية لـ strings لأنها لا تكون موجودة كبايتات متجاورة في الملف.
اختيار أنواع التحليل
| العلم | التأثير |
|---|
--only static | نصوص عادية فقط (سريع) |
--only stack | نصوص المكدس فقط |
--only tight | نصوص ضيقة فقط |
--only decoded | نصوص مفكك التشفير/المحاكاة فقط |
--no decoded | تخطي مرحلة المحاكاة (البطيئة) |
# فحص سريع: تخطي المحاكاة
floss --no decoded sample.exe
# تمرير عميق: كل شيء، JSON للأتمتة
floss -j sample.exe > strings.json
إشارات الفحص للبحث عنها
| النمط | يقترح |
|---|
| URLs / IPs | البنية التحتية C2 |
HKLM\, HKCU\ | المثابرة عبر التسجيل |
cmd.exe, powershell | تنفيذ الأوامر |
CreateRemoteThread, VirtualAlloc | حقن العملية |
| كتل Base64 | حمولات مضمنة |
.onion, عناوين المحفظة | البرمجيات المالية/التسريب |
floss sample.exe | grep -iE "http|\.exe|HKLM|powershell|AppData"
المخرجات والتكامل
| الخيار | الغرض |
|---|
-j / --json | مخرجات قابلة للقراءة الآلية للأنابيب |
-v / -vv | Verbose / debug |
--functions 0x401000 | ركز المحاكاة على وظائف محددة |
| سكريبتات IDA/Ghidra | عد النصوص المستعادة إلى فك التجميع |
تغذية مخرجات FLOSS مرة أخرى إلى Ghidra كتعليقات تجعل التحليل اليدوي اللاحق أسرع بكثير.
سير العمل الشائع
# تسلسل فحص البرمجيات الخبيثة القياسي
floss -j sample.exe > floss.json # استعادة النصوص
jq -r '.strings.decoded[].string' floss.json | sort -u # ركز على المفكك
# → pivot to Ghidra/x64dbg على الوظائف التي أنتجت نصوس مثيرة للاهتمام
# قارن المتغيرات: أي نصوص تغيرت بين العينات؟
floss --no decoded a.exe > a.txt; floss --no decoded b.exe > b.txt
diff a.txt b.txt
FLOSS مقابل الأدوات ذات الصلة
| الأداة | تستعيد |
|---|
| FLOSS | Static + stack + tight + decoded (محاكاة) |
strings | بايتات قابلة للطباعة متجاورة فقط |
| capa | الإمكانيات/السلوكيات، وليس النصوص |
| Detect It Easy | تحديد Packer/compiler |
ثالوث فحص قياسي: Detect It Easy لتحديد الحزم، FLOSS لاستعادة النصوص، capa لتعداد الإمكانيات.
الموارد