Pour afficher les paquets vides envoyés par les appareils SIP, nous ne pouvons pas utiliser ngrep en prenant le numéro de compte/téléphone comme filtre. Il faut donc mettre un filtre correspondant à l’adresse IP externe de notre téléphone SIP. Pour ne pas obtenir des paquets correspondant à d’autres téléphones, la première chose à faire est de trouver un serveur SIP où aucun téléphone utilisant l’adresse IP externe de nos locaux ne s’enregistre.
Notre adresse IP externe est 81.62.117.XXX. Voici la requête sélectionnant les serveurs SIP ayant un enregistrement où contact contient 81.62.117.XXX
mysql> select domain, contact from location where contact REGEXP 'sip:[0-9]*@81.62.117.XXX:[0-9]*' group by domain;
+----------------+-------------------------------------+
| domain | contact |
+----------------+-------------------------------------+
| 82.103.128.XXX | sip:4121550xxx1@81.62.117.XXX:60145 |
| 91.121.101.XXX | sip:4121550XXX2@81.62.117.XXX:59954 |
| 91.121.138.XXX | sip:4121550xxx3@81.62.117.XXX:62747 |
| 91.121.178.XXX | sip:4121550xxx4@81.62.117.XXX:62777 |
| 91.121.205.XXX | sip:4121550xxx5@81.62.117.XXX:49294 |
| 91.121.75.XXX | sip:4121550xxx6@81.62.117.XXX:49302 |
| 94.23.225.XXX | sip:4121550xxx7@81.62.117.XXX:49341 |
+----------------+-------------------------------------+
7 rows in set (0.02 sec)
Un simple nslookup sur nos différents serveurs PortaSip (Ce simple script les liste [bash]) permet de trouver une adresse IP de serveur qui n’est pas comprise dans la liste ci-dessus.
Nous prendrons le serveur fr14.youroute.net (94.23.50.XXX)
Nous prenons astrad4.switzernet.com (91.121.16.XXX) qui ne fait pas partie de la liste de serveur ci-dessus.
Les détails des paquets SIP ne sont pas nécessaires pour nos tests, il nous faut seulement capturer les deux premières lignes des échanges tel que :
U date ip_source:port -> ip_destination:port
Seconde ligne du paquet
Voici la commande utilisé :
# ngrep -pqlt -W byline host 81.62.117.XXX and port 5060 | grep -A1 -i '^U '