Всем привет! В этой статье я покажу, как провести аудит безопасности систем IP-телефонии.
Для начала необходимо заиметь то, что мы будем проверять, для этого подойдет дистрибутив FreePBX, объясню, что это:
FreePBX - представляет собой веб-ориентированный GUI с открытым исходным кодом, который используется для контроля и управления Asterisk (PBX), - open source сервер связи. Распространяется под лицензией GNU - лицензии с открытым исходным кодом. Данный программный пакет может быть установлен вручную или в составе предварительно сконфигурированного дистрибутива FreePBX, в который входят: операционная система, Asterisk и FreePBX GUI с соблюдением всех зависимостей, для его скачивания перейдем по ссылке =>
Скачаем ISO, устанавливаем систему в Oracle VM VirtualBox, к примеру.
По адресу 192.168.0.109 будет доступен web интерфейс, для управления и настройки сервера. Перейдем по нему:
Если увидели это, значит все прошло успешно. Теперь непосредственно об аудите безопасности сервера.
Для этого я буду использовать VSAUDIT - VOIP Security Audit Framework.
VSaudit - представляет собой фреймворк с открытым исходным кодом который предназначен для выполнения атак на общие услуги IP-телефонии. Он позволяет сканировать всю сеть или один хост, затем переходит в фазу сбора информации, и плюс ко всему умеет искать наиболее известные уязвимости на сканируемых системах, а затем пытается их использовать.
Для его использования необходимы следующие зависимости:
· Ruby 2.3.0
· Bundler
Устанавливаем фреймворк:
> git clone http://github.com/sanvil/vsaudit.git
Далее с помощью gem – это такая система управления пакетами для языка программирования Ruby, который предоставляет стандартный формат для программ и библиотек Ruby, инструменты, предназначенные для простого управления установкой «gems» установим Bundler.
В свою очередь Bundler – это менеджер для управления зависимостями gem'ов в ruby приложениях. Он позволяет легко устанавливать необходимые gem'ы для вашего приложения.
> gem install bundler
Затем перейдем в директорию vsaudit и выполним команды:
> cd vcaudit
> bundle
> ruby vsaudit.rb
Обратимся за помощью:
> vsaudit > help
Запустим сканирование сервера Asterisk по адресу 192.168.0.109
> scan 192.168.0.109
Так как, сервер фактически не настроен, то и результаты сканирования не дадут обширных результатов. Вкратце я расскажу о некоторых моментах сканирования и перехвата трафика.
Проверка ошибок в локальных файлах конфигурации:
В модуле modules/asterisk.rb вы можете выбрать пользовательские конфигурационные файлы, которые vsaudit проверит, используя шаблоны регулярных выражений. Есть возможность добавить или удалить конфигурационные файлы, в массив @@services используя регулярное выражение.
@@services_files = [
# file to audit. # unsecure parameter regex.
'/etc/asterisk/sip.conf' => /^(allow=|allowguest)/,
'/etc/asterisk/extensions.conf' => /^(allow)/
]
В приведенном выше примере, вы можете задать имя файла с абсолютным путем, который вы хотите проверить, устанавливая регулярное выражение для поиска соответствия в файле, vsaudit к grep в sip.conf и поиск опций конфигурации, которые начинаются с allow= or allowguest и extensions.conf для allow= options.
> vsaudit > fcheck
Checking filename: /etc/asterisk/sip.conf
regexp to matchs: (?-mix:^(allow=|allowguest))
Line 3: un-safe parameter found 'allowguest=no'
Line 9: un-safe parameter found 'allow=ulaw'
Checking filename: /etc/asterisk/extensions.conf
regexp to matchs: (?-mix:^(allow))
Перечисление используемых расширений по словарю:
> vsaudit > enum ext-list 192.168.0.109
Файл ext-list находится в директории /list, его можно заменить на свой.
Брутфорс расширений:
Найденные расширения можно попробовать сбрутфорсить с помощью словаря.
> vsaudit > bf ext-list psw-list 192.168.0.109
Выглядит это так:
Перехват сетевого трафика:
> vsaudit > live
capturing local network traffic
using barkeley packet filter: udp
Packet length: 631, Time: 2015-04-11 09:45:43
---------------------------------------------
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 192.168.1.196:5060;branch=z9hG4bKf083b96c-8cde-e411-85f6- 000c29bac856;received=192.168.1.196;rport=5060
From: "pentester" <sip:7001@192.168.1.100>;tag=aa7fb86c-8cde-e411-85f6-000c29bac856
To: <sip:192.168.1.100>;tag=as54658d12
Call-ID: 0683b86c-8cde-e411-85f6-000c29bac856@deftcode
CSeq: 1 INVITE
Server: Asterisk PBX 11.7.0~dfsg-1ubuntu1
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="39e13888"
Content-Length: 0
Получение, всего UDP трафика с фильтром по порту назначения.
> vsaudit > in udp dst port 5060
Запись потока трафика в файл:
> vsaudit > in udp portrange 10000-20000 record
Запись будет производиться в /raw/data.raw в фоновом режиме.
Повторюсь, что, для более развернутого сканирования, необходимо корректно настроить сервер, RTP потоки и SIP транк. Свой сервер я не настраивал.
Для начала необходимо заиметь то, что мы будем проверять, для этого подойдет дистрибутив FreePBX, объясню, что это:
FreePBX - представляет собой веб-ориентированный GUI с открытым исходным кодом, который используется для контроля и управления Asterisk (PBX), - open source сервер связи. Распространяется под лицензией GNU - лицензии с открытым исходным кодом. Данный программный пакет может быть установлен вручную или в составе предварительно сконфигурированного дистрибутива FreePBX, в который входят: операционная система, Asterisk и FreePBX GUI с соблюдением всех зависимостей, для его скачивания перейдем по ссылке =>
Ссылка скрыта от гостей
Скачаем ISO, устанавливаем систему в Oracle VM VirtualBox, к примеру.
По адресу 192.168.0.109 будет доступен web интерфейс, для управления и настройки сервера. Перейдем по нему:
Если увидели это, значит все прошло успешно. Теперь непосредственно об аудите безопасности сервера.
Для этого я буду использовать VSAUDIT - VOIP Security Audit Framework.
VSaudit - представляет собой фреймворк с открытым исходным кодом который предназначен для выполнения атак на общие услуги IP-телефонии. Он позволяет сканировать всю сеть или один хост, затем переходит в фазу сбора информации, и плюс ко всему умеет искать наиболее известные уязвимости на сканируемых системах, а затем пытается их использовать.
Для его использования необходимы следующие зависимости:
· Ruby 2.3.0
· Bundler
Устанавливаем фреймворк:
> git clone http://github.com/sanvil/vsaudit.git
Далее с помощью gem – это такая система управления пакетами для языка программирования Ruby, который предоставляет стандартный формат для программ и библиотек Ruby, инструменты, предназначенные для простого управления установкой «gems» установим Bundler.
В свою очередь Bundler – это менеджер для управления зависимостями gem'ов в ruby приложениях. Он позволяет легко устанавливать необходимые gem'ы для вашего приложения.
> gem install bundler
Затем перейдем в директорию vsaudit и выполним команды:
> cd vcaudit
> bundle
> ruby vsaudit.rb
Обратимся за помощью:
> vsaudit > help
Запустим сканирование сервера Asterisk по адресу 192.168.0.109
> scan 192.168.0.109
Так как, сервер фактически не настроен, то и результаты сканирования не дадут обширных результатов. Вкратце я расскажу о некоторых моментах сканирования и перехвата трафика.
Проверка ошибок в локальных файлах конфигурации:
В модуле modules/asterisk.rb вы можете выбрать пользовательские конфигурационные файлы, которые vsaudit проверит, используя шаблоны регулярных выражений. Есть возможность добавить или удалить конфигурационные файлы, в массив @@services используя регулярное выражение.
@@services_files = [
# file to audit. # unsecure parameter regex.
'/etc/asterisk/sip.conf' => /^(allow=|allowguest)/,
'/etc/asterisk/extensions.conf' => /^(allow)/
]
В приведенном выше примере, вы можете задать имя файла с абсолютным путем, который вы хотите проверить, устанавливая регулярное выражение для поиска соответствия в файле, vsaudit к grep в sip.conf и поиск опций конфигурации, которые начинаются с allow= or allowguest и extensions.conf для allow= options.
> vsaudit > fcheck
Checking filename: /etc/asterisk/sip.conf
regexp to matchs: (?-mix:^(allow=|allowguest))
Line 3: un-safe parameter found 'allowguest=no'
Line 9: un-safe parameter found 'allow=ulaw'
Checking filename: /etc/asterisk/extensions.conf
regexp to matchs: (?-mix:^(allow))
Перечисление используемых расширений по словарю:
> vsaudit > enum ext-list 192.168.0.109
Файл ext-list находится в директории /list, его можно заменить на свой.
Брутфорс расширений:
Найденные расширения можно попробовать сбрутфорсить с помощью словаря.
> vsaudit > bf ext-list psw-list 192.168.0.109
Выглядит это так:
Перехват сетевого трафика:
> vsaudit > live
capturing local network traffic
using barkeley packet filter: udp
Packet length: 631, Time: 2015-04-11 09:45:43
---------------------------------------------
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 192.168.1.196:5060;branch=z9hG4bKf083b96c-8cde-e411-85f6- 000c29bac856;received=192.168.1.196;rport=5060
From: "pentester" <sip:7001@192.168.1.100>;tag=aa7fb86c-8cde-e411-85f6-000c29bac856
To: <sip:192.168.1.100>;tag=as54658d12
Call-ID: 0683b86c-8cde-e411-85f6-000c29bac856@deftcode
CSeq: 1 INVITE
Server: Asterisk PBX 11.7.0~dfsg-1ubuntu1
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="39e13888"
Content-Length: 0
Получение, всего UDP трафика с фильтром по порту назначения.
> vsaudit > in udp dst port 5060
Запись потока трафика в файл:
> vsaudit > in udp portrange 10000-20000 record
Запись будет производиться в /raw/data.raw в фоновом режиме.
Повторюсь, что, для более развернутого сканирования, необходимо корректно настроить сервер, RTP потоки и SIP транк. Свой сервер я не настраивал.