如何禁用软件DLL劫持(Disable DLL Hijacking)

查看 142|回复 12
作者:荒天   
前言
越来越多的木马使用DLL劫持功能进行加载,大家也经常做补丁使用DLL劫持功能进行破解,有没有想过如何进行防护了?本文介绍通过修改文件manifest属性进行定向位置加载和动态加载签名校验来解决劫持问题,给开发者提供一些防护思路,加强软件保护,防止被劫持利用。
介绍
木马
如早期的犇牛木马,使用伪装LPK.DLL、USP10.DLL系统DLL进行劫持加载传播感染,到如今各种流氓软件和APT组织使用DLL劫持正常软件绕过安全软件拦截,如使用伪装chrome.dll劫持Chrome.exe来实现加载,其中比较知名APT组织海莲花(OceanLotus)最为擅长。
破解补丁
Windows平台加密壳发展到如今阶段,脱壳成本提升和自校验的加强,已经很少有直接通过文件Patch进行补丁破解了,基本都开始使用内存修改的方式进行补丁,相对于传统的启动进程再修改内存的方式,DLL劫持修改内存更为方便,DLL劫持补丁已经成为主流的破解补丁存在方式了。为什么可以进行DLL劫持了,本文不再赘述,可以参看微软官方的介绍:

https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order  

防护方法
[ol]
  • 对于系统DLL,不通过修改本机KnownDLLs进行单机防护,而是通过修改文件manifest属性进行定向加载DLL来解决通用系统DLL劫持问题,开发者可以看微软的manifest介绍:>https://docs.microsoft.com/en-us/windows/win32/sbscs/application-manifests
    比如我们给程序添加以下
    编译成功后再进行winmm.dll、lpk.dll和version.dll劫持,就会无效了,这里只添加了部分DLL,可以根据自己程序所需,把对应所有的导入表中的系统DLL都加入即可。对于二次开发的程序没有源代码如何进行修改了?我们可以使用ResEdit等资源工具进行修改,如图所示:


    xx.png (61.12 KB, 下载次数: 0)
    下载附件
    2021-8-24 11:39 上传
  • 对于非系统第三方DLL,上面的方法就不太适用了,可以使用动态加载方式,不要使用静态导入方式加载,通过动态加载对文件进行校验,如数字签名校验通过后再进行加载,来保证程序的安全性
    结语
    未知攻焉知防,充分了解攻击手段才才可以做出更好的防御,感谢@690827027 的指点,学习到新的知识。
    参考链接

    https://curl.se/mail/lib-2018-02/0075.html
    https://itm4n.github.io/windows-dll-hijacking-clarified/
    https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order

    [/ol]

    加载, 防护

  • wgmm999   

    这篇文章来自吾爱坛主hmily,
    文章很有体系,
    花费了坛主不少力气,
    想学技术的人要仔细做好笔记,
    学习路上要脚踏实地。
    本文学习的技术叫做防护dll劫持,
    劫持技术在破解中使用的比比皆是,
    如何避免你的开发成果被人猎食,
    这篇文章会给你具体的解释。
    本中的方法不是传统的修改注册表,
    该方法不是所有人都想得到,
    manifest的预备知识必不可少,
    就像登陆泰坦尼克号的船票。
    最后我要再说一句:
    如果想要学习软件安全的技术,
    一定要把吾爱破解的网址记住,
    里面很多人都会热心的当你师傅,
    学会技术让你发家致富!
    奔放的汉子   

    我还以为是发币,结果不是
    t1099778271   


    加奈绘 发表于 2021-8-24 12:12
    第三方软件的dll数字签名如果伪造为系统签发是不是可以绕过

    只是提供一个方向,具体可以做校验的方法很多,不局限于微软的数字签名,即使伪造也可以检测。
    平淡最真   

    [table][tr][td]这篇文章来自吾爱坛主hmily,
    文章逻辑严谨,自成体系,
    有坛主自己的沉淀和思考,
    想学技术的人要仔细做好笔记,
    学习路上要脚踏实地。
    本文学习的技术叫做防护dll劫持,
    劫持技术在破解中使用的比比皆是,
    如何避免你的开发成果被人猎食,
    这篇文章会给你具体的解释。
    如何猎食别人的开发成果,
    这篇文章也会给你一定的启发。
    本中的方法不是传统的修改注册表,
    该方法不是所有人都想得到,
    manifest的预备知识必不可少,
    就像登陆泰坦尼克号的船票。
    最后我要再说一句:
    如果想要学习软件安全的技术,
    一定要把吾爱破解的网址记住,
    里面很多人都会热心的当你师傅,
    学会技术让你发家致富!切记!
    fhangong   

    h大牛   好好学习
    wangyujie96   

    前排露个脸,给大佬点赞。。。
    慢慢学习
    加奈绘   

    学习了。。。。。。。。。。。。。。。。
    skywalk1979   

    破解又难了一步
    奔放的汉子   

    学习学习,谢谢分享。
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部