第一章 应急响应-Linux日志分析

第一章 应急响应-Linux日志分析

账号root密码linuxrz
ssh root@IP
1.有多少IP在爆破主机ssh的root帐号,如果有多个使用","分割
2.ssh爆破成功登陆的IP是多少,如果有多个使用","分割
3.爆破用户名字典是什么?如果有多个使用","分割
4.登陆成功的IP共爆破了多少次
5.黑客登陆主机后新建了一个后门用户,用户名是多少

一、查找爆破 SSH 服务的 IP

  1. 第一个 Flag 的目标是查找爆破 SSH 服务 Root 账户的 IP,故这里我们需要分析 auth 日志,auth 日志常见于 Debian 系(这台靶机就是 Debian)

    • image-20250619140357240

    • image-20250619140651423

    • 此外,Linux 下还有这些日志

    • linux log

  2. 这里 auth 日志有两条,分别是auth.logauth.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
      
    • image-20250619140818638

    • 命令分析:
      
      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地址的尝试次数。
      将结果按尝试次数降序排序,并分页显示。
      
  3. 按照从大到小的顺序排序 Flag,最终 Flag 为192.168.200.2,192.168.200.31,192.168.200.32,提交记得加上 Flag 格式

二、SSH 爆破成功登陆的IP是多少,如果有多个使用","分割

  1. 第二个 Flag 是需要寻找爆破成功的 IP,依然是搜索 auth 日志,当 SSH 登录成功时,会回显Accepted,所以我们在日志文件中匹配这个关键词

    • cat auth.log.1 auth.log| grep -a "Accepted" |awk '{print$11}' | sort | uniq -c | sort -nr |more
      
    • image-20250619141417424

  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
      将这些用户名按照失败次数从大到小排序
      

四、成功登录 root 用户的 ip 一共爆破了多少次

  1. 查找刚刚那个成功

    •  cat auth.log.1 | grep -a "Failed password for root" | awk '{print $11}' | sort | uniq -c | sort -nr | more
      
    • image-20250619153447792

五、黑客登陆主机后新建了一个后门用户,用户名是多少

  1. 继续对 auth 日志进行审计,查找创建新用户的行为

    • 使用 grep 命令搜索与创建用户相关的关键字,如 new user。这样可以找到所有新建用户的日志条目。

    • cat /var/log/auth.log.1 /var/log/auth.log | grep -a "new user"
      
    • 此命令会列出所有包含 new user 的日志行,这些行通常记录了用户创建的详细信息。

    • image-20250619153811705

posted @ 2025-08-06 10:39  0xMouise  阅读(90)  评论(0)    收藏  举报