開篇前言
Linux服務器一直給我們的印象是安全、穩定、可靠,性能卓越。由於一來Linux本身的安全機制,Linux上的病毒、木馬較少,二則由於宣稱Linux是最安全的操作系統,導致很多人對Linux的安全性有個誤解:以為它永遠不會感染病毒、木馬;以為它沒有安全漏洞。所以很多Linux服務器都是裸奔的。其實在這次事件之前,我對Linux的安全性方面的認識、重視程度也是有所不足的。系統的安全性是相對而言的,沒有絕對的安全,風險無處不在。
案例描述
我們在雲端(中信國際電訊CPC)的一台Linux 應用服務器時不時出現網絡中斷情況,最開始反饋到系統管理員和網絡管理員哪里,以為是網絡方面的問題。在監控系統后,發現在一些時間段出現高流量的情況,分析發現這台Linux服務器只安裝了Tomcat應用程序,沒有任何其它應用程序。產生如此大的流量很不正常,而且出現網絡中斷的時刻,就是系統產生高流量的時刻。當然這些都是我后來才了解到的一些情況,我沒有這台服務器的權限,系統管理員找我看看能分析出啥問題,所以將root賬號權限給了我。
案例分析
我連接到服務器后,運行ifconfig命令,檢查網卡的發送、接收數據情況,如下所示,網卡eth0累計發送了12.3TB的數據。這明顯不太正常,顯然有應用程序一直在往外發包。我特意對比了另外一台正常的服務器后,驗證了這個事實。
那么是那個應用程序在一直往外發送包呢? 我首先檢查了Linux系統日志,發現了一些錯誤、告警信息。但是作用不大。於是在服務器上安裝了NetHogs應用程序,實時監控Linux進程的網絡帶寬占用情況。
監控過程確實發現了一些異常情況的進程:
1:/home/WDPM/Development/WebServer/apache-tomcat-7.0.61/cmys 一直在往外發包
2:/usr/bin/bsd-port/agent 一直在往外發包。
3:./cmys一直在往外發包
4:不時出現下面大量異常進程
[root@LNX17 /]# ps -ef | grep getty
root 2012 1 0 May22 tty2 00:00:00 /sbin/mingetty /dev/tty2
root 2014 1 0 May22 tty3 00:00:00 /sbin/mingetty /dev/tty3
root 2018 1 0 May22 tty4 00:00:00 /sbin/mingetty /dev/tty4
root 2020 1 0 May22 tty5 00:00:00 /sbin/mingetty /dev/tty5
root 2022 1 0 May22 tty6 00:00:00 /sbin/mingetty /dev/tty6
root 13835 32735 0 01:02 pts/0 00:00:00 grep getty
[root@LNX17 tmp]# ll /usr/bin/bsd-port/
total 2324
-rwxr-xr-x. 1 root root 1135000 Jul 17 08:28 agent
-rwxr-xr-x. 1 root root 4 Jul 17 08:28 agent.conf
-rw-r--r--. 1 root root 27 Jul 21 12:42 cmd.n
-rw-r--r--. 1 root root 73 Aug 21 21:30 conf.n
-rwxr-xr-x. 1 root root 1223123 Aug 21 04:08 getty
-rwxr-xr-x. 1 root root 5 Aug 21 04:08 getty.lock
搜索/usr/bin/bsd-port/agent等進程相關資料,發現很多關於木馬、后門方面的文章,嚴重懷疑服務器被掛馬了。手工殺進程或手工刪除/home/WDPM/Development/WebServer/apache-tomcat-7.0.61/cmys文件,發現不過一會兒,又會出現相同的進程和文件。於是下載安裝了AVG ANTIVIRUS FREE - FOR LINUX這款殺毒軟件,但是啟動服務失敗,不想折騰,於是安裝了ClamAV 殺毒軟件
ClamAV介紹
ClamAV是一個在命令行下查毒軟件,因為它不將殺毒作為主要功能,默認只能查出您計算機內的病毒,但是無法清除,至多刪除文件。ClamAV可以工作很多的平台上,但是有少數無法支持,這就要取決您所使用的平台的流行程度了。另外它主要是來防護一些WINDOWS病毒和木馬程序。另外,這是一個面向服務端的軟件。
下載ClamAV安裝包
ClamAV的官方下載地址為http://www.clamav.net/download.html 我直接使用wget下載源碼安裝文件。
[root@LNX17 tmp]# wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz
1、zlib-1.2.7.tar.gz安裝
[root@LNX17 tmp]# tar xvzf zlib-1.2.7.tar.gz 安裝一下gcc編譯環境: yum install gc
[root@LNX17 tmp]# cd zlib-1.2.7
[root@LNX17 zlib-1.2.7]# CFLAGS="-O3 -fPIC" ./configure --prefix= /usr/local/zlib/
[root@LNX17 zlib-1.2.7]# make && make install
2:添加用戶組clamav和組成員clamav
[root@LNX17 zlib-1.2.7]# groupadd clamav
[root@LNX17 zlib-1.2.7]# useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav
[root@LNX17 zlib-1.2.7]#
3:安裝Clamav-0.97.6
[root@LNX17 tmp]# tar xvzf clamav-0.97.6.tar.gz
[root@LNX17 tmp]# cd clamav-0.97.6
[root@LNX17 clamav-0.97.6]# ./configure --prefix=/opt/clamav --disable-clamav -with-zlib=/usr/local/zlib
[root@LNX17 clamav-0.97.6]# make
[root@LNX17 clamav-0.97.6]# make install
配置Clamav
1:創建目錄
[root@LNX17 clamav-0.97.6]# mkdir /opt/clamav/logs
[root@LNX17 clamav-0.97.6]# mkdir /opt/clamav/updata
2:創建文件
[root@LNX17 clamav-0.97.6]# touch /opt/clamav/logs/freshclam.log
[root@LNX17 clamav-0.97.6]# touch /opt/clamav/logs/clamd.log
[root@LNX17 clamav-0.97.6]#
[root@LNX17 clamav-0.97.6]# cd /opt/clamav/logs
[root@LNX17 clamav]# cd logs
[root@LNX17 logs]# ls
clamd.log freshclam.log
[root@LNX17 logs]# ls -lrt
total 0
-rw-r--r--. 1 root root 0 Aug 21 22:10 freshclam.log
-rw-r--r--. 1 root root 0 Aug 21 22:10 clamd.log
3:修改屬主
[root@LNX17 logs]# chown clamav:clamav clamd.log
[root@LNX17 logs]# chown clamav:clamav freshclam.log
[root@LNX17 logs]# ls -lrt
total 0
-rw-r--r--. 1 clamav clamav 0 Aug 21 22:10 freshclam.log
-rw-r--r--. 1 clamav clamav 0 Aug 21 22:10 clamd.log
[root@LNX17 logs]#
4:修改配置文件
#vi /opt/clamav
/etc/clam.conf
LogFile /opt/clamav/logs/clamd.log 刪掉前面的注釋目錄改為/opt/clamav/logs/clamd.log
PidFile /opt/clamav/updata/clamd.pid 刪掉前面的注釋路徑改為/opt/clamav/updata/clamd.pid
DatabaseDirectory /opt/clamav/updata 同上
#vi /opt/clamav
/etc/clamfreshclam.conf , 將Example 這一行注釋掉。否則在更新反病毒數據庫是就有可能出現下面錯誤
[root@LNX17 clamav]# /opt/clamav/bin/freshclam
ERROR: Please edit the example config file /opt/clamav/etc/freshclam.conf
ERROR: Can't open/parse the config file /opt/clamav/etc/freshclam.conf
5:升級病毒庫
[root@LNX17 etc]# /opt/clamav/bin/freshclam
ERROR: Can't change dir to /opt/clamav/share/clamav
出現上面錯誤,直接創建一個文件夾並授權給clamav用戶即可。
[root@LNX17 etc]# mkdir -p /opt/clamav/share/clamav
[root@LNX17 etc]# chown clamav:clamav /opt/clamav/share/clamav
[root@LNX17 etc]#
[root@LNX17 etc]# /opt/clamav/bin/freshclam
ClamAV update process started at Fri Aug 21 22:42:18 2015
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.97.6 Recommended version: 0.98.7
DON'T PANIC! Read http://www.clamav.net/support/faq
nonblock_connect: connect timing out (30 secs)
Can't connect to port 80 of host database.clamav.net (IP: 211.239.150.206)
Trying host database.clamav.net (120.29.176.126)...
nonblock_recv: recv timing out (30 secs)
WARNING: getfile: Download interrupted: Operation now in progress (IP: 120.29.176.126)
WARNING: Can't download main.cvd from database.clamav.net
Trying again in 5 secs...
ClamAV update process started at Fri Aug 21 23:03:32 2015
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.97.6 Recommended version: 0.98.7
DON'T PANIC! Read http://www.clamav.net/support/faq
Downloading main.cvd [100%]
main.cvd updated (version: 55, sigs: 2424225, f-level: 60, builder: neo)
Downloading daily.cvd [100%]
daily.cvd updated (version: 20817, sigs: 1537382, f-level: 63, builder: neo)
Downloading bytecode.cvd [100%]
bytecode.cvd updated (version: 268, sigs: 47, f-level: 63, builder: anvilleg)
Database updated (3961654 signatures) from database.clamav.net (IP: 219.94.128.99)
由於ClamAV不是最新版本,所以有告警信息。可以忽略或升級最新版本。病毒庫需要定期升級,例如我第二天升級病毒庫
[root@LNX17 ~]# /opt/clamav/bin/freshclam
ClamAV update process started at Mon Aug 24 10:10:25 2015
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.97.6 Recommended version: 0.98.7
DON'T PANIC! Read http://www.clamav.net/support/faq
main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
Downloading daily-20818.cdiff [100%]
Downloading daily-20819.cdiff [100%]
Downloading daily-20820.cdiff [100%]
Downloading daily-20821.cdiff [100%]
Downloading daily-20822.cdiff [100%]
Downloading daily-20823.cdiff [100%]
Downloading daily-20824.cdiff [100%]
Downloading daily-20825.cdiff [100%]
Downloading daily-20826.cdiff [100%]
Downloading daily-20827.cdiff [100%]
Downloading daily-20828.cdiff [100%]
Downloading daily-20829.cdiff [100%]
daily.cld updated (version: 20829, sigs: 1541624, f-level: 63, builder: neo)
bytecode.cvd is up to date (version: 268, sigs: 47, f-level: 63, builder: anvilleg)
Database updated (3965896 signatures) from database.clamav.net (IP: 203.178.137.175)
6:ClamAV 使用
可以使用/opt/clamav/bin/clamscan -h查看相應的幫助信息
· 掃描所有用戶的主目錄就使用 clamscan -r /home
· 掃描您計算機上的所有文件並且顯示所有的文件的掃描結果,就使用 clamscan -r /
· 掃描您計算機上的所有文件並且顯示有問題的文件的掃描結果,就使用 clamscan -r --bell -i /
執行下面命令掃描根目錄下面的所有文件。如下所示:56個文件被感染了。基本上都是Linux.Trojan.Agent和Linux.Backdoor.Gates等。
/opt/clamav/bin/clamscan -r --bell -i
手工刪除這些文件。然后重新掃描一下,發現木馬已經被清理完成。但是按照網上資料進一步查找發現木馬啟動程序
[root@LNX17 ~]# cd /etc/init.d/
[root@LNX17 init.d]# ls Db*
DbSecurityMdt DbSecuritySpt
[root@LNX17 init.d]# ls sel*
selinux
[root@LNX17 init.d]# more selinux
#!/bin/bash
/usr/bin/bsd-port/getty
[root@LNX17 init.d]# more DbSecuritySpt
#!/bin/bash
/home/WDPM/Development/WebServer/apache-tomcat-7.0.61/cmys
[root@LNX17 init.d]# more DbSecurityMdt
#!/bin/bash
/root/cmy6
[root@LNX17 init.d]# more DbSecurityMdt
#!/bin/bash
/root/cmy6
[root@LNX17 bin]# ls bsd*
agent.conf cmd.n conf.n getty.lock
[root@LNX17 bin]# cd bsd-port/
[root@GETLNX17 bsd-port]# ls
agent.conf cmd.n conf.n getty.lock
[root@LNX17 bsd-port]# more agent.conf
3341
[root@LNX17 bsd-port]# more getty.lock
1013
[root@LNX17 bsd-port]# cd ..
[root@LNX17 bin]# rm -rf bsd-port
此時在用nethogs監控進程的網絡流量,發現已經沒有異常進程了,應該算是徹底清除了。
關於Linux.Backdoor.Gates,看到一篇介紹資料了相關內容:Linux.BackDoor.Gates.5——又一針對Linux的木馬, 具體內容如下所示:
------------------------------------------------------------------------------------------------------------------------------
某些用戶有一種根深蒂固的觀念,就是目前沒有能夠真正威脅Linux內核操作系統的惡意軟件,然而這種觀念正在面臨越來越多的挑戰。與4月相比,2014年5月Doctor Web公司的技術人員偵測到的Linux惡意軟件數量創下了新紀錄,六月份這些惡意軟件名單中又增加了一系列新的Linux木馬,這一新木馬家族被命名為Linux.BackDoor.Gates。
在這里描述的是惡意軟件家族Linux.BackDoor.Gates中的一個木馬:Linux.BackDoor.Gates.5,此惡意軟件結合了傳統后門程序和DDoS攻擊木馬的功能,用於感染32位Linux版本,根據其特征可以斷定,是與Linux.DnsAmp和Linux.DDoS家族木馬同出於一個病毒編寫者之手。新木馬由兩個功能模塊構成:基本模塊是能夠執行不法分子所發指令的后門程序,第二個模塊在安裝過程中保存到硬盤,用於進行DDoS攻擊。Linux.BackDoor.Gates.5在運行過程中收集並向不法分子轉發受感染電腦的以下信息:
CPU核數(從/proc/cpuinfo讀取)。
CPU速度(從/proc/cpuinfo讀取)。
CPU使用(從/proc/stat讀取)。
Gate'a的 IP(從/proc/net/route讀取)。
Gate'a的MAC地址(從/proc/net/arp讀取)。
網絡接口信息(從/proc/net/dev讀取)。
網絡設備的MAC地址。
內存(使用/proc/meminfo中的MemTotal參數)。
發送和接收的數據量(從/proc/net/dev讀取)。
操作系統名稱和版本(通過調用uname命令)。
啟動后,Linux.BackDoor.Gates.5會檢查其啟動文件夾的路徑,根據檢查得到的結果實現四種行為模式。
如果后門程序的可執行文件的路徑與netstat、lsof、ps工具的路徑不一致,木馬會偽裝成守護程序在系統中啟動,然后進行初始化,在初始化過程中解壓配置文件。配置文件包含木馬運行所必須的各種數據,如管理服務器IP地址和端口、后門程序安裝參數等。
根據配置文件中的g_iGatsIsFx參數值,木馬或主動連接管理服務器,或等待連接:成功安裝后,后門程序會檢測與其連接的站點的IP地址,之后將站點作為命令服務器。
木馬在安裝過程中檢查文件/tmp/moni.lock,如果該文件不為空,則讀取其中的數據(PID進程)並“干掉”該ID進程。然后Linux.BackDoor.Gates.5會檢查系統中是否啟動了DDoS模塊和后門程序自有進程(如果已啟動,這些進程同樣會被“干掉”)。如果配置文件中設置有專門的標志g_iIsService,木馬通過在文件/etc/init.d/中寫入命令行#!/bin/bash\n<path_to_backdoor>將自己設為自啟動,然后Linux.BackDoor.Gates.5創建下列符號鏈接:
ln -s /etc/init.d/DbSecuritySpt /etc/rc1.d/S97DbSecuritySpt
ln -s /etc/init.d/DbSecuritySpt /etc/rc2.d/S97DbSecuritySpt
ln -s /etc/init.d/DbSecuritySpt /etc/rc3.d/S97DbSecuritySpt
ln -s /etc/init.d/DbSecuritySpt /etc/rc4.d/S97DbSecuritySpt
如果在配置文件中設置有標志g_bDoBackdoor,木馬同樣會試圖打開/root/.profile文件,檢查其進程是否有root權限。然后后門程序將自己復制到/usr/bin/bsd-port/getty中並啟動。在安裝的最后階段,Linux.BackDoor.Gates.5在文件夾/usr/bin/再次創建一個副本,命名為配置文件中設置的相應名稱,並取代下列工具:
/bin/netstat
/bin/lsof
/bin/ps
/usr/bin/netstat
/usr/bin/lsof
/usr/bin/ps
/usr/sbin/netstat
/usr/sbin/lsof
/usr/sbin/ps
木馬以此完成安裝,並開始調用基本功能。
執行另外兩種算法時木馬同樣會偽裝成守護進程在被感染電腦啟動,檢查其組件是否通過讀取相應的.lock文件啟動(如果未啟動,則啟動組件),但在保存文件和注冊自啟動時使用不同的名稱。
與命令服務器設置連接后,Linux.BackDoor.Gates.5接收來自服務器的配置數據和僵屍電腦需完成的命令。按照不法分子的指令,木馬能夠實現自動更新,對指定IP地址和端口的遠程站點發起或停止DDoS攻擊,執行配置數據所包含的命令或通過與指定IP地址的遠程站點建立連接來執行其他命令。
另外一種簡單的安裝方法是:
chattr -i /etc/group
chattr -i /etc/passwd
chattr -i /etc/services
chattr -i /etc/gshadow
yum install clamav clamav-milter
service clamav start
freshclam
chattr +i /etc/shadow
chattr +i /etc/gshadow
chattr +i /etc/services
chattr +i /etc/group
chattr +i /etc/passwd
chkconfig --level 3 clamd on
chkconfig --level 3 clamav-milter on
service clamd start
· 掃描所有用戶的主目錄就使用 clamscan -r /home
· 掃描您計算機上的所有文件並且顯示所有的文件的掃描結果,就使用 clamscan -r /
· 掃描您計算機上的所有文件並且顯示有問題的文件的掃描結果,就使用 clamscan -r --bell -i /
執行下面命令掃描根目錄下面的所有文件。如下所示:56個文件被感染了。基本上都是Linux.Trojan.Agent和Linux.Backdoor.Gates等。
/opt/clamav/bin/clamscan -r --bell -i
接下來就上面的就是一樣了