利用数字签名“漏洞”实现把自己的文件隐藏在别人打好数字签名的文件里
2016-12-17 18:16
232 查看
写这个工具的原因是因为看到这个:
http://bobao.360.cn/learning/detail/2985.html
下面是数字签名的原理
![](https://img-blog.csdn.net/20161217181330075?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzc2MTAzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
目前来看上面的验证是没问题的,该工具能成功的原因是:
这里直接给出这个“漏洞”的信息:对于一个Windows的可执行程序,签发数字签名的时候需要计算的数据摘要并不会是程序文件的全部数据,而是要排除一些特定区域的数据。而这些区域当然和PE文件结构有关,具体地,不管是签发时还是校验时计算的hash都会排除一个Security数据目录字段以及数字签名证书部分的数据。至于原因,当然是为了合理地组织pe程序的数字签名,符合pe文件格式的标准。(最后就是注意添加数据要是8的倍数的问题)。
Security 相关
![](https://img-blog.csdn.net/20161217181353326?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzc2MTAzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20161217181409342?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzc2MTAzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
至于实现通用工具的话,可以自定义一个数据结构来存储自己的附加信息以及原文件信息,还可以加上校验密码。我写的那个工具就是这个思路,直接自己设置了一个结构,存储信息(新文件大小,原文件大小,密码的加密字符,对其处理),放在文件最后。然后在进行操作的时候可以准确的把不同大小的数据存在不同的PE里...具体细节可以看我上传的工具代码。
以下是一个工具测试结果:
A.exe 处理之前的文件(充当容器)
![](https://img-blog.csdn.net/20161217181427998?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzc2MTAzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
B.dat 处理之前的文件(充当存储数据)
![](https://img-blog.csdn.net/20161217181527250?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzc2MTAzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
C.Exe 处理之后的文件(充当填充了数据的容器)
![](https://img-blog.csdn.net/20161217181551251?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzc2MTAzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
D.Dat处理之后的文件(充当从c里面释放出来的数据)
![](https://img-blog.csdn.net/20161217181440796?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzc2MTAzNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
工具地址:
http://download.csdn.net/detail/u013761036/9714220
http://bobao.360.cn/learning/detail/2985.html
下面是数字签名的原理
目前来看上面的验证是没问题的,该工具能成功的原因是:
这里直接给出这个“漏洞”的信息:对于一个Windows的可执行程序,签发数字签名的时候需要计算的数据摘要并不会是程序文件的全部数据,而是要排除一些特定区域的数据。而这些区域当然和PE文件结构有关,具体地,不管是签发时还是校验时计算的hash都会排除一个Security数据目录字段以及数字签名证书部分的数据。至于原因,当然是为了合理地组织pe程序的数字签名,符合pe文件格式的标准。(最后就是注意添加数据要是8的倍数的问题)。
Security 相关
至于实现通用工具的话,可以自定义一个数据结构来存储自己的附加信息以及原文件信息,还可以加上校验密码。我写的那个工具就是这个思路,直接自己设置了一个结构,存储信息(新文件大小,原文件大小,密码的加密字符,对其处理),放在文件最后。然后在进行操作的时候可以准确的把不同大小的数据存在不同的PE里...具体细节可以看我上传的工具代码。
以下是一个工具测试结果:
A.exe 处理之前的文件(充当容器)
B.dat 处理之前的文件(充当存储数据)
C.Exe 处理之后的文件(充当填充了数据的容器)
D.Dat处理之后的文件(充当从c里面释放出来的数据)
工具地址:
http://download.csdn.net/detail/u013761036/9714220
相关文章推荐
- 条件概率公式, 贝叶斯公式
- Android Studio 无线真机调试
- maven依赖搜索
- 移动APP安全在渗透测试中的应用
- 推荐一款开源的C#TCP通讯框架
- 怎么样让多个div并列?
- 94. Binary Tree Inorder Traversal**
- R 语言与统计分析,学习笔记
- java正则验证密码必填字母数字特殊字符及扩展
- 安卓选择器类库,包括日期选择器、时间选择器、单项选择器、数字选择器、二三级联动选择器、省市区地址选择器、颜色选择器、文件目录选择器等,可自定义顶部及底部界面,可自定义窗口动画
- [MySQL]MySQL之权限管理
- SQL Server-聚焦使用视图若干限制/建议、视图查询性能问题,你懵逼了?(二十五)
- 03_数字的字面量
- IOS开发笔记15-自定义类
- web-前端历程(2)浮动与清除浮动
- BZOJ 3881 [Coci2015]Divljak
- 机器学习(周志华) 参考答案 第十五章 规则学习 15.1
- Matlab 高斯_拉普拉斯滤波器处理医学图像
- servlet jsp 前台与后台的同时传文件和文本
- Replace用法