One Million ASUS Routers Under Control: Exploiting ASUS DDNS to MITM Admin Credentials

ASUS Router APP 如何在外網連回家

若有開啟DDNS設定,路由器的domain是a+md5(MAC Address).asuscomm.com,手機透過DDNS查詢IP後,再從8443 port連回去。

漏洞

domain name 由MAC Address產生

Domain name = a + md5(MAC Address) + .asuscomm.com
因此,只要知道 router 的 MAC Address,變可以透過網址存取路由器後台。

更新DDNS時未驗證PIN碼

ASUS在update IP address的時候並沒有驗證router的PIN碼是否正確,所以任何人都可以隨意更改domain指向的ip

帳密裸奔,僅使用base64編碼變傳送

ASUS Router 手機 APP 在驗證後台帳號密碼時,直接將帳號密碼 Base64 encode 過後,以 GET 的方式傳給 Router 。

組合計

攻擊者可透過上面三個漏洞達到完美的中間人攻擊,首先,攻擊者可透過網路上洩漏的 MAC Address 取得Domain Name,並且將該Domain指向自己的攻擊機,接著坐等使用者在外網用手機 APP 打開管理介面便可以得到使用者的帳號與密碼,再將帳號密碼傳回真正的IP達成中間人攻擊。

造成危害

攻擊者可透過後台帳號密碼開啟 ssh vpn等服務,摸進內網,或者是更改預設DNS Server,進行網路釣魚。

影響

研究發現全球有多超過100萬台路由器遭受影響,比較明顯的攻擊痕跡可由ddns解析的ip變動看出,或是多個路由器皆將Domain指向同一個ip。

後續研究

我後來針對ASUS Router的MAC Address、DDNS和BSSID研究了一下之後,發現了一些有趣的事情

MAC Address 和 BSSID 相同

因為手邊沒有太多華碩的路由器,觀察了大概三台路由器,發現MAC Address和BSSID不是完全相同就是差一碼

可由 DDNS 回推 MAC Address

前面研究有提到,預設 DDNS 是 A+md5(MAC Address),雖然窮舉 MAC Address 是不可能的,但是 MAC Address 前三個 bytes 是廠商識別碼,剩下要解決的就只有後三 bytes 了。

因此我寫了一個 script 可以在一分半之內由 hashcat 將DDNS的MAC Address還原(都4220年了竟然還有人在用md5)

1
2
3
4
5
6
7
8
import os
import sys
lst = ['00:1B:FC', '00:1E:8C', '00:1F:C6', '00:22:15', '00:24:8C', '00:26:18', '04:D9:F5', '08:60:6E', '08:62:66', '08:BF:B8', '0C:9D:92', '10:7B:44', '10:7C:61', '10:BF:48', '10:C3:7B', '14:DA:E9', '14:DD:A9', '24:4B:FE', '2C:4D:54', '2C:56:DC', '2C:FD:A1', '30:5A:3A', '30:85:A9', '34:97:F6', '38:2C:4A', '3C:7C:3F', '40:16:7E', '40:B0:76', '48:5B:39', '4C:ED:FB', '50:46:5D', '50:EB:F6', '60:45:CB', '70:4D:7B', '70:8B:CD', 'E8:9C:25', '74:D0:2B', '78:24:AF', '7C:10:C9', '88:D7:F6', '90:E6:BA', '9C:5C:8E', 'A0:36:BC', 'A8:5E:45', 'B0:6E:BF', 'BC:AE:C5', 'BC:EE:7B', 'D0:17:C2', 'D4:5D:64', 'E0:3F:49', 'E0:CB:4E', 'CC:28:AA', '60:CF:84', 'F0:79:59', 'F4:6D:04', 'FC:C2:33', '00:0C:6E', '00:0E:A6', '00:11:2F', '00:11:D8', '00:13:D4', '00:15:F2', '00:17:31', '00:18:F3', '00:1A:92', '00:1D:60', '00:23:54', '00:E0:18', '04:42:1A', '04:92:26', '04:D4:C4', '18:31:BF', '1C:87:2C', '1C:B7:2C', '20:CF:30', '38:D5:47', '54:04:A6', '54:A0:50', '58:11:22', '60:A4:4C', 'AC:22:0B', 'AC:9E:17', 'C8:60:00', 'C8:7F:54', 'D8:50:E6', 'F0:2F:74', 'F8:32:E4', 'FC:34:97']
target = sys.argv[1]
for i in lst:
if os.system(f"hashcat -m 0 -a 3 {target} {i.replace(":","")}\?H\?H\?H\?H\?H\?H")==0:
os.system(f"hashcat -m 0 {target} --show")
break

BSSID可以用來定位Router的真實位置

當 iPhone 把 Wi-Fi 關閉時,會提示定位精度會下降,因為蘋果會記錄附近router的位置,然後再用來幫手機做更精確的定位,因此,我們有機會使用工具將 BSSID 轉換成實體的經緯度,甚至比GPS更準確。

組合技

當我們得知了一組ip,如果他使用了 ASUS 的 Router ,並且開啟了外網存取時,我們就可以透過這組 ip 取得 DDNS

然後再透過 DDNS 回推 BSSID

最後反查出座標


One Million ASUS Routers Under Control: Exploiting ASUS DDNS to MITM Admin Credentials

https://blog.trianglesnake.com/2024/10/31/One-Million-ASUS-Routers-Under-Control-Exploiting-ASUS-DDNS-to-MITM-Admin-Credentials/

作者

TriangleSnake

發表於

2024-10-31

更新於

2024-11-17

許可協議

評論