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

الميزات
- سرعة فائقة وتجربة استخدام بدون واجهة رسومية بفضل IDA 9.x وربطات idalib-rs بلغة Rust.
- دعم للأهداف الثنائية المكتوبة بـ C/C++ والمُترجَمة لأي بنية معمارية يدعمها IDA.
- تُطبع مواقع استدعاءات الدوال الخطيرة إلى 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 # if not set, the build script will check common locations cargo install rhabdomancer$env:LIBCLANG_PATH="\path\to\clang+llvm\bin" $env:PATH="\path\to\ida;$env:PATH" $env:IDADIR="\path\to\ida" # if not set, the build script will check common locations cargo install rhabdomancer
الترجمة (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 # if not set, the build script will check common locations cargo build --releasegit 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" # if not set, the build script will check common locations cargo build --release
الاستخدام
- تأكد من أن 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 version | Latest compatible release |
|---|---|
| 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 | current release |
[!NOTE] راجع وثائق idalib-rs للحصول على معلومات إضافية.
الاعتمادات
تم دعم تطوير هذا المشروع من قبل المؤسسات التالية:
سجل التغييرات
المهام المستقبلية (TODO)
- إثراء قائمة دوال API الخطيرة المعروفة بشكل أكبر (انظر https://github.com/0xdea/semgrep-rules).
- النظر في توسيع نطاق التطبيع في
normalize_nameلتغطية المزيد من الحالات. - تنفيذ مجموعة قواعد أساسية على غرار VulFi و VulnFanatic.