Redis未授權漏洞蜜罐模擬與捕獲分析

語言: CN / TW / HK

1.概述

文章主要分析Redis未授權漏洞的原理及形成原因,使用vulhub靶場進行漏洞復現,在瞭解漏洞原理並復現的基礎上使用golang編寫蜜罐程式碼進行模擬,開放埠在網上捕獲真實存在的惡意攻擊行為,對惡意樣本進行分析,總結出威脅情報。

2.漏洞原理與復現

2.1 漏洞環境

靶機 unbutu IP:    192.168.145.150

攻擊機 kali    IP:    192.168.145.130

2.2 漏洞原理

Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。Redis是由一個鍵、值對映的字典構成。為高速低負載儲存系統提供了一種解決方案。

Redis預設配置是不需要密碼認證的,也就是說只要連線的Redis伺服器的host和port正確,就可以連線使用。Redis因配置不當可以被未授權訪問,被攻擊者惡意利用。預設情況下,會繫結在 0.0.0.0:6379,這樣將會將 Redis 服務暴露到公網上,如果在沒有開啟認證的情況下,可以導致任意使用者在可以訪問目標伺服器的情況下未授權訪問 Redis 以及讀取 Redis的資料。

攻擊者無需認證訪問到內部資料,可能導致敏感資訊洩露,黑客也可以惡意執行flushall來清空所有資料。

攻擊者可通過EVAL執行lua程式碼,或通過資料備份功能往磁碟寫入後門檔案。

如果Redis以root身份執行,黑客可以給root賬戶寫入SSH公鑰檔案,直接通過SSH登入受害伺服器。

2.3 復現

在宿主機上使⽤vulhub搭建漏洞環境,

環境搭建好後進⼊Redis⽬錄,

使⽤命令啟動環境 docker-compose up -d

攻擊機kali安裝Redis客戶端連線靶機。

使用info命令測試是否成功,上圖說明靶機存在Redis未授權漏洞,

使用攻擊指令碼 https://github.com/vulhub/redis-rogue-getshell 進行攻擊。

攻擊成功。

3. 蜜罐模擬

3.1 簡介

蜜罐程式使⽤golang語言編寫,本次編寫蜜罐程式為低互動蜜罐,低互動蜜罐模擬網路服務響應和攻擊者互動,容易部署和控制攻擊,但是模擬能力相對較弱,對攻擊的捕獲能力不強。

有別於高互動蜜罐採用真實系統與服務誘捕惡意攻擊,低互動為攻擊者展示的所有攻擊弱點和攻擊物件都不是真正的產品系統,⽽是對系統以及其提供服務的模擬,這樣設計的好處是安裝和配置非常簡單,低互動蜜罐系統⼏乎沒有安全⻛險問題,不足之處是不完善的模擬會降低資料捕獲的能力,並且容易被攻擊者識別。

將編譯好的Linux執行檔案放在伺服器上開放6379埠誘使黑客進行攻擊,執行程式,從而捕獲網上的惡意攻擊資料,記錄攻擊源和IP。

蜜罐原始碼已開源:https://github.com/sunhao282/HoneypotCaptureAttack/tree/master

3.2 蜜罐流程

首先模擬Redis的set和get命令

模擬info命令

模擬ping命令

模擬scan命令

模擬client命令

模擬del命令

模擬slaveof命令

通過模擬Redis常用命令來迷惑攻擊者,從而誘捕攻擊者的惡意攻擊行為。

4. 蜜罐捕獲分析

檢視日誌檔案發現惡意攻擊行為的記錄。

捕獲的log檔案部分截圖如下:

4.1 下載挖礦程式

程式首先會判斷惡意檔案的大小是否相同,不相同殺掉並刪除,相同則返回not need download。

4.2 結束競品

分析惡意樣本原始碼發現了大量刪除檔案的操作,部分截圖如下:

刪除⽤戶賬號:

殺掉程序部分截圖:

刪除docker⽂件:

惡意⽂件通過大量的刪除檔案,殺掉程序等操作來獲取最大的CPU使⽤率,從而獲取最大的利益。

4.3 解除安裝安全軟體

解除安裝阿⾥雲安騎士檔案

解除安裝雲警

關閉selinux防⽕牆,關閉Linux核心apparmor安全模組,關閉阿里雲服務,殺掉阿里雲安騎士相關程序。

4.4 建立持久化

將惡意檔案的下載地址寫入主機,在並/root/.ssh/authorized_keys檔案中寫入了黑客的ssh公鑰,即使客戶刪除了惡意檔案,黑客還是可以通過ssh遠端登入該主機。

4.5 IOC

http://en2an.top/cleanfda/init.sh

● SHA256:8573fd4eaa93912b40abde8c4e504b69ed13534a7474102f90cf7349e964a7c7

● MD5:224d26d81f5108fce260d550d2b57f4a

● SHA1:bdfbf5110e9bf1bb5d1b759fddf7127c5f55cf86

http://en2an.top/cleanfda/zzh

● SHA256:58da51f26d9ab2e380d2da7e917150cad2a0320c6a4e8aafd919e044ec52980c

● MD5:077589a7b6402e6848fc22a54c2216c0

● SHA1:ef9ccaf397335cbc786e6d8bc3fdab11a5cecd8d

5. 建議

造成漏洞的原因是預設無密碼,修改配置檔案/etc/redis.conf給Redis設定一個強密碼即可。預設埠為6379,也可以修改成其他埠避免被攻擊。