
एक उदाहरण C प्रोग्राम जिसमें सामान्य प्रकार की कमजोरियों के लिए असुरक्षित कोड होता है। इसका उपयोग फ़ज़िंग अवधारणाओं को दिखाने के लिए किया जा सकता है।
नोट: फ़ाइल का नाम imgRead.c से बदलकर dvcp.c कर दिया गया है, यदि आप वीडियो देख रहे हैं, तो आपको imgRead.c दिखेगा लेकिन github रेपो में आपको dvcp.c दिखेगा, कृपया सही फ़ाइल नाम का उपयोग करें।
मेरा YouTube चैनल: https://www.youtube.com/user/MrHardik05/featured?view_as=subscriber
यह क्या है?
यह एक सरल C प्रोग्राम है जिसे मैंने सामान्य प्रकार की कमजोरियों (vulnerabilities) को समझाने के लिए कोड किया है जैसे:
इस C प्रोग्राम में उपरोक्त सभी कमजोरियों से युक्त असुरक्षित (vulnerable) कोड शामिल है और आप इसे किसी भी फज़र जैसे AFL, libafl, libfuzzer, hongfuzz, winafl, jackalope या किसी अन्य फज़र से फज़ कर सकते हैं।
कैसे कंपाइल करें
कमांड प्रॉम्प्ट पर बस "make" टाइप करें। Makefile इसके साथ शामिल है।
AFL के लिए इनपुट कैसे जनरेट करें?
बस निम्नानुसार एक नमूना इनपुट फ़ाइल बनाएं और बाकी AFL संभाल लेगा:
echo "IMG" >input/1.txt
AFL स्वचालित रूप से नए टेस्ट केस जनरेट करेगा और ऊपर बताई गई अधिकांश कमजोरियों की खोज कर लेगा। यही AFL की खूबसूरती है :)
AFL का उपयोग करके इसे कैसे फज़ करें?
1. पहले इस प्रोग्राम को निम्न कमांड का उपयोग करके कंपाइल करें:
afl-gcc -g -fsanitize=address dvcp.c -o dvcp
2. यह कमांड चलाएं:
afl-fuzz -i input -o output -m none -- ./dvcp @@
honggfuzz का उपयोग करके इसे कैसे फज़ करें
1. पहले इस प्रोग्राम को निम्न कमांड का उपयोग करके कंपाइल करें:
hfuzz-gcc -g -fsanitize=address dvcp.c -o dvcp
2. यह कमांड चलाएं:
hongfuzz -i input -- ./dvcp ___FILE___
libfuzzer का उपयोग करके कैसे फज़ करें
आपको C कोड को संशोधित करने की आवश्यकता है, आप अपडेट किया गया कोड यहां से प्राप्त कर सकते हैं: https://github.com/hardik05/Damn_Vulnerable_C_Program/blob/master/dvcp_libfuzzer.c
1. प्रोग्राम को निम्न कमांड का उपयोग करके कंपाइल करें:
clang -fsanitize=fuzzer,address,undefined -g dvcp_libfuzzer.c -o dvcp_libfuzzer
2. फज़ करने के लिए यह कमांड चलाएं:
./dvcp_libfuzzer
आप वीडियो ट्यूटोरियल यहां देख सकते हैं:
संपूर्ण फज़िंग प्लेलिस्ट:
नीचे अलग-अलग वीडियो:
लिनक्स
LibAFL
[libAFL के साथ फज़िंग] सिस्टम पर libAFL कैसे इंस्टॉल करें और विभिन्न घटक क्या हैं? -> https://www.youtube.com/watch?v=ztGfxbvcrms
[libAFL के साथ फज़िंग] libAFL ForkServer परिचय, libAFL forkserver फज़र चलाना। -> https://www.youtube.com/watch?v=Ed1anYoGTyA
[libAFL के साथ फज़िंग] libAFL forkserver फज़र के साथ Damn Vulnerable C Program को फज़ करना -> https://www.youtube.com/watch?v=ad_4zroiS_g
[libAFL के साथ फज़िंग] libAFL forkserver फज़र के साथ shared memory mode का उपयोग करना -> https://www.youtube.com/watch?v=GXD_qkISyfY
AFL++
[AFLplusplus के साथ फज़िंग] AFLPlusplus इंस्टॉल करना और एक सरल C प्रोग्राम को फज़ करना -> https://www.youtube.com/watch?v=9wRVo0kYSlc
[AFLplusplus के साथ फज़िंग] लिनक्स पर persistent mode में बिना सोर्स कोड वाले बाइनरी को कैसे फज़ करें -> https://www.youtube.com/watch?v=LGPJdEO02p4
AFL
[AFL के साथ फज़िंग] Ubuntu पर AFL कैसे इंस्टॉल करें-> https://www.youtube.com/watch?v=r7ucv2kN4j4
[AFL के साथ फज़िंग] AFL के साथ एक सरल C प्रोग्राम को फज़ करना -> https://www.youtube.com/watch?v=NiGC1jxFx78&t=66s
[AFL के साथ फज़िंग] AFL के साथ विभिन्न प्रकार की कमजोरियों की खोज करना -> https://www.youtube.com/watch?v=m1RkShHzx_8&t=151s
[AFL के साथ फज़िंग] crashwalk के साथ क्रैश का triaging और GDB के साथ मूल कारण खोजना -> https://www.youtube.com/watch?v=5R2gPkCXZkM
[AFL के साथ फज़िंग] Qemu mode में AFL के साथ बिना सोर्स कोड वाले बाइनरी को फज़ करना।-> https://www.youtube.com/watch?v=np3sLLFQs6I
Honggfuzz
[honggfuzz के साथ फज़िंग] HongFuzz के साथ एक सरल C प्रोग्राम को फज़ करना -> https://www.youtube.com/watch?v=6OBXJtEe-d8
[honggfuzz के साथ फज़िंग] Hongfuzz,checksec(pwntools),ASAN -> https://www.youtube.com/watch?v=Lr8pLQRTHac
Libfuzzer
[libfuzzer के साथ फज़िंग] LibFuzzer का उपयोग करके एक सरल C प्रोग्राम को कैसे फज़ करें -> https://www.youtube.com/watch?v=hFva8kJQwnc&list=PLHGgqcJIME5m7HaHfACayoyN0TRe2PHRp
[libfuzzer, AFL के साथ फज़िंग] AFL का उपयोग करके libfuzzer harness प्रोग्राम को कैसे फज़ करें -> https://www.youtube.com/watch?v=HfEqm3TrfwM&list=PLHGgqcJIME5m7HaHfACayoyN0TRe2PHRp&index=2
OpenSSL कमजोरियों CVE-2022-3602 और CVE-2022-3786 को कैसे replicate करें और libfuzzer का उपयोग करें -> https://www.youtube.com/watch?v=vhTuXph1dtY
Radamsa
[Radamsa के साथ फज़िंग] Radamsa के साथ एक सरल C प्रोग्राम को फज़ करना -> https://youtu.be/1FRsXVNpynQ
विंडोज़
WinAFL
[WinAFL के साथ फज़िंग] WinAFL के साथ एक सरल C प्रोग्राम को फज़ करना -> https://www.youtube.com/watch?v=Va_Wtxf3DMc
[WinAFL के साथ फज़िंग] फज़िंग फ़ंक्शन क्या है, कैसे सुनिश्चित करें कि सब कुछ सही ढंग से काम कर रहा है? -> https://www.youtube.com/watch?v=HLORLsNnPzo
मुझे winafl के साथ फज़ करने के लिए और windows harness चाहिए
बिल्कुल, यहां देखें -> https://github.com/hardik05/winafl-harness
मैं कुछ अलग आज़माना चाहता हूं शायद winafl के डिफ़ॉल्ट म्यूटेटर से कुछ अलग म्यूटेटर..
हाँ, आप यह आज़मा सकते हैं -> https://github.com/hardik05/winafl-powermopt
जैसे-जैसे मैं बनाता हूं, और अपलोड किए जाएंगे।
Google से OSS-Fuzz
OSS-Fuzz कैसे काम करता है: ओपन सोर्स प्रोजेक्ट्स के लिए फज़ टेस्टिंग गाइड -> https://www.youtube.com/watch?v=OBxCDsJ-0aM
आपने यह क्यों बनाया?
नए लोगों और यहां तक कि अनुभवी लोगों को विभिन्न प्रकार की कमजोरियों को समझने में बहुत समय लगता है। मैंने खुद इस समस्या का सामना किया है और जो मैंने सीखा उसे साझा करने का फैसला किया है।
यदि आप इससे कुछ सीखते हैं, तो मुझे एक धन्यवाद नोट भेजें। मुझे बस यही चाहिए। साथ ही यदि आप कुछ सुधारना या ठीक करना चाहते हैं तो PR का स्वागत है!
लेखक?
Twitter: https://twitter.com/hardik05
Email: मुझे twitter पर DM करें :)
प्रतिक्रिया?
सुझाव और टिप्पणियों का हमेशा स्वागत है। यदि आपको कोई समस्या मिलती है या आपके पास कोई फिक्स या नई सुविधा है तो पुल रिक्वेस्ट भेजें।