欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Petya变种勒索蠕虫启动代码分析

来源:本站整理 作者:佚名 时间:2017-07-29 TAG: 我要投稿

背景
继5月的WannaCry勒索蠕虫事件以后,2017年6月又出现了Petya变种勒索蠕虫,除了利用永恒之蓝漏洞和加密勒索以后,Petya变种与WannaCry有比较大的差别。WannaCry会加密机器上的文件,导致数据损毁,而Petya更为激进,它会加密系统的MBR直接导致机器无法启动,本文对其执行的MBR及文件系统的加密机制做详细的分析。
恶意代码分析
由于执行恶意操作的指令并不是以文件形式存在,我们使用WinHex工具提取受攻击机器的磁盘前23个扇区的数据进行分析,对应代码数据的Hash为 841e12729f200a5620859f2958e2d484 。
相关数据结构
计算机启动时执行完BIOS的启动代码,检查各硬件设备正常后,JMP到MBR的引导代码进行执行;然后由MBR引导至活动分区的DBR,再由DBR引导操作系统。如:DBR调用NTLDR,再由NTLDR调用系统内核。
Petya病毒修改了系统的MBR,病毒在Bios加载后获得执行机会,病毒将加载存储在0×1扇区后的大小为0×20大小的病毒代码加载执行,这些代码会还原出真实的MBR,通过对还原出来的MBR解析,得到系统的DBR,通过DBR解析到系统的MFT结构,遍历所有的MFT,根据MFT找到文件内容所在的扇区后,读取该扇区加密内容后再写回到扇区中,从而实现对文件的加密。要完整的了解整个的加密过程,首先就是熟悉系统的MBR、DBR、MFT等结构的含义与功能。
MBR
Petya病毒修改了系统的MBR,病毒在Bios加载后获得执行机会,病毒将加载存储在0×1扇区后的大小为0×20大小的病毒代码加载执行,这些代码会还原出真实的MBR。在加密文件的过程中,Petya病毒会使用到MBR中
MBR扇区由以下四部分组成:
Ø 引导代码:引导代码占MBR分区的前440字节,负责整个系统启动。如果引导代码被破坏,系统将无法启动。
Ø Windows磁盘签名:占引导代码后面的4字节,是Windows初始化磁盘写入的磁盘标签,如果此标签被破坏,则系统会提示“初始化磁盘”。
Ø MBR分区表:占Windows磁盘标签后面的64个字节,是整个硬盘的分区表。
Ø MBR结束标志:占MBR扇区最后2个字节,一直为“55 AA”。
MBR结构如下:
;====================================================================
;    主引导记录(MBR)结构
;====================================================================
; typedef struct _MASTER_BOOT_RECORD
; {
;  UCHAR    BootCode[446];
;  PARTITION_ENTRY  Partition[4];
;  USHORT    Signature;
; }MASTER_BOOT_RECORD,*PMASTER_BOOT_RECORD;
;
;====================================================================
;====================================================================
;     分区表项结构(16字节)
;====================================================================
;
; typedef struct _PARTITION_ENTRY
; {
;  UCHAR BootIndicator;  // 能否启动标志
;  UCHAR StartHead;   // 该分区起始磁头号
;  UCHAR StartSector;  // 起始柱面号高2位:6位起始扇区号
;  UCHAR StartCylinder;  // 起始柱面号低8位
;  UCHAR PartitionType;  // 分区类型
;  UCHAR EndHead;   // 该分区终止磁头号
;  UCHAR EndSector;   // 终止柱面号高2位:6位终止扇区号
;  UCHAR EndCylinder;  // 终止柱面号低8位
;  ULONG StartLBA;   // 起始扇区号
;  ULONG TotalSector;  // 分区尺寸(总扇区数); }PARTITION_ENTRY,*PPARTITION_ENTRY;
对于其中的PartitionType 字段,Windows下可识别的分区类型主要有:
0×07 表示普通分区(Windows分区、数据分区。默认分区类型 )。
0xEE 表示该分区表是PMBR,紧随其后的应该是GPT分区表头和GPT分区表,因此这是一块GPT硬盘。
0xEF 表示EFI系统分区
Petya在解密出原始的MBR后,解析MBR结构,得到起始扇区号,并根据起始扇区定位到DBR。
病毒解析MBR时,会对分区类型做判断,如果PMBR和EFI类型的系统分区,默认会不做处理。
在010edit工具中查看

判断分区类型,取了这两个字段:开始扇区与扇区大小:

在启动扇区(也就是63扇区)处,读一个扇区的内容,就是DBR结构
从MBR中可以定位到MBR分区表,根据分区表的属性就可以得到活动分区的扇区地址,也就得到了DBR结构地址。
DBR
DBR中存放着关于文件系统的重要参数信息以及系统引导代码。病毒解析到DBR后,只是为了取的DBR结构中的 MftStartLcn 字段(这个字段表明了MFT结构所在的扇区地址),以便能进一步定位文件系统。
DBR的结构如下:
//////////////////////////////////////////////////////////////////////////// 
// 
//  NTFS 的DBR 数据结构 
// 
//////////////////////////////////////////////////////////////////////////// 
typedef struct _BIOS_PARAMETER_BLOCK {  
/*+0x0B*/    uint16  BytesPerSector;    // 字节/扇区一般为0x0200 即512 
/*+0x0D*/    uchar   SectorsPerCluster; // 扇区/簇  

[1] [2] [3] [4] [5] [6] [7] [8]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载