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
恶意软件和识别被窃取的证书的服务。在接下来的内容中,我们会提供恶意软件和攻击的细节。
此次攻击最早由 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
仅通过 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
大部分 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
服务远程解锁设备。
在我们目前发现的所有样本信息中,这段代码是独立的,没有被其它代码调用。它仅仅是被实现,然后被导出为一个函数。然而,我们已经有证据表明,利用这个函数来进行实际攻击已经发生了。
一些 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
对本报告的审校。