2017-05-22 3 views
4

Je fais des recherches sur les malwares Android pour les attaques MMS. Et je suis à la recherche d'un moyen manuel pour récupérer ou télécharger un message MMS reçu. J'espérais trouver quelques lignes curl ou wget pour pouvoir le faire, mais je n'ai rien trouvé d'utile.Existe-t-il un moyen de télécharger un MMS à partir de la ligne de commande en utilisant curl ou wget?

Jusqu'à présent, j'ai quelques informations MMS à partir des bases de données internes, trouvée par:

# 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 

Comment interpréter la partie mmsc32:10021?

Puis regardant dans les paramètres de message pour le MMSC, Proxy et port, je veux construire un travail CLI en une ligne ou demande navigateur pour télécharger le fichier pour l'inspection.

Dans les paramètres du téléphone paramètres que nous pouvons trouver le MMSC via:

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 

Comment puis-je télécharger le fichier MMS depuis la ligne de commande shell (ou un navigateur externe)?

PS. Évidemment, le téléphone est enraciné et ont à la fois busybox et sqlite3, et peut-être aussi curl ou wget installé. L'AOS est 5.0+.


Addendum: 2017-11-09

De here:

messages MMS (Multimedia Messaging Service) sont envoyés à l'aide d'une combinaison de technologies SMS et WAP. Lorsqu'un message MMS est envoyé, un appareil mobile reçoit un message de notification MMS via SMS. Lorsque ce message de notification MMS est reçu par le périphérique mobile, le périphérique mobile initie automatiquement une connexion de passerelle WAP au pour télécharger le contenu du message MMS.

Pour envoyer un message MMS, vous devez d'abord créer un fichier de message MMS. Le format d'un fichier de message MMS est documenté dans la spécification de protocole MMS Encapsulation publiée par l'Open Mobile Alliance (http://www.openmobilealliance.org) et/ou le WAP Forum (http://www.wapforum.org). Le format de fichier de message MMS consiste en un en-tête de message MMS , suivi d'un message MIME en plusieurs parties où le message en plusieurs parties est codé en format multipartie binaire comme défini par la spécification WSP (WAP Wireless Session Protocol). Ce fichier de message MMS binaire est stocké sur un serveur Web en utilisant un type MIME de application/vnd.wap.mms-message et un type de message MMS de m-retrieve-conf. Un sous-ensemble de l'en-tête MMS binaire est envoyé en tant que message de notification MMS (type de message MMS m-notification-ind) via SMS à le périphérique mobile avec un pointeur URL à l'emplacement du message complet .

De même, les smartphones ne téléchargent plus le contenu MMS ou SMS vers SIM. C'est ainsi que les téléphones "feature" l'utilisaient.


Addendum: 2017-11-13

En regardant les sources API-23 (M) pour les tableaux présentés dans SQLite3 Telephony.java, nous constatons que CONTENT_LOCATION = "ct_l";, afin que nous puissions rechercher son autres utilisations here. Pour résumer brièvement nos conclusions:

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. 

Ainsi nous pouvons nous attendre que l'URI dans ct_l peut être interprété comme suit:

  • http://mmsc32:10021 est le serveur (IP: PORT) masqué par le proxy MMS (illustré) au-dessus
  • /mmsc/3_2 est l'URL WAP au processeur de messages
  • ?Ae_xxxx_xxxxx-xxx est révélateur du processeur de message pour récupérer le message donné par le « numéro de transaction »: Ae_xxxx_xxxxx-xxx`

Par conséquent, en utilisant les paramètres proxy (APN), et en utilisant l'URL extrait du message DB (mmssms.db), il faut être en mesure de récupérer et télécharger le contenu de le MMS, en utilisant une instruction curl soigneusement conçue. Peut-être quelque chose comme :

# 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 

Le premier évidemment ne fonctionnerait pas à l'extérieur de l'environnement de téléphone, car il fait référence à une classe IP C, visible uniquement dans le mobile IP attribuée.

+0

Le proxy est généralement utilisé pour récupérer MSISDN (nombre) et le joindre au MMSC pour une vérification. Peu importe ce que vous fournissez dans les en-têtes HTTP, le numéro ne sera pas transmis et le message ne sera pas téléchargé. – Marvin

+0

@Marvin Bien sûr, mais il devrait être en mesure d'installer ce proxy en fonction de ce qui a été trouvé/extrait (comme indiqué ci-dessus). – not2qubit

+0

Votre propre proxy ne peut pas faire cela. Le proxy de l'opérateur vérifie sgsn/ggsn pour la connexion de données afin de récupérer imsi/msisdn, qui est ensuite transmis au mmsc afin d'authentifier le lien de téléchargement MMS avec le numéro d'abonné. – Marvin

Répondre

0

J'espère que vous aurez une réponse à cette question. Je ne suis pas un, mais jetterai dans mes 2 cents de conseils ...

Version courte

  • Vous ne pouvez pas avoir des textes sauter le « envoyer à » carte SIM et détournement automatique vers un ordinateur.

  • Créez une application Android à installer sur votre téléphone, assurez-vous que son travail consiste à détecter et à rediriger les copies des nouveaux messages de la boîte de réception vers votre ordinateur.

  • Utilisez une clé USB pour la carte SIM. Une fois branché sur l'ordinateur, vous recevez des messages directement sur votre ordinateur sans que le téléphone ne soit impliqué.

Version longue

Plutôt que d'outils de ligne de commande, vous êtes mieux de faire une application réelle (via Android SDK) qui vérifie les messages reçus et transmet des données à vous (par exemple: via email, ou des sockets, ou comme vous aimez).Aussi "certaines données" signifiant soit une copie complète du message lui-même, ou envoie juste la rétroaction de [in-app] analyse de message (par exemple: nombre d'images détectées, l'impression hexadécimale des octets d'image et ainsi de suite).

En regardant SmsManager API Android il vous indique même:

Pour plus d'informations sur la façon de se comporter comme l'application SMS par défaut sur Android 4.4 (niveau API 19) et plus, voir Telephony.

Regardez également la commande downloadMultimediaMessage de cette API. Il fait ce dont tu as besoin. Telephony page a l'information et des liens pour commencer, mais des articles de blog indépendants et des tutoriels (un tel example) sur ce sujet sont là aussi.

Quoi qu'il en soit, sur votre poste ...

(1)

« Je veux juste télécharger le message à un fichier, sans le traitement téléphone, car il pourrait contenir malware »

Comment imaginez-vous « sans le traitement téléphone, il » de travailler? Le téléphone contient la simulation que votre opérateur (via un centre de service) transmettra les messages, après réception du centre de service du fournisseur de l'expéditeur. Vous et curl êtes hors de cette boucle. Vous ne connaîtrez qu'un texte lorsque votre carte SIM le reçoit et que le système d'exploitation du téléphone vous avertit.

Techniquement, le téléphone a traité ce message, vous ne l'avez pas encore ouvert.

(2)

"Comment puis-je télécharger le fichier MMS depuis la ligne de commande shell ou un navigateur externe?"

Vous devez télécharger ce fichier mmssms.db entier et extraire le message spécifique de celui-ci. Vous traitez le .db comme n'importe quelle autre base de données en ligne (ex: en utilisant des requêtes de type SQL/PHP, etc.).

Voir ce tutoriel pour obtenir des conseils utiles: http://cheeky4n6monkey.blogspot.co.uk/2013/02/

Une alternative pour les futurs messages entrants est d'obtenir juste un dongle SIM (USB) qui prend votre carte. Une fois branché sur l'ordinateur, il peut recevoir/envoyer des messages puisque la carte SIM est active/active dans le dongle (comme proxy du téléphone).

Les dongles sont livrés avec un logiciel propriétaire (exemple image of such) pour gérer les connexions Web et lire/écrire des messages SMS/MMS. C'est comme si SIM ne travaillait pas au téléphone mais sur le bureau.

+0

Oui, bien sûr, nous pouvons écrire une application pour intercepter les messages, mais ce n'est pas ce que j'ai demandé. Mais tout comme l'application, nous devrions être en mesure de récupérer le message de même. (1) AFAIK, pas de nouveaux téléphones télécharger des messages à la carte SIM, les détails binaires du message déterminent ce que le système d'exploitation (TE) va faire avec le message. Par exemple. pour l'enregistrer sur SIM, traiter en SE (paramètres APN etc), afficher directement (flash SMS), ou répondre à l'expéditeur etc. (2) Le message ne figure pas dans la BD tant que vous ou votre téléphone ne décidez pas de l'ouvrir, ce qui dépend encore de vos paramètres. – not2qubit