
rhabdomancer v0.10.0
مساعد أبحاث الثغرات الأمنية الذي يحدد مواقع استدعاءات دوال API التي قد تكون غير آمنة في ملف ثنائي.
rhabdomancer
"الطريق إلى الثغرات القابلة للاستغلال معبّد بثغرات غير قابلة للاستغلال."
-- Mark Dowd
Rhabdomancer هو إضافة IDA سريعة جداً تعمل بدون واجهة رسومية (headless)، وتحدد مواقع استدعاء دوال API غير الآمنة محتملة في ملف ثنائي. يمكن للمدققين تتبع الأثر العكسي من هذه النقاط المرشحة للعثور على مسارات تسمح بالوصول إلى مدخلات غير موثوقة.

الميزات
- تجربة مستخدم سريعة جداً وبدون واجهة رسومية بفضل IDA 9.x وربطات idalib-rs بلغة Rust.
- دعم أهداف ثنائية C/C++ مُجمّعة لأي بنية معمارية تدعمها IDA.
- طباعة مواقع استدعاءات دوال API السيئة إلى stdout وتمييزها في ملف IDB.
- تجميع دوال API السيئة المعروفة في مستويات من الخطورة للمساعدة في ترتيب أولويات أعمال التدقيق.
- [BAD 0] أولوية عالية - دوال تُعتبر غير آمنة بشكل عام.
- [BAD 1] أولوية متوسطة - دوال مثيرة للاهتمام يجب فحصها بحثاً عن حالات استخدام غير آمنة.
- [BAD 2] أولوية منخفضة - مسارات الكود التي تتضمن هذه الدوال يجب فحصها بعناية.
- يمكن تخصيص قائمة دوال API السيئة المعروفة بسهولة عن طريق تعديل
conf/rhabdomancer.toml.
المقالات
- https://hex-rays.com/blog/streamlining-vulnerability-research-idalib-rust-bindings
- https://hnsecurity.it/blog/streamlining-vulnerability-research-with-ida-pro-and-rust
انظر أيضاً
- https://github.com/0xdea/ghidra-scripts/blob/main/Rhabdomancer.java
- https://docs.hex-rays.com/release-notes/9_0#headless-processing-with-idalib
- https://github.com/idalib-rs/idalib
- https://books.google.it/books/about/The_Art_of_Software_Security_Assessment.html
التثبيت
أسهل طريقة للحصول على أحدث إصدار هي عبر crates.io:
- قم بتنزيل وتثبيت وتهيئة IDA (انظر https://hex-rays.com/ida-pro).
- قم بتثبيت LLVM/Clang (انظر https://rust-lang.github.io/rust-bindgen/requirements.html).
- على Linux/macOS، قم بالتثبيت كما يلي:
أما على Windows، فاستخدم الأوامر التالية:
export IDADIR=/path/to/ida # إذا لم يتم تعيينه، سيتحقق سكربت البناء من المواقع الشائعة cargo install rhabdomancer --locked$env:LIBCLANG_PATH="\path\to\clang+llvm\bin" $env:PATH="\path\to\ida;$env:PATH" $env:IDADIR="\path\to\ida" # إذا لم يتم تعيينه، سيتحقق سكربت البناء من المواقع الشائعة cargo install rhabdomancer --locked
الترجمة (Compiling)
بدلاً من ذلك، يمكنك البناء من المصدر:
- قم بتنزيل وتثبيت وتهيئة IDA (انظر https://hex-rays.com/ida-pro).
- قم بتثبيت LLVM/Clang (انظر https://rust-lang.github.io/rust-bindgen/requirements.html).
- على Linux/macOS، قم بالترجمة كما يلي:
أما على Windows، فاستخدم الأوامر التالية:
git clone --depth 1 https://github.com/0xdea/rhabdomancer cd rhabdomancer export IDADIR=/path/to/ida # إذا لم يتم تعيينه، سيتحقق سكربت البناء من المواقع الشائعة cargo build --release --lockedgit clone --depth 1 https://github.com/0xdea/rhabdomancer cd rhabdomancer $env:LIBCLANG_PATH="\path\to\clang+llvm\bin" $env:PATH="\path\to\ida;$env:PATH" $env:IDADIR="\path\to\ida" # إذا لم يتم تعيينه، سيتحقق سكربت البناء من المواقع الشائعة cargo build --release --locked
الاستخدام
- تأكد من أن IDA مهيأة بشكل صحيح مع ترخيص صالح.
- قم بتخصيص قائمة دوال API السيئة المعروفة في
conf/rhabdomancer.tomlإذا لزم الأمر. يمكنك تجاوز موقع ملف الإعداد الافتراضي عن طريق تعيين متغير البيئةRHABDOMANCER_CONFIG. - تأكد من تعيين متغير البيئة
IDADIRإذا كان تثبيت IDA لديك في موقع غير قياسي. - قم بالتشغيل كما يلي:
سيتم تحديث أي ملف IDB موجود بامتداد
rhabdomancer <binary_file>.i64؛ وإلا، سيتم إنشاء ملف IDB جديد. - افتح ملف IDB الناتج بامتداد
.i64باستخدام IDA. - اختر
View>Open subviews>Bookmarks - استمتع بنتائجك مجمعة بشكل ملائم في نافذة IDA.
[!NOTE] يضيف Rhabdomancer أيضاً تعليقات في مواقع الاستدعاءات المميزة.
التوافق
يتم دعم أحدث إصدار من IDA رسمياً فقط، لكن الإصدارات الأقدم قد تعمل أيضاً. يلخص الجدول التالي أحدث إصدار متوافق لكل إصدار من IDA:
| إصدار IDA | أحدث إصدار متوافق |
|---|---|
| v9.0.240925 | v0.2.4 |
| v9.0.241217 | v0.3.5 |
| v9.1.250226 | v0.6.2 |
| v9.2.250908 | v0.7.6 |
| v9.3.260213 | v0.8.1 |
| v9.3.260327 | v0.9.0 |
| v9.3.260421 | v0.9.3 |
| v9.4.260714 | الإصدار الحالي |
[!NOTE] راجع توثيق idalib-rs للحصول على معلومات إضافية.
الإشادات
تم دعم تطوير هذا المشروع من قبل المنظمات التالية:
سجل التغييرات
المهام المستقبلية
- إثراء قائمة دوال API السيئة المعروفة بشكل أكبر (انظر https://github.com/0xdea/semgrep-rules).
- النظر في توسيع نطاق التطبيع في
normalize_nameلتغطية المزيد من الحالات. - تنفيذ مجموعة قواعد أساسية بأسلوب VulFi وVulnFanatic.