歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

腳本小子的噩夢:看我如何黑掉僵尸網絡

來源:本站整理 作者:佚名 時間:2019-09-06 TAG: 我要投稿


 
0x00 前言
本文將分享如何攻破一些代碼存在漏洞的僵尸網絡,這些僵尸網絡的操作者通常為腳本小子。
此前我并未接觸過這些黑產,因此對鼎鼎大名的DoS社區(譯者注:僵尸網絡通常被用于發動大規模DoS攻擊以謀利)知之甚少。最近因為寫這篇文章而收集了一些信息。根據我的理解,主要有兩個僵尸網絡分別為:Qbot和Mirai,并且它們不斷地被改進而出現了大量變種。根據調查,我發現某些人似乎想要對僵尸網絡進行”升級“,添加更多功能例如登入失敗后重試,新型的DoS方法和暴力破解。這些將成為僵尸網絡的”賣點“(這意味著普通人只要有錢,就可以利用肉雞做某些事情),有時候黑產從業者也會直接出售這些肉雞。
 
0x01 概述

目前,大部分僵尸網絡工具都使用C語言編寫的,C語言強大而危險,如果它們是由沒有安全意識的程序員編寫,則可能會鑄成大錯 – 我們接下來將會介紹。 只要學過二進制開發的人,都知道這個語言中的一個小錯誤也可能會導致巨大的漏洞,例如不規范地調用printf()和錯誤計算緩沖區的內存分配。 在本文,我只會分享我在Qbot僵尸網絡中發現的三個漏洞中的一個,并且但這個漏洞嚴重性最高。 如果你覺得我很小氣,那你可能就屬于下圖中的人?

I’m sorry,開個玩笑。我不想跟小孩子爭吵,畢竟小孩子總是可以在海量服務器中彈出shell。
我在Miori v1.3僵尸網絡上發現了一個預認證(Pre-auth)遠程代碼執行漏洞,此漏洞正是由于不當的輸入處理和錯誤的使用system()函數而導致。 我再次重申,這是一個預認證型的遠程命令執行漏洞。 修改Qbot源碼時,某些人成功犯下大錯 – 也許下次他們應該只使用Python¯(ツ)/¯。
不管怎么說,如果我們利用此漏洞成功劫持服務器,那簡直太丟人了 :)。
 
0x02 環境搭建
攻擊者
僵尸網絡服務器
系統
Linux Mint 64 bit
CentOS 7 Minimal 64bit
IP地址
10.10.10.7
10.10.10.6
端口
X
666
應用
X
Miori v1.3
下載地址:
-> Linux Mint ISO-> CentOS 7 ISO-> Miori v1.3
Miori v1.3僵尸網絡安裝教程:
-> Switch Miori Botnet setup
注:安裝腳本要使用yum來下載,因此這個僵尸網絡服務器必須基于RedHat系統。
注:CentOS系統默認啟用了防火墻。 如果無法連接如666之類的端口,可以通過“systemctl stop firewalld”將防火墻關閉,“systemctl disable firewalld”將其完全禁用。
 
0x03 代碼
解壓.zip壓縮包:

對于我們來說有用的文件是cnc/cnc.c。 該文件中包含了僵尸網絡“操作者”所需的主要功能,有登錄,注冊以及攻擊等功能。具體參考下面這些圖片。
登入和注冊界面:

通過驗證(Post-auth)后的界面:

從整體來看,該工具的UI界面實際上相當不錯,肯定有人在上面花了很多時間。 但是他們沒有在主代碼上花費精力。 可以這樣說,這是非常殘酷的。 多個超大的char緩沖區,42個returns和3個exits…,可怕的縮進,標簽和空格混合使用,76個goto語句(已經9012年了……真有這種事?)。在將來,代碼中的漏洞也不會完全消失。 我猜測,如果開發者的主要目標制作一個看起來很酷的UI來賺錢,而不是制作代碼美觀和可靠的東西時,則會發生這種情況。 來看看代碼是什么樣的,請點擊下圖放大查看。

 
0x04 發現漏洞
其實在整個挖掘過程,我仔細查看了cnc.c中的代碼,這令我我感到非常折磨。 在793和794行中,很容易就可以看出漏洞。
792 |   char flog[1024];
793 |   sprintf(flog,"echo "nfailed login with cred --> %s:%s n[victems ip] nip --> %s n" >> failed.txt",iffailedu,iffailedp,ipl);
794 |   system(flog);

你看,這家伙使用iffailedu和iffailedp代表登入失敗的用戶名和密碼。 這表示登入失敗后仍可以不斷嘗試。 這個想法還可以,但實施起來漏洞百出。 開發者使用了system()函數代替C的文件I/O函數。 為什么?答案很簡單:
引用Subby的一句話:
其實很容易可以知道為什么會這樣?很大一部分僵尸網絡操作者都是從社區教程中學習,或者看看YouTube上的僵尸網絡視頻。
通常情況下上述中問題可能會導致緩沖區溢出,因為flog分配了1024個字節,但iffailedu和iffailedp最多可達2048個字節。 并且都是基于第637行的buf變量和下面的strcpy()方法。 然而,更有趣的漏洞在后頭。

[1] [2]  下一頁

【聲明】:黑吧安全網(http://www.fhetww.live)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        江西十一选五走势图爱彩乐