
rhabdomancer v0.10.0
भेद्यता अनुसंधान सहायक जो बाइनरी फ़ाइल में संभावित रूप से असुरक्षित API फ़ंक्शंस के कॉल्स का पता लगाता है।
rhabdomancer
"अशोषणीय बग्स शोषण योग्य बग्स का मार्ग प्रशस्त करते हैं।"
-- Mark Dowd
Rhabdomancer एक अत्यंत तेज़ IDA हेडलेस प्लगइन है जो बाइनरी फ़ाइल में संभावित रूप से असुरक्षित API फ़ंक्शनों के कॉल का पता लगाता है। ऑडिटर इन उम्मीदवार बिंदुओं से बैकट्रेस करके उन मार्गों को खोज सकते हैं जो अविश्वसनीय इनपुट तक पहुँच की अनुमति देते हैं।

विशेषताएँ
- IDA 9.x और idalib-rs Rust बाइंडिंग्स की बदौलत अत्यंत तेज़, हेडलेस उपयोगकर्ता अनुभव।
- IDA द्वारा कार्यान्वित किसी भी आर्किटेक्चर के लिए संकलित C/C++ बाइनरी टारगेट्स के लिए समर्थन।
- खराब 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 # 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
संकलन
वैकल्पिक रूप से, आप स्रोत से निर्माण कर सकते हैं:
- 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 एक वैध लाइसेंस के साथ ठीक से कॉन्फ़िगर किया गया है।
- यदि आवश्यक हो तो
conf/rhabdomancer.tomlमें ज्ञात खराब API फ़ंक्शनों की सूची अनुकूलित करें। आपRHABDOMANCER_CONFIGपर्यावरण चर सेट करके डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल स्थान को ओवरराइड कर सकते हैं। - यदि आपका IDA इंस्टॉलेशन गैर-मानक स्थान पर है तो सुनिश्चित करें कि
IDADIRपर्यावरण चर सेट है। - निम्नानुसार चलाएँ:
कोई भी मौजूदा
rhabdomancer <binary_file>.i64IDB फ़ाइल अपडेट की जाएगी; अन्यथा, एक नई IDB फ़ाइल बनाई जाएगी। - परिणामी
.i64IDB फ़ाइल को 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 दस्तावेज़ देखें।
श्रेय
इस परियोजना के विकास को निम्नलिखित संगठनों द्वारा समर्थित किया गया है:
- HN Security
- Hex-Rays अपने Contributor Program के माध्यम से
परिवर्तन लॉग
TODO
- ज्ञात खराब API फ़ंक्शन सूची को और समृद्ध करें (देखें https://github.com/0xdea/semgrep-rules)।
- अधिक मामलों को ध्यान में रखने के लिए
normalize_nameमें सामान्यीकरण के दायरे को व्यापक बनाने पर विचार करें। - VulFi और VulnFanatic की शैली में एक बुनियादी रूलसेट लागू करें।