概述
Window's Infinity Edge是来自于HTB(hackthebox.com)的一个困难级数字鉴识挑战,完成该挑战所需要掌握的知识点在于Windows下的代码分析。
题目分析
该挑战提供了一个2019-11-12_21_00_30-EXT07.pcap文件,其中是捕捉到的网络通讯数据。
解题过程
使用Wireshark打开2019-11-12_21_00_30-EXT07.pcap,并列出所有的HTTP对话记录。
这些对话可以分成两个阶段,第一个阶段是使用/webapp/upload.aspx上传shell.aspx,第二阶段则是向/webapp/shell.aspx发送多个在目标系统中运行的命令。
截取上传shell.aspx的通话数据,可以得到shell.aspx的源代码。
从中我们可以得知shell.aspx来自于SharPyShell(github.com/antonioCoco…
其后,我们截取第二阶段中所有向/webapp/shell.aspx发送的请求数据,
这些数据由SharPyShell中runtime_compiler_aes.cs提供的加密方法进行加密,而shell.aspx中的变量p则是其所用的密钥。由此,我们可以根据runtime_compiler_aes.cs源代码对其进行解密。
解密的结果就是客户端向目标系统发送的各个命令。
对话记录中总共有32个命令请求,其中第19个和第23个是得到flag的关键。
第19个命令在目标系统中运行一段shellcode,其代码则是经过base64编码以及压缩处理。
将其解压后再base64解密就可获得原始的代码,其中的threadParameters变量中可以看到所执行的命令行,包括添加一个admin_infinity用户以及向C:\xor.k文件中写入xGk89_Ew。
第23个命令使用相同的方法注入shellcode, 其二进制代码中也包含C:\xor.k字串。
由此,在本地环境中创建C:\xor.k文件中并写入xGk89_Ew, 然后在x64dbg中使用blobrunner对该shellcode进行调试,就可获得flag。