Dawa007/iMessage: iMessage Analyze
2018-06-21 00:29:09 Author: github.com(查看原文) 阅读量:164 收藏

iMessage安全性如何

iMessage安全性如何,最近这些天挺火的,那么我也来凑凑热闹。

基于对iOS 6.1.3的分析。

iMessage加密主要有两块。

(1)设备和Apple服务器的加密通讯;

(2)iMessage消息内容的加密;

1、通讯流程

系统中有一个apsd(全称apple push serviced)的进程,该进程负责与苹果服务器进行通讯,采用TLS加密传输。

既然是加密传输,那么需要一个证书吧。

苹果设备在首次使用时,都需要激活,该激活过程就采用https方式。

albert.apple.com/WebObjects/ALUnbrick.woa/wa/deviceActivation

好奇的话,赶紧去截获一下协议吧,当然里面有几个数据加密的,用肉眼是看不出来,但是gdb可以帮你。

激活成功后,苹果就会返回一个证书。

下面是一个比较简单的通讯监控流程:

apsd 会通过DNS去查询 "push.apple.com" 对应的ip地址。 [ nslookup -query=txt push.apple.com]

通过修改DNS,把"push.apple.com"指向我们的电脑,

然后再我们电脑上写个简单的中转程序,来转发数据包给真正的苹果服务器,这样就可以截获到通讯数据。(记得从iOS上面把证书拷贝出来)

然后你就能看到:当[email protected]向mailto:[email protected]消息时,你就能看到。

    <key>D</key>
    <true/>
    <key>E</key>
    <string>pair</string>
    <key>P</key>
    <data>
    H4sIAAAAAAAAAwFoAZf+AgEdOqZhIJfiVPZgBG6sepOBwAfmyRJ6hI+fIKe2WF5pu8OF
    yODtUNNcH7HsotE27wopJoXqj+erUoGs0S3iUb2U0Qsj+2j0DUzxklWq20ZMPYFXgUhU
    s+VKU74C901o77g6Z9j6CYuECYBWubOZQah90aFtbSOgfZSHnrgDnFqZ8Vkh89zFi+o7
    ibGJAcyrbMM7TpaEVWPCSWiwUJgs9upS2tsDcLPUx/YOPXAPCSL7UDQWBGqfAm1enlbS
    0QnKZFJcWaqV0SUGTI+yRt8FdkzCRltrECy4sVAtHjPtK1SjgC8FF4fDXWsNMNjc6Uhg
    pgneij3oRUa/aasqLfbBd14TwD0VSEpMTYfHAAmML0VMFvSgRHifsPEPxFJD73TPRzBF
    AiAAjJ51M0pflzS6sLzD5wnQwecp+tBjZiuLebpNCDI0cQIhAKlLdRvKxWZaFxXJgUup
    UYJI6Q/phbB9dg8DzfSeHNYE7Nyt3mgBAAA=
    </data>
    <key>U</key>
    <data>
    cenrWmCST6q2mSVvaM4PRA==
    </data>
    <key>c</key>
    <integer>100</integer>
    <key>e</key>
    <integer>1379911703359339674</integer>
    <key>pri</key>
    <integer>0</integer>
    <key>sP</key>
    <string>mailto:[email protected]</string>
    <key>t</key>
    <data>
    OxAsXdTK3pu5U3WVVlhxvLG11U/k0XdKGSx8UGkfRh8=
    </data>
    <key>tP</key>
    <string>mailto:[email protected]</string>
    <key>v</key>
    <integer>1</integer>

即使用姐的24K铝合钛金狗眼,自然无法看出huluwateam是发送了什么消息。

但时间能看出来1379911703359339674

但是P字段肯定就是消息的内容,当然必须是加密的。

2、消息加密

iOS keychain中存储着两个私钥 RSA "iMessage encryption key" 和 ECDSA "iMessage signing key"。

跟踪一下,首先用AES256对明文进行加密,然后用"iMessage encryption key"加密一下AES密钥,

最后用"iMessage signing key"签名一下密钥和密文。

解密出来就是这样子的。

    <key>p</key>
    <array>
            <string>mailto:[email protected]</string>
            <string>mailto:[email protected]</string>
    </array>
    <key>t</key>
    <string>Do you have a boyfriend?</string>
    <key>v</key>
    <string>1</string>

先举个例子,

如果张三想给李四发消息,

先会用李四的RSA公钥对消息进行加密,

然后再用自己的ECDSA私钥对数据包进行签名。

李四接受到消息了,先用张三的ECDSA公钥校验一下,确定该消息是来自三张。

然后再用自己的RSA私钥解密。

所以,如果想通过截获通讯数据包,来破解或者篡改消息,还是省省。

换个方式,考虑一下密钥生成和分发的安全性。

上面两个私钥都是在设备上生成的,然后在iMessage注册的时候,会把两个私钥对应的公钥发送给苹果服务器。

Apple spokeswoman Trudy Muller, in a statement to AllThingsD:

iMessage is not architected to allow Apple to read messages.

The research discussed theoretical vulnerabilities that would require Apple to re-engineer the iMessage system to exploit it, and Apple has no plans or intentions to do so.

但苹果想读的话,你的设备就有可能在你不经意的情况下,偷偷把"iMessage encryption key"上传到服务器中。

有没有这样的后门,我就不知道了。但目前是没人发现。

iMessage垃圾短信特别多,幸好iOS7上面,有手动添加黑名单的功能。

其实苹果挺为难,没办法在服务端进行拦截,一旦拦截,网络上的各大新闻媒体头条“苹果正在看你聊天”。

相比于短信,国内的各种即使通讯,iMessage是安全的。

DaWa

[email protected]


文章来源: https://github.com/Dawa007/iMessage
如有侵权请联系:admin#unsafe.sh