
أداة تحليل الشفرة الثابتة المعتمدة على Elasticsearch

Bughound هي أداة تحليل كود ثابت مفتوحة المصدر تقوم بتحليل الكود الخاص بك وإرسال النتائج إلى Elasticsearch و Kibana للحصول على رؤى مفيدة حول الثغرات المحتملة في الكود الخاص بك.
Bughound لديها صورة Docker خاصة بها من Elasticsearch و Kibana مهيأة مسبقًا مع لوحات معلومات لتزويدك بتصور قوي للنتائج.
يمكنك كشف أنواع مختلفة من الثغرات مثل:
يمكن لـ Bughound حاليًا تحليل كود PHP و JAVA، وتحتوي على مجموعة من الوظائف غير الآمنة لهذه اللغات.
سأحرص على إضافة المزيد والمزيد من تغطية الوظائف/اللغات مع الوقت، لكن في الوقت الحالي التركيز الأساسي هو على استقرار المشروع نفسه.
يرجى ملاحظة أن نتائج Bughound ليست دقيقة بنسبة 100%، فهي مصممة لمساعدتك في تحديد نقاط الضعف المحتملة أثناء تحليلك للتحقيق فيها.
أولاً، سيقوم Bughound ببناء قائمة بجميع الملفات داخل مشروعك بناءً على امتداد الملفات التي تريد مراجعتها، ثم سيقرأ كل ملف ويحاول العثور على أي وظائف غير آمنة محددة مسبقًا للغة مشروعك.
تعتمد مرحلة التحليل على تعبيرات regex مهيأة مسبقًا وبعض مطابقة النص المخصصة لكشف الثغرات المحتملة، لذا مرة أخرى، تحتاج إلى القيام بالتحليل اليدوي للتحقق مما إذا كانت هذه النتائج قابلة للاستغلال.
أخيرًا، سيرسل النتائج إلى صورة Docker الخاصة بـ Bughound والتي تحتوي على Elasticsearch و Kibana مهيأين مسبقًا مع لوحات المعلومات المخصصة لنتائجك.
ستزودك لوحات المعلومات بتفاصيل حول النتائج مثل:
بالإضافة إلى ذلك، باستخدام Kibana، ستتمكن من عرض مقتطف الكود المحتمل أن يكون ضعيفًا لبدء مرحلة التحليل والتتبع للتحقق مما إذا كان قابلاً للاستغلال أم لا.
بالطبع، يمكنك استخدام مجموعة ELK الخاصة بك إذا أردت، وسيقوم Bughound بإجراء التهيئة الأولية لك، لكنك لن تحصل على لوحات المعلومات المهيأة مسبقًا في هذه الحالة.
يمكنك تثبيت جميع المتطلبات لتشغيل كود Bughound باستخدام الأمر التالي:
pip3 install -r requirements.txt
سيضمن ذلك تثبيت جميع المتطلبات للكود.
أيضًا، تحتاج إلى تثبيت Docker لتشغيل صورة Bughound، المزيد حول هذا في القسم التالي!
إذا كنت ترغب في استخدام مثيلات Elasticsearch و Kibana الخاصة بك، فتجاوز خطوة تثبيت Docker
تأكد من الحصول على أحدث إصدار من Bughound باستخدام الأمر التالي:
git clone https://github.com/mhaskar/Bughound
وبعد تثبيت المتطلبات في الخطوة السابقة يمكنك تشغيل Bughound باستخدام الأمر التالي:
./bughound.py
ستحصل على الشاشة الرئيسية لـ Bughound.
┌─[askar@hackbook]─[/opt/bughound]
└──╼ $./bughound.py
.______ __ __ _______ __ __ ______ __ __ .__ __. _______
| _ \ | | | | / _____|| | | | / __ \ | | | | | \ | | | \
| |_) | | | | | | | __ | |__| | | | | | | | | | | \| | | .--. |
| _ < | | | | | | |_ | | __ | | | | | | | | | | . ` | | | | |
| |_) | | `--' | | |__| | | | | | | `--' | | `--' | | |\ | | '--' |
|______/ \______/ \______| |__| |__| \______/ \______/ |__| \__| |_______/
\ /
oVo
\___XXX___/
__XXXXX__
/__XXXXX__\
/ XXX \
V V1.0 Beta
[+] Example: ./bughound3.py --path vulnerable_code/ --language php --extension .php --name testproject
usage: bughound.py [-h] [--path PATH] [--git GIT] --language LANGUAGE
--extension EXTENSION --name NAME [--verbose [VERBOSE]]
bughound.py: error: argument --language is required
┌─[✗]─[askar@hackbook]─[/opt/bughound]
└──╼ $
لتثبيت صورة Docker الخاصة بـ Bughound، يمكنك ببساطة القيام بما يلي:
docker pull bughound/bughound
وسيسحب ذلك أحدث إصدار من الصورة ويحفظها على جهازك.
بمجرد أن نسحب الصورة، يمكننا تشغيلها باستخدام الأمر التالي:
docker run --name bughound -p5601:5601 -p 9200:9200 bughound/bughound
سيؤدي ذلك إلى تشغيل الصورة تحت حاوية جديدة تسمى bughound وتعريض المنافذ التي يحتاجها Bughound للاتصال بـ Elasticsearch و Kibana مع مضيفك.
قد تحتاج إلى زيادة الذاكرة الافتراضية القصوى لاستخدام الصورة، لذا يرجى التأكد من تشغيل هذا الأمر:
sysctl -w vm.max_map_count=262144
بعد إنجاز الأمرين، أنت الآن جاهز لاستخدام Bughound!
لبدء عملية التحليل للكود الخاص بك، يجب عليك استخدام ملف Bughound.py الذي يحتوي على بعض الخيارات، لرؤية هذه الخيارات عبر لافتة المساعدة، يمكنك استخدام الأمر التالي:
┌─[✗]─[askar@hackbook]─[/opt/bughound]
└──╼ $./bughound.py -h
.______ __ __ _______ __ __ ______ __ __ .__ __. _______
| _ \ | | | | / _____|| | | | / __ \ | | | | | \ | | | \
| |_) | | | | | | | __ | |__| | | | | | | | | | | \| | | .--. |
| _ < | | | | | | |_ | | __ | | | | | | | | | | . ` | | | | |
| |_) | | `--' | | |__| | | | | | | `--' | | `--' | | |\ | | '--' |
|______/ \______/ \______| |__| |__| \______/ \______/ |__| \__| |_______/
\ /
oVo
\___XXX___/
__XXXXX__
/__XXXXX__\
/ XXX \
V V1.0 Beta
[+] Example: ./bughound3.py --path vulnerable_code/ --language php --extension .php --name testproject
usage: bughound.py [-h] [--path PATH] [--git GIT] --language LANGUAGE
--extension EXTENSION --name NAME [--verbose [VERBOSE]]
optional arguments:
-h, --help show this help message and exit
--path PATH local path of the source code
--git GIT git repository URL
--language LANGUAGE the used programming language
--extension EXTENSION
extension to search for
--name NAME project name to use
--verbose [VERBOSE] show debugging messages
┌─[askar@hackbook]─[/opt/bughound]
└──╼ $
على سبيل المثال، لمسح مشروع PHP محلي، يمكنك استخدام الأمر التالي:
./bughound.py --path /opt/dummyproject --language php --extension .php --name dummyproject
سينشئ هذا الأمر مشروعًا جديدًا يسمى "dummyproject" في فهرس Elasticsearch، ويزحف إلى جميع الملفات المحلية ذات الامتداد ".php" في المسار المحلي "/opt/dummyproject" ويرسل النتائج إلى Elasticsearch.
أيضًا، يمكنك سحب مشروع عن بُعد من مستودع git باستخدام المفتاح --git على النحو التالي:
./bughound.py --git https://github.com/DummyCode/DummyProject --language php --extension .php --name dummyproject
سيقوم Bughound باستنساخ الكود لك وحفظه في دليل projects، ثم سيقوم بمسحه ضوئيًا.
إذا قررت استخدام صورة Docker الرسمية لـ Bughound، فستحصل على بضع لوحات معلومات جاهزة للاستخدام ستساعدك في إجراء التحليل.
لوحات المعلومات التالية متاحة حتى الآن:
ستعطيك لوحات المعلومات هذه إحصائيات حول الوظائف ومقتطفات الكود التي تم العثور عليها في الكود حتى تتمكن من بدء عملية التحليل.
لمزيد من المعلومات حول Bughound، تحقق من المقالات التالية:
هذا المشروع مرخص بموجب ترخيص GPL-3.0 - راجع ملف LICENSE للحصول على التفاصيل