
फजिंग आउटपुट के लिए पोर्टेबल डिबगर-आधारित क्रैश ट्राइएज टूल। समानांतर ट्राइएज, क्रैश डिडुप्लीकेशन, सैनिटाइज़र रिपोर्ट पार्सिंग, और कई रिपोर्ट प्रारूपों (टेक्स्ट, JSON) का समर्थन करता है।
AFLTriage एक उपकरण है जो डिबगर का उपयोग करके क्रैश करने वाली इनपुट फ़ाइलों का ट्राइज करता है। यह पोर्टेबल होने के लिए डिज़ाइन किया गया है और इसके लिए libc और एक बाहरी डिबगर के अलावा किसी रन-टाइम निर्भरता की आवश्यकता नहीं है। यह किसी भी प्रोग्राम द्वारा उत्पन्न क्रैश का ट्राइज करने में सक्षम है, न कि केवल AFL द्वारा, लेकिन यह AFL निर्देशिकाओं को विशेष रूप से पहचानता है, इसलिए यह नाम।
कुछ उल्लेखनीय विशेषताएं शामिल हैं:
वर्तमान में AFLTriage केवल GDB का समर्थन करता है और केवल Linux C/C++ लक्ष्यों पर परीक्षण किया गया है। ध्यान दें कि AFLTriage संभावित शोषण क्षमता के आधार पर क्रैश को वर्गीकृत नहीं करता है। सटीक शोषण क्षमता वर्गीकरण लक्ष्य और परिदृश्य विशिष्ट है और विशिष्ट उपकरणों और विशेषज्ञ विश्लेषकों पर छोड़ दिया जाना सबसे अच्छा है।
AFLTriage का उपयोग काफी सीधा है। आपको ट्राइज करने के लिए अपने इनपुट, रिपोर्ट के लिए एक आउटपुट निर्देशिका, और ट्राइज करने के लिए बाइनरी और इसके तर्कों की आवश्यकता है।
उदाहरण:
$ afltriage -i fuzzing_directory -o reports ./target_binary --option-one @@
AFLTriage v1.0.0
[+] GDB काम कर रहा है (GNU gdb (Ubuntu 8.1.1-0ubuntu1) 8.1.1 - Python 3.6.9 (default, Jan 26 2021, 15:33:00))
[+] इमेज ट्राइज cmdline: "./target_binary --option-one @@"
[+] रिपोर्ट "reports" निर्देशिका में आउटपुट की जाएंगी
[+] AFL निर्देशिका fuzzing_directory/ (41 फ़ाइलें) का ट्राइज हो रहा है
[+] 41 टेस्टकेस का ट्राइज हो रहा है
[+] ट्राइज के लिए 24 थ्रेड का उपयोग किया जा रहा है
[+] ट्राइज हो रहा है [41/41 00:00:02] [####################] CRASH: ASAN ने buggy_function में heap-buffer-overflow का पता लगाया, READ के बाद SIGABRT (si_signo=6) / SI_TKILL (si_code=-6) का कारण बना
[+] ट्राइज आँकड़े [Crashes: 25 (unique 12), No crash: 16, Errored: 0]
AFL के समान, @@ को ट्राइज की जाने वाली फ़ाइल के पथ से बदल दिया जाता है। AFLTriage शेष का ध्यान रखेगा।
आपको एक कार्यशील Rust बिल्ड वातावरण की आवश्यकता होगी। एक बार जब आप cargo और rust स्थापित कर लें, तो निर्माण और चलाना सरल है:
cd afltriage-rs/
cargo run --help
<संकलन>
Finished dev [unoptimized + debuginfo] target(s) in 0.33s
Running `target/debug/afltriage --help`
<AFLTriage उपयोग>
...
afltriage 1.0.0
क्रैश करने वाले टेस्टकेस का तुरंत ट्राइज और सारांश करें
उपयोग:
afltriage -i <input>... -o <output> <command>...
विकल्प:
-i <input>...
ट्राइज करने के लिए एक टेस्टकेस, टेस्टकेस की निर्देशिका, AFL निर्देशिका, और/या AFL निर्देशिकाओं की निर्देशिका के पथों की सूची। ध्यान दें कि यह तर्क एक पंक्ति में कई इनपुट लेता है (जैसे -i input1 input2...) इसलिए यह AFLTriage को पास किया गया अंतिम तर्क नहीं हो सकता – यह कमांड के लिए आरक्षित है।
-o <output>
ट्राइज रिपोर्ट फ़ाइलों के लिए आउटपुट निर्देशिका। पूरी रिपोर्ट कंसोल पर प्रिंट करने के लिए '-' का उपयोग करें।
-t, --timeout <timeout>
प्रत्येक टेस्टकेस को ट्राइज करने के लिए मिलीसेकंड में टाइमआउट। [डिफ़ॉल्ट: 60000]
-j, --jobs <jobs>
ट्राइज के दौरान उपयोग करने के लिए कितने थ्रेड।
--report-formats <report_formats>...
ट्राइज रिपोर्ट आउटपुट प्रारूप। एकाधिक मानों की अनुमति है: जैसे text,json। [डिफ़ॉल्ट: text] [संभावित
मान: text, json, rawjson]
--bucket-strategy <bucket_strategy>
उपयोग करने के लिए क्रैश डीडुप्लिकेशन रणनीति। [डिफ़ॉल्ट: afltriage] [संभावित मान: none, afltriage,
first_frame, first_frame_raw, first_5_frames, function_names, first_function_name]
--child-output
ट्राइज रिपोर्ट में चाइल्ड आउटपुट शामिल करें।
--child-output-lines <child_output_lines>
लक्ष्य से प्रोग्राम आउटपुट की कितनी पंक्तियाँ रिपोर्ट में शामिल करें। 0 का अर्थ असीमित पंक्तियाँ (अनुशंसित नहीं)। [डिफ़ॉल्ट: 25]
--stdin
फ़ाइल के बजाय stdin के माध्यम से लक्ष्य को टेस्टकेस इनपुट प्रदान करें।
--profile-only
पर्यावरण जाँच करें, ट्राइज किए जाने वाले इनपुट का वर्णन करें, और लक्ष्य बाइनरी को प्रोफ़ाइल करें।
--skip-profile
इनपुट प्रसंस्करण से पहले लक्ष्य प्रोफाइलिंग छोड़ें।
--debug
ट्राइज ऑपरेशन के निम्न-स्तरीय डीबग आउटपुट सक्षम करें।
-h, --help
सहायता जानकारी प्रिंट करता है
-V, --version
संस्करण जानकारी प्रिंट करता है
आर्गुमेंट:
<command>...
निष्पादित करने के लिए बाइनरी निष्पादन योग्य और तर्क। इनपुट फ़ाइल या --stdin के पथ के लिए प्लेसहोल्डर के रूप में '@@' का उपयोग करें। वैकल्पिक रूप से कमांड की शुरुआत को सीमांकित करने के लिए -- का उपयोग करें।
AFLTriage BSD 3-क्लॉज "नया" या "संशोधित" के तहत लाइसेंस प्राप्त है। अधिक जानकारी के लिए LICENSE देखें।