Linux应急响应命令速查
前言
再处理应急响应事件中,很多命令过长而难以记住,遂将相关应急响应命令做一个整合,方便后续应急事件的处理。所有命令来源于网络及各位大佬的收集整理。
挖矿及勒索远控排查
挖矿一般导致CPU或者GPU占用过高,重点排查进程的相关资源占用及网络连接,同时对计划任务和启动项做检查和清理。
0x1 资源占用情况
1.cpu占用
top -c -o %CPU
查看cpu占用前5的进程
ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head -n 5
2.内存占用
top -c -o %MEM
ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%mem | head -n 5
0x2 寻找恶意样本
根据进程名字获取PID
pidof "procee_name"ps -aux | grep "name"pgrep -f "name"
根据PID获取进程详细信息
lsof -p pidpwdx pid//启动恶意程序的文件路径
根据pid查看进程拉起的线程
ps H -T -p pidps -Lf pidpstree -agplU
查看程序运行时间
ps -eo pid,lstart,etime,cmd | grep pid
查看文件相关操作时间
stat filename
文件查找
1 | 文件修改 |
0x3 恶意进程处理
查看进程及子进程
ps ajfx
杀死进程
kill -9 pid
杀死进程及进程组
kill -9 -1134//进程pid前面有个-
查看文件占用
lsof file.sh
文件加锁
- a属性,只能增加内容,无法修改和删除之前的文件
- i属性,无法改变内容及删除文件
chattr -a
chattr -i
0x4 网络连接
netstat -pantu | grep 8.8.8.8
netstat -pantu | grep 80
根据文件找pid
lsof | grep install.sh
lsof /root/start.sh
0x5 计划任务
列出当前用户计划任务
crontab -l
删除计划任务
crontab -r
检查如下目录是否存在恶意脚本
1 | /var/spool/cron/* |
开机启动项
/etc/init.d- /etc/rc.d/*
- /etc/rc.local
- /etc/rc[0-6].d
- /etc/inittab
暴力破解
0x1 SSH
1.查找特殊权限的账号,默认root
awk -F: '{if($3==0) print $1}' /etc/passwd

2.查找可以登陆ssh的账号
1 | s=$( sudo cat /etc/shadow | grep '^[^:]*:[^\*!]' | awk -F: '{print $1}');for i in $s;do cat /etc/passwd | grep -v "/bin/false\|/nologin"| grep $i;done | sort | uniq |awk -F: '{print $1}' |
3.查看相关登陆session
who -awlast -p nowsudo netstat -tnpa | grep 'ESTABLISHED.*sshd'echo $SSH_CONNECTIONss | grep ssh
日志相关
日志位置
Ubuntu
/var/log/auth.logCentos
/var/log/secure
快捷命令
lastb//登陆失败记录lastlog//最后一次登陆last//登陆成功记录查看登陆成功的日志
cat /var/log/auth.log | grep "Accept"

- 查看登陆失败的日志
cat /var/log/auth.log | grep "Failed password for" | more

- 统计暴力破解的用户名
1 | grep "Failed password" /var/log/auth.log|perl -e 'while($_=<>){/for(.*?)from/; print "$1\n";}'|sort|uniq -c|sort -nr |

invaild user说明此用户不存在,但是却出现登陆记录
统计用root爆破的IP
1
cat /var/log/auth.log | grep "Failed password for" | grep "root" | grep -Po '(1\d{2}|2[0 4]\d|25[0-5]|[1-9]\d|[1-9])(\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)){3}' |sort|uniq -c|sort -nr

查询所有登陆失败的IP
1
sudo cat /var/log/auth.log | grep "Failed password for" | cut -d " " -f 9 | sort -nr | uniq|grep -v "invalid"| while read line;do echo [$line];sudo cat /var/log/auth.log | grep "Failed password for" | grep $line | grep -Po '(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])(\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)){3} '|sort|uniq -c |sort -nr; done

登陆成功的日期、用户、IP
1
grep "Accepted " /var/log/auth.log | awk '{print $1,$2,$3,$9,$11}'
查看拥有sudo权限的账号
cat /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
Web日志分析
1 | 1、列出当天访问次数最多的IP命令: |