
rhabdomancer v0.10.0
भेद्यता अनुसंधान सहायक जो बाइनरी फ़ाइल में संभावित रूप से असुरक्षित API फ़ंक्शंस के कॉल्स का पता लगाता है।
rhabdomancer
"शोषण योग्य बगों का रास्ता अशोषण योग्य बगों से प्रशस्त होता है।"
-- मार्क डाउड
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 --locked$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 --locked
संकलन
वैकल्पिक रूप से, आप स्रोत से निर्माण कर सकते हैं:
- 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 --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" # if not set, the build script will check common locations cargo build --release --locked
उपयोग
- सुनिश्चित करें कि IDA एक वैध लाइसेंस के साथ ठीक से कॉन्फ़िगर किया गया है।
- यदि आवश्यक हो तो
conf/rhabdomancer.tomlमें ज्ञात खराब API फ़ंक्शनों की सूची को अनुकूलित करें। आपRHABDOMANCER_CONFIGपर्यावरण चर सेट करके डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल स्थान को ओवरराइड कर सकते हैं। - सुनिश्चित करें कि
IDADIRपर्यावरण चर सेट है यदि आपका IDA इंस्टॉलेशन एक गैर-मानक स्थान पर है। - निम्नानुसार चलाएँ:
कोई भी मौजूदा
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 की शैली में एक बुनियादी नियमसेट लागू करें।