【应急靶场】知攻善防Linux Web2靶场入侵排查
知攻善防Linux Web2靶场入侵排查
前景需要:看监控的时候发现webshell告警,领导让你上机检查你可以救救安服仔吗!!
1,提交攻击者IP
2,提交攻击者修改的管理员密码(明文)
3,提交第一次Webshell的连接URL(http://xxx.xxx.xxx.xx/abcdefg?abcdefg只需要提交abcdefg?abcdefg)
3,提交Webshell连接密码
4,提交数据包的flag1
5,提交攻击者使用的后续上传的木马文件名称
6,提交攻击者隐藏的flag2
7,提交攻击者隐藏的flag3
一、环境配置
靶场来自知攻善防实验室
公众号:回复靶机Linux2
打开即可,靶机的启动界面如下,使用了多种方法无法进入桌面,根据该靶机的文件大小推测,该靶机没有安装图形界面
二、账户安全
检查/etc/passwd
和/etc/shadow
文件:
1 | cat /etc/passwd | grep -v nologin #查看可以登陆的用户 |
并无其他用户,查看下/home
目录
有一个www
用户,这莫不是web用户?存在于/home目录下,属于是普通用户吗?查看www用户的shell环境
该www确实是属于普通用户,但是shell环境属于/sbin/nologin
,不能进行正常登陆
通过who
命令查看下当前该机器登陆的用户有哪些(tty本地登陆 pts远程登录)
只有本地登录的roor 用户
通过last
命令排查最后登陆的时间,发现192.168.20.1
这个可疑IP进行过多次远程登陆
三、历史命令排查
1 | history #查看root历史命令 |
但是这里有点坑,看不到上面的历史记录,是滑动不了的
1 | history | more #通过more进行一页页命令的翻看 |
这里是关闭了防火墙,然后安装了宝塔,去www目录下看了看日志
这里是在wwwroot/127.0.0.1
下面删除了flag1 跟 1,然后删除了pe9.sql
文件,这个应该是数据库的一个sql文件,还执行过docker ps
命令,这台机器还运行着docker ?
这里对网站根路径下的.api
文件夹做了一些粘贴,之后从100行开始,逐渐不对劲起来
在尝试增加一个flag3{5LourqoFt5d2zy0VUoVPJb0meVmoKgcy60Z}
的用户,但是在useradd: invalid user name 'flag3{5LourqoFt5d2zy0VUoVPJb0meVmoKgcy60Z}'
的错误信息来看,应该是没有添加上。之后还对/etc/profile
文件进行了编辑,应该是做了某些配置变量的修改,之后source /etc/profile
重新加载配置变量
这里,root 的密码被进行了更改,并且有一个可疑的wp
文件被执行,后面是我的排查操作
那么针对flag3那个用户有没有创建成功,再看一下/etc/passwd
文件
确实不存在flag3用户,只存在www和mysql 的普通用户
四、端口、进程排查
1 | netstat -antlp | more |
1 | pa -aux #查看进程 |
五、开机启动项排查
1 | /etc/rc.local |
在/etc/profile
文件中发现flag3="flag{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}"
六、定时任务排查
1 | crontab -l |
七、日志排查
1、系统安全日志审计
安全日志文件存放路径:/var/log/secure
,是ssh登陆成功与否的一个安全日志
1 | cat secure | grep "Failed" | awk '{print $11}' | sort | uniq -c | sort -nr #统计IP爆破次数 |
发现IP192.168.20.1
这个IP 通过密码认证进行了三次登陆
2、web日志审计
在之前的排查中知道该机器配置有宝塔,即存在web服务,查看web 日志,路径:/www/wwwlogs/access.log
依然利用more
命令进行查看
但是这样太多太杂不好分析,我们在靶机上利用python2 快速开启一个http服务,将日志文件下载到本地进行分析
1 | systemctl status firewalld |
我们重点分析access.log
文件:
之后用在线日志分析网站进行逐一分析
开头是127.0.0.1的IP访问,时间在3月7日,到49条日志开始,出现了192.168.20.1
这个局域网IP 的操作,开始时间在12:05:16
也是对/phpmyadmin
进行访问,持续到162条日志,但是时间全部在3月7日进行的,最后时间停留在12:30:04
从163条日志开始,时间来到3月20日,IP是本地的127.0.0.1,在phpmyadmin
中对数据库进行了很多的操作,一直持续到日志结尾
这个日志很奇怪,在异常文件排查过程中,ssh公钥文件是在3月20日10:30:24
被修改的,而在日志中192.168.20.1
只在3月7日出现过
使用360星图也未发现有攻击行为,只做了一些简单的流量分析
八、异常文件排查
1、tmp临时文件排查
正常文件,有好多session文件
2、ssh目录排查
root的.ssh
文件夹下存在公钥,其内容在3月20日10:30:24
被修改,其权限在3月22日21:09:44
被修改
3、root家目录排查
发现之前历史命令中排查到的wp 可执行文件,以及存在一个.pcapng
文件,有关这个.pcapng
文件,属于是流量包文件,通过这个文件,我们可以追踪跟该机器交互的流量数据,从而更好的进行排查
4、.api 文件夹排查
之前在历史命令中看到有对.api
文件夹做过手脚,我们看一下
api
文件夹和.api
文件的内容相同,大小也相同,用diff
命令进行比对
1 | diff file1.txt file2.txt |
运气不错,第一个文件就比对出来了差异,找到了隐藏的$flag2 = "flag{bL5Frin6JVwVw7tJBdqXlHCMVpAenXI9In9}";
而其他文件都是一模一样,并无其他隐藏内容
5、wp 文件
在历史命令中,该wp 文件是由go_build_untitled.exe
的一个文件改名而来,go_build 像是由go 语言编译而来
该文件是3月20日15:34:04
的时间被修改,这个时间可能是黑客进行重命名的时间点,那这个文件是干嘛的,尝试执行下
我擦,原来是题解,搞错了搞错了
5、.pcapng文件流量分析
那我们把目光放在这个啥.pcapng 流量包文件上,将该文件利用python2开启一个http服务,传到本地,需要关闭防火墙
1 | systemctl status firewalld |
原来名字是数据包1.pcapng
,那么是否存在其他 .pcapng 文件呢?
1 | find / -name *.pcapng 2>/dev/null |
不存在其他的流量包文件了,我们用Wireshark
工具打开该数据包,成功打开(有关WireShark 的简单使用:【流量分析】流量抓包工具WireShark的基本使用)
在之前的排查过程中,知道192.168.20.1
这个IP出现过,现在看来确定是恶意IP
可以在视图中将时间调整为年月日时间的形式,并进行http
和源IPip.src == 192.168.20.1
的过滤,发现黑客GET访问过flag1
,追踪HTTP流,发现flag1{Network@_2020_Hack}
再一步步进行排查,黑客对index.php
文件进行了多次访问,不点不知道,一点吓一跳
这不是妥妥的webshell管理工具蚁剑
的流量特征,webshell木马的密码是Network2020
,通过HTTP追踪,一步步查看黑客通过蚁剑都做过哪些事
可以看到,在3月20日14:33:35
的时候,pe9.sql
文件依然是存在的,那么我们在历史命令中排查的时候,发现有人通过命令将该文件删除了
在14:37:24
的时候发现新增了shell.php
文件
在14:37:43
的时候发现新增version2.php
文件
这里,是一个PHP冰蝎马的内容,显示默认密码rebeyond
在后续中全部是对version2.php
文件的访问,那么这里,推测version2.php
是冰蝎马
确实是冰蝎马的流量特征,version2.php
确认是后面黑客上传的木马文件,不管是请求包还是相应包都是加密传输
黑客对该文件的访问持续到14:40:32
,感觉这里很迷,因为结合在账户安全中查看的last
命令 ,恶意IP在14:30
和15:04
的时候分别进行过登陆。至于冰蝎流量解密,本人水平有限,尝试解密失败,后面便不在追究,如果哪位师傅解密成功,还望告知,本人感激不尽!
后面没有了一点线索,还是把目光放在了流量包上,看到除了http流量,还存在许多ssh 流量,丢,这思路不就打开了!我说这个靶场怎么奇奇怪怪的,原来这个靶场考察并不是追踪溯源入侵的整个流程,重点在流量这块。
我们知道,在wireshark 中解密ssh 流量需要用到ssh 的私钥,而黑客应该是通过公钥进行的登陆,那么私钥怎么弄?
我们把id_ed25519.pub
移走、留下公钥,用私钥尝试ssh 登陆,成功,说明该私钥可以登陆成功
我们把这个私钥下载下来添加到wireshark
中:在【编辑】—【首选项】—【Protocols】—【ssh】
我了个大豆,这样不行,ssh流量依然是加密状态,咳咳,这里就研究到这里,有师傅能解密的还望告知,本人感激不尽!
九、命令替换排查
1 | echo $PATH |
这里的话,有几个是是存在改变的文件,但是并非后门这种
十、被修改的密码
重新看了一下/etc/shadow
,发现除了www用户还存在mysql 用户,再联想到之前web日志中的phpmyadmin的访问,猜测密码会不会藏在数据库中
在数据库的配置文件lib/config.inc.php
文件中找到数据库的账号密码
这里的话,我们到本地的机器上进行远程连接
连接成功,只存在两个数据库,一路向下就好了,先查看一下x2_user_group
的用户组表,管理员的用户组ID是1
再查看x2_user
表的内容,但是太多了,我们先查看都有哪些字段
1 | select group_concat(column_name) from information_schema.columns where table_name='x2_user'; |
有好多好多,看不过来,换了一个MySQL图形管理来查看
可以看到这个peadmin
用户的usergroupid
值为1,那么该用户大概率是管理员,对他的密码进行解密
成功获得明文密码:Network@2020
十一、通关密码
1 | 1,提交攻击者IP |