签名伪造

    渗透测试 lz520520 3年前 (2021-01-14) 914次浏览

    之前看了几篇文章分享下,自己大致总结了下。

    具体细节可参考链接,部分只是做了总结方便查阅。

    1. 在PE文件的数字证书中隐藏Payload(转载)

    这篇文章主要说了数字证书是用于防止文件被篡改的,进行签名校验放到文件尾部,但插入payload到证书尾部,不影响文件的hash和签名,可以做一些隐藏payload的处理

    http://www.mottoin.com/detail/474.html

    2. CAT文件数字签名使用技巧(转载)

    PE文件的证书签名有两种,一种是将数字签名添加在文件末尾的方法(Authenticode),另一种是将数字签名保存在CAT文件中的方法(catalog),也就是不需要修改文件本身,只需要生成一个CAT文件放到指定路径就表示签名了。

    目录一般为C:\Windows\System32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}

    http://www.mottoin.com/detail/1937.html

    3. Authenticode签名伪造——PE文件的签名伪造与签名验证劫持(转载)

    SIPs其实是一组实现了SIP接口,提供证书签名计算、校验等的API。dll文件存放在C:\WINDOWS\system32下,后缀为sip.dll,因为不同版本OS可能名称为有不同。

    其中用于校验签名的导出函数为MsiSIPVerifyIndirectData,而且该功能还有对应注册表值,用于判断使用哪个dll的哪个导出函数进行校验

    该路径下有不同GUID的,主要是用于文件类型使用不同的函数进行校验,当对应的导出函数返回值为true时表示校验成功。

    签名伪造

     

    • C689AAB8-8E78-11D0-8C47-00C04FC295EE - PE
    • DE351A43-8E59-11D0-8C47-00C04FC295EE - catalog .cat文件
    • 9BA61D3F-E73A-11D0-8CD2-00C04FC295EE - CTL .ctl文件
    • C689AABA-8E78-11D0-8C47-00C04FC295EE - cabinet .cab文件

    PE文件是我们最常见的,所以找到对应注册表值,可以修改成我们自己写的dll,让返回值恒为true即可,或者针对某几个名称的PE文件为true,这种方法实际用的时候需要多上传一个dll到目标服务器,那其实可以看到可以修改dll名称和funcname,那么其实只需要找一个已有的dll,导出函数匹配,返回值恒为true即可。

    这里提供一个符合条件的导出函数,如下是64位注册表

    32位PE文件校验也有对应的注册表项

    默认数值为

    除此之外,这篇文章还说到的签名劫持,其实也就是自己写个符合要求的导出函数,修改注册表指向他,然后里面写入payload,每次校验的时候会自动调用。

    http://www.mottoin.com/detail/1937.html

    4. Catalog签名伪造——Long UNC文件名欺骗(转载)

    用long UNC文件名可以复制其他文件属性,这样就可以实现cat文件签名伪造。具体如下,和系统文件名相同,最后添加N个空格,即可伪造,文件大小,hash等均和系统文件相同,所以使用校验工具检查可以发现cat签名是针对系统文件hash校验的,所以就绕过检测了。

    执行需要使用短文件名执行,win10可能关闭了短文件名,可以查看注册表,0表示开启,1表示关闭,2是默认值(默认情况下只有C盘是开启短文件名的)

    然后使用 dir /x 即可查看。

    运行可以使用以下命令执行

    http://www.mottoin.com/detail/1934.html


    Security , 版权所有丨如未注明 , 均为原创丨
    转载请注明原文链接:签名伪造
    喜欢 (1)