第一章 应急响应-Linux日志分析
第一章 应急响应-Linux日志分析
1
2
3
4
5
6
7 账号root密码linuxrz
ssh root@IP
1.有多少IP在爆破主机ssh的root帐号,如果有多个使用","分割
2.ssh爆破成功登陆的IP是多少,如果有多个使用","分割
3.爆破用户名字典是什么?如果有多个使用","分割
4.登陆成功的IP共爆破了多少次
5.黑客登陆主机后新建了一个后门用户,用户名是多少
一、查找爆破 SSH 服务的 IP
第一个 Flag 的目标是查找爆破 SSH 服务 Root 账户的 IP,故这里我们需要分析 auth 日志,auth 日志常见于 Debian 系(这台靶机就是 Debian)


此外,Linux 下还有这些日志

这里 auth 日志有两条,分别是
auth.log和auth.log.1,我们的判断基础是这两个文件,其次这里我们需要判断出哪些爆破的是 Root 账号,所以需要搜索 “Failed password for root”cat auth.log.1 | grep -a "Failed password for root" | awk '{print $11}' | sort | uniq -c | sort -nr | more1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
* 
* ```
命令分析:
cat auth.log.1:
cat 命令用于显示 auth.log.1 文件的内容。
这里 auth.log.1 是一个日志文件,通常是系统日志的备份文件。
|:
管道符号,用于将前一个命令的输出作为下一个命令的输入。
grep -a "Failed password for root":
grep 命令用于在输入中搜索包含特定模式的行。
-a 选项表示将文件内容视为文本文件(此选项通常在处理二进制文件时使用,但对于纯文本文件,可以省略)。
"Failed password for root" 是搜索模式,即查找所有包含"Failed password for root"的行,这些行表示尝试登录root用户的失败尝试。
awk '{print $11}':
awk 是一个文本处理工具,用于按字段处理文本。
{print $11} 表示打印每行的第11个字段。假设日志格式为标准格式,第11个字段通常是IP地址。
sort:
sort 命令用于对输入行进行排序。
这里是对提取的IP地址进行排序。
uniq -c:
uniq 命令用于删除重复的行。
-c 选项表示对每个唯一的行计数,即统计每个IP地址的出现次数。
sort -nr:
sort 命令再次用于排序。
-n 选项表示按数值进行排序。
-r 选项表示按降序排序。
组合起来,即按出现次数从高到低排序。
more:
more 命令用于分页显示输出。
由于输出可能很长,more 命令允许用户逐页查看结果。
总结
这条命令的具体功能如下:
从 auth.log.1 文件中筛选出所有尝试登录root用户失败的条目。
提取这些条目中的IP地址(假设IP地址是日志行中的第11个字段)。
对IP地址进行排序和去重,并统计每个IP地址的尝试次数。
将结果按尝试次数降序排序,并分页显示。
按照从大到小的顺序排序 Flag,最终 Flag 为
192.168.200.2,192.168.200.31,192.168.200.32,提交记得加上 Flag 格式
二、SSH 爆破成功登陆的IP是多少,如果有多个使用”,”分割
第二个 Flag 是需要寻找爆破成功的 IP,依然是搜索 auth 日志,当 SSH 登录成功时,会回显
Accepted,所以我们在日志文件中匹配这个关键词cat auth.log.1 auth.log| grep -a "Accepted" |awk '{print$11}' | sort | uniq -c | sort -nr |more1
2
3
4
5
6
7
8
9
10
11
12
13
* 
2. 匹配到一个IP成功登录SSH的,提交注意flag格式
#### **三、爆破用户名字典是什么?**
1. 第三个 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 "$1\n"; }' | uniq -c | sort -nr命令作用逐段分析: 1️⃣ cat /var/log/auth.log.1 /var/log/auth.log 合并当前和历史的 SSH 登录日志文件 通常 /var/log/auth.log 记录的是 SSH 登录/失败/验证信息 .1 是上一个轮转的旧日志 2️⃣ grep -a "Failed password" 过滤出登录失败的日志行 如: nginx 复制 编辑 Failed password for root from 192.168.1.100 port 3456 ssh2 3️⃣ perl -e 'while($_=<>){ /for (.*?) from/; print "$1\n"; }' 用 Perl 正则提取出尝试登录失败的 用户名 正则 /for (.*?) from/ 匹配: for root from 1.2.3.4 → 捕获 root 输出所有用户名(每个一行) 4️⃣ uniq -c 统计每个用户名出现的次数 例如: bash 复制 编辑 15 root 3 admin 2 test 5️⃣ sort -nr 将这些用户名按照失败次数从大到小排序1
2
3
4
5
6
7
8
9
#### **四、成功登录 root 用户的 ip 一共爆破了多少次**
1. 查找刚刚那个成功
* ```
cat auth.log.1 | grep -a "Failed password for root" | awk '{print $11}' | sort | uniq -c | sort -nr | more
五、黑客登陆主机后新建了一个后门用户,用户名是多少
继续对 auth 日志进行审计,查找创建新用户的行为
使用
grep命令搜索与创建用户相关的关键字,如new user。这样可以找到所有新建用户的日志条目。cat /var/log/auth.log.1 /var/log/auth.log | grep -a "new user"
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 0xMouise!






