d-link路由器設置-我是如何反編譯D-Link路由器固件程序并發現其后門

  • A+
所屬分類:路由器限速

D-Link路由器怎么設置

一共需要三個步驟:1、設備連接。2、ip地址設置。3、上網帳號及其它參數設置。設備連接:D-Link路由上一共有5個網線接口,4個是LAN接口,還有一個WAN/Internet接口。另外還要注意路由器怎么設置密碼的問題。

第一步:設備連接

D-Link路由上一共有5個網線接口,4個是LAN接口,用來連接電腦的,4個LAN接口的任意一個都可以。還有一個WAN/Internet接口,用來連接modem或者小區寬帶的接口。

PS:注意一定要把連接電腦的那根網線插在LAN接口上面,否則無法打開192.168.0.1登陸頁面,很多用戶在這一步出錯。

第二步:IP地址設置

必須要把電腦的ip地址配置在192.168.0.2-192.168.0.254這個范圍內的一個地址,否則無法正常配置192.168.0.1路由器。不同的電腦系統在操作上略有不同,下面將分別介紹XP、Win 7和Win 8系統下ip地址的設置方法。

第三步:Windows XP電腦ip地址設置

步驟1、鼠標右擊“網上鄰居”–>選擇“屬性”打開“本地連接”。

步驟2、鼠標右擊“本地連接”–>選擇“屬性”。

步驟3、點擊“Internet協議(TCP/IP)”–>點擊“屬性”。

步驟4、選擇“自動獲得ip地址”和“自動獲得DNS服務器地址”–>點擊“確定”。

第三步:Windows 7電腦ip地址設置

步驟1、右擊桌面或者開始程序中的“網絡”–>選擇“屬性”–>點擊“更改適配器設置”打開“本地連接”。

步驟2、點擊“更改適配器設置”。

步驟3、鼠標右擊“本地連接”–>選擇“屬性”。

步驟4、選擇“Internet協議版本4(TCP/IPv4)”–>點擊“屬性”。

步驟5、選擇“自動獲得ip地址”和“自動獲得DNS服務器地址”–>點擊“確定”。

第三步:Windows 8電腦ip地址設置

步驟1、同時安裝鍵盤上面的Windows(鍵盤左下角ctrl和alt中間那個鍵)+R兩個按鍵,打開運行程序界面,–>輸入“ncpa.cpl”–>點擊“確定”,打開“以太網”配置界面。

步驟2、鼠標右擊“以太網”–>選擇“屬性”—>選擇“Internet協議版本4(TCP/IPv4)”–>點擊“屬性”(或者雙擊“Internet協議版本4(TCP/IPv4)”)。

步驟3、勾選”自動獲得ip地址”和“自動獲得DNS服務器地址”選項–>點擊”確定”。

第四步:上網帳號及其它參數設置

步驟1、在瀏覽器里棉輸入192.168.0.1,然后按下回車鍵,打開192.168.0.1的登陸頁面。

步驟2、輸入默認的管理帳號:admin,密碼:admin(或者是空密碼)。

步驟3、點擊左側的“設置向導”。

步驟4、點擊“下一步”進行步驟1的設置 。

步驟5、先輸入一次“舊密碼”—>“新密碼”—>“確認新密碼”—>“下一步”。

步驟6、“選擇時區”,一般選擇北京時間—>“下一步”。

步驟7、選擇“pppoe”—>“下一步”。

步驟8、輸入寬帶運營商提供給你的上網帳號和密碼,然后點擊“下一步”。

步驟9、設置無線Wi-Fi:填寫“無線網絡ID”(也就是wi-fi的名稱)—>“WEP安全方式”建議選擇WPA或者WPA2—>填寫“密碼”(wi-fi連接的驗證密碼)—>點擊“下一步”。

步驟10、點擊“重新激活”是剛才的設置生效。

通過以上詳細步驟,就可以解決192.168.0.1路由器怎么設置這個問題,關于設置中的各種問題,文中已經詳細給出,請網友仔細閱讀進行設置。另外還要注意密碼的設置。關于路由器的設置其他相關問題,小編在相關閱讀中推薦閱讀,希望給大家提供幫助。


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

來自:外刊IT評論

鏈接:http://www.aqee.net/reverse-engineering-a-d-link-backdoor/

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

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

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

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

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

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

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

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

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

struct http_request_t

{

char unknown[0xB8];

char *url; // At offset 0xB8 into the data structure

};

int alpha_auth_check(struct http_request_t *request);

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

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

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

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

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

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

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

這代碼實際上就是:

if(strstr(header, "User-Agent:") != NULL)

{

http_request_t->0xD0 = header + strlen("User-Agent:") + strspn(header, " \t");

}

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

#define AUTH_OK 1

#define AUTH_FAIL -1

int alpha_auth_check(struct http_request_t *request)

{

if(strstr(request->url, "graphic/") ||

strstr(request->url, "public/") ||

strcmp(request->user_agent, "xmlset_roodkcableoj28840ybtide") == 0)

{

return AUTH_OK;

}

else

{

// These arguments are probably user/pass or session info

if(check_login(request->0xC, request->0xE0) != 0)

{

return AUTH_OK;

}

}

return AUTH_FAIL;

}

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

基于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,這個后門的作者真是位天才!

題圖來自 Caleb Garling

●本文編號35,以后想閱讀這篇文章直接輸入35即可。

●輸入m可以獲取到全部文章目錄


D-Link路由器被曝重大漏洞:小心網銀密碼

D-Link路由器被曝重大漏洞:小心網銀密碼

近日,國內安全專家發現友訊集團(D-Link)新產品“云路由”使用的固件系統中存在漏洞,黑客可輕易攻破路由器后臺,獲取用戶網銀密碼等隱私。漏洞涉及17個型號,預計全球受影響用戶高達300萬。

目前,友訊集團已在其英文官網上公布存在漏洞的路由器型號,并發布了四個版本路由器的補丁,但該公告尚無中文版本。

最快1分鐘攻破路由器后臺

2月中旬,國內網絡安全專家發現多款D-Link路由器存在漏洞,并第一時間提交給廠商。目前,廠家確認該漏洞確實存在。

前日,安全專家劉健皓現場向記者展示了對存在漏洞的D-Link路由器的攻防試驗。

劉健皓隨機選擇一臺打開了路由器web遠程管理功能的路由器,隨后開始編輯指令對該路由器實行定向攻擊,通過不斷修改指令,他很快進入了這臺路由器的后臺。記者計時發現,用時不到5分鐘。此后,經過對路由器后臺文件的不斷搜索,不到30分鐘,劉健皓成功破解了該路由器的密碼。

登錄路由器,在控制面板上,記者很清楚地看到連接到該路由器的包括APPALETV、IPHONE以及XBOX等設備在內的12臺電器。

“如果在后臺安裝了針對性的黑客軟件,我們可以輕易地劫持這些連接到路由器的電器的流量,從而分析出銀行賬號密碼等隱私。”劉健皓同時稱,黑客在攻破一臺路由器后,再攻擊有同類漏洞的路由器將變得更為簡單。

隨后,劉健皓再次演試。這一次,他現場修改了三個指令,在Enter鍵入的同時,便成功攻入了身旁的一臺DIR-817LW,修改另一條指令后,他又成功拿到了這臺路由器的密碼,從攻入后臺到拿到密碼整個耗時不足一分鐘。

可獲取用戶網銀賬號密碼

劉健皓介紹,此次受影響的路由器系列為D-Link新推出的產品云路由,與傳統路由器相比,云路由相當于一個小型的家庭控制中心。此次漏洞,黑客只需要向路由器提交幾個“指令”便可以拿到路由器權限,獲取權限后,除了可以借此推送廣告、獲取推廣傭金、劫持正常網站到釣魚掛馬網站外,還可以通過獲取用戶的上網流量,解析出用戶的所有上網信息,獲取用戶的寬帶賬號密碼,網銀、支付寶等賬號密碼。

4月10日,友訊集團曾在其英文官網發布了英文版本安全公告,詳細公布了存在漏洞的17款路由器型號及固件版本,目前,官方已經發布了DIR-890L、DIR-880L、DIR-868L、DIR-860L四個型號路由器的補丁。

專家建議 及時升級路由器固件

針對路由器安全漏洞,網絡安全專家劉健皓建議:

1、安裝時應修改路由器初始化(出廠)默認口令。

2、設置一定強度的無線密碼,守好黑客攻擊的第一道門。

3、在路由器的使用過程中,注意觀察網速是否經常無故變慢、留意是否有廣告彈窗頁面,若出現異常,可初始化路由器(恢復出廠設置)。

4、使用第三方安全測評軟件,定期對路由器的安全狀況進行掃描,發現異常則初始化路由器,重新設置。

5、對于云路由設備,在打漏洞補丁之前,最好關閉路由器遠程IP訪問,減少后臺被攻擊的風險。

6、多查看路由器版本是否出現更新,關注廠家關于路由器補丁的更新及漏洞修復。

17個存漏洞“云路由”型號

●DAP-1522(B1)

●DIR-629(A1)

●DIR-300(B1)

●DIR-600(B1)

●DIR-815(B1)

●DIR-816L(A1)

●DIR-817LW(B1)

●DIR-818LW(A1)

●DIR-820LW(B1)

●DIR-850L(A1)

●DIR-850L(B1)

●DIR-860L(A1)

●DIR-860L(B1)

●DIR-865L(A1)

●DIR-868L(A1)

●DIR-880L(A1)

●DIR-890L(A1)

再也不怕設置D-LINK路由器了

第一步:設備連接

D-Link路由上一共有5個網線接口,4個是LAN接口,用來連接電腦的,4個LAN接口的任意一個都可以。還有一個WAN/Internet接口,用來連接modem或者小區寬帶的接口。

PS:注意一定要把連接電腦的那根網線插在LAN接口上面,否則無法打開192.168.0.1登陸頁面,很多用戶在這一步出錯。

第二步:IP地址設置

必須要把電腦的ip地址配置在192.168.0.2-192.168.0.254這個范圍內的一個地址,否則無法正常配置192.168.0.1路由器。不同的電腦系統在操作上略有不同,下面將分別介紹XP、Win 7和Win 8系統下ip地址的設置方法。

第三步:Windows XP電腦ip地址設置

步驟1、鼠標右擊“網上鄰居”–>選擇“屬性”打開“本地連接”。

步驟2、鼠標右擊“本地連接”–>選擇“屬性”。

步驟3、點擊“Internet協議(TCP/IP)”–>點擊“屬性”。

步驟4、選擇“自動獲得ip地址”和“自動獲得DNS服務器地址”–>點擊“確定”。

第三步:Windows 7電腦ip地址設置

步驟1、右擊桌面或者開始程序中的“網絡”–>選擇“屬性”–>點擊“更改適配器設置”打開“本地連接”。

步驟2、點擊“更改適配器設置”。

步驟3、鼠標右擊“本地連接”–>選擇“屬性”。

步驟4、選擇“Internet協議版本4(TCP/IPv4)”–>點擊“屬性”。

步驟5、選擇“自動獲得ip地址”和“自動獲得DNS服務器地址”–>點擊“確定”。

第三步:Windows 8電腦ip地址設置

步驟1、同時安裝鍵盤上面的Windows(鍵盤左下角ctrl和alt中間那個鍵)+R兩個按鍵,打開運行程序界面,–>輸入“ncpa.cpl”–>點擊“確定”,打開“以太網”配置界面。

步驟2、鼠標右擊“以太網”–>選擇“屬性”—>選擇“Internet協議版本4(TCP/IPv4)”–>點擊“屬性”(或者雙擊“Internet協議版本4(TCP/IPv4)”)。

步驟3、勾選”自動獲得ip地址”和“自動獲得DNS服務器地址”選項–>點擊”確定”。

第四步:上網帳號及其它參數設置

步驟1、在瀏覽器里棉輸入192.168.0.1,然后按下回車鍵,打開192.168.0.1的登陸頁面。

步驟2、輸入默認的管理帳號:admin,密碼:admin(或者是空密碼)。

步驟3、點擊左側的“設置向導”。

步驟4、點擊“下一步”進行步驟1的設置 。

步驟5、先輸入一次“舊密碼”—>“新密碼”—>“確認新密碼”—>“下一步”。

步驟6、“選擇時區”,一般選擇北京時間—>“下一步”。

步驟7、選擇“pppoe”—>“下一步”。

步驟8、輸入寬帶運營商提供給你的上網帳號和密碼,然后點擊“下一步”。

步驟9、設置無線Wi-Fi:填寫“無線網絡ID”(也就是wi-fi的名稱)—>“WEP安全方式”建議選擇WPA或者WPA2—>填寫“密碼”(wi-fi連接的驗證密碼)—>點擊“下一步”。

步驟10、點擊“重新激活”是剛才的設置生效。


D-LINK路由器僅需88.88

活動價格:88.88元

活動地址:頤高電子城3102 金磐石網絡

搶購電話:13831166061


D-link路由器設置

登錄到路由器的管理界面。

打開瀏覽器,在此以IE為例,在地址欄中輸入:http://192.168.0.1,即可登錄到路由器的管理界面,對路由器進行各項配置,如下圖所示:

再次,設置WAN口,即Internet口的設置。

此步驟主要是設置用戶當前的上網類型,一般分為PPPoE、動態IP、靜態IP、PPTP、L2TP等。家庭用戶大多數使用的是ADSL或者是小區寬帶對應的是PPPoE。因為我是在公司里做的實驗,我們公司使用的是靜態IP方式上網。用戶在此不用過多擔心自己使用的到底是哪種上網方式,因為智能的路由器會自動偵測用戶的上網類型,如下圖所示:

稍等片刻之后,就可以看到如下所示:

在這個圖中,可以看到路由器已經成功偵測出我當前的上網類型是靜態IP,已經成功連接到internet。

如果是家庭ADSL或小區寬帶用戶,這里會彈出PPPoE的設置界面,如下圖所示:

注意:如果用戶不慎丟失了用戶名和密碼,則可以咨詢寬帶接入商。

如果用戶不希望路由器自動偵測上網類型,也可以進行手動設置,如下圖所示:

點擊“手動設置”后,會出現下面的界面,用戶也可以根據實現上網類型進行設置。

不要忘了“保存設置”。

點擊“立即重新啟動”,使用設置生效。


D-Link路由器現DNS劫持漏洞其他設備或受影響

D-Link一款DSL路由器日前發現DNS劫持漏洞,此漏洞可使黑客遠程修改DNS設置并劫持用戶通信數據。安全研究員表示,因為多家生產商都使用有此漏洞的固件,其影響可能波及其他網絡設備。

一份針對D-Link DSL-2740R型雙功能ADSL無線路由器的概念驗證性漏洞利用報告在周二被公開,D-Link和其他生產商的更多設備都有可能受影響。

這一漏洞實際上位于ZyXEL(合勤)通信公司研發的路由器固件ZynOS中,包括D-Link、普聯技術和中興在內的多家網絡設備生產商都將ZynOS應用在了旗下的各種產品中。

攻擊者不需要訪問憑證即可在受影響的設備上利用此漏洞,不過,設備的網頁管理接口倒是確實需要能訪問到。

若是管理接口暴露在互聯網上——路由器有時為了能夠遠程管理會配置成這樣——漏洞被利用的風險也就更高。但是即使只能從本地局域網進行管理,黑客仍舊可以使用跨站請求偽造(CSRF)技術來訪問路由器的管理接口。

CSRF是通過劫持用戶的瀏覽器,當用戶訪問被黑站點或點擊惡意鏈接時,進行非授權操作。從網站下載的惡意代碼可以操縱瀏覽器向路由器常用的局域網IP發送特意構造的HTTP請求。

互聯網上就曾經發現過針對路由器擁有者的大規模CSRF攻擊,攻擊者意圖用自己的服務器頂替路由器上配置的DNS服務器。

DNS服務器在網絡中是不可或缺的角色,他們將人類容易理解的網站名稱翻譯成計算機間相互交流的數字IP地址。如果路由器使用了惡意DNS服務器,由這臺路由器伺服的計算機想訪問合法網站的時候,攻擊者就能將其引導到惡意服務器上。

2014年3月,互聯網安全研究組織Team Cymru曝光了一起全球性攻擊事件,多達30萬臺家用路由器受害,DNS設置被篡改。那次攻擊事件中,攻擊者就是利用了ZynOS的另一個漏洞,所用技術之一也很可能是CSRF。

Donev并沒有向D-Link報告漏洞的存在,而據他所知,此漏洞目前還是一個零日漏洞(已公開但未打補丁的漏洞)。

截止發稿,D-Link官方尚未對漏洞信息做出回應。

---

要聞、干貨、原創、專業

關注“信息安全知識”

我們是安全牛!


D-Link路由器后門被發現!

原文出處:devttys0

譯文出處:外刊IT評論

譯文鏈接:http://www.vaikan.com/reverse-engineering-a-d-link-backdoor/

轉自:Linux愛好者(ID:LinuxHub)

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

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

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

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

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

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

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

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

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

struct http_request_t

{

char unknown[0xB8];

char *url; // At offset 0xB8 into the data structure

};

int alpha_auth_check(struct http_request_t *request);

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

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

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

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

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

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

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

這代碼實際上就是:

if(strstr(header, "User-Agent:") != NULL)

{

http_request_t->0xD0 = header + strlen("User-Agent:") + strspn(header, " \t");

}

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

#define AUTH_OK 1

#define AUTH_FAIL -1

int alpha_auth_check(struct http_request_t *request)

{

if(strstr(request->url, "graphic/") ||

strstr(request->url, "public/") ||

strcmp(request->user_agent, "xmlset_roodkcableoj28840ybtide") == 0)

{

return AUTH_OK;

}

else

{

// These arguments are probably user/pass or session info

if(check_login(request->0xC, request->0xE0) != 0)

{

return AUTH_OK;

}

}

return AUTH_FAIL;

}

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

基于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!

擴展閱讀:

1、D-LINK路由器后門漏洞測試方法

http://blog.csdn.net/myths_0/article/details/20207991

2、說說無線路由器后門的那些事兒(1)-D-Link篇

http://www.2cto.com/Article/201311/260640.html

3、D-Link路由器被曝留后門

http://news.mydrivers.com/1/278/278706.htm

4、磁鐵真會使手機或硬盤掛掉嗎

http://mp.weixin.qq.com/s?__biz=MzA4OTM1MzkwNg==&mid=206584027&idx=1&sn=756624daf9653c4e1c6e78fd27ec1aa1#rd

免責聲明:

1、凡注明來源的作品,均轉載自其它媒體,目的在于公益性分享。若作者或版權人不愿被分享或侵權,請及時指出,經核實后刪除。

2、部分圖片來源于互聯網,版權歸屬原作者。

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

(點擊上方藍字,可快速關注我們)

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

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

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

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

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

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

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

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

struct http_request_t

{

char unknown[0xB8];

char *url; // At offset 0xB8 into the data structure

};

int alpha_auth_check(struct http_request_t *request);

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

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

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

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

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

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

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

這代碼實際上就是:

if(strstr(header, "User-Agent:") != NULL)

{

http_request_t->0xD0 = header + strlen("User-Agent:") + strspn(header, " \t");

}

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

#define AUTH_OK 1

#define AUTH_FAIL -1

int alpha_auth_check(struct http_request_t *request)

{

if(strstr(request->url, "graphic/") ||

strstr(request->url, "public/") ||

strcmp(request->user_agent, "xmlset_roodkcableoj28840ybtide") == 0)

{

return AUTH_OK;

}

else

{

// These arguments are probably user/pass or session info

if(check_login(request->0xC, request->0xE0) != 0)

{

return AUTH_OK;

}

}

return AUTH_FAIL;

}

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

基于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路由器曝遠程DNS劫持漏洞

安全研究人員發現D-Link路由器上存在高危DNS劫持漏洞。不僅如此,該漏洞還影響所有使用ZynOS固件的路由器,品牌包括D-Link(友訊)、TP-Link(深圳普聯)、ZTE(中興通訊)。

遠程更改DNS

D-Link(友訊路由器)上的漏洞可以允許攻擊者遠程更改設備的DNS設置并劫持用戶流量。安全專家Todor Donev指出該漏洞主要是存在ZynOS固件上,而該固件目前正被數家路由器生產廠商使用,包括D-Link(友訊)、TP-Link(深圳普聯)、ZTE(中興通訊)。

研究者目前無法確定是不是所有的D-Link路由器都存在漏洞,但至少可以確定的是D-Link的DSL-2740R ADSL調制解調器/無線路由器上存在該漏洞。另外,所有使用ZynOS固件的路由器都是不安全的。

漏洞利用

利用該漏洞,攻擊者無需身份驗證就可訪問D-Link設備的web管理者界面,然后更改DNS設置,重定向用戶到一個釣魚網站,或者更改域名為提供惡意程序的地址。即使web管理者為暴露在網上,攻擊者也可以通過使用跨站請求偽造(CSRF)技術從本地網絡訪問路由器界面。

發表評論

您必須才能發表評論!