整理下自己之前做的应急响应相关的碎片笔记,太多了,没办法全部列出来,先整理一些常用的。
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. 系统命令
查看系统命令是否存在异常,比如文件大小、创建时间、修改时间等,比如:
代码语言:javascript复制ls -alt /bin/ | head -n 10
ls -alt /usr/sbin/ | head -n 10
ls -alt /usr/bin/ | head -n 10
find /etc/ /usr/bin/ /usr/sbin/ /bin/ /usr/local/bin/ /var/spool/cron/ -type f -mtime -3 | xargs ls -al
rpm -Va
:查看系统命令是否被替换
显示S.5…T.
表示是被修改过的,可以选择yum重新还原回去,也可以使用系统命令工具包busybox
6. 计划任务
常见计划任务位置:
代码语言:javascript复制/var/spool/cron/*
/var/spool/anacron/*
/etc/crontab
/etc/anacrontab
/etc/cron.*
/etc/anacrontab
/etc/rc.d/init.d/
7. 开机启动项
代码语言:javascript复制ls /etc/rc.d
systemctl list-unit-files
chkconfig --list [service_name]
8. 文件
文件的范围就比较大了,但是无非就是基于文件的创建时间、修改时间、所属组、所属用户、权限、文件大小、文件名称、md5信息、文件内容、suid等。
以查找具有SUID的文件为例
代码语言:javascript复制find / -perm 4000 -ls
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} ;
9. 端口
netstat -anltp | grep $PID
:查看进程端口情况
lsof -i:5000
:查看5000端口的占用情况
netstat -alntp
:查看端口
netstat -an | grep tcp | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more #查看所有tcp连接
netstat -antlp| grep ESTABLISHED
:查看所有建立连接的详细记录
netstat -antlp | grep LISTEN
:检查监听的端口
netstat -antlp | grep 80 | awk '{print $7}' | cut -d/ -f1
:根据端口列进程
10. 技巧
10.1 日志如果被软链接到/dev/null
1.删除log2.重启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数组,并循环杀死所有进程
代码语言:javascript复制ps -ef|grep "java" | grep -v grep|awk '{print $2}'
kill -9 `ps -ef|grep "java" | grep -v grep|awk '{print $2}'`
for pid in $(ps -ef|grep "java" | grep -v grep|awk '{print $2}'); do
echo $pid
kill -9 $pid
done
10.8 隐藏进程查找:
代码语言:javascript复制进程都存在于内存中,而内存中的数据又都是写入到/proc/目录下,基于此可查找隐藏文件
ps -ef | awk '{print}' | sort -n | uniq >1
ls /proc | sort -n |uniq >2
diff 1 2
另外,针对挖矿命令被劫持的情况下可以使用perf top -s pid,comm,dso,symbol来看到挖矿进程
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 查看动态库是否被修改
代码语言:javascript复制echo $LD_PRELOAD
busybox cat /etc/ld.so.preload
也可使用strace、ldd、readefl等命令
10.14 利用iptables阻断通讯
代码语言:javascript复制iptables -A INPUT -s xmr.crypto-pool.fr -j DROP
iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP
10.15 文件监控
代码语言:javascript复制创建文件监控规则
auditctl -w /etc/passwd -p war -k password_monitor
监听日志
tail -f /var/log/audit/audit.log|grep password_monitor
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关键词匹配
代码语言:javascript复制sogou,so.com,google,youdao,yahoo,bing,118114,biso,gougou,ifeng,ivc,sooule,niuhu,biso,360,sm,uc
老虎机、澳门银行、万博亚洲官网、狗万app、新万博官网、ylg9999、九州娱乐、澳门威尼斯人、威尼斯人、大红鹰葡京会、振动盘、澳门银河、永利娱乐场、太阳城集团、金沙娱乐、Bet365、钱柜娱乐、永利娱乐、百家乐、博必发、商务模特、会所推荐、洗浴休闲、找鸡上门、外围女、按摩服务、大保健