2017-05-22 17 views
4

私は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一部を解釈する方法は?

MMSCProxyおよび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。明らかに、電話は根っこであり、busyboxsqlite3の両方があり、おそらくは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、を指す最初のものは、明らかに電話環境の外部から動作しないでしょう。

+0

プロキシは通常、MSISDN(番号)を取得し、チェックのためにMMSCに接続するために使用されます。 HTTPヘッダーで何を提供しても、番号は渡されず、メッセージはダウンロードされません。 – Marvin

+0

@Marvin確かに、(上記のように)見つかった/抽出されたものに従ってそのプロキシを設定できるはずです。 – not2qubit

+0

自分のプロキシはそれを行うことはできません。オペレータのプロキシは、データ接続のためにsgsn/ggsnをチェックし、imsi/msisdnを検索し、mmscに渡してMMSダウンロードリンクを加入者番号で認証します。 – Marvin

答えて

0

この回答をお寄せください。私は、あなたが「送信する」SIMカードをスキップテキストを持つことはできません

  • ショートバージョン... 1ないんだけど、アドバイスの価値は私の2セントでスローされますと、一部のコンピュータに自動転送されます。

  • 携帯端末にAndroidアプリをインストールして、新しい受信トレイメッセージのコピーを検出してコンピュータに転送することが仕事であることを確認してください。

  • SIMにはUSBドングルを使用してください。コンピュータに接続すると、電話が関与することなく、コンピュータに直接メッセージを受信します。経由:

ロングバージョン

ではなくコマンドラインツールは、例えば受信したメッセージとあなたに転送するいくつかのデータ(をチェックする(AndroidのSDKを経由して)実際のアプリを作る方がいいでしょう電子メール、またはソケット、またはあなたが好きです)。また、メッセージの完全なコピーを意味する「一部のデータ」、またはメッセージ内解析(例えば、検出されたイメージの数、イメージバイトの16進数の印刷など)の[in-app]のフィードバックを送信するだけです。

それもわかりますAndroidのSmsManager APIを見て:アンドロイド 4.4(APIレベル19)と高い上のデフォルトのSMSアプリとして動作する方法については

を、Telephonyを参照してください。

また、そのAPIのdownloadMultimediaMessageコマンドを参照してください。それはあなたが必要としていることをやっている。 Telephonyページには情報とリンクがありますが、このトピックについての独立したブログの記事やチュートリアル(そのようなものはexampleなど)もあります。

とにかく、あなたのポストの上に...

(1)

「私はちょうどそれが含まれている可能性があるので、それを処理して電話せずに、ファイルにメッセージをダウンロードしたいですマルウェアそれは 『が動作するように加工する電話なし」

はどのようにを想像しますか』?電話機は、送信者自身のプロバイダのサービスセンターから受信した後、オペレータ(サービスセンター経由)がメッセージを転送することをSIMに保持します。あなたとcurlはこのループから外れています。あなたのSIMがそれを受け取り、電話OSがあなたに警告するときにのみ、テキストを知ることができます。

技術的には、電話機でこのメッセージが処理されましたが、まだ開いていません。

(2)

"私はシェルコマンドラインまたは外部ブラウザからMMSファイルをダウンロードできますか?"

mmssms.dbファイル全体をダウンロードし、そこから特定のメッセージを抽出する必要があります。 .dbは、他のオンラインデータベース(SQL/PHP型クエリなど)と同様に扱われます。

は有益な助言のために、このチュートリアルを参照してください:http://cheeky4n6monkey.blogspot.co.uk/2013/02/

将来の受信メッセージ用の代替は自分のカードを取る(USB)SIMドングルを取得することです。一旦コンピュータに接続されると、SIMは(電話のプロキシとして)ドングルの中でライブ/アクティブであるので、メッセージを受信/送信することができる。

ドングルには、Web接続を管理し、SMS/MMSメッセージを読み書きするためのソフトウェア(例:image of such)が付属しています。 SIMは電話でなくデスクトップ上で動作するようなものです。

+0

もちろん、私たちはメッセージを傍受するアプリを書くことができますが、それは私が尋ねたものではありません。しかし、アプリのように、我々は同様にメッセージを取得することができるはずです。 (1)AFAIK、新しい電話機がSIMにメッセージをダウンロードしていない場合、メッセージのバイナリの詳細により、ハンドセット(TE)OSがメッセージで何を行うのかが決まります。例えば。 (APN設定など)、直接表示(フラッシュSMS)、または送信者などへの返信 (2)あなたまたはあなたの電話機がそれを開くことを決定するまで、メッセージはデータベースにありません。再びあなたの設定に依存します。 – not2qubit

関連する問題