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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/nccgroup/cowcloud
أمن البنية التحتية السحابيةأطر اختبار الاختراقماسحات الثغرات الأمنيةالبرمجة النصية والأتمتةجمع المعلوماتأمن السحابةDevSecOpsالأدوات والمكونات
GitHubnccgroup/cowcloud

cowcloud

حل AWS Serverless لتوزيع أعباء عمل الاستطلاع وفحص الثغرات الأمنية. قدّم المهام عبر واجهة الويب؛ وتنفّذ عُقد EC2 نصوص Python المخصصة باستخدام أدوات مثل Nmap.

602منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

CowCloud

حل serverless لتوزيع أعباء العمل في AWS

تم إنشاء CowCloud في الأساس لتشغيل أدوات الاستطلاع وفحوصات الثغرات الأمنية بطريقة موزعة؛ على سبيل المثال، قد يكون أحد حالات الاستخدام من قبل صيادي الثغرات (bug bounty hunters). يهدف هذا الحل إلى تجريد المستخدمين النهائيين من العمل الأساسي المطلوب لتوزيع أعباء العمل في AWS. يوفر CowCloud للمستخدمين واجهة ويب سهلة لعرض المهام الجديدة وإنشائها، والتي يتم استهلاكها لاحقًا بواسطة كود Python يعمل على العقد العمالية (حالات EC2). من المقصود أن يتم تخصيص كود Python وكذلك AMIs الخاصة بـ EC2. كمثال، لنفترض أنك تريد تشغيل فحوصات Nmap. في هذه الحالة، يمكنك ببساطة اختيار AMI من كتالوج AMI وتحديث الحقل image_id في Terraform/ec2_module/ec2_module.tf. بعد ذلك، يجب تحديث ملف ec2py/template.py لتخصيص وسائط فحص Nmap (-Pn, -p 443, etc). أخيرًا، يجب تحديث الحقل user_data في ملف إعداد Terraform/ec2_module/ec2_module.tf لتثبيت Nmap وتبعياته.

خيار آخر هو تثبيت وتشغيل العديد من الأدوات التجارية، وفي هذه الحالة قد ترغب في إنشاء حالة EC2 خاصة بك أو snapshot. في هذه الحالة ستقوم بتثبيت جميع التبعيات وتفعيل التراخيص بحيث يمكنك استخدام هذا الـ AMI كصورة ذهبية (gold image) لعمالك

Screenshot

يمكن تقسيم CowCloud إلى ثلاثة مكونات رئيسية:

  • إعداد Terraform
  • واجهة أمامية React JS
  • تطبيق Python يعمل على العقد العمالية

هذه هي الميزات الرئيسية:

  • يستخدم الحل Amazon Cognito (مع مجموعة مستخدمين) ليتمكن المستخدمون من التسجيل وتسجيل الدخول إلى تطبيق الويب
  • تطبيق React JS كتطبيق للواجهة الأمامية. تعرض الواجهة الأمامية المهام والعمال وتسمح لك بإضافة مهام جديدة
  • بوابة API مع تكامل Lambda للتعامل مع CORS والتفاعل مع بعض دوال Lambda لإنشاء المعلومات والحصول عليها من DynamoDB
  • CloudFront لإدارة SSL والذاكرة المؤقتة (cache)
  • WAF مع قواعد وشروط لعناوين IP لتقييد الوصول إلى تطبيق الويب (هذا اختياري)
  • تُستخدم حاويات S3 لتخزين نتائج التنفيذ وتطبيق الواجهة الأمامية؛ وتُستخدم حاوية S3 منفصلة كمستودع أكواد لتطبيق Python.
  • تطبيق Python كأساس لتشغيل المهام على حالات EC2 (العمال)، ويمكن تقسيم إجراءات الأداة إلى عدد من الخطوات:
    • يستهلك تطبيق Python الرسائل
    • يشغّل الفحوصات
    • يضغط المخرجات
    • ويشفّر المخرجات باستخدام AES256-CBC وكلمة مرور
    • ثم يرفع النتيجة إلى حاوية S3
  • في كل مرة يتم فيها إنشاء عامل جديد، يتم سحب مستودع Python من حاوية S3 ثم يتم تنفيذ ملف ec2py المضمّن فيه.
  • في كل مرة يتم فيها إنشاء عامل جديد، يمكن تخصيص EIP تلقائيًا للحالة (هذا اختياري)
  • مجموعات سجلات CloudWatch لتخزين السجلات من مصادر مختلفة مثل أخطاء Lambda، والاستثناءات التي تحدث في أداة Python الخاصة بـ ec2app، وبوابة API، وسجلات Docker، وغير ذلك الكثير
  • خطافات دورة الحياة (Lifecycle hooks) لتغيير حالة العمال في DynamoDB ومنع إنهاء العمال بينما لا تزال مهمة قيد التشغيل
  • استراتيجية توسيع تلقائي (Autoscaling) بناءً على عدد المهام في قائمة الانتظار ومجموعة الإعدادات (يمكن العثور على مزيد من المعلومات حول كيفية عمل الخوارزمية في autoscalingStrategy.py)
  • ربط مصدر أحداث Lambda (event source mapping) بجدول المهام في DynamoDB، وذلك لإدارة إجراءات التوسيع التلقائي عندما يزيد عدد العناصر في قاعدة البيانات أو ينقص
  • SNS لإرسال رسائل جديدة (مهام) إلى SQS، وتتم قراءة هذه الرسائل لاحقًا بواسطة العقد العمالية
  • تُستخدم خدمة Step Functions لإنشاء عدّاد تنازلي وحذف مجموعات سجلات CloudWatch بعد انتهاء retention_time
  • إذا كان ec2py يشغّل أدوات (مثل Nmap) داخل حاويات Docker، فيمكن تسجيل stdout في Cloudwatch وعرضه من خلال الواجهة الأمامية؛ اطّلع على المتغير extra_docker_params في ملف template.py (هذا موضح في قسم المشرف/المسؤول عن الصيانة بالأسفل)

المخطط:

Deprecated

الخيارات التالية متاحة ضمن إعداد Terraform:

كنتيجة لتنفيذ Terraform، يتم إنشاء ملف جديد (config.js)؛ يحتوي هذا الملف على الإعدادات المطلوبة لتطبيق React JS لكي يتمكن من المصادقة ضد دليل مجموعة مستخدمي Cognito. بعد نشر البنية التحتية، عليك بناء تطبيق React ورفع مجلد build. بالإضافة إلى ذلك، عليك رفع كود Python إلى حاوية S3 تعمل كمستودع أكواد. هذه العملية مؤتمتة في سكربتين setup.bat و setup.sh، لذا لا داعي للقلق بشأن هذا الأمر، وهذه مجرد خلاصة لهذه المرحلة.


خطوات التثبيت:

يتم نشر البنية التحتية في منطقة us-east-1 افتراضيًا، على الرغم من أنه يمكن تغيير ذلك في ملف locals.tf داخل مجلد Terraform.

الخطوات:

  • يجب عليك إنشاء مستخدم بصلاحيات إدارية داخل حساب AWS الخاص بك.
  • (اختياري) أنشئ AMI ذهبي (golden AMI) يتضمن الأدوات التي تريدها.
  • انتقل إلى مجلد Terraform وحدّث variables.tf؛ يجب أن يشير المتغير ami إلى AMI حالي من EC2، ويمكن أن يكون AMI الذهبي الخاص بك أو أحد الـ AMIs من كتالوج EC2.
  • نزّل وتثبّت aws-cli و NPM و Yarn و Terraform على جهازك.
  • قم بتكوين aws-cli لاستخدام حساب AWS الخاص بك في aws configure. تحقق من إعدادها بشكل صحيح بتشغيل هذا الأمر: aws sts get-caller-identity؛ عند التكوين الصحيح يجب ألا يُرجع خطأ.
  • (اختياري) أنشئ زوج مفاتيح SSH لحالات EC2. إذا كنت لا تخطط للاتصال عبر SSH بالعمال، فحدّث وحدة ec2_module وفقًا لذلك. aws ec2 create-key-pair –key-name cowCloud –query “cowCloud” –output text > ec2_module/cowCloud.pem
root@kitploit:~
git clone [email protected]:nccgroup/cowcloud.git
# Deploy the infra
cd cowcloud
cd Terraform
terraform init
terraform plan
terraform apply --auto-approve
  • دوّن القيمة (website) المعروضة في مخرجات Terraform، فهي عنوان URL للوصول إلى الواجهة الأمامية.
  • بمجرد نشر البنية التحتية، كل ما عليك فعله هو تشغيل إما setup.sh أو setup.bat لبناء ورفع كود الواجهة الأمامية وec2py.

الآن أنت جاهز! سجّل، وسجّل الدخول، وأنشئ مهمة جديدة!

تدفق المستخدم النهائي

بمجرد نشر كل شيء وأصبحت الواجهة الأمامية قابلة للوصول، اتبع هذه الخطوات:

  • قم بزيارة الموقع وانقر فوق زر تسجيل الدخول.
  • (للتسجيل، سيُطلب منك تقديم بريد إلكتروني صالح واسم مستخدم وكلمة مرور)
  • تحقق من البريد الإلكتروني بالنقر على الرابط الذي تستلمه في صندوق بريدك الإلكتروني.
  • سجّل الدخول باستخدام البريد الإلكتروني/اسم المستخدم وكلمة المرور.
  • انقر على التبويب المسمى “إضافة مهمة جديدة” وحدّث مستند JSON لتحديد النطاق الهدف ثم أرسل النموذج؛ وستستلم الآن معرف مهمة ورابطًا وكلمة مرور سيتم عرضها بالأسفل.
  • ارجع إلى لوحة التحكم وانتظر لترى كيف يتم تشغيل حالة EC2 جديدة وكيف ينفذ العامل المهمة.
  • إذا تم تنفيذ المهمة داخل حاوية Docker، يمكن عرض stdout عبر واجهة الويب.
  • بعد اكتمال المهمة، يتم نقل المهمة إلى جدول الأرشيف؛ يمكنك الآن زيارة الرابط المعطى، وتنزيل النتيجة، وفك تشفيرها بكلمة المرور المعطاة، وفك ضغط مخرجات الأداة أو نتيجتها CowCloud\ec2py> python .\decypt_file.py 2e8cf87c-5389-11ec-abec-d6d1f378b18d
  • يتم إنهاء العامل تلقائيًا بمجرد اكتمال المهمة.

Screenshot

المشرف/المسؤول عن الصيانة

  • الشخص المسؤول عن نشر البنية التحتية وصيانتها عليه أن يعقّم ويتحقق بشكل صحيح من مدخلات المستخدم النهائي المقدمة عبر تطبيق الويب. بعبارة أخرى، تأكد من أن الكود في ec2py/template.py ليس عرضة لحقن أوامر نظام التشغيل (OS command injection). هذه النقطة أُبرزت لأنها الجانب الأكثر حرجًا في النظام. تم اتخاذ عناية خاصة للحد من نطاق صلاحيات العامل وتعرضه وبالتالي تقليل المخاطر المرتبطة بذلك. ومع ذلك، فإن مسؤولية هذا الجانب من أمان النظام تقع على عاتق المشرف. سياسات الدور (role policies) المرتبطة بملف تعريف حالات EC2 مدرجة في ملف readme.md داخل مجلد Terraform

    • بالإضافة إلى ذلك، توجد دالة Lambda تُسمى workers_manager.py يستدعيها أداة ec2py لتنفيذ إجراءات أكثر امتيازًا. تم نقل هذه الإجراءات إلى دالة Lambda للحد من المخاطر في حال تعرض مفتاح الوصول الخاص بالدور المرتبط بملف تعريف EC2 للاختراق. وهي تعمل مع IMDSv2 على أي حال. سياسات الدور المرتبطة بدالة Lambda workers_manager.py مدرجة في ملف readme.md داخل مجلد Terraform
  • إذا كنت تريد التقاط stdout وعرضه من خلال واجهة الويب أثناء تنفيذ المهمة، فانتقل إلى ec2py/template.py واتبع هذه الخطوات:

    • متغير extra_docker_params يتضمن المعلومات المطلوبة لحاويات Docker الخاصة بك لإرسال stdout إلى مجموعات سجلات CloudWatch. ستحتاج إلى تضمين هذا المتغير في سطر الأوامر عندما تريد عرض stdout من خلال الواجهة الأمامية.
    root@kitploit:~
    cmd = f"docker run {extra_docker_params} --rm -v {tmp_folder}target.txt:/root/Tools/reconftw/target.txt -v {tmp_folder}reconftw.cfg:/root/Tools/reconftw/reconftw.cfg -v {tmp_folder}Recon/:/root/Tools/reconftw/Recon/ six2dez/reconftw:main -l target.txt -w".split(' ')
    

إلغاء التثبيت

يمكنك تدمير البنية التحتية بتشغيل هذا الأمر البسيط: terraform destroy --auto-approve وسيؤدي ذلك إلى إزالة جميع الموارد الموجودة. ملاحظة: لا تقاطع هذه العملية لأن ذلك قد يترك بعض العناصر في السحابة، وسيتعين عليك بعدها تحديدها وإزالتها يدويًا.


تدفق المستخدم النهائي

Screenshot

التدفق الأساسي

Screenshot


ملاحظات للمطوّرين

  • إذا أجريت تغييرًا في تطبيق ec2py، فتذكر مزامنة التغييرات مع مستودع S3؛ يجب بعدها إنهاء الحالات الحالية وإطلاق حالة جديدة لسحب أحدث التغييرات.
  • عندما يتم تغيير أحد مكونات وحدة gateway، قد تحتاج إلى إعادة نشر REST API، وللقيام بذلك:
    • terraform destroy --auto-approve -target module.gateway_module.aws_api_gateway_deployment.lambda
    • terraform apply --auto-approve -target module.gateway_module

شكر خاص إلى:

  • Sabrina MM https://www.linkedin.com/in/sabrina-marisol-martinez-a4bb54181/
  • Ricardo Martinez Martin (NCC Group)
  • Conor McErlane (NCC Group)
  • Simon Harraghy (NCC Group)
تنزيل الأداة
  • توفر الواجهة الأمامية زرًا لمقاطعة المهام أثناء تنفيذها وزرًا آخر لعرض سجلات حاويات Docker
  • إذا أردت تغيير أي شيء في كود الواجهة الأمامية أو في مجلدات ec2py، فستحتاج إلى نشر هذه التغييرات إلى حاويات S3 وإبطال ذاكرة التخزين المؤقت للواجهة الأمامية؛ يمكنك فعل كل ذلك بمجرد تنفيذ setup.bat/sh
  • المتغيرالقيمة الافتراضيةالوصف
    eipenablefalseإذا كانت القيمة true، يخصص الحل مجموعة من عناوين IP المرنة (Elastic IP) المرتبطة بالعقد العمالية عند تشغيلها. يتم حساب عدد عناوين EIP التي سيتم حجزها باستخدام هذه الصيغةsum([var.max_workers, var.maximum_number_of_terminating_machines])
    cidr_whitelist[]القائمة البيضاء CIDR للسماح فقط بنطاقات IP معينة في جدار الحماية. مثال: ["195.95.131.0/24"]
    max_workers وmax_queued_tasks_per_workermax_workers: 3, max_queued_tasks_per_worker: 10يحدد هذان الإعدادان متى يتم التوسيع إلى الداخل أو إلى الخارج، مثال max_workers 3, max_queued_tasks_per_worker 10. وهذا يعني أنه إذا تجاوز عدد المهام عشرة، سيتم إنشاء حالة EC2 جديدة. إذا كان هناك أكثر من عشرين مهمة، سيكون هناك حد أقصى قدره ثلاث حالات EC2 متاحة لتوزيع أعباء العمل (اطّلع على الخوارزمية الموجودة في هذا السكربت Terraform/dynamodb_module/autoscalingTool/autoscalingStrategy.py).
    maximum_number_of_terminating_machines2يحدد هذا عدد الحالات التي تم ضبطها للإنهاء ولكنها معلقة حتى يكمل المعالجة/الفحص المهمة.
    heartbeat_timeout900يحدد هذا الوقت الذي يبقى فيه هؤلاء العمال معلقين. بعد انتهاء هذا الوقت، سيتم إنهاء العامل قسريًا.
    instance_typet2.microhttps://aws.amazon.com/ec2/instance-types/
    aminullhttps://aws.amazon.com/es/amazon-linux-ami/
    retention_time7اضبط مدة الاحتفاظ (بالأيام) للسجلات وانتهاء صلاحية عناصر جدول الأرشيف (المهام المكتملة).