攻擊者失手,自己殺死了僵尸網絡 KmsdBot
此前,Akamai 的安全研究員披露了 KmsdBot 僵尸網絡,該僵尸網絡主要通過 SSH 爆破與弱口令進行傳播。在對該僵尸網絡的持續跟蹤中,研究人員發現了一些有趣的事情。
對惡意活動來說,最致命的就是奪取對 C&C 服務器的控制。研究人員修改了 KmsdBot 的樣本文件,使其能夠在受控環境下進行通信。
研究人員向惡意軟件發送自己的命令來測試 KmsdBot 僵尸網絡的功能與攻擊特征。有一天,在攻擊者發送一個格式不正確的命令后,惡意軟件就徹底崩潰。這種自殺式的行為在網絡安全界可不多見,研究人員進行了一番調查。

按圖索驥
研究人員通過檢查 sys.main.connect() 函數并輸出反匯編代碼,來確定存儲 C&C 服務器的 IP 地址與端口的代碼。

sys.main.connect() 函數的反匯編
C&C 服務器的字符串存儲在內存地址 0x00632f19,將其修改為受控環境的 IP 地址。就能夠像 C&C 服務器一樣發送攻擊指令。

改寫 C&C 服務器地址
改寫后的 C&C 服務器是開放端口 57388 的 192.168.0.31。在這臺主機上使用 Netcat 來模擬 C&C 服務器。
期間,發現僵尸網絡在收到攻擊者下發的格式錯誤的指令后就停止運行了。命令為:
可以看到域名與端口之間直接連接,且惡意軟件的代碼中也沒有內置校驗命令格式是否正確的功能。
格式錯誤的命令將會導致 Go 語言開發的二進制文件直接由于“索引越界”而崩潰,錯誤的格式產生參數數量的錯誤。使用受控環境也能夠復現這一問題:

復現重新發送格式錯誤的指令

惡意軟件崩潰
格式錯誤的命令會導致與 C&C 服務器通信的所有惡意軟件都崩潰,導致整個僵尸網絡終止運行。由于該僵尸網絡并沒有任何持久化功能,唯一的方法就是重新構建,無法直接恢復。
結論
在網絡安全領域很少聽到此類情況,在這個被 0day 漏洞和各種告警折磨的精疲力竭的世界,如果由于攻擊者的失誤就能清除威脅也不失為一件好事。KmsdBot 僵尸網絡一直在攻擊大型的奢侈品公司與游戲公司,攻擊者以后可能會更加小心和注意。



























