from:KeyRaider: iOS Malware Steals Over 225,000 Apple Accounts to Create Free App Utopia
摘要
最近,WeipTech(
威锋技术组)分析了一些用户报告的可疑iOS应用
,发现了存储在某服务器上超过22,5000
个有效的Apple账户和密码。
通过与WeipTech
的合作,我们(Paloalto
)识别了92个尚未发现过的恶意软件样本。为了找出恶意软件作者的意图,我们对样本进行了分析,并将这个恶意软件家族命名为“KeyRaider
”。从结果来看,我们相信这是有史以来因恶意软件所造成的最大Apple账号泄露事件。
在中国,KeyRaider 将目标锁定在已越狱的iOS设备上,并通过第三方Cydia源传播。并且这个恶意软件很可能已经影响到了18个国家的用户,包括中国、法国、俄罗斯、日本、英国、美国、加拿大、德国、澳大利亚、以色列、意大利、西班牙、新加坡和韩国等。
KeyRaider
通过MobileSubstrate
框架来hook
系统进程,拦截iTunes
通信来窃取Apple
账户用户名、密码和设备GUID
。 它还会窃取iPhone
和iPad
设备上的Apple
推送通知服务证书和私钥、App Store
购买凭证,并禁用本地和远程解锁功能。
KeyRaider
已经成功窃取了超过22,5000
个有效的Apple
账户、输千个证书、私钥和购买凭证。恶意软件将窃取到的数据上传到了存在漏洞的C2(command and control
)服务器上,因此暴露了用户信息。
此次攻击的目的是为了让用户通过使用两款iOS越狱应用(越狱后通过Cydia
源安装的应用)来免费下载官方App Store
的任意应用,且不需要付款就可以在应用内进行购买服务。越狱应用是能够让用户执行在正常设备上无法进行的操作的软件包。
这两款越狱应用会劫持app购买请求,下载存放在C2 服务器
中被窃取的账户和购买凭证,然后模拟iTunes
协议登陆到Apple
服务器,购买app
或其他用户请求的项目。这两款越狱应用已经被下载超过20,000
次,这意味着大约20,000
名用户正在滥用其他225,000
个被窃取的证书。
一些受害者已经报告了他们的Apple账户存在非正常app购买记录和其他一些勒索行为。
Palo Alto Networks
和WeipTech
已经提供了能够检测KeyRaider
恶意软件和识别被窃取的证书的服务。在接下来的内容中,我们会提供恶意软件和攻击的细节。
发现KeyRaider
此次攻击最早由i_82
发现,他是一名来自扬州大学的学生、WeipTech
成员。WeipTech
是一个非职业技术团体,由WeiPhone
(中国最大的Apple粉丝网站)的用户组成。之前WeipTech
与我们合作,披露了iOS
和OS X
上的恶意软件AppBuyer
、WireLurker
。
从2015-07-01开始,WeipTech
开始调查一些用户Apple账户在未经授权的情况下,购买和安装了iOS app
。再对用户安装的越狱应用进行调查后,他们发现了一款越狱应用收集用户信息,并上传到一个未知的网站。他们发现这个网站存在SQL注入,能够查看到所有的数据记录。Figure 1
是”top 100
”数据库的截图
Figure 1. WeipTech 发现在C2服务器上存在SQL注入(from WeipTech)
在数据库中,WeipTech
发现了标明为“aid
”字段一共有225,941
条记录。大约2万条记录包含明文用户名
、密码
、GUIDs
。剩余的记录是加密的。
通过逆向恶意应用,WeipTech
发现了一段代码,这段代码中使用静态key
为“mischa07
”的AES加密算法对数据进行加密。利用静态key,我们能够解密用户名和密码。经过登陆验证,他们确信记录中的信息都是有效的Apple账户。在网站管理员发现、关闭服务之前,WeipTech调查人员下载了大约一半的数据库记录。
8月25日,WeipTech
在微博发布漏洞预警,将漏洞提交到WooYun
(乌云漏洞报告平台),并后续转交第三方合作机构CNCERT/CC
(国家互联网应急响应中心)处理。
当 Palo Alto Networks
研究人员在分析WeipTech
报告的恶意软件时,我们发现它没有包含恶意代码来窃取密码并上传数据到C2 服务器
。然而,通过WeipTech
提供的其他信息,我们发现存在其他的恶意越狱应用,存在窃取用户信息并上传到相同的服务器上。
我们将这个新的iOS恶意软件家族命名为 “KeyRaider
” ,因为它会窃取密码、私钥和证书。
KeyRaider 来源
据我们了解,KeyRaider
仅通过 Weiphone’Cydia
仓库在越狱iOS设备上来进行传播。不像其他的Cydia源
,如BigBoss
、ModMyi
。WeiPhone
为注册用户提供私有仓库,用户可以直接上传他们的越狱应用app,并与其他人进行共享
在2015年,一个名为“mischa07
”的用户,上传了至少15款KeyRaider
应用到它的私人仓库(http://apt.so/index.php?r=cydiaTa/index&user_id=8676626),如Figure 2
. 此外,他的名字也被作为加解密key
,硬编码在恶意软件中,如Figure 3
。我们高度怀疑此人为KeyRaider’s
的开发者。
Figure 2. mischa07’s 个人Cydia 仓库
Figure 3. “mischa07″ 作为加密key被硬编码在恶意软中
根据Weiphone
的网页显示,一些由mischa07
上传的越狱应用已经被下载过上万次,如Figure 4
。这些app和工具提供如游戏作弊、系统调优和app广告过滤等功能。
在mischa07
的仓库中,有两款特别的应用
●iappstore
(Figure 5): 能够让用户从Apple官方应用商店免费下载需要付费的应用
●iappinbuy
:能够让用户在一些官方应用商店下载的app中免费购买付费道具或服务
Mischa07
也在 Weiphone
社区中对这两款越狱应用进行推广,如Figure 6
,但一些用户并不相信这些所谓神奇的功能。然而,根据Weiphone’s
网站上显示,iappinbuy
仍人有20,199
次下载,如Figure 4
,而iappstore
有62次下载(仅对最新版进行统计)
Figure 4. 一个恶意样本被下载超过30,000 次
Figure 5. iappstore 恶意软件能够直接从App Store安装需要付费的 apps
Figure 6. 作者推广它的iappstore 应用
另一名以“氵刀八木
” 或 “bamu
”.的身份的Weiphone 用户也在传播KeyRaider
恶意软件。因为Bamu
的个人仓库(http://apt.so/aptso)提供许许多有用的应用,这使得它在社区中非常受欢迎。在这次攻击被揭露之后,bamu
已经删除了仓库中他所上传的所有恶意软件,并关闭了它。在Weiphone
的帮助下,我们对Bamu
上传的所有应用进行了检查,其中77款应用中都包含了KeyRaider
恶意软件。与mischa07
开发不同版本的恶意软件不同,bamu
是通过对已存在app(如iFile
,iCleanPro
和avfun
)进行重新打包,并在其中加入恶意代码。
当KeyRaider
将窃取到的用户密码上传到C2 服务器
时, HTTP URL
中会包含一个名为 “flag
”或”from
”的参数,用来追踪受感染的来源。在mischa07
的代码中,这个参数的值通常为app应用的名字,如’letv
’。而在bamu
的应用中,则是“bamu
”。从泄露的数据的统计得出,超过67%的被窃取信息来至与bamu
.
因为bamu
仅仅是一个分销者(distributor
),后面的行为分析主要集中在来至mischa07
的应用样本
窃取用户数据
KeyRaider
收集三种用户数据,通过HTTP
请求上传到C2服务器
,这里发现了两个不同的C2服务器
•<top100.gotoip4.com>
•<www.wushidou.cn>
在分析的过程中,这些域名都被解析到了113.10.174.167
这个IP地址。在C2服务器上的 “top100
” 数据库里有三张表 “aid
”, “cer
t” 和 “other
”。 在server
端,KeyRaider
利用4个PHP
脚本来存取数据库,aid.php
,cert.php
,other.php
和data.php
通过分析代码和WeipTech
下载的泄露数据,我们发现aid
表存储225,941
条记录,包含Apple ID
的用户名、密码、设备GUID
。Cert
表存储了5,841
条受感染设备的证书和私钥,而这些信息用于Apple
推送消息通知服务,如Figure 7
。最后other
表存储了超过3,000条
设备的GUID
和来至app store server
的app
购买凭证
Figure 7. 泄露cert表中的一条记录
我们对泄露的Apple ID
邮箱地址进行了整理,有超过一半的用户使用QQ邮箱,下是排名前十的账户邮箱地址域名(其中6个主要由中国用户在使用)
•@qq.com
•@163.com
•@icloud.com
•@gmail.com
•@126.com
•@hotmail.com
•@sina.com
•@vip.qq.com
•@me.com
•@139.com
然而,我们也发现一些属于其他国家或地区的邮箱地址域名,这包括
•tw: Taiwan
•fr: France
•ru: Russia
•jp: Japan
•uk: United Kingdom
•ca: Canada
•de: Germany
•au: Australia
•us: United States
•cz: Czech Republic
•il: Israel
•it: Italy
•nl: Netherlands
•es: Spain
•vn: Vietnam
•pl: Poland
•sg: Singapore
•kr: South Korea
恶意行为
KeyRaider
恶意代码存在于 Mach-O
动态库中,作为MobileSubstrate
框架的插件。通过MobileSubstrate API
,恶意软件能够hook
系统进程或其他iOS apps
的任意API
之前许多iOS恶意软件家族也同样滥用MobileSubstrate
。比如由Reddit
用户发现,SektionEins
分析的the Unflod (aka SSLCreds or Unflod Baby Panda
) ,会拦截SSL
加密通信,窃取Apple
账户密码。去年发现的AppBuler
也利用了同样的技术来窃取密码、在app store
中购买app
。KeyRaider
进一步利用了次技术。KeyRaider
主要实现了一下恶意行为
●窃取Apple账户(用户名、密码)和设备GUID
●窃取被用于Apple推送通知服务的证书和私钥
●阻住受感染的设备通过密码和iCloud 服务来解锁设备
注:MobileSubstrate
是一个框架,允许第三方的开发者在系统的方法里打一些运行时补丁以扩展一些方法,类似于OS X上的Application Enhancer
。所以iOS系统越狱环境下安装绝大部分插件,必须首先安装MobileSubstrate
窃取Apple账户数据
大部分KeyRaider
样本hook itunesstored
进程的SSLRead
和SSLWrite
函数(Figure 8).itunesstored
是系统守护进程,负责与app store
进行通信(使用 iTunes 协议)。
Figure 8. KeyRaider hooks SSLRead and SSLWrite in itunesstored
当App Store
客户端像用户请求输入Apple
账户登录时,登录信息会通过SSL
加密会话发送到App Store server
。在SSLwrite
的替换函数中,KeyRaider
会寻找此类会话,通过特定的pattern在发送的数据中搜寻Apple
账户的用户名、密码和设备GUID
(Figure 9). 接下来,在SSLRead
替换函数中,这些凭证会通过AES加密算法,使用静态的key “mischa07
”来加密,然后发送到KeyRaider C2 服务器
(Figure 10).
Figure 9. Searching for Apple account information in SSL data
Figure 10. Uploading stolen credentials to the C2 server
除了hook SSLRead
和SSLWrite
,KeyRaider
需要调用MGCopyAnswer
(“UniqueDeviceID
”) 来读取设备的GUID
。
窃取证书和私钥
在一些样本中,KeyRaider
也会hook apsd
守护进程 – 负责iOS
系统的Apple
推送通知服务。它hook
定义在Security
框架的SecItemCopyMatching
函数。这个API用于搜寻匹配给定查询的 keychain items
。
当搜索查询有值为“APSClientIdentity
”的label
,KeyRaider
会执行原来SecItemCopyMatching
函数,然后调用SecIdentityCopyCertificate
和SecIdentityCopyPrivateKey
,从原本函数执行返回结果中来拷贝证书和私钥 (Figure 11). 之后,这些信息和GUID
一起被发送到C2服务器上(Figure 12). 在iOS keychain
中,被标记APSClientIdentity
的key用于推送通知。通过这些信息,攻击者可以在系统上伪造推送通知。
Figure 11. Copy push service’s certificate and private key
Figure 12. Upload certificate and key
锁定设备
当KeyRaider hook SecItemCopyMatching
,除了拦截通知证书,它也会将当前查询的label和特定的字符串 “com.Apple.lockdown.identity.activation
”进行比较。如果匹配,KeyRaider
会将查询结果的值设置为0. (Figure 13)
再发布文章之前,网上还没有关于com.apple.lockdown.identity.activation
查询的公开文档。我们相信这个查询是用于解锁设备的。通过将返回值设置为0,KeyRaider
会阻止用户解锁他们的设备,即使通过手机输入了正确的解锁码或通过iCloud
服务远程解锁设备。
在我们目前发现的所有样本信息中,这段代码是独立的,没有被其它代码调用。它仅仅是被实现,然后被导出为一个函数。然而,我们已经有证据表明,利用这个函数来进行实际攻击已经发生了。
免费的APPS
一些KeyRaider
样本实现了从C2服务器
下载购买凭证和Apple账户的功能。但这个功能仅仅在 iappstore
和iappinbuy
两个应用中被真正使用过。 根据用户的描述,iappstore
能够免费从app store
中下载任意应用。让我们来看一下他们是如何实现的.
这个app hook SSLWrite
两次,第一次用于窃取密码。第二次hook
会尝试判断当前的HTTP请求是否是“POST /WebObjects/MZBuy.woa/wa/buyProduct
”。以此来判断当前会话是否是使用iTunes
协议进行购买。(Figure 14).
Figure 14. Hooking app purchase session
如果请求是购买行为,SSLWrite会被调用,hooking
代码会尝试在发送的数据(用于获取当前app的付款信息)中匹配一些关键词,如“salableAdamId
”, “appExtVrsId
”, “vid
”, “price
”, “guid
”, “installedSoftwareRating
” and “pricingParameters
” 。如果这个app是需要付费的,fire()
函数会被调用。
Fire
函数会调用readAid()
函数,readAid
函数会读取位于/var/mobile/Documents/iappstore_aid.log
的本地文件。这个文件包含了用户账户的用户名、密码、设备GUID
,相关的iTunes
会话token
、cookie
、电话号码
、运营商
、操作系统信息
、iTunes CDN 服务器号
。然后解析数据,创建一个账户对象。
如果文件不存在,它会调用 readAidUrl()
,readAidUrl
会从KeyRaider C2服务器
下载新的账户信息,然后创建一个账户对象。(Figure 15). Figure 16 展示了一个从服务器下载的账户。
Figure 15. Downloads apple account from C2 server
Figure 16. Stolen apple account was downloaded from C2 server
创建账户对象之后,fire()
会生成plist格式的字符串,里面包含账户信息,接着调用 login()
和sendBuy()
.
Login()
函数会创建一个连接到以下URL的HTTP连接,URL中会带上plist
字符串和一个类似Appstore
客户端用户代理的值
•p*-buy.itunes.Apple.com/WebObjects/MZFinance.woa/wa/authenticate
这会造成使用远程Apple账户来登陆当前的iTunes
会话(Figure 17)
Figure 17. Emulating login protocol
发起Login
请求之后,login()
会解析返回的结果,获取cookie
、token
和其他信息,然后将这些信息和账户密码保存到本地iappstore_aid.log
文件中,供后续购买时使用。如果因为密码错误导致登陆失败,它会再一次调用readAidUrl()
,从C2 server
中获取一个不同的Apple账户。
sendBuy()
函数的工作与login()
函数类似,但请求了另一个URL
,用于app
购买验证
•p*-buy.itunes.apple.com/WebObjects/MZBuy.woa/wa/buyProduct
通过这个过程,iappstore
应用可以使用窃取到的账户成功购买任意app 除了这些操作之外,在两个独立的函数verifySF()
和verifySF2()
中,KeyRaider
也会尝试获取Apple账户密码找回问题和答案。这个函数在我们的分析样本中还未完成。
iappinpay
的功能和iappstore
类似。唯一的不同是购买接口改变了。(Figure 18)。在C2服务器数据库中也存储了一些之前在app内购买( In-App-Purchase)的凭证,作者似乎计划实现重用这些凭证的功能,如将这些凭证发送到Apple server,以证明他们之前已经购买过此服务。
电话勒索
除了窃取Apple账户来购买app,KeyRaider
拥有内置的锁定功能来进行勒索。
之前的一些iPhone勒索软件工具基于通过iCloud服务
来远程控制iOS设备。这类攻击可以通过重置账号密码来解决。而对于KeyRaider
,它在本地禁用了所有解锁操作,及时是输入的正确的解锁码或密码。此外,它也能使用窃取的证书和私钥来发送通知消息来索要赎金,而推送通知消息不需要经过Apple推送服务器。因此,之前使用的解决方法不再有效。
下面是一名受害者报告的被勒索截图
Figure 19. Ransom message on locked iPhone
其他潜在的风险
下面是一些攻击者利用你泄露的用户名、密码等信息能够做的事情
应用推广:在受害者手机中安装指定的app,来提升App Store rankings
Cash Back:使用的账户来购买付费应用
垃圾邮件:使用iMessage
来发送垃圾信息
勒索:利用账户密码,窃取隐私信息来进行勒索 等等
保护和预防
需要注意,KeyRaider
仅影响越狱的iOS设备,未越狱设备不受影响。WeipTech
上线了查询服务 http://www.weiptech.org/ ,你可以输入自己的Apple账户邮箱,了解它是否被泄露。Palo Alto Networks
在8月26日将窃取的账户信息反馈给了Apple
。还需要注意的是,因为攻击者发现并修复了其接收数据服务器的漏洞,WeipTech
只能还原约一半的被窃取数据。因此,从不受信任的Cydia 源
安装过这类越狱应用的用户可能都会受影响。
用户可以通过下列方法来判断自己的iOS设备是否受影响
1.通过Cydia安装openssh
2.通过SSH连接到device
3.到 /Library/MobileSubstrate/DynamicLibraries/ 目录,对目录下的所有文件grep以下字符串
•wushidou
•gotoip4
•bamu
•getHanzi
如果任何dylib
文件包含任意一个字符串,删除这些文件和同名的plist
文件,然后重新启动
除此之外,我们也建议用户在移除恶意软件之后,修改Apple账户的密码,并开启双因素认证功能。https://support.apple.com/en-us/HT204152最后,如果你想避免遭遇KeyRaider
以及类似恶意软件,请尽量避免越狱。Cydia 源
不会对上传应用进行严格的安全检查,通过它安装应用存在风险。
样本信息
9ae5549fdd90142985c3ae7a7e983d4fcb2b797f CertPlugin.dylib
bb56acf8b48900f62eb4e4380dcf7f5acfbdf80d MPPlugin.dylib
5c7c83ab04858890d74d96cd1f353e24dec3ba66 iappinbuy.dylib
717373f57ff4398316cce593af11bd45c55c9b91 iappstore.dylib
8886d72b087017b0cdca2f18b0005b6cb302e83d 9catbbs.GamePlugin_6.1-9.deb
4a154eabd5a5bd6ad0203eea6ed68b31e25811d7 9catbbs.MPPlugin_1.3.deb
e0576cd9831f1c6495408471fcacb1b54597ac24 9catbbs.iappinbuy_1.0.deb
af5d7ffe0d1561f77e979c189f22e11a33c7a407 9catbbs.iappstore_4.0.deb
a05b9af5f4c40129575cce321cd4b0435f89fba8 9catbbs.ibackground_3.2.deb
1cba9fe852b05c4843922c123c06117191958e1d repo.sunbelife.batterylife_1.4.1.deb
致谢
特别感谢来自WeipTech
的i_82
向我们共享数据、报告以及其它有用的信息。 感谢来自WeipTech
的CDSQ
向我们提供样本,感谢来自WooYun
的Xsser
、FengGou
的信息共享。 感谢Palo Alto Networks
的Sereyvathana Ty
、Zhaoyan Xu
、Rongbo Shao
几位对恶意软件进行的分析,感谢Palo Alto Networks
的Ryan Olson
对本报告的审校。