Мимолетное Зло

Я фрилансер, и моя основная специализация — решения IP-телефонии на базе Asterisk. На днях со мной обратился один из моих довольно давних клиентов, для которого в прошлом году я реализовал телефонию колл-центра интернет-магазина.

Там я установил и настроил только и исключительно Asterisk с сопутствующими пакетами; Установкой сервера и ОС (Ubuntu), а также поддержкой системы после внедрения занимался локальный сисадмин, и ко мне время от времени обращались с разовыми нетривиальными задачами, требующими чего-то большего, чем простая квалификация редактирования контекстов в диалплан.

На этот раз им нужно было изменить логику CDR с точки зрения статистики поступивших звонков по очереди.

Согласовав стоимость и сроки, я приступил к работе.

Каково же было мое удивление, когда после включения протоколирования незавершенных звонков в CDR начался поток записей а-ля «НЕИЗВЕСТНО НЕИЗВЕСТНО» со статусом «FAILED»! Более того, попытки дозвона были направлены на несколько литовских номеров с кодом +370. Так как сама идея подключения извне к астериску была сразу отброшена после проверки (все рекомендации по безопасности были соблюдены на этапе реализации, был фаил2бан, а у SIP-аккаунтов был жёсткий лимит по IP), а AMI был отключен, остался только остался один вариант - вызвать файлы.

Так и получилось.

Я уточнил у клиента: они не использовали эту технологию и уж точно не звонили в Литву.

Мораль? Правильно, банальный хак.

Когда файлы звонков удалялись, через некоторое время они снова появлялись.

Как и ожидалось, ничего лишнего в cron не обнаружено.

Почесывая затылок, я циклически запускал lsof — но в исходящем он не смог поймать ничего интересного.

Затем, после недолгого гугления, в бой пошла тяжелая артиллерия — inotify_tools. Картина получилась интересная: что-нибудь Он постоянно генерировал пресловутые файлы, по несколько в секунду.

Из чего я сделал вывод, что имею дело не с запланированным заданием, а с процессом или демоном.

Дальше проще: с помощью top и ps был быстро пойман подозрительный процесс под названием «backup» и расположенный в /var/tmp/bkb.d. Это оказался простой скрипт, который постоянно копировал в /var/spool/asterisk/outgoing десяток располагавшихся там файлов вызовов и содержал инициацию международного звонка на различные литовские номера.

При этом, что самое интересное, звонки (точнее, попытки дозвона) совершались через несуществующий транк, а файлы звонков не содержали никаких указаний на соединение после дозвона с кем-то другим.

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

Я не знаю, что он с этим сделает дальше; Передо мной не стояла задача найти дыру, через которую стал возможен взлом.

Хотя там торчали только SIP, SSH и закрытая http авторизацией веб-морда статистики (конечно, Apache, как и Asterisk, не запускался от root), поэтому выбор был невелик.

Возможно, существовало более простое и быстрое решение для поиска вредоносного ПО — но я все же не считаю себя универсальным Linux-администратором и пользовался тем, что приходило в голову, и попутно гуглил.

Однако я до сих пор не понимаю, кто, как и, главное, почему осуществили такой бессмысленный взлом.

Теги: #asterisk #voip #voip #информационная безопасность #asterisk

Вместе с данным постом часто просматривают: