APT攻防之DLL劫持技术与白利用结合
摘要:从蓝队的角度来看,我们可以更好地理解攻击者将广泛使用的那些恶意技术,以进行实际的网络攻击,从而更好地防御此类攻击。
DLL劫持技术概述
在Windows中加载DLL的规则:首先尝试从当前程序所在的目录中加载DLL。如果找不到,它将在Windows系统目录中查找。如果仍然没有,它将在环境变量中列出的目录中查找。
动态链接库(DLL)劫持原理:攻击者可以使用Windows规则加载DLL,并用恶意DLL替换被劫持程序目录中的合法DLL。
DLL劫持技术已经存在了很多年,并且早在2010年就被发现了,那么为什么我们要继续炒剩饭呢?因为它仍然是可行的方法,并且在野APT攻击样本中仍然占有一席之地!随着越来越多的APT组织逐渐暴露于每个人的视野,他们使用的攻击负载也将暴露出来。经过长期的分析和研究,我们发现能够挖掘或使用0day攻击的APT组织很少。他们使用现有技术、使用不受欢迎的技术进行攻击。当前,大多数软件开发人员仍不具备安全意识或与安全相关的技能。市场上仍然有许多易受该技术签名的可执行文件。作为一个红色团队,我们可以使DLL劫持技术武器化,即使DLL劫持技术不是新技术或尖端技术,本文仍将分享如何查找可以使用的程序以及如何构造被劫持的DLL。
DLL劫持技术与白利用结合
在大多数情况下,程序开发人员使用LoadLibrary API动态加载DLL。可执行程序将首先在当前目录中查找所需的DLL。只需将合法的PE文件复制到攻击者已读写的目录中即可。如果攻击者创建了一个恶意加载的DLL,则合法的应用程序将加载该DLL并执行攻击者的代码,而PE软件可能会被安全软件签名和信任,从而可以绕过白名单机制。
接下来,我们分析一个示例,我们使用WinWord.exe,这是由Microsoft签名的二进制软件。
那么为什么要使用这个模块呢?
1.该模块是Word的主要模块,它对于网络钓鱼电子邮件非常混乱。(然后,在选择白文件时将优先考虑这种类型的模块,可以根据特定的渗透情况选择)
2.该模块由Microsoft数字签名。(通常,由Microsoft签名的数字证书的过程将比普通的数字证书更安全)
我们可以使用IDA将PE文件拖到分析中,首先找到PE文件的函数导入表,找到LoadLibraryWInAPI,然后使用IDA交叉引用函数找到所有引用该函数的特定代码。
我们可以看到该模块在6个地方调用了API,然后找到其中之一具体分析。
我们可以看到第一个LoadLibrary加载了wwlib.dll,经过分析,我们发现没有相关的验证代码。
从下图可以看出,在加载之后获得FMain,然后调用导出的函数。
如果您不能使用IDA静态分析,我们可以使用API监视软件进行观察,例如火绒剑或API Monitor,当然,您也可以使用OD断点进行分析。(此处使用IDA之间没有什么区别。不同的PE文件使用不同的方法来获得最佳结果。)
接下来,我们需要确保WinWord.exe调用wwlib.dll的那些导出函数。
一般的劫持方法有两种。一种是劫持DLL的导出函数。 第二个是DLLMain中劫持。DLL没有初始功能DLLMain。 从上面的代码中,如果我们使用第一种方法进行劫持,则会在加载wwlib之后调用FMain,但是在调用之前将确定是否成功获取了其他两个函数,因此我们需要导出其他两个函数。
创建一个新的DLL项目,编写3个导出函数,并将DLL命名为wwlib。
写入后,可以将其放置在同一目录中。我们打开该exe来成功加载我们的自定义DLL,并由word.exe加载。
如上所述,还有另一种方法更简单,更通用,但仅限于用C/C++编写的PE文件,这是劫持DllMain中的控制流。
如果选择这种方式,则无需枚举并满足所有必需的导出。在某些情况下,DLL没有任何导出,只能通过DllMain入口点进行劫持。
您可以稍微更改代码,在DllMain中的DLL_PROCESS_ATTACH选项下调用FMain,并注释掉退出代码。然后,您将看到两个弹出窗口。当调用LoadLibrary加载wwlib模块时,将调用第一个弹出窗口,加载DllMain,第二个由导出的函数调用。(当DLL首先映射到进程的地址空间时执行DLL_PROCESS_ATTACH)
如何发现DLL劫持漏洞新的可执行文件
实际上,网络世界中有很多具有DLL劫持漏洞的应用程序,那么我们如何选择相应的可执行文件?
1.独立的EXE文件可调用恶意DLL。(独立的EXE必须是合法的白文件)
2.独立的EXE文件必须具有数字签名,并且数字证书短期内不会过期。
3.数字签名最好包括微软的数字签名。
4.独立EXE必须在不验证DLL的情况下使用Load加载DLL。
通过以上方法,容易受到System32目录中DLL劫持的EXE,例如Dism.exe。
这是一个部署映像服务和管理的程序。动态分析系统程序,并观察到它正在尝试将DismCore.dll文件加载到当前目录中,如下图所示:
接下来,我们可以从其正常路径(C:\Windows\System32)将DISM系统程序加载到API Monitor中,如下图所示:
然后,我们使用前面的模块来修改名称以查看并成功弹出被劫持的代码。
防御与总结
首先,有几种更好的方法可以抵御此类攻击。
1.您可以检查网络连接异常的过程:首先,我们可以记录正常的网络通信过程链。当发现进程的网络活动与记录的进程链不匹配时,它可能会受到DLL劫持的攻击。
2.加载DLL时,首先将文件读入内存以验证其数字签名或哈希值。如果找不到匹配项,则不会加载DLL。
3.当然,Microsoft提供了一些有关DLL安全和DLL劫持漏洞的相关文档。
相关热词搜索:APT攻防 DLL劫持 白利用 重庆网络安全公司
上一篇:流氓应用程序收集隐私:分析Apple设备剪贴板上泄漏GPS信息的潜在危险
下一篇:利用攻击西门子PLC系列S7-300的过程和思路介绍适合学习的工控工具和框架
人机验证(Captcha)绕过方法:使用Chrome开发者工具在目标网站登录页面上执行简单的元素编辑,以实现Captcha绕过
牛创网络: " 人机身份验证(Captcha)通常显示在网站的注册,登录名和密码重置页面上。 以下是目标网站在登录页面中排列的验证码机制。 从上图可以
2020-01-26 12:44:09 )8872( 亮了
自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
牛创网络: "自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
2020-01-30 14:04:47 )6288( 亮了
Grafana CVE-2020-13379漏洞分析:重定向和URL参数注入漏洞的综合利用可以在任何Grafana产品实例中实现未经授权的服务器端请求伪造攻击SSRF
牛创网络: "在Grafana产品实例中,综合利用重定向和URL参数注入漏洞可以实现未经授权的服务器端请求伪造攻击(SSRF)。该漏洞影响Grafana 3 0 1至7 0 1版本。
2020-08-12 14:26:44 )4301( 亮了
Nginx反向代理配置及反向代理泛目录,目录,全站方法
牛创网络: "使用nginx代理dan(sui)是http响应消息写入服务地址或Web绝对路径的情况。 写一个死的服务地址是很少见的,但它偶尔也会发生。 最棘手的是写入web绝对路径,特别是如果绝对路径没有公共前缀
2019-06-17 10:08:58 )3858( 亮了
fortify sca自定义代码安全扫描工具扫描规则(源代码编写、规则定义和扫描结果展示)
牛创网络: "一般安全问题(例如代码注入漏洞),当前fortify sca规则具有很多误报,可通过规则优化来减少误报。自带的扫描规则不能检测到这些问题。 需要自定义扫描规则,合规性角度展示安全风险。
2020-02-12 10:49:07 )3505( 亮了
整理几款2020年流行的漏洞扫描工具
牛创网络: "漏洞扫描器就是确保可以及时准确地检测信息平台基础架构的安全性,确保业务的平稳发展,业务的高效快速发展以及公司,企业和国家 地区的所有信息资产的维护安全。
2020-08-05 14:36:26 )2536( 亮了
微擎安装使用技巧-微擎安装的时候页面显示空白是怎么回事?
牛创网络: "我们在公众号开发中,有时候会用到微擎,那我们来看一下微擎安装的时候页面显示空白是怎么回事吧
2019-06-08 15:34:16 )2261( 亮了
渗透测试:利用前端断点拦截和JS脚本替换对前端加密数据的修改
牛创网络: " 本文介绍的两种方法,虽然断点调试比JS脚本代码替换更容易,但是JS脚本代码替换方法可以实现更强大的功能,测试人员可以根据实际需要选择适当的测试方法
2020-01-07 09:34:42 )1995( 亮了
从工业界到学界盘点SAS与R优缺点比较
牛创网络: "虽然它在业界仍然由SAS主导,但R在学术界广泛使用,因为它的免费开源属性允许用户编写和共享他们自己的应用程序 然而,由于缺乏SAS经验,许多获得数据分析学位的学生很难找到工作。
2019-07-13 22:25:29 )1842( 亮了
41款APP侵犯用户隐私权:QQ,小米,搜狐,新浪,人人均被通报
牛创网络: "随着互联网的不断发展,我们进入了一个时代,每个人都离不开手机。 但是,APP越来越侵犯了用户隐私权。12月19日,工业和信息化部发布了《关于侵犯用户权益的APP(第一批)》的通知。
2019-12-20 11:28:14 )1775( 亮了