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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
decker — إطار عمل تنسيق اختبار الاختراق التصريحي | Kitploit
أدوات/GitHubGitHub/stevenaldinger/decker
أطر اختبار الاختراقالاستطلاعماسحات الثغرات الأمنيةأطر الاستغلالالبرمجة النصية والأتمتةجمع المعلومات
GitHubstevenaldinger/decker

decker

إطار عمل تنسيق اختبار الاختراق التصريحي

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Build Status

ديكر - إطار تنسيق اختبار الاختراق

الغرض

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

مثال على ملف تكوين ديكر:

root@kitploit:~
// يتم سحب المتغيرات من البيئة
//   مثال: DECKER_TARGET_HOST
// ستكون متاحة في جميع أنحاء ملفات التكوين كـ var.*
//   مثال: ${var.target_host}
variable "target_host" {
  type = "string"
}

// تشير الموارد إلى المكونات الإضافية
// يحتاج الموارد إلى أسماء فريدة حتى يمكن استخدام المكونات الإضافية أكثر من مرة
// يتم تعريفها بالشكل: 'resource "plugin_name" "unique_name" {}'
// ستكون مخرجاتها متاحة للآخرين باستخدام الشكل unique_name.*
//   مثال: nmap.443
resource "nmap" "nmap" {
  host = "${var.target_host}"
  plugin_enabled = "true"
}
resource "sslscan" "sslscan" {
  host = "${var.target_host}"
  plugin_enabled = "${nmap.443 == "open"}"
}

تشغيل مكون إضافي لكل عنصر في قائمة:

root@kitploit:~
variable "target_host" {
  type = "string"
}
resource "nslookup" "nslookup" {
  dns_server = "8.8.4.4"
  host = "${var.target_host}"
}
resource "metasploit" "metasploit" {
  for_each = "${nslookup.ip_address}"
  exploit = "auxiliary/scanner/portscan/tcp"
  options = {
    RHOSTS = "${each.key}/32"
    INTERFACE = "eth0"
  }
}

تكوين معقد يجمع بين for_each مع القيم المتداخلة:

root@kitploit:~
variable "target_host" {
  type = "string"
}
resource "nslookup" "nslookup" {
  dns_server = "8.8.4.4"
  host = "${var.target_host}"
}
resource "nmap" "nmap" {
  for_each = "${nslookup.ip_address}"
  host = "${each.key}"
}
// لكل عنوان IP، تحقق مما إذا كان nmap وجد المنفذ 25 مفتوحًا.
// إذا كانت الإجابة بنعم، قم بتشغيل ماسح smtp_enum من metasploit
resource "metasploit" "metasploit" {
  for_each = "${nslookup.ip_address}"
  exploit = "auxiliary/scanner/smtp/smtp_enum"
  options = {
    RHOSTS = "${each.key}"
  }
  plugin_enabled = "${nmap["${each.key}"].25 == "open"}"
}

تنسيقات المخرجات

تتوفر عدة تنسيقات للمخرجات ويمكن اختيار أكثر من واحد في نفس الوقت.

تعيين DECKER_OUTPUTS_JSON أو DECKER_OUTPUTS_XML إلى "true" سيخرج ملفات بتنسيق json و xml على التوالي.

  1. إخراج ملفات .json بالإضافة إلى النص العادي: export DECKER_OUTPUTS_JSON="true"
  2. إخراج ملفات .xml بالإضافة إلى النص العادي: export DECKER_OUTPUTS_XML="true"

لماذا اسم ديكر؟

جاء صديقي كورتني للإنقاذ عندما كنت أتعب في ابتكار اسم ووجد ديكر في مسرد كلمات الخيال العلمي... وكان رائعًا.

مخترق مستقبلي؛ خبير برمجيات ماهر في التلاعب بالفضاء الإلكتروني، وخاصة في تجاوز الإجراءات الأمنية.

تشغيل مثال تكوين مع دوكر

يتم تركيب مجلدين:

  1. دليل باسم decker-reports حيث سيخرج ديكر ملفًا لكل مكون إضافي تم تشغيله. سيكون اسم الملف {unique_resource_name}.report.txt.
  2. دليل examples الذي يحتوي على ملفات تكوين ديكر. يتيح تركيب هذا المجلد إمكانية كتابة التكوينات محليًا باستخدام محررك المفضل مع إمكانية تشغيلها داخل الحاوية.

يتم تمرير متغير بيئة واحد:

  1. DECKER_TARGET_HOST

يتم الإشارة إلى هذا في ملفات التكوين كـ {var.target_host}. سيقوم ديكر بالتكرار عبر جميع المتغيرات البيئية المسماة DECKER_*، وإزالة البادئة وتعيين الباقي إلى أحرف صغيرة.

root@kitploit:~
docker run -it --rm \
  -v "$(pwd)/decker-reports/":/tmp/reports/ \
  -v "$(pwd)/examples/":/decker-config/ \
  -e DECKER_TARGET_HOST=example.com \
 stevenaldinger/decker:kali decker ./decker-config/example.hcl

عندما ينتهي ديكر من تشغيل التكوين، ابحث في ./decker-reports عن المخرجات.

تشغيل مثال تكوين بدون دوكر

من المحتمل أن ترغب في تعيين الدليل الذي يكتب فيه ديكر التقارير باستخدام متغير البيئة DECKER_REPORTS_DIR.

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

root@kitploit:~
export DECKER_REPORTS_DIR="$HOME/decker-reports"

ستحتاج أيضًا إلى تعيين مضيف الهدف إذا كنت تقوم بتشغيل أحد ملفات التكوين المثال.

root@kitploit:~
export DECKER_TARGET_HOST="<insert hostname here>"

ثم قم بتشغيل ملف التكوين. انتقل إلى الدليل الجذر لهذا المستودع وشغّل:

root@kitploit:~
./decker ./examples/example.hcl

المساهمة

المساهمات مرحب بها بشدة ومقدَّرة. انظر docs/contributions.md للحصول على الإرشادات.

التطوير

يوصى باستخدام دوكر للتطوير للحصول على تجربة سلسة. هذا يضمن تثبيت جميع التبعيات وأنها جاهزة للعمل.

ارجع إلى هيكل الدليل أدناه للحصول على نظرة عامة على كود go.

بداية سريعة

  1. (على الجهاز المضيف): make docker_build
  2. (على الجهاز المضيف): make docker_run (سيبدأ حاوية دوكر ويفتح جلسة bash تفاعلية)
  3. (داخل الحاوية): dep ensure -v
  4. (داخل الحاوية): make build_all
  5. (داخل الحاوية): make run

تهيئة خطافات git

قم بتشغيل make init لإضافة سكريبت pre-commit الذي سيشغل الفحص والاختبارات في كل التزام.

تطوير المكونات الإضافية

ديكر نفسه هو مجرد إطار يقرأ ملفات التكوين، ويحدد التبعيات في ملفات التكوين، ويشغل المكونات الإضافية بترتيب يضمن أن المكونات الإضافية ذات التبعيات على مكونات إضافية أخرى (مخرجات مكون إضافي كمدخل لمكون آخر) تعمل بعد تلك التي تعتمد عليها.

القوة الحقيقية لـديكر تأتي من المكونات الإضافية. يمكن أن يكون تطوير مكون إضافي بسيطًا أو معقدًا كما تريد، طالما أن النتيجة النهائية هي ملف .so يحتوي على كود المكون الإضافي المُجمّع وملف .hcl في نفس الدليل يُعلن المدخلات التي يتوقع المكون الإضافي أن يقوم المستخدم بتكوينها.

تحقق من docs/building_plugins.md للبدء في أول مكون إضافي لك. يجب أن يستغرق الأمر بضع دقائق فقط لتشغيل مكون إضافي "Hello World" لـ ديكر.

تثبيت المكونات الإضافية

بشكل افتراضي، من المتوقع أن تكون المكونات الإضافية في دليل نسبي إلى مكان وجود ثنائي ديكر، في <decker binary>/internal/app/decker/plugins/<plugin name>/<plugin name>.so. يمكن إضافة مسارات إضافية عن طريق تعيين متغير البيئة DECKER_PLUGIN_DIRS. سيظل مسار المكونات الإضافية الافتراضي مستخدمًا إذا تم تعيين DECKER_PLUGIN_DIRS.

مثال: export DECKER_PLUGIN_DIRS="/path/to/my/plugins:/additional/path/to/plugins"

يجب أن يكون هناك ملف HCL بجوار ملف .so في <decker binary>/internal/app/decker/plugins/<plugin name>/<plugin name>.hcl يحدد مدخلاته ومخرجاته. حاليًا، يتم دعم المدخلات من نوع string و list و map فقط. يجب أن يحتوي كل مدخل على كتلة input تبدو هكذا:

root@kitploit:~
input "my_input" {
  type = "string"
  default = "some default value"
}

هيكل الدليل

root@kitploit:~
.
├── build
│   ├── ci/
│   └── package/
├── cmd
│   ├── decker
│   │   └── main.go
│   └── README.md
├── deployments/
├── docs/
├── examples
│   └── example.hcl
├── githooks
│   ├── pre-commit
├── Gopkg.toml
├── internal
│   ├── app
│   │   └── decker
│   │       └── plugins
│   │           ├── a2sv
│   │           │   ├── a2sv.hcl
│   │           │   ├── main.go
│   │           │   └── README.md
│   │           └── ...
│   │               ├── main.go
│   │               ├── README.md
│   │               └── xxx.hcl
│   ├── pkg
│   │   ├── dependencies/
│   │   ├── gocty/
│   │   ├── hcl/
│   │   ├── paths/
│   │   ├── plugins/
│   │   └── reports/
│   └── README.md
├── LICENSE
├── Makefile
├── README.md
└── scripts
    ├── build-plugins.sh
    └── README.md
  • cmd/decker/main.go هو المحرك. وظيفته تحليل ملف تكوين معين مثال، تحميل المكونات الإضافية المناسبة استنادًا إلى كتل resource في الملف، وتشغيل المكونات الإضافية بالمدخلات المحددة.
  • examples يحتوي على بضعة تكوينات مثال لتبدأ بها مع ديكر. إذا كنت تستخدم صورة دوكر kali (docker image) (stevenaldinger/decker:kali)، فيجب أن تكون جميع التبعيات مثبتة لجميع ملفات التكوين وستعمل الأمور بسلاسة.
  • internal/pkg هو المكان الذي يوجد فيه معظم الكود الفعلي. يحتوي على جميع الحزم المستوردة بواسطة main.go.
    • dependencies مسؤول عن بناء رسم بياني لتبعيات المكونات الإضافية وإرجاع مصفوفة مرتبة طوبولوجيًا تضمن تشغيل المكونات الإضافية بترتيب عمل صحيح.
    • gocty يقدم مساعدات لتشفير وفك تشفير قيم go-cty المستخدمة للتعامل مع أنواع المدخلات الديناميكية.
    • hcl مسؤول عن تحليل ملفات HCL، بما في ذلك إنشاء سياقات تقييم تسمح للكتل بفك الترميز بشكل صحيح عندما تعتمد على كتل مكونات إضافية أخرى.
    • paths مسؤول عن إرجاع مسارات الملفات لثنائي ديكر، وملفات التكوين، وملفات تكوين المكونات الإضافية، والتقارير المُنشأة.
    • plugins مسؤول عن تحديد ما إذا كانت المكونات الإضافية ممكّنة وتشغيلها.
    • reports مسؤول عن كتابة التقارير إلى نظام الملفات.
  • internal/app/decker/plugins عبارة عن قطع رمزية وحدوية مكتوبة كـ إضافات Golang، تنفذ واجهة بسيطة تسمح بتحميلها واستدعائها في وقت التشغيل مع مدخلات ومخرجات محددة في ملف تكوين المكون الإضافي (أيضًا في HCL). يمكن العثور على مثال في internal/app/decker/plugins/nslookup/nslookup.hcl.
  • ملفات تكوين ديكر تقدم طريقة تصريحية لكتابة اختبارات الاختراق. الملفات مكتوبة بـ لغة تكوين هاشيكورب 2) وتصف مجموعة المكونات الإضافية التي سيتم استخدامها في الاختبار بالإضافة إلى مدخلاتها.
تنزيل الأداة