
مستخرج مؤشرات الاختراق (IOC) المنزوعة الأنياب.
مؤشر الاختراق (IOC) مستخرج لبعض القطع الأثرية الأكثر شيوعًا.
حزمة iocextract هي مكتبة وواجهة سطر أوامر (CLI) لاستخراج عناوين URL وعناوين IP وتجمعات MD5/SHA وعناوين البريد الإلكتروني وقواعد YARA من نصوص. تتيح لك استخراج مؤشرات الاختراق المشفرة و"المعرّضة" (defanged) مع خيار فك تشفيرها أو إعادة تنسيقها (refang).
من الممارسات الشائعة لمحللي البرامج الضارة أو برامج نقاط النهاية "تعريض" مؤشرات الاختراق مثل عناوين URL وIP، لمنع التعرض العرضي لمحتوى ضار حي. القدرة على استخراج وتجميع هذه المؤشرات غالبًا ما تكون ذات قيمة للمحللين. للأسف، غالبًا ما تمر أدوات "استخراج مؤشرات الاختراق" الحالية دون التعرف عليها، لأنها لا تُلتقط بواسطة التعبير العادي القياسي.
على سبيل المثال، تقنية التعريض البسيطة المتمثلة في وضع أقواس حول النقاط:
127[.]0[.]0[.]1
الأدوات الحالية التي تستخدم تعبيرًا عاديًا بسيطًا لعناوين IP ستتجاهل هذا المؤشر بالكامل.
من خلال الجمع بين تعبير عادي مصمم خصيصًا ومعالجة لاحقة مخصصة، نتمكن من اكتشاف مؤشرات الاختراق "المعرّضة" وإزالة تشويشها. هذا يوفر الوقت والجهد للمحلل، الذي قد يضطر إلى العثور يدويًا على المؤشرات وتحويلها إلى تنسيق قابل للقراءة آليًا.
ينشر العديد من مستخدمي Twitter عناوين C2 أو معلومات مؤشرات اختراق قيمة أخرى بعناوين URL معرّضة. على سبيل المثال، هذه التغريدة من @InQuest:
Recommended reading and great work from @unit42_intel:
https://researchcenter.paloaltonetworks.com/2018/02/unit42-sofacy-attacks-multiple-government-entities/ ...
InQuest customers have had detection for threats delivered from hotfixmsupload[.]com
since 6/3/2017 and cdnverify[.]net since 2/1/18.
إذا قمنا بتشغيل هذا عبر المستخرج، يمكننا بسهولة سحب عناوين URL:
https://researchcenter.paloaltonetworks.com/2018/02/unit42-sofacy-attacks-multiple-government-entities/
hotfixmsupload[.]com
cdnverify[.]net
تمرير refang=True في وقت الاستخراج سيزيل التشويش، ولكن نظرًا لأن هذه مؤشرات اختراق حقيقية، دعنا نتركها معرّضة في توثيقنا.
قد تحتاج إلى تثبيت رؤوس تطوير Python لتثبيت اعتماد regex. على أنظمة Ubuntu/Debian، جرب:
sudo apt-get install python-dev
ثم قم بتثبيت iocextract من pip:
pip install iocextract
إذا واجهت مشاكل في التثبيت على Windows، جرب تثبيت regex مباشرة عن طريق تنزيل العجلة المناسبة من PyPI والتثبيت عبر pip:
pip install regex-2018.06.21-cp27-none-win_amd64.whl
جرب استخراج بعض عناوين URL المعرّضة:
import iocextract
content = \
"""
I really love example[.]com!
All the bots are on hxxp://example.com/bad/url these days.
C2: tcp://example[.]com:8989/bad
"""
for url in iocextract.extract_urls(content):
print(url)
# Output
# hxxp://example.com/bad/url
# tcp://example[.]com:8989/bad
# example[.]com
# tcp://example[.]com:8989/bad
ملاحظة: قد تظهر بعض عناوين URL مرتين إذا التقطتها تعابير عادية متعددة.
إذا أردت، يمكنك أيضًا "إعادة التنسيق" (refang)، أو إزالة طرق التشويش الشائعة من مؤشرات الاختراق:
import iocextract
for url in iocextract.extract_urls(content, refang=True):
print(url)
# Output
# http://example.com/bad/url
# http://example.com:8989/bad
# http://example.com
# http://example.com:8989/bad
إذا كنت لا تريد تعريض مؤشرات الاختراق المستخرجة على الإطلاق أثناء الاستخراج، يمكنك تعطيل ذلك أيضًا:
import iocextract
content = \
"""
http://example.com/bad/url
http://example.com:8989/bad
http://example.com
http://example.com:8989/bad
"""
for url in iocextract.extract_urls(content, defang=False):
print(url)
# Output
# http://example.com/bad/url
# http://example.com:8989/bad
# http://example.com
# http://example.com:8989/bad
جميع دوال extract_* في هذه المكتبة تُعيد مكررات (iterators)، وليس قوائم. فائدة هذا السلوك هي أن iocextract يمكنه معالجة مدخلات كبيرة جدًا، بتكلفة منخفضة جدًا. ومع ذلك، إذا كنت بحاجة لسبب ما للتكرار على المؤشرات أكثر من مرة، فسيتعين عليك حفظ النتائج كقائمة:
import iocextract
content = \
"""
I really love example[.]com!
All the bots are on hxxp://example.com/bad/url these days.
C2: tcp://example[.]com:8989/bad
"""
print(list(iocextract.extract_urls(content)))
# ['hxxp://example.com/bad/url', 'tcp://example[.]com:8989/bad', 'example[.]com', 'tcp://example[.]com:8989/bad']
أداة سطر أوامر مضمنة أيضًا:
$ iocextract -h
usage: iocextract [-h] [--input INPUT] [--output OUTPUT] [--extract-emails]
[--extract-ips] [--extract-ipv4s] [--extract-ipv6s]
[--extract-urls] [--extract-yara-rules] [--extract-hashes]
[--custom-regex REGEX_FILE] [--refang] [--strip-urls]
[--wide]
Advanced Indicator of Compromise (IOC) extractor. If no arguments are
specified, the default behavior is to extract all IOCs.
optional arguments:
-h, --help show this help message and exit
--input INPUT default: stdin
--output OUTPUT default: stdout
--extract-emails
--extract-ips
--extract-ipv4s
--extract-ipv6s
--extract-urls
--extract-yara-rules
--extract-hashes
--custom-regex REGEX_FILE file with custom regex strings, one per line, with one capture group each
--refang default: no
--strip-urls remove possible garbage from the end of urls. default: no
--wide preprocess input to allow wide-encoded character matches. default: no
ملاحظة: فقط عناوين URL والبريد الإلكتروني وعناوين IPv4 يمكن "إعادة تنسيقها".
هل تبحث عن...
س. استخراج مؤشرات اختراق ربما معرّضة من نص عادي، مثل محتويات التغريدات أو منشورات المدونات؟
ج. نعم! هذا بالضبط ما صُمم iocextract من أجله، وهو حيث يؤدي أفضل أداء. هل تريد الذهاب خطوة أبعد وأتمتة الاستخراج والتخزين؟ تحقق من ThreatIngestor.
س. استخراج عناوين URL التي تم ترميزها بصيغة hex أو base64؟
ج. نعم، لكن CLI قد لا يعطيك أفضل النتائج. جرب كتابة نص Python واستدعاء
iocextract.extract_encoded_urlsمباشرة.
ملاحظة: على الأرجح ستحصل على قمامة إضافية في نهاية عناوين URL.
س. استخراج مؤشرات اختراق لم يتم تعريضها، من HTML/XML/RTF؟
ج. ربما، لكن يجب أن تفكر في استخدام علامة
--strip-urlsفي CLI (أو معاملstrip=Trueفي المكتبة)، وقد لا تزال تحصل على بعض القمامة الإضافية في مخرجاتك. إذا كنت تستخرج من HTML، فكر في استخدام شيء مثل Beautiful Soup لعزل محتوى النص أولاً، ثم تمريره إلى iocextract، مثل هذا.