整理下自己之前做的应急响应相关的碎片笔记,太多了,没办法全部列出来,先整理一些常用的。
1. 系统日志
/var/log/cron
:crontab命令日志
/var/log/lastlog
:登录用户日志
/var/log/secure
:记录登录成功与否(有次在这个文件里面找到了一些关键性的web访问日志。。。)
/var/log/wtmp
:记录登录系统成功的账户信息,等同于last
/var/log/utmp
:查看当前登录系统的情况,等同于who
/var/log/faillog
:记录登录系统不成功的账号信息
history
:查看所有历史命令记录
~/.bash_history
:黑客可能会使用history -c清除日志,使用cat ~/.bash_history
仍可查看相关的记录
/var/log/cups
:记录打印信息的日志
/var/log/dmesg
:记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/mailog
:记录邮件信息
2. 访问日志
web服务器的种类很多,比如apache、tomcat、Nginx等。web访问日志需要根据配置获取,大部分在默认存储位置,比如nginx的在/var/log/nginx
目录下。
主要关注两个文件,即access_log
和error_log
,一般在确定了可疑点之后通过find、grep、xargs、awk等组合命令进一步获取日志信息。
3. 进程
ps -ef
:查看可疑进程
top -c
:查看资源占有情况,并显示文件路径
lsof -g $GID
:通常能找到恶意文件进程关联的lib文件
lsof -p $PID
:查看进程详细信息
netstat -anltp | grep $PID
:查看进程端口情况
ls -la /proc/$PID/exe
:查看进程可执行文件
strace -tt -T -e trace=all -p $PID
:跟踪异常进程运行情况
lsof -c $PID
:查看进程关联文件
4. 用户
Linux所有用户都会在/etc/passwd
、/etc/shadow
、/etc/group
文件中记录
cat /etc/passwd
:查看是否有其他uid,gid为0的情况
less /etc/passwd
:查看是否有新增用户
grep :0 /etc/passwd
:查看是否有特权用户
ls -l /etc/passwd
:查看passwd最后修改时间
awk -F: 'length($2)==0 {print $1}' /etc/shadow
:查看是否存在空口令用户
5. 系统命令
查看系统命令是否存在异常,比如文件大小、创建时间、修改时间等,比如:
|
|
rpm -Va
:查看系统命令是否被替换
显示S.5…T.
表示是被修改过的,可以选择yum重新还原回去,也可以使用系统命令工具包busybox
6. 计划任务
常见计划任务位置:
|
|
7. 开机启动项
|
|
8. 文件
文件的范围就比较大了,但是无非就是基于文件的创建时间、修改时间、所属组、所属用户、权限、文件大小、文件名称、md5信息、文件内容、suid等。
以查找具有SUID的文件为例
|
|
9. 端口
netstat -anltp | grep $PID
:查看进程端口情况
lsof -i:5000
:查看5000端口的占用情况
netstat -alntp
:查看端口
|
|
netstat -antlp| grep ESTABLISHED
:查看所有建立连接的详细记录
netstat -antlp | grep LISTEN
:检查监听的端口
netstat -antlp | grep 80 | awk '{print $7}' | cut -d/ -f1
:根据端口列进程
10. 技巧
10.1 日志如果被软链接到/dev/null
- 删除log
- 重启rsyslog
10.2 如果文件/目录无法删除,可使用lsattr查看文件/目录属性,如果有-i
属性可使用chattr -i
去除
10.3 查找777的权限的文件:find / *.php -perm 777
,因为大部分黑客普遍喜欢直接赋于文件/目录777的权限
10.4 搜集SSH爆破字典:grep "Failed password" /var/log/secure | awk {'print $9'} | sort | uniq -c | sort -nr
10.5 查看恶意文件里面的IP:strings /usr/bin/.sshd | egrep '[1-9]{1,3}\.[1-9]{1,3}\.'
10.6 根据特征删除指定进程:ps aux|grep -v grep|grep "mysqlc"|awk '{print $2}'|xargs kill -9
10.7 获取进程id数组,并循环杀死所有进程
|
|
10.8 隐藏进程查找:
|
|
10.9 SEO文件搜索:grep -ri baiduspider web_root_master
10.10 netstat被替换,可使用ss、lsof来替换
10.11 arp -a
:查看arp记录是否正常
10.12 关注Content-Length值:awk '{if($10>5000000){print $0}}' /var/log/httpd/access_log
10.13 查看动态库是否被修改
|
|
10.14 利用iptables阻断通讯
|
|
10.15 文件监控
|
|
10.16 网页挖矿多数都是加载conhive.min.js
,script标签里有miner.start
关键字,全局查找即可
10.17 检查SSH后门
- 对比ssh版本:
ssh -V
- 查看ssh配置文件和
/usr/sbin/sshd
的时间:stat /usr/sbin/sshd
- strings检查
/usr/sbin/sshd
,看是否有邮箱、IP等信息:strings /usr/bin/.sshd | egrep '[1-9]{1,3}\.[1-9]{1,3}\.'
- 通过strace监控sshd进程读写文件的操作,一般的sshd后门都会将账户密码记录到文件,可以通过strace进程跟踪到ssh登录密码文件。
10.18 清除僵尸进程
父进程调用fork创建子进程后,子进程运行直至其终止,它立即从内存中移除,但进程描述符仍然保留在内存中。
ps -e -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9
10.19 扫描是否存在恶意驱动
10.20 黑帽seo关键词匹配
|
|