Petya勒索软件如何感染主引导扇区

📅 2017-07-10 📂 资源中心

    上周,我们开始了对Petya(也叫NotPetya)及其所谓的“killswitch”的技术分析。在该博文中,我们提到Petya在Windows文件夹中查找与其自身具有相同文件名(无扩展名)的文件(例如:C:\ Windows \ Petya)。如果它存在,它将通过调用ExitProcess终止,如果不存在,它将创建一个具有DELETE_ON_CLOSE属性的文件。这似乎意味着这个文件不是一个killswitch,而是用来检验和查看系统是否已被感染的标记。

    文件被创建后,Petya继续执行其磁盘访问功能。

    Petya首先打开C:卷,并使用IOCTL_DISK_GET_DRIVE_GEOMETRY控制代码调用DeviceIoControl API,该代码检索有关物理磁盘的几何信息,特别是每个扇区的字节数。 它通过调用LocalAlloc分配固定内存,然后用新分配的字节重写C:卷的第二个扇区。这是卷引导记录运行引导加载程序(NTLDR)的位置,至少在Windows XP系统中,这将破坏引导顺序。

图1 第二扇区,重写之前和之后

接下来,它检查其进程标志以确定是否使用其代码重写MBR,或仅仅是将其损坏。该进程标志在它搜索内存中的某些进程时被设置得较早。如果此标志表示进程“avp.exe”被找到,它将继续我们调用的corrupt_mbr函数。如果其进程标志表示未找到进程“avp.exe”,它将进入我们调用的overwrite_mbr_func函数,该函数将替换MBR。

图2 检查进程标志

    上图2所示的函数corrupt_mbr只是将未初始化的内存(0xBAADF00D)的字节写入磁盘的前10个扇区,这些代码将使使磁盘无法启动。

    另一个函数overwrite_mbr_func是恶意软件尝试用自己的代码重写MBR的地方。

    Petya通过文件名为\\.\ PhysicalDrive0调用CreateFileA API开始,这对应于主引导记录。然后它使用IOCTL_DISK_GET_PARTITION_INFO_EX控制代码调用DeviceIoControl来检索有关MBR分区的类型,大小和性质的扩展信息。它使用此信息来检查PARTITION_INFORMATION_EX结构的PartitionStyle成员是否确实是MBR。

    然后Petya使用CryptGenRandom API生成60(0x3C)个随机字节,并使用索引和这60个随机字节生成个人安装密钥。

图3 生成个人安装密钥的索引功能

    请注意,这个生成的密钥是作为赎金消息的一部分向用户显示的内容。

图4 生成的个人安装密钥

    接下来,恶意软件从物理驱动器的第一个扇区读取0x200个字节,并将字节异或7。这稍后被存回到扇区34的磁盘中。为了检查磁盘是否足够大以存储其恶意引导加载程序,它会读取最后一个分区的LBA值(它给出了磁盘的柱面,磁头和扇区的位置),以确保其大于0x28。

    在接下来的几个步骤中,Petya取代物理驱动器的各个扇区:

- 扇区0-18被替换为自己的恶意MBR代码,确保保留原始的磁盘签名和分区条目。

- 扇区32被替换为Salsa20密钥/随机数,个人安装密钥和比特币地址(如下面的图5所示)。

- 扇区33用'07'的十六进制字节填充。

- 扇区34用异或7的原始的MBR的第一扇区填充。

图5 写入33扇区的字节

    如果重写过程中的任何步骤失败,Petya将通过调用其corrupt_mbr函数进行报复(参见图2)。正如我们提到的,这个功能会破坏磁盘的前10个扇区,使其无法启动。

    目前,Petya的攻击可能已经放缓,但这并不意味着我们可以对我们的系统安全感到满足。最近该恶意软件的爆发显示,即使全世界各地在知道WannaCry造成的损害之后,任然有很多系统没有打上防御该恶意软件的补丁。在这次Petya爆发之后,我们真的没有任何借口不给系统及时打上相应的补丁。但我们不能仅仅打上补丁,一个好的防御系统可以大大减少新的恶意软件的威胁。

MD5: 71b6a493388e7d0b40c83ce903bc6b04

Fortinet保护

AV签名

W32/ Petya.EOB!TR

W32/ Agent.YXH!TR

其他签名正在探讨中。

IPS签名

MS.Office.RTF.File.OLE.autolink.Code.Execution

创建2017年4月13日
最后更新2017年6月19日

MS.SMB.Server.SMB1.Trans2.Secondary.Handling.Code.Execution

创建2017年3月14日
最后更新2017年6月5日

此外,Fortinet WannaCry IPS规则似乎可以防止针对这些漏洞的利用。 Fortinet团队正在验证此声明。

沙箱检测:

Fortinet Sandbox(FSA)检测到此攻击。

TOR通讯

通过AppControl签名阻止TOR出站流量。

针对Petya的微软紧急更新

Microsoft Windows SMB Server的安全更新:2017年3月14日

Office 2016安全更新:2017年4月11日


                                                                                                                                                                                                中国可信云社区译

← 返回资源中心