# AIS3 Project : YOUR NETIS MINE 這是 2025 AIS3 的專題,首先要感謝我的隊友們([dkri3c1](https://dkri3c1.github.io/)、[CX330](https://blog.cx330.tw/)、[Jackoha](https://jackoha.github.io/)),他們猶如神隊友一般的存在。 一開始我們每個人都一起做同樣的事情,但到後面就各自負責自己擅長的領域,而我這次負責模擬設備(最後一天才成功,中間被 dk 的 FirmAE 十分鐘搞定),現在就來說說這整個的心路歷程吧! ## Device [netis 的 WF2409E Router](https://www.netis-systems.com/support/downinfo.html?id=62),版本為 V4.0.1.4296,最新一次更新為 2025/06/11  ## Environment - VMWARE Workstation pro 17 - Ubuntu 22.04 LTS ## Steps 1. 拆韌體 ``` binwalk -e <firmwamre_name> ```  會發現很多 Warning,總共有 75 個 Symbolic Link Problem 2. 解決 Symbolic Link Problem ``` # 建立軟連結檔,目標檔案指向原始檔案 ln -sf <原始檔案> <目標檔案> # 查看每個檔案的連結 ls -l ```   3. 使用 QEMU 模擬 (1) 硬體架構設置 ``` # 查看該韌體的硬體架構 file busybox ```  得知是 MIPS32 Little-Endian Architecture,所以我下載對應的 [Kernel 和 Images](https://people.debian.org/~aurel32/qemu/mipsel/)  (2) 網路設置 建立網橋(br0)和虛擬網卡(tap0),使得虛擬機的網路能夠與 QEMU 模擬出的硬體網路相通 ``` sudo brctl addbr br0 sudo ifconfig br0 192.168.153.1/24 up sudo tunctl -t tap0 sudo ifconfig tap0 192.168.153.11/24 up sudo brctl addif br0 tap0 ```  (3) 模擬起來 把剛剛的硬體架構與網路設置寫成一個 script,並且跑起來 ``` sudo qemu-system-mipsel \ -M malta \ -kernel vmlinux-2.6.32-5-4kc-malta \ -hda debian_squeeze_mipsel_standard.qcow2 \ -append "root=/dev/sda1 console=tty0" \ -netdev tap,id=net0,ifname=tap0,script=no \ -device e1000,netdev=net0 \ -nographic ``` 就可以看到成功把 QEMU 跑起來  (4) 確定網路相連 ``` # 在 QEMU 中設置 IP address ifconfig eth0 192.168.153.13 up ``` 可以在虛擬機和 QEMU 裡面,互相 ping 彼此來測驗是否成功使網路相通  (5) 韌體掛載 ``` # 將虛擬機上的韌體檔案掛載至 QEMU 裡面 ssh-keygen -f "/home/dd/ .ssh/known_hosts" -R "192.168.153.13" scp -oHostKeyAlgorithms=+ssh-rsa -r squashfs-root/ root@192.168.153.13:/root/ ``` 可以在 QEMU 看到成功把韌體檔案包掛載進來了!  ``` # 把虛擬機的 /dev 和 /proc 掛載進子系統 mount -o bind /dev ./squashfs-root/dev/ mount -t proc /proc ./squashfs-root/proc/ # 切換根目錄到 squashfs-root chroot ./squashfs-root sh ``` (6) 跑 Web Server 在這之前要先逆向,找出該韌體 web server 的 binary,並在 QEMU 裡面將他跑起來(感謝 CX330 逆向電神用 Binja 打遍天下) ``` ./boa -f /etc/boa/boa.conf ``` 4. 瘋狂 patch 照理來說到第三步後,應該會成功跑起來,但過程就是沒有這麼順利 QAQ,~~所以開始玩踩地雷大賽~~  (1) 當前的 user 和 group 不存在系統內   解法:把 root 加進 passwd 和 group 裡面 ``` echo 'root:x:0:0:root:/root:/bin/sh' > ./squashfs-root/etc/passwd echo 'root:x:0:' > ./squashfs-root/etc/group ``` (2) bind failed 因為已經執行過該 binary,所以他的 port 被 boa process(前一次執行的)佔用,所以現在無法 bind port 80  解法:直接 kill 掉所有 boa process ``` killall boa ``` (3) /etc/boa/boa.conf 文件中有錯誤 仔細讀一下的程式碼,會發現他的系統檔案跟他的配置檔有路徑問題,看要直接 patch 該配置檔,還是改他的檔案路徑 解法:更改配置檔   (4) web.tar.gz 沒有接壓縮  解法:解壓縮 ``` tar zxvf web.tar.gz ``` (5) Web Server 成功跑起來了,但是是壞的…  5. 過了三天後  * dkri3c1 花 10 分鐘用 FirmAE 模擬成功! * Jackoha 攻擊漏洞成功! * CX330 寫 CVE 報告書回報漏洞! * 而我呢? 仍然執著於 QEMU 模擬失敗上… 6. 繼續嘗試! 不放棄的精神意味著~~踩地雷大賽繼續開賽~~,後續再去將有關 Web Server 的一些 binary 逆向一下,也去看 /web 資料夾底下的東西,中途也有再 patch 一下,但仍是一張跑不出來的 img 和 Loading… 的文字  簡直絕望中的絕望 倒數第二天,轉機出現了! 我按 F12 可以在 Console tab 看到錯誤相關資訊,追進 error 可以看到有一行的 func 沒有成功去 parse data,仔細去看後,會發現這個 func 只是顯示 device 的版本號,所以其實可有可無,那就嘗試直接把它註解掉再試試看!  7. 終於成功了!!! 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up