freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

天堂之门(Heaven’s Gate)技术的详细分析
FreeBuf_322493 2019-07-31 15:32:04 450430

天堂之门.gif

背 景

近日发现了一款特别的恶意软件加载器,该加载器使用了叫做天堂之门(Heaven’s Gate)的技术,可以通过注入内存来释放恶意软件,并且能够规避杀毒软件的检测。 

天堂之门并不是一项全新的技术,但是仍然被病毒制造者广泛的使用。该技术基于32位应用程序的基础上,向64位进程注入恶意代码,从而隐藏API调用,使其更加难以被检测到。

具体的行为流程如下:

QQ截图20190731151141.png注:PEB是Process Environment Block的缩写,其中存储了进程用户态重要的数据结构。

详细分析

在64位系统中,32位的应用程序运行在一个WoW64的子系统中,这个子系统为32位程序提供了一个类似沙箱的运行环境。事实上这个32位程序运行的环境也是一个64位的运行环境,系统在创建32位进程时,首先创建一个64位的进程,然后再在其中创建一个32位的子环境。32位程序所调用的系统函数,最终都要通过64位的动态链接库而实现。

通过下图我们可以看一下,一个32位的进程不仅加载了C:\Windows\SysWow64下的动态链接库,也加载了C:\Windows\system32下的动态链接库。C:\Windows\SysWow64是提供给32位程序使用动态链接库;C:\Windows\system32是64位系统的动态链接库。

图片1.png

在这个基础上,代码如何从32位转向64位是一个关键问题。Winodws系统中,CS段寄存器用来标识目前所运行的代码是32位的,还是64位的。

下图是32位进程中寄存器的状况,可以看到CS是0X23。

图片2.png

而下图是64位进程中寄存器的状况,可以看到CS是0X33图片3.png

在Windows中,通过改变段寄存器CS的值就可以实现32位代码和64位代码之间的转换。 

下面我们来看一下两种模式之间转换的代码:

图片4.png

在上面的代码中,我们重点要理解的是retf这个指令,retf指令和ret指令是不同的。 

ret指令是常用的函数返回指令,ret仅仅弹出栈顶到IP寄存器(指令寄存器)中。

ret指令返回前ret指令返回后


IP(栈顶)
ARG1ARG1(栈顶)
ARG2ARG2


retf是不一样的,retf又叫做far ret,是带有段寄存器的返回。retf同时弹出两个值,一个弹出到CS(段寄存器),一个弹出到IP(指令寄存器)。

retf指令返回前retf指令返回后


IP(栈顶)
CS
ARG1ARG1(栈顶)
ARG2ARG2


现在我们再看上面的模式转换代码就容易理解了:

push _cs把0X23或0X33压栈
call  $+5add  dword [esp], 5把一个代码地址入栈
retf模式转换


让我们从调试器中查看一下运行状况:

图片5.png

从上面的图中可以看到,retf指令的地址是0X706F124C。而此时栈顶的两个值是IP()X706F124D)和CS(0X33)。IP指向的是retf之后的指令。代码将从retf之后按照64位模式继续执行。 

上面的运行示例是从32位转向64模式的情况,要想反过来转换,只要把CS的0X33换成0X23就可以了。 

在完成了模式的转换之后,后面的一切就会变得简单起来。从PEB中获取进程所加载的动态链接库是shellcode中一个常用的技巧。本篇文章只简单的说明一下,不对这个技巧做过多的描述了。 

要获取进程PEB结构,首先要获得当前线程的TEB结构。可以通过R12寄存器或者FS寄存器获取TEB结构,TEB偏移0X30处就是指向PEB的指针。PEB->Ldr->InMemoryOrderModuleList保存了进程加载的模块列表。整个过程的重要部分大致如此。

下面是一个运用了此技术的32位的恶意软件NGay,但是它创建了64位进程,并完成了向64位进程的注入。

图片6.png


防护措施

1、不要轻易打开可疑文件,如电子邮件、可疑链接、可疑文档等等;

2、及时安装系统补丁,使用最新版本的软件;

3、安装杀毒软件,及时更新病毒库;

4、使用“铁穹高级持续性威胁预警系统”(简称“铁穹”)发现潜在的攻击行为,及时响应和阻断,避免造成业务中断或经济损失。


# 病毒 # 隐藏 # 技术分析 # 天堂之门
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 FreeBuf_322493 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
东巽科技2046Lab
FreeBuf_322493 LV.3
这家伙太懒了,还未填写个人描述!
  • 22 文章数
  • 9 关注者
勒索黑客攻击美关键基础设施是大义凛然?
2021-05-12
战法分享:快速发现APT攻击事件及所属组织研判
2021-05-10
塔防方式阻击鱼叉钓鱼攻击
2021-05-07
文章目录