对Red Alert v2.0银行木马的逆向和溯源分析

阅读量    38974 | 评论 1

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

 

事情的起源

这一切都始于一个垃圾邮件,它带有着一个Android应用程序附件。垃圾邮件模糊地声称,该附件是一个名为SilverBox 寻找匿名性交朋友的约会应用程序。
图1.垃圾邮件示例

垃圾邮件示例

这与我们平时在windows上接受到的恶意邮件和附件所不同,恶意邮件附带一个apk(Android Package Kit)文件是非常不寻常的,值得耐人寻味。我们的好奇心得到了激发并决定潜入并分析它。

 

初步分析

通过使用Apktool对APK文件进行解压缩和解码来开始分析,我们马上注意到代码被进行了严重的混淆。
图2. DEX文件严重混淆

DEX文件严重混淆

然后我们检查根目录中的AndroidManifest.xml文件。
AndroidManifest.xml 是每个android程序中必须的文件,它位于整个项目的根目录。我们每天都在使用这个文件,往里面配置程序运行所必要的组件,权限,以及一些相关信息。清单文件显示看似随机命名的应用程序原始软件包名称。

图3.应用程序的包名称应用程序的包名称

该应用程序的目标SDK版本代码是Android Marshmallow及更高版本,如上图所示。这字段platformBuildVersionCode中指示我们看到这个应用程序需要的Android权限列表

图4.应用程序的Android权限应用程序的Android权限

其中的大多数权限不仅让人发出疑问
包括权限如:WRITE_SMS,READ_SMS,RECEIVE_SMS。CALL_PHONE,CHANGE_NETWORK_STATE。
我们已经在此表中编译了此应用程序需要的所有Android权限:

该软件请求的权限

我们继续使用Android Studio的AVD(Android虚拟设备)在模拟器上安装该应用程序。
正如你所看到的,应用程序需要被用户激活才能使用它。
图5.这个恶意应用程序需要被用户激活

需要被用户激活

在这个阶段,我们希望更好地理解代码,但我们发现很难绕过混淆。我们尝试使用IDAPro远程调试应用程序,这很痛苦和乏味。我们做的另一件事是让恶意软件运行,然后转储设备的内存。这帮助我们从应用程序中找到恶意软件配置和字符串。虽然这很有帮助,但仍然不够,我们需要反编译的源代码才能充分了解此恶意软件的工作原理。

在设备中,我们使用Android调试桥(ADB)工具搜索更多有趣的数据,并找到应用程序的VDEX和ODEX文件。
图6. .vdex文件位于设备中应用程序的OAT(Ahead of Time)编译文件夹中

。VDEX文件包含APK的未压缩的DEX(Dalvic可执行)代码,而ODEX包含APK中的方法的前期编译代码。 所以,我们下一步就是使用vDexExtractor工具反编译VDEX文件。

vDexExtractor工具命令行将.vdex文件转换为.dex文件

在反编译并将.VDEX转换为.DEX文件后,我们使用JADX工具将.DEX文件转换为.JAR文件。然后我们可以使用IntelliJ / Android Studio或任何可用的Java反编译器等工具反编译.JAR文件。

Android恶意软件被反编译。在这个屏幕截图中显示的是Bot的命令
Android恶意软件被反编译。在这个屏幕截图中显示的是Bot的命令,获得一些Java代码后,下一步是详细的静态分析。

 

恶意软件的主要架构

恶意软件的主要体系结构分为以下主要类别:

数据库访问

  • 存储在SQLite中的数据。命令也存储在这个数据库中,并且主要通过这个层来处理。
    SQLlite数据库由恶意软件创建以存储命令,短信列表和模板

SQLlite数据库由恶意软件创建以存储命令,短信列表和模板

电话相关

  • 设置默认电话软件包,实用功能(获取设备ID,SIM卡序列号,行号等)
    图10.设置默认的电话包

设置默认的电话包

服务响应处理程序

  • 响应回复并可能向命令和控制(C&C)服务器发起新请求。一些响应处理程序是:
    GetTemplateHandler
    PostCallListHandler
    PostContactListHandler
    ServerCommandHandler – 主要通过写入数据库来控制恶意软件
    RegisterDeviceHandler
    SendSmsListResponseHandler
    GetSmsListResponseHandler

相关的网络连接

  • 该层将设备注册为bot,确保连接在线,发布通话列表,短信列表等等,其回复将由Service ResponseHandlers处理

服务

  • 处理被拦截的意图。其中一些服务处理恶意软件的生命周期并确保恶意软件始终运行。这些服务的一些例子是:
    WatchDogService:设置定时器以确保恶意软件定期运行。
    ControlService:注册设备机器人,并启动ReadCommandThread:等待C&C服务器的指示
    确保设备已连接到C&C服务器
    BootReceiver:确保所有功能在计算机重新启动时运行。该启动接收器确保看门狗服务每10秒或30秒运行一次,具体取决于操作系统的版本。

用户界面

  • 向用户请求权限,并将从C&C服务器接收的一些模板覆盖在其他应用程序的顶部,以进一步欺骗用户,包括启用设备管理员访问权限。

 

恶意软件主要特点

恶意软件将自己设置为默认电话提供商,主要用于拦截SMS消息。C&C服务器可以控制要拦截的电话号码列表。来自这些号码的消息可能对用户隐藏。截获的消息也被发送到C&C服务器。这可以用于拦截当前大多数手机验证的短信验证码,包括网上银行。

设备管理员访问

恶意软件可以完全访问设备,包括完全清除设备中的所有数据。该恶意软件具有用于启用设备管理员访问的UI,且不允许您在启用后禁用它。

僵尸机和C&C通信

被攻击主要通过使用HTTP POST请求来传递特定的URL。如果不可用,它将尝试通过Twitter消息获得另一项服务。HTTP POST主体不使用花哨的加密,只用Base64编码。
这个URI的格式是:http:// controlserver / <messagetype> /
支持以下消息类型:
stbi – 注册设备及其编号,iccid,模型,imei,os和lang。
sy – 从服务器传递它的bot_id,imei,type,以及是否启用设备管理的命令。以下是攻击者可能执行的命令列表:
startSmsInterception
stopSmsInterception
sendSms
setDefaultSms
resetDefaultSms
getSmsList
getCallList
getContactList
setAdmin
launchApp
block
sendUssd
notify
sban – 从服务器获取模板,传递安装在系统中的应用程序列表。通过这种方式,机器人可以裁剪哪个模板覆盖特定的应用程序。
gt – 从服务器获取模板
ssl – 返回exfiltrated sms列表
scol – 返回exfiltrated联系人列表
scal – 返回exfiltrated通话清单
ping – ping 测试
ucs – 返回执行的命令
std – ?
ss – ?

在我们分析的时候,已经没有存活的C&C服务器正在运行了,所以我们无法观察恶意软件和C&C服务器之间的任何流量。由于一些问题,我们无法完成某些命令的逆向工程,包括没有观察到流量,严重混淆的代码,但是当我们发送一个命令时,也会出现恶意软件的多次崩溃。我们觉得我们已经涵盖了恶意软件的大部分重要部分但是你觉得到里就完了吗?

恶意软件的在资源配置的存储。这里是C&C服务器的存储位置

那么如果你没有活C&C服务器进行测试,你会怎么做?

为什么不自己建造一个!

一旦我们对C&C协议进行了反向设计,我们就拥有一个C&C进行测试。C&C服务器在恶意软件中被硬编码,但很容易使用iptables重定向,所以所有的机器人通信都被发送到我们的C&C服务器。

iptables -t nat -A OUTPUT -p tcp --dport <BOT's port> -j DNAT --to-destination <your IP Address>:<port>

使用adb工具,我们可以使用iptables将流量出口重定向到我们的控制服务器
这是我们编写的控制面板的屏幕截图。它使我们能够控制僵尸机,采用了Django web框架编写的,可以在github上找到我们的源代码:
https://github.com/bizdak/silverboxcc

 

整个控制过程如下

  1. 如果僵尸机尚未在C2服务器上注册,请注册stbi命令并获取新的bot-id。
    僵尸机的初始POST数据包含设备信息,IMEI,手机型号等
  2. 使用sban命令获取最终显示给用户的模板列表。
    解码的HTTP POST正文,捕获从中招手机上发送应用程序列表
  3. 循环并等待来自服务器的命令并发送它。

    每10秒钟获取新命令的机器人信标。
  4. 根据要执行的命令设置一堆标志和参数,通过数据库完成调度。
  5. 另一项服务然后轮询数据库并执行相应的命令。
  6. 诸如发送联系人列表,短信和呼叫列表之类的操作分别使用scol,ssl,scal命令完成。

僵尸机向控制服务器返回SMS列表时捕获的解码数据
解码僵尸机的联系人列表的数据

7.通知服务器该命令已经使用ucs执行

额外的发现

我们从反编译的源代码中搜索了一些字符串,在地下市场中发现这个恶意软件被称为RED ALERT v2.0 BOT,并且在7天的测试使用情况下租用至少200美元,一个月500美元,2个月最高999美元。

这个俄文广告翻译成中文如下:
你好!
我们向市场推出一款新产品
红色警报2.0
没有类似产品
所有小细节都被考虑
此外,我们开发新功能

功能:

  • 短信发送
  • 短信拦截
  • APK启动
  • HTML注入
    功能:
  • APK大小95kb
  • 短信截取所有版本更高的4.4+和6+
  • 管理权限提供85%的机器人
  • 无后门
  • 耐久性

独特的功能:
如果您租用,我们将提供你想要数量的僵尸机。
注入开发不需要付款。

  • 另外,我们每2周更新一次软件,并增加新的功能。我们的客户免费更新
    租金价格500美元每月
    我们欢迎任何形式的赠款

这个恶意软件可以针对拦截来自许多个不同国家的银行,如下所列:
澳大利亚
-ANZ Bank
-Bankwest
-CUA
-ME Bank
-Newcastle Permanent
-Suncorp Bank
-Commonwealth
-CitiBank
-ING Bank
-NAB
-St.George
-WestPac
AUSTRIA
-Raiffeisen
-Volksbank
奥地利
-Raiffeisen
-Volksbank
加拿大
-Bank of Montreal
-CIBC
-Desjardins
-TD Bank
-Royal Bank of Canada
-Tangerine
捷克
-Air Bank
-Equa Bank
-mBank CZ
波兰
-AliorBank
-Alior Business Pro
-Alior Mobile
-BZWK24
-BZWK24 Biznes
-BZWK24 Mobile
-Citi handlowy (花旗银行)
-EuroBank
-Getin Bank
-ING
-iPKO
-BGZ BNP Paribas
-PekaoBank
-PekaoBiznes24
-Raiffeisen Poland
-mBank
丹麦
-Danske Bank
-Nordea
-Jyske bank
-MobilePay
-Sydbank
-Nykredit
德国
-Post Bank
-Commerzbank
-ComDirect
-Sparkasse
-DKB Bank
-Sparda-Bank
法国
-Crédit Mutuel
-Bankque palatine
-Banque Populaire
-Ma banque
-Lapost bank
-Mes Comptes
-Banque
-Mes Comptes BNP Paribas
立陶宛
-Swedbank lt
印度
-Axis Mobile
-Bank of Baroda
-iMobile by ICICI Bank
-India Bank
-SBI Anywhere Personal
-HDFC Bank MobileBanking
-Union Bank Mobile Banking
-IDBI Bank GO Mobile
-Kotak Bank
-YesBank
意大利
-Intesa Sanpaolo
-UBI
爱尔兰
-Bank of Ireland
-Ulster Bank
-Permanent tsb
日本
-Aeon Bank
-MUFG Bank
-Orico Bank
-Rakuten Card
SPAIN
西班牙
-CaixaBank
-BBVA
-Bankia
-Cajamar
-Caixer automatic Ibercaja
-Banco Sabadell
-Satander Bank
-Unicaja Banco
罗马尼亚
-Central Transilvania
-BCR Bank
-Raiffeisen Bank Romania
瑞典
-Swedbank
土耳其
-AkBank
-DenizBank
-Finansbank
-Banking banks
-Turkiye Bankasi
-HalkBank
-VakifBank
-YapiKredi
-Ziraat bank
英国
-Metro Bank
-Natwest
-Barclays
-Lloyds
-HALIFAX
美国
-Bank Of America
-ChaseBank
-Suntrust
-Capital One
-WellsFargo
新西兰
-Kiwi Bank

它还针对多种支付服务,零售应用和社交媒体。这是我们从地下论坛获得的清单。
支付系统
-PayPal
-Airbnb
-Coinbase
-Poker Stars
-Neteller
-Skrill
-Unocoin Bitcoin Wallet India
CC + VBV支付掠夺
-Amazon
-eBay
-LINE
-GetTaxi
-Snapchat
-Viber
-Instagram
-Facebook
-Skype
-UBER
-WeChat
-WhatsApp

 

总结

我们对这款Android恶意软件进行了逆向工程和溯源分析,并且学到了很多东西。有趣的是,看到APK恶意软件通过电子邮件被垃圾邮件发送,但我们想知道这种策略对于犯罪者来说会有多大成效。恶意软件需要用户确定才能安装,并且Android会弹出大量关于权限的警告。另外,Google Play Protect正在检测这种威胁,因此为了获得安装在Android上的恶意软件,我们还必须禁用Play Protect。

目前我们还没有看到更多此类的垃圾邮件样本,也许该恶意apk的电子邮件攻击不是那么成功。

审核人:yiwang   编辑:边边

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