
أداة تعلّم آلي ترتّب السلاسل النصية بناءً على مدى صلتها بتحليل البرمجيات الخبيثة.
StringSifter هي أداة تعلم آلي تقوم تلقائيًا بترتيب السلاسل النصية بناءً على مدى صلتها بتحليل البرمجيات الخبيثة.
يتطلب StringSifter إصدار بايثون 3.9 أو أحدث. نفّذ الأوامر التالية للحصول على الكود، وتشغيل اختبارات الوحدة، واستخدام الأداة:
pip install stringsifter
للتطوير، استخدم poetry:
git clone https://github.com/mandiant/stringsifter.git
cd stringsifter
poetry install --with dev
لتشغيل اختبارات الوحدة من دليل تثبيت StringSifter:
poetry run tests -v
يقوم أمر pip install بتثبيت سكريبتين قابلين للتشغيل هما flarestrings و rank_strings في بيئة البايثون الخاصة بك. عند التطوير من المصدر، استخدم pipenv run flarestrings و pipenv run rank_strings.
يحاكي flarestrings ميزات أداة strings من GNU binutils، ويقبل rank_strings الإدخال عبر الأنابيب، على سبيل المثال:
flarestrings <my_sample> | rank_strings
يدعم rank_strings عددًا من وسائط سطر الأوامر. الوسيط الموضعي input_strings يحدد ملفًا من السلاسل النصية لترتيبها. الوسائط الاختيارية هي:
| الخيار | المعنى |
|---|
تُكتب السلاسل النصية المرتبة إلى المخرجات القياسية ما لم يتم تحديد الخيار --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 لاستخدام الأمر المعني. يمكن استخدام الأوامر داخل الحاوية في خطوط الأنابيب: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 stringsifter
flarestrings /samples/<my_sample> | rank_strings <options>
جميع وسائط سطر الأوامر مدعومة في السكريبتات داخل الحاوية.
يمكن تطبيق StringSifter على قوائم عشوائية من السلاسل النصية، مما يجعله مفيدًا للممارسين الذين يتطلعون إلى استخلاص رؤى من مصادر بديلة لجمع المعلومات الاستخباراتية مثل لقطات الذاكرة الحية، أو عمليات التشغيل في بيئة الحماية (sandbox)، أو الملفات الثنائية التي تحتوي على سلاسل نصية مشوشة. على سبيل المثال، FireEye Labs Obfuscated Strings Solver (FLOSS) يستخرج السلاسل النصية القابلة للطباعة تمامًا كما تفعل أداة Strings، ولكنه يكشف أيضًا عن السلاسل النصية المشوشة التي تم ترميزها أو تعبئتها أو بناؤها يدويًا على المكدس. يمكن استخدامه كبديل مباشر لأداة Strings، مما يعني أنه يمكن استدعاء StringSifter بالمثل على مخرجات FLOSS باستخدام الأمر التالي:
$PY2_VENV/bin/floss –q <options> <my_sample> | rank_strings <options>
ملاحظات:
–q يلغي الترويسات والتنسيق لإظهار السلاسل النصية المستخرجة فقط. لمعرفة المزيد حول خيارات FLOSS الإضافية، يرجى الاطلاع على وثائق الاستخدام.floss أو rank_strings مسارًا نسبيًا يشير إلى بيئة بايثون افتراضية.stringsيتضمن هذا التوزيع برنامج flarestrings لضمان مخرجات متوقعة عبر المنصات. إذا اخترت تشغيل أداة strings المثبتة على نظامك، فلاحظ أن خياراتها غير متناسقة عبر الإصدارات والمنصات:
تتضمن معظم توزيعات لينكس برنامج strings من GNU Binutils. لاستخراج السلاسل النصية "العريضة" و"الضيقة" معًا، يجب تشغيل البرنامج مرتين، مع توجيه الإخراج إلى ملف:
strings <my_sample> > strs.txt # narrow strings
strings -el <my_sample> >> strs.txt # wide strings. note the ">>"
بعض إصدارات BSD strings المرفقة مع ماكوس لا تدعم السلاسل النصية العريضة. لاحظ أيضًا أن الخيار -a لفحص الملف بأكمله قد يكون معطلاً في التكوين الافتراضي. بدون -a قد يتم فقدان سلاسل نصية مفيدة. نوصي بتثبيت GNU Binutils عبر Homebrew أو MacPorts للحصول على إصدار من strings يدعم الأحرف العريضة. توخَّ الحذر لاستدعاء الإصدار الصحيح من strings.
strings غير مثبت افتراضيًا على ويندوز. نوصي بتثبيت Windows Sysinternals أو Cygwin أو Malcode Analyst Pack للحصول على أداة strings تعمل.
تم تدريب هذا الإصدار من StringSifter باستخدام مخرجات Strings من عينات برمجيات خبيثة مرتبطة بمجموعة بيانات EMBER الأولى. تم توليد التسميات الترتيبية باستخدام إجراءات إشراف ضعيف، ويتم التعلم الخاضع للإشراف بواسطة Gradient Boosted Decision Trees مع دالة هدف التعلم للترتيب. راجع الروابط السريعة لمزيد من التفاصيل التقنية. يرجى ملاحظة أن البيانات الموسومة وكود التدريب غير متاحين حاليًا، على الرغم من أننا قد نعيد النظر في هذا النهج في الإصدارات المستقبلية.
نستخدم GitHub Issues لنشر الأخطاء وطلبات الميزات.
flarestrings مشتق من الأداة الممتازة FLOSS.| --scores (-s) | تضمين درجات الترتيب في المخرجات |
| --limit (-l) | قصر المخرجات على أفضل limit سلسلة نصية مرتبة |
| --min-score (-m) | قصر المخرجات على السلاسل النصية ذات الدرجة >= min-score |
| --batch (-b) | تحديد مجلد لمخرجات strings للمعالجة الدفعية |