【发布时间】:2017-10-22 09:11:24
【问题描述】:
我正在针对基于 MMS 的攻击进行一些 Android 恶意软件研究。我正在寻找一种手动方式来检索或下载收到的彩信。我希望找到一些curl 或wget 行能够这样做,但没有发现任何有用的东西。
到目前为止,我从内部数据库中获得了一些彩信信息,发现者为:
# find / -iname "*.db" |grep -iE "mms|sms"
...
/data/data/com.android.providers.telephony/databases/mmssms.db
/data/data/com.google.android.gms/databases/icing_mmssms.db
/data/data/com.android.mms/databases/message.db
/data/data/com.android.mms/databases/message_glance.db
# cd /data/data/com.android.providers.telephony/databases/
# echo "select * from pdu;" | sqlite3 -header mmssms.db
...
# echo "select date,sub,ct_l,tr_id from pdu;" | sqlite3 -header mmssms.db
date|sub|ct_l|tr_id
1495xxxxxx|Download this message|http://mmsc32:10021/mmsc/3_2?Ae_xxxx_xxxxx-xxx|Ae_xxxx_xxxxx-xxx
如何解释mmsc32:10021 部分?
然后查看MMSC、Proxy 和port 的消息设置,我想构建一个有效的 CLI 单行或浏览器请求,以下载文件进行检查。
在手机设置中我们可以通过以下方式找到MMSC:
Settings > More > Mobile network > Access Point Names > MMS: <your operator>
MMSC: http://mms.company.net:8002/
MMS Proxy: 194.xx.xx.xx
MMS Port: 8080
如何从 shell 命令行(或外部浏览器)下载彩信文件?
PS。显然,手机已植根并安装了busybox 和sqlite3,也许还安装了curl 或wget。 AOS 是 5.0+。
附录:2017-11-09
来自here:
MMS(多媒体消息服务)消息使用 SMS和WAP技术的结合。发送彩信时, 移动设备通过短信接收彩信通知消息。什么时候 移动设备收到此彩信通知消息, 移动设备自动启动 WAP 网关连接到 下载彩信内容。
要发送彩信,您必须首先创建一个彩信文件。这 MMS 消息文件的格式记录在 MMS 封装中 开放移动联盟发布的协议规范 (http://www.openmobilealliance.org) 和/或 WAP 论坛 (http://www.wapforum.org)。 MMS 消息文件格式由一个 MMS 消息二进制标头,后跟多部分 MIME 消息,其中 多部分消息以二进制多部分格式编码为 由 WAP 无线会话协议 (WSP) 规范定义。这 二进制 MMS 消息文件使用 MIME 类型存储在 Web 服务器上 application/vnd.wap.mms-message 和 MMS 消息类型 m-retrieve-conf。二进制 MMS 标头的子集作为 MMS 发送 通知消息(MMS 消息类型 m-notification-ind)通过 SMS 发送到 移动设备连同指向该位置的 URL 指针 完整的消息。
此外,智能手机不再将彩信或短信内容下载到 SIM 卡。这就是“功能”手机过去的做法。
附录:2017-11-13
查看Telephony.java 中显示的 SQLite3 表的 API-23 (M) 源,我们发现
CONTENT_LOCATION = "ct_l";,所以我们可以搜索它的其他用途here。简要总结我们的发现:
date # The message delivery time.
sub # The subject of the message, if present.
ct_l # The Content-Location of the message. A field in interface:Telephony.BaseMmsColumns
tr_id # The transaction-id of the message.
因此我们可能期望ct_l 中的URI 可以解释如下:
-
http://mmsc32:10021是被上面 MMS 代理(如图所示)屏蔽的服务器 (IP:PORT) -
/mmsc/3_2是消息处理器的 WAP URL -
?Ae_xxxx_xxxxx-xxx告诉消息处理器检索“事务 id”给出的消息:Ae_xxxx_xxxxx-xxx`
因此,使用代理 (APN) 设置,并使用从消息 DB (mmssms.db) 中提取的 URL,应该能够检索和下载彩信的内容,使用精心设计的curl 声明。
也许是这样的:
# curl -x http://proxy_server:proxy_port --proxy-user username:password -L http://url
curl -v -x http://194.xx.xx.xx:8080 -L http://mmsc32:10021/mmsc/3_2?Ae_xxxx_xxxxx-xxx
# Or from outside local net:
curl -v -x http://mms.company.net:8002 -L http://mmsc32:10021/mmsc/3_2?Ae_xxxx_xxxxx-xxx
第一个显然不能在电话环境之外工作,因为它指的是 IP 类 C,仅在移动分配的 IP 内可见。
【问题讨论】:
-
代理通常用于检索MSISDN(号码)并将其附加到MMSC进行检查。无论您在 HTTP 标头中提供什么,都不会传递数字,也不会下载相应的消息。
-
@Marvin 当然,但是应该能够根据找到/提取的内容设置该代理(如上所示)。
-
自己的代理无法做到这一点。运营商的代理检查 sgsn/ggsn 的数据连接以检索 imsi/msisdn,然后将其传递给 mmsc 以验证带有订户号的 MMS 下载链接。
-
@Marvin 然后我不确定我是否完全理解这个过程。你能链接到一些东西,我可以在哪里阅读这个? (什么是
sgsn/ggsn?)我想您是在谈论mmsc32:10021部分,它是从手机内部处理的? (在哪里?)归根结底,我只想将消息下载到文件中,而不需要手机处理它,因为它可能包含恶意软件。 -
我想说的是,您只能通过手机/SIM 数据会话下载,通过互联网是不可能的。
标签: android sqlite security mms apn