
चलो Zyxel राउटर फर्मवेयर और MIPS Arch में खुदाई करके मज़ा करें।
ट्यूटोरियल केवल सूचनात्मक और शैक्षिक उद्देश्यों के लिए हैं। मेरा मानना है कि नैतिक हैकिंग, सूचना सुरक्षा और साइबर सुरक्षा ऐसे विषय होने चाहिए जो डिजिटल जानकारी और कंप्यूटर का उपयोग करने वाले किसी भी व्यक्ति से परिचित हों। मेरा मानना है कि हैकर्स से अपनी रक्षा करना तब तक असंभव है जब तक आप यह नहीं जानते कि हैकिंग कैसे की जाती है।
$ IDA Pro +7.0 (you can use Radar2 since IDA is quite expensive)
$ Router running Rompager 4.07 : there're immense number of them such as TP-Link TD-W8951*, ZyXEL P-660R, Billion BiPAC 51**/52**
$ UART to USB
मिसफॉर्च्यून कुकी भेद्यता कुछ समय से मौजूद है लेकिन फिर भी सार्वजनिक रूप से भेद्यता के तकनीकी विवरण को स्पष्ट करने वाला कोई विश्लेषण उपलब्ध नहीं है। Check Point के अनुसार प्रभावित सॉफ्टवेयर AllegroSoft का एम्बेडेड वेब सर्वर RomPager है। इंटरनेट-व्यापी स्कैन से पता चलता है कि उपलब्ध एंडपॉइंट्स की संख्या के मामले में RomPager दुनिया का सबसे लोकप्रिय वेब सर्वर सॉफ्टवेयर है। RomPager आमतौर पर डिवाइस के साथ जारी फर्मवेयर में एम्बेडेड होता है। यह विशिष्ट भेद्यता 2002 में कोड बेस में शामिल की गई थी। इसके अलावा, उजागर हुए डिवाइस वे हैं जो संस्करण 4.34 से पहले (और विशेष रूप से 4.07) के RomPager सेवाओं का उपयोग कर रहे हैं।
इस ट्यूटोरियल के लिए मैं ZXHN H108L का उपयोग करूंगा जो Rompager 4.07 का उपयोग करता है
HTTP/1.1 401 Unauthorized
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
OUT :
speed 115200 baud; line = 0;
-brkint -imaxbel
device
मैं minicom का उपयोग करता हूं, आप screen से लेकर HyperTerminal तक कुछ भी उपयोग कर सकते हैं, लेकिन मैं इसकी स्थिरता के कारण इसे पसंद करता हूं ;)
$ sudo minicom -s
+-----------------------------------------------------------------------+
| A - Serial Device : /dev/modem |
| B - Lockfile Location : /var/lock |
| C - Callin Program : |
| D - Callout Program : |
| E - Bps/Par/Bits : 115200 8N1 |
| F - Hardware Flow Control : No |
| G - Software Flow Control : No |
| |
| Change which setting? |
+-----------------------------------------------------------------------+
| Screen and keyboard |
| Save setup as dfl |
| Save setup as.. |
| Exit |
| Exit from Minicom |
+--------------------------+
अब हम जाने के लिए तैयार हैं:
$ sudo minicom -D /dev/ttyUSB0 -b 115200
Bootbase Version: VTC_SPI1.26 | 2012/12/26 16:00:00
RAM: Size = 8192 Kbytes
Found SPI Flash 2MiB GD25Q16 at 0xbfc00000
SPI Flash Quad Enable
Turn off Quad Mode
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
Press any key to enter debug mode within 3 seconds.
..........
संभावित कमांड दिखाने के लिए:
$ ATHE
======= Debug Command Listing =======
AT just answer OK
ATHE print help
ATBAx change baudrate. 1:38.4k, 2:19.2k, 3:9.6k 4:57.6k 5:115.2k
ATENx,(y) set BootExtension Debug Flag (y=password)
ATSE show the seed of password generator
ATTI(h,m,s) change system time to hour:min:sec or show current time
ATDA(y,m,d) change system date to year/month/day or show current date
ATDS dump RAS stack
ATDT dump Boot Module Common Area
ATDUx,y dump memory contents from address x for length y
ATRBx display the 8-bit value of address x
ATRWx display the 16-bit value of address x
ATRLx display the 32-bit value of address x
ATGO(x) run program at addr x or boot router
ATGR boot router
ATGT run Hardware Test Program
ATRTw,x,y(,z) RAM test level w, from address x to y (z iterations)
ATSH dump manufacturer related data in ROM
ATDOx,y download from address x for length y to PC via XMODEM
ATTD download router configuration to PC via XMODEM
ATUR upload router firmware to flash ROM
< press any key to continue >
इस फर्मवेयर में छिपे हुए कमांड का एक सेट है जो हमारे गतिशील विश्लेषण के लिए बहुत उपयोगी है, समस्या यह है कि हम रजिस्टर नहीं देख सकते और न ही ब्रेकपॉइंट सेट कर सकते हैं, लेकिन उम्मीद है कि इन छिपे हुए कमांड के साथ हमारे पास वे सुविधाएं होंगी, उन्हें देखने और उपयोग करने के लिए हमें 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 executable code, 32/64-bit, big endian, at least 1250 valid instructions
string एक बेहतरीन उपकरण है जो यह अंदाजा लगाने में मदद करता है कि बाइनरी फ़ाइल क्या है या उसमें क्या है, आइए देखें कि क्या हम पासवर्ड एल्गोरिदम पा सकते हैं:
$ 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 # " just answer 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 # " print help"
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