• 本文作者: 漏洞应急响应中心
  • |
  • 2017年6月28日
  • |
  • 样本分析
  • |

Petya勒索病毒技术分析

天融信.阿尔法实验室  李喆 李闪 王宇晟 崔伟鹏 李燕春

一、petya事件描述

1.1 漏洞背景

 

在2016年的三月到4月,petya恶意勒索软件开始传播,相对于其他勒索软件进行一个个文件加密不同的是,它采用了修改Master Boot Record(MBR) 启动引导阻止用户进入系统,并引导进了一个很小的恶意内核系统,然后再进行加密。

在2017年 6月27日晚上,根据国外报道消息,新的变种petya出现了,它在和旧版本的区别是采用了office word文档漏洞(CVE-2017-0199),通过发送邮件的方式进行传播,用户打开恶意邮件触发漏洞后会从 “http ://french-cooking.com/myguy.exe”下载恶意程序执行。然后会通过NSA泄露的0day工具永恒之蓝利用445端口smb协议(CVE-2017-17010)在内网,通过法国神奇minikatz抓密码等工具进行传播扩散。

 

 

1.2 利用的漏洞传播介绍

 

1.2.1 OFFICE OLE2LINK(CVE-2017-0199)

Petya利用已知的office 远程命令执行漏洞,在不需要交互的情况下,打开word文档就能通过hta脚本执行任意代码,petya结合了这个漏洞进行了传播,相比之前的word宏病毒漏洞,这个漏洞不需要交互更加的隐蔽,传播效果更佳完善。

 

1.2.2 永恒之蓝 CVE-2017-17010

NSA工具泄露事件已经炒的沸沸扬扬,从去年的防火墙漏洞到今年的windows系统服务

(SMB,RDP,IIS)等远程命令执行工具,其中就有永恒之蓝工具程序,Petya通过利用永恒之蓝漏洞扫描开发的445文件共享端口进行内网的横向扩散。

 

 

1.3 样本md5列表

介绍 Md5 文件名
Petya主模块 71b6a493388e7d0b40c83ce903bc6b04 perfc.dat
     

 

1.4 其他情况介绍

目前即使支付赎金也无法拿回加密文件,因为攻击者联系邮箱已经关闭。

目前受到攻击国家主要包括乌克兰、俄罗斯、波兰、意大利、德国等。我国国内尚未出现大范围感染情况。

目前网上流传域名开关”kill switch”,之前wannacry也存在过,可以参考之前的文章,这个开关的作用是阻止恶意软件传播,但是关于这次的开关,虽然恶意Petya确实有验证产生一个特殊文件到C:\Windows下,但是这并不能保证其他样本的验证文件名字也是一样的,而且也无法肯定这是一个开关。

二、petya样本功能分析

2.1 petya样本运行流程

 

对样本文见中的一个文件进行本地测试复现。

测试环境为win7 64位Vmware虚拟机。

1

样本文件为027cc450ef5f8c5f653329641ec1fed91f694e0d229928963b30f6b0d7d3a745

2

文件MD5值为:

3

样本文件本身是一个动态链接库DLL文件,需要用其他程序调用,于是写了一个简单程序调用DLL文件。以管理员身份运行程序调用DLL

4

调用之后看到样本文件已经自删除

5

重启虚拟机提示CHKDSK在修复扇区,过程比较漫长。

6

经过几分钟等待之后,勒索界面出现了。

7

用另外一台机器抓取这台机器的流量,可以看到它在利用永恒之蓝探测我另外一台机器的445、139等端口

8

9

10

2.2 样本深入分析

样本为DLL,导出函数perfc_1,执行时将代码复制到堆上执行,卸载原模块,之后执行修改MDR、设置自动关机、加密磁盘文件、通过SMB漏洞传播等操作。

进程行为:

cmd.exe

shutdown.exe

rundll32.exe

schtasks.exe

wevtutil.exe

fsutil.exe

dllhost.dat

字符串:

wevtutil cl Setup & wevtutil cl System & wevtutil cl Security & wevtutil cl Application & fsutil usn deletejournal /D %c:

schtasks %ws/Create /SC once /TN “” /TR “%ws” /ST %02d:%02d

shutdown.exe /r /f

/RU “SYSTEM”

%s /node:”%ws” /user:”%ws” /password:”%ws”

process call create “C:\Windows\System32\rundll32.exe \”C:\W

indows\%s\” #1

\\%s\admin$

\\%ws\admin$\%ws

替换MBR相关部分代码截图:

1) 样本主体为动态链接库, 该库导出了一个编号为1的函数. 样本由该导出函数开始执行.该函数首先尝试修改本进程相关权限, 包括计算机关闭等..

11

12

2) 该样本会使用Windows 文件操作篡改本地磁盘的MBR信息, 向物理磁盘写入开机显示勒索信息的代码.

从物理磁盘读取MBR信息的代码

13

加密原始MBR信息

14

保存一个疑似比特币钱包地址的东西到内存变量中

15

接着从样本中读取恶意MBR数据

16

以下是从内存中提取出来的mbr代码

17

写入恶意MBR到磁盘中

18

利用计划任务固定时间间隔以后强制重启计算机

构造计划任务参数列表

19

 

启动cmd程序, 执行计划任务添加命令

20

21

 

内网主机搜寻过程

利用微软DHCP接口枚举内网中的主机, 同时尝试使用SOCKET连接对应IP地址确认是否可以联通

1) 枚举内网主机

 

 

22

2) 使用socket测试连接探测主机是否存活

23

从样本资源中提取mimikatz程序并执行.

1)从样本的资源目录中锁定mimikatz资源, 保存到磁盘中

24

25

2)创建命名管道

26

3)创建mimikatz进程同时使用管道重定向子进程的输出设备, 用以控制mimikatz进程

27

释放Psexec

释放资源到windows目录,文件名为dllhost.dat,为Sysinternal中的的PsExec.exe

28

内网主机感染

用CreadEnumerate API枚举内网主机,并过滤TERMSRV

29

30

使用永恒之蓝传播

1 创建线程,通过SMB漏洞进行传播

2 从全局变量中获取传染目标

3 尝试2次攻击发包

31

32

加密勒索本地文件

1 遍历磁盘,对于每个固定磁盘创建一个线程,加密其中的文件:

2 硬编码的AES-128加密key,以及对每个固定磁盘创建线程

3 递归查找文件,比较后缀名。同时跳过C:\Windows目录

4 加密文件内容

5 写入通知文本:

6 执行wevtutil命令清除事件日志:

33

 

三、修复防护建议

 

3.1影响版本

Windows xp,window 7 ,windows 10,windows 2003,windows 2008

 

3.2补丁地址

永恒之蓝补丁:

http://www.catalog.update.microsoft.com/Search.aspx?q=KB4012598

https://technet.microsoft.com/en-us/library/security/ms17-010.aspx

 

Office Word远程代码执行漏洞补丁:

https://technet.microsoft.com/zh-cn/office/mt465751.aspx

 

3.3手工修复

 

3.3.1 及时更新操作系统补丁,安装MS17-010补丁。

 

3.3.2关闭445等端口(其他关联端口如: 135、137、139)的外部网络访问权限,在服务器上关闭不必要的上述服务端口

 

3.3.3加强对445等端口(其他关联端口如: 135、137、139)的内部网络区域访问审计,及时发现非授权行为或潜在的攻击行为

 

3.3.4定期在不同的存储介质上备份信息系统业务和个人数据

 

3.3.5 windows停止更新的系统补丁,xp补丁已经提供,请尽快下载打好补丁https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/

 

3.3.6开启防火墙

3.4其它建议

 

3.4.1加强管理员工安全意识培训,外来邮件加白名单。

3.4.2加强密码策略,不使用弱口令空密码

3.4.3 禁用WMI服务

关闭(WMIC扩展WMI(Windows Management Instrumentation,Windows管理工具)执行命令

 

 

Written by 漏洞应急响应中心