*本文作者:ForrestX386,本文屬 FreeBuf 原創獎勵計劃,未經許可禁止轉載。

前言

前段時間,在一次安全應急響應案例中遇到一個利用ssh 日誌作為觸發點的後門,覺得有意思,寫下來,分享一下,歡迎各位大佬的拍磚與討論。

案例分析

據客戶反映,其最近發現ssh的登錄日誌中有很多失敗的登錄嘗試,形如:

如上圖,這些失敗的登錄用戶名都很奇怪,都是以LEGO開頭的後面加上一串隨機字元。感覺有點奇怪,要是SSH 暴力猜解攻擊的話,不應該用這樣的用戶名啊。而且隔斷時間就會有同樣的失敗登錄嘗試,每次就一次,這也不像是暴力猜解啊,有點費解。

在客戶授權登錄的情況下,去伺服器看了下:

從乾淨的系統上提取了ps、lsof等工具,先後排查了是否有pam 庫後門、pam配置文件後門、sshd後門,rsyslog 配置文件後門,均無果,後又檢查定時任務也沒有問題;

利用ps 、top等工具查看進程信息也沒有異常,還真是有點意思。

再檢查下動態庫有木有被劫持了吧,一查果然有問題:

先去掉這個環境變數試下,發現了異常進程:

後又跟客戶確認,沒有用到這個LD_PRELOAD環境變數,基本可以確認是攻擊者增加的用於隱藏進程的動態庫。

利用lsof 查一下進程有木有關聯相關文件:

進一步確認177a就是perl:

再去查下/tmp/177f 這個文件:

怎麼這麼面熟,這不就是/var/log/secure的內容嗎?

對比下兩個文件的inode id,發現是一致的,原來/tmp/177f 指向的就是/var/log/secure文件:

再去看下proc下117518這個可疑進程的fd信息,發現標準輸入被重定向到/tmp/177f 也就是/var/log/secure這個文件:

至此基本弄清了可疑進程執行如下命令:

這裡的LEGO是個匹配字元串,$1指的是LEGO後面匹配到的字元,也即(w+)匹配到的字元,大致意思就是從/var/log/secure 讀取每一行的內容,然後匹配到LEGO後面的字元串,然後執行pack 函數返回的結果。

看來,/var/log/secure/log中 形如LEGO6964 的登錄賬戶名都是payload(後又提取/var/log/secure/log/ 中形如LEGO*的登錄名,unpack之後,發現是個反彈shell,因隱私問題,這裡就不發表了)。

這裡可以確定,這是個後門了,利用ssh 登錄日誌作為後門觸發點,攻擊者每一次使用特定的賬戶名登錄就會觸發後門獲取反彈shell。後面接著排查發現,這次入侵是因為redis未授權 埠開放導致的(redis 是以root運行的,也是沒誰了。。)

總結

攻擊者有點粗心了,可能是忘記刪除/var/log/secure 中的登錄痕跡了,要不然會更晚才能發現異常,排查也許會繞些彎子。

筆者這次分享在大佬們眼中可能略顯簡單,不過對我來說,確學到了不少東西,也希望更多的人分享自己的響應經歷,希望大佬們分享更牛逼的響應經歷

*本文作者:ForrestX386,本文屬 FreeBuf 原創獎勵計劃,未經許可禁止轉載。


推薦閱讀:
查看原文 >>
相關文章