动态库,一直伴随着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 来支持
从 Window 不安全dll加载 漏洞 来看Windows系统漏洞
最新推荐文章于 2022-03-30 11:39:52 发布