第一章 应急响应-Linux日志分析
第一章 应急响应-Linux日志分析
账号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 | more
-
-
命令分析: 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 |more
-
-
-
匹配到一个IP成功登录SSH的,提交注意flag格式
三、爆破用户名字典是什么?
-
第三个 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 将这些用户名按照失败次数从大到小排序
-
四、成功登录 root 用户的 ip 一共爆破了多少次
-
查找刚刚那个成功
-
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"
-
此命令会列出所有包含
new user
的日志行,这些行通常记录了用户创建的详细信息。 -
-