Wannacry分析

Wannacry分析一、加密程序(WannaCryptor.exe)1.释放①概览②细节加载资源(多个zip文件),使用开源代码解压,zip文件标志(PK…)解压所得:b.wry(bmp)c.wry(含

大家好,又见面了,我是你们的朋友全栈君。

一、加密程序(WannaCryptor.exe)

1.释放

①概览

 <span role="heading" aria-level="2">Wannacry分析

②细节

加载资源(多个zip文件),使用开源代码解压,zip文件标志(PK…)

      <span role="heading" aria-level="2">Wannacry分析

     解压所得:

    b.wry (bmp)

  c.wry (含有一些网址,torproject等)

  m.wry (rtf)

  r.wry (txt)

  t.wry (加密的dll)

  u.wry (vc6.0 MFC)

   <span role="heading" aria-level="2">Wannacry分析

  通过CSP获取RSA_AES提供者句柄,导入RSA 私钥句柄,这是用于解密dll

  <span role="heading" aria-level="2">Wannacry分析

  KEY BLOB(篇幅过长,仅显示部分)

 <span role="heading" aria-level="2">Wannacry分析

读取被加密dll文件信息,加密文件头部含有经2048RSA加密过的AES密钥得到的256字节密文

 <span role="heading" aria-level="2">Wannacry分析

 

解密256字节密文得到16字节明文(AES密钥)再用AES密钥解密文件得到dll

 <span role="heading" aria-level="2">Wannacry分析

注:这时可以从内存中dump出dll文件(我的方式是直接从OD内存中复制16进制,粘贴到010ed

 

将dll 按0x1000粒度对齐并加载到imagebase。

实现:修复IAT,修复重定位,修复区段内存属性,调用tls, 调用DllEntryPoint

 <span role="heading" aria-level="2">Wannacry分析

 

获取并调用dll唯一的一个导出函数

 <span role="heading" aria-level="2">Wannacry分析

 

2.加密(StartSchedule)

Ⅰ.总览

 <span role="heading" aria-level="2">Wannacry分析

 <span role="heading" aria-level="2">Wannacry分析

 <span role="heading" aria-level="2">Wannacry分析

Ⅱ.细分

 ①设置当前目录到注册表

 <span role="heading" aria-level="2">Wannacry分析

②如果系统版本为vista以后,创建计划任务,否则,添加注册表启动项

 <span role="heading" aria-level="2">Wannacry分析

 

创建计划任务方式

命令行:

 <span role="heading" aria-level="2">Wannacry分析

1.xml内容

 <span role="heading" aria-level="2">Wannacry分析

 

查看计划任务:

控制面板->系统和安全->管理工具->计划任务

每一分钟调用一次加密程序

 <span role="heading" aria-level="2">Wannacry分析 

③批处理添加!WannaDecryptor!.exe快捷方式

 <span role="heading" aria-level="2">Wannacry分析

生成bat文件并调用

 <span role="heading" aria-level="2">Wannacry分析

④生成勒索文档

 <span role="heading" aria-level="2">Wannacry分析

勒索内容:

 <span role="heading" aria-level="2">Wannacry分析

⑤生成随机2048RSA密钥对,并将其公钥存入文件,私钥被导入的2048RSA公钥加密,存入文件。

 <span role="heading" aria-level="2">Wannacry分析

⑥线程一

每隔25秒,获取当前时间,并向.res文件中(覆盖式)写入时间和随机八字节数据

表层:

 <span role="heading" aria-level="2">Wannacry分析

内层:

  生成8字节随机数据

   <span role="heading" aria-level="2">Wannacry分析

       线程内:

   <span role="heading" aria-level="2">Wannacry分析 

⑦线程二

测试RSA公钥/私钥(加密极小文件,演示解密所用密钥),需要保存私钥的文件存在才能运行。

      <span role="heading" aria-level="2">Wannacry分析

⑧线程三

检测新加的磁盘,加密,并写入垃圾数据

 <span role="heading" aria-level="2">Wannacry分析

⑨线程四

在前置条件成立情况下(初始不成立),创建进程 !WannaDecryptor!.exe

 <span role="heading" aria-level="2">Wannacry分析

Ⅲ.加密

A.最核心加密函数(多次调用)被我命名为Encrypt_A_directory

其内部函数调用:

1.调用first_round_encrypt函数,遍历文件,分别保存文件夹路径和文件路径在不同的双向链表中,然后遍历文件路径链表,调用encrypt_by_fileType,将未加密文件的路径放入新的链表,以待后续加密。

2.遍历保存文件路径的双向链表,调用encrypt_by_fileType,实现对未加密文件的加密。

3.遍历保存文件夹路径的双向链表,在每个文件夹下,添加勒索信息文件和解密工具快捷方式

4.释放链表

B. first_round_encrypt函数分析

1.保存文件夹路径

 <span role="heading" aria-level="2">Wannacry分析

2.保存文件路径

 <span role="heading" aria-level="2">Wannacry分析

3.遍历链表,加密文件,核心函数encrypt_by_fileType

 <span role="heading" aria-level="2">Wannacry分析

C. encrypt_by_fileType函数分析

对文件类型进行选择,调用aes_encrypt

 <span role="heading" aria-level="2">Wannacry分析

D. aes_encrypt函数分析

根据文件类型,改后缀,或者加后缀,调用encrypt_file1

 <span role="heading" aria-level="2">Wannacry分析

E. encrypt_file1函数分析

1.对于要处理文件,读取其内容,进行判断是否经过处理,并检查其类型

 <span role="heading" aria-level="2">Wannacry分析

2.对于小文件,创建新文件,其名为原文件后加T

 <span role="heading" aria-level="2">Wannacry分析

3.对于大文件,将前0x10000字节复制到文件尾部,并清空前0x10000字节

 <span role="heading" aria-level="2">Wannacry分析

 

 

 

4.生成随机AES密钥,用RSA公钥加密,得到密文。进行密钥扩展,得到DWORD[4*11],向文件中写入WANNACRY, AES密文字节数,密文,文件类型,文件大小。

 <span role="heading" aria-level="2">Wannacry分析

5.每次拷贝0x100000字节,进行加密

 <span role="heading" aria-level="2">Wannacry分析

E.encrypt_分析

循坏每次取16字节,调用AES_encrypt_16bytes

 <span role="heading" aria-level="2">Wannacry分析

F.AES_encrypt_16bytes分析

轮密钥加变化

 <span role="heading" aria-level="2">Wannacry分析

9轮变换

 <span role="heading" aria-level="2">Wannacry分析

 S盒变换

 <span role="heading" aria-level="2">Wannacry分析

8.对于小文件的AES密钥加密,可能会用另外RSA公钥

 <span role="heading" aria-level="2">Wannacry分析

如果是用的另外公钥,将文件路径写入f.wry,待后面解密器演示

 <span role="heading" aria-level="2">Wannacry分析

Ⅳ.加密流程分析

       返回到分析Most_Important_Encrypt

       1.导入密钥

 <span role="heading" aria-level="2">Wannacry分析

 

 

       2.加密指定目录

  <desktop>

  All Users\Desktop

  My Documents

  All Users\Documents

 <span role="heading" aria-level="2">Wannacry分析

3.全盘加密

先加密非网盘,再加密网盘

 <span role="heading" aria-level="2">Wannacry分析

4. 启动解密器,两次全盘写入大量垃圾数据覆盖并删除。

 <span role="heading" aria-level="2">Wannacry分析

encrypt_and_wirte_junk_data

 <span role="heading" aria-level="2">Wannacry分析

二、解密程序

解密程序为vc6.0 MFC 程序,根据命令行参数,有三种不同功能

OnInitDialog内部:

 

       1.命令行参数为 v

       Cmd 命令删除shandowCopy

   <span role="heading" aria-level="2">Wannacry分析

2.命令行参数c

       下载torbrowser,连接tor服务器

 <span role="heading" aria-level="2">Wannacry分析

       ①从文件中获取网址

 <span role="heading" aria-level="2">Wannacry分析

  ②下载torbrowser

  失败,已经没有那个版本了,现在都10.0了

 <span role="heading" aria-level="2">Wannacry分析

然后是以127.0.0.1去连tor服务器

 <span role="heading" aria-level="2">Wannacry分析

 

 

3.无命令行参数

       生成界面

 <span role="heading" aria-level="2">Wannacry分析

<span role="heading" aria-level="2">Wannacry分析

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154738.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux netstat命令详解

    Linux netstat命令详解简介Netstat命令用于显示各种网络相关信息,如网络连接,路由表,接口状态(InterfaceStatistics),masquerade连接,多播成员(MulticastMemberships)等等。输出信息含义执行netstat后,其输出结果为ActiveInternetconnections(w/oservers)ProtoRecv-QSend-QLocalAddressForeignAddressStatetcp02210.34.6.

    2022年5月30日
    30
  • php中的线程、进程和并发区别

    php中的线程、进程和并发区别

    2021年10月31日
    61
  • p6spy 非常典型 启用SQL日志「建议收藏」

    p6spy 非常典型 启用SQL日志「建议收藏」官网地址 gitHub地址 在项目的pom.xml中添加依赖 修改项目数据库连接地址ConnectionURL jdbc:mysql://host/db修改为jdbc:p6spy:mysql://host/db 修改数据库driver-class-name driver-class-name:com.mysql.cj.jdbc.Driver修改为com.p6spy.eng…

    2022年10月5日
    0
  • 一二三型观测线的图片_拓扑图

    一二三型观测线的图片_拓扑图“您的个人假期”旅行社组织了一次比荷卢经济联盟的巴士之旅。比荷卢经济联盟有很多公交线路。每天公共汽车都会从一座城市开往另一座城市。沿途汽车可能会在一些城市(零或更多)停靠。旅行社计划旅途从 S 城市出发,到 F 城市结束。由于不同旅客的景点偏好不同,所以为了迎合更多旅客,旅行社将为客户提供多种不同线路。游客可以选择的行进路线有所限制,要么满足所选路线总路程为 S 到 F 的最小路程,要么满足所选路线总路程仅比最小路程多一个单位长度。如上图所示,如果 S=1,F=5,则这里有两条最短路线 1→

    2022年8月9日
    9
  • 在线词云制作生成 tagxedo

    在线词云制作生成 tagxedo在线词云制作生成tagxedo在线词云10行Python代码的词云待办在线词云原博文地址和详细使用方法介绍在线词云制作tagxedo在线网址http://www.tagxedo.com/注意点:直接访问http://www.tagxedo.com/app.html可能会超时,先进主页再点击右上角的create按钮进入创作页面会加载更快;需要下载一个软件,使用IE浏览器可加载上述软件,谷歌和EDGE实测都无法加载;导出的词云图片:10行Python代码的词云原博客地址:1

    2022年10月26日
    0
  • 什么是kit_django4.0

    什么是kit_django4.0#介绍ImageKit是用于处理图像的Django应用程序。如果需要从原图上生成一个长宽为50×50的图像,则需要ImageKit。ImageKit附带了一系列图像处理器,用于调整大小和裁剪等常见

    2022年7月31日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号