linux 应急响应工具整理列表
文件
ls 列举文件
-a 显示所有档案及目录(ls默认将文件或者目录名称为“.”的视为隐藏文件或目录,不会列出);
-l 以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;
-t 用文件和目录的更改时间排序;
file 查看文件类型 file /etc/init.d/network
stat 查看文件时间 stat /etc/init.d/network
md5sum 文件名
sha* 文件名
lsof abc.txt 显示开启文件abc.txt的进程
lsof 目录名 查找谁在使用文件目录系统
lsof +D /tmp 某个目录下被打开的文件
du -h --max-depth=2 /home # 判断文件夹下总大小
进程
ps -aux 查看进程信息
ps -ef 可以查看父进程
ls -alt /proc/pid, exe -> XXX 对应的即为文件位置
top 查看进程信息,挖矿木马 应该很容易识别出来
pstree -ps 32638 # 查看父进程
查看隐藏进程 ?
ps -ef | awk '{print $2}' | sort -n | uniq >1
ls /proc | sort -n |uniq >2
diff 1 2
strace -f -p pid # 跟踪进程行为
lsof -c abc 显示abc进程现在打开的文件
lsof -p 12 看进程号为12的进程打开了哪些文件
lsof -p 123,456,789 列出多个进程号对应的文件信息
lsof -p ^1 列出除了某个进程号,其他进程号所打开的文件信息
lsof -i -R -R 显示父进程id lsof -F? #显示字段说明信息
网络
netstat -antlp | more
-a 显示所有连线中的Socket。
-n 直接使用IP地址,而不通过域名服务器。
-t 显示TCP传输协议的连线状况。
-u 显示UDP传输协议的连线状况。
-v 显示指令执行过程。
-p 显示正在使用Socket的程序识别码和程序名称。
-s 显示网络工作信息统计表。
netstat -anltpe 查看网络链接情况
netstat -anltpe | grep -v "127.0.0.1" 过滤掉 127的ip,
netstat -anltpe | grep -v "127.0.0.1" | grep "LISTEN" 只显示本地监听的端口
netstat -anltpe | grep -v "127.0.0.1" | grep "ESTABLISHED" 只显示已经建立链接
netstat -anltpe | grep -v "127.0.0.1" | grep “SYN_SENT” 我们正在扫描别人的机器
netstat -anltpe | awk -F' ' '{print $5}' | grep -vE "0.0.0.0|:::|127.0.0.1" 打印所有外网链接的IP
netstat -anltpe | awk -F' ' '{print $5, $6}' | grep -vE "0.0.0.0|:::|127.0.0.1" 打印所有外网链接的IP和状态
netstat -anltpe | awk -F' ' '$3 >0{print $5, $6, $7}' | grep -vE "0.0.0.0|:::|127.0.0.1" 正在发送数据包
netstat -anltpec | awk -F' ' '$3 >0|| $2>0{print $0}' 持续查看当前有流量的请求信息
输出说明: Send-Q 本机已经发送,对方未进行确认的数据,比如本机进行端口扫描时,该值比较明显
lsof -i:22 通过端口号找进程
lsof -i 列出所有的网络连接
lsof -i @192.168.1.111 查看远程已打开的网络连接(连接到192.168.1.111)
lsof -i tcp 列出所有tcp 网络连接信息
lsof -i udp 列出所有udp网络连接信息
lsof -i udp:55 列出谁在使用某个特定的udp端口
lsof -i @peida.linux:20,21,22,25 -r 3 列出目前连接主机 peida.linux 上端口为:20,21,22,25 相关的所有文件信息,且每隔 3 秒不断地执行 lsof 指令
账号
last | more 最后登录成功日志
lastlog 最后一次登录
lastb 登录失败记录
w/who/users 目前登录用户信息
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more 有多少IP在爆破root
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more ssh登录成功的ip
awk -F: '{if($3==0)print $1}' /etc/passwd # 查看root权限账号
cat /etc/passwd | grep -v nologin # 查看账号
awk -F: '{a[$3]++}END{for(i in a)if(a[i]>1)print i}' /etc/passwd # 检查UID相同的用户,防止克隆用户
lsof -u username 查看某用户打开哪些文件
lsof -u ^root 列出除了某个用户外的被打开的文件信息
后门
rootkit 检测 www.chkrootkit.org
webshell 查杀 find /var/www/ -name "*.php" |xargs egrep 'assert|phpspy|c99sh|milw0rm|eval|\(gunerpress|\(base64_decoolcode|spider_bc|shell_exec|passthru|\(\$\_\POST\[|eval \(str_rot13|\.chr\(|\$\{\"\_P|eval\(\$\_R|file_put_contents\(\.\*\$\_|base64_decode'
webshell 河马查杀 shellpub.com
ls -alt /etc/init.d/
history | head -n 10 # 查看前十个命令 等价于 head -n 10 /root/.bash_history
cat /etc/passwd | grep -v nologin # 查看账号
find ./ -mtime 0 -name "*.php"(查找24小时内被修改的php文件)
find / -ctime 2(查找72小时内新增的文件)
find /var/webroot -name "*.php" |xargs grep 'eval|shell_exec|system|pasthru' |more
find / *.jsp -perm 777 # 查询特殊权限的 jsp文件
chkconfig --list # 开机自启动服务
more ~/.bashrc # 检查shell的配置文件.bashrc和.bash_profile等文件是否有恶意的alias问题
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取
.~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
strings /usr/bin/.sshd | grep '[1-9]{1,3}.[1-9]{1,3}.' # 二进制文件中查找ip
crontab
-u 指定一个用户
-l 列出某个用户的任务计划
-r 删除某个用户的任务
-e 编辑某个用户的任务
crontab -l -u user(-u可指定用户)
busybox防止系统文件被替换了
cd /bin/
wget https://busybox.net/downloads/binaries/1.30.0-i686/busybox
chmod 755 busybox
参考文献
GB/T 24363-2009 信息安全技术 信息安全应急响应计划规范
GB/T 28827.3-2012 信息技术服务 运行维护 第3部分:应急响应规范
GB/Z 20986-2007 信息安全技术 信息安全事件分类分级指南
微软sysinternals工具库
lsof命令介绍
yara基于规则分析程序 开源
apimonitor
processhacker
国家网络安全事件应急预案
奇安信 2020年网络安全应急响应分析报告 2021
上海市网络安全事件应急预案 2019
应急响应笔记非常优秀
溯源和反制总结
各种日志分析