
चलिए, Zyxel राउटर फर्मवेयर और MIPS Arch में खुदाई करके मज़ा लेते हैं।
ट्यूटोरियल केवल सूचनात्मक और शैक्षिक उद्देश्यों के लिए हैं। मेरा मानना है कि नैतिक हैकिंग, सूचना सुरक्षा और साइबर सुरक्षा ऐसे विषय होने चाहिए जिनसे डिजिटल जानकारी और कंप्यूटर का उपयोग करने वाले किसी भी व्यक्ति को परिचित होना चाहिए। मेरा मानना है कि हैकर्स से अपनी रक्षा करना असंभव है बिना यह जाने कि हैकिंग कैसे की जाती है।
$ IDA Pro +7.0 (आप Radar2 का उपयोग कर सकते हैं क्योंकि IDA काफी महंगा है)
$ राउटर जिसमें Rompager 4.07 चल रहा है : इनकी भारी संख्या है जैसे TP-Link TD-W8951*, ZyXEL P-660R, Billion BiPAC 51**/52**
$ UART से USB
मिस्फॉर्च्यून कुकी भेद्यता कुछ समय से मौजूद है लेकिन फिर भी सार्वजनिक रूप से भेद्यता के तकनीकी विवरणों को दर्शाने वाले विश्लेषण का अभाव है। चेक पॉइंट के अनुसार, प्रभावित सॉफ्टवेयर AllegroSoft का एम्बेडेड वेब सर्वर RomPager है। इंटरनेट-व्यापी स्कैन से पता चलता है कि उपलब्ध एंडपॉइंट्स की संख्या के मामले में RomPager संभवतः दुनिया में सबसे लोकप्रिय वेब सर्वर सॉफ्टवेयर है। RomPager आमतौर पर डिवाइस के साथ जारी फर्मवेयर में एम्बेडेड होता है। यह विशिष्ट भेद्यता 2002 में कोड बेस में पेश की गई थी। इसके अलावा, उजागर किए गए डिवाइस वे हैं जो संस्करण 4.34 से पहले (और विशेष रूप से 4.07) के RomPager सेवाओं का उपयोग करते हैं।
इस ट्यूटोरियल के लिए मैं ZXHN H108L का उपयोग करूंगा जो Rompager 4.07 का उपयोग करता है
HTTP/1.1 401 अनधिकृत
WWW-Authenticate: Basic realm="ZXHN H108L"
Content-Type: text/html
Transfer-Encoding: chunked
Server: RomPager/4.07 UPnP/1.0
EXT:
अब सीरियल पोर्ट का उपयोग करते हैं, पहले हमें बॉड दर निर्धारित करनी होगी
$ sudo stty -F /dev/ttyUSB0
आउटपुट :
speed 115200 baud; line = 0;
-brkint -imaxbel
device
मैं minicom का उपयोग करता हूं, आप screen से लेकर HyperTerminal तक कुछ भी उपयोग कर सकते हैं, लेकिन मैं इसकी स्थिरता के कारण इसे पसंद करता हूं ;)
$ sudo minicom -s
+-----------------------------------------------------------------------+
| A - सीरियल डिवाइस : /dev/modem |
| B - लॉकफ़ाइल स्थान : /var/lock |
| C - कॉलिन प्रोग्राम : |
| D - कॉलआउट प्रोग्राम : |
| E - Bps/Par/Bits : 115200 8N1 |
| F - हार्डवेयर फ्लो कंट्रोल : नहीं |
| G - सॉफ्टवेयर फ्लो कंट्रोल : नहीं |
| |
| कौन सी सेटिंग बदलनी है? |
+-----------------------------------------------------------------------+
| स्क्रीन और कीबोर्ड |
| सेटअप को dfl के रूप में सहेजें |
| सेटअप को इस नाम से सहेजें.. |
| बाहर निकलें |
| Minicom से बाहर निकलें |
+--------------------------+
अब हम जाने के लिए तैयार हैं:
$ sudo minicom -D /dev/ttyUSB0 -b 115200
Bootbase Version: VTC_SPI1.26 | 2012/12/26 16:00:00
RAM: आकार = 8192 Kbytes
SPI फ्लैश 2MiB GD25Q16 0xbfc00000 पर मिला
SPI फ्लैश क्वाड सक्षम
क्वाड मोड बंद करें
RAS Version: ZXHN H108LV4.0.0a_ZRQ_MA
System ID: $2.12.162.0(G94.BY.2)3.20.19.0| 2014/03/21 20140321_v006 | 2014
डीबग मोड में प्रवेश करने के लिए 3 सेकंड के भीतर कोई भी कुंजी दबाएं।
..........
संभावित कमांड दिखाने के लिए:
$ ATHE
======= डीबग कमांड सूची =======
AT बस OK उत्तर दें
ATHE सहायता प्रिंट करें
ATBAx बॉडरेट बदलें। 1:38.4k, 2:19.2k, 3:9.6k 4:57.6k 5:115.2k
ATENx,(y) BootExtension डीबग फ़्लैग सेट करें (y=पासवर्ड)
ATSE पासवर्ड जनरेटर का सीड दिखाएं
ATTI(h,m,s) सिस्टम समय को घंटा:मिनट:सेकंड में बदलें या वर्तमान समय दिखाएं
ATDA(y,m,d) सिस्टम दिनांक को वर्ष/महीना/दिन में बदलें या वर्तमान दिनांक दिखाएं
ATDS RAS स्टैक डंप करें
ATDT बूट मॉड्यूल सामान्य क्षेत्र डंप करें
ATDUx,y पते x से y लंबाई के लिए मेमोरी सामग्री डंप करें
ATRBx पते x का 8-बिट मान प्रदर्शित करें
ATRWx पते x का 16-बिट मान प्रदर्शित करें
ATRLx पते x का 32-बिट मान प्रदर्शित करें
ATGO(x) एड्रेस x पर प्रोग्राम चलाएं या राउटर बूट करें
ATGR राउटर बूट करें
ATGT हार्डवेयर परीक्षण प्रोग्राम चलाएं
ATRTw,x,y(,z) RAM परीक्षण स्तर w, पता x से y तक (z पुनरावृत्तियाँ)
ATSH ROM में निर्माता संबंधित डेटा डंप करें
ATDOx,y पते x से y लंबाई के लिए XMODEM के माध्यम से PC पर डाउनलोड करें
ATTD XMODEM के माध्यम से PC पर राउटर कॉन्फ़िगरेशन डाउनलोड करें
ATUR फ्लैश ROM पर राउटर फर्मवेयर अपलोड करें
< जारी रखने के लिए कोई भी कुंजी दबाएं >
इस फर्मवेयर में छिपे हुए कमांड का एक सेट है जो हमारे गतिशील विश्लेषण के लिए बहुत उपयोगी है, समस्या यह है कि हम रजिस्टर नहीं देख सकते हैं और न ही ब्रेकपॉइंट सेट कर सकते हैं लेकिन उम्मीद है कि इन छिपे हुए कमांड के साथ हमारे पास वे सुविधाएँ होंगी, उन्हें देखने और उपयोग करने के लिए हमें ATEN का उपयोग करने की आवश्यकता है। हालाँकि, इस कमांड के लिए एक पासवर्ड आवश्यक है, तो अब हम क्या कर सकते हैं? आइए पासवर्ड जनरेटर के एल्गोरिदम को खोजने के लिए फर्मवेयर को रिवर्स इंजीनियर करें।
(स्थैतिक विश्लेषण) पहले फर्मवेयर फ़ाइल देखते हैं:
$ binwalk ras
binwalk1
$ dd if=ras of=rom1.lzma bs=1 skip=85043 count=66696
$ dd if=ras of=rom2.lzma bs=1 skip=350259 count=3350556
$ lzma -d <rom1.lzma> rom1
$ lzma -d <rom2.lzma> rom2
अब निकाली गई फ़ाइलों में हस्ताक्षर देखते हैं:
$ binwalk -Y rom1
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 MIPS निष्पादन योग्य कोड, 32/64-बिट, बिग एंडियन, कम से कम 1250 मान्य निर्देश
स्ट्रिंग एक बेहतरीन उपकरण है जो यह अंदाजा लगाने में मदद करता है कि बाइनरी फ़ाइल क्या है या उसमें क्या है, आइए देखें कि क्या हम पासवर्ड एल्गोरिदम पा सकते हैं:
$ strings rom1 | grep -i aten
$ strings rom2 | grep -i aten
जाहिर है, हम इसे नहीं देख सकते क्योंकि फर्मवेयर अभी भी संपीड़ित है, जिसका अर्थ है कि हमें इसे डीबगिंग मोड का उपयोग करके राउटर से डंप करना होगा:
$ ATDO bfc00000, 1f0000
xmodem
सबसे पहले जो बात दिमाग में आती है वह है डिस्पैच टेबल की तलाश शुरू करना। क्यों? बस अंतर्ज्ञान, एकमात्र विकल्प if-elif है लेकिन यह उनका एक लंबा सेट होगा, उपयोगकर्ता द्वारा प्रदान किए गए पासवर्ड की वैधता की जांच करने के लिए, और यहाँ मुझे क्या मिला:
ROM:800158A0 CmdTable: .word unk_80015C20 # DATA XREF: sub_8000E3D8+4Co
ROM:800158A0 # sub_8000E3D8+90o ...
ROM:800158A4 .word sub_8000E6D0
ROM:800158A8 .byte 0
ROM:800158A9 .byte 0
ROM:800158AA .byte 0
ROM:800158AB .byte 0
ROM:800158AC .word aJustAnswerOk # " बस OK उत्तर दें"
ROM:800158B0 .word aAthe # "ATHE"
ROM:800158B4 .word CMD_SHOW_HELP_ATHE
ROM:800158B8 .byte 0
ROM:800158B9 .byte 0
ROM:800158BA .byte 0
ROM:800158BB .byte 0
ROM:800158BC .word aPrintHelp # " सहायता प्रिंट करें"
ROM:800158C0 .word aAtba # "ATBA"
ROM:800158C4 .word CMD_ATBA
...
ROM:800158D0 .word aAten # "ATEN"
ROM:800158D4 .word CMD_ATEN
ध्यान रखें कि MIPS शब्द 4 बाइट्स का होता है, अब CMD_ATEN देखते हैं:
ROM:8000FF84 lw $a0, 8($s0)
ROM:8000FF88 jal sub_80013654
ROM:8000FF8C li $a1, 0
ROM:8000FF90 jal passwd_generator
और अब: passwd_generator