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.
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
@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
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