* Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
L'une des premières étapes qu'une équipe Red peut faire est de rechercher les numéros de téléphone disponibles pour contacter l'entreprise en utilisant des outils OSINT, des recherches Google ou en grattant les pages web.
Savoir si l'opérateur fournit des services VoIP vous permet d'identifier si l'entreprise utilise la VoIP... De plus, il est possible que l'entreprise n'ait pas embauché de services VoIP mais utilise des cartes PSTN pour connecter son propre PBX VoIP au réseau téléphonique traditionnel.
* **`nmap`** est capable de scanner les services UDP, mais en raison du nombre de services UDP scannés, il est très lent et peut ne pas être très précis avec ce type de services.
* **`svmap`** de SIPVicious (`sudo apt install sipvicious`): localisera les services SIP dans le réseau indiqué.
*`svmap` est **facile à bloquer** car il utilise l'User-Agent `friendly-scanner`, mais vous pouvez modifier le code de `/usr/share/sipvicious/sipvicious` et le changer.
* **`sipscan.py`** de [**sippts**](https://github.com/Pepelux/sippts)**:** Sipscan est un scanner très rapide pour les services SIP sur UDP, TCP ou TLS. Il utilise le multithreading et peut scanner de larges plages de réseaux. Il permet de facilement indiquer une plage de ports, de scanner à la fois TCP et UDP, d'utiliser une autre méthode (par défaut, il utilisera OPTIONS) et de spécifier un User-Agent différent (et plus encore).
Il est possible de trouver **quelles méthodes sont disponibles** à utiliser dans le PBX en utilisant `sipenumerate.py` de [**sippts**](https://github.com/Pepelux/sippts)
Les extensions dans un système PBX (Private Branch Exchange) font référence aux **identificateurs internes uniques attribués à chaque** ligne téléphonique, appareil ou utilisateur au sein d'une organisation ou d'une entreprise. Les extensions permettent de **router efficacement les appels au sein de l'organisation**, sans avoir besoin de numéros de téléphone externes individuels pour chaque utilisateur ou appareil.
* **`svwar`** de SIPVicious (`sudo apt install sipvicious`): `svwar` est un scanner de lignes d'extension SIP PBX gratuit. En concept, il fonctionne de manière similaire aux wardialers traditionnels en **devinant une plage d'extensions ou une liste donnée d'extensions**.
* **`sipextend.py`** de [**sippts**](https://github.com/Pepelux/sippts)**:** Sipexten identifie les extensions sur un serveur SIP. Sipexten peut vérifier de grands réseaux et des plages de ports.
* **`enumiax` (`apt install enumiax`): enumIAX** est un **énumérateur de force brute de noms d'utilisateur** pour le protocole Inter Asterisk Exchange. enumIAX peut fonctionner selon deux modes distincts : Deviner les noms d'utilisateur séquentiellement ou Attaque par dictionnaire.
Ayant découvert le **PBX** et certains **noms d'utilisateur/extensions**, une équipe rouge pourrait essayer de **s'authentifier via la méthode `REGISTER`** à une extension en utilisant un dictionnaire de mots de passe courants pour forcer l'authentification.
Notez qu'un **nom d'utilisateur** peut être identique à l'extension, mais cette pratique peut varier en fonction du système PBX, de sa configuration et des préférences de l'organisation...
* **`svcrack`** de SIPVicious (`sudo apt install sipvicious`): SVCrack vous permet de craquer le mot de passe pour un nom d'utilisateur/extension spécifique sur un PBX.
* **`sipcrack.py`** de [**sippts**](https://github.com/Pepelux/sippts)**:** SIP Digest Crack est un outil pour craquer les authentifications digest dans le protocole SIP.
Si vous trouvez un équipement VoIP dans un réseau **Open Wifi**, vous pouvez **capturer toutes les informations**. De plus, si vous êtes dans un réseau plus fermé (connecté via Ethernet ou Wifi protégé), vous pouvez effectuer des **attaques MitM telles que** [**ARPspoofing**](../../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) entre le **PBX et la passerelle** pour capturer les informations.
Parmi les informations réseau, vous pouvez trouver des **identifiants web** pour gérer l'équipement, des **extensions d'utilisateur**, des **noms d'utilisateur**, des adresses **IP**, même des **mots de passe hachés** et des **paquets RTP** que vous pouvez reproduire pour **écouter la conversation**, et plus encore.
Pour obtenir ces informations, vous pouvez utiliser des outils tels que Wireshark, tcpdump... mais un **outil spécialement créé pour capturer les conversations VoIP est** [**ucsniff**](https://github.com/Seabreg/ucsniff).
[Consultez cet exemple pour mieux comprendre une **communication SIP REGISTER**](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example) pour apprendre comment sont envoyées les **informations d'identification**.
* **`sipdump`** &**`sipcrack`,** faisant partie de **sipcrack** (`apt-get install sipcrack`): Ces outils peuvent **extraire** d'un **pcap** les **authentifications digest** dans le protocole SIP et les **forcer** par bruteforce.
Non seulement les **informations d'identification SIP** peuvent être trouvées dans le trafic réseau, il est également possible de trouver des codes DTMF qui sont utilisés, par exemple, pour accéder à la **messagerie vocale**.\
Il est possible d'envoyer ces codes dans des **messages INFO SIP**, dans l'**audio** ou à l'intérieur des **paquets RTP**. Si les codes sont à l'intérieur des paquets RTP, vous pouvez couper cette partie de la conversation et utiliser l'outil multimo pour les extraire :
Si une adresse IP est spécifiée, l'hôte **n'aura pas besoin d'envoyer des requêtes REGISTER** de temps en temps (dans le paquet REGISTER est envoyé le temps de vie, généralement 30 minutes, ce qui signifie que dans un autre scénario, le téléphone devra s'enregistrer toutes les 30 minutes). Cependant, il devra avoir des ports ouverts permettant aux connexions du serveur VoIP de prendre des appels.
Lorsque **`type=friend`** est utilisé, la **valeur** de la variable **host****ne sera pas utilisée**, donc si un administrateur **mal configure un SIP-trunk** en utilisant cette valeur, **n'importe qui pourra s'y connecter**.
Dans Asterisk, un **contexte** est un conteneur ou une section nommé(e) dans le plan de numérotation qui **regroupe les extensions, les actions et les règles** liées. Le plan de numérotation est le composant principal d'un système Asterisk, car il définit **comment les appels entrants et sortants sont gérés et routés**. Les contextes sont utilisés pour organiser le plan de numérotation, gérer le contrôle d'accès et fournir une séparation entre les différentes parties du système.
Chaque contexte est défini dans le fichier de configuration, généralement dans le fichier **`extensions.conf`**. Les contextes sont indiqués par des crochets, avec le nom du contexte entre eux. Par exemple :
Dans le contexte, vous définissez des extensions (modèles de numéros composés) et les associez à une série d'actions ou d'applications. Ces actions déterminent la façon dont l'appel est traité. Par exemple :
Cet exemple montre un contexte simple appelé "my\_context" avec une extension "100". Lorsque quelqu'un compose le 100, l'appel sera répondu, un message de bienvenue sera joué, puis l'appel sera terminé.
De plus, par défaut, le fichier **`sip.conf`** contient **`allowguest=true`**, donc **n'importe quel** attaquant **sans authentification** pourra appeler n'importe quel autre numéro.
***`sipinvite.py`** de [**sippts**](https://github.com/Pepelux/sippts)**:** Sipinvite vérifie si un **serveur PBX nous permet de passer des appels sans authentification**. Si le serveur SIP a une configuration incorrecte, il nous permettra de passer des appels vers des numéros externes. Il peut également nous permettre de transférer l'appel vers un deuxième numéro externe.
Par exemple, si votre serveur Asterisk a une mauvaise configuration de contexte, vous pouvez accepter une demande INVITE sans autorisation. Dans ce cas, un attaquant peut passer des appels sans connaître aucun nom d'utilisateur/mot de passe.
IVRS signifie **Interactive Voice Response System**, une technologie de téléphonie qui permet aux utilisateurs d'interagir avec un système informatisé par la voix ou des entrées à tonalité. IVRS est utilisé pour construire des systèmes de gestion d'appels automatisés qui offrent une gamme de fonctionnalités, telles que la fourniture d'informations, le routage des appels et la capture des entrées utilisateur.
1.**Messages vocaux**: Messages audio préenregistrés qui guident les utilisateurs à travers les options de menu IVR et les instructions.
2.**Signalisation DTMF** (Dual-Tone Multi-Frequency) : Entrées à tonalité générées en appuyant sur des touches sur le téléphone, qui sont utilisées pour naviguer dans les menus IVR et fournir des entrées.
3.**Routage des appels**: Diriger les appels vers la destination appropriée, tels que des départements spécifiques, des agents ou des extensions en fonction de l'entrée de l'utilisateur.
4.**Capture d'entrée utilisateur**: Collecte d'informations auprès des appelants, telles que des numéros de compte, des identifiants de cas ou toute autre donnée pertinente.
5.**Intégration avec des systèmes externes**: Connexion du système IVR à des bases de données ou à d'autres systèmes logiciels pour accéder ou mettre à jour des informations, effectuer des actions ou déclencher des événements.
Dans un système VoIP Asterisk, vous pouvez créer un IVR en utilisant le plan de numérotation (**fichier `extensions.conf`**) et diverses applications telles que `Background()`, `Playback()`, `Read()`, et plus encore. Ces applications vous aident à lire des messages vocaux, à capturer les entrées utilisateur et à contrôler le flux d'appels.
Le précédent est un exemple où l'utilisateur est invité à **appuyer sur 1 pour appeler** un département, **2 pour appeler** un autre, ou **l'extension complète** s'il la connaît.\
La vulnérabilité réside dans le fait que la **longueur de l'extension n'est pas vérifiée**, de sorte qu'un utilisateur pourrait entrer un numéro complet pendant les 5 secondes de temps d'attente et il sera appelé.
Cependant, si **`${EXTEN}`** permet d'introduire **plus que des chiffres** (comme dans les anciennes versions d'Asterisk), un attaquant pourrait introduire **`101&SIP123123123`** pour appeler le numéro de téléphone 123123123. Et voici le résultat :
Par conséquent, un appel à l'extension **`101`** et **`123123123`** sera envoyé et seul le premier appelé établi la communication... mais si un attaquant utilise une **extension qui contourne toute correspondance** qui est en cours d'exécution mais qui n'existe pas, il pourrait **injecter un appel uniquement vers le numéro souhaité**.
La fuite de Digest SIP est une vulnérabilité qui affecte un grand nombre de téléphones SIP, y compris les téléphones IP matériels et logiciels ainsi que les adaptateurs téléphoniques (VoIP vers analogique). La vulnérabilité permet la **fuite de la réponse d'authentification Digest**, qui est calculée à partir du mot de passe. Une **attaque de mot de passe hors ligne est alors possible** et peut récupérer la plupart des mots de passe en fonction de la réponse au défi.
1. Un téléphone IP (victime) écoute sur le port 5060, acceptant les appels téléphoniques
2. L'attaquant envoie une INVITE au téléphone IP
3. Le téléphone de la victime commence à sonner et quelqu'un décroche et raccroche (parce que personne ne répond au téléphone à l'autre bout)
4. Lorsque le téléphone est raccroché, le **téléphone de la victime envoie un BYE à l'attaquant**
5. L'**attaquant émet une réponse 407** qui **demande une authentification** et émet un défi d'authentification
6. Le **téléphone de la victime fournit une réponse au défi d'authentification** dans un deuxième BYE
7. L'**attaquant peut alors lancer une attaque par force brute** sur la réponse au défi sur sa machine locale (ou réseau distribué, etc.) et deviner le mot de passe
Click2Call permet à un **utilisateur web** (qui pourrait par exemple être intéressé par un produit) d'**introduire** son **numéro de téléphone** pour être appelé. Ensuite, un commercial sera appelé et lorsque celui-ci **décroche le téléphone**, l'utilisateur sera **appelé et connecté à l'agent**.
* Le profil précédent permet à **N'IMPORTE QUELLE adresse IP de se connecter** (si le mot de passe est connu).
* Pour **organiser un appel**, comme spécifié précédemment, **aucune permission de lecture n'est nécessaire** et **seulement****originate** en **écriture** est nécessaire.
Dans Asterisk, il est possible d'utiliser la commande **`ChanSpy`** en indiquant les **extensions à surveiller** (ou toutes) pour entendre les conversations qui ont lieu. Cette commande doit être attribuée à une extension.
Par exemple, **`exten => 333,1,ChanSpy('all',qb)`** indique que si vous **appelez** l'**extension 333**, elle **surveillera****`toutes`** les extensions, **commencera à écouter** chaque fois qu'une nouvelle conversation commence (**`b`**) en mode silencieux (**`q`**) car nous ne voulons pas y participer. Vous pouvez passer d'une conversation à l'autre en appuyant sur **`*`**, ou en marquant le numéro de l'extension.
**RTCPBleed** est un problème de sécurité majeur affectant les serveurs VoIP basés sur Asterisk (publié en 2017). La vulnérabilité permet à **tout utilisateur sur Internet d'intercepter et de rediriger le trafic RTP (Real Time Protocol)**, qui transporte les conversations VoIP. Cela se produit car le trafic RTP contourne l'authentification lorsqu'il navigue à travers les pare-feux NAT (Network Address Translation).
Les mandataires RTP tentent de résoudre les **limites NAT** affectant les systèmes RTC en faisant transiter les flux RTP entre deux ou plusieurs parties. Lorsque NAT est en place, le logiciel de mandataire RTP ne peut souvent pas se fier aux informations IP et de port RTP récupérées par la signalisation (par exemple SIP). Par conséquent, un certain nombre de mandataires RTP ont mis en œuvre un mécanisme où un tel **couple IP et port est appris automatiquement**. Cela est souvent fait en inspectant le trafic RTP entrant et en marquant l'adresse IP source et le port pour tout trafic RTP entrant comme celui qui devrait être répondu. Ce mécanisme, qui peut être appelé "mode d'apprentissage", **n'utilise aucun type d'authentification**. Par conséquent, les **attaquants** peuvent **envoyer du trafic RTP au mandataire RTP** et recevoir le trafic RTP mandaté destiné à l'appelant ou au destinataire d'un flux RTP en cours. Nous appelons cette vulnérabilité RTP Bleed car elle permet aux attaquants de recevoir des flux de médias RTP destinés à être envoyés à des utilisateurs légitimes.
Un autre comportement intéressant des mandataires RTP et des piles RTP est que parfois, **même s'ils ne sont pas vulnérables à RTP Bleed**, ils **accepteront, transmettront et/ou traiteront des paquets RTP provenant de n'importe quelle source**. Par conséquent, les attaquants peuvent envoyer des paquets RTP qui peuvent leur permettre d'injecter leurs médias au lieu de ceux légitimes. Nous appelons cette attaque l'injection RTP car elle permet l'injection de paquets RTP illégitimes dans des flux RTP existants. Cette vulnérabilité peut être trouvée dans les mandataires RTP et les points d'extrémité.
Asterisk et FreePBX ont traditionnellement utilisé le paramètre **`NAT=yes`**, qui permet au trafic RTP de contourner l'authentification, ce qui peut entraîner une absence de son ou un son unidirectionnel lors des appels.
* **`rtpbleedinject.py`** de [**sippts**](https://github.com/Pepelux/sippts)**:** Exploite la vulnérabilité RTP Bleed en envoyant des flux RTP (à partir d'un fichier audio)
Si vous parvenez d'une manière ou d'une autre à **ajouter des règles d'extension et à les recharger** dans Asterisk (par exemple en compromettant un serveur de gestionnaire web vulnérable), il est possible d'obtenir une RCE en utilisant la commande **`System`**.
Si le serveur **interdit l'utilisation de certains caractères** dans la commande **`System`** (comme dans Elastix), vérifiez si le serveur Web permet de **créer des fichiers quelque part dans le système** (comme dans Elastix ou trixbox), et utilisez-le pour **créer un script de porte dérobée** que vous pourrez ensuite utiliser avec **`System`** pour **exécuter** ce **script**.
* **`Elastix.conf`** -> Contient plusieurs mots de passe en clair tels que le mot de passe root mysql, le mot de passe IMAPd, le mot de passe d'administration Web.
* **Plusieurs dossiers** appartiendront à l'utilisateur Asterisk compromis (s'il ne s'exécute pas en tant que root). Cet utilisateur peut lire les fichiers précédents et contrôle également la configuration, il pourrait donc faire en sorte qu'Asterisk charge d'autres binaires avec porte dérobée lorsqu'ils sont exécutés.
Il est possible d'insérer un **`.wav`** dans les conversations à l'aide d'outils tels que **`rtpinsertsound`** (`sudo apt install rtpinsertsound`) et **`rtpmixsound`** (`sudo apt install rtpmixsound`).
Ou vous pouvez utiliser les scripts de [http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/](http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/) pour **analyser les conversations** (**`rtpscan.pl`**), envoyer un fichier `.wav` à une conversation (**`rtpsend.pl`**) et **insérer du bruit** dans une conversation (**`rtpflood.pl`**).
* [**IAXFlooder**](https://www.kali.org/tools/iaxflood/) : DoS du protocole IAX utilisé par Asterisk
* [**inviteflood**](https://github.com/foreni-packages/inviteflood/blob/master/inviteflood/Readme.txt) : Un outil pour effectuer une inondation de messages SIP/SDP INVITE sur UDP/IP.
* [**rtpflood**](https://www.kali.org/tools/rtpflood/) : Envoie plusieurs paquets RTP bien formés. Il est nécessaire de connaître les ports RTP qui sont utilisés (sniffer d'abord).
* [**SIPp**](https://github.com/SIPp/sipp) : Permet d'analyser et de générer du trafic SIP. Il peut donc également être utilisé pour DoS.
* [**SIPsak**](https://github.com/nils-ohlmeier/sipsak) : Couteau suisse SIP. Peut également être utilisé pour effectuer des attaques SIP.
* **`sipsend.py`** de [**sippts**](https://github.com/Pepelux/sippts)**:** SIPSend nous permet d'envoyer un **message SIP personnalisé** et d'analyser la réponse.
* **`wssend.py`** de [**sippts**](https://github.com/Pepelux/sippts)**:** WsSend nous permet d'envoyer un message SIP personnalisé sur WebSockets et d'analyser la réponse.
La façon la plus simple d'installer un logiciel tel qu'Asterisk est de télécharger une **distribution de système d'exploitation** qui l'a déjà installé, comme: **FreePBX, Elastix, Trixbox**... Le problème avec ceux-ci est qu'une fois qu'ils fonctionnent, les administrateurs système pourraient **ne plus les mettre à jour** et des **vulnérabilités** vont être découvertes avec le temps.
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live).
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).