针对澳大利亚发动攻击:深入分析Gustuff银行僵尸网络
导语:Cisco Talos团队发现了针对澳大利亚金融机构的新型Android恶意活动。随着调查的不断深入,Talos团队发现这项恶意活动与此前在澳大利亚发现的“ChristinaMorrow”短信垃圾邮件骗局有所关联。
一、摘要
Cisco Talos团队发现了针对澳大利亚金融机构的新型Android恶意活动。随着调查的不断深入,Talos团队发现这项恶意活动与此前在澳大利亚发现的“ChristinaMorrow”短信垃圾邮件骗局有所关联。
尽管这种恶意软件的凭据获取机制不是特别复杂,但该系列恶意软件确实具有非常先进的自我保护机制。恶意软件并非传统的远程访问工具(RAT),并且此次的恶意活动似乎主要针对个人用户。除了凭据窃取之外,恶意软件还将窃取用户联系人列表、收集电话号码相关联的人名、收集用户设备上的文件和照片。然而,这一事实并不意味着企业和组织没有受到此次恶意活动的影响。企业和组织仍然需要留意这种类型的木马活动,因为攻击者可能会获取到企业使用的银行账户,这些账户中往往会有大量资金。
根据恶意软件收集到的信息,结合恶意软件对受害者移动设备的控制权限,允许攻击者对目标用户发起更加复杂的社会工程学攻击。一些专注于特定目标的攻击者可以借助该木马来获取用户名和密码,然后重复使用这些用户名及密码,尝试登录受害者任职的组织的系统。在实际案例中,基于短信的双因素身份验证将不起作用,因为此时攻击者可以读取受害者的短信内容,这也是一个绕过双因素认证的典型案例。企业可以通过部署基于客户端的双因素身份验证(例如:Duo Security)来保护自身免受这类侧信道攻击的威胁。
这种恶意软件最令人印象深刻的功能之一,就是它保持了非常强大的重新控制能力。如果命令与控制(C2)服务器被关闭,恶意攻击者仍然可以通过直接向受感染设备发送短信的方式来恢复对恶意软件的控制。这样一来,就使得取缔恶意活动和清除恶意软件威胁变得更加困难,并为防御者带来了相当大的挑战。
二、恶意活动分析
该恶意软件的主要感染媒介是短信。就如同经典的邮件蠕虫病毒会选择受害者的邮件通讯录作为下一个传播目标一样,这个银行木马利用受害者已经泄露的通讯录,从中选择目标,根据接收到的C2指令进行传播。
受害者将收到命令sendSMSMass。通常,该消息一次会针对4-5人发送,其正文包含一条消息和一个URL。与电子邮件攻击模式相同,这里采用的思路是,如果短信来自他们所认识的人,那么新的目标受害者就很有可能安装恶意软件。当受害者尝试访问短信正文中的URL时,C2将会检查移动设备是否符合接收恶意软件的标准(详细请阅读基础架构部分)。如果设备不符合标准,则不会收到任何数据,否则该设备将会被重定向到第二台服务器,以接收即将在该设备上安装的恶意软件的副本。
该恶意活动的域名在2019年1月19日注册。但是,Talos团队已经确定,至少从2018年11月开始,该攻击者就已经使用这一域名。在研究期间,Talos团队还确认攻击者使用了相同的基础设施来部署不同版本的恶意软件,并将其用于类似的恶意活动之中。
Talos有充分证据表明,该恶意活动主要针对澳大利亚的金融机构。我们使用Umblella进行遥测,结果表明,大部分请求都来自澳大利亚,并且大多数被感染的电话号码都是澳大利亚的国际区号。此外,特定的覆盖图片是攻击者针对澳大利亚的金融机构而精心设计的,澳大利亚也是C2接受的地理区域之一。
该恶意活动的规模似乎没有快速增长。根据我们的统计数据显示,平均每小时会向投放恶意软件的主机发送3次请求。该请求仅在安装过程中执行,但不保证将会被安装。当我们对调查过程中接收到的一些短信命令进行分析时,我们发现,恶意攻击者正在积极地传播恶意软件,但似乎没有达到预想的新增感染数量。
如上图所示,我们可以看到该恶意软件覆盖到正常界面上的示例,该行为也同样作为此恶意活动中的一部分。
在进行调查时,我们已经能够识别出具有不同名称的其他恶意软件包。其中的一些,可能已经用于此前的恶意活动,或者是为新的恶意活动而准备的。
三、恶意软件技术细节
在我们的调查过程中,研究人员发现了一种名为“Gustuff”的恶意软件。由于缺乏该恶意软件的相关妥协指标(IoC),我们决定首先分析该恶意软件是否与我们一直在研究的恶意软件相同。我们的威胁情报团队发现,Gustuff恶意软件在Exploit.in论坛上作为僵尸网络出售。而其卖方,名称为“bestoffer”,在某种程度上已经被该论坛驱逐。
上图中展示的公司来自澳大利亚,与我们研究的恶意活动所针对的目标相匹配。作者提供的屏幕截图,与我们在分析过程中发现的恶意软件功能一致。
在管理面板中,显示应用程序的配置,该配置与C2中的命令相匹配。
管理控制台的屏幕截图中还展示了按照国家筛序结果的功能。在这里,“AU”是显示的代码,代表澳大利亚。
根据这些信息,Talos高度认为二者实质上是相同的,我们所分析的正是Gustuff恶意软件。
3.1 设计
在manifest中,恶意软件请求大量权限。但是,它并不会请求BIND_ADMIN等敏感权限。为了执行某些活动,恶意软件在设备内部不需要太高的权限,我们首先要明确这一点。
该恶意活动的C2和恶意软件的代码中,都具有一些保护措施。恶意软件代码不仅被混淆,而且还经过了加壳。加壳后的代码不仅使得静态分析变得更加复杂,而且还会破坏标准的调试器。
主要的恶意软件类被加壳,在manifest中定义的类具有DEX文件中不存在的MAIN类别的处理程序。
这种加壳方式的一个副作用是,使得Android Studio IDE无法对代码进行调试。其原因在于,IDE通过调用manifest中按照名称声明的活动来执行Android Debug Bridge(ADB)中的代码。由于该类在启动时不存在,因此应用程序不会在调试器上运行。Talos团队分析了脱壳后版本的代码,但这一分析过程已经超出了本文的涉及范围。
作为其自我保护手段的一部分,恶意软件Payload首先检查是否存在模拟器,以防范研究人员使用沙箱环境对其进行分析。它会检查不同类型的模拟器,包括QEMU、Genymotion、BlueStacks和Bignox。如果恶意软件确定它没有在模拟器上运行,则会进行其他检查,以确保自身不被检测到。
恶意软件还会检查Android SafetyNet是否处于活动状态,并向C2报告。这样的行为,有助于C2定义在移动设备检测到威胁之前可以执行的操作有哪些。
Payload可以检查移动设备上安装的反病毒软件,并长时间地进行自我保护。该木马使用Android Accessibility API来拦截用户和移动设备之间的所有交互。
在Android开发人员文档中,将可访问性事件类(Accessibility Event Class)描述为:“表示在用户界面上发生重要事件时,系统可见的可访问事件的类。例如,单击按钮时,某个视图将会被聚焦。”
该木马通过GLOBAL_ACTION_BACK动作来调用此函数,该动作相当于按下设备上的“后退”按钮,从而取消启动反病毒应用程序。
相同的事件拦截还被用于目标应用程序上,其目的是允许恶意软件显示覆盖的界面,从而拦截用户的凭据。
信标(Beaconing)仅在已安装应用程序,并且从正在运行的任务中移除后才会启动。
针对每个恶意软件安装,都会为其生成唯一的ID,从而保证令牌(Token)是唯一的。此前执行的一些检查的结果,将会立即发送至C2,例如:safetyNet、admin和defaultSMSApp。信标将会发送到URL:http://< SERVER>/api/v2/get.php,其时间间隔为60秒。
C2将检查国家字段,如果该字段为空,或者该国家不是目标国家,则它将会以“Unauthorized”(未授权)进行回复。否则,它将返回JSON编码的“OK”。当恶意软件接收到这种返回值时,将执行命令。
根据命令的名称,我们就可以判断出它的实际作用。命令将会作为信标的答复发出,其结果将返回到URL:http://<SERVER>/api/v2/set_state.php
命令以JSON格式发出,其中的混淆是恶意软件代码的一部分,并非由加壳器添加。这里使用的是一种自定义混淆方式,部分基于Base85编码方式,这种混淆方式对于恶意软件来说是很不寻常的。Base85编码通常用于PDF和PostScript文档。恶意软件的配置,使用了相同的混淆方案,存储在自定义首选项文件中。
3.2 激活周期
如上所述,恶意软件具有多种防御机制。除了进行混淆和环境检查之外,恶意软件还具有一些有趣的反沙箱机制。
在安装后,用户需要运行该应用程序。用户需要点击“关闭”按钮才能完成安装。但是,这并不会关闭应用程序,而是将其转到后台运行。尽管应用程序在后台,并且服务已经运行,但信标在此时不会启动。信标只会在应用程序从后台关闭后才会启动,最终将会停止。这也是服务启动信标的触发器。
如前文所述,信标每60秒发送一次。但是,直到inactiveTime字段的值大于2000000之后,才会从C2接收命令。在用户执行某些活动时,该值都将被重置。
在完成检查后,恶意软件变为活动状态,但首先,它会进行7个步骤,每个步骤中都将调用一个不同的命令。
1. uploadPhoneNumbers:对联系人列表中的所有电话号码进行初步处理。攻击者除了获取通讯录之外,还会使用短信作为初始感染载体,对联系人列表中的目标进行再次攻击。
2. checkApps:恶意软件查看是否已安装作为参数发送的软件包。该恶意软件的源代码中,包含以硬编码方式存储的209个软件包的列表。此外,C2也可以发送更新列表。
3. adminNumber:设置管理员的电话号码。在我们获取到的样本中,管理员的电话号码属于澳大利亚的移动网络。
4. changeServer:此时,恶意软件将C2更改为新的主机,但API和通信协议仍然与此前相同。
新服务器的URL经过混淆,从而阻止检测方式的有效识别。
5. changeActivity:该命令将设置Web视图,从而覆盖任何目标活动。
Web视图的注入过程并没有托管在C2上,而是托管在另一台完全不同的服务器上。
6. params:该命令允许恶意攻击者更改恶意软件中的配置参数。在激活周期的阶段,恶意软件增加了信标时间,从而避免被检测到。
7. changeArchive:激活周期的最后一个命令,是下载压缩包。该压缩包存储在具有Web视图的同一主机上。压缩包是一个包含多个文件的ZIP,受到密码保护。
在进行了这一激活周期之后,恶意软件将开始收集信息活动,并对外传播。
3.3 恶意活动
一旦激活周期结束后,木马将开始其恶意活动。具体执行的活动取决于设备配置。根据受害者是否具有任何目标应用程序、安装的反病毒软件、地理位置,恶意软件可以从目标应用程序中获取凭据、窃取个人信息,或者仅仅是使用受害者的设备发送短信以传播木马。
恶意软件会部署重叠的Web视图,以欺骗用户,并最终实现窃取用户的登录凭据。这些视图是针对攻击者想要检索的信息而精心设计的。在激活周期的第6步中,创建了第一个Web视图覆盖。
该覆盖界面,要求用户提供其PIN,以解锁移动设备。当用户输入后,该内容将立即被发送到C2。激活周期的下一步,是下载受到密码保护的ZIP文件。在该文件中,包含创建叠加层所需的所有HTML、CSS和PNG文件。Talos团队在压缩包中,发现了189个银行或加密货币交易所的LOGO,所有这些LOGO对应的组织都可以作为恶意软件的目标。该压缩包中还包含针对澳大利亚金融机构的所有必要代码。恶意攻击者使用命令changeActivity激活叠加的界面,这一点已经在激活周期的步骤5中进行了说明。在这种情况下,我们看到覆盖的HTML代码存储在C2基础结构中。但是,由于下载到设备的压缩包具有所有必要的信息,并且恶意攻击者也可以使用短信访问设备,因此即使没有C2基础结构,恶意攻击者也可以保持其恶意活动。
3.4 基础架构
支撑该恶意软件的基础架构相当复杂。很明显,在每个阶段都至少有2层结构。
基础设施具有多层,尽管大多数都不是以动态的方式,但每一层都可以提供一定程度的保护。所有IP地址都属于同一家公司,即Hetzner,这是一家德国的IP托管公司。
四、IoC
4.1 域名
Facebook-photos-au.su
Homevideo2-12l.ml
videohosting1-5j.gq
4.2 URL
hxxp://88.99.227[.]26/html2/2018/GrafKey/new-inj-135-3-dark.html
hxxp://88.99.227[.]26/html2/arc92/au483x.zip
hxxp://94.130.106[.]117:8080/api/v1/report/records.php
hxxp://88.99.227[.]26/html2/new-inj-135-3-white.html
hxxp://facebook-photos-au[.]su/ChristinaMorrow
hxxp://homevideo2-12l[.]ml/mms3/download_3.php
4.3 IP地址
78.46.201.36
88.99.170.84
88.99.227.26
94.130.106.117
88.99.174.200
88.99.189.31
4.4 哈希值
369fcf48c1eb982088c22f86672add10cae967af82613bee6fb8a3669603dc48
b2d4fcf03c7a8bf135fbd3073bea450e2e6661ad8ef2ab2058a3c04f81fc3f3e
8f5d5d8419a4832d175a6028c9e7d445f1e99fdc12170db257df79831c69ae4e
a5ebcdaf5fd10ec9de85d62e48cc97a4e08c699a7ebdeab0351b86ab1370557d
84578b9b2c3cc1c7bbfcf4038a6c76ae91dfc82eef5e4c6815627eaf6b4ae6f6
89eecd91dff4bf42bebbf3aa85aa512ddf661d3e9de4c91196c98f4fc325a018
9edee3f3d539e3ade61ac2956a6900d93ba3b535b6a76b3a9ee81e2251e25c61
0e48e5dbc3a60910c1460b382d28e087a580f38f57d3f82d4564309346069bd1
c113cdd2a5e164dcba157fc4e6026495a1cfbcb0b1a8bf3e38e7eddbb316e01f
1819d2546d9c9580193827c0d2f5aad7e7f2856f7d5e6d40fd739b6cecdb1e9e
b213c1de737b72f8dd7185186a246277951b651c64812692da0b9fdf1be5bf15
453e7827e943cdda9121948f3f4a68d6289d09777538f92389ca56f6e6de03f0
0246dd4acd9f64ff1508131c57a7b29e995e102c74477d5624e1271700ecb0e2
88034e0eddfdb6297670d28ed810aef87679e9492e9b3e782cc14d9d1a55db84
e08f08f4fa75609731c6dd597dc55c8f95dbdd5725a6a90a9f80134832a07f2e
01c5b637f283697350ca361f241416303ab6123da4c6726a6555ac36cb654b5c
1fb06666befd581019af509951320c7e8535e5b38ad058069f4979e9a21c7e1c
6bdfb79f813448b7f1b4f4dbe6a45d1938f3039c93ecf80318cedd1090f7e341
五、附加信息
该恶意软件将监控如下软件包:
pin.secret.access
com.chase.sig.android
com.morganstanley.clientmobile.prod
com.wf.wellsfargomobile
com.citi.citimobile
com.konylabs.capitalone
com.infonow.bofa
com.htsu.hsbcpersonalbanking
com.usaa.mobile.android.usaa
com.schwab.mobile
com.americanexpress.android.acctsvcs.us
com.pnc.ecommerce.mobile
com.regions.mobbanking
com.clairmail.fth
com.grppl.android.shell.BOS
com.tdbank
com.huntington.m
com.citizensbank.androidapp
com.usbank.mobilebanking
com.ally.MobileBanking
com.key.android
com.unionbank.ecommerce.mobile.android
com.mfoundry.mb.android.mb_BMOH071025661
com.bbt.cmol
com.sovereign.santander
com.mtb.mbanking.sc.retail.prod
com.fi9293.godough
com.commbank.netbank
org.westpac.bank
org.stgeorge.bank
au.com.nab.mobile
au.com.bankwest.mobile
au.com.ingdirect.android
org.banksa.bank
com.anz.android
com.anz.android.gomoney
com.citibank.mobile.au
org.bom.bank
com.latuabancaperandroid
com.comarch.mobile
com.jpm.sig.android
com.konylabs.cbplpat
by.belinvestbank
no.apps.dnbnor
com.arkea.phonegap
com.alseda.bpssberbank
com.belveb.belvebmobile
com.finanteq.finance.ca
pl.eurobank
pl.eurobank2
pl.noblebank.mobile
com.getingroup.mobilebanking
hr.asseco.android.mtoken.getin
pl.getinleasing.mobile
com.icp.ikasa.getinon
eu.eleader.mobilebanking.pekao
softax.pekao.powerpay
softax.pekao.mpos
dk.jyskebank.mobilbank
com.starfinanz.smob.android.bwmobilbanking
eu.newfrontier.iBanking.mobile.SOG.Retail
com.accessbank.accessbankapp
com.sbi.SBIFreedomPlus
com.zenithBank.eazymoney
net.cts.android.centralbank
com.f1soft.nmbmobilebanking.activities.main
com.lb.smartpay
com.mbmobile
com.db.mobilebanking
com.botw.mobilebanking
com.fg.wallet
com.sbi.SBISecure
com.icsfs.safwa
com.interswitchng.www
com.dhanlaxmi.dhansmart.mtc
com.icomvision.bsc.tbc
hr.asseco.android.jimba.cecro
com.vanso.gtbankapp
com.fss.pnbpsp
com.mfino.sterling
cy.com.netinfo.netteller.boc
ge.mobility.basisbank
com.snapwork.IDBI
com.lcode.apgvb
com.fact.jib
mn.egolomt.bank
com.pnbrewardz
com.firstbank.firstmobile
wit.android.bcpBankingApp.millenniumPL
com.grppl.android.shell.halifax
com.revolut.revolut
de.commerzbanking.mobil
uk.co.santander.santanderUK
se.nordea.mobilebank
com.snapwork.hdfc
com.csam.icici.bank.imobile
com.msf.kbank.mobile
com.bmm.mobilebankingapp
net.bnpparibas.mescomptes
fr.banquepopulaire.cyberplus
com.caisseepargne.android.mobilebanking
com.palatine.android.mobilebanking.prod
com.ocito.cdn.activity.creditdunord
com.fullsix.android.labanquepostale.accountaccess
mobi.societegenerale.mobile.lappli
com.db.businessline.cardapp
com.skh.android.mbanking
com.ifs.banking.fiid1491
de.dkb.portalapp
pl.pkobp.ipkobiznes
pl.com.suntech.mobileconnect
eu.eleader.mobilebanking.pekao.firm
pl.mbank
pl.upaid.nfcwallet.mbank
eu.eleader.mobilebanking.bre
pl.asseco.mpromak.android.app.bre
pl.asseco.mpromak.android.app.bre.hd
pl.mbank.mnews
eu.eleader.mobilebanking.raiffeisen
pl.raiffeisen.nfc
hr.asseco.android.jimba.rmb
com.advantage.RaiffeisenBank
pl.bzwbk.ibiznes24
pl.bzwbk.bzwbk24
pl.bzwbk.mobile.tab.bzwbk24
com.comarch.mobile.investment
com.android.vending
com.snapchat.android
jp.naver.line.android
com.viber.voip
com.gettaxi.android
com.whatsapp
com.tencent.mm
com.skype.raider
com.ubercab
com.paypal.android.p2pmobile
com.circle.android
com.coinbase.android
com.walmart.android
com.bestbuy.android
com.ebay.gumtree.au
com.ebay.mobile
com.westernunion.android.mtapp
com.moneybookers.skrillpayments
com.gyft.android
com.amazon.mShop.android.shopping
com.comarch.mobile.banking.bgzbnpparibas.biznes
pl.bnpbgzparibas.firmapp
com.finanteq.finance.bgz
pl.upaid.bgzbnpp
de.postbank.finanzassistent
pl.bph
de.comdirect.android
com.starfinanz.smob.android.sfinanzstatus
de.sdvrz.ihb.mobile.app
pl.ing.mojeing
com.ing.mobile
pl.ing.ingksiegowosc
com.comarch.security.mobilebanking
com.comarch.mobile.investment.ing
com.ingcb.mobile.cbportal
de.buhl.finanzblick
pl.pkobp.iko
pl.ipko.mobile
pl.inteligo.mobile
de.number26.android
pl.millennium.corpApp
eu.transfer24.app
pl.aliorbank.aib
pl.corelogic.mtoken
alior.bankingapp.android
com.ferratumbank.mobilebank
com.swmind.vcc.android.bzwbk_mobile.app
de.schildbach.wallet
piuk.blockchain.android
com.bitcoin.mwallet
com.btcontract.wallet
com.bitpay.wallet
com.bitpay.copay
btc.org.freewallet.app
org.electrum.electrum
com.xapo
com.airbitz
com.kibou.bitcoin
com.qcan.mobile.bitcoin.wallet
me.cryptopay.android
com.bitcoin.wallet
lt.spectrofinance.spectrocoin.android.wallet
com.kryptokit.jaxx
com.wirex
bcn.org.freewallet.app
com.hashengineering.bitcoincash.wallet
bcc.org.freewallet.app
com.coinspace.app
btg.org.freewallet.app
net.bither
co.edgesecure.app
com.arcbit.arcbit
distributedlab.wallet
de.schildbach.wallet_test
com.aegiswallet
com.plutus.wallet
com.coincorner.app.crypt
eth.org.freewallet.app
secret.access
secret.pattern
发表评论