首先切换到日志目录/var/log
,列出所有日志文件
查找爆破 SSH 服务的 IP
第一个 Flag 的目标是查找爆破 SSH 服务 Root 账户的 IP,故这里我们需要分析 auth 日志,auth 日志常见于 Debian 系(这台靶机就是 Debian)
此外,Linux 下还有这些日志
这里 auth 日志有两条,分别是auth.log
和auth.log.1
,我们的判断基础是这两个文件,其次这里我们需要判断出哪些爆破的是 Root 账号,所以需要搜索 "Failed password for root"
cat /var/log/auth.log.1 /var/log/auth.log | grep -a "Failed password for root" | awk '{print $11}' | sort | uniq -c | sort -nr | more
按照从大到小的顺序排序 Flag,最终 Flag 为192.168.200.2,192.168.200.31,192.168.200.32
,提交记得加上 Flag 格式
查找爆破成功的 IP
第二个 Flag 是需要寻找爆破成功的 IP,依然是搜索 auth 日志,当 SSH 登录成功时,会回显Accepted
,所以我们在日志文件中匹配这个关键词
cat /var/log/auth.log.1 /var/log/auth.log | grep -a "Accepted " | awk '{print $11}' | sort | uniq -c | sort -nr | more
匹配到两个 IP 成功登录 SSH,下面这个打码的是我登录 SSH 的 IP,与靶机无关,所以 Flag 为192.168.200.2
查找用户名字典
第三个 Flag 要求我们找到爆破时使用的用户名字典,也就是说找到 SSH 尝试登录过哪些用户名,perl
命令接受了grep
的查询结果,之后匹配 “for” 和 “from” 之间的任何字符(用户名),最终 Flag 拼接后为user,hello,root,test3,test2,test1
cat /var/log/auth.log.1 /var/log/auth.log | grep -a "Failed password" | perl -e 'while($_=<>){ /for(.*?) from/; print "$1n";}'| uniq -c | sort -nr
查找爆破次数
第四个 Flag 要求找到成功登录 root 用户的 ip 一共爆破了多少次,也就是问192.168.200.2
爆破了多少次,其实这个答案在做第一个 Flag 的时候就已经知道了,是四次
或者我们可以在awk
命令中限制条件为192.168.200.2
,这样输出的就都是它的结果了
cat /var/log/auth.log.1 /var/log/auth.log | grep -a "Failed password" | awk '{if($11=="192.168.200.2") print $11}'|sort|uniq -c
查找后门用户
第五个 Flag 解法比较灵活,我个人推荐的有两种:
-
继续对 auth 日志进行审计,查找创建新用户的行为 -
对 /etc/passwd
文件进行审计,查找可疑的用户组
auth 日志审计
搜索 ”new user“ 关键词,查到用户名为test2
cat /var/log/auth.log.1 /var/log/auth.log |grep -a "new user"
passwd 文件审计
/etc/passwd
文件包含了 Linux 系统上所有用户账户的信息,这里这所以能排查出test2
是可疑文件,原因有三点
-
用户名不是系统自带的 -
UID 在 0-499
外 -
在 /etc/passwd
文件中排序靠后
原文始发于微信公众号(天禧信安):【玄机】第一章-应急响应-Linux 日志分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论