Bhunter - 駭客殭屍網路節點

病毒分析師和電腦安全研究人員正在競相收集盡可能多的新殭屍網路樣本。 他們使用蜜罐來達到自己的目的......但是如果您想在真實條件下觀察惡意軟體怎麼辦? 讓您的伺服器或路由器面臨風險? 如果沒有合適的設備怎麼辦? 正是這些問題促使我創建了 bhunter,一個用於存取殭屍網路節點的工具。

Bhunter - 駭客殭屍網路節點

大意

傳播惡意軟體以擴展殭屍網路的方法有很多種:從網路釣魚到利用 0day 漏洞。 但最常見的方法仍然是暴力破解 SSH 密碼。

這個想法很簡單。 如果某個殭屍網路節點試圖暴力破解您的伺服器的密碼,那麼該節點本身很可能是透過暴力破解簡單密碼而捕獲的。 這意味著,為了獲得它,你只需要回報。

這正是 bhunter 的工作原理。 偵聽連接埠 22(SSH 服務)並收集他們嘗試連接到該連接埠的所有登入名稱和密碼。 然後,它使用收集到的密碼嘗試連接到攻擊節點。

工作算法

該程式可以分為 2 個主要部分,它們在單獨的線程中工作。 第一個是蜜罐。 處理登入嘗試,收集唯一的登入名稱和密碼(在這種情況下,登入名稱+密碼對被視為一個整體),並將嘗試連接的 IP 位址新增至佇列以進行進一步的攻擊。

第二部分直接負責攻擊。 此外,攻擊以兩種模式進行:BurstAttack(突發攻擊) - 從通用列表中暴力破解登錄名和密碼;SingleShotAttack(單次攻擊) - 被攻擊節點使用過但尚未被破解的暴力密碼。添加到總列表中。

為了在啟動後立即至少擁有一些登入名稱和密碼資料庫,bhunter 使用檔案 /etc/bhunter/defaultLoginPairs 中的清單進行初始化。

接口

啟動 bhunter 有多種方式:

就像一個團隊一樣

sudo bhunter

透過此次發布,可透過其文字選單控制 bhunter:新增攻擊的登入名稱和密碼、匯出登入名稱和密碼的資料庫、指定攻擊目標。 所有被駭的節點都可以在檔案/var/log/bhunter/hacked.log中看到

使用tmux

sudo bhunter-ts # команда запуска bhunter через tmux  
sudo tmux attach -t bhunter # подключаемся к сессии, в которой запущен bhunter

tmux是一個終端復用器,一個非常方便的工具。 允許您在一個終端機內建立多個窗口,並將窗口拆分為面板。 使用它,您可以退出終端然後登錄,而無需中斷正在運行的進程。

bhunter-ts 腳本建立一個 tmux 會話並將視窗分成三個面板。 第一個是最大的,包含一個文字選單。 右上角包含蜜罐日誌,在這裡您可以看到嘗試登入蜜罐的訊息。 右下面板顯示有關殭屍網路節點的攻擊進度和成功駭客攻擊的資訊。

與第一種方法相比,此方法的優點是我們可以安全地關閉終端並稍後返回,而無需 bhunter 停止其工作。 對於那些不太熟悉 tmux 的人,我建議 這個備忘錄.

作為一項服務

systemctl enable bhunter
systemctl start bhunter

在這種情況下,我們在系統啟動時啟用 bhunter 自動啟動。 此方法沒有提供與bhunter的交互,可以從/var/log/bhunter/hacked.log取得被駭節點列表

效用

在bhunter 上工作時,我設法找到並訪問了完全不同的設備:樹莓派、路由器(尤其是mikrotik)、Web 伺服器,以及曾經的一個礦場(不幸的是,訪問它是在白天,所以沒有什麼有趣的事)故事 )。 這是該程式的螢幕截圖,顯示了經過幾天的工作後被駭的節點清單:

Bhunter - 駭客殭屍網路節點

不幸的是,這個工具的有效性沒有達到我的預期:bhunter 可以連續幾天嘗試節點密碼但沒有成功,並且可以在幾個小時內破解多個目標。 但這對於新殭屍網路樣本的定期湧入來說已經足夠了。

有效性受到以下參數的影響:具有 bhunter 的伺服器所在的國家、託管以及分配 IP 位址的範圍。 根據我的經驗,曾經有過這樣的情況:我從一個託管商那裡租用了兩台虛擬伺服器,其中一台受到殭屍網路攻擊的頻率是原來的兩倍。

我還沒有修復的錯誤

當攻擊受感染的主機時,在某些情況下不可能明確地確定密碼是否正確。 此類情況記錄在 /var/log/debug.log 檔案中。

用於與 SSH 配合使用的 Paramiko 模組有時會表現不正確:當嘗試連接到主機時,它會無休止地等待主機的回應。 我嘗試了定時器,但沒有得到想要的結果

還需要做哪些工作?

服務名稱

根據 RFC-4253,用戶端和伺服器在安裝之前交換實作 SSH 協定的服務名稱。 此名稱包含在「服務名稱」欄位中,既包含在客戶端的請求中,也包含在伺服器端的回應中。 該欄位是一個字串,可以使用wireshark或nmap找到它的值。 以下是 OpenSSH 的範例:

$ nmap -p 22 ***.**.***.** -sV
Starting Nmap ...
PORT   STATE SERVICE VERSION
22/tcp open  ssh     <b>OpenSSH 7.9p1 Debian 10+deb10u2</b> (protocol 2.0)
Nmap done: 1 IP address (1 host up) scanned in 0.47 seconds

然而,就 Paramiko 而言,該欄位包含類似「Paramiko Python sshd 2.4.2」的字串,它可以嚇跑旨在「避免」陷阱的殭屍網路。 因此,我認為有必要用更中性的東西來代替這條線。

其他載體

SSH 不是遠端管理的唯一手段。 還有telnet、rdp。 值得仔細觀察它們。

延期

如果在不同的國家設置多個陷阱,並將其中的登入名稱、密碼和被駭節點集中收集到一個公共資料庫中,那就太好了

哪裡可以下載?

在撰寫本文時,僅準備了測試版本,可以從以下位置下載 Github 上的儲存庫.

來源: www.habr.com

添加評論