网络安全实战 - HTB Window's Infinity Edge

1,598 阅读2分钟

概述

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对话记录。

forensics_011_HTB_Window's Infinity Edge_1.png

这些对话可以分成两个阶段,第一个阶段是使用/webapp/upload.aspx上传shell.aspx,第二阶段则是向/webapp/shell.aspx发送多个在目标系统中运行的命令。

截取上传shell.aspx的通话数据,可以得到shell.aspx的源代码。

forensics_011_HTB_Window's Infinity Edge_2.png

从中我们可以得知shell.aspx来自于SharPyShell(github.com/antonioCoco…

其后,我们截取第二阶段中所有向/webapp/shell.aspx发送的请求数据,

forensics_011_HTB_Window's Infinity Edge_3.png

这些数据由SharPyShellruntime_compiler_aes.cs提供的加密方法进行加密,而shell.aspx中的变量p则是其所用的密钥。由此,我们可以根据runtime_compiler_aes.cs源代码对其进行解密。

forensics_011_HTB_Window's Infinity Edge_4.png

解密的结果就是客户端向目标系统发送的各个命令。

forensics_011_HTB_Window's Infinity Edge_5.png

对话记录中总共有32个命令请求,其中第19个和第23个是得到flag的关键。

第19个命令在目标系统中运行一段shellcode,其代码则是经过base64编码以及压缩处理。

forensics_011_HTB_Window's Infinity Edge_6.png

将其解压后再base64解密就可获得原始的代码,其中的threadParameters变量中可以看到所执行的命令行,包括添加一个admin_infinity用户以及向C:\xor.k文件中写入xGk89_Ew

forensics_011_HTB_Window's Infinity Edge_7.png

第23个命令使用相同的方法注入shellcode, 其二进制代码中也包含C:\xor.k字串。

forensics_011_HTB_Window's Infinity Edge_8.png

由此,在本地环境中创建C:\xor.k文件中并写入xGk89_Ew, 然后在x64dbg中使用blobrunner对该shellcode进行调试,就可获得flag。

forensics_011_HTB_Window's Infinity Edge_9.png