私はMMSベースの攻撃のためにいくつかのAndroidマルウェア調査を行っています。受信したMMSメッセージを取得またはダウンロードする手動の方法を探しています。私は、curl
またはwget
の行がそうすることができると思っていましたが、役に立つものは何も見つかりませんでした。curlまたはwgetを使用してコマンドラインからMMSをダウンロードする方法はありますか?
は、これまでのところ私はで見つけ内部データベースからいくつかのMMS情報を、持っている:
# 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の1ライナーまたはブラウザ要求を作成して、検査のためにファイルをダウンロードしたいと考えています。
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
がどのように私はシェルコマンドライン(または外部ブラウザ)からMMSファイルをダウンロードすることができます:電話の設定の設定で
我々は経由MMSCを見つけることができますか?
PS。明らかに、電話は根っこであり、busybox
とsqlite3
の両方があり、おそらくはcurl
またはwget
もインストールされています。 AOSは5.0+です。
補遺:2017年11月9日
hereから:
MMS(マルチメディアメッセージングサービス)メッセージがSMSとWAP技術の 組み合わせを使用して送信されます。 MMSメッセージが送信されると、 モバイルデバイスはSMS経由でMMS通知メッセージを受信します。 このMMS通知メッセージがモバイルデバイスによって受信されると、 モバイルデバイスは、 へのWAPゲートウェイ接続を自動的に開始し、MMSメッセージのコンテンツをダウンロードします。
MMSメッセージを送信するには、まずMMSメッセージファイルを作成する必要があります。 のMMSメッセージファイルのフォーマットは、Open Mobile Alliance (http://www.openmobilealliance.org)および/またはWAPフォーラム (http://www.wapforum.org)によって公開されたMMSカプセル化 プロトコル仕様書に記載されています。 MMSメッセージファイル形式は、 MMSメッセージバイナリヘッダーの後にマルチパートMIMEメッセージが続き、 マルチパートメッセージがWAPワイヤレスセッションプロトコル(WSP)仕様で定義されている というバイナリマルチパート形式でエンコードされています。この バイナリMMSメッセージファイルは、MIMEタイプが のapplication/vnd.wap.mms-messageと、 m-retrieve-confのMMSメッセージタイプを使用してWebサーバーに格納されます。バイナリMMSヘッダのサブセットは、SMSを介して 通知メッセージ(MMSメッセージタイプm-notification-ind)として 完了メッセージの位置へのURLポインタと共に モバイルデバイスに送信される。
スマートフォンは、もはやMMSまたはSMSコンテンツをSIMにダウンロードしません。これが「機能」電話機がそれを行うために使用した方法です。
補遺:API-23(M)Telephony.javaに示すSQLite3のテーブルのソースを見てみると2017年11月13日
、我々は CONTENT_LOCATION = "ct_l";
ことがわかりますので、私たちはそのために検索することができます他の用途here。簡単に私たちの調査結果を要約すると:
http://mmsc32:10021
は、サーバ(IP:PORT)です: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を解釈できることを期待するかもしれないMMSプロキシによってマスクされた(示さ)/mmsc/3_2
上記は
?Ae_xxxx_xxxxx-xxx
は、「トランザクションID」によって与えられたメッセージを取得するために、メッセージプロセッサを語っているメッセージプロセッサにWAPのURLです:Ae_xxxx_xxxxx-xxx`
したがって、プロキシ(APN)の設定を使用して、メッセージDB(mmssms.db)から抽出されたURLを使用して、一つのコンテンツを取得し、ダウンロードすることができなければなりませんMMSは、慎重に細工された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を割り当てられている移動中のみ表示IPクラスC、を指す最初のものは、明らかに電話環境の外部から動作しないでしょう。
プロキシは通常、MSISDN(番号)を取得し、チェックのためにMMSCに接続するために使用されます。 HTTPヘッダーで何を提供しても、番号は渡されず、メッセージはダウンロードされません。 – Marvin
@Marvin確かに、(上記のように)見つかった/抽出されたものに従ってそのプロキシを設定できるはずです。 – not2qubit
自分のプロキシはそれを行うことはできません。オペレータのプロキシは、データ接続のためにsgsn/ggsnをチェックし、imsi/msisdnを検索し、mmscに渡してMMSダウンロードリンクを加入者番号で認証します。 – Marvin