mercredi 30 juillet 2014

Notes sur l'interface OBD / PC pour une Peugeot

Il m'a fallu pas mal de temps pour m'y retrouver dans les forums de diagnostiqueurs et être certain du matériel nécessaire à la connexion OBD d'une Peugeot récente. J'imagine que ces notes en aideront plus d'un.

Chaque constructeur dispose de ses propres outils, mais les principes restent les mêmes d'une marque à l'autre. l'interfaçage avec le réseau CAN de la voiture se fait par le port OBD II. Selon les modèles on peut également accéder aux différents ECU du véhicule par cette même prise OBD. Certains ECU nécessitent un interfaçage direct.

Les logiciels Lexia3 pour Citroën et PP2000 pour Peugeot sont destinés aux anciens modèles. Ils ne fonctionnent que sous Windows XP 32 Bits. Je ne les ai jamais testés.

Diagbox est une offre logiciel qui encapsule les anciennes versions de Lexia3 et PP2000, ainsi que de nouveaux outils pour les véhicules récents. Diagbox en tant que tel fonctionne sous 64 bits pour les véhicules récents (DS3, 308, ...), mais dès qu'on tente de se connecter à des anciens modèles (C3, 206, ...) la solution repose sur les Lexia3 et PP2000 et donc nécessite XP 32 bits.

Tous ces logiciels sont de véritables usines à gaz qui font plusieurs gigas, qui lancent plein d'applications résidentes au démarrage et qui font des connexions internet. L'installation dans une machine virtuelle ou sur un PC dédié est obligatoire si vous ne voulez pas pourrir votre machine du quotidien.

Au niveau matériel, les véhicules du groupe PSA nécessitent une prise nommée XS Evolution qui ressemble à ça:

Lexia 3 v48 pp2000 v25 citroenpeugeot 1
Au départ ce type d'interface et de logiciel n'était disponible qu'aux concessionnaires et garagistes, mais mondialisation et internet aidant il est désormais possible sans trop de peine de trouver une version "libre" du logiciel et d'acheter l'interface pour moins de 150€.

Quasiment tous les sites qui vendent ce genre d'interface de diagnostic sont basés en Chine et c'est un peu la loterie sur ce que l'on va recevoir. On peut tomber sur une interface officielle, sur une contrefaçon de qualité ou sur une pâle copie défectueuse.

L'interface matérielle fonctionne grâce à un firmware qui doit être mis à jour pour fonctionner avec tel ou tel version du logiciel sur PC.

Si on arrive à faire fonctionner tout cela, on a en gros les mêmes possibilités que le concessionnaire. La plupart des fonctionnalités sont en revanche destinées uniquement à un public averti et il est fortement déconseillé de clique au hasard. Quand on est arrivé à cette étape on comprend pourquoi les concessionnaires et les garagistes n'ont pas de souci à se faire, le diagnostic d'une voiture reste une affaire de spécialiste ou de passionné érudit.

A noter une source d'information utile, les 3 DVDs de documentation technique Peugeot Service Box qui contient la doc technique et schématique SEDRE.

lundi 7 juillet 2014

Retour d'expérience sur le sniffing VOIP en pratique

J'ai commencé par tester l'excellent outil windows: Cain par Oxid. Ce sniffer/cracker évolué a le mérite d'offrir en plus une fonction d'arp spoofing accessible au plus novice en sécurité. Je n'ai même pas eu besoin de cette fonction puisque j'ai expérimenté sur un logiciel de VOIP directement installé sur le même PC. J'ai effectué un appel en TCP et RTP clair avec le codec G711 (ou PCMA en Europe), Cain a directement reconnu l'appel et lancé l'enregistrement de la conversation que j'ai pu réécouter une fois l'appel terminé. En revanche il semble que Cain ne supporte que ce codec, du moins je n'ai pas pu réécouter une conversation effectuée avec un autre codec (Comme le récent Opus par exemple).

Voip cain abel oxid
J'ai réédité le même sniffing clair avec Wireshark. Là aussi il est assez facile de transformer un .pcap en fichier audio directement écoutable, mais wireshark souffre de la même limitation que Cain, à savoir le support unique du G711.

Dans la pratique une communication VOIP classique est le plus souvent chiffrée au niveau signalisation via du SIP en TLS, et au niveau données par du SRTP. La clé de chiffrement du SRTP est échangée en SIP via le format SDP. Il serait donc inefficace de ne chiffrer que les données, puisque la clé pourrait être récupérée dans du SIP en simple TCP. Ci-dessous un exemple de clé en clair dans le champ "inline:" v=0
o=sam 2890844526 2890842807 IN IP4 10.47.16.5
s=SRTP Discussion
i=A discussion of Secure RTP
u=http://www.example.com/seminars/srtp.pdf
e=marge@example.com (Marge Simpson)
c=IN IP4 168.2.17.12
t=2873397496 2873404696
m=audio 49170 RTP/SAVP 0
a=crypto:1 AES_CM_128_HMAC_SHA1_80inline:WVNfX19zZW1jdGwgKCkgewkyMjA7fQp9CnVubGVz|2^20|1:4
FEC_ORDER=FEC_SRTP
Si l'on a affaire à une connexion SRTP il faudra d'abord récupérer la clé de chiffrement dans le SIP (s'il est en clair) ou préalablement contourner le chiffrement TLS (par un MITM par exemple) pour y accéder.

Pour décoder le SRTP j'ai d'abord tenté l'outil pcaputil de la suite PJSIP
pcaputil -c AES_CM_128_HMAC_SHA1_80 -k AABBCCDDEEFF112233445566 ./srtp.pcap ./rtp.pcap Mais l'utilitaire a lamentablement échoué par un "pjmedia_transport_srtp_create: Assertion `endpt && tp && p_tp' failed"; et ceci malgré mes nombreuses tentatives. J'ai du abandonner cet outil.

Je suis donc passé à srtp-decrypt, qui comme sa documentation l'indique utilise le code SRTP de VLC de manière isolée pour pouvoir réaliser la fonction de déchiffrage. J'ai du tâtonner pour trouver une syntaxe permettant de donner une entrée et une sortie au programme:
srtp-decrypt -k AABBCCDDEEFF112233445566 < ./srtp.pcap > ./rtp.pcap Malheureusement là aussi ce fut un échec, car strp-decrypt m'a constamment renvoyé. "frame XXX dropped: decoding failed 'Permission denied'", Comme si je n'avais pas la bonne clé de chiffrage. A noter pour la clé de chiffrage que chaque direction de flux utilise une clé différente. Il ne faut pas se tromper.

Je n'ai absolument pas eu le temps d'explorer d'autres outils, j'ai testé les outils que j'ai trouvés facilement sur le net. Nul doute que Kali Linux doit être plus riche en outillage sur ce plan. La publication de ces échecs pourra peut-être en aider certains, ou les mettre sur la bonne piste.