近半年做了很多应急响应项目,针对黑客入侵。但疲于没有时间来总结一些常用的东西,寄希望用这篇博文分享一些安全工程师在处理应急响应时常见的套路,因为方面众多可能有些杂碎。
个人认为入侵响应的核心无外乎四个字,顺藤摸瓜。我们常常需要找到比较关键的信息后通过一些指令查询或者分析日志,逐步分析黑客的具体步骤。
- 入侵后需要被关注的Linux系统日志
var/log/cron 记录crontab命令是否被正确的执行,一般会被黑客删除
var/log/lastlog 记录登录的用户,可以使用命令lastlog查看,一般会被黑客删除
var/log/secure 记录大多数应用输入的账号与密码,登录成功与否,一般会被黑客删除
var/log/wtmp 记录登录系统成功的账户信息,等同于命令last,一般会被黑客删除
var/log/faillog 记录登录系统不成功的账号信息,一般会被黑客删除
~/.bash_history 至关重要的日志,往往黑客会使用history -c清理相关的日志,然后使用cat ~/.bash_history仍可查看相关的记录
- 入侵后需要关注的web服务器日志
web服务器的种类很多,接触比较多的为apache、tomcat、Nginx为主。无论任何web服务器其实日志需要关注的东西是一致的,即access_log和error_log。一般在确定ip地址后,通过:
find . access_log |grep xargs ip攻击地址
find . access_log| grep xargs 木马文件名
是一种顺藤摸瓜比较好的排查方式,通过access_log和error_log中的数据我们一般能明确以下几件事情:
- 文件是什么时刻上传的,应急响应中确定攻击发生的攻击点十分重要。通过时间点可以有效的查找加密木马,隐蔽的后门等。举例说明:
今天是2016年11月7日,我通过排查发现攻击点发生在11月5日。站在网站上传目录:
find . -name *.php -ctime -1
接一些更为复杂的正则来匹配文件:
find ./ -name “*.php” -type f -print0|xargs -0 egrep “(phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decode|spider_bc)”|awk -F: ‘{print $1}’
具体的-ctime、-atime、-mtime不再赘述。关于+—号问题,引用一下:
-mtime n:n为数字,意思是在n天之前的【一天之内】被更改过内容的文件;
-mtime +n:列出在n天之前(不含n天本身)被更改过内容的文档名;
-mtime -n:列出在n天之内(含n天本身)被更改过内容的文档名;
0为24小时以内
2.攻击的IP地址是多少,当然一般情况是跳板地址TT
3.传了什么文件上来
- 登上服务器就要立刻输入的命令(全是套路,但一般很有用)
ps -ef 查看可疑进程
一般ps -ef能比较清晰的看出反弹shell,引用下:
http://www.waitalone.cn/linux-shell-rebound-under-way.html
top 处理过几次肉鸡服务器,基本上top能很明显的看出占用资源异常的服务
last 登录时间能不能跟运维人员时间对上
crontab -l 查看例行任务,很多后门程序可以通过crontab完成自启。
不过有时候crontab -l并不能解决问题,通常还要做如下操作:
cd /etc/crontab ls
查看有没有提权痕迹:
cat /etc/passwd 极有可能其他用户出现id,组id 0、0的情况
如果系统里有lsof命令那就太好了:
lsof -g gid号 通常能找到恶意文件关联的lib文件
- 一些技巧的的碎碎念
chattr +i 处理过一起病毒自己会改写crontab的,可以用这个命令把crontab锁住 chmod 000 在删除一些病毒文件时候需要先去除执行权限
在写这篇博文的时候,查阅资料,发现find还可以这么用:
find / *.jsp -perm 4777 查找777的权限的文件
因为我发现任何黑客在入侵完Linux在这一步都避免不了这样喜悦的操作:
yum xxxx mkdir hehe chmod 777 *.* cd hehe ./xxxx
- 总结
- 应急响应感觉确定的优先级是时间,ip、最后是恶意文件。尤其时间最为重要,如果连攻击时间都没法确定,感觉真心没有啥好的切入点,至少不能保证你把后门都查杀干净。
- 作为小菜,研读过很多大牛的文章,结合自己做的案例,感觉切入点主要就这么多。但难点是你能否准确判断哪个是正常文件,哪个是恶意文件。以及自己的渗透和黑产知识面是否完备,能准确的猜到黑客干了啥。
- 还有一些东西,比如内核啊,启动顺序的一些问题,最近在总结,有机会补全。