當(dāng)前位置:首頁(yè) >  IDC >  安全 >  正文

Redis CrackIT入侵事件分析

 2015-11-18 10:20  來(lái)源: 互聯(lián)網(wǎng)   我來(lái)投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過(guò)

1 摘要

2015年11月10日中午12點(diǎn)左右,我們發(fā)現(xiàn)了某不知名團(tuán)體利用redis設(shè)計(jì)缺陷,針對(duì)國(guó)內(nèi)互聯(lián)網(wǎng)進(jìn)行了全網(wǎng)性的入侵事件。這次大規(guī)模的攻擊事件主要針對(duì)Linux服務(wù)器,如果redis服務(wù)器使用root權(quán)限啟動(dòng),并且沒(méi)有配置認(rèn)證,就可能能夠?qū)е聄edis數(shù)據(jù)丟失,服務(wù)器被添加賬號(hào)用于ssh遠(yuǎn)程登錄。

經(jīng)過(guò)白帽匯安全團(tuán)隊(duì)的進(jìn)一步分析,此次攻擊事件已經(jīng)導(dǎo)致至少10000家暴露redis服務(wù)器被成功入侵,我們會(huì)在后續(xù)持續(xù)更新進(jìn)一步動(dòng)態(tài)。

2 入侵事件

2015年11月10日中午12點(diǎn)左右,我們?cè)诠W(wǎng)部署的多臺(tái)安全探針?lè)?wù)器陸續(xù)觸發(fā)了異常告警,有多臺(tái)redis數(shù)據(jù)被突然清空。通過(guò)分析發(fā)現(xiàn):

執(zhí)行了flushall清空數(shù)據(jù)的操作

在redis數(shù)據(jù)中新建了一個(gè)名為crackit的key鍵值,內(nèi)容為ssh-rsa AAAAB3Nza<此處省略若干字母>mo6BLZV4/ crack@redis.io, 如下圖

在/root/.ssh文件夾下新建了一個(gè)authorized_keys文件,內(nèi)容很明顯是redis生成的db二進(jìn)制文件,里面清晰的看到crackit對(duì)應(yīng)內(nèi)容,也就是入侵者嘗試通過(guò)配置一個(gè)ssh的key來(lái)進(jìn)行登錄。內(nèi)容如下圖:

3 事件回溯

到目前為止,我們還無(wú)法明確的對(duì)此次入侵過(guò)程定義為漏洞入侵,因?yàn)閞edis官方網(wǎng)站并未對(duì)此提供補(bǔ)丁,至少目前為止看到利用的過(guò)程都是基于redis提供的正常功能。而且這個(gè)問(wèn)題在2014年9月就被作為遠(yuǎn)程代碼執(zhí)行RCE的技術(shù)問(wèn)題作了公開(kāi)發(fā)布,并得到了小范圍的傳播。

經(jīng)過(guò)crackit的關(guān)鍵字查詢,在2015年11月4日,安全研究人員Antirez(他本人就是Redis的作者)的blog()公布了一個(gè)redis提權(quán)的技巧,事實(shí)上今年上半年利用redis寫文件的方法被大量應(yīng)用,通常都是寫入webshell作為網(wǎng)站后門程序。而這次作者屬于老技術(shù)新的利用思路,文件位置的變化讓利用場(chǎng)景一下被放大。大致意思是利用redis在用戶目錄寫入一個(gè)ssh私鑰文件,從而建立一個(gè)信任關(guān)系,這樣不需要輸入ssh密碼就可以登入。

在技術(shù)文檔被公布以后,開(kāi)始有一批地下產(chǎn)業(yè)進(jìn)行了分析驗(yàn)證和實(shí)際利用的,在11月7日左右網(wǎng)上已經(jīng)能找到一些網(wǎng)站站長(zhǎng)發(fā)現(xiàn)通過(guò)redis被入侵的案例,但是當(dāng)時(shí)還是小范圍的利用。直到今天,這個(gè)漏洞被用于實(shí)際的大規(guī)模掃描和入侵,這次的掃描非常粗暴,破壞性大,范圍廣,會(huì)直接刪除服務(wù)器上的數(shù)據(jù),并且添加免密碼登錄的賬號(hào)。

4 技術(shù)還原

為了更好的理解防護(hù)方法,我們對(duì)其進(jìn)行了完整的技術(shù)還原。

環(huán)境要求:以root啟動(dòng)的redis,可以遠(yuǎn)程登入到redis console

首先在你的連接機(jī)器上輸入:

來(lái)生成一個(gè)公鑰。

生成到txt (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > foo.txt

然后:redis-cli -h xxxx flushall 清空redis(非常暴力,請(qǐng)務(wù)必在測(cè)試環(huán)境執(zhí)行)

執(zhí)行:cat foo.txt | redis-cli -h xxxx -x set pwn

然后登錄redis,執(zhí)行如下命令:

上面命令是調(diào)用config set命令對(duì)redis的備份文件路徑進(jìn)行修改,然后執(zhí)行save進(jìn)行生成備份文件(這里是生成了authorized_keys文件)。這樣就可以使用本地的私鑰去登入被植入公鑰的ssh服務(wù)器了。

5 影響危害

易攻擊對(duì)象:

Redis服務(wù)器

Linux環(huán)境

對(duì)公網(wǎng)開(kāi)放

未啟用認(rèn)證

以root方式啟動(dòng)(非必需)

現(xiàn)象:

redis都被執(zhí)行過(guò)flushall命令進(jìn)行清空

redis內(nèi)新建crackit的key

redis的dir參數(shù)被指向了/root/.ssh文件夾

/root/.ssh目錄下會(huì)生成一個(gè)authorized_keys文件(或者覆蓋現(xiàn)有的)

6 修補(bǔ)加固建議

臨時(shí)修復(fù)建議,通過(guò)配置rename-command CONFIG "",禁用一些命令。(某些必須以高權(quán)限運(yùn)行的,可以借鑒該方案)

修改redis.conf文件

增加

rename-command FLUSHALL ""

rename-command FLUSHDB ""

rename-command CONFIG ""

rename-command EVAL ""

以低權(quán)限啟動(dòng)redis

切換到其他用戶su xxx,然后再啟動(dòng)server(切換是否注意之前文件權(quán)限,也需要相應(yīng)修改)。

給redis增加驗(yàn)證。

修改redis.conf文件

禁止對(duì)公網(wǎng)開(kāi)放。

修改redis.conf文件

檢查用戶.ssh目錄下是否已經(jīng)存在非法的authorized_keys文件

鑒于redis并不提供其他賬號(hào)啟動(dòng)服務(wù)的腳本,導(dǎo)致現(xiàn)網(wǎng)大量redis服務(wù)器是通過(guò)root的權(quán)限來(lái)啟動(dòng)init.d下的服務(wù)腳本。但是官方明確寫到為了安全,切記勿使用root身份啟動(dòng)。

除了基本的基線加固措施和漏洞修補(bǔ)外,我們認(rèn)為最后一道防線依然是傳統(tǒng)的備份方案,定期備份重要的業(yè)務(wù)數(shù)據(jù)。建議部署一些必要的備份災(zāi)備方案,行業(yè)內(nèi)有一些可用的產(chǎn)品可用于處理此類問(wèn)題,比如可以利用類似于多備份工具來(lái)對(duì)redis數(shù)據(jù)庫(kù)進(jìn)行快速的備份和恢復(fù)。

7 常見(jiàn)問(wèn)題FAQ

什么叫redis crackit?

此次針對(duì)redis進(jìn)行大規(guī)模掃描和入侵的事件,會(huì)在redis服務(wù)器上生成存在一個(gè)crackit的key,所以我們以redis crackit來(lái)命名此次事件

這次事件有什么危害?

成功的入侵能夠?qū)е聄edis數(shù)據(jù)丟失,服務(wù)器被完全控制。

影響范圍有多大?

中國(guó)互聯(lián)網(wǎng)有至少超過(guò)10000臺(tái)服務(wù)器被入侵,占比達(dá)到開(kāi)放redis服務(wù)器的67%,也就是說(shuō)每100臺(tái)對(duì)公網(wǎng)開(kāi)放的服務(wù)器就有67臺(tái)被掃描入侵過(guò)。

到哪下載補(bǔ)丁?

很遺憾,沒(méi)有補(bǔ)丁,官網(wǎng)認(rèn)為不是漏洞而是正常功能,所以在官網(wǎng)改變主意之前,請(qǐng)參考我們提供的修復(fù)建議。

我應(yīng)該怎么做?

參考修復(fù)建議,簡(jiǎn)單介紹:進(jìn)行防火墻配置禁止非業(yè)務(wù)網(wǎng)絡(luò)訪問(wèn);修改配置文件bind的IP;降低運(yùn)行權(quán)限;臨時(shí)禁用一些危險(xiǎn)命令;定期備份數(shù)據(jù)。

如果發(fā)現(xiàn)了入侵痕跡,還要將已經(jīng)入侵成功的后門進(jìn)行清除。

進(jìn)行如上操作是否就一定安全?

Redis功能過(guò)于強(qiáng)大,有很多特性可能導(dǎo)致新的問(wèn)題,比如有安全研究人員發(fā)現(xiàn)可以反彈shell的方式來(lái)獲取控制權(quán),也就是說(shuō):即時(shí)6379端口沒(méi)有對(duì)外網(wǎng)開(kāi)放,但是利用SSRF等漏洞就能夠觸發(fā),或者在低權(quán)限的webshell來(lái)用于權(quán)限提升。

由于攻擊方法的多樣性, 還請(qǐng)大家對(duì)redis進(jìn)行長(zhǎng)期的監(jiān)控,時(shí)刻關(guān)注這方面的安全資訊,同時(shí)我們也會(huì)不斷補(bǔ)充新的知識(shí)

8 補(bǔ)充材料

截至目前為止,通過(guò)我們進(jìn)一輪的抽樣調(diào)查,我們提取了15萬(wàn)臺(tái)對(duì)公網(wǎng)開(kāi)放的redis服務(wù)器跟進(jìn)分析,發(fā)現(xiàn)其中有15238臺(tái)未進(jìn)行驗(yàn)證配置,也就是說(shuō)有超過(guò)10%的服務(wù)器不需要密碼就能夠連接;其中又有10312臺(tái)服務(wù)器有入侵痕跡,總比例超過(guò)67%的開(kāi)放服務(wù)器被入侵。

9 參考

A few things about Redis security

Trying to hack Redis via HTTP requests

Redis Security

10 關(guān)于我們

北京白帽匯科技有限公司是一家專注于安全大數(shù)據(jù)、企業(yè)威脅情報(bào),為企業(yè)提供尖端安全產(chǎn)品和服務(wù)的一家高科技互聯(lián)網(wǎng)企業(yè)。

NOSEC大數(shù)據(jù)安全協(xié)作平臺(tái)(NOSEC.ORG)是其旗下的一款線上安全產(chǎn)品,也是全球第一款站在黑客思維角度研發(fā)的安全大數(shù)據(jù)信息共享平臺(tái)。定位為信息安全從業(yè)者的“瑞士軍刀”,為用戶提供安全大數(shù)據(jù)信息及高級(jí)安全工具等。使用對(duì)象主要為白帽子、信息安全從業(yè)者、及企業(yè)用戶。

如有任何意見(jiàn)和建議,歡迎通過(guò)如下方式與我們聯(lián)系:

聯(lián)系郵箱:support@nosec.org

客服電話:400-650-2031

申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)文章

熱門排行

信息推薦