Pentesting VoIP
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Αποκτήστε την προοπτική ενός χάκερ για τις εφαρμογές ιστού, το δίκτυο και το cloud σας
Βρείτε και αναφέρετε κρίσιμες, εκμεταλλεύσιμες ευπάθειες με πραγματικό επιχειρηματικό αντίκτυπο. Χρησιμοποιήστε τα 20+ προσαρμοσμένα εργαλεία μας για να χαρτογραφήσετε την επιφάνεια επίθεσης, να βρείτε ζητήματα ασφαλείας που σας επιτρέπουν να κλιμακώσετε προνόμια και να χρησιμοποιήσετε αυτοματοποιημένα exploits για να συλλέξετε βασικά αποδεικτικά στοιχεία, μετατρέποντας τη σκληρή δουλειά σας σε πειστικές αναφορές.
VoIP Βασικές Πληροφορίες
Για να ξεκινήσετε να μαθαίνετε πώς λειτουργεί το VoIP, ελέγξτε:
Basic VoIP ProtocolsΒασικά Μηνύματα
Response Codes
1xx—Προσωρινές Απαντήσεις
2xx—Επιτυχείς Αντιδράσεις
3xx—Απαντήσεις Ανακατεύθυνσης
4xx—Απαντήσεις Αποτυχίας Πελάτη
5xx—Απαντήσεις Αποτυχίας Διακομιστή
6xx—Παγκόσμιες Αποτυχίες Αντιδράσεων
VoIP Enumeration
Telephone Numbers
Ένα από τα πρώτα βήματα που θα μπορούσε να κάνει μια Red Team είναι να αναζητήσει διαθέσιμους αριθμούς τηλεφώνου για να επικοινωνήσει με την εταιρεία χρησιμοποιώντας εργαλεία OSINT, αναζητήσεις στο Google ή scraping των ιστοσελίδων.
Μόλις έχετε τους αριθμούς τηλεφώνου, μπορείτε να χρησιμοποιήσετε διαδικτυακές υπηρεσίες για να προσδιορίσετε τον πάροχο:
Γνωρίζοντας αν ο πάροχος παρέχει υπηρεσίες VoIP, μπορείτε να προσδιορίσετε αν η εταιρεία χρησιμοποιεί VoIP... Επιπλέον, είναι πιθανό ότι η εταιρεία δεν έχει προσλάβει υπηρεσίες VoIP αλλά χρησιμοποιεί κάρτες PSTN για να συνδέσει το δικό της VoIP PBX με το παραδοσιακό δίκτυο τηλεφωνίας.
Πράγματα όπως οι αυτοματοποιημένες απαντήσεις μουσικής συνήθως υποδεικνύουν ότι χρησιμοποιείται VoIP.
Google Dorks
OSINT πληροφορίες
Οποιαδήποτε άλλη OSINT αρίθμηση που βοηθά στην αναγνώριση του λογισμικού VoIP που χρησιμοποιείται θα είναι χρήσιμη για μια Red Team.
Δικτυακή Αρίθμηση
nmap
είναι ικανό να σαρώσει υπηρεσίες UDP, αλλά λόγω του αριθμού των υπηρεσιών UDP που σαρώνονται, είναι πολύ αργό και μπορεί να μην είναι πολύ ακριβές με αυτόν τον τύπο υπηρεσιών.
svmap
από το SIPVicious (sudo apt install sipvicious
): Θα εντοπίσει τις υπηρεσίες SIP στο υποδεικνυόμενο δίκτυο.svmap
είναι εύκολο να μπλοκαριστεί επειδή χρησιμοποιεί τον User-Agentfriendly-scanner
, αλλά μπορείτε να τροποποιήσετε τον κώδικα από το/usr/share/sipvicious/sipvicious
και να τον αλλάξετε.
SIPPTS scan
από sippts: Η σάρωση SIPPTS είναι ένας πολύ γρήγορος σαρωτής για υπηρεσίες SIP μέσω UDP, TCP ή TLS. Χρησιμοποιεί πολλαπλές νήματα και μπορεί να σαρώσει μεγάλες περιοχές δικτύων. Επιτρέπει την εύκολη ένδειξη μιας περιοχής θυρών, τη σάρωση τόσο TCP όσο και UDP, τη χρήση άλλης μεθόδου (κατά προεπιλογή θα χρησιμοποιήσει OPTIONS) και την καθορισμένη διαφορετική User-Agent (και άλλα).
metasploit:
Extra Network Enumeration
Ο PBX θα μπορούσε επίσης να εκθέτει άλλες υπηρεσίες δικτύου όπως:
69/UDP (TFTP): Ενημερώσεις υλικολογισμικού
80 (HTTP) / 443 (HTTPS): Για τη διαχείριση της συσκευής από το διαδίκτυο
389 (LDAP): Εναλλακτική αποθήκευση πληροφοριών χρηστών
3306 (MySQL): Βάση δεδομένων MySQL
5038 (Manager): Επιτρέπει τη χρήση του Asterisk από άλλες πλατφόρμες
5222 (XMPP): Μηνύματα χρησιμοποιώντας Jabber
Και άλλες...
Methods Enumeration
Είναι δυνατόν να βρείτε ποιοι μέθοδοι είναι διαθέσιμοι για χρήση στο PBX χρησιμοποιώντας SIPPTS enumerate
από sippts
Ανάλυση απαντήσεων διακομιστή
Είναι πολύ σημαντικό να αναλύουμε τις κεφαλίδες που μας στέλνει πίσω ένας διακομιστής, ανάλογα με τον τύπο του μηνύματος και τις κεφαλίδες που στέλνουμε. Με το SIPPTS send
από sippts μπορούμε να στείλουμε εξατομικευμένα μηνύματα, χειριζόμενοι όλες τις κεφαλίδες, και να αναλύσουμε την απάντηση.
Είναι επίσης δυνατό να αποκτήσουμε δεδομένα αν ο διακομιστής χρησιμοποιεί websockets. Με το SIPPTS wssend
από sippts μπορούμε να στείλουμε εξατομικευμένα μηνύματα WS.
Extension Enumeration
Extensions σε ένα PBX (Ιδιωτικό Κέντρο Επικοινωνίας) σύστημα αναφέρονται στους μοναδικούς εσωτερικούς αναγνωριστικούς αριθμούς που αποδίδονται σε μεμονωμένες τηλεφωνικές γραμμές, συσκευές ή χρήστες εντός ενός οργανισμού ή επιχείρησης. Οι extensions καθιστούν δυνατή την αποτελεσματική δρομολόγηση κλήσεων εντός του οργανισμού, χωρίς την ανάγκη για μεμονωμένους εξωτερικούς τηλεφωνικούς αριθμούς για κάθε χρήστη ή συσκευή.
svwar
από το SIPVicious (sudo apt install sipvicious
):svwar
είναι ένας δωρεάν σαρωτής τηλεφωνικών γραμμών SIP PBX. Στην έννοια του λειτουργεί παρόμοια με τους παραδοσιακούς wardialers, μαντεύοντας μια σειρά από extensions ή μια δεδομένη λίστα extensions.
SIPPTS exten
από sippts: Το SIPPTS exten αναγνωρίζει τις επεκτάσεις σε έναν SIP server. Το Sipexten μπορεί να ελέγξει μεγάλες περιοχές δικτύου και θυρών.
metasploit: Μπορείτε επίσης να καταγράψετε επεκτάσεις/ονόματα χρηστών με το metasploit:
enumiax
(apt install enumiax
): enumIAX είναι ένας πρωτόκολλος Inter Asterisk Exchange enumerator brute-force ονόματος χρήστη. Το enumIAX μπορεί να λειτουργήσει σε δύο διακριτές λειτουργίες: Sequential Username Guessing ή Dictionary Attack.
VoIP Attacks
Password Brute-Force - online
Έχοντας ανακαλύψει το PBX και μερικά extensions/usernames, μια Red Team θα μπορούσε να προσπαθήσει να authenticate μέσω της μεθόδου REGISTER
σε ένα extension χρησιμοποιώντας ένα λεξικό κοινών κωδικών πρόσβασης για να κάνει brute force την αυθεντικοποίηση.
Σημειώστε ότι ένα username μπορεί να είναι το ίδιο με το extension, αλλά αυτή η πρακτική μπορεί να διαφέρει ανάλογα με το σύστημα PBX, τη διαμόρφωσή του και τις προτιμήσεις του οργανισμού...
Αν το username δεν είναι το ίδιο με το extension, θα χρειαστεί να καταλάβετε το username για να το κάνετε brute-force.
svcrack
από το SIPVicious (sudo apt install sipvicious
): SVCrack σας επιτρέπει να σπάσετε τον κωδικό πρόσβασης για ένα συγκεκριμένο username/extension σε ένα PBX.
SIPPTS rcrack
από sippts: Το SIPPTS rcrack είναι ένας απομακρυσμένος αποκωδικοποιητής κωδικών πρόσβασης για υπηρεσίες SIP. Ο rcrack μπορεί να δοκιμάσει κωδικούς πρόσβασης για αρκετούς χρήστες σε διαφορετικές διευθύνσεις IP και εύρη θυρών.
Metasploit:
VoIP Sniffing
Αν βρείτε εξοπλισμό VoIP μέσα σε ένα Ανοιχτό Wifi δίκτυο, θα μπορούσατε να καταγράψετε όλες τις πληροφορίες. Επιπλέον, αν βρίσκεστε σε ένα πιο κλειστό δίκτυο (συνδεδεμένο μέσω Ethernet ή προστατευμένου Wifi) θα μπορούσατε να εκτελέσετε MitM επιθέσεις όπως ARPspoofing μεταξύ του PBX και της πύλης προκειμένου να καταγράψετε τις πληροφορίες.
Μεταξύ των πληροφοριών δικτύου, θα μπορούσατε να βρείτε διαπιστευτήρια ιστού για τη διαχείριση του εξοπλισμού, επεκτάσεις χρηστών, όνομα χρήστη, διευθύνσεις IP, ακόμη και hashed passwords και RTP πακέτα που θα μπορούσατε να αναπαράγετε για να ακούσετε τη συνομιλία, και άλλα.
Για να αποκτήσετε αυτές τις πληροφορίες, θα μπορούσατε να χρησιμοποιήσετε εργαλεία όπως το Wireshark, tcpdump... αλλά ένα ειδικά δημιουργημένο εργαλείο για την καταγραφή συνομιλιών VoIP είναι ucsniff.
Σημειώστε ότι αν χρησιμοποιείται TLS στην επικοινωνία SIP δεν θα μπορείτε να δείτε την επικοινωνία SIP καθαρά. Το ίδιο θα συμβεί αν χρησιμοποιούνται SRTP και ZRTP, τα RTP πακέτα δεν θα είναι σε καθαρό κείμενο.
SIP credentials (Password Brute-Force - offline)
Δείτε αυτό το παράδειγμα για να κατανοήσετε καλύτερα μια επικοινωνία SIP REGISTER για να μάθετε πώς αποστέλλονται τα διαπιστευτήρια.
sipdump
&sipcrack
, μέρος του sipcrack (apt-get install sipcrack
): Αυτά τα εργαλεία μπορούν να εξάγουν από ένα pcap τις digest authentications μέσα στο πρωτόκολλο SIP και να τις bruteforce.
SIPPTS dump
από sippts: Το SIPPTS dump μπορεί να εξάγει διαπιστευτήρια αυθεντικοποίησης από ένα αρχείο pcap.
SIPPTS dcrack
από sippts: Το SIPPTS dcrack είναι ένα εργαλείο για να σπάσει τις διαπιστεύσεις digest που αποκτήθηκαν με το SIPPTS dump.
SIPPTS tshark
από sippts: Το SIPPTS tshark εξάγει δεδομένα του πρωτοκόλλου SIP από ένα αρχείο PCAP.
DTMF κωδικοί
Όχι μόνο τα SIP διαπιστευτήρια μπορούν να βρεθούν στην κίνηση του δικτύου, είναι επίσης δυνατό να βρεθούν DTMF κωδικοί που χρησιμοποιούνται για παράδειγμα για την πρόσβαση στο φωνητικό ταχυδρομείο. Είναι δυνατό να σταλούν αυτοί οι κωδικοί σε INFO SIP μηνύματα, σε ήχο ή μέσα σε RTP πακέτα. Αν οι κωδικοί είναι μέσα σε RTP πακέτα, θα μπορούσατε να κόψετε αυτό το μέρος της συνομιλίας και να χρησιμοποιήσετε το εργαλείο multimo για να τους εξαγάγετε:
Δωρεάν Κλήσεις / Λάθη Ρυθμίσεων Συνδέσεων Asterisks
Στο Asterisk είναι δυνατόν να επιτραπεί μια σύνδεση από μια συγκεκριμένη διεύθυνση IP ή από οποιαδήποτε διεύθυνση IP:
Αν καθοριστεί μια διεύθυνση IP, ο φιλοξενούμενος δεν θα χρειάζεται να στέλνει αιτήματα REGISTER κάθε λίγο και λιγάκι (στο πακέτο REGISTER αποστέλλεται ο χρόνος ζωής, συνήθως 30 λεπτά, που σημαίνει ότι σε άλλη περίπτωση το τηλέφωνο θα χρειαστεί να REGISTER κάθε 30 λεπτά). Ωστόσο, θα χρειαστεί να έχει ανοιχτές θύρες που να επιτρέπουν συνδέσεις από τον διακομιστή VoIP για να δέχεται κλήσεις.
Για να οριστούν οι χρήστες, μπορούν να οριστούν ως:
type=user
: Ο χρήστης μπορεί να δέχεται κλήσεις μόνο ως χρήστης.type=friend
: Είναι δυνατή η πραγματοποίηση κλήσεων ως peer και η λήψη τους ως χρήστης (χρησιμοποιείται με επεκτάσεις)type=peer
: Είναι δυνατή η αποστολή και λήψη κλήσεων ως peer (SIP-trunks)
Είναι επίσης δυνατή η καθ establishment εμπιστοσύνης με την ανασφαλή μεταβλητή:
insecure=port
: Επιτρέπει τις συνδέσεις peer που επικυρώνονται από IP.insecure=invite
: Δεν απαιτεί αυθεντικοποίηση για τα μηνύματα INVITEinsecure=port,invite
: Και τα δύο
Όταν χρησιμοποιείται το type=friend
, η τιμή της μεταβλητής host δεν θα χρησιμοποιηθεί, οπότε αν ένας διαχειριστής παραμετροποιήσει λανθασμένα ένα SIP-trunk χρησιμοποιώντας αυτή την τιμή, οποιοσδήποτε θα μπορεί να συνδεθεί σε αυτό.
Για παράδειγμα, αυτή η διαμόρφωση θα ήταν ευάλωτη:
host=10.10.10.10
insecure=port,invite
type=friend
Δωρεάν Κλήσεις / Λανθασμένες Διαμορφώσεις Πλαισίου Asterisks
Στο Asterisk, ένα context είναι ένα ονομασμένο δοχείο ή τμήμα στο σχέδιο κλήσεων που ομαδοποιεί σχετικές επεκτάσεις, ενέργειες και κανόνες. Το σχέδιο κλήσεων είναι το κύριο συστατικό ενός συστήματος Asterisk, καθώς καθορίζει πώς διαχειρίζονται και δρομολογούνται οι εισερχόμενες και εξερχόμενες κλήσεις. Τα contexts χρησιμοποιούνται για την οργάνωση του σχεδίου κλήσεων, τη διαχείριση ελέγχου πρόσβασης και την παροχή διαχωρισμού μεταξύ διαφορετικών τμημάτων του συστήματος.
Κάθε context ορίζεται στο αρχείο διαμόρφωσης, συνήθως στο αρχείο extensions.conf
. Τα contexts δηλώνονται με αγκύλες, με το όνομα του context να περιβάλλεται από αυτές. Για παράδειγμα:
Μέσα στο πλαίσιο, ορίζετε τις επεκτάσεις (μοτίβα αριθμών που καλούνται) και τις συνδέετε με μια σειρά ενεργειών ή εφαρμογών. Αυτές οι ενέργειες καθορίζουν πώς επεξεργάζεται η κλήση. Για παράδειγμα:
Αυτό το παράδειγμα δείχνει ένα απλό πλαίσιο που ονομάζεται "my_context" με μια επέκταση "100". Όταν κάποιος καλέσει το 100, η κλήση θα απαντηθεί, θα αναπαραχθεί ένα μήνυμα καλωσορίσματος και στη συνέχεια η κλήση θα τερματιστεί.
Αυτό είναι ένα άλλο πλαίσιο που επιτρέπει να καλείτε οποιονδήποτε άλλο αριθμό:
Αν ο διαχειριστής ορίσει το default context ως:
Οποιοσδήποτε θα μπορεί να χρησιμοποιήσει τον διακομιστή για να καλέσει οποιονδήποτε άλλο αριθμό (και ο διαχειριστής του διακομιστή θα πληρώσει για την κλήση).
Επιπλέον, από προεπιλογή το sip.conf
αρχείο περιέχει allowguest=true
, τότε οποιοσδήποτε επιτιθέμενος χωρίς καμία αυθεντικοποίηση θα μπορεί να καλέσει οποιονδήποτε άλλο αριθμό.
SIPPTS invite
από sippts: Το SIPPTS invite ελέγχει αν ένας διακομιστής PBX μας επιτρέπει να κάνουμε κλήσεις χωρίς αυθεντικοποίηση. Αν ο διακομιστής SIP έχει λανθασμένη ρύθμιση, θα μας επιτρέψει να κάνουμε κλήσεις σε εξωτερικούς αριθμούς. Μπορεί επίσης να μας επιτρέψει να μεταφέρουμε την κλήση σε έναν δεύτερο εξωτερικό αριθμό.
Για παράδειγμα, αν ο διακομιστής Asterisk έχει κακή ρύθμιση περιβάλλοντος, μπορεί να αποδεχτεί αίτημα INVITE χωρίς εξουσιοδότηση. Σε αυτή την περίπτωση, ένας επιτιθέμενος μπορεί να κάνει κλήσεις χωρίς να γνωρίζει κανένα χρήστη/κωδικό.
Δωρεάν κλήσεις / Κακώς ρυθμισμένα IVRS
IVRS σημαίνει Σύστημα Διαδραστικής Φωνητικής Απόκρισης, μια τεχνολογία τηλεφωνίας που επιτρέπει στους χρήστες να αλληλεπιδρούν με ένα υπολογιστικό σύστημα μέσω φωνητικών ή τόνων αφής. Το IVRS χρησιμοποιείται για την κατασκευή αυτοματοποιημένων συστημάτων διαχείρισης κλήσεων που προσφέρουν μια σειρά από λειτουργίες, όπως η παροχή πληροφοριών, η δρομολόγηση κλήσεων και η καταγραφή εισόδου χρηστών.
Το IVRS σε συστήματα VoIP συνήθως αποτελείται από:
Φωνητικές προτροπές: Προηχογραφημένα ηχητικά μηνύματα που καθοδηγούν τους χρήστες μέσω των επιλογών και οδηγιών του IVR μενού.
DTMF (Dual-Tone Multi-Frequency) σήμανση: Εισόδους τόνων αφής που παράγονται με την πίεση πλήκτρων στο τηλέφωνο, οι οποίες χρησιμοποιούνται για την πλοήγηση στα μενού IVR και την παροχή εισόδου.
Δρομολόγηση κλήσεων: Κατεύθυνση κλήσεων στον κατάλληλο προορισμό, όπως συγκεκριμένα τμήματα, πράκτορες ή εσωτερικούς αριθμούς βάσει της εισόδου του χρήστη.
Καταγραφή εισόδου χρήστη: Συλλογή πληροφοριών από τους καλούντες, όπως αριθμούς λογαριασμών, αναγνωριστικά περιπτώσεων ή οποιαδήποτε άλλη σχετική δεδομένα.
Ενοποίηση με εξωτερικά συστήματα: Σύνδεση του συστήματος IVR με βάσεις δεδομένων ή άλλα λογισμικά συστήματα για την πρόσβαση ή την ενημέρωση πληροφοριών, την εκτέλεση ενεργειών ή την ενεργοποίηση γεγονότων.
Σε ένα σύστημα VoIP Asterisk, μπορείτε να δημιουργήσετε ένα IVR χρησιμοποιώντας το σχέδιο κλήσεων (extensions.conf
αρχείο) και διάφορες εφαρμογές όπως Background()
, Playback()
, Read()
, και άλλα. Αυτές οι εφαρμογές σας βοηθούν να αναπαράγετε φωνητικές προτροπές, να καταγράφετε την είσοδο του χρήστη και να ελέγχετε τη ροή της κλήσης.
Παράδειγμα ευάλωτης ρύθμισης
Ο προηγούμενος είναι ένα παράδειγμα όπου ο χρήστης ζητείται να πατήσει 1 για να καλέσει ένα τμήμα, 2 για να καλέσει ένα άλλο, ή τον πλήρη αριθμό αν τον γνωρίζει. Η ευπάθεια είναι το γεγονός ότι το μήκος του αριθμού δεν ελέγχεται, οπότε ένας χρήστης θα μπορούσε να εισάγει τον χρόνο αναμονής 5 δευτερολέπτων ενός πλήρους αριθμού και θα καλεστεί.
Extension Injection
Χρησιμοποιώντας έναν αριθμό όπως:
Όπου ${EXTEN}
είναι η εσωτερική γραμμή που θα καλεστεί, όταν η εσωτερική 101 εισαχθεί αυτό είναι που θα συμβεί:
Ωστόσο, αν ${EXTEN}
επιτρέπει την εισαγωγή περισσότερων από αριθμούς (όπως σε παλαιότερες εκδόσεις του Asterisk), ένας επιτιθέμενος θα μπορούσε να εισάγει 101&SIP123123123
για να καλέσει τον αριθμό τηλεφώνου 123123123. Και αυτό θα ήταν το αποτέλεσμα:
Επομένως, μια κλήση στην επέκταση 101
και 123123123
θα σταλεί και μόνο η πρώτη που θα λάβει την κλήση θα καθιερωθεί... αλλά αν ένας επιτιθέμενος χρησιμοποιήσει μια επέκταση που παρακάμπτει οποιαδήποτε αντιστοίχιση που εκτελείται αλλά δεν υπάρχει, θα μπορούσε να εισάγει μια κλήση μόνο στον επιθυμητό αριθμό.
Ευπάθεια SIPDigestLeak
Η ευπάθεια SIP Digest Leak είναι μια ευπάθεια που επηρεάζει έναν μεγάλο αριθμό SIP Phones, συμπεριλαμβανομένων τόσο υλικών όσο και λογισμικών IP Phones καθώς και προσαρμογέων τηλεφώνου (VoIP σε αναλογικό). Η ευπάθεια επιτρέπει διαρροή της απάντησης πιστοποίησης Digest, η οποία υπολογίζεται από τον κωδικό πρόσβασης. Μια επίθεση κωδικού πρόσβασης εκτός σύνδεσης είναι στη συνέχεια δυνατή και μπορεί να ανακτήσει τους περισσότερους κωδικούς πρόσβασης με βάση την απάντηση πρόκλησης.
**Σενάριο ευπάθειας από εδώ**:
Ένα IP Phone (θύμα) ακούει σε οποιαδήποτε θύρα (για παράδειγμα: 5060), αποδεχόμενο τηλεφωνικές κλήσεις
Ο επιτιθέμενος στέλνει μια INVITE στο IP Phone
Το τηλέφωνο του θύματος αρχίζει να χτυπά και κάποιος το σηκώνει και το κλείνει (επειδή κανείς δεν απαντά στο τηλέφωνο στην άλλη άκρη)
Όταν το τηλέφωνο κλείνει, το τηλέφωνο του θύματος στέλνει ένα BYE στον επιτιθέμενο
Ο επιτιθέμενος εκδίδει μια απάντηση 407 που ζητά πιστοποίηση και εκδίδει μια πρόκληση πιστοποίησης
Το τηλέφωνο του θύματος παρέχει μια απάντηση στην πρόκληση πιστοποίησης σε ένα δεύτερο BYE
Ο επιτιθέμενος μπορεί στη συνέχεια να εκδώσει μια επίθεση brute-force στην απάντηση πρόκλησης στον τοπικό του υπολογιστή (ή σε κατανεμημένο δίκτυο κ.λπ.) και να μαντέψει τον κωδικό πρόσβασης
SIPPTS leak από sippts: Η διαρροή SIPPTS εκμεταλλεύεται την ευπάθεια SIP Digest Leak που επηρεάζει έναν μεγάλο αριθμό SIP Phones. Η έξοδος μπορεί να αποθηκευτεί σε μορφή SipCrack για να γίνει brute force χρησιμοποιώντας το SIPPTS dcrack ή το εργαλείο SipCrack.
Click2Call
Το Click2Call επιτρέπει σε έναν χρήστη του διαδικτύου (ο οποίος για παράδειγμα μπορεί να ενδιαφέρεται για ένα προϊόν) να εισάγει τον αριθμό τηλεφώνου του για να λάβει κλήση. Στη συνέχεια, θα καλέσει μια εμπορική κλήση, και όταν σηκώσει το τηλέφωνο ο χρήστης θα καλεστεί και θα συνδεθεί με τον πράκτορα.
Ένα κοινό προφίλ Asterisk για αυτό είναι:
Το προηγούμενο προφίλ επιτρέπει ΟΠΟΙΟΔΗΠΟΤΕ IP διεύθυνση να συνδεθεί (αν η κωδικός είναι γνωστός).
Για να οργανωθεί μια κλήση, όπως καθορίστηκε προηγουμένως, δεν απαιτούνται δικαιώματα ανάγνωσης και μόνο originate σε write είναι απαραίτητα.
Με αυτά τα δικαιώματα, οποιαδήποτε IP γνωρίζει τον κωδικό θα μπορούσε να συνδεθεί και να εξάγει πάρα πολλές πληροφορίες, όπως:
Περισσότερες πληροφορίες ή ενέργειες θα μπορούσαν να ζητηθούν.
Παρακολούθηση
Στο Asterisk είναι δυνατόν να χρησιμοποιήσετε την εντολή ChanSpy
υποδεικνύοντας την εσωτερική γραμμή(ες) προς παρακολούθηση (ή όλες αυτές) για να ακούσετε τις συνομιλίες που συμβαίνουν. Αυτή η εντολή πρέπει να ανατεθεί σε μια εσωτερική γραμμή.
Για παράδειγμα, exten => 333,1,ChanSpy('all',qb)
υποδεικνύει ότι αν καλέσετε την εσωτερική γραμμή 333, θα παρακολουθεί όλες
τις εσωτερικές γραμμές, ξεκινώντας να ακούει όποτε ξεκινά μια νέα συνομιλία (b
) σε ήσυχο τρόπο (q
) καθώς δεν θέλουμε να αλληλεπιδράσουμε σε αυτήν. Μπορείτε να μεταβείτε από μια συνομιλία σε άλλη πατώντας *
, ή σημειώνοντας τον αριθμό της εσωτερικής γραμμής.
Είναι επίσης δυνατό να χρησιμοποιήσετε ExtenSpy
για να παρακολουθήσετε μόνο μία εσωτερική γραμμή.
Αντί να ακούτε τις συνομιλίες, είναι δυνατόν να τις καταγράψετε σε αρχεία χρησιμοποιώντας μια εσωτερική γραμμή όπως:
Οι κλήσεις θα αποθηκεύονται στο /tmp
.
Μπορείτε επίσης να κάνετε το Asterisk να εκτελεί ένα σενάριο που θα διαρρεύσει την κλήση όταν κλείσει.
RTCPBleed ευπάθεια
RTCPBleed είναι ένα σημαντικό πρόβλημα ασφαλείας που επηρεάζει τους VoIP διακομιστές βασισμένους σε Asterisk (δημοσιεύθηκε το 2017). Η ευπάθεια επιτρέπει RTP (Real Time Protocol) traffic, το οποίο μεταφέρει τις συνομιλίες VoIP, να παρακολουθείται και να ανακατευθύνεται από οποιονδήποτε στο Διαδίκτυο. Αυτό συμβαίνει επειδή η RTP κίνηση παρακάμπτει την αυθεντικοποίηση όταν περιηγείται μέσω NAT (Network Address Translation) τειχών προστασίας.
Οι RTP proxies προσπαθούν να αντιμετωπίσουν τους περιορισμούς NAT που επηρεάζουν τα συστήματα RTC προξενώντας ροές RTP μεταξύ δύο ή περισσότερων μερών. Όταν υπάρχει NAT, το λογισμικό του RTP proxy συχνά δεν μπορεί να βασιστεί στις πληροφορίες IP και θύρας RTP που ανακτώνται μέσω σήμανσης (π.χ. SIP). Ως εκ τούτου, αρκετοί RTP proxies έχουν εφαρμόσει έναν μηχανισμό όπου τέτοιο IP και port tuplet μαθαίνεται αυτόματα. Αυτό γίνεται συχνά με την επιθεώρηση της εισερχόμενης RTP κίνησης και την επισήμανση της πηγής IP και θύρας για οποιαδήποτε εισερχόμενη RTP κίνηση ως αυτή που θα πρέπει να απαντηθεί. Αυτός ο μηχανισμός, ο οποίος μπορεί να ονομάζεται "learning mode", δεν χρησιμοποιεί κανενός είδους αυθεντικοποίηση. Επομένως, επιτιθέμενοι μπορεί να στείλουν RTP traffic στον RTP proxy και να λάβουν την προξενημένη RTP κίνηση που προορίζεται για τον καλούντα ή τον καλούμενο μιας τρέχουσας ροής RTP. Αυτή την ευπάθεια την ονομάζουμε RTP Bleed επειδή επιτρέπει στους επιτιθέμενους να λαμβάνουν ροές RTP που προορίζονται να σταλούν σε νόμιμους χρήστες.
Μια άλλη ενδιαφέρουσα συμπεριφορά των RTP proxies και των RTP stacks είναι ότι μερικές φορές, ακόμα και αν δεν είναι ευάλωτα στο RTP Bleed, θα αποδέχονται, προωθούν και/ή επεξεργάζονται RTP πακέτα από οποιαδήποτε πηγή. Επομένως, οι επιτιθέμενοι μπορούν να στείλουν RTP πακέτα που μπορεί να τους επιτρέψουν να εισάγουν τα μέσα τους αντί για τα νόμιμα. Αυτή την επίθεση την ονομάζουμε RTP injection επειδή επιτρέπει την εισαγωγή παράνομων RTP πακέτων σε υπάρχουσες ροές RTP. Αυτή η ευπάθεια μπορεί να βρεθεί τόσο σε RTP proxies όσο και σε τερματικά.
Ο Asterisk και το FreePBX παραδοσιακά χρησιμοποιούν την NAT=yes
ρύθμιση, η οποία επιτρέπει στην RTP κίνηση να παρακάμπτει την αυθεντικοποίηση, ενδεχομένως οδηγώντας σε καμία ή μονόδρομη ήχο σε κλήσεις.
Για περισσότερες πληροφορίες ελέγξτε https://www.rtpbleed.com/
SIPPTS rtpbleed
από sippts: Το SIPPTS rtpbleed ανιχνεύει την ευπάθεια RTP Bleed στέλνοντας ροές RTP.
SIPPTS rtcpbleed
από sippts: Το SIPPTS rtcpbleed ανιχνεύει την ευπάθεια RTP Bleed στέλνοντας ροές RTCP.
SIPPTS rtpbleedflood
από sippts: Το SIPPTS rtpbleedflood εκμεταλλεύεται την ευπάθεια RTP Bleed στέλνοντας ροές RTP.
SIPPTS rtpbleedinject
από sippts: Το SIPPTS rtpbleedinject εκμεταλλεύεται την ευπάθεια RTP Bleed εισάγοντας ένα αρχείο ήχου (μορφή WAV).
RCE
Στο Asterisk, με κάποιο τρόπο καταφέρνετε να προσθέσετε κανόνες εσωτερικών γραμμών και να τους επαναφορτώσετε (για παράδειγμα, παραβιάζοντας έναν ευάλωτο διακομιστή διαχείρισης ιστού), είναι δυνατόν να αποκτήσετε RCE χρησιμοποιώντας την System
εντολή.
There is command called Shell
that could be used instead of System
to execute system commands if necessary.
If the server is disallowing the use of certain characters in the System
command (like in Elastix), check if the web server allows to create files somehow inside the system (like in Elastix or trixbox), and use it to create a backdoor script and then use System
to execute that script.
Interesting local files and permissions
sip.conf
-> Περιέχει τον κωδικό πρόσβασης των χρηστών SIP.If the Asterisk server is running as root, you could compromise root
mysql root user might doesn't have any password.
this could be used to create a new mysql user as backdoor
FreePBX
amportal.conf
-> Περιέχει τον κωδικό πρόσβασης του διαχειριστή του web panel (FreePBX)FreePBX.conf
-> Περιέχει τον κωδικό πρόσβασης του χρήστη FreePBXuser που χρησιμοποιείται για την πρόσβαση στη βάση δεδομένωνthis could be used to create a new mysql user as backdoor
Elastix
Elastix.conf
-> Περιέχει αρκετούς κωδικούς πρόσβασης σε καθαρό κείμενο όπως τον κωδικό root mysql, τον κωδικό IMAPd, τον κωδικό διαχειριστή webSeveral folders will belong to the compromised asterisk user (if not running as root). This user can read the previous files and also controls the configuration, so he could make Asterisk to load other backdoored binaries when executed.
RTP Injection
It's possible to insert a .wav
in converstions using tools such as rtpinsertsound
(sudo apt install rtpinsertsound
) and rtpmixsound
(sudo apt install rtpmixsound
).
Or you could use the scripts from http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/ to scan conversations (rtpscan.pl
), send a .wav
to a conversation (rtpsend.pl
) and insert noise in a conversation (rtpflood.pl
).
DoS
There are several ways to try to achieve DoS in VoIP servers.
SIPPTS flood
from sippts**: SIPPTS flood sends unlimited messages to the target.sippts flood -i 10.10.0.10 -m invite -v
SIPPTS ping
from sippts**: SIPPTS ping makes a SIP ping to see the server response time.sippts ping -i 10.10.0.10
IAXFlooder: DoS IAX protocol used by Asterisk
inviteflood: A tool to perform SIP/SDP INVITE message flooding over UDP/IP.
rtpflood: Send several well formed RTP packets. Its needed to know the RTP ports that are being used (sniff first).
SIPp: Allows to analyze and generate SIP traffic. so it can be used to DoS also.
SIPsak: SIP swiss army knife. Can also be used to perform SIP attacks.
Fuzzers: protos-sip, voiper.
OS Vulnerabilities
The easiest way to install a software such as Asterisk is to download an OS distribution that has it already installed, such as: FreePBX, Elastix, Trixbox... The problem with those is that once it's working sysadmins might not update them again and vulnerabilities are going to be discovered with time.
References
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Get a hacker's perspective on your web apps, network, and cloud
Find and report critical, exploitable vulnerabilities with real business impact. Use our 20+ custom tools to map the attack surface, find security issues that let you escalate privileges, and use automated exploits to collect essential evidence, turning your hard work into persuasive reports.
Last updated