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

一、背景

最近突然發現服務器出現流量異常,十分卡頓,通過top命令查看內存使用情況,發現可疑的進程:

通過kill -9 pid(116218)命令殺掉後又啓動新的進程,名字更換了:

查看etc/crontab定時任務發現定時任務*/3 * * * * root etc/cron.hourly/gcc.sh,每3分鐘執行一次以下腳本:

查看gcc.sh腳本,可以看到腳本內容,該腳本的功能是打開網卡,然後啓動libudev.so,並啓動多個進程來監控libudev.so進程是否被查殺,如果被殺掉了,會再次拷貝libudev.so執行,而且每次啓動都會更換進程名,給查殺帶來了難度。

二、樣本介紹

樣本基本信息:

樣本名稱 libudev.so
樣本類型 ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, not stripped
樣本大小 662840
MD5 7d44757d809641646e02ab76ed93ede8
SHA256 0972688711161e347d08ce1c931eb41904fc6f4e4764548e1f14da132a0d1b5d
傳播方式 SSH爆破,遠程下載執行
所屬家族 XorDDoS

三、詳細分析

i3306m樣本運行後,首先通過get_self調用readlink來獲取當前樣本的運行路徑:

該樣本內置了一個XOR加解密算法,對字符串進行解密:

XOR解密密鑰爲“B2FA36AAA9541F0”:

通過IDA動態調試監聽參數a1,獲取解密字符串:

解密的字符串如下, http://www.s9xk32c.com/config.rar 爲配置文件:

解密出來的linux系統命令如下,這些字符串會在後面用於創建文件、拷貝文件盒系統命令等:

DelService()函數的功能是刪除病毒自啓動服務,並且刪除/etc/rc*.d/ 的S90*文件都是指向/etc/init.d/裏的啓動腳本的軟鏈接,從rc1.d一直到rc5.d。

創建/usr/bin/,/bin/,/tmp/三個目錄。

在之前解密出的系統路徑/usr/bin/,/bin/,/tmp/下複製自身並執行,並通過在尾部添加10個隨機字符的方式,使得自身的hash值每次都不同,用於對抗檢查hash值這一類的掃描。

AddService()函數代碼嘗試將自身作爲服務寫入到系統啓動目錄下,使每次樣本都能隨着系統自啓動。

遠程服務器上下載的gcc.sh腳本,寫入本地crontab,作爲定時任務執行,每3分鐘檢測程序是否運行,如果不存在就繼續執行拷貝並運行。

樣本自身還攜帶了一個rootkit模塊,通過HidePidPort、HideFile對端口、文件進行隱藏。

然後創建3個線程,分別執行不同的任務:

kill_process線程的功能是監聽配置文件config.rar是否下載成功,如果下載完成,讀取每行的內容,根據判斷條件對相應進程進行查殺。

tcp_thread線程的功能是獲取受控主機的信息,然後發送回來:

daemon_get_kill_process線程的功能是通過http_download_mem()函數下載配置文件kill_cfg,然後解密配置文件,休眠1800s,繼續執行該操作:

在tcp_thread線程中,有一個exec_packet函數,控制肉雞向目標主機發起DDoS攻擊,更具不同的參數設置,可以控制肉雞進行各種威脅操作,包括創建多個線程發起DDoS攻擊,下載惡意腳本並執行,發送惡意信息到指定服務器等操作。

樣本更新:

四、處理以及加固措施

病毒查殺腳本和加固方法如下:

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

相關文章