
AFL + DynamoRIO = Linux पर बिना सोर्स कोड के बाइनरी फ़ज़िंग
मूल AFL QEMU मोड का उपयोग करके ब्लैक-बॉक्स कवरेज-निर्देशित फ़ज़िंग का समर्थन करता है। मैं इसे पहले आज़माने की अत्यधिक अनुशंसा करता हूं और यदि यह काम नहीं करता है तो आप इस टूल को आज़मा सकते हैं। इसके अतिरिक्त, आप Manul आज़माना चाह सकते हैं जो Windows और Linux पर ब्लैकबॉक्स बाइनरी फ़ज़िंग का समर्थन करता है।
आपको DRRUN_PATH को drrun लॉन्चर की ओर इंगित करने के लिए और LIBCOV_PATH को libbinafl.so कवरेज लाइब्रेरी की ओर इंगित करने के लिए निर्दिष्ट करना होगा। आपको AFL के फोर्क सर्वर को बंद करना होगा (AFL_NO_FORKSRV=1) और संभवतः AFL_SKIP_BIN_CHECK=1। अधिक जानकारी के लिए नीचे बिल्ड सेक्शन में चरण 5 देखें।
नोट: यह न भूलें कि आपको 64-बिट बाइनरी के लिए 64-बिट DynamoRIO और 32-बिट बाइनरी के लिए 32-बिट DynamoRIO का उपयोग करना चाहिए, अन्यथा यह काम नहीं करेगा। यह सुनिश्चित करने के लिए कि आपका लक्ष्य DynamoRIO के अंतर्गत चल रहा है, आप इसे निम्नलिखित कमांड का उपयोग करके चला सकते हैं:
drrun -- <path/to/your/app/> <app_args>
इंस्ट्रुमेंटेशन लाइब्रेरी Ivan Fratric द्वारा बनाई गई winAFL की कवरेज लाइब्रेरी का एक संशोधित संस्करण है।
git clone https://github.com/mxmssh/drAFL.git /home/max/drAFL
cd /home/max/drAFL
git clone https://github.com/DynamoRIO/dynamorio
mkdir build_dr
cd build_dr/
cmake ../dynamorio/
make -j
cd ..
यदि आपको DynamoRIO संकलन में कोई समस्या है तो इस पेज की जाँच करें
mkdir build
cd build
cmake ../bin_cov/ -DDynamoRIO_DIR=../build_dr/cmake
make -j
cd ..
cd afl/
make
cd ..
cd build
mkdir in
mkdir out
echo "AAAA" > in/seed
export DRRUN_PATH=/home/max/drAFL/build_dr/bin64/drrun
export LIBCOV_PATH=/home/max/drAFL/build/libbinafl.so
export AFL_NO_FORKSRV=1
export AFL_SKIP_BIN_CHECK=1
../afl/afl-fuzz -m none -i in -o out -- ./afl_test @@
afl_test के मामले में आपको 25-30 exec/sec और 2-3 मिनट में 1 अद्वितीय क्रैश की उम्मीद करनी चाहिए।