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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
warcannon — عالية السرعة/منخفضة التكلفة CommonCrawl RegExp في Node.js | Kitploit
أدوات/GitHubGitHub/c6fc/warcannon
الاستخبارات مفتوحة المصدر (OSINT)تسريب البياناتجمع المعلوماتأمن السحابةالأدوات والمكوناتزاحف الويب
GitHubc6fc/warcannon

warcannon

عالية السرعة/منخفضة التكلفة CommonCrawl RegExp في Node.js

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

الأكثر شعبية

عرض الكل →

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

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

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

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

WARCannon - معالجة متوازية قوية بشكل كارثي لـ WARC

Image

تم بناء WARCannon لتبسيط وتقليل تكلفة عملية 'البحث في الإنترنت'.

مع WARCannon، يمكنك:

  • بناء واختبار أنماط التعبيرات العادية (regex) ضد بيانات Common Crawl الحقيقية
  • تحميل مجموعات بيانات Common Crawl بسهولة للمعالجة المتوازية
  • توسيع قدرات الحوسبة لمعالجة ملفات WARC بشكل غير متزامن وبسعة غير معقولة بصراحة
  • تخزين النتائج واسترجاعها بسهولة

كيف يعمل

يستفيد WARCannon من الاستخدام الذكي لتقنيات AWS للتوسع أفقيًا إلى أي سعة، وتقليل التكلفة من خلال أساطيل الفوري (spot fleets) ونقل البيانات في نفس المنطقة، وسحب البيانات من S3 بسرعات لا تصدق (تصل إلى 100 جيجابت في الثانية لكل عقدة)، والتوازي عبر مئات نوى وحدة المعالجة المركزية، وإبلاغ الحالة عبر DynamoDB وCloudFront، وتخزين النتائج عبر S3.

بشكل عام، يمكن لـ WARCannon معالجة أنماط متعددة من التعبيرات العادية عبر 400 تيرابايت في بضع ساعات بتكلفة حوالي 30 دولارًا.

التثبيت عبر CloudShell

أسرع وأسهل طريقة للبدء هي استخدام AWS CloudShell. فقط الصق هذا السطر الواحد:

root@kitploit:~
source <(curl https://raw.githubusercontent.com/c6fc/warcannon/master/cloudshell/deploy.sh)

إذا كنت تريد استخدام فرع غير master من WARCannon، فقط اكتب:

root@kitploit:~
export GIT_BRANCH=branch_name
source <(curl https://raw.githubusercontent.com/c6fc/warcannon/$GIT_BRANCH/cloudshell/deploy.sh)

ملاحظة: يستخدم نشر CloudShell تخزينًا مؤقتًا، مما يعني فقدان أنماط regex المخصصة عند خروج CloudShell. إذا كنت ستستخدم WARCannon بشكل متكرر، أوصي باستخدام 'التثبيت المحلي' أدناه.

التثبيت المحلي

يتطلب WARCannon تثبيت ما يلي:

  • awscli (v2)
  • cmake3
  • node.js (v17.0.1+)

نصيحة احترافية: للحفاظ على الأشياء نظيفة ومميزة عن غيرها مما قد يكون لديك في AWS، يُوصى بشدة بنشر WARCannon في حساب جديد. يمكنك إنشاء حساب جديد بسهولة من وحدة تحكم 'Organizations' في AWS. بتعبير 'موصى به بشدة'، أعني 'لا تقم بتثبيت هذا بجانب أشياء أخرى بجدية'.

أولاً، استنسخ المستودع وانسخ الإعدادات المثال.

root@kitploit:~
$ git clone [email protected]:c6fc/warcannon.git
$ cd warcannon
warcannon$ cp settings.json.sample settings.json

قم بتعديل settings.json حسب رغبتك:

الإعدادات المطلوبة

  • nodeInstanceType: مصفوفة من أنواع المثيلات لاستخدامها في المعالجة المتوازية. أنواع 'c' هي الأفضل قيمة لهذا الغرض، ويمكن استخدام أي حجم. القيمة الموصى بها للحملات الحقيقية هي ["c5n.18xlarge"].
  • nodeCapacity: عدد العقد المطلوب طلبها أثناء المعالجة المتوازية. ستكون العقد الناتجة توزيعًا عشوائيًا لأنواع nodeInstanceTypes التي تحددها.
  • nodeParallelism: عدد ملفات WARC المتزامنة للمعالجة لكل vCPU. الرقم 2 هو رقم جيد هنا. إذا كانت العقد لا تحتوي على ذاكرة وصول عشوائي كافية للتشغيل عند هذا المستوى من التوازي (كما قد تواجهه مع مثيلات من نوع 'c')، فستعمل بدلاً من ذلك بأعلى مستوى أمان من التوازي.
  • nodeMaxDuration: أقصى عمر افتراضي لعقد الحوسبة بالثواني. سيتم إنهاء العقد تلقائيًا بعد هذا الوقت إذا لم تكتمل المهمة بعد. القيمة الافتراضية هي 24 ساعة.

الإعدادات الاختيارية (اتركها بالكامل إذا لم تكن مستخدمة)

  • sshKeyName: اسم مفتاح SSH الخاص بـ EC2 موجود بالفعل في us-east-1.
  • allowSSHFrom: قناع CIDR للسماح باتصال SSH منه. سيكون هذا عادةً &lt;yourpublicip&gt;/32

للتثبيت، قم بتشغيل هذا:

root@kitploit:~
$ npm install
$ npm link
$ warcannon deploy

بداية سريعة

تشغيل حملة في WARCannon يستخدم سير عمل بسيط وسهل المتابعة يمكن وصفه بشكل أفضل في هذه الخطوات القليلة:

  1. انشر البنية التحتية: warcannon deploy
  2. قم بتطوير أنماط regex ثم اختبرها محليًا: warcannon testLocal -s
  3. تحقق من أنماط regex في AWS عبر Lambda: warcannon test
  4. أظهر الزحفات المتاحة: warcannon list 2022
  5. املأ قائمة الانتظار بالزحف الذي تختاره: warcannon populate 2022-21
  6. قم بتنفيذ الحملة: warcannon fire
  7. انتظر حتى تنتهي الحملة، ثم استرجع النتائج من S3 باستخدام warcannon syncResults

تابع القراءة لفهم أكثر تفصيلاً لكل خطوة.

استخدام WARCannon

يغذي WARCannon بواسطة Common Crawl عبر برنامج AWS Open Data. يتميز Common Crawl بأن البيانات التي يسترجعها عناكبها لا تلتقط نص موقع الويب فحسب، بل تلتقط أيضًا محتوى نصيًا آخر مثل JavaScript وTypeScript وHTML الكامل وCSS وما إلى ذلك. من خلال إنشاء تعبيرات عادية مناسبة قادرة على تحديد المكونات الفريدة، يمكن للباحثين تحديد مواقع الويب بناءً على التقنيات التي تستخدمها، دون لمس الموقع نفسه أبدًا. المشكلة هي أن هذا يتطلب تحليل مئات التيرابايت من البيانات، وهي مهمة صعبة بغض النظر عن الموارد المتاحة لك. لحسن الحظ، يوفر WARCannon عدة أدوات يمكنك استخدامها لإنجاز ذلك!

تطوير التعبيرات العادية

البحث في الإنترنت ليس لضعاف القلوب، لكن البدء بمنخل فعال هو الخطوة الأولى. يدعم WARCannon ذلك من خلال تمكين التحقق المحلي من التعبيرات العادية ضد بيانات Common Crawl الحقيقية. أولاً، افتح lambda_functions/warcannon/matches.js وقم بتعديل كائن regex_patterns ليشمل التعبيرات العادية التي ترغب في استخدامها بتنسيق name: pattern. إليك مثال من مجموعة البحث الافتراضية:

root@kitploit:~
exports.regex_patterns = {
	"access_key_id": /(\'A|"A)(SIA|KIA|IDA|ROA)[JI][A-Z0-9]{14}[AQ][\'"]/g,
};

سيتم حفظ السلاسل المطابقة لهذا التعبير تحت المفتاح المقابل في النتائج؛ access_key_id في هذه الحالة. نصيحة احترافية: استخدم RegExr بتنسيق 'JavaScript' لبناء واختبار التعبيرات العادية ضد المطابقات المعروفة الجيدة.

لديك أيضًا خيار التقاط النتائج فقط من نطاقات محددة. للقيام بذلك، ما عليك سوى ملء مصفوفة domains بأسماء النطاقات المؤهلة بالكامل (FQDNs) التي ترغب في تضمينها. يُوصى بتركها فارغة [] لأنها لا تستحق العناء تقريبًا أبدًا (الجهد المحفوظ في المعالجة صغير جدًا)، ولكن يمكن أن تكون مفيدة في بعض الحالات المحددة.

root@kitploit:~
exports.domains = ["example1.com", "example2.com"];

بمجرد ملء matches.js، قم بتشغيل الأمر التالي:

root@kitploit:~
warcannon$ warcannon testLocal -s

يمكنك اختياريًا إضافة مسار إلى ملف WARC في دلو S3 commoncrawl إذا أردت، ولكن سيتم استخدام مسار افتراضي ثابت بخلاف ذلك.

سيقوم WARCannon بمعالجة ملف WARC بتدفق (أو تنزيله بالكامل إذا حذفت -s) للعثور على المطابقات التي قمت بتكوينها. سيحفظ WARCannon النتائج في مجلد ~/.warcannon/ عند المقاطعة بـ ctrl+c أو عند انتهاء المعالجة. هذا يسهل اختبار المطابقات الشائعة بسرعة كبيرة مع الحد الأدنى من عرض النطاق الترددي.

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

Image

إجراء معالجة مخصصة

أحيانًا لا يكون نمط regex البسيط كافيًا بمفرده، وتحتاج إلى بعض الخطوات الإضافية لضمان إرجاع المعلومات الصحيحة. في هذه الحالة، مجرد إضافة دالة إلى كائن exports.custom_functions بنفس اسم المفتاح يسمح لك بإجراء أي معالجة إضافية تراها مناسبة.

root@kitploit:~
exports.regex_patterns = {
	"access_key_id": /(\'A|"A)(SIA|KIA|IDA|ROA)[JI][A-Z0-9]{14}[AQ][\'"]/g,
};

exports.custom_functions = {
	"access_key_id": function(match) {
		// تجاهل المطابقات التي تحتوي على 'EXAMPLE' في النص، لأن هذا شائع في التوثيق.
		if (match.text(/EXAMPLE/) != null) {
			// إرجاع قيمة منطقية 'false' يتجاهل المطابقة.
			return false
		}
	}
}

ملاحظة: WARCANNON مصمم لمعالجة النصوص بسرعات مذهلة. بينما من الممكن بالتأكيد إجراء أي نوع من العمليات التي ترغب فيها، فإن إضافة وظائف مخصصة عالية زمن الوصول مثل استدعاءات الشبكة يمكن أن تزيد بشكل كبير من وقت المعالجة والتكاليف. قد تؤدي استدعاءات الشبكة أيضًا إلى الكثير من الاستدعاءات لموقع ويب، مما قد يجعلك في مشكلة. كن ذكيًا في كيفية استخدام هذه الوظائف.

إجراء اختبار لمرة واحدة في AWS

يمكن أن تكون تكاليف AWS مصدر قلق، خاصة عندما تبحث فقط عن إجراء بعض الأبحاث. تم بناء WARCannon للسماح بالتنفيذات الفردية بالإضافة إلى الحملات الكاملة، حتى تكون واثقًا من النتائج التي ستحصل عليها. بمجرد أن تصبح راضيًا عن النتائج التي تحصل عليها باستخدام testLocal، يمكنك نشر المطابقات المحدثة وإجراء اختبار مدعوم من السحابة بسهولة:

root@kitploit:~
warcannon$ warcannon deploy
warcannon$ warcannon test

مرة أخرى، يمكنك اختياريًا تضمين مسار WARC إذا أردت، على الرغم من أنه ليس مطلوبًا.

سيقوم هذا بتنفيذ دالة Lambda بشكل متزامن مع التعبيرات العادية التي قمت بتكوينها، وإرجاع النتائج فورًا. تستغرق هذه العملية حوالي 2.5 دقيقة، لذا لا تتردد في الانتظار بينما تقوم بسحرها.

إطلاق حملة حقيقية

بمجرد أن تكون راضيًا عن النتائج التي تحصل عليها في Lambda، فأنت جاهز للبحث في الإنترنت بشكل حقيقي. سنستعرض أولاً بعض الأعمال الأساسية، ثم نبدأ.

تنظيف قائمة الانتظار

يستخدم WARCannon خدمة قائمة انتظار بسيطة من AWS (SQS) لتوزيع العمل على عقد الحوسبة. لضمان عدم تلوث نتائجك بتشغيلات سابقة، يمكنك إخبار WARCannon بتفريغ قائمة الانتظار:

root@kitploit:~
warcannon$ warcannon emptyQueue
[+] تم مسح [ 15 ] رسالة من قائمة الانتظار

يمكنك بعد ذلك التحقق من حالة قائمة الانتظار:

root@kitploit:~
warcannon$ warcannon status
	Deployed: [ YES ]; SQS Status: [ EMPTY ]
	Job Status: [ INACTIVE ]
	Active job url: https://d201offlnmhkmd.cloudfront.net

تحقق من الأمور التالية قبل المتابعة:

  1. قائمة انتظار SQS فارغة
  2. حالة المهمة 'INACTIVE'

ملء قائمة الانتظار (بسيط)

لإنشاء رسائل قائمة الانتظار التي ستستهلكها عقد الحوسبة، يجب أولاً ملء SQS ببيانات الزحف. يحتوي WARCannon على عدة أوامر للمساعدة في ذلك، بدءًا من إمكانية عرض الفحوصات المتاحة. في هذه الحالة، دعنا ننظر إلى الفحوصات المتاحة لعام 2021:

root@kitploit:~
warcannon$ warcannon list 2021
CC-MAIN-2021-04
CC-MAIN-2021-10

لدينا فحصان يطابقان السلسلة "2021" للعمل معهم. يمكننا الآن توجيه WARCannon لملء قائمة الانتظار بناءً على أحد هذه الفحوصات. هذه المرة، نحتاج إلى تقديم معلمة تحدد بشكل فريد أحد الفحوصات. "2021-04" ستفعل الغرض. يمكننا اختيار ملء جزء فقط من الفحص عن طريق تحديد عدد من القطع وحجم القطعة، لكننا سنتخطى ذلك الآن.

root@kitploit:~
warcannon$ warcannon populate 2021-04
{تم إنشاء 799 قطعة من 100 من 79840 مقطعًا متاحًا"
    "StatusCode": 200,
    "ExecutedVersion": "$LATEST"
}

ملء قائمة الانتظار عبر Athena (متقدم)

أثناء النشر، يقوم WARCannon تلقائيًا بتوفير قاعدة بيانات (warcannon_commoncrawl) ومجموعة عمل (warcannon) في Athena يمكن استخدامها للاستعلام بسرعة عن المعلومات من CommonCrawl. يمكن أن يكون هذا مفيدًا بشكل خاص لملء الحملات المتفرقة بناءً على استعلامات معينة. على سبيل المثال، سيبحث الاستعلام التالي عن ملفات WARC التي تحتوي على ردود من 'example.com'

root@kitploit:~
SELECT
	warc_filename,
	COUNT(url_path) as num
FROM
	warcannon_commoncrawl.ccindex
WHERE
	subset = 'warc'	AND
	url_host_registered_domain IN ('example.com') AND
	crawl = 'CC-MAIN-2021-04'
GROUP BY warc_filename
ORDER BY num DESC

يمكنك استخدام وحدة تحكم Athena لضبط نتائجك، ولكن يجب تشغيل الاستعلام من سطر أوامر WARCannon إذا كنت تنوي ملء مهمة به:

root@kitploit:~
warcannon queryAthena "SELECT warc_filename, COUNT(url_path) as num FROM warcannon_commoncrawl.ccindex WHERE subset = 'warc' AND url_host_registered_domain IN ('example.com') AND crawl = 'CC-MAIN-2021-04' GROUP BY warc_filename ORDER BY num DESC"

[+] Query Exec Id: 0319486e-1846-491c-badf-2e23ae213974 .. SUCCEEDED

يمكن لـ WARCannon بعد ذلك استخدام نتائج استعلام لملء قائمة الانتظار، ويتم ذلك بناءً على عمود warc_filename من مجموعة النتائج. على هذا النحو، يُوصى إما بـ group by هذا العمود أو استخدام distinct() لتجنب التكرارات. سيقوم WARCannon بإلقاء خطأ إذا لم يكن هذا الحقل موجودًا. املأ قائمة الانتظار بنتائج Athena عن طريق تمرير معرف تنفيذ الاستعلام إلى أمر populateAthena.

root@kitploit:~
warcannon populateAthena 0319486e-1846-491c-badf-2e23ae213974

{تم إنشاء 26 قطعة من 10 من 251 مقطعًا متاحًا"
    "StatusCode": 200,
    "ExecutedVersion": "$LATEST"
}

ملاحظة: بينما قد يبدو ملء مهمة متفرقة لنطاق واحد فكرة جيدة، إلا أنها غالبًا لا تكون كذلك. تميل الردود من نطاق واحد إلى الانتشار على نطاق واسع عبر مجموعة فرعية كبيرة من ملفات WARC. يمكن رؤية ذلك بوضوح باستخدام الاستعلام المثال أعلاه لرؤية أنه من بين حوالي 150,000 سجل في كل ملف WARC، يمكن أن يكون أكبر نتيجة مفردة للمواقع متوسطة الحجم في خانة الآحاد.

إطلاق WARCannon

مع امتلاء قائمة الانتظار، نحن جاهزون للإطلاق. سيقوم WARCannon بعدة فحوصات سلامة للتأكد من أن كل شيء على ما يرام، ثم يعرض لك تكوين الحملة ويمنحك فرصة أخيرة للإلغاء قبل الانتهاء من الطلب.

root@kitploit:~
warcannon$ warcannon fire
[!] سيطلب هذا [ 6 ] مثيلات فورية من النوع [ m5n.24xlarge, m5dn.24xlarge ]
    تستمر لمدة [ 86400 ] ثانية.

لتغيير هذا، قم بتعديل إعداداتك في settings.json وقم بتشغيل warcannon deploy
--> هل أنت مستعد للإطلاق؟ [Yes]: 

اسحب الزناد بالرد بـ 'Yes'.

root@kitploit:~
--> هل أنت مستعد للإطلاق؟ [Yes]: Yes
{
    "SpotFleetRequestId": "sfr-03dd32b8-51f7-4c8e-802b-a702fc3c8c95"
}

[+] تم إرسال طلب أسطول فوري، ويجب أن تبدأ العقد في الظهور خلال ~5 دقائق.
    راقب حالة العقد والتقدم على https://d201offlnmhkmd.cloudfront.net

يتضمن الرد رابطًا إلى عنوان URL الفريد لحالتك، حيث يمكنك مراقبة تقدم حملتك وأداء كل عقدة.

Image

الحصول على النتائج

يتم تخزين نتائج WARCannon في S3 بتنسيق JSON، مقسمة حسب كل عقدة مسؤولة عن إنتاج النتائج. يتم تخزين نتائج Athena في نفس الدلو تحت البادئة /athena/. يمكنك مزامنة نتائج حملة إلى مجلد ~/.warcannon/ على جهازك المحلي باستخدام أمر syncResults.

root@kitploit:~
warcannon syncResults

sync: s3://warcannon-results-202...
sync: s3://warcannon-results-202...
sync: s3://warcannon-results-202...
...

يمكنك بعد ذلك تفريغ دلاء النتائج باستخدام clearResults

root@kitploit:~
warcannon clearResults

delete: s3://warcannon-results-202...
delete: s3://warcannon-results-202...
delete: s3://warcannon-results-202...
...
[+] تم حذف [ 21 ] ملفًا من S3.

قناة Discord الرسمية

لديك أسئلة، تحتاج مساعدة، تريد المساهمة أو التباهي بالفوز؟ تعال إلى Discord!

Official c6fc Discord

تنزيل الأداة