14號上午接到同事報告,某主機cpu占用至100%并出現可疑進程,安全部接手調查后結論如下:
分析過程如下:
登入主機后,找到可疑進程PID
進入proc/進程目錄找到對應文件絕對路徑在/usr/bin目錄下,stat信息如下:
#!bash
[[email protected] 13146]# stat /usr/bin/faksiubbri
file: `/usr/bin/faksiubbri'
Size: 610224 Blocks: 1200 IO Block: 4096 regular file
Device: 802h/2050d Inode: 312739 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-01-14 10:33:13.000000000 +0800
Modify: 2015-01-14 10:29:06.000000000 +0800
Change: 2015-01-14 10:29:06.000000000 +0800
[[email protected] 13862]# stat /usr/bin/ohzxttdhqk
file: `/usr/bin/ohzxttdhqk
Size: 625622 Blocks: 1232 IO Block: 4096 regular file
Device: 802h/2050d Inode: 312741 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-01-14 10:32:59.000000000 +0800
Modify: 2015-01-14 10:29:26.000000000 +0800
Change: 2015-01-14 10:29:26.000000000 +0800
初步判斷入侵時間在14號上午10:29分附近并且已有root權限
通過strings查看文件內容發現遠程ip及其他信息
搜索ip發現為香港主機,并且在微博上發現如下信息
結合strings其他信息,確定該文件為惡意程序,目前首先要判斷攻擊者通過什么途徑入侵進來,此處繞了一些彎路,原因如下幾點:
后來有同事在網上查到該ddos后門通過ssh暴力破解方式傳播,才重新把目光放到ssh。與相關人員確認得知,服務器由于特殊原因對外開放了22端口,并且機器為弱口令,結合此信息,推測服務器為暴力破解ssh入侵,故排查secure日志
6臺外網主機有ssh驗證成功記錄,時間在13號21:12至23:59分之間,其中ip118.193.199.132與ip104.149.220.27在secure日志中無密碼錯誤記錄,推測為使用其它主機暴力破解,成功后返回密碼使用其余主機登錄
查看cron日志發現每3分鐘會執行兩個惡意腳本
/etc/cron.hourly/cron.sh
/etc/cron.hourly/udev.sh
cron.sh文件內容如下
其中/lib/libgcc.so通過文件大小及strings部分內容基本確定與/usr/bin下的惡意程序ohzxttdhqk相同
udev.sh文件內容如下
其中/lib/libgcc4.so通過文件大小及strings部分內容基本確定與/usr/bin下的惡意程序faksiubbri相同
分別查看第一次執行計劃任務時間如下
時間上與暴力破解成功時間吻合,基本可判斷后門程序通過ssh途徑被植入
查看secure日志,取之前發現ip成功驗證ssh至斷開連接時間差,結果如下
221.235.189.229
62.210.180.180
103.41.124.48
118.193.199.132
175.126.82.235
Jan 13 23:22:23成功認證后無斷開信息
104.149.220.27
通過成功驗證ssh至斷開連接時間差可看到221.235.189.229、62.210.180.180、103.41.124.48時間差為0,推測暴力破解成功后無其他舉動,那么結合計劃任務運行時間與時間差信息可判斷種植后門的兩個ip應該為118.193.199.132與175.126.82.235
但118.193.199.132時間差也僅有5秒鐘時間,人工很難完成種植后門的操作,由此判斷是自動化程序完成
目前疑點主要為不清楚后門通過什么方式被部署進來?
驗證發現通過scp遠程拷貝文件至主機與ssh登錄后退出都會產生Received disconnect的日志,如果通過ssh自動化部署,last為何會看不到記錄?是否單獨清除了相關記錄?如果是scp遠程拷貝,是通過什么方式執行程序的?目前暫不知曉通過何種方式可以僅將文件放入機器后可以讓程序自動執行,是否還有其他部署方式?
排查其他主機是否存在惡意文件,可注意以下幾點:
修復主機bash漏洞
增加主機密碼復雜度(包括重要端口不對外主機)
針對異常情況主機,安全人員排查前盡量不要有操作,如果需要對文件有操作,一定要先保存stat信息結果,備份文件內容,修改密碼/新建賬戶/刪除賬戶前一定要先stat /etc/passwd
與stat /etc/shadow
并保存執行結果
以上內容為之前對公司層面寫的一份應急響應報告,大家可以參考下流程,有一點需要改正的是判斷入侵途徑這里因為主觀判斷認為不會是ssh入侵導致浪費了不少時間,在分析過程陷入瓶頸的時候,應該以多看日志為主,而非大腦空想,最后補充幾個linux下應急響應中常用到的一些思路和命令,希望對大家有所幫助
web類入侵事件可結合以下幾點排查:
查找一天內修改過的文件命令
#!bash
find /home/work –mtime -1 –type f
查找系統中包含指定字符的所有文件(可以拿已知shell密碼及特定字符作為關鍵字)
#!bash
find /|xargs grep -ri "Bot1234" -l 2>/dev/null(執行后會改變所有文件的atime,請做完5中提到的點之后操作)
查看較大的日志文件時,可先通過fgrep指定字符篩選,比如已知shell文件為conf.php,可通過命令fgrep –a ‘conf.php’ accesslog > conf_access
來篩選conf.php的訪問記錄,如果為一些高危漏洞,也可根據漏洞利用的關鍵字來篩選,通過第一步篩選結果后可找出入侵者ip等信息,可繼續通過這些信息在accesslog中找到攻擊者的所有訪問記錄以便進一步排查
判斷影響時,當webshell操作為post且無流量鏡像時,判斷一些敏感文件如源碼打包文件、包含密碼信息文件是否被讀取可通過文件atime信息來判斷,此外對webshell的請求條數以及返回的字節數都可以作為定損的大概依據
主要通過其他高危服務,目前遇到的案例中大多屬于ssh對外且弱口令的情況,主要結合syslog判斷
此外,可結合以下幾點排查:
netstat –an
查看是否已與外部可疑服務器建立連接,如已建立需及時斷開ls –al
查看exe對應值可得知文件路徑,另外可查看計劃任務,后門程序為保證自啟動往往會添加新的計劃任務