Ywc

应急响应笔记之Linux篇

Word count: 1.8k / Reading time: 8 min
2020/01/21 Share

系统日志

/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:记录邮件信息

访问日志

web服务器的种类很多,比如apache、tomcat、Nginx等。web访问日志需要根据配置获取,大部分在默认存储位置,比如nginx的在/var/log/nginx目录下。

主要关注两个文件,即access_logerror_log,一般在确定了可疑点之后通过find、grep、xargs、awk等组合命令进一步获取日志信息。

进程

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:查看进程关联文件

用户

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:查看是否存在空口令用户

系统命令

查看系统命令是否存在异常,比如文件大小、创建时间、修改时间等,比如:

1
2
3
4
5
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

计划任务

常见计划任务位置:

1
2
3
4
5
6
7
/var/spool/cron/*
/var/spool/anacron/*
/etc/crontab
/etc/anacrontab
/etc/cron.*
/etc/anacrontab
/etc/rc.d/init.d/

开机启动项

1
2
3
ls /etc/rc.d
systemctl list-unit-files
chkconfig --list [service_name]

文件

文件的范围就比较大了,但是无非就是基于文件的创建时间、修改时间、所属组、所属用户、权限、文件大小、文件名称、md5信息、文件内容、suid等。

以查找具有SUID的文件为例

1
2
3
4
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 {} \;

端口

netstat -anltp | grep $PID:查看进程端口情况

lsof -i:5000:查看5000端口的占用情况

netstat -alntp:查看端口

1
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.1 日志如果被软链接到/dev/null
1.删除log
2.重启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数组,并循环杀死所有进程

1
2
3
4
5
6
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 隐藏进程查找:
进程都存在于内存中,而内存中的数据又都是写入到/proc/目录下,基于此可查找隐藏文件

1
2
3
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 查看动态库是否被修改

1
2
echo $LD_PRELOAD
busybox cat /etc/ld.so.preload

也可使用strace、ldd、readefl等命令

10.14 利用iptables阻断通讯

1
2
iptables -A INPUT -s xmr.crypto-pool.fr -j DROP
iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP

10.15 文件监控
创建文件监控规则

1
auditctl -w /etc/passwd -p war -k password_monitor

监听日志

1
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创建子进程后,子进程运行直至其终止,它立即从内存中移除,但进程描述符仍然保留在内存中。

1
ps -e -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9

10.19 扫描是否存在恶意驱动

10.20 黑帽seo关键词匹配

1
2
3
sogou,so.com,google,youdao,yahoo,bing,118114,biso,gougou,ifeng,ivc,sooule,niuhu,biso,360,sm,uc

老虎机、澳门银行、万博亚洲官网、狗万app、新万博官网、ylg9999、九州娱乐、澳门威尼斯人、威尼斯人、大红鹰葡京会、振动盘、澳门银河、永利娱乐场、太阳城集团、金沙娱乐、Bet365、钱柜娱乐、永利娱乐、百家乐、博必发、商务模特、会所推荐、洗浴休闲、找鸡上门、外围女、按摩服务、大保健
CATALOG
  1. 1. 系统日志
  2. 2. 访问日志
  3. 3. 进程
  4. 4. 用户
  5. 5. 系统命令
  6. 6. 计划任务
  7. 7. 开机启动项
  8. 8. 文件
  9. 9. 端口
  10. 10. 一些技巧