成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

看我如何反編譯D-Link路由器固件程序并發現其后門

開發 前端
OK,又是周末晚上,沒有約會,只有一大瓶Shasta汽水和全是快節奏的音樂…那就研究一下程序吧。

OK,又是周末晚上,沒有約會,只有一大瓶Shasta汽水和全是快節奏的音樂…那就研究一下程序吧。

一時興起,我下載了D-link無線路由器(型號:DIR-100 revA)的固件程序 v1.13。使用工具Binwalk,很快的就從中發現并提取出一個只讀SquashFS文件系統,沒用多大功夫我就將這個固件程序的web server(/bin/webs)加載到了IDA中:

120131022091627

基于上面的字符信息可以看出,這個/bin/webs二進制程序是一個修改版的thttpd,提供路由器管理員界面操作功能。看起來是經過了臺灣明泰科技(D-Link的一個子公司)的修改。他們甚至很有心計的將他們很多自定義的函數名都輔以“alpha”前綴:

220131022091642

這個alpha_auth_check函數看起來很有意思!

這個函數被很多地方調用,最明顯的一個是來自alpha_httpd_parse_request函數:

320131022091701

我們可以看到alpha_auth_check函數接收一個參數(是存放在寄存器$s2里);如果alpha_auth_check返回-1(0xFFFFFFFF),程序將會跳到alpha_httpd_parse_request的結尾處,否則,它將繼續處理請求。

寄存器$s2在被alpha_auth_check函數使用前的一些操作代碼顯示,它是一個指向一個數據結構體的指針,里面有一個char*指針,會指向從HTTP請求里接收到的各種數據;比如HTTP頭信息和請求地址URL:

420131022091716

我們現在可以模擬出alpha_auth_check函數和數據結構體的大概樣子:

  1. struct http_request_t 
  2.     char unknown[0xB8]; 
  3.     char *url; // At offset 0xB8 into the data structure 
  4. }; 
  5.   
  6. int alpha_auth_check(struct http_request_t *request); 

alpha_auth_check本身是一個非常簡單的函數。它會針對http_request_t結構體里的一些指針進行字符串strcmp比較操作,然后調用check_login函數,實際上就是身份驗證檢查。如果一旦有字符串比較成功或check_login成功,它會返回1;否者,它會重定向瀏覽器到登錄頁,返回-1;

520131022091922

這些字符串比較過程看起來非常有趣。它們提取請求的URL地址(在http_request_t數據結構體的偏移量0xB8處),檢查它們是否含有字符串“graphic/” 或 “public/”。這些都是位于路由器的Web目錄下的公開子目錄,如果請求地址包含這樣的字符串,這些請求就可以不經身份認證就能執行。

然而,這***一個strcmp卻是相當的吸引眼球:

620131022091938

這個操作是將http_request_t結構體中偏移量0xD0的字符串指針和字符串“xmlset_roodkcableoj28840ybtide”比較,如果字符匹配,就會跳過check_login函數,alpha_auth_check操作返回1(認證通過)。

我在谷歌上搜索了一下“xmlset_roodkcableoj28840ybtide”字符串,只發現在一個俄羅斯論壇里提到過它,說這是一個在/bin/webs里一個“非常有趣”的一行。我非常同意。

那么,這個神秘的字符串究竟是和什么東西進行比較?如果回顧一下調用路徑,我們會發現http_request_t結構體被傳進了好幾個函數:

720131022091953

事實證明,http_request_t結構體中處在偏移量 0xD0處的指針是由httpd_parse_request函數賦值的:

820131022092009

920131022092023

這代碼實際上就是:

  1. if(strstr(header, "User-Agent:") != NULL) 
  2.     http_request_t->0xD0 = header + strlen("User-Agent:") + strspn(header, " \t"); 

知道了http_request_t偏移量0xD0處的指針指向User-Agent頭信息,我們可以推測出alpha_auth_check函數的結構:

  1. #define AUTH_OK 1 
  2. #define AUTH_FAIL -1 
  3.   
  4. int alpha_auth_check(struct http_request_t *request) 
  5.     if(strstr(request->url, "graphic/") || 
  6.        strstr(request->url, "public/") || 
  7.        strcmp(request->user_agent, "xmlset_roodkcableoj28840ybtide") == 0) 
  8.     { 
  9.         return AUTH_OK; 
  10.     } 
  11.     else 
  12.     { 
  13.         // These arguments are probably user/pass or session info 
  14.         if(check_login(request->0xC, request->0xE0) != 0) 
  15.         { 
  16.             return AUTH_OK; 
  17.         } 
  18.     } 
  19.   
  20.     return AUTH_FAIL; 

換句話說,如果瀏覽器的User-Agent值是“xmlset_roodkcableoj28840ybtide”(不帶引號),你就可以不經任 何認證而能訪問web控制界面,能夠查看/修改路由器的設置(下面是D-Link路由器(DI-524UP)的截圖,我沒有 DIR-100型號的,但DI-524UP型號使用的是相同的固件):

1020131022092040

基于HTML頁上的源代碼信息和Shodan搜索結果,差不多可以得出這樣的結論:下面的這些型號的D-Link路由器將會受到影響:

  • DIR-100
  • DI-524
  • DI-524UP
  • DI-604S
  • DI-604UP
  • DI-604+
  • TM-G5240

除此之外,幾款Planex路由器顯然也是用的同樣的固件程序:

  • BRL-04UR
  • BRL-04CW

你很酷呀,D-Link。

腳注:***的網友指出,字符串“xmlset_roodkcableoj28840ybtide”是一個倒序 文,反過來讀就是“editby04882joelbackdoor_teslmx”——edit by 04882joel backdoor _teslmx,這個后門的作者真是位天才!

原文鏈接:http://www.devttys0.com/2013/10/reverse-engineering-a-d-link-backdoor/

譯文鏈接:http://blog.jobbole.com/49959/

責任編輯:陳四芳 來源: 外刊IT評論
相關推薦

2013-12-04 13:51:04

D-Link路由器路由器后門

2009-11-27 15:06:15

2009-12-10 16:08:10

2009-12-10 16:37:02

D-link路由器VP

2012-11-05 14:35:03

路由器BGP網絡協議

2009-12-10 17:12:58

2009-08-18 14:16:36

2013-10-17 13:16:47

2022-09-07 11:51:04

惡意軟件漏洞網絡攻擊

2009-12-02 18:10:24

2013-10-24 09:52:06

2009-12-02 17:46:00

d-link無線路由器

2009-12-04 14:42:29

2011-05-20 07:40:08

2024-12-31 16:20:45

2009-12-08 17:49:17

2009-11-24 10:59:06

D-link路由器配置

2009-11-26 09:26:39

2009-11-30 13:27:10

2010-09-07 08:53:04

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区在线 | 天天躁日日躁狠狠的躁天龙影院 | 一区二区三区视频在线观看 | 久久鲁视频| 国产精品久久久久久久久久久久久 | 成人精品视频在线观看 | 在线国产中文字幕 | 一级做a爰片性色毛片16美国 | 中午字幕在线观看 | 亚洲一区二区三区欧美 | 亚洲一区二区三区在线免费 | 91观看| 人人干人人玩 | 久久精品免费一区二区 | 久久久蜜桃一区二区人 | 精品成人一区 | 国产三级 | 中文字幕视频在线 | 午夜精品久久久久久久久久久久久 | 国产99久久精品一区二区永久免费 | 野狼在线社区2017入口 | 国产ts人妖一区二区三区 | 久久精品色欧美aⅴ一区二区 | 狠狠干狠狠操 | 国产一区二区三区视频免费观看 | 伊人久久精品一区二区三区 | 欧美精品在线视频 | 欧美成视频在线观看 | 天天综合久久 | 亚洲综合精品 | 久在线视频播放免费视频 | www.成人久久 | 91影院| 在线国产一区 | 国产中文字幕亚洲 | 成人免费视频观看 | 日韩中文字幕av | 国产成人久久精品一区二区三区 | 欧美日韩在线一区二区 | 国产视频一区在线 | 99国内精品久久久久久久 |