从 Window 不安全dll加载 漏洞 来看Windows系统漏洞
2010-11-30 16:28
330 查看
动态库,一直伴随着windows操作系统, 属于windows系统设计框架的一部分, 从这两年流行的后门木马病毒来看, 一大部分利用了此漏洞,可以说这是Windows设计的失误.
1.主要原因是:过于灵活的接口制造成的。
因函数调用通过固定顺序排列的函数入口表来执行代码,所以只要模拟一个动态库一模一样的DLL文件,即可欺骗调用着来执行恶意代码。
2.另一个原因是,使用了固定的动态库文件搜寻加载方式,只要将需要欺骗的动态库放在exe当前文件夹下,即可,对于用户而言,根本不知道那是危险文件。
虽然系统保护了系统所需要的动态库文件,可是保护不了所有应用程序层的动态库
问题1.解决方案:
1.对动态库加载前进行MD5校验,对系统的PE Loader进行升级,或者有开发着,自己手动编写验证代码.
2.由编译器对动态库的调用改为偏移地址直接调用,而非通过函数转表间接调用.
只要不改变原来的结构,调用就没有问题,如果dll升级扩展 ?(想知道请关注)
问题2.解决方案:
1.编写代码时不要用LoadLibrary() GetProcAddress() 来动态调用
2.使用通过系统变量取得固定路径调用系统提供的动态库
3.在EXE/DLL导入表增加导入库的路径标志,比如:0,从系统目录寻找,1.从当前目录寻找
第3点需要系统的 PE Loader 来支持
1.主要原因是:过于灵活的接口制造成的。
因函数调用通过固定顺序排列的函数入口表来执行代码,所以只要模拟一个动态库一模一样的DLL文件,即可欺骗调用着来执行恶意代码。
2.另一个原因是,使用了固定的动态库文件搜寻加载方式,只要将需要欺骗的动态库放在exe当前文件夹下,即可,对于用户而言,根本不知道那是危险文件。
虽然系统保护了系统所需要的动态库文件,可是保护不了所有应用程序层的动态库
问题1.解决方案:
1.对动态库加载前进行MD5校验,对系统的PE Loader进行升级,或者有开发着,自己手动编写验证代码.
2.由编译器对动态库的调用改为偏移地址直接调用,而非通过函数转表间接调用.
只要不改变原来的结构,调用就没有问题,如果dll升级扩展 ?(想知道请关注)
问题2.解决方案:
1.编写代码时不要用LoadLibrary() GetProcAddress() 来动态调用
2.使用通过系统变量取得固定路径调用系统提供的动态库
3.在EXE/DLL导入表增加导入库的路径标志,比如:0,从系统目录寻找,1.从当前目录寻找
第3点需要系统的 PE Loader 来支持
相关文章推荐
- 爱测未来安全-从真实的项目修复来看如何完全驾驭短文件名漏洞
- window 2003 (x64)php 无法加载mysql.dll的解决方法!
- 从一个加密程序来看安全漏洞的问题
- QQDLL加载漏洞可能导致用户密码被窃取
- QQDLL加载漏洞可能导致用户密码被窃取
- Window php 无法加载php_curl.dll解决办法
- Qt 动态加载 dll
- VS2008 生成DLL加载DLL
- windows安全升级导致IE中无法加载MSCOMM控件的解决办法:
- 解析Java和Eclipse中加载本地库(.dll文件)的详细说明
- 通过反射加载DLL部分更新应用程序(winform)
- 解决Emgu.CV.CvInvoke 无法加载 DLL“opencv_core242”
- OpenSSL "heartbleed" 的安全漏洞
- Linux kernel ‘msr_open’函数安全漏洞
- 【AppScan深入浅出】修复漏洞:启用不安全的HTTP方法 (中)
- (完整版)原因可能是堆被损坏,这也说明 中或它所加载的任何DLL 中有bug】的解决
- 调试托管程序中加载的本机dll
- iOS安全编码指南:软件漏洞的主要来源
- 解决win7 64位下安装php高版本 不能加载php_curl.dll 问题
- <Oday安全 11.6利用加载模块之外的地址绕过SafeSEH>一节注记---jmp [ebp+N] (下)