知攻善防实验室8个应急响应靶机 WriteUp

知攻善防实验室8个应急响应靶机 WriteUp
lololowe1. 靶场下载
官方微信订阅号合集:https://mp.weixin.qq.com/s/7PZGTD0GXaJLYZ62k9GB4w
夸克云盘:https://pan.quark.cn/s/43a4cba5ae84
不想开夸克会员的也可以用我上传的天翼云盘下载:https://cloud.189.cn/web/share?code=yURJZbZzq6Fv(访问码:5s3m)
注意:
天翼云盘新注册用户只有30GB免费空间,而8个靶机大小有40多个GB,因此请不要一次行全保存到自己的云盘(分享的文件必须保存到自己云盘才能下载),而是先保存一半并下载,下载完成后再删除云盘中的靶机,然后再保存剩余的靶机并下载,以此类推,直到所有靶机都下载完成。
靶机解压后约占160GB空间,建议预留足够空间给靶机。
2. Linux靶机
2.1. Linux应急响应1
靶机用户名密码:defend/defend ; root/defend
题目和题解:
小王急匆匆地找到小张,小王说: 张哥,我dev服务器被黑了,快救救我!!
2.1.1. 黑客的IP地址
审查/var/log
目录,发现存在redis的日志文件:/var/log/redis/redis.log
尝试过滤成功连接redis的IP地址:
1 | grep -n Accepted /var/log/redis/redis.log |
拿到黑客的IP地址:192.168.75.129
2.1.2. 遗留下的三个flag
直接在常见目录下搜索flag(面向出题者解题了属于是):
1 | grep -inr flag{ /etc/ |
拿到3个flag:flag{kfcvme50}、flag{P@ssW0rd_redis}、flag{thisismybaby}
提交flag:
2.2. Linux应急响应2
靶机用户名密码:root/Inch@957821.
官方提供的靶机用户名和密码无效,建议进恢复模式重置密码:https://www.linuxidc.com/Linux/2014-10/107689.htm
题目和题解:
前景需要:看监控的时候发现webshell告警,领导让你上机检查你可以救救安服仔吗!!
2.2.1. 攻击者IP
浏览/var/log
目录没有发现常见的中间件日志:
但是在根目录发现存在一个www
目录,说明系统安装了宝塔面板(bt默认安装在/www/
下),尝试使用bt
命令修改宝塔面板密码:
成功登录宝塔面板:
查看网站日志,使用“日志安全分析”功能,统计top IP:
拿到攻击者的IP:192.168.20.1
这道题其实也可以直接使用命令行过滤宝塔日志目录/www/wwwlogs/
下的所有日志文件,拿到攻击者的IP:
1 | cat /www/wwwlogs/*.log | awk '{print $1}' | sort | uniq -c |
2.2.2. 攻击者修改的管理员密码(明文)
进入宝塔的站点配置页,将靶机IP添加进域名列表,使站点能被访问:
由于不知道站点的用户名及密码,因此需要进后端数据库查看网站的用户名和密码。
在宝塔的数据库菜单中获取到kaoshi数据库的连接信息:
命令行连接数据库:
1 | mysql -ukaoshi -p5Sx8mK5ieyLPb84m |
切换到kaoshi
数据库:
1 | show databases; |
查看和user
相关的表:
1 | show tables like '%user%'; |
第二个表x2_user
应该存储了网站的所有用户及密码,尝试打印表:
1 | select * from x2_user; |
输出格式特别乱,可以使用\G
让结果垂直显示:select * from x2_user\G;
或者只打印用户名和密码字段。首先查看表结构:
1 | desc x2_user; |
可以看到用户名和密码字段分别是username
和userpassword
,因此可以只打印这两个字段:
1 | select username,userpassword from x2_user; |
可以看到存在一个名为peadmin
的用户,但密码不是明文,需要解密,可以直接将密文复制到搜索引擎中搜索,或者使用专门的hash解密网站还原:
https://www.tool.cab/decrypt/md5.html
明文是:Network@2020
2.2.3. 第一次Webshell的连接URL
直接在宝塔目录下搜索webshell:
1 | grep -irn '@eval(' /www |
可以看到文件路径中的关键字content/tpls/master/blocks_modify.html
,正好和后台页面中的“内容”板块下的“标签管理”功能对应:
打开“标签管理”功能中id为1的标签,可以看到标签内容中存在一个webshell:
该标签对应的位置是“注册页面”,因此“注册页面”的url就是webshell的url,即http://10.0.6.150/index.php?user-app-register
:
2.2.4. Webshell连接密码
上一题已经得到了webshell的连接密码,即Network2020
。
也可以尝试用中国蚁剑连接webshell:
2.2.5. 数据包的flag1
数据包位于/root目录,使用scp命令将其下载到本地:
使用Wireshark分析,首先过滤http的get请求:
看到请求了/flag1
,尝试追踪TCP流获取该请求的响应:
得到flag1:flag1{Network@_2020_Hack}
2.2.6. 攻击者使用的后续上传的木马文件名称
过滤post请求,可以发现只请求过2个文件,分别是index.php和version2.php:
将这两个文件依次交给打分程序,发现只有version2.php能通过,因此攻击者上传的木马文件名称是version2.php。
实际上index.php的post请求通过追踪流可以还原请求体为明文,明文特征又是中国蚁剑,后续应该是通过蚁剑写入了新的webshell文件version2.php,然后用新的webshell管理工具(冰蝎)连接了version2.php。
2.2.7. 攻击者隐藏的flag2
在相关目录下搜索flag2:
1 | grep -inr flag2 /www |
得到flag2:flag{bL5Frin6JVwVw7tJBdqXlHCMVpAenXI9In9}
2.2.8. 攻击者隐藏的flag3
在相关目录下搜索flag3:
1 | grep -inr flag3 ~ |
得到flag3: flag{5LourqoFt5d2zyOVUoVPJbOmeVmoKgcy6OZ}
提交flag:
3. Windows靶机
3.1. 近源攻击
靶机用户名/密码:Administrator/zgsf@2024
题目和题解:
小王从某安全大厂被优化掉后,来到了某私立小学当起了计算机老师。某一天上课的时候,发现鼠标在自己动弹,又发现除了某台电脑,其他电脑连不上网络。感觉肯定有学生捣乱,于是开启了应急。
3.1.1. 攻击者的外网IP地址
启动小皮面板,在apache的log目录下并没有找到access.log日志文件,攻击者可能不是通过http访问的靶机,因此需要在其他地方寻找攻击者的外网IP地址。
桌面上存在4个office文件,猜测其中可能存在宏病毒,将4个文件打包上传至微步云沙箱进行分析:
得到攻击者的外网IP:8.219.200.130
3.1.2. 攻击者的内网跳板IP地址
桌面上存在一个名为“phpStudy - 修复”的批处理文件,但是图却带有快捷方式的小箭头,右键打开文件位置,显示为空白:
尝试开启显示隐藏文件:
查看显示出来的test.bat文件:
得到攻击者的内网跳板IP地址:192.168.20.129
3.1.3. 攻击者使用的限速软件的md5大写
在C盘根目录下的每个目录下搜索*.exe
,分析是否有可疑的exe文件。
在c:\PerfLogs
目录下搜索到p2pover4.34.exe
文件:
经查找,p2pover就是P2P终结者,是针对局域网用户的带宽控制程序:https://appnee.com/p2pover/
将该程序转为md5值:2A5D8838BDB4D404EC632318C94ADC96
3.1.4. 攻击者的后门md5大写
和上一题同样的方式,在C盘根目录下的每个目录下搜索*.exe
,分析是否有可疑的exe文件。
其中在C:\Windows\System32
目录下发现了一个用python写的exe文件:sethc.exe
,非常可疑,可以猜测是粘滞键后门(本质是把注销界面中可以调出的应用切换成cmd):
尝试连敲5下shift键,成功调出了cmd:
使用hash工具计算该后门程序的MD5值: 58A3FF82A1AFF927809C529EB1385DA1
3.1.5. 攻击者留下的flag
上一题粘滞键弹出来的cmd窗口中已经显示了flag:flag{zgsf@shift666}
提交flag:
3.2. 挖矿事件
靶机用户名/密码: Administrator/zgsf@123
题目和题解:
机房运维小陈,下班后发现还有工作没完成,然后上机器越用越卡,请你帮他看看原因。
3.2.1. 攻击者的IP地址
netstat /ano
查看本机端口运行状态,发现运行了3389端口的RDP服务,因此可以猜测攻击者是通过爆破RDP进入系统的。
可以Win+R,输入eventvwr.msc
,打开事件查看器,在安全日志中过滤登录失败记录(事件ID为4625),找到攻击者的IP地址:
但这种方式比较麻烦,推荐使用WindowsLog_Check或者windows日志一键分析小工具,快速分析登录日志,得到攻击者的IP地址:
- WindowsLog_Check: https://github.com/Fheidt12/Windows_Log
- windows日志一键分析小工具: https://github.com/dogadmin/windodws-logs-analysis
综上可知,192.168.115.131 这个IP同一时间点多次以Administrator身份登录系统失败,符合爆破的特征。因此,攻击者的IP地址为:192.168.115.131。
3.2.2 攻击者开始攻击的时间
攻击者开始攻击的时间即为RDP爆破开始的时间,上一题已经过滤出来了:2024-05-21 20:25:22
3.2.3 攻击者攻击的端口
事件日志中的Logon Type 3表示网络登录,即RDP登录,而RDP默认端口为3389。
3.2.4 挖矿程序的md5
打开任务管理器,发现存在一个名为XMRig miner
的进程几乎占用了100%的CPU资源:
经检索得知,XMRig是一款开源的挖矿软件:https://xmrig.com/docs/miner
右键打开程序所在位置,使用工具计算该程序的md5值:
得到挖矿程序的md5:6D68D914CE545056F383C47A444CEAF8
注意: 解题程序中的md5为 A79D49F425F95E70DDF0C68C18ABC564,这是因为系统每次开机都会重新下载挖矿软件的最新版本,所以md5值会不同。
3.2.5 后门脚本的md5
系统开机时会自动弹出CMD窗口运行一段powershell命令:
因此可以推测攻击者应该是在开机启动项中添加了挖矿软件的启动脚本,通过运行火绒剑,查看开机启动项,发现存在一个名为systems.bat
的脚本:
定位到文件可以看到,该脚本中调用了挖矿软件的下载及启动命令:
使用工具计算该脚本的md5值:
得到后门脚本的md5:8414900F4C896964497C2CF6552EC4B9
3.2.6 矿池地址
在挖矿软件的配置文件中,可以看到矿池地址:
矿池地址为:auto.c3pool.org
经检索得知,c3pool也叫猫池,采用门罗币(XMR)付款。
3.2.7 钱包地址
在挖矿软件的配置文件中同样可以看到钱包地址:
钱包地址为: 4APXVhukGNiR5kqqVC7jwiVaa5jDxUgPohEtAyuRS1uyeL6K1LkkBy9SKx5W1M7gYyNneusud6A8hKjJCtVbeoFARuQTu4Y
复制钱包地址到 c3pool.org 或者 https://c3pool.com/oldui/cn 查找,可以看到钱包地址对应的账户信息:
3.2.8 攻击者是如何攻击进入的
攻击者通过暴力破解RDP成功登录系统,在登录成功后,下载了挖矿软件并启动,同时添加了开机启动项,开机启动项中调用了挖矿软件的启动命令。
提交flag:
3.3. Web渗透1
靶机用户名/密码: administrator/Zgsf@admin.com
题目和题解:
小李在值守的过程中,发现有CPU占用飙升,出于胆子小,就立刻将服务器关机,并找来正在吃苕皮的hxd帮他分析,这是他的服务器系统,请你找出以下内容,并作为通关条件:
3.3.1. 攻击者的shell密码
打开桌面上的小皮面板,进入网站根目录:
将网站源码放到D盾或者河马上面进行查杀:
从扫描结果可以得知WWW\content\plugins\tips\shell.php
是冰蝎生成的webshell文件,打开文件查看:
连接密码是冰蝎的默认密码:rebeyond
3.3.2. 攻击者的IP地址
打开小皮面板查找日志文件:
其中nginx的日志为空,说明系统使用的是apache,打开apache的日志文件access.log,搜索webshell.php文件的访问记录:
得到攻击者的IP地址为:192.168.126.1
3.3.3. 攻击者的隐藏账户名称
隐藏账户用net user
命令是看不到的,可以通过lusrmgr.msc
或者compmgmt.msc
工具查看,不过这两工具不支持Windows家庭版,因此更加推荐查注册表:HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names
隐藏账户名称为:hack168
3.3.4. 攻击者挖矿程序的矿池域名
开启显示隐藏文件,接着在C盘根目录下的每个目录下搜索*.exe
,分析是否有可疑的exe文件。
在C:\Users
目录下搜索到kuang.exe
文件:
运行此程序后系统会卡死,说明此程序为挖矿程序。但是没有找到该程序的配置文件,因此需要反编译该程序以获取矿池域名。
从该程序的图标可以推测该程序是使用PyInstaller工具打包的的,因此可以使用pyinstxtractor脚本提取.pyc文件:https://github.com/extremecoders-re/pyinstxtractor
提取出PyInstaller打包的pyc文件后,可以使用uncompyle6工具反编译pyc文件,或者使用在线反编译网站:https://tool.lu/pyc/ :
得到矿池域名:wakuang.zhigongshanfang.top
有实力的可以尝试着修复漏洞:
CVE-2023-44974: https://avd.aliyun.com/detail?id=AVD-2023-44974×tamp__1384=eqjhDKBKiIxIhBDl1mwmd%3DWDCDn7iDWwpD
https://blog.csdn.net/W13680336969/article/details/137267677
https://github.com/yangliukk/emlog/blob/main/Plugin-getshell.md
提交flag:
3.4. Web渗透2
靶机用户名/密码: administrator/Zgsf@qq.com
题目和题解:
小李在某单位驻场值守,深夜12点,甲方已经回家了,小李刚偷偷摸鱼后,发现安全设备有告警,于是立刻停掉了机器开始排查。
3.4.1. 攻击者的IP地址(两个)
打开小皮面板查找日志文件:
其中nginx的日志为空,说明系统使用的是apache,打开apache的日志文件access.log进行分析:
日志文件中只记录了一个IPv4地址:192.168.126.135,并且该IP请求了大量隐藏件(目录扫描),因此可以推测该IP地址为攻击者的IP地址。
使用上文提到的WindowsLog_Check工具,分析系统登录日志:
发现一个名为hack887的隐藏用户成功登陆过RDP,因此该IP地址为攻击者的IP地址:192.168.126.129
3.4.2. 攻击者的webshell文件名
在access.log中搜索.php
文件的访问记录,可以看到一个名为system.php
的文件曾被请求过:
打开该文件查看:
很明显是哥斯拉生成的webshell文件:
因此,攻击者的webshell文件名为:system.php
也可以使用D盾扫描web目录,找到webshell文件:
3.4.3. 攻击者的webshell密码
密码定义在webshell文件中:hack6618
3.4.4. 攻击者的伪QQ号
攻击者可能在系统中登陆过qq,而qq会在每个用户登录后自动往当前用户的Documents\Tencent Files\
目录下创建一个以QQ号命名的文件夹,因此可以搜索进入该目录,查看是否存在以QQ号命名的文件夹:
可以看到存在一个12位的伪QQ号:777888999321
3.4.5. 攻击者的伪服务器IP地址
在C:\Users目录下搜索*.exe
,分析是否有可疑的exe文件:
找到了内网穿透工具frp,打开文件所在目录,查看frp的配置文件:
得到攻击者的伪服务器IP地址: 256.256.66.88
3.4.6. 攻击者的服务器端口
frp客户端配置文件中的server_port即为攻击者的服务器端口:65536
3.4.7. 攻击者是如何入侵的
前面已经分析过,攻击者通过RDP登录了系统,但实际上,攻击者是通过FTP服务的弱口令连接了系统,然后上传了webshell文件,并通过webshell创建了隐藏用户,最后通过RDP登录了系统。只是FTP的日志被覆盖了,导致不能通过FTP日志找到攻击者。
3.4.8. 攻击者的隐藏用户名
前面使用WindowsLog_Check工具分析登录日志的时候就已经找到了攻击者登录RDP的隐藏用户名:hack887
提交flag:
3.5. Web渗透3
靶机用户名/密码: administrator/xj@123456
题目和题解:
小苕在省护值守中,在灵机一动情况下把设备停掉了,甲方问:为什么要停设备?小苕说:我第六感告诉我,这机器可能被黑了。
3.4.1. 攻击者的两个IP地址
不知道什么原因,我的靶机部署后,里面没有apache的日志,因此无法通过apache日志找到攻击者的IP地址。
但还是可以通过使用WindowsLog_Check工具分析系统登录日志,找到一个攻击者的IP地址:192.168.75.130
另一个IP地址这里分析不了,就直接给出了:192.168.75.129
3.4.2. 隐藏用户名称
隐藏用户名上一题已经通过WindowsLog_Check工具获取到了:hack6618
但这并不是常规解法,常规解法应该是通过查找注册表,找到的隐藏用户:\HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names
3.4.3. 黑客遗留下的flag[3个]
开启资源管理器的隐藏文件功能,然后翻一下hack6118$的家目录,找到一个名为system.bat
的批处理文件:
查看文件内容:
得到一个flag:flag{888666abc}
这个批处理的的作用是向网站目录中写入一个webshell,但是写webshell通常都是直接写入文件,很少用一个批处理脚本间接写入,因此可以推测这个批处理脚本可能关联了自启动或者计划任务,以实现webshell的持久化。
通过查看任务计划程序,发现了2个由hack6618$创建的计划任务,并且这两个任务都关联了批处理文件system.bat
:
在这两个计划任务的描述中,都显示了同一个flag:flag{zgsfsys@sec}
最后一个flag可能在网站里面,尝试使用dnGREP搜索关键字查找flag,没有找到:
尝试登录网站,但是不知道网站密码:
尝试从后端数据库获取相关信息,首先登录MySQL数据库:
zbp_member
表可能存储了用户信息,查看该表:
第二个用户Hacker的mem_Intro字段存储了第三个flag: flag{H@Ck@sec}
提交flag:
4. 总结
4.1. Linux
- 审查常见中间件的日志,如apache、nginx、redis、mysql等
- 审查开机启动和登录启动配置文件
- 审查所有用户的命令历史记录
- 审查用户信息文件和影子文件
- 审查定时任务
- 熟练使用常见的运维面板,如宝塔面板、1Panel等
- 熟练使用Linux三剑客过滤webshell、flag、IP等关键字
- 审查数据库中的用户表,查找篡改用户
4.2. Windows
- 全盘搜索可疑文件,批处理文件、可执行文件、office文件、压缩文件等
- 检查粘滞键(敲击5次shift键)是否被替换
- 使用WindowsLog_Check或者Log Parser分析系统登录日志,查找可疑IP地址、可疑用户名
- 进程管理器检查系统占用率、可疑进程
- 资源管理器开启显示隐藏文件,查找可疑文件
netstat -ano
查看已建立的连接,查找可疑端口- 从注册表中查找隐藏用户,并在隐藏用户的家目录下查找可疑文件
- 使用火绒剑辅助检查启动项、计划任务、服务、网络连接
- 使用D盾、河马等工具检测网站源码是否存在后门,或者使用dnGREP搜索webshell的关键字
- 使用遥知辅助分析nginx和apache日志,过滤频繁出现的IP地址、可疑请求
- 审查网站数据库,尤其和用户相关的表,查找可疑字段