来都来了,不顺手收藏评论点赞么?

【原创】通过NTFS交换数据流进行攻击溯源

Windows Wangyeyu2015 1581℃

注:以下内容建议在win10及以上操作系统的NTFS格式分区下复现。

近期博主在使用7-Zip,时,发现了一个很有意思的选项,叫做“交替数据流”。

经过博主研究过,发现这个还是挺有趣的,所以今天博主分享一下关于NTFS交换数据流的溯源方法。

首先,我们在任意网站下载一个文件。

然后,我们运行打开7-Zip目录下的“7zFM.exe”。(没有安装7-Zip,可以在在这里下载 https://www.7-zip.org

再然后我们找到刚刚下载的文件。

选择刚刚下载的文件,右击,选择“交替数据流”。

可以看到打开了一个新的窗口,路径是下载文件的文件名加一个冒号,里面有一个叫做“Zone.Identifier”的文件。

我们选择他,右键,选择“查看(V)”

可以看到7-Zip运行了一个记事本打开了一个名字叫做“CyberChef_ZH_CN-master.zip:Zone.Identifier”的文件。

文件内容有两个字段,一个是“ZoneId”,另一个是“HostUrl”。

然后我们找到浏览器的下载记录,一对比就发现,HostUrl字段记录的就是我们刚刚下载文件的下载连接。

那么问题来了,为什么下载文件的时候,会被产生一个“:Zone.Identifier”文件呢?

我们可以在 https://stackoverflow.com/questions/1809725/ntfs-alternate-data-streams 找到答案,这类文件属于NTFS分区的交换数据流,而我们刚刚看到的“CyberChef_ZH_CN-master.zip:Zone.Identifier”文件则是浏览器在文件下载时所创建的一个交换数据流,里面的“ZoneId”字段被用作表示文件的来源,例如表示文件来源于互联网或者来源于本地创建等等,具体的定义如下:

typedef enum tagURLZONE { 
  URLZONE_INVALID         = -1,                //这是一个无效区域,仅在没有合适的区域可用时使用。
  URLZONE_PREDEFINED_MIN  = 0,
  URLZONE_LOCAL_MACHINE   = 0,         //此区域用于用户本地计算机上已有的内容。
  URLZONE_INTRANET,                             //此区域用于在 Intranet 上找到的内容。
  URLZONE_TRUSTED,                               //此区域用于 Internet 上的受信任网站。
  URLZONE_INTERNET,                              //此区域用于来自 Internet 的内容,受信任或限制区域中列
                                                                  //    出的网站除外。
  URLZONE_UNTRUSTED,                          //此区域用于不受信任的网站。
  URLZONE_PREDEFINED_MAX  = 999,
  URLZONE_USER_MIN        = 1000,
  URLZONE_USER_MAX        = 10000
} URLZONE

我们刚刚所看到的“ZoneId=3”则对应“URLZONE_INTERNET”,表示这个文件来源于互联网。

而“HostUrl”则表示文件的下载连接。

除此之外,“:Zone.Identifier”根据实际情况还可能保存有“ReferrerUrl”、“AppZoneId”、“HostIpAddress”、“LastWriterPackageFamilyName”等字段,均可以助于我们溯源。

当我们在取证中找到恶意样本时,便可使用此方法找到恶意样本的下载来源。

博主就曾使用此方法在取证时,溯源到恶意样本来源于某钓鱼网站。

最后,希望大家有所收获。

转载请注明:夜羽的博客 » 【原创】通过NTFS交换数据流进行攻击溯源

喜欢 (4)or分享 (0)
隐藏
变装