MENU

利用SigThief窃取数字签名并制作一个无效的数字签名

November 15, 2019 • 技术阅读设置

无论签名是否有效,每个签名都是不同的,并且每个PE签名的优先级也不一样。有些杀毒软件厂商会把某些证书颁发机构的证书列入白名单,但很多是不会去检查签名是否有效,还有一些只是检查certTable是否填充了某些值。
因此SigThief可以从已经签名的PE文件中剥离数字签名,并且将数字签名附加到另一个文件当中,从而修复证书表以对该文件进行数字签名。

  当然,通过此方式签署的数字签名是无效的,这就是重点!

step.1 准备工作

安装Python

SigThief是由Python编写的脚本程序,运行时需要依赖于Python,在此之前你需要确保你的系统中已经安装了Python;对于Windows而言安装Python一如既往的简单方便,只需要访问Python官网所提供的下载页面根据操作系统版本下载对应Python版本即可。

Python.org 下载页面

获取SigThief

SigThief由GitHub用户secretsquirrel编写,secretsquirrel已经把SigThief完整源代码上传至GitHub。

SigThief GitHub

step.2 如何使用

py sigthief.py [options]
Options:
  -h, --help            show this help message and exit
  -i FILE, --file=FILE  input file
  -r, --rip             rip signature off inputfile
  -a, --add             add signautre to targetfile
  -o OUTPUTFILE, --output=OUTPUTFILE
                        output file
  -s SIGFILE, --sig=SIGFILE
                        binary signature from disk
  -t TARGETFILE, --target=TARGETFILE
                        file to append signature too
  -c, --checksig        file to check if signed; does not verify signature
  -T, --truncate        truncate signature (i.e. remove sig)
py sigthief.py -i tcpview.exe -t x86_meterpreter_stager.exe -o /tmp/msftesting_tcpview.exe 
py sigthief.py -i tcpview.exe -r 
py sigthief.py -s tcpview.exe_sig -t x86_meterpreter_stager.exe  
py sigthief.py -i tcpview.exe -c

0x03 完成签名

通过Visual Studio创建了一个简单的控制台程序编译后通过SigThief窃取微软数字签名并签署到编译的控制台程序文件中。
签署微软数字证书

注意

通过SigThief窃取并签署的数字签名是无法通过有效性验证的,所以如果把窃取的签名添加到内核驱动文件当中同样是无法在非Windows调试模式下加载驱动的。

Last Modified: January 17, 2020
Archives QR Code Tip
QR Code for this page
Tipping QR Code