前言

之所以不叫分析报告,是因为接下来要看到的分析,可能包含了不正确的,或者有疑点,和未完全分析的,里面有我个人的主观臆断,或者一些我目前未察觉的错误,还有一些非常基础,非常啰嗦的内容,这都是为了复习我以前的一些知识,或者是做一个记录防止以后可能需要用到。还有一些可能在分析中新学习的知识可能有很多不正确,或者不确定,因为我个人能力有限没察觉到的地方,所以只能称为我个人的分析笔记,因为我当时是这样想的,在以后察觉了错误的地方的时候再进行改正。
如有错误欢迎朋友们帮我斧正,感激不尽。
如果你想看真正的分析报告我会在结尾给出。

环境:

win7专业版/32

工具:

IDA x32dbg PEid

样本信息:

名字:petya virus.exe
MD5: AF2379CC4D607A45AC44D62135FB7015
SHA1: 39B6D40906C7F7F080E6BEFA93324DDDADCBD9FA
CRC32: 488C77E7

简介:

恶意软件使用图标将其EXE文件伪装成PDF和RAR可执行文件。然后,攻击者通过电子邮件向目标发送恶意代码,欺骗受害者执行它。通过这种方式,通过社交工程成功启动了攻击。

分析过程:


感觉没有加壳

X32附加跟踪
418A36()
41770D()
41A8DA()(OD跟踪到这里反汇编引擎有问题)
IDA看一下

这个while是循环解密下面代码的 循环跑完后往下走会有一些类似混淆的代码,继续跟,直到看到
寻找PE字段

最后找到正确的结构


mov eax,fs:[0x30] //访问TEB
mov eax,[eax+0xC] //访问Ldr
mov eax,[eax+0xC] //访问InLoadOrderLinks顺序的表,同理0x14和0x1c
https://blog.csdn.net/a893574301/article/details/78836492 遍历DLL
mov edx,[eax+0x28] //0x24是fullname,由于是UNICODE_STRING结构,所以这个+0x4才是字符串地址

根据DLL的名字哈希来找打对应模块

遍历完成之后

申请存放恶意代码的内存

写入头(DOS+PE+区块表)

写入区段数据

写完后修复IAT

CALL了这个函数 进去发现

是这样的

查了一下发现是这个函数

和病毒所用的反射式注入有关,这里有详细的介绍
在完成所有的重定位后,我们最后调用第2步得到的NtFlushInstructionCache()清除指令缓存以避免问题。
https://www.cnblogs.com/h2zZhou/p/7721797.html
这里就开始执行DLL的代码了

这样不太好看 我们可以把之前再内存中的PE文件DUMP下来看,但是dump下来后文件是数据是在内存展开状态下的,所以要自己修复一下PE 修复完成后我们使用IDA来观察

粗略的分析了一下
判断了一个值 可能和系统环境有关(没有追朔到)


这样我们就先主要分析8B4B这个函数 两个参数 像是调用类函数

进去后先分析第一个函数8A8E
像是判断本一些目录是否存在


第二个函数89DC传入了

IDA里面看一下 像是判断这个扇区存不存在

接下来看88EE这个函数


整体的一段分析


转到LABLE_19执行
88EE

还是成功的 往下9200函数我们看一下


往下8ED8这个函数进去粗略的看了看 比较复杂里面有各种函数的调用,像是加密或者解密一些东西,我们先不细分析,看他传参或者,返回值返回了什么

生成了一个网址,和返回了密钥 或者特征码之类的东西,先记录下来 看后来能不能验证
“e7MpECUjnBi3uosWzWR6LHmzzyHBdtaLn9EkBH729A9zGK6ceQFY1HeZuLUqgTco2EtXGWWw87FV8oH9BghooUipNP”
00 DD C6 CB A2 AC 64 CD A6 BD 86 E2 D0 EC E4 E0 .ÝÆË¢¬dͦ½.âÐìäà
CC AE 68 AD 66 ED E6 C7 9A DB C2 EE E8 C5 96 E3 Ì®h.fíæÇ.ÛÂîèÅ.ã
D2 8D 4D B7 4E 91 04 F2 68 68 74 74 70 3A 2F 2F Ò.M·N…òhhttp://
70 65 74 79 61 33 37 68 35 74 62 68 79 76 6B 69 petya37h5tbhyvki
2E 6F 6E 69 6F 6E 2F 66 77 65 53 31 4A 0D 0A 20 .onion/fweS1J…
20 20 20 68 74 74 70 3A 2F 2F 70 65 74 79 61 35 http://petya5
6B 6F 61 68 74 73 66 37 73 76 2E 6F 6E 69 6F 6E koahtsf7sv.onion
2F 66 77 65 53 31 4A 00 00 00 00 00 00 00 00 00 /fweS1J…

继续往下分析 看看91D0这个函数 传参


像是解密这段数据填充到刚申请的堆块里 48F010

执行完后感觉像是单纯的拷贝,往下看吧
随便翻了一些堆里的内容 发现有些显示的勒索信息 可能就是要执行的微内核?(后来发现这个应该是MBR)

又拷贝了一些数据到堆里

继续调用88EE读取内容

往下看8963这个函数


把xor完的数据写回去了 下面是一个段落的分析

循环写入完成后再调用了8963写入一段

可能是一段引导数据,把扇区引导到恶意代码上

往后继续分析
再次写入 也像是写入引导

这里我对MBR的布局并不熟悉 所以之后再分析把


后面判断了一下 继续调用了8963写入了3次
1

2

3

最后调用了8FD8这个函数

这里完成了这些提取操作


8B48最后一段整体分析

提权失败后 看一下会做什么
上层

再上层

好像并没有提权失败后要做什么(难道是没写完吗?)
下面这是被修改的MBR分区 以55 AA结尾 查看使用的工具是WinHex
我们先大概学习一下MBR的结构
可以参考:https://www.52pojie.cn/thread-171556-1-1.html willJ大佬的帖子 或者其他的一些资料
MBR 的大体结构
1.引导代码:0 到 1BDH 共 446 个字节
2.分区表:1BEH-1FDH 共 64 字节
3.结束标志:1FEH-1FFH 共 2 字节
它们的大小加起来刚好是 512 字节就是 MBR 的大小,其中分区表可以分为 4 个表,
每个表 16 字节,这也是我们装系统为什么只能有 4 个主分区的原因。
下面内容可以用winhex查看


所以我们进入第二阶段的分析也就是MBR的阶段
看看他做了什么

观察这段特征码 和网址 再验证我们之前我们看到的信息 但是我没有看见密钥
但是我猜测密钥也是在8ED8 这个函数里,因为他需要特征码来为你解密,当然这只是主观猜测,我们还没有详细分析8ED8这个函数
关于MBR调试 可以参考这篇文章https://www.52pojie.cn/thread-173889-1-1.html 我使用的是IDA
下断0X7C00


第一个调用的int 13h 功能号是42
关于int 13h的资料可以在百度上找到 我在这这里在找到了这篇,可能不是很详细:
https://bbs.csdn.net/topics/138412
https://en.wikipedia.org/wiki/INT_13H#INT_13h_AH=42h:_Extended_Read_Sectors_From_Drive
扩展读
入口:
AH = 42h
DL = 驱动器号
DS:DI = 磁盘地址数据包(Disk Address Packet)


也就是 读取扇区为0x22 的0x200个字节,并把它放在为0x8000这个位置
循环读取到0x8000

走完第一遍是1F也就是循环了32次

写入完成后MBR就执行完毕了接下来就跳转到0x8000 这里可以使用IDA脚本dump下来分析,但是我使用IDA反编译失败了,不知道什么原因,记录一下吧

Dump脚本
static main(void)
{
auto fp, begin, end, dexbyte;
fp = fopen(“F:\dump.so”, “wb”);
begin = 0x8000 ;
end = 0x9f70;
for ( dexbyte = begin; dexbyte < end; dexbyte ++ )
fputc(Byte(dexbyte), fp);
}
跳到0x8000 观察了一下 猜测可能是代码参杂着数据导致IDA反汇编失败了


有几个函数我们一个个看看

Int 10h 是由 BIOS 对屏幕及显示器所提供的服务程序
网上能找到很多对int 10h功能号和参数的详解 太长不贴了:
https://www.cnblogs.com/magic-cube/archive/2011/10/19/2217676.html
往下走


也是调用int 10中断的 往下

像是在解密什么 往下

又遇到了 int 13 42调用 读取的是0扇区也就是将原MBR复制到了0x7760

往下走

又是一些数据操作 往下

又遇到了int 13h 42号调用 这次复制的是36扇区到地址0x7978

复制的一些tor地址和特征码 在三环时候已经见到过了 继续往下

判断了加密标记 如果是加密过则跳过一些执行 往下

又调用了int 10 往下 执行完这里后 显示出了假的磁盘检查


往下走又发现调用了int 13h 42 读的是还是36扇区 地址0x776A

给加密标记赋值

往下走 看到了int 13 43功能号调用
扩展写
入口:
AH = 43h
AL
0 位 = 0 关闭写校验
1 打开写校验
1 - 7 位保留, 置 0
DL = 驱动器号
DS:DI = 磁盘地址数据包(DAP)
返回:
CF = 0, AH = 0 成功
CF = 1, AH = 错误码

地址是0x776A 扇区是36 也就将已经加密的标记写回36扇区

循环写入 往下走

这次是 int 13h 42 扇区37 地址0x676a

并没有发现什么


可能在做一些加解密的操作

还是 37扇区
像是已经被加密的扇区 写回了37 往下


39扇区 做了一些清0操作?
外层有一个循环

还是读取了0扇区 读取当前MBR的内容

往下 像是特征码搜索寻找一些数据

读了8扇区

看看读出了什么它感兴趣搜寻的东西,推测是遍历寻找活动分区

由于我不是很熟悉NTFS的结构 只是大概的看了一下发现:
https://baike.baidu.com/item/ntfs/91761?fr=aladdin

主文件表MTF是非常重要的,用来指出数据在磁盘中储存的位置,每个NTFS至少包含一个MTF
主文件表MTF是非常重要的,用来指出数据在磁盘中储存的位置,每个NTFS至少包含一个MTF

加密的MTF?
接下来这个函数显示了 里面函数显示了一些其他的内容(例如:计数:0%) 就不一一举例



112640是恶意软件计算整个MFT表的扇区数 往下

每次通过读取8扇区 然后加密扇区并写回硬盘 下面是正常的MTF

往下这个是加密MTF的函数 加密完成后


加密完成后写回原来的位置



这里不清除写入了什么 往下是一个大循环 应该是循环写入

往下还有一个大循环

这个循环跳出来之后就加密完成了

返回后还有一个大循环

完成后应该加密了全部MTF

再返回还有一个循环

完成后

INT 19会将MBR的512字节装载到内存0x7c00中,然后JUMP到0x7c00处,开始执行MBR的可执行程序
重新执行后检查加密标志位 就跳到这个函数 显示勒索信息 获取密钥解密函数应该都在里面,这里我就不做详细分析,别的文章有介绍解密过程,而且大概观察它的加密方式,应该是能解出来的

总结和收获:

学习到了反射式注入
学习了MBR的知识,和了解了一个系统是怎么启动起来的,分析了16位汇编 int中断非常重要
IDA大法好
Google大法好
感觉自己知识储备量不足,导致有些东西虽然看到了但是说不出它想干什么,贫穷和知识限制了我的想象力

病毒样本可以去:https://s.threatbook.cn/
https://www.hybrid-analysis.com/
https://zeltser.com/malware-sample-sources/ (这里有很多介绍)
上面这些也有云沙箱非常好用
还有可以关注一下国外的团队和博客,可以获取到最新的资讯和资料
比如: https://blog.malwarebytes.com/
https://www.fortinet.com/blog
等等很多优秀的博客(有些我可能现在还未察觉)

在这篇分析中对我有很大帮助的文章(有些可能需要科学上网):
https://blog.malwarebytes.com/threat-analysis/2016/04/petya-ransomware/ (Freebuf上有中文的)
https://hackinparis.com/data/slides/2017/2017_Alvarez_Raul_Dissecting_A_Ransomware_infected_MBR.pdf (非常详细英文)
http://blog.nsfocus.net/petya-technologically-challenging-imaginative-ransomware/ (绿盟)
https://connect.ed-diamond.com/MISC/MISC-086/Pleased-to-meet-you-my-name-is-Petya
https://www.fortinet.com/blog/threat-research/ransomware-and-the-boot-process.html
https://securelist.com/petya-the-two-in-one-trojan/74609/ (卡巴斯基的)

预防和查杀

不要打开不明的文件,蓝屏时候切断电源可以修复,因为此时MTF未加密,观察加密的方式应该是可以解密的,未使用非对称加密GitHub 上有https://github.com/leo-stone/hack-petya
查杀的话MD5或者特征码查杀

Petya勒索病毒(2016.4月样本)分析笔记相关推荐

  1. Petya勒索病毒爆发,腾讯安全反病毒实验室首发技术分析

    本文讲的是Petya勒索病毒爆发,腾讯安全反病毒实验室首发技术分析,据twitter爆料,乌克兰政府机构遭大规模攻击,其中乌克兰副总理的电脑均遭受攻击,目前腾讯电脑管家已经确认该病毒为Petya勒索病 ...

  2. 对待Petya勒索病毒的解决办法

    只需这四步,就能彻底防御Petya勒索病毒 2017-06-28 程序猿 6月27日,据国外媒体在twitter爆料,一种类似于"WannaCry"的新型勒索病毒席卷了欧洲,乌克兰 ...

  3. Petya勒索病毒及防范

    昨天,欧洲大部分国家遭受新一轮超强病毒,与之前的永恒之蓝有的一比,该病毒名为 Petya(后被卡巴斯基反转,认为应叫"ExPetr"),釆用(CVE-2017-0199)RTF漏洞 ...

  4. Petya勒索病毒疫苗出现,分分钟让电脑对病毒免疫

    继wannacry之后,Petya勒索软件攻击再次席卷全球,对欧洲.俄罗斯等多国政府.银行.电力系统.通讯系统.企业以及机场造成了不同程度的影响. 研究发现,Petya 会锁定磁盘的 MFT 和 MB ...

  5. Petya勒索病毒疫苗出现_分分钟让电脑对病毒免疫

    原文链接 继wannacry之后,Petya勒索软件攻击再次席卷全球,对欧洲.俄罗斯等多国政府.银行.电力系统.通讯系统.企业以及机场造成了不同程度的影响. 研究发现,Petya 会锁定磁盘的 MFT ...

  6. 【转载】撒旦(Satan 4.2)勒索病毒最新变种加解密分析

    [转载]原文来自:https://bbs.kafan.cn/thread-2135007-1-1.html 一.概述 近日,腾讯御见威胁情报中心检测到一大批的服务器被入侵,入侵后被植入勒索病毒.经过分 ...

  7. Azorult变种病毒样本分析笔记

    环境: Win 7 x32 专业版 工具: Exeinfope.火绒剑.PCHunter32.Wireshark.OD.IDA.ImpREC 样本信息: 文件: Shipping Documents_ ...

  8. .locked勒索病毒来势汹汹该怎么办?

    一.勒索病毒来势汹汹 从8月28日开始,多个社交媒体以及安全技术社区均有用户称遭遇".locked"后缀勒索病毒攻击,计算机文件被病毒加密,用户"中招"后,需支 ...

  9. devos勒索病毒解决办法|devos勒索病毒解密|devos勒索病毒专杀工具|devos勒索病毒如何感染电脑

    .devos后缀勒索病毒解密工具|勒索病毒解密恢复|devos勒索病毒解密|devos勒索病毒文件恢复|数据库恢复 devos勒索病毒解决办法|devos勒索病毒解密|devos勒索病毒专杀工具|de ...

最新文章

  1. 【SICP练习】9 练习1.15
  2. gitosis使用笔记
  3. 模式扩展 ——简单工厂+配置文件解除耦合 *****
  4. SAP UI5 ResponsiveGridLayout
  5. socket,TCP/IP的理解(转)
  6. ZOJ 2165 Red and Black
  7. Jenkins发布spring boot到hub.Docker 方法
  8. 操作系统 cpu调度_CPU调度| 操作系统
  9. Mybatis的Mapper代理
  10. 线性表的链式存储实现
  11. 移动端字体小于12px的解决方案
  12. Amazon Alexa通过云控制Bluetooth Mesh设备
  13. 11 寻找峰值(Find Peak Element)
  14. 利用Docker 映射到主机端口 32768 ,通过浏览器访问web应用失败
  15. vue2、vue3中自定义v-model的使用和区别
  16. 分享一款多功能免费SEO工具箱-从0开始打造高流量网站
  17. [论文阅读]Auto-Encoder Guided GAN for ChineseCalligraphy Synthesis
  18. 投资理财的十大经典电影
  19. 电力电子:单项逆变器设计(MATLAB程序+AD原理图)
  20. MSP430G2553与MSP430F5336系列单片机总结[0]——概述

热门文章

  1. Cadence 的 Orcad Capture CIS 使用鼠标右键的Show Footprint无法查看元件封装图的问题的解决方法
  2. 苹果浏览器Safari
  3. Python 利用多线程进行爬虫(一)
  4. pdf转换成jpg转换器教程
  5. 2021年全网最细 VirtualBox 虚拟机安装 Ubuntu 20.04.2.0 LTS及Ubuntu的相关配置
  6. 上亿会员 为b站会员购众筹项目打下消费基础
  7. 基于Mathcad的LLC公式推导与化简(一)
  8. 第十章 搭建nRF52开发环境(SES)
  9. 如何将大量图片文件合并成一个*.bin文件
  10. 内网服务器如何提供外网远程连接访问