Skip to content
KitploitKITPLOIT
أدواتالمدونة
Log in
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
MIPS-CVE-2014-9222 — دعونا نستمتع بالتعمق في البرنامج الثابت لموجه Zyxel ومعمارية MIPS | Kitploit
أدوات/GitHubGitHub/mercul1ninna/mips-cve-2014-9222
أمان الأنظمة المدمجةتحليل الثغرات الأمنيةالاستغلالالهندسة العكسيةاختراق الأجهزةتحليل الملفات الثنائيةالتعلم والتعليمتحليل البرامج الثابتة
GitHubmercul1ninna/mips-cve-2014-9222

MIPS-CVE-2014-9222

دعونا نستمتع بالتعمق في البرنامج الثابت لموجه Zyxel ومعمارية MIPS

عرض المستودع
20منذ 7 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

إخلاء مسؤولية

الدروس التعليمية هي لأغراض إعلامية وتثقيفية فقط. أنا أؤمن بأن القرصنة الأخلاقية وأمن المعلومات والأمن السيبراني يجب أن تكون مواضيع مألوفة لأي شخص يستخدم المعلومات الرقمية وأجهزة الكمبيوتر. وأؤمن بأنه من المستحيل الدفاع عن نفسك ضد القراصنة دون معرفة كيفية القيام بالقرصنة.

المتطلبات

$ 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

كانت ثغرة "Misfortune Cookie" موجودة منذ فترة، لكن ما زال ينقصها تحليل يوضح التفاصيل التقنية للثغرة بشكل علني. وفقًا لشركة Check Point، فإن البرنامج المتأثر هو خادم الويب المدمج RomPager من AllegroSoft. تشير عمليات المسح على نطاق الإنترنت إلى أن RomPager هو على الأرجح برنامج خادم الويب الأكثر شيوعًا في العالم من حيث عدد نقاط النهاية المتاحة. يُدمج RomPager عادةً في البرامج الثابتة (firmware) المرفقة مع الجهاز. أُدخلت هذه الثغرة تحديدًا إلى قاعدة الشيفرة في عام 2002. علاوة على ذلك، الأجهزة المعرّضة هي تلك التي تستخدم خدمات RomPager بإصدارات أقدم من 4.34 (وتحديدًا 4.07).

في هذا الدرس سأستخدم جهاز 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

الناتج :

speed 115200 baud; line = 0;
-brkint -imaxbel

device

أنا أستخدم minicom، ويمكنك استخدام أي شيء بدءًا من screen إلى HyperTerminal، لكنني أفضّل هذه الأداة لاستقرارها ;)

يجب أولًا تعطيل Hardware Flow Control

$ 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

أول ما يتبادر إلى الذهن هو البدء بالبحث عن جدول توزيع (dispatch table). لماذا؟ مجرد حدس، البديل الوحيد هو 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 (word) هي 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

تنزيل الأداة