天天看點

态勢感覺将DDOS扼殺在搖籃中:涉及數千台PostgreSQL伺服器

0x00 前言

       近日,雲盾的态勢感覺系統成功捕獲到一起利用postgresql弱密碼批量植入木馬的事件。本文将分享我們對此次事件的追蹤過程,從攻擊方式,用到的工具,到攻擊的範圍,還原整個攻擊事件。

0x01 發現

       2015年11月27日星期五,雲盾态勢感覺系統産出了一條異常的告警,團隊成員立即對告警進行響應。通過告警資訊定位到了傳播源。

态勢感覺将DDOS扼殺在搖籃中:涉及數千台PostgreSQL伺服器

       我們發現該傳播源為一個hfs檔案伺服器:

态勢感覺将DDOS扼殺在搖籃中:涉及數千台PostgreSQL伺服器

<b>       </b>在hfs伺服器中,發現了黑客用來批量掃描漏洞和自動攻擊的程式:ps.exe和pexec.exe。下載下傳到本地進行分析之後,判定此工具為針對postgresql資料庫的自動化攻擊程式。程式使用了c#編寫,ps.exe負責掃描postgresql服務弱密碼,将掃描結果通過web接口記錄到檔案:

<b>

态勢感覺将DDOS扼殺在搖籃中:涉及數千台PostgreSQL伺服器

</b>

<b>       </b>黑客将掃描到弱密碼的ip清單導入到pexec.exe,程式會首先判斷伺服器postgresql的版本,通過sql寫入對應的/tmp/testproxy.so檔案,然後建立名為exec111的udf函數,最後通過udf執行惡意指令。有趣的是,我們在利用程式中并發現沒有針對windows版本的postgresql進行利用的代碼,說明黑客的程式還是一個半成品。下面是針對linux下postgresql 9.3版本的部分利用代碼:

态勢感覺将DDOS扼殺在搖籃中:涉及數千台PostgreSQL伺服器

<b>       </b>在兩個程式中,作者都寫入了對硬體cpu id的判斷,程式僅允許在指定機器運作,但是作者卻沒對程式代碼做混淆和加殼。

态勢感覺将DDOS扼殺在搖籃中:涉及數千台PostgreSQL伺服器

       在攻擊者hfs上,我們還發現了攻擊者已經掃描到的postgresql弱密碼和利用成功的ip清單:

态勢感覺将DDOS扼殺在搖籃中:涉及數千台PostgreSQL伺服器
态勢感覺将DDOS扼殺在搖籃中:涉及數千台PostgreSQL伺服器

       經過我們統計,這份資料裡包含了被植入木馬的2626個ip位址,以及剛掃描出的1217台存在弱密碼的postgresql伺服器ip位址。

       進一步對攻擊者植入的udf程式進行逆向分析,發現該udf執行了如下指令:

       testproxy是真正的木馬程式,啟動後會嘗試解析baby0119.com域名,并連接配接其80端口,等待c&amp;c發送指令并執行。

0x02 攻擊鍊路還原

黑客通過ps.exe程式,全網掃描存在弱密碼和空密碼的postgresql伺服器并将ip儲存。

利用postgresql pg_largeobject的特性,對漏洞主機發起攻擊:将惡意udf分段寫入posrgresql表中,并導出實體檔案到: /tmp/testproxy.so

從/tmp/testproxy.so導入惡意代碼,建立udf函數并執行,下載下傳惡意檔案傳播源(hfs伺服器)上的testproxy木馬并運作。

木馬啟動後會嘗試連接配接baby0119.com域名的 80端口,等待c&amp;c發送指令。

0x03 漏洞影響

       攻擊者掃描全網存在弱密碼和空密碼的postgresql資料庫主機,通過udf函數植入木馬,通過木馬程式,攻擊者可以控制受害機器發起惡意行為。阿裡雲雲盾态勢感覺系統在27日第一時間發現該威脅,截止本文終稿,還并未發現木馬c&amp;c伺服器開放和發送指令,我們推測攻擊者還處于批量“抓雞”階段,還沒有來得及開始利用這個木馬進行攻擊。

0x04影響範圍

       我們針對全國開放5432端口的伺服器進行了詳細的探測,發現有19554台伺服器運作着postgresql服務,其中可以通過弱密碼登入postgresql的伺服器有1353台。按地區分布數量進行排名,第一位是台灣,浙江、北京排在第二、三位。

态勢感覺将DDOS扼殺在搖籃中:涉及數千台PostgreSQL伺服器

        在分析postgresql弱密碼的過程中,我們注意到了postgresql的一個特性,即“信任ip登入”。在pg_hba.conf檔案中,如果把某個ip段的auth-method字段配置為“trust”,意味着在該ip段下不需要任何驗證即可通路資料庫中所有資料。對上述1353台存在弱密碼的伺服器進行深入分析,我們發現超過50%的postgresql對所有ip都開啟了“trust”模式,這些伺服器都存在極大的安全風險!

态勢感覺将DDOS扼殺在搖籃中:涉及數千台PostgreSQL伺服器

0x05 修複建議:

禁止postgresql以root權限運作,建議使用獨立帳号運作

adduser dbuser

sudo su – dbuser

修改資料庫帳号為強密碼,例如

alter user postgres with password ‘aliyunsecurity1234*_*’;

檢查postgresql配置檔案conf中是否存在:host all all 0.0.0.0/0 trust ,建議修改為使用密碼認證。

檢視是否存在惡意udf函數

select proname,prosrc from pg_proc where proname = ‘exec111’;

檢視是否存在可疑udf函數,檢視哪些函數不是系統預設的、或者管理者自己添加的

select proname,prosrc from pg_proc;

檢視是否存在可疑存儲過程

select tgrelid from pg_trigger;

檢查自己伺服器是否存在/tmp/testproxy.so檔案