第一章-应急响应-Linux 日志分析-玄机靶场

  |  

小计下玄机靶场的应急响应第一章的Linux 日志分析挑战思路。

题目问题

1.有多少IP在爆破主机ssh的root帐号,如果有多个使用”,“分割
2.ssh爆破成功登陆的IP是多少,如果有多个使用”,“分割
3.爆破用户名字典是什么?如果有多个使用”,”分割(按照首字母顺序排序)
4.登陆成功的IP共爆破了多少次
5.黑客登陆主机后新建了一个后门用户,用户名是多少?

信息收集

通过lsb_release 命令查询操作系统版本(可以与uname -a配合使用)

1
lsb_release -a

发现是debian

1
2
3
4
5
6
root@ip-10-0-10-2:~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster

根据题目描述推断发现是查询ssh相关日志

img

在debian中,ssh登录日志通常保存在/var/log/auth.log .

我们用grep "sshd:" /var/log/auth.log来读取文件发现只能读取到我们登录后的数据。

1
2
3
4
5
6
root@ip-10-0-10-2:~# grep "sshd:" /var/log/auth.log
Jun 15 01:35:19 ip-10-0-10-2 sshd[613]: pam_unix(sshd:session): session opened for user root by (uid=0)
root@ip-10-0-10-2:~# sudo grep "sshd:" /var/log/auth.log
Jun 15 01:35:19 ip-10-0-10-2 sshd[613]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jun 15 01:44:42 ip-10-0-10-2 sudo: root : TTY=pts/0 ; PWD=/root ; USER=root ; COMMAND=/usr/bin/grep sshd: /var/log/auth.log
root@ip-10-0-10-2:~# grep "Accepted" /var/log/auth.log

查看/var/log/发现

1
2
3
4
5
6
7
8
9
10
alternatives.log                   cloud-init-output.log              messages
alternatives.log.1 daemon.log messages.1
amazon/ daemon.log.1 ntpstats/
apt/ debug private/
auth.log debug.1 syslog
auth.log.1 dpkg.log syslog.1
aws114_ssm_agent_installation.log dpkg.log.1 user.log
bootstrap.log faillog user.log.1
btmp kern.log wtmp
btmp.1 kern.lo

存在点auth.log.1,读取为发现题目描述相关联的日志。

image-20240615131233938

问题一-有多少IP在爆破主机ssh的root帐号

在爆破root账号日志会出现Failed password for root from+ip的字段,我们可以利用文档查找功能手动筛选出来。

image-20240615131709559

同时我们也可以利用linux命令来提取

1
2
3
4
5
6
7
8
9
cat /var/log/auth.log.1 | grep -a "Failed password for root from" | awk '{print $11}' | sort | uniq -c | sort -nr | more

cat /var/log/auth.log.1 显示文件内容。
grep -a "Failed password for root" 在文件中搜索所有包含 "Failed password for root" 的行。
awk '{print $11}' 提取每行的第 11 个字段,即 IP 地址。
sort 对提取出来的 IP 地址进行排序。
uniq -c 统计每个 IP 地址出现的次数,并将其前缀显示到每行的开头。
sort -nr 对 IP 地址出现次数进行逆序排序。(如果输入的文本为: 5 2 8 7 那么使用 sort -nr 命令后的输出将会是: 8 7 5 2)
more 分屏显示结果,便于查看。

也同样查询到三个ip

1
2
3
4 192.168.200.2
1 192.168.200.32
1 192.168.200.31

按照顺序排序flag{192.168.200.2,192.168.200.32,192.168.200.31}

问题二-ssh爆破成功登陆的IP是多少

同理,爆破root账号爆破成功的ip会在日志出现Accepted password for root from+ip的字段。

image-20240615214834478

所以我们可以用‘’

1
2
$ cat /var/log/auth.log.1 | grep -a "Accepted password for root from" | awk '{print $11}' | sort | uniq -c
2 192.168.200.2

得到成功爆破的ip为192.168.200.2

问题三-爆破用户名字典是什么

主要看题目是爆破用户名字典是什么?。题意不是指用的字典的名字是什么?(有个憨憨刚开始就理解错了(lll¬ω¬))即字典里内容有哪些或者用来哪些字段来猜测用户名。

在ssh连接的用户名不存在时会在日志“Failed password for invalid user ”+用户名的记录

image-20240615224907174

于是匹配得到:

1
2
3
4
5
6
7
$ cat /var/log/auth.log.1 | grep -a "Failed password for invalid " | awk '{print $11}' | sort | uniq -c
5 from
5 hello
1 test1
1 test2
1 test3
5 user

由于 存在“ Failed password for invalid user from” 出现form其实为” “(但flag没有包含这个),同时“root“登录时提示”Failed password for root “要各外添加。

所以答案为:flag{user,hello,root,test3,test2,test1}(按照首字母顺序排序又是个坑555)

后续交流中得知,寻找SSH 尝试登录过哪些用户名,可以用perl命令接受了grep的查询结果,之后匹配 “for” 和 “from” 之间的任何字符(用户名)(学到了,学到了)

1
cat/var/log/auth.log.1/var/log/auth.log|grep-a"Failedpassword"|perl-e'while($_=<>){/for(.*?)from/;print"$1\n";}'|uniq-c|sort-nr

问题四-登陆成功的IP共爆破了多少次

这个问题就是在问”192.168.200.2“这个ip爆破了几次,(这里有个憨憨又理解错了,认为登录成功算是最后一个爆破结果只算失败次数,然后怀疑人生半天┭┮﹏┭┮)

1
2
3
4
cat /var/log/auth.log.1 | grep -a "Failed password for root from" | awk {'if($11=="192.168.200.2")print $11}' | sort | uniq -
c | sort -nr | more
4 192.168.200.2
4 192.168.200.2

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

在linux中新建用户/用户组会在日志中留下new user/new group的痕迹

image-20240615234654425

执行/var/log/auth.log.1 | grep -a "new user"匹配”new user“

1
2
3
$ cat /var/log/auth.log.1 | grep -a "new user"
Aug 1 07:50:45 linux-rz useradd[7551]: new user: name=test2, UID=1000, GID=1000, home=/home/test2, shell=/bin/sh
Aug 1 08:18:27 ip-172-31-37-190 useradd[487]: new user: name=debian, UID=1001, GID=1001, home=/home/debian, shell=/bin/bash

得到两个答案,但联系上文分析只有test2

image-20240615235630114

理由是第一个test2来自192.168.200.2登录时,同读取/etc/passwd时发现UID 在0-499外,且靠后(在linux中越晚建立的用户越靠后,所以后面docker生成的debian在最后)。并且test2不想自代服务的用户名。

image-20240615235709056

因此通过对 auth 日志 和/etc/passwd 两个文件审计都指向test2

文章目录
  1. 题目问题
  2. 信息收集
  3. 问题一-有多少IP在爆破主机ssh的root帐号
  4. 问题二-ssh爆破成功登陆的IP是多少
  5. 问题三-爆破用户名字典是什么
  6. 问题四-登陆成功的IP共爆破了多少次
  7. 问题五-黑客登陆主机后新建了一个后门用户,用户名是多少
|