Защита IP АТС от внешних атак — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
(Звонок на ваш внешний номер с целью нахождения комбинации для переключения на свой платный номер)
(Звонок на ваш внешний номер с целью нахождения комбинации для переключения на свой платный номер)
Строка 61: Строка 61:
 
Вот пример этого запроса (без SDP)
 
Вот пример этого запроса (без SDP)
  
:13:43:53:233 2828 READ -- Transport READ:
+
13:43:53:233 2828 READ -- Transport READ:
:RCV: 994 bytes from 91.217.178.194:5060: UDP interface 192.168.0.8:5060
+
RCV: 994 bytes from 91.217.178.194:5060: UDP interface 192.168.0.8:5060
:INVITE sip:84793392818980@89.222.248.82 SIP/2.0
+
INVITE sip:84793392818980@89.222.248.82 SIP/2.0
Via: SIP/2.0/UDP 91.217.178.194;branch=z9hG4bKjgd1d1NPa60j
+
Via: SIP/2.0/UDP 91.217.178.194;branch=z9hG4bKjgd1d1NPa60j
From: "unknown" <sip:unknown@91.217.178.194>;tag=Cr2EwJ5d2l
+
From: "unknown" <sip:unknown@91.217.178.194>;tag=Cr2EwJ5d2l
To: <sip:84793392818980@89.222.248.82>
+
To: <sip:84793392818980@89.222.248.82>
CSeq: 101 INVITE
+
CSeq: 101 INVITE
Call-ID: aJf946e55db4dKcjt7PGlLfolhxFba0o@91.217.178.194
+
Call-ID: aJf946e55db4dKcjt7PGlLfolhxFba0o@91.217.178.194
Contact: <sip:unknown@91.217.178.194>
+
Contact: <sip:unknown@91.217.178.194>
User-Agent: mErPefSzRrt0b5XWLjuw
+
User-Agent: mErPefSzRrt0b5XWLjuw
Max-Forwards: 70
+
Max-Forwards: 70
Allow: INVITE, ACK, CANCEL, BYE
+
Allow: INVITE, ACK, CANCEL, BYE
Content-Type: application/sdp
+
Content-Type: application/sdp
Content-Length: 524
+
Content-Length: 524
  
Благодаря лог-журналу и сервису geo-ip было зафиксировано, что точка отправки -  
+
Благодаря лог-журналу и сервису geo-ip было зафиксировано, что точка отправки - IP-адрес: 91.217.178.194 Страна: Сейшельские острова (SC)
IP-адрес: 91.217.178.194
+
Страна: Сейшельские острова (SC)
+
  
 
Обратите внимание на User-Agent. Все запросы имеют разные случайные комбинации символов в качестве User-Agent - это прямым текстом указывает на своеобразную атаку.
 
Обратите внимание на User-Agent. Все запросы имеют разные случайные комбинации символов в качестве User-Agent - это прямым текстом указывает на своеобразную атаку.
User-Agent: yLEscQtEtQIv447WgsnO
+
:User-Agent: yLEscQtEtQIv447WgsnO
User-Agent: Fpu9pgg6BziUJSi4Rffz
+
:User-Agent: Fpu9pgg6BziUJSi4Rffz
User-Agent: vB612yYtKknxm5Xe2gkh
+
:User-Agent: vB612yYtKknxm5Xe2gkh
  
 
Цель атаки - пробить сервер на предмет обнаружения дыр в сценариях маршрутизации и найти выход наружу.
 
Цель атаки - пробить сервер на предмет обнаружения дыр в сценариях маршрутизации и найти выход наружу.

Версия 14:09, 23 декабря 2012

В данной статье будут разбираться практики атак IP АТС и способы противодействия. Следует иметь в виду, что методики атакующих постоянно совершенствуются, однако мы в рамках данной статьи постараемся отслеживать новые способы атак и давать свои рекомендации. Oktell является очень мощным и гибким инструментом и мы надеемся, что с его помощью вы будете надежно защищены, при выполнении наших рекомендаций.


Подключение под видом IP телефона с целью совершения звонков на платные номера

Цель и методика атаки.

Атака производится с целью финансового обогащения. За рубежом или в России регистрируется номер телефона, звонок на который является платным. Чем выше стоимость минуты - тем прибыльнее бизнес. Затем специальным оборудованием атакующие сканируют случайные IP адреса в интернете с целью установить любой ответ от IP PBX. После нахождения IP адреса с установленной на нем IP АТС начинается подбор пары логин-пароль. Сканирование ведется очень интенсивно и в случае успешного подбора атакующие подключаются к IP АТС как IP телефон и получают возможность совершения исходящих звонков. Путем подбора различных вариантов набора номера атакующие совершают звонок на свой платный номер и за короткое время "наговаривают" вполне приличную сумму, которая будет выставлена вам оператором за услуги связи в конце месяца.

Противодействие:

На всех телефонах и клиентских приложениях Oktell необходимо устанавливать сложные криптостойкие пароли, состоящие из заглавных и строчных букв и цифр. Небрежность администратора, прописавшего тестовые аккаунты с простыми паролями, или не убравшего простые пароли при переносе сервера из локальной сети на реальный IP адрес приведет к тому, что такой пароль с высокой степенью вероятности будет подобран скан-машинами. Рекомендуется использовать генерацию пароля средствами Oktell при создании каждого аккаунта для подключения IP телефона.

2012-12-23 1803.png

Программный код Oktell содержит возможность автоматической блокировки IP адреса, с которого осуществляется несколько неудачных попыток регистраций. Принцип действия режима автоматической блокировки следующий: При поступлении за 10 секунд более 20 регистрационных пакетов с неверной авторизационной информацией - IP адрес целиком записывается в бан-лист. По истечении срока давности в соответствии с параметром конфигурации происходит автоматическое удаление из бан-листа. При повторном получении неверной авторизационной информации после разбана размещение в бан-листе происходит уже сразу по второму пакету. В серверном лог журнале Exception при этом появляются записи, фиксирующие внесение адресов в бан-лист с указанием причины и адреса. Включение этого режима производится в конфигурационном файле сервера строчкой:

<add key="EnableSipTransportFilter" value="1" />
0 - выключено
1 - включено и банит до перезагрузки сервера
NN - период в минутах, после которого производится автоматический разбан

На момент написания статьи (декабрь 2012 г) большинство атак совершаются с useragent friendly-scanner. В версии начиная с 12.12.12 встроена дополнительная защита и пакеты от данного программного обеспечения игнорируются.

Для того, чтобы даже при успешном подборе пары логин-пароль защититься от ущерба, необходимо внести соответствующие изменения в настройки сценариев маршрутизации. Часто АТС в организациях настроены таким образом, чтобы звонок совершаемый через 8, через 0 или через какой-то другой символ, выходил на городские линии, в противном случае номер считается внутренним и маршрутизируется во внутренний номерной план. Такая настройка является типовой и привычной для большинства пользователей России. Именно это и дает возможность атакующим подобрать символ, открывающий выход на городские линии, чтобы потом совершать звонки на короткие и платные номера, международные номера, сервисные номера. Для того, чтобы закрыть атакующим такую возможность, необходимо использовать другой принцип разделения номеров внутреннего номерного плана и номеров, набираемых по линиям операторов связи, а именно маршрутизацию по длине номера. Это позволит исключить возможность выходить на линии операторов связи с короткими номерами, а также с номерами маска которых не соответствует нумерации вашей страны или стран, в которые вы совершаете звонки. Все трехзначные или четырехзначные вызовы должны отправляться только во внутренний номерной план. Принцип разделения маршрутизации вызова на основании длины номера внутренний номерной план и на линии операторов показан на рисунке. В компоненте Меню2 в выражении вычисляется длина номера и в зависимости от её соответствия указанным значениям маршрутизируется на компоненты Уведомление2 (Для трехзначных внутренних номеров), на уведомление 3 (для одиннадцатизначных федеральных номеров) и на уведомление 4 (для всех остальных номеров). При необходимости стоит сделать исключение для номеров экстренных служб, например 01, 02, 03, 04, 112.


2012-12-23 1718.png


Перед выходом на линии операторов связи полезно по маске отрезать возможность набора любых номеров, кроме тех, на которые разрешено совершать звонки. Например если вы работаете только по России, на городские номера то нужно отклонить номер, если он содержит длину не равную 11 цифрам, если первая цифра отличается от 7 или 8 (по условиям вашего провайдера), а также если первые 4 цифры соответствуют принятой в России маске платных и служебных номеров. В помощь нам нормативный документ Приказ Министерства информационных технологий и связи РФ от 17 ноября 2006 г.N 142 "Об утверждении и введении в действие Российской системы и плана нумерации" (с изменениями от 29 декабря 2008 г.) Согласно нему определены коды и принцип нумерации, действующие в Российской Федерации. Нас в первую очередь в этом документе интересует таблица № 4.

Таблица N 4. Перечень назначенных кодов доступа к услуге электросвязи (КДУ)
Наименование услуги электросвязи
1 800 Бесплатный вызов (FPH - Freephone)
2 801 Вызов с автоматической альтернативной оплатой (ААВ - Automatic alternative billing)
3 802 Вызов по кредитной карте (ССС - Credit card calling)
4 803 Телеголосование (VOT - Televoting)
5 804 Универсальный номер доступа (UAN  - Universal access number)
6 805 Вызов по предоплаченной карте (РСС - Prepaid card calling)
7 806 Вызов по расчетной карте (АСС - Account card calling)
8 807 Виртуальная частная сеть (VPN - Virtual private network)
9 808 Универсальная персональная связь (UPT - Universal personal Telecommunication)
10 809 Услуга за дополнительную оплату (PRM - Premium rate)
11 881 - 899 Перспективные коды услуг
12 970 Доступ к услугам связи по передаче данных
13 971 Доступ к телематическим услугам связи

Эта таблица показывает какие коды необходимо закрыть, для того чтобы защититься от "своих мошенников" В приведенном примере показан принцип исключения номеров из набора по маске. Так в компоненте Меню3 организовано определение второй, третьей и четвертой цифры набираемого федерального номера, соответствующих коду города, коду мобильного оператора или коду доступа к услуге электросвязи. Возможные значения, набор которых надо ограничить, маршрутизируются на компонент Обрыв связи. Остальные значения маршрутизируются на компонент выхода на внешние городские линии.

2012-12-23 1738.png

Следует иметь в виду, что система Oktell может иметь множество сценариев, каждый из которых может содержать компонент обеспечивающий выход на линии операторов связи. В этом случае логично организовать один сценарий и осуществлять необходимые проверки в нем. При этом из остальных сценариев вместо компонента выхода на линии операторов необходимо организовывать переход в сценарий, осуществляющий проверку набираемого номера на безопасность.


Звонок на ваш внешний номер с целью нахождения комбинации для переключения на свой платный номер

Зафиксирован следующий случай. Операторы колцентра стали получать на свои SIP телефоны звонки, у которых CallerName "unknown". Звонки вдруг начали иметь массовый характер. Сбой длился до перезагрузки сервера минут через 20 после начала.

В TRN логе сервера были обнаружены входящие INVITE запросы, содержащие в качестве callername тот самый "unknown". Таких запросов за 20 минут насчиталось не так много - порядка 40 штук. Вот пример этого запроса (без SDP)

13:43:53:233 2828 READ -- Transport READ:
RCV: 994 bytes from 91.217.178.194:5060: UDP interface 192.168.0.8:5060
INVITE sip:84793392818980@89.222.248.82 SIP/2.0
Via: SIP/2.0/UDP 91.217.178.194;branch=z9hG4bKjgd1d1NPa60j
From: "unknown" <sip:unknown@91.217.178.194>;tag=Cr2EwJ5d2l
To: <sip:84793392818980@89.222.248.82>
CSeq: 101 INVITE
Call-ID: aJf946e55db4dKcjt7PGlLfolhxFba0o@91.217.178.194
Contact: <sip:unknown@91.217.178.194>
User-Agent: mErPefSzRrt0b5XWLjuw
Max-Forwards: 70
Allow: INVITE, ACK, CANCEL, BYE
Content-Type: application/sdp
Content-Length: 524

Благодаря лог-журналу и сервису geo-ip было зафиксировано, что точка отправки - IP-адрес: 91.217.178.194 Страна: Сейшельские острова (SC)

Обратите внимание на User-Agent. Все запросы имеют разные случайные комбинации символов в качестве User-Agent - это прямым текстом указывает на своеобразную атаку.

User-Agent: yLEscQtEtQIv447WgsnO
User-Agent: Fpu9pgg6BziUJSi4Rffz
User-Agent: vB612yYtKknxm5Xe2gkh

Цель атаки - пробить сервер на предмет обнаружения дыр в сценариях маршрутизации и найти выход наружу. Несуразные номера - суть комбинации DTMF, отправляемые в сценарий на последовательный разбор: 84793392818980 +442034119816 +00442034119816 000442034119808 001100442034119745 011*442034119812 9999442034119820

Поскольку данный вид атаки строится не на подборе регистрационных данных к аккаунтам внутренних sip-телефонов, а прямыми вызовами снаружи через входящие внешние звонки, необходимо просто выполнить одно или несколько из действий:

  • Настроить firewall, запретив звонки с неизвестных адресов (в соответствии с используемой политикой маршрутизации).
    Не использовать без необходимости шлюз "без регистрации", принимающий все неизвестные входящие. В случае же необходимости, оставлять на нем 1-2 транка (в соответствии с ожидаемым количеством корректных неизвестных звонков).
    Поставить в главном сценарии IVR входящей маршрутизации проверку на запрашиваемые внешние номера (CalledID), и рубить левые соединения.
    Убедиться, что "неизвестные" звонки снаружи через IVR не могут автоматически попасть наружу на провайдера и дать доступ к ТФОП, минуя операторов.
    По возможности не организовывать бесконечный цикл ожидания при переключениях внешних звонков. Автоматические системы атак не разорвут соединение самостоятельно и будут ждать до упора, занимая транк. Во всяком случае можно оценить кому это нужно, а кто под подозрением.
    Убедиться, что все телефоны имеют сложные пароли (на случай, если вдруг начнется атака подбора регистрационных данных).

В данном случае система не поддалась взлому, так как все звонки снаружи были замкнуты на секретарей. Но то, что все транки были заняты и сервер лишился возможности производить полезную работу - результат неполной защиты. Ограниченное количество транков привело к тому, что число звонков явилось небольшим. Остальные отбивались из-за нехватки транков в шлюзе для неизвестных входящих. Если бы шлюз для приема неизвестных входящих не использовался, атака бы не состоялась вовсе. Если бы в шлюзе для приема неизвестных входящих использовалось 2 транка вместо 40, и шлюз был бы обособленной единицей в карте сети, то работа бы не парализовалась.

Можно держать сервер на внешнем IP-адресе, можно реализовывать на нем произвольные сервисы, обслуживать все неизвестные звонки, но при этом следует помнить о возможных типах атак и предпринимать ограничения, с ними связанные. Мы рекомендуем выстраивать систему безопасности вокруг АТС по возможности в соответствии с принципом: "разрешить тем, кому можно", а не "запретить тем, кому нельзя". Помните, что любая уязвимость будет рано или поздно найдена атакующей стороной!