主機被入侵分析過程報告

wyzsk發表於2020-08-19
作者: HRay · 2016/03/11 10:23

0x00 結論


14號上午接到同事報告,某主機cpu佔用至100%並出現可疑程式,安全部接手調查後結論如下:

  1. 主機未限制埠訪問,ssh埠暴露外網
  2. 外部大量ip(100+)對主機進行暴力破解,且從13號21:12分開始陸續有6外網ip成功驗證ssh
  3. 驗證成功後自動化程式部署後門,並加入至計劃任務,第一個成功執行的惡意計劃任務時間為22:21:01,發現多處後門,但比對後發現實際可執行檔案有兩個(透過部分行為及連線ip判斷兩個檔案為同一夥人所留),其餘只是檔名不同
  4. 14號上午由於惡意程式導致機器cpu佔用100%,後門被發現

0x01 過程


分析過程如下:

登入主機後,找到可疑程式PID

p1

進入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及其他資訊

p2

搜尋ip發現為香港主機,並且在微博上發現如下資訊

p3

結合strings其他資訊,確定該檔案為惡意程式,目前首先要判斷攻擊者透過什麼途徑入侵進來,此處繞了一些彎路,原因如下幾點:

  1. 伺服器執行了web、ftp服務,但非root許可權
  2. last並未發現異常登入資訊、history未發現可疑操作、且預設ssh埠禁止對外開放,故忽視了ssh入侵的判斷
  3. 伺服器存在bash漏洞,導致懷疑是bash漏洞+提權、但未發現可疑的accesslog
  4. 此前stat檔案判斷時間有誤,事後發現管理員之前有kill程式程式操作,程式結束後會刪除自身並生成新的檔案,所以stat到的時間資訊其實是管理員kill程式的時間

後來有同事在網上查到該ddos後門透過ssh暴力破解方式傳播,才重新把目光放到ssh。與相關人員確認得知,伺服器由於特殊原因對外開放了22埠,並且機器為弱口令,結合此資訊,推測伺服器為暴力破解ssh入侵,故排查secure日誌

p4

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檔案內容如下

p5

其中/lib/libgcc.so透過檔案大小及strings部分內容基本確定與/usr/bin下的惡意程式ohzxttdhqk相同

udev.sh檔案內容如下

p6

其中/lib/libgcc4.so透過檔案大小及strings部分內容基本確定與/usr/bin下的惡意程式faksiubbri相同

分別檢視第一次執行計劃任務時間如下

p7

p8

時間上與暴力破解成功時間吻合,基本可判斷後門程式透過ssh途徑被植入

檢視secure日誌,取之前發現ip成功驗證ssh至斷開連線時間差,結果如下

221.235.189.229

p9

62.210.180.180

p10

103.41.124.48

p11

118.193.199.132

p12

175.126.82.235
Jan 13 23:22:23成功認證後無斷開資訊

104.149.220.27

p13

透過成功驗證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秒鐘時間,人工很難完成種植後門的操作,由此判斷是自動化程式完成

0x02 疑點


目前疑點主要為不清楚後門透過什麼方式被部署進來?

驗證發現透過scp遠端複製檔案至主機與ssh登入後退出都會產生Received disconnect的日誌,如果透過ssh自動化部署,last為何會看不到記錄?是否單獨清除了相關記錄?如果是scp遠端複製,是透過什麼方式執行程式的?目前暫不知曉透過何種方式可以僅將檔案放入機器後可以讓程式自動執行,是否還有其他部署方式?

0x03 改進建議


  1. 排查其他主機是否有重要埠對外
  2. 排查其他主機是否存在惡意檔案,可注意以下幾點:

    1. /etc/init.d/目錄下是否存在10位隨機字母檔名的檔案
    2. /etc/rc%d.d/S90+10位隨機字母檔名的檔案(%d為0-5數字)
    3. 是否存在/etc/cron.hourly/udev.sh
    4. 是否存在/etc/ cron.hourly/cron.sh
    5. /etc/crontab中是否存在可疑計劃任務
    6. /usr/bin目錄下是否存在10位隨機字母檔名的檔案
  3. 修復主機bash漏洞

  4. 增加主機密碼複雜度(包括重要埠不對外主機)

  5. 針對異常情況主機,安全人員排查前儘量不要有操作,如果需要對檔案有操作,一定要先儲存stat資訊結果,備份檔案內容,修改密碼/新建賬戶/刪除賬戶前一定要先stat /etc/passwdstat /etc/shadow並儲存執行結果

0x04 題外話


以上內容為之前對公司層面寫的一份應急響應報告,大家可以參考下流程,有一點需要改正的是判斷入侵途徑這裡因為主觀判斷認為不會是ssh入侵導致浪費了不少時間,在分析過程陷入瓶頸的時候,應該以多看日誌為主,而非大腦空想,最後補充幾個linux下應急響應中常用到的一些思路和命令,希望對大家有所幫助

web入侵

web類入侵事件可結合以下幾點排查:

  1. 記錄後門檔案stat資訊,判斷入侵發生時間,另外需要與accesslog做對比,判斷是否為第一個後門。
  2. 查詢入侵者放置的其他後門可透過已知後門檔案的mtime、檔案內容等可作為特徵查詢,也可以與svn、此前備份檔案做比對或者打包web目錄檔案使用一些webshell查殺軟體。
  3. 查詢一天內修改過的檔案命令

    #!bash
    find /home/work –mtime -1 –type f
    
  4. 查詢系統中包含指定字元的所有檔案(可以拿已知shell密碼及特定字元作為關鍵字)

    #!bash
    find /|xargs grep -ri "Bot1234" -l 2>/dev/null(執行後會改變所有檔案的atime,請做完5中提到的點之後操作)
    
  5. 檢視較大的日誌檔案時,可先透過fgrep指定字元篩選,比如已知shell檔案為conf.php,可透過命令fgrep –a ‘conf.php’ accesslog > conf_access來篩選conf.php的訪問記錄,如果為一些高危漏洞,也可根據漏洞利用的關鍵字來篩選,透過第一步篩選結果後可找出入侵者ip等資訊,可繼續透過這些資訊在accesslog中找到攻擊者的所有訪問記錄以便進一步排查

  6. 判斷影響時,當webshell操作為post且無流量映象時,判斷一些敏感檔案如原始碼打包檔案、包含密碼資訊檔案是否被讀取可透過檔案atime資訊來判斷,此外對webshell的請求條數以及返回的位元組數都可以作為定損的大概依據

非web方式入侵

主要透過其他高危服務,目前遇到的案例中大多屬於ssh對外且弱口令的情況,主要結合syslog判斷

此外,可結合以下幾點排查:

  1. 判斷伺服器是否支援訪問外網,如支援,透過netstat –an檢視是否已與外部可疑伺服器建立連線,如已建立需及時斷開
  2. 記錄後門檔案stat資訊,根據mtime查詢其他後門檔案,同時根據檔案屬組與屬組對應執行服務判斷入侵方式
  3. 如果許可權組為root,需要檢測是否被種rootkit,rootkit檢測可使用rkhunter:http://rkhunter.sourceforge.net/
  4. 非web類後門,大部分人習慣把惡意檔案放置在/tmp目錄下,此外可透過可疑程式名與cpu佔用率排查,有些後門會偽裝正常程式名,但是top命令可透過cpu佔用率找出後門程式,獲取程式pid後可cd到/proc/對應pid目錄,ls –al檢視exe對應值可得知檔案路徑,另外可檢視計劃任務,後門程式為保證自啟動往往會新增新的計劃任務
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章