攻擊者失手,自己殺死了僵尸網(wǎng)絡 KmsdBot
此前,Akamai 的安全研究員披露了 KmsdBot 僵尸網(wǎng)絡,該僵尸網(wǎng)絡主要通過 SSH 爆破與弱口令進行傳播。在對該僵尸網(wǎng)絡的持續(xù)跟蹤中,研究人員發(fā)現(xiàn)了一些有趣的事情。
對惡意活動來說,最致命的就是奪取對 C&C 服務器的控制。研究人員修改了 KmsdBot 的樣本文件,使其能夠在受控環(huán)境下進行通信。
研究人員向惡意軟件發(fā)送自己的命令來測試 KmsdBot 僵尸網(wǎng)絡的功能與攻擊特征。有一天,在攻擊者發(fā)送一個格式不正確的命令后,惡意軟件就徹底崩潰。這種自殺式的行為在網(wǎng)絡安全界可不多見,研究人員進行了一番調(diào)查。
按圖索驥
研究人員通過檢查 sys.main.connect() 函數(shù)并輸出反匯編代碼,來確定存儲 C&C 服務器的 IP 地址與端口的代碼。
sys.main.connect() 函數(shù)的反匯編
C&C 服務器的字符串存儲在內(nèi)存地址 0x00632f19,將其修改為受控環(huán)境的 IP 地址。就能夠像 C&C 服務器一樣發(fā)送攻擊指令。
改寫 C&C 服務器地址
改寫后的 C&C 服務器是開放端口 57388 的 192.168.0.31。在這臺主機上使用 Netcat 來模擬 C&C 服務器。
期間,發(fā)現(xiàn)僵尸網(wǎng)絡在收到攻擊者下發(fā)的格式錯誤的指令后就停止運行了。命令為:
可以看到域名與端口之間直接連接,且惡意軟件的代碼中也沒有內(nèi)置校驗命令格式是否正確的功能。
格式錯誤的命令將會導致 Go 語言開發(fā)的二進制文件直接由于“索引越界”而崩潰,錯誤的格式產(chǎn)生參數(shù)數(shù)量的錯誤。使用受控環(huán)境也能夠復現(xiàn)這一問題:
復現(xiàn)重新發(fā)送格式錯誤的指令
惡意軟件崩潰
格式錯誤的命令會導致與 C&C 服務器通信的所有惡意軟件都崩潰,導致整個僵尸網(wǎng)絡終止運行。由于該僵尸網(wǎng)絡并沒有任何持久化功能,唯一的方法就是重新構建,無法直接恢復。
結論
在網(wǎng)絡安全領域很少聽到此類情況,在這個被 0day 漏洞和各種告警折磨的精疲力竭的世界,如果由于攻擊者的失誤就能清除威脅也不失為一件好事。KmsdBot 僵尸網(wǎng)絡一直在攻擊大型的奢侈品公司與游戲公司,攻擊者以后可能會更加小心和注意。