小计下玄机靶场的应急响应第一章的Linux 日志分析挑战思路。
题目问题
1.有多少IP在爆破主机ssh的root帐号,如果有多个使用”,“分割
2.ssh爆破成功登陆的IP是多少,如果有多个使用”,“分割
3.爆破用户名字典是什么?如果有多个使用”,”分割(按照首字母顺序排序)
4.登陆成功的IP共爆破了多少次
5.黑客登陆主机后新建了一个后门用户,用户名是多少?
信息收集
通过lsb_release 命令查询操作系统版本(可以与uname -a
配合使用)
1 | lsb_release -a |
发现是debian
1 | root@ip-10-0-10-2:~# lsb_release -a |
根据题目描述推断发现是查询ssh相关日志
在debian中,ssh登录日志通常保存在/var/log/auth.log
.
我们用grep "sshd:" /var/log/auth.log
来读取文件发现只能读取到我们登录后的数据。
1 | root@ip-10-0-10-2:~# grep "sshd:" /var/log/auth.log |
查看/var/log/
发现
1 | alternatives.log cloud-init-output.log messages |
存在点auth.log.1
,读取为发现题目描述相关联的日志。
问题一-有多少IP在爆破主机ssh的root帐号
在爆破root账号日志会出现Failed password for root from
+ip的字段,我们可以利用文档查找功能手动筛选出来。
同时我们也可以利用linux命令来提取
1 | cat /var/log/auth.log.1 | grep -a "Failed password for root from" | awk '{print $11}' | sort | uniq -c | sort -nr | more |
也同样查询到三个ip
1 | 4 192.168.200.2 |
按照顺序排序flag{192.168.200.2,192.168.200.32,192.168.200.31}
问题二-ssh爆破成功登陆的IP是多少
同理,爆破root账号爆破成功的ip会在日志出现Accepted password for root from
+ip的字段。
所以我们可以用‘’
1 | $ cat /var/log/auth.log.1 | grep -a "Accepted password for root from" | awk '{print $11}' | sort | uniq -c |
得到成功爆破的ip为192.168.200.2
问题三-爆破用户名字典是什么
主要看题目是爆破用户名字典是什么?。题意不是指用的字典的名字是什么?(有个憨憨刚开始就理解错了(lll¬ω¬))即字典里内容有哪些或者用来哪些字段来猜测用户名。
在ssh连接的用户名不存在时会在日志“Failed password for invalid user ”+用户名的记录
于是匹配得到:
1 | $ cat /var/log/auth.log.1 | grep -a "Failed password for invalid " | awk '{print $11}' | sort | uniq -c |
由于 存在“ 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 | cat /var/log/auth.log.1 | grep -a "Failed password for root from" | awk {'if($11=="192.168.200.2")print $11}' | sort | uniq - |
问题五-黑客登陆主机后新建了一个后门用户,用户名是多少
在linux中新建用户/用户组会在日志中留下new user/new group
的痕迹
执行/var/log/auth.log.1 | grep -a "new user"
匹配”new user“
1 | $ cat /var/log/auth.log.1 | grep -a "new user" |
得到两个答案,但联系上文分析只有test2
理由是第一个test2
来自192.168.200.2登录时,同读取/etc/passwd
时发现UID 在0-499
外,且靠后(在linux中越晚建立的用户越靠后,所以后面docker生成的debian
在最后)。并且test2
不想自代服务的用户名。
因此通过对 auth 日志 和/etc/passwd 两个文件审计都指向test2