复现APT白利用及快速挖掘新的零日白利用

2024-04-04 918 0

一、什么是白利用

通俗一点说,就是利用已知签名可执行程序,通过重写原有dll导出函数生成新的dll,达到运行其它payload的目的,一般用于加载c2的payload功能,以及一些命令执行,后渗透等功能的插件,达到绕过防护杀软的目的。

二、为什么要使用白利用

以笔者的经验来说,签名程序无疑是一层保护伞,对于签名程序来说,防护软件默认是放行的,尤其是对大厂签名程序,列如,微软,谷歌,思科,VMware等等 。尤其来说,大量签名程序都存在被白利用的可能,这大大降低了攻击的成本,并且我至今认为,白利用是最好的免杀手段。

三、如何挖掘白利用

以复现曾经被APT成功利用过的白利用为例

  • 案例1、wsc_proxy.exe 白程序,我们看到VT全绿,VT链接:https://www.virustotal.com/gui/file/0a61fed98a6eda17fdc5de0b8900bba930e5bbca2f584cd29c1a3dd2137b3a6e

并且我们看到签名至今仍然有效

由于是已知白利用程序,加载的dll名称我们是知道的,我们只需要去下载对应版本的dll,下载dll的网站很多,这里不在赘叙,下载到的dll为wsc.dll.

我们将wsc_proxy.exe载入IDA静态分析一下。

复现APT白利用及快速挖掘新的零日白利用插图2

我们发现其导入表中并未见到wsc.dll,应该说大部分的可执行程序都在其导入表中看不到需要调用的        dll,而是通过LoadLibrary动态调用,那么接下来我们将wsc_proxy.exe载入x64dbg动态调试一下

复现APT白利用及快速挖掘新的零日白利用插图3

运行(无视所有异常) , 我们看到加载的dll名称为wsc.dll ,这里的前提是wsc_proxy.exe该路径下面存在        wsc.dll,如果不存在,依然看不到加载的dll名称,这里因为是复现,前提已经知道了可利用的dll名称,所以我们提前放好了wsc.dll ,那如果不知道的前提下,我们应该怎么去挖掘呢?后面讲挖掘案例的时候会讲到。

接下来将wsc.dll载入IDA分析其导出函数

复现APT白利用及快速挖掘新的零日白利用插图4

我们看到有3个导出函数,我们怎么确定调用了哪些函数?继续回到x64dbg调试wsc_proxy.exe

复现APT白利用及快速挖掘新的零日白利用插图5

通过搜索字符串找到wsc.dll的对应汇编代码位置

复现APT白利用及快速挖掘新的零日白利用插图6

进入汇编视图

复现APT白利用及快速挖掘新的零日白利用插图7

这几行的意思是载入wsc.dll,然后调用run方法,这里我们知道了是调用方法,还需要知道参数,返回值,如果方法,参数,返回值不对,都不会去加载我们自己的dll. 继续回到IDA查看wsc.dll中的run方法

复现APT白利用及快速挖掘新的零日白利用插图8

总的来说,这是一个使用 stdcall 调用约定的函数 _run@4,它接受一个int类型参数,调用另一个函数 sub_100171E0,然后返回int ,那么我们根据这个函数,自己写一个dll, 来实现利用,弹个msgbox

现在,写一个DLL,它导出一个函数 run,该函数调用另一个函数 sub_100171E0 并返回其结果。我们将这个函数的参数和返回值定义为 int,因为这是32位系统中 dword 的对应C++数据类型 (因为我下载的dll是32位)

vs创建动态链接库项目wsc.dll

复现APT白利用及快速挖掘新的零日白利用插图9

复现APT白利用及快速挖掘新的零日白利用插图10

将wsc_proxy.exe和wsc.dll放在一起,执行wsc_proxy.exe

复现APT白利用及快速挖掘新的零日白利用插图11

复现APT白利用及快速挖掘新的零日白利用插图12

以上是对wsc_proxy.exe的复现和demo测试.

接下来我们将挖掘一个零日白利用

由于安装了sogou输入法,就测试一下吧,找到SGWizard.exe

复现APT白利用及快速挖掘新的零日白利用插图13

载入x64dbg

复现APT白利用及快速挖掘新的零日白利用插图14

发现可以利用的dll名称ImageMagik.dll

将SGWizard.exe载入IDA查看,在导入表里面很明显我们就发现了ImageMagik.dll,以及导出函数的名称

复现APT白利用及快速挖掘新的零日白利用插图15

复现APT白利用及快速挖掘新的零日白利用插图16

尝试重写这个dll,代码如下
复现APT白利用及快速挖掘新的零日白利用插图17将SGWizard.exe和ImageMagik.dll放在同目录下执行

复现APT白利用及快速挖掘新的零日白利用插图18

这是一个比较简单的白利用,因为在可执行文件里包含了导出的dll名称以及导出函数名称,不需要动态调试即可利用。

总结

挖掘案例中只是一个比较简单的白利用,因为在可执行文件里包含了导出的dll名称以及导出函数名称,不需要动态调试即可利用。
复现案例和挖掘案例中只是证明了可被利用的可行性,真正武器化加载payload,文章的开始便讲到了加载c2的payload,命令执行,后渗透插件等等,白利用的价值不仅仅是加载c2的payload, 在红队攻防的实战当中,往往会有很多利用点,而且极不容易被发现,比如c2的持久化,如果我们本来就存在一个启动项存在白利用,那么我们就可以在不增加启动项的情况下实现持久化,而且这是极其隐蔽的,其它的还有很多….

本人不是专业的二进制选手,也不会太多的逆向及调试技巧,所以挖掘白利用是一项门槛较低的工作,但是白利用对于对抗杀软是有非常大的帮助,攻防的本质是成本的对抗,这是我的理解,如果攻击成本较高,自然不会有人去尝试,当然APT除外,APT是不计成本的攻击,常规情况下,还是成本的对抗,文章写的不好,感谢各位。

写在最后

本人是一位从事安全行业多年的从事者,主要是以渗透为主,工作经历主要是红队方向,在这里想求得一份最好是远程类的工作。联系方式: YXFreHhAcHJvdG9uLm1l,感谢。


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

如何使用CODASM编码Payload并降低熵值
SessionExec:一款针对会话安全的安全命令测试工具
Arkime:一款大规模数据包捕获和索引数据库系统
从蓝队流量角度分析Shiro-550反序列化漏洞
万字长文浅谈三高系统建设方法论和实践
你遇到过哪些奇葩面试题目;如何考察渗透测试与安全管理能力| FB甲方群话题讨论

发布评论