2017-05-13
WannaCry勒索病毒 通过windows操作系统漏洞EternalBlue永恒之蓝 发起攻击。3月14 微软已经发布补丁,由于很多受害者没有及时安装补丁,导致被病毒攻击,计算机中的文件被加密。
一. 背景介绍
WannaCry勒索病毒 通过windows操作系统漏洞EternalBlue永恒之蓝 发起攻击。3月14 微软已经发布补丁,由于很多受害者没有及时安装补丁,导致被病毒攻击,计算机中的文件被加密。
二. 详细分析
病毒分为漏洞利用模块,加密器,解密器
攻击逻辑如下:
攻击者发起攻击,被攻击机器由于存在漏洞,导致自身中毒。中毒之后漏洞利用模块启动,漏洞利用模块运行之后,释放加密器和解密器,启动攻击线程,随机生成ip地址,攻击全球。加密器启动之后,加密指定类型的文件。文件全部加密之后,启动解密器。解密器启动之后,设置桌面背景显示勒索信息,弹出窗口 显示付款账号和勒索信。威胁用户指定时间内不付款文件无法恢复。
漏洞利用模块分析
1.启动之后判断命令行参数,是否已经释放文件。如果没有释放文件则释放文件,启动释放的加密器,把自身设置为服务。
图-创建服务
病毒主程序 伪装为微软安全中心
图-伪装为服务
从资源中解密文件
图-从资源中释放出加密器
拼凑路径
图-拼凑加密器释放的路径
释放加密器
图-释放加密器
启动加密器
图-启动加密器程序
2.如果服务创建成功,则启动服务进入服务函数,创建线程 执行相应功能
图-随机生成攻击IP
图-利用漏洞攻击生成的IP
攻击线程中构造exploit 发送漏洞利用程序数据包
复制shellcode
图-构造漏洞利用数据包
发送数据包 利用漏洞攻击攻击生成的IP
图-收发数据包
图-发送漏洞利用数据包
随机生成IP 攻击全球主机
图-被攻击IP
加密器分析
加密器启动之后复制自身到C:ProgramDatadhoodadzaskflip373(不同的系统会复制到不同的目录)目录下
图-复制自身并启动
创建服务 使用cmd命令启动自身 防止被结束进程
创建服务
图-创建服务 防止被结束
各参数信息
图-服务信息
创建互斥体 防止运行多个实例
MsWinZonesCacheCounterMutexA
创建注册表键值
图-创建注册表键值
从资源中解密出相关文件
包括提权模块taskse.exe 、 清空回收站模块taskdl.exe、解密器程序@WanaDecryptor@
还有一些 语言资源文件和 配置文件
图-加密器释放的文件
然后随机从三个比特币钱包中选取一个 作为勒索显示信息
图-比特币钱包地址
把释放的文件夹 所有文件 设置为隐藏属性
图-释放的文件设置为隐藏
遍历查找文件
图-遍历文件
判断是否是不感染的路径
图-判断路径
判断是否是要加密的文件类型
图-判断文件类型
读取文件并加密
图-读取文件
删除原来的文件 只保留加密后的文件
图-删除原文件
病毒会加密指定类型的文件
图-加密的文件类型
加密后的文件添加后缀 .WNCRYT
图-被加密的文件后缀
加密完成之后运行解密器 弹出勒索窗口
解密器分析
解密器运行之后会删除windows自动备份 无法还原被加密的文件
图-删除备份
修改桌面背景 显示勒索信息
图-勒索信息
弹出勒索窗口,显示比特币钱包地址和付款金额
图-勒索弹窗
解决方案
1.打补丁
由于此次勒索病毒大范围传播是由于很多机器没有打补丁,被攻击之后导致中毒。没有中毒的机器,尽快打补丁可以避免中毒。
2.关闭端口
由于此漏洞需要利用445端口传播,关闭端口 漏洞就无法利用
关闭端口详细方法见附录
3.创建互斥体
由于加密器,启动之后会检测是否已经有加密器程序存在,防止互相之间干扰,所以会创建互斥体MsWinZonesCacheCounterMutexA。只要检测到互斥体存在就会关闭程序。安全软件可以利用这一点 让病毒运行之后自动退出,无法加密文件。
附录 关闭端口方法
设置本机防火墙策略阻止本机445端口访问
1)WindowsXP 防火墙设置方法:
2)Win7/Win8/Win10防火墙设置方法:
启用防火墙
高级设置
新建入站规则
创建端口过滤规则
指定协议类型和端口号
阻止连接
规则应用到全部
更新微软MS17-010漏洞补丁,对应不同系统的补丁号对照表: