Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
iocextract — مستخرج مؤشرات الاختراق (IOC) المنزوعة الأنياب. | Kitploit
أدوات/GitHubGitHub/pedramamini/iocextract
إدارة مؤشرات الاختراق (IOC)الاستخبارات مفتوحة المصدر (OSINT)موجزات ومجمعات التهديداتالتحقيق الجنائي الرقميجمع المعلوماتتحليل البرمجيات الخبيثةالتحاليل الرقمية الجنائيةاستخبارات التهديدات
GitHubpedramamini/iocextract

iocextract

مستخرج مؤشرات الاختراق (IOC) المنزوعة الأنياب.

عرض المستودع
584924منذ 2 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
الموقع الإلكتروني

iocextract

Developed by InQuest Build Status Documentation Status PyPI Version

مؤشر الاختراق (IOC) مستخرج لبعض القطع الأثرية الأكثر شيوعًا.

جدول المحتويات

  • نظرة عامة
    • المشكلة
    • الحل الذي نقدمه
    • حالة استخدام نموذجية
  • التثبيت
  • الاستخدام
    • المكتبة
    • واجهة سطر الأوامر
  • معلومات مفيدة
    • الأسئلة الشائعة
    • مزيد من التفاصيل
    • تعبير عادي مخصص
    • مشاريع ذات صلة
    • المساهمة

نظرة عامة

حزمة iocextract هي مكتبة وواجهة سطر أوامر (CLI) لاستخراج عناوين URL وعناوين IP وتجمعات MD5/SHA وعناوين البريد الإلكتروني وقواعد YARA من نصوص. تتيح لك استخراج مؤشرات الاختراق المشفرة و"المعرّضة" (defanged) مع خيار فك تشفيرها أو إعادة تنسيقها (refang).

المشكلة

من الممارسات الشائعة لمحللي البرامج الضارة أو برامج نقاط النهاية "تعريض" مؤشرات الاختراق مثل عناوين URL وIP، لمنع التعرض العرضي لمحتوى ضار حي. القدرة على استخراج وتجميع هذه المؤشرات غالبًا ما تكون ذات قيمة للمحللين. للأسف، غالبًا ما تمر أدوات "استخراج مؤشرات الاختراق" الحالية دون التعرف عليها، لأنها لا تُلتقط بواسطة التعبير العادي القياسي.

على سبيل المثال، تقنية التعريض البسيطة المتمثلة في وضع أقواس حول النقاط:

root@kitploit:~
127[.]0[.]0[.]1

الأدوات الحالية التي تستخدم تعبيرًا عاديًا بسيطًا لعناوين IP ستتجاهل هذا المؤشر بالكامل.

الحل الذي نقدمه

من خلال الجمع بين تعبير عادي مصمم خصيصًا ومعالجة لاحقة مخصصة، نتمكن من اكتشاف مؤشرات الاختراق "المعرّضة" وإزالة تشويشها. هذا يوفر الوقت والجهد للمحلل، الذي قد يضطر إلى العثور يدويًا على المؤشرات وتحويلها إلى تنسيق قابل للقراءة آليًا.

حالة استخدام نموذجية

ينشر العديد من مستخدمي Twitter عناوين C2 أو معلومات مؤشرات اختراق قيمة أخرى بعناوين URL معرّضة. على سبيل المثال، هذه التغريدة من @InQuest:

root@kitploit:~
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:

root@kitploit:~
https://researchcenter.paloaltonetworks.com/2018/02/unit42-sofacy-attacks-multiple-government-entities/
hotfixmsupload[.]com
cdnverify[.]net

تمرير refang=True في وقت الاستخراج سيزيل التشويش، ولكن نظرًا لأن هذه مؤشرات اختراق حقيقية، دعنا نتركها معرّضة في توثيقنا.

التثبيت

قد تحتاج إلى تثبيت رؤوس تطوير Python لتثبيت اعتماد regex. على أنظمة Ubuntu/Debian، جرب:

root@kitploit:~
sudo apt-get install python-dev

ثم قم بتثبيت iocextract من pip:

root@kitploit:~
pip install iocextract

إذا واجهت مشاكل في التثبيت على Windows، جرب تثبيت regex مباشرة عن طريق تنزيل العجلة المناسبة من PyPI والتثبيت عبر pip:

root@kitploit:~
pip install regex-2018.06.21-cp27-none-win_amd64.whl

الاستخدام

المكتبة

جرب استخراج بعض عناوين URL المعرّضة:

root@kitploit:~
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)، أو إزالة طرق التشويش الشائعة من مؤشرات الاختراق:

root@kitploit:~
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

إذا كنت لا تريد تعريض مؤشرات الاختراق المستخرجة على الإطلاق أثناء الاستخراج، يمكنك تعطيل ذلك أيضًا:

root@kitploit:~
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 يمكنه معالجة مدخلات كبيرة جدًا، بتكلفة منخفضة جدًا. ومع ذلك، إذا كنت بحاجة لسبب ما للتكرار على المؤشرات أكثر من مرة، فسيتعين عليك حفظ النتائج كقائمة:

root@kitploit:~
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']

واجهة سطر الأوامر

أداة سطر أوامر مضمنة أيضًا:

root@kitploit:~
$ 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، مثل هذا.

س. استخراج مؤشرات اختراق لم يتم تعريضها، من بيانات ثنائية مثل الملفات التنفيذية، أو مدخلات كبيرة جدًا؟

ج. يوجد إصدار مبسط جدًا من هذا متاح عند الاستخدام كمكتبة، لكنه يتطلب معامل defang=False وقد يفوت بعض المؤشرات. التعبير العادي في iocextract مصمم ليكون مرنًا لالتقاط المؤشرات المعرّضة. إذا كنت غير قادر على جمع المعلومات التي تحتاجها، فكر في استخدام شيء مثل Cacador بدلاً من ذلك.

مزيد من التفاصيل

تدعم هذه المكتبة حاليًا مؤشرات الاختراق التالية:

  • عناوين IP
    • IPv4 مدعوم بالكامل
    • IPv6 مدعوم جزئيًا
  • عناوين URL
    • مع محدد البروتوكول: http, https, tcp, udp, ftp, sftp, ftps
    • مع مرساة [.]، حتى بدون محدد بروتوكول
    • عناوين URL IPv4 و IPv6 (RFC2732) مدعومة
    • عناوين URL مشفرة بصيغة hex مع محدد بروتوكول: http, https, ftp
    • عناوين URL مشفرة بصيغة URL مع محدد بروتوكول: http, https, ftp, ftps, sftp
    • عناوين URL مشفرة بصيغة base64 مع محدد بروتوكول: http, https, ftp
  • عناوين البريد الإلكتروني
    • مدعومة جزئيًا، مع التثبيت على @ أو at
  • قواعد YARA
    • مع الواردات والتضمينات والتعليقات
  • التجمّعات (Hashes)
    • MD5
    • SHA1
    • SHA256
    • SHA512
  • أرقام الهواتف
  • تعبير عادي مخصص
    • مع مجموعة التقاط واحدة بالضبط

بالنسبة لعناوين IPv4، تقنيات التعريض التالية مدعومة:

بالنسبة لعناوين البريد الإلكتروني، تقنيات التعريض التالية مدعومة:

بالنسبة لعناوين URL، تقنيات التعريض التالية مدعومة:

ملاحظة: الجداول أعلاه ليست شاملة، وأنماط URL/تعريض أخرى قد تُستخرج بشكل صحيح. إذا لاحظت شيئًا مفقودًا أو لا يعمل بشكل صحيح، لا تتردد في إعلامنا عبر مشكلات GitHub.

تم إنشاء التعبير العادي لـ base64 باستخدام أداة regex base64 لـ @deadpixi.

تعبير عادي مخصص

إذا كنت ترغب في استخدام CLI لاستخراج مؤشرات الاختراق باستخدام تعبير عادي مخصص، قم بإنشاء ملف نصي عادي يحتوي على سلسلة تعبير عادي واحدة لكل سطر، ومرره باستخدام علامة --custom-regex. تأكد من أن كل سلسلة تعبير عادي تتضمن مجموعة التقاط واحدة بالضبط.

على سبيل المثال:

root@kitploit:~
http://(example\.com)/
(?:https|ftp)://(example\.com)/

سوف يستخرج ملف التعبير العادي المخصص هذا النطاق example.com من عناوين URL المتطابقة. لن يتم تضمين مجموعة عدم التقاط (?: ) في التطابقات.

إذا كنت ترغب في استخراج التطابق بأكمله، فقط ضع أقواسًا حول سلسلة التعبير العادي بأكملها، مثل هذا:

root@kitploit:~
(https?://.*?.com)

إذا كان تعبيرك العادي غير صالح، سترى رسالة خطأ مثل هذه:

root@kitploit:~
Error in custom regex: missing ) at position 5

إذا كان تعبيرك العادي لا يتضمن مجموعة التقاط، سترى رسالة خطأ مثل هذه:

root@kitploit:~
Error in custom regex: no such group

استخدم دائمًا مجموعة التقاط واحدة عند العمل مع تعبير عادي مخصص. إليك مثال سريع:

root@kitploit:~
[
    r'(my regex)',  # This yields 'my regex' if the pattern matches
    r'my (re)gex',  # This yields 're' if the pattern matches
]

استخدام أكثر من مجموعة التقاط واحدة قد يسبب نتائج غير متوقعة. تحقق من هذا المثال:

root@kitploit:~
[
    r'my regex',  # This doesn't yield anything
    r'(my) (re)gex',  # This yields 'my' if the pattern matches
]

لماذا؟ لأن النتيجة ستعطي دائمًا أول تطابق مجموعة من كل تعبير عادي فقط.

لاستعلامات التعبير العادي الأكثر تعقيدًا، يمكنك الجمع بين مجموعات التقاط وعدم التقاط مثل هذا:

root@kitploit:~
[
    r'(?:my|your) (re)gex',  # This yields 're' if the pattern matches
]

يمكنك الآن مقارنة بناء (?: ) لمجموعات عدم التقاط مقابل بناء ( ) لمجموعة التقاط.

مشاريع ذات صلة

إذا كان iocextract لا يناسب حالة الاستخدام الخاصة بك، توجد عدة مشاريع مماثلة. تحقق من علامات defang و indicators-of-compromise على GitHub، بالإضافة إلى:

  • Cacador في Go
  • ioc-extractor في JavaScript
  • Cyobstract في Python

إذا كنت ترغب في أتمتة استخراج مؤشرات الاختراق وإثرائها وتصديرها والمزيد، تحقق من ThreatIngestor.

إذا كنت تعمل مع قواعد YARA، قد تكون مهتمًا بـ plyara.

المساهمة

إذا كان لديك تقنية تعريض لا تمر عبر المستخرج، أو إذا وجدت أي أخطاء، فإن طلبات السحب والمشكلات مرحب بها دائمًا. المكتبة منشورة تحت رخصة GPL-2.0 الرخصة.

من يستخدم iocextract؟

  • InQuest
  • PacketTotal

هل تستخدمه؟ تريد رؤية موقعك مدرجًا هنا؟ أخبرنا!

تنزيل الأداة
التقنيةمعرّضةمعاد تنسيقها
. -> [.]1[.]1[.]1[.]11.1.1.1
. -> (.)1(.)1(.)1(.)11.1.1.1
. -> \.1\.1\.1\.11.1.1.1
جزئية1[.1[.1.]11.1.1.1
أي مجموعة1.)1[.1.)11.1.1.1
التقنيةمعرّضةمعاد تنسيقها
. -> [.]me@example[.]com[email protected]
. -> (.)me@example(.)com[email protected]
. -> {.}me@example{.}com[email protected]
. -> _dot_me@example dot com[email protected]
@ -> [@]me[@]example.com[email protected]
@ -> (@)me(@)example.com[email protected]
@ -> {@}me{@}example.com[email protected]
@ -> _at_me at example.com[email protected]
جزئيةme@} example[.com[email protected]
إضافة مسافاتme@example [.] com[email protected]
أي مجموعةme @example [.)com[email protected]
التقنيةمعرّضةمعاد تنسيقها
. -> [.]example[.]com/pathhttp://example.com/path
. -> (.)example(.)com/pathhttp://example.com/path
. -> \.example\.com/pathhttp://example.com/path
جزئيةhttp://example[.com/pathhttp://example.com/path
/ -> [/]http://example.com[/]pathhttp://example.com/path
Cisco ESAhttp:// example .com /pathhttp://example.com/path
:// -> __http__example.com/pathhttp://example.com/path
:// -> :\\http:\\example.com/pathhttp://example.com/path
: -> [:]http[:]//example.com/pathhttp://example.com/path
hxxphxxp://example.com/pathhttp://example.com/path
أي مجموعةhxxp__ example( .com[/]pathhttp://example.com/path
مشفر بـ Hex687474703a2f2f6578616d706c652e636f6d2f70617468http://example.com/path
مشفر بـ URLhttp%3A%2F%2fexample%2Ecom%2Fpathhttp://example.com/path
مشفر بـ Base64aHR0cDovL2V4YW1wbGUuY29tL3BhdGgKhttp://example.com/path