Wannacry浅析

今年刚刚接触病毒分析,学一个东西最好的方式就是先提问,带着问题分析会抓住做一些自己关注的重点。随着学习的深入,问题也会越来越高深。现阶段我的问题是,恶意代码是如何传播的,如何在受害者上运行的,有什么网络特征,是否加壳。对于勒索病毒:勒索病毒使用什么加密方式,加密后是否擦除,是否可以通过逆向方式找到密钥,如何找到密钥。
  
通过逆向分析出病毒的运行方式,他的网络特征、加密方式是什么,如何启动的,如何进行感染。
今天浅析的是影响深远的永恒之蓝,他是一个勒索病毒,传播方式利用的是永恒之蓝漏洞,加密方式是RSA+AES。AES加密文件,RSA加密AES。

本实验使用的样本:MD5: 84C82835A5D21BBCF75A61706D8AB549

                  SHA1: 5FF465AFAABCBF0150D1A3AB2C2E74F3A4426467

拿到样本,先查看一下是否有壳。使用得工具是PEiD,查看结果是没有壳,如图1。

                                            图1

然后进行对永恒之蓝勒索病毒进行基础的动态和静态分析。

一.进行基础的静态分析,首先查看一下字符串,通过字符串可以看出来有个cmd,可以推测勒索病毒进行一些命令行操作,如图2。 之后看一看导入表的导入函数,在Kernel32的导入函数里发现了 LoadResource、LockResourse、OpenMutexA等函数,这些函数时进行资源的锁定和打开互斥锁的,如图3。 最后看一看有什么重要的资源,把样本拖入Resourse Hacker中查看一下,会看到2058:1033中二进制文件时PK开头的,可以推测这个资源文件是个压缩的格式,如图4。提取资源后,修改扩展名为.zip格式,查看资源内的内容是如图5。

                                             图2

                                           图3

                                              图4

                                                图5

二、进行基础的动态分析,本次使用的工具是火绒剑,主要看一下执行监控、文件监控、注册表监控和网络监控。

1.查看执行监控,会看到一些勒索病毒释放的文件,如图6。

                                          图6

2.查看文件监控,会有一些启动自释放文件的程序,会有一些文件读写和修改的操作,如图7、8。

                                            图7

                                                                                 图8

3.注册表监控,查看注册表监控没有明显的修改,但是在执行监控这看到了有关注册表的操作,应该是样本不同,我这个样本没有修改注册表,如图9。

                                                             图9

4.查看网络监控,正常样本是检测一些端口的,我的样本没有操作,如图10。

                                            图10

进行的基础的静态动态分析,大概分析了一下永恒之蓝的一些初步操作。下面就行详细的分析,可以用IDA分析到这个勒索病毒的具体代码,用OD一步一步的执行一下观察一下该勒索病毒时如何加密的。

把永恒之蓝拖进ida中分析主函数wcry.exe,按F5进入C程序代码,如图11。wcry.exe主要是勒索病毒的准备工作,获取当前的路径,设置注册表项,添加比特币用户,导入密钥,然后调用主要加密文件程序TaskStart函数,当加密完成擦去密钥,释放内存。

                                                     图11

继续分析一下加密函数TaskStart。TaskStart函数在t.wnry.dll模块中,分析时打开它g到0x10005AE0地址反编译为C代码,如图12,13。有些函数会创建互斥体,常用来防止两个进程或线程在同一时刻访问相同的共享资源。

重点来了,如何永恒之蓝时如何加密的呢?首先用函数CreatePubPriFile创建两个文件进行保存00000000.pky文件保存主机生成的Tkp公钥,00000000.eky保存加密后主机生成的TKS私钥,如图14。公钥用于加密加密文件的对称密钥,私钥则被病毒带过来的公钥Wkp加密。WKP的密钥对WKS是由勒索者掌控,是勒索赎金的筹码。然后利用密钥进行加密,加过程很复杂,很多层的嵌套,暂时还没分析明白,主要是我还没弄明白这个加密的代码逻辑。

                                              图12

                                            图13

                                        图14

最后看一下taskdl.exe程序,它主要是进行最后的收尾工作,删除文件,释放内存。StartTaskdl 第四个线程回调函数以隐藏的方式启动taskdl.exe,如图15。

                                            图15

Wannacry浅析相关推荐

  1. 浅析 JavaScript 中的 函数 uncurrying 反柯里化

    柯里化 柯里化又称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果. 因此柯里化的过程是 ...

  2. 浅析Python中bytes和str区别

    本博转载自:Chown-Jane-Y的浅析Python3中的bytes和str类型 Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示, ...

  3. 学习《Linux设备模型浅析之设备篇》笔记(深挖一)

    这篇文章既然说了是浅析,那就是跳过了一些东西,我们把这些跳过的东西给它尽可能的补回来 今天登陆 lxr.free-electrons.com 发现内核版本已经升级到3.15了,那以后都使用3.15的源 ...

  4. 学习《Linux设备模型浅析之设备篇》笔记(一)

    最近在学习Linux设备模型,前面几篇文章也是读这篇的时候遇到问题,然后为了搞清楚先转去摸索才写出来的. 当然了,刚开始是先读到<Linux那些事儿之我是Sysfs>,搞不清楚才去读的&l ...

  5. WannaCry 不相信眼泪 它需要你的安全防御与响应能力

    在过去的几天里,WannaCry恶意软件及其变体影响了全球数百家组织与机构. 尽管每个组织都会因各种各样的原因没能及时对存在漏洞的系统做更新保护,或者担心更新实时系统的风险,两个月对于任何组织来用于采 ...

  6. 架构周报| 浅析MySQL JDBC连接配置上的两个误区

    经典案例 \\ 浅析MySQL JDBC连接配置上的两个误区:相信使用MySQL的同学都配置过它的JDBC驱动,多数人会直接从哪里贴一段URL过来,然后稍作修改就上去了,对应的连接池配置也是一样的,很 ...

  7. 超级账本(Hyperledger Fabric)之权限管理浅析

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 超级账本(Hyperledger Fabric)之权限管理浅析 超级账本是联盟链的代表,而其相对于共链(例如比特币,以太 ...

  8. linux内核SMP负载均衡浅析

    需求       在<linux进程调度浅析>一文中提到,在SMP(对称多处理器)环境下,每个CPU对应一个run_queue(可执行队列).如果一个进程处于TASK_RUNNING状态( ...

  9. CAS、原子操作类的应用与浅析及Java8对其的优化

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:CoderBear juejin.im/post/5c7a8 ...

  10. Python标准库queue模块原理浅析

    Python标准库queue模块原理浅析 本文环境python3.5.2 queue模块的实现思路 作为一个线程安全的队列模块,该模块提供了线程安全的一个队列,该队列底层的实现基于Python线程th ...

最新文章

  1. python计算两个字典的相同点(从key、value、item角度)
  2. BCH底层协议真的不能被修改吗?
  3. nodejs基础学习-文件读取
  4. 你还在从零搭建 Java 项目 ?10000 字总结~
  5. 如何发布php网站_php网站如何发布【货币问答】- 联合货币
  6. Codeforces 1144D Deduction Queries 并查集
  7. java char 空_2020重新出发,JAVA入门,数据类型
  8. 李宏毅 -《深度学习人类语言处理》国语版(2020)视频课程及ppt分享
  9. FISCO BCOS rpc端口、channel端口、p2p端口 怎么用是什么
  10. 正交表的查询地址汇总
  11. 安川g7接线端子图_安川G7变频器各接线端子功能说明
  12. 免费下载思维导图模板的方法
  13. nanovna使用说明_白色NanoVNA 矢量网络分析仪天线短波 MF HF VHF便携式频谱分析仪...
  14. 褚时健去世,柳传志发悼词:我非常钦佩褚老
  15. echarts 旭日图sunburst
  16. 电蚊拍一天用30-50次?
  17. python 单词拆音节_y在单词或音节中间的单词有哪些?
  18. Analytics Zoo 入门
  19. Django企业it资产管理系统
  20. [python] 基于matplotlib实现树形图的绘制

热门文章

  1. 网络图片地址直接转Base64
  2. java用socket解析16进制数据_浅析Java基于Socket的文件传输案例
  3. 资源管理器清楚WPS网盘、百度网盘方法
  4. Zero-shot Adversarial Quantization论文翻译+解读
  5. 1500w播放下还藏着什么热点?B站2个未来趋势你不得错过
  6. Google战略的深远意义
  7. Redis学习之del命令
  8. 公众号丶服务号丶订阅号三者间的区别
  9. 记事本APP之Alpha报告
  10. 下一代无服务器的发展形态: Serverless2.0