
ماسح DAST موجه بالأدلة مكتوب بلغة Go يزحف عبر تطبيقات الويب وواجهات API، ثم ينفذ فحوصات تكيفية لـ SQLi وXSS وRCE وSSRF والمصادقة مع إثبات قابل لإعادة التشغيل.
ماسح أمان الويب المتقدم
اكتشف نقاط النهاية. اختبر تطبيقات الويب. افحص الأدلة.
التثبيت · الاستخدام · سير العمل · الملفات التعريفية · التغطية · التقارير · الدعم · الميزات · سجل التغييرات
AKCA هو ماسح مفتوح المصدر للاختبار الديناميكي لأمان التطبيقات (DAST) يركز على الأدلة، مكتوب بلغة Go. يجمع بين الزحف عبر HTTP والمتصفح، وتحليل JavaScript، واستيراد واجهات API، والاختبار النشط التكيفي، والفحص السلبي، والأدلة القابلة لإعادة التشغيل في سير عمل واحد عبر سطر الأوامر.
تقوم العديد من الماسحات بالزحف إلى التطبيق ثم إرسال مجموعة واسعة من الحمولات إلى كل نقطة نهاية مكتشفة. قد تؤدي هذه الاستراتيجية إلى إنشاء حركة مرور غير ضرورية، وتفعيل الأنظمة الدفاعية، وإنتاج إشارات ضعيفة تتطلب فرزًا يدويًا كبيرًا. يتبنى AKCA نهجًا أكثر سياقية: فهو يتعرف أولاً على الهدف، ويُنمذج سطح الهجوم المكتشف، ثم يختار الاختبارات وفقًا لمجموعة التقنيات، والمعاملات، وحالة المصادقة، وسلوك WAF، وقدرات التحقق المتاحة.
تم تصميم AKCA من أجل:
الهدف ليس استنزاف الهدف أو إغراقه. بل العثور على نقاط ضعف حقيقية بطلبات مدروسة وأدلة مفيدة.
لا يدّعي AKCA التكافؤ في الميزات أو الكشف مع المنصات التجارية الناضجة مثل Acunetix أو Invicti/Netsparker أو Burp Suite Professional. تلك المنتجات بناها فرق ذات خبرة على مدى سنوات عديدة. يتم صيانة AKCA بشكل مستقل من قبل مطور واحد في وقت الفراغ المتاح، مستوحى من أدوات الأمان الراسخة ومشكّل بأفكار أصلية وملاحظات المجتمع. الأولوية الحالية هي ماسح بسيط ومفيد وشفاف. تم التخطيط لواجهة رسومية عندما يصبح المحرك مستقرًا وموثوقًا بما فيه الكفاية.
جلسة فحص AKCA v0.2.4 مع حالة المحرك المباشرة، وقياس الموارد عن بُعد، والنتائج المؤكدة.
يتطلب Go 1.25 أو أحدث.```bash go install github.com/akha-security/akca/engine/cmd/akca@latest akca --version
<details>
<summary>لم يتم العثور على الأمر؟ قم بتهيئة PATH الخاص بك.</summary>
بالنسبة لتثبيت Go الافتراضي، أضف دليل ملفات Go التنفيذية إلى `PATH` في الطرفية الحالية.
**Linux / macOS**```bash
export PATH="$(go env GOPATH)/bin:$PATH"
أضف هذا السطر إلى إعدادات shell الخاصة بك للحفاظ عليه عبر الجلسات.
Windows PowerShell```powershell $env:Path += ";$(go env GOPATH)\bin"
للجلسات المستقبلية، أضف نفس الدليل إلى متغير البيئة `Path` الخاص بالمستخدم. إذا قمت بتكوين `GOBIN`، استخدم ذلك الدليل بدلاً من ذلك.
</details>
### الملفات التنفيذية الجاهزة
قم بتنزيل البناء الخاص بك من [إصدارات GitHub](https://github.com/akha-security/akca/releases/latest). تتضمن الإصدارات ملف `SHA256SUMS.txt` للتحقق من المجموع الاختباري.
| المنصة | المعمارية | الملف |
| --- | --- | --- |
| Linux | x64 / ARM64 | `akca-linux-amd64` / `akca-linux-arm64` |
| macOS | Intel / Apple Silicon | `akca-darwin-amd64` / `akca-darwin-arm64` |
| Windows | x64 | `akca-windows-amd64.exe` |
على Linux أو macOS، اجعل الملف الذي تم تنزيله قابلاً للتنفيذ. بالنسبة لـ Linux x64:```bash
chmod +x akca-linux-amd64
./akca-linux-amd64 --help
على Windows، أعد تسمية الملف الذي تم تنزيله إلى akca.exe ثم شغّل .\akca.exe --help في PowerShell. تفترض الأمثلة أدناه أن akca متاح في PATH الخاص بك.
تتطلب الفحوصات المدعومة بالمتصفح وجود Chrome أو Chromium أو Edge.
استخدم AKCA فقط على الأنظمة التي تملكها أو لديك إذن باختبارها. استبدل عنوان URL في المثال بهدفك المصرّح به.
akca -u https://example.com
الملف الشخصي الافتراضي هو `full`. لحفظ تقرير HTML:```bash
akca -u https://example.com -f html -o report.html
تشغيل فحوصات حقن SQL، وXSS، والحقن من جانب الخادم، بما في ذلك SSTI:```bash akca -u https://example.com -m sql,xss,rce
تشغيل الفحوصات السلبية:```bash
akca -u https://example.com -m passive
الفحوصات السلبية لا تزال ترسل طلبات للاستكشاف والفحص.
قم بتوفير ملف تعريف ارتباط الجلسة:```bash akca -u https://example.com -c "session=YOUR_SESSION_COOKIE"
أو ترويسة تفويض:```bash
akca -u https://example.com -H "Authorization: Bearer YOUR_TOKEN"
تتطلب بعض عمليات التحقق من التفويض هويات إضافية أو تكوين حالة يتجاوز جلسة واحدة.
akca -u https://api.example.com --api-spec ./openapi.yaml -m api
يدعم Discovery مدخلات OpenAPI/Swagger وRAML وPostman وHAR وGraphQL وWSDL وprotobuf وAsyncAPI، بما في ذلك حزم ZIP المدعومة. تعتمد تغطية الاختبار على البروتوكول والعملية المستوردين.
### فحص حركة المرور عبر وكيل```bash
akca -u https://example.com -p http://127.0.0.1:8080
شغّل akca --help لعرض جميع الخيارات المتاحة.
استخدم akca -h للحصول على مساعدة يومية موجزة، أو akca --help للحصول على المرجع الكامل للخيارات. يجب تحديد أهداف الفحص صراحةً باستخدام -u أو --url.
اختر ملف تعريف باستخدام -m، أو اجمع بين عدة ملفات بفواصل.
| ملف التعريف | الفحوصات |
|---|---|
full | جميع الوحدات النشطة والسلبية المفعّلة؛ الوضع الافتراضي |
sql | حقن SQL وNoSQL |
xss | XSS المنعكس والمخزّن وDOM والأعمى؛ الفحوصات المتعلقة بجانب العميل |
rce | حقن الأوامر، SSTI، إلغاء التسلسل، والفحوصات ذات الصلة |
api | تعرّض API، BOLA/IDOR، BFLA، الإسناد الجماعي، وفحوصات الرموز |
graphql | فحوصات مخطط وعمليات GraphQL |
ssrf | SSRF، XXE، والفحوصات ذات الصلة خارج النطاق |
auth | المصادقة، التفويض، CSRF، وفحوصات ملفات تعريف الارتباط/الترويسات |
passive | البيانات الوصفية، TLS، ترويسات الأمان، الأسرار، وتحليل المكوّنات |
fuzz | المسارات، الملفات المكشوفة، اجتياز المسار، والفحوصات ذات الصلة |
يعتمد التنفيذ على نقاط النهاية المكتشفة، والإعدادات، وقدرات التحقق المتاحة، وحدود الفحص. راجع FEATURES.md للحصول على الدليل الكامل للقدرات.
يستخدم AKCA خط أنابيب متدرجًا بحيث تستفيد الفحوصات اللاحقة من الحقائق المكتشفة سابقًا:
التغطية صريحة. يُسجَّل أي هدف تم تخطيه أو فشل أو كان محدودًا بالميزانية أو غير مكتمل على أنه تغطية غير مكتملة؛ ولا يُعامَل بصمت كنتيجة أمنية نظيفة.
تصف القائمة التالية محركات الاكتشاف وعائلات الاختبار الأمني المنفَّذة. لا تعمل الفحوصات الفردية إلا عندما يجعلها سطح الاكتشاف وملف تعريف الفحص والإعدادات وسياسة السلامة ومتطلبات التحقق قابلة للتطبيق. وجود قدرة مدرجة لا يضمن اكتشاف كل متغير من متغيرات الثغرة.
حدّد ميزانية إجمالية للطلبات وحدًا أقصى للمدة:```bash akca -u https://example.com --request-budget 5000 --time-budget 30m
أو احسب ميزانية الوحدة من مجموعات URL/الطريقة المكتشفة:```bash
akca -u https://example.com --requests-per-target 200
AKCA توزّع ميزانيات وحدات محدودة عبر الوحدات وعناوين URL والمعاملات. تنتقل المخصصات غير المستخدمة إلى الأعمال اللاحقة. تأخذ قيمة --request-budget الموجبة الأولوية على --requests-per-target.
| الخيار | الغرض |
|---|---|
--request-budget 5000 | تحديد إجمالي الطلبات، بما في ذلك الاستكشاف وإعادة المحاولات وعمليات إعادة التوجيه |
--requests-per-target 200 | اشتقاق ميزانية الوحدة من مجموعات URL/الطريقة المكتشفة |
--crawler-budget 1000 | تحديد طلبات الاستكشاف |
--time-budget 30m | تحديد مدة الفحص |
--rate-limit 5 | تحديد الطلبات في الثانية |
--concurrency 4 | تحديد العمال المتزامنين |
بشكل افتراضي، لا توجد حصة طلبات لفحص الوحدة. يتم الإبلاغ عن انقطاعات الميزانية على أنها تغطية غير مكتملة. لا يتم استئناف الأهداف المتوقفة تلقائيًا عندما تُعيد الأعمال اللاحقة ميزانية غير مستخدمة. لا يضمن أي إعداد للميزانية اكتشاف كل ثغرة.
النطاقات الفرعية المرتبطة لواجهات API/الخدمات تقع خارج نطاق الهدف الافتراضي. لتضمين النطاقات الفرعية المرتبطة تحت نفس الجذر:```bash akca -u https://www.example.com --include-linked-api-subdomains
### لماذا يستغرق الفحص الكامل وقتًا أطول
صُمم الفحص الكامل الافتراضي في AKCA حول التغطية وجودة الأدلة، وليس حول أقصر وقت إكمال ممكن. لذلك فإن مدة تشغيله ليست قابلة للمقارنة مباشرةً مع الأدوات التي تتوقف بعد زحف HTTP سطحي أو التي تبلّغ عن ثغرة بناءً على اختلاف استجابة واحد.
قد يستغرق التشغيل الشامل وقتًا أطول لأن AKCA:
- يحافظ على جلسة متصفح للمسارات التي يُصيّرها العميل ويفحص JavaScript، بما في ذلك حزم التطبيق المحمّلة بتأخير.
- يعيد تشغيل النتائج الواعدة مع عناصر تحكم قبل ترقيتها إلى نتائج، مما يقلل الإيجابيات الكاذبة الناتجة عن الأخطاء العامة والصفحات غير المستقرة واستجابات WAF.
- ينفذ فحوصات تراعي الهوية والحالة والاستدعاءات الراجعة عندما تتطلب وحدة ما دليلًا أقوى.
- يحترم وتيرة الهدف وإعادة المحاولات وميزانيات الطلبات ونوافذ المراقبة خارج النطاق بدلًا من اعتبار السرعة المقياس الوحيد للنجاح.
تعتمد مدة الفحص أيضًا على حجم التطبيق وزمن استجابة الخادم وتدفقات المصادقة وضوابط الدفاع والنطاق المُهيّأ. للحصول على نتائج أسرع، اختر الوحدات ذات الصلة فقط باستخدام `-m` أو طبّق ميزانيات صريحة للزحف والطلبات والوقت. لا تزد معدل الطلبات والتزامن إلا عندما يكون الهدف المصرّح به قادرًا على التعامل بأمان مع حركة المرور الإضافية. الفحص الأقصر ليس بالضرورة فحصًا أكثر اكتمالًا.
## التقارير
اختر صيغة الإخراج باستخدام `-f` ومسار ملف باستخدام `-o`:```bash
akca -u https://example.com -f html -o report.html
التنسيقات المدعومة: HTML وJSON وMarkdown وCSV وSARIF. كل استدعاء يبدأ فحصًا جديدًا.
تقارير HTML مكتفية ذاتيًا وتتضمن شعار AKCA، وملخصات المخاطر والخطورة، وإحصاءات الثغرات، وتفاصيل النتائج المنظمة، وأدلة HTTP القابلة للتوسيع. تدعم تبويبات الطلب والاستجابة عرضًا مدمجًا، وتوسيعًا للمحتوى الكامل، ونسخًا. وحيث تحتفظ إحدى النتائج بقيمة استجابة مطابقة، يبرزها AKCA باللون الأصفر، مما يساعدك على تحديد حمولة منعكسة أو سر مكشوف. وتحتفظ نتائج الأسرار السلبية بمقتطف حول المطابقة.
حسب الوحدة، تتضمن النتائج:
قد لا تحتوي نتائج التوقيت، والترويسات المفقودة، والاستدعاءات الخارجية على نص استجابة لإبرازه. ويوفر سياق التحقق الخاص بها الأدلة ذات الصلة.
عندما خزّن الماسح معاملة خام كاملة، يحافظ التقرير عليها بدقة. أما الأدلة الأقدم أو المنظمة فقط فتُعرض بتخطيط HTTP تقليدي على نمط Burp مع سطر طلب، وترويسات مرتبة، وفاصل بين الترويسة والجسم، وعبارات سبب استجابة HTTP القياسية. وإذا اقتطعت حد التقاط النقل استجابةً، يذكر التقرير ذلك صراحةً؛ ولا يقدم أبدًا الجزء المخزَّن على أنه الاستجابة الكاملة غير المتاحة.
إعادة تشغيل نتيجة مخزَّنة:```bash akca replay --finding 42
تُخفي التقارير بيانات الاعتماد المُعرَّف عليها افتراضيًا. تُحفظ الأدلة الخام المخزنة لإعادة التشغيل. اضبط `redact_reports` على `false` في إعدادات الفحص، أو استخدم `redact=false` في واجهة برمجة التقارير، فقط عند الحاجة إلى تصدير البيانات الخام. راجع التقارير قبل مشاركتها: لا يمكن للإخفاء التلقائي التعرف على كل سر خاص بتطبيق معين.
### إعدادات الزحف والإثبات
يحتفظ الزاحف بجلسة متصفح واحدة طوال كل مرحلة زحف، بما في ذلك ملفات تعريف الارتباط وتخزين المتصفح. يستكشف علامات التبويب الصريحة غير الخاصة بالنماذج والألواح القابلة للتوسيع؛ ولا يملأ النماذج تلقائيًا أو يرسلها. لا تزال طلبات المتصفح تخضع للنطاق وميزانيات الطلبات. بالنسبة لتبعيات الطرف الثالث الثابتة المطلوبة، اضبط أسماء المضيفين الدقيقة بشكل منفصل:```json
{
"browser_resource_domains": ["cdn.example.com"],
"redact_reports": true
}
يسمح هذا فقط بطلبات GET/HEAD الخاصة بالسكربتات وأوراق الأنماط والصور والخطوط والوسائط إلى تلك المضيفين، مع إزالة بيانات الاعتماد والترويسات المخصصة. ولا يضيف هؤلاء المضيفين إلى نطاق الفحص النشط أو يسمح بطلبات API عبر الأصول. تنتج تبعيات المتصفح المحظورة أحداث فجوات في التغطية.
يتم الاحتفاظ بعناوين URL المكتشفة حتى عندما يتعذر زيارتها. ينتج الزحف الذي يستنفد ميزانيته مع وجود عمل في قائمة الانتظار فحصًا جزئيًا ورمز خروج غير صفري لواجهة سطر الأوامر. تميّز رسائل الفحص المسبق للوحدة بين سياسات الهوية/الحالة المفقودة وقدرات التحقق المُهيأة.
تنتج فحوصات تحديد المعدل غير المُهيأة ملاحظات، وليس نتائج ثغرات. يتطلب إثبات العتبة المُهيأة أيضًا window_seconds؛ وإذا لم تكن الطلبات تتناسب داخل تلك النافذة، يكون الفحص غير حاسم. لا يعتبر SQLi استجابة 400 أو التقييم الحسابي وحده دليلًا. يجب أن تمر أخطاء SQL الجديدة الخاصة بالموردين في استجابات 400/422 عبر مسار إعادة التشغيل والتحقق من التحكم.
راجع CHANGELOG.md للحصول على تفاصيل الإصدار.
لا تقبل AKCA الرعايات أو التبرعات الشخصية. المساهمات البرمجية والاختبار والتوثيق والملاحظات المدروسة مرحب بها دائمًا.
Projeye maddi olarak destek olmak istiyorsanız, bana göndermek yerine Mehmetçik Vakfı, AFAD, Türk Kızılay veya Çocuk Hizmetleri Genel Müdürlüğü aracılığıyla desteklenen güvenilir sosyal yardım çalışmalarından birine bağış yapmanızı rica ediyorum. Mümkünse bağışınızı kızım Akça Aktaş adına yapın. Bağıştan sonra X üzerinden @caneraktas_ hesabına mesaj göndermeniz beni gerçekten çok mutlu eder.
If you would like to support the project financially, please donate to a reputable charity in your country that helps children, disaster-affected communities, veterans, or people in urgent need. When possible, make the donation in the name of my daughter, Akça Aktaş. You are welcome to share it with me on X at @caneraktas_; knowing that this project inspired a helpful act would mean a great deal to me.
البناء من المصدر:```bash git clone https://github.com/akha-security/akca.git cd akca/engine go build -buildvcs=false -trimpath -o ../akca ./cmd/akca
على Windows، استخدم `-o ../akca.exe` لاسم الملف التنفيذي.
شغّل الفحوصات من دليل `engine`:```bash
go test ./... -count=1
go vet ./...
go run ./cmd/akca benchmark --strict
يقيس المعيار مجموعته المرصودة. للحصول على تفاصيل التنفيذ وقيود التحقق، اقرأ دليل البنية وتدقيق التحقق.
المساهمات مرحّب بها. اقرأ CONTRIBUTING.md ومدونة قواعد السلوك قبل فتح طلب سحب. أبلغ عن الثغرات في AKCA من خلال SECURITY.md.
Apache License 2.0 · حقوق النشر 2026 مساهمو AKHA Security.