Алиса Шевченко
ЗАЩИТА И ПРЕДОТВРАЩЕНИЕ
В силу специфики проблемы никакие программно-технические средства не гарантируют защиту от данной угрозы. Существенно усложнить задачу злоумышленника способны классические, грамотно спланированные меры обеспечения ИБ: защита внешнего периметра, шифрование информации, продуманные внутренние политики и плановые внешние тесты безопасности. Чрезвычайно важна осведомленность сотрудников в вопросах безопасности, так как наиболее эффективным и плохо поддающимся контролю вектором внедрения вредоносного кода является социотехнический вектор.
СЕГОДНЯ вредоносные программы – троянцы, вирусы, бэкдоры и шпионы – постоянная тема новостных колонок, посвященных информационной безопасности. Они представляются чем-то очень распространенным, но относительно безопасным – по крайней мере, для тех, у кого установлен антивирус.
Не стоит забывать о том, что программышпионы по-прежнему с успехом используются в профессиональном промышленном и финансовом шпионаже – с целью обеспечения скрытного доступа к внутренней сети организации, ее конфиденциальным ресурсам либо в качестве автоматизированного инструмента для снятия информации. Что неудивительно: внедрить незаметную программу через одного из сотрудников (ничего об этом не подозревающего) безопаснее и дешевле, чем использовать с той же целью инсайдера.
ОБЗОР ПРОБЛЕМЫ
Публичные источники информации не дают оснований судить о роли вредоносных программ в инцидентах, связанных с компрометацией ИБ. Тому имеется ряд причин. 1. Инциденты утечки информации и тем более результаты их расследования редко предаются огласке, так как это способно повредить репутации компании. 2. Техническое расследование необходимой глубины не может быть произведено, если у следователя недостаточно компетенций для выявления профессионального руткита или же если подозреваемые серверы были скоропалительно "пущены под снос".
Если программа-шпион грамотно разработана, то в процессе ее работы пострадавшая сторона никогда не заподозрит неладное, а к моменту раскрытия факта утечки атакующий успевает "замести следы" – удалить шпионскую программу и очистить системные логи 3. Об эффективности использования программных средств с целью получения доступа к внутренним IT-ресурсам организации и необходимых привилегий можно судить по тому факту, что в арсенале любой серьезной организации, проводящей "Тесты на проникновение" (Penetration testing), обязательно имеется тест на внедрение постороннего кода1. По данным представителей нескольких подобных организаций, указанный способ проникновения в сеть является одним из наиболее эффективных в ходе выполнения "Тестов на проникновение". Существует ли надежная защита от таких вредоносных программ? Проблема в том, что целевые шпионские программы крайне редко попадают в антивирусные лаборатории по причинам, перечисленным выше. Антивирус против них бессилен и еще по одной причине: бюджеты на разработку инструментов для промышленного шпионажа вполне покрывают расходы разработчика на решение задачи обхода всех существующих на рынке защитных средств2. Что касается современных DLP-решений: они предназначены в первую очередь для защиты от непреднамеренных или дилетантских утечек информации и не способны обеспечить надежную защиту от профессионально спланированной кампании.
СОВРЕМЕННЫЕ ЦЕЛЕВЫЕ ШПИОНСКИЕ ПРОГРАММЫ
Стоит выделить три разновидности шпионских программ, применяемых в качестве инструментов для промышленного шпионажа и финансового мошенничества.
1. Руткит – вредоносная программа, скрывающая свое присутствие в системе от пользователя и утилит.
2. Троянец – обыкновенная шпионская программа, не скрывающаяся в системе.
3. Закладка – шпионский код, встроенный в легитимное ПО. Большинство подобных программ являются целевыми, т.е. разработанными на заказ с учетом IT-инфраструктуры конкретной организации.
С целью сбора информации шпионская программа устанавливается на ключевой сервер в сети организации или на рабочую станцию ответственного сотрудника.
Перечислим основные векторы внедрения шпионской программы в целевую систему. 1. Программа инсталлируется при помощи инсайдера. 2. Программа внедряется через одного из сотрудников (без его согласия) при помощи методов социальной инженерии. Это может быть присланная по каналам e-mail, IM, социальных сетей ссылка на программу (якобы от имени знакомого сотрудника или администратора организации) или подброшенный диск с презентациями.
3. Программа внедряется "снаружи", после взлома сетевого периметра.
Необходимость в проведении анализа серверов организации на предмет шпионских программ возникает в следующих случаях.
1. Профилактика: в составе комплекса мер по внедрению ПО для защиты от утечек или в ходе проведения плановых тестов ИБ. 2. Диагностика: зафиксировано аномальное поведение компьютерных систем – "лишние" процессы, несанкционированные сетевые соединения, ненормальный объем трафика или потребляемых процессорных ресурсов.
3. Инцидент: в составе комплекса мер по техническому расследованию инцидента утечки данных или финансового мошенничества.
На этапе анализа обнаруженной шпионской программы возможно получение ценной информации об инциденте, такой как сетевой адрес атакующего, свидетельства уровня его осведомленности о внутренней инфраструктуре целевой организации, точный перечень переданных злоумышленнику данных.
Методика выявления шпионских программ В ходе поиска шпионских программ необходимо учитывать два возможных варианта компрометации системы, так как для каждого из них используется своя методика анализа.
1. Шпионская программа скрывается в системе – целевой руткит.
В рамках этого случая решение задачи сводится к выявлению и анализу системных аномалий, косвенно свидетельствующих о наличии скрытой программы. Такими аномалиями считаются расхождения в системных данных, полученных из разных источников, несанкционированные модификации кода ядра, несанкционированные системные "ловушки" (hooks, callbacks). 2. Шпионская программа не скрывается, но маскируется – троянец или закладка.
В данном случае для полного решения задачи достаточно глубокого анализа системной конфигурации и проверки целостности системных файлов и исполняемых файлов приложений. Комплекс мер по выявлению шпионских программ должен учитывать оба вышеописанных случая. Таким образом, он включает в себя следующие этапы. 1. Анализ конфигурации системы.
Производится экспертное обследование списков объектов автозапуска, в том числе различных веток системного реестра, списков сервисов, зарегистрированных драйверов и других точек. В ходе анализа должны быть рассмотрены все возможные источники прямой и косвенной загрузки исполняемого модуля при старте операционной системы. 2. Выявление и анализ системных аномалий.
Во-первых, при помощи специализированных утилит производится серия тестов и сопоставлений системной информации, полученной разными способами: с помощью вызова стандартных системных API, вызова функций ядра, внешнего сканирования системы. Таким образом может быть диагностировано наличие в системе агента, искажающего выводимую информацию.
Во-вторых, анализируются на предмет аномалий – несанкционированных модификаций и несоответствий стандартам – различные системные структуры, считанные при помощи низкоуровневых механизмов (таких как отладчик ядра или прямое чтение с диска).
Перечень объектов, подлежащих такому анализу, включает в себя: списки файлов, списки открытых портов, сетевых соединений, дампы сетевого трафика, системные логи и логи приложений, списки зарегистрированных в системе и загруженных в память модулей ядра, таблицы указателей и код функций ядра и многое другое. 3. Проверка целостности исполняемых файлов.
Для контроля отсутствия нежелательных модификаций в исполняемых модулях производится проверка контрольных сумм файлов в соответствии с дистрибутивами соответствующего ПО и верификация цифровой подписи файлов.
4. Анализ выявленных шпионских программ.
Производится reverse engineering и детальный анализ кода обнаруженного руткита или закладки с целью извлечения дополнительной информации об инциденте. 5. Восстановление чистоты системы.
Сервер может быть надежно "вылечен" без необходимости переустановки операционной системы.
В силу значительной трудоемкости данной методики она применяется с целью выявления шпионских программ только на серверах. Решение аналогичной задачи для большого количества рабочих станций производится по упрощенной схеме и с более обширным использованием средств автоматизации анализа.
Следует заметить, что приведенный базовый алгоритм не полностью покрывает один достаточно редкий и специфический кейс, а именно: случай, когда шпионский код внедрен в легитимное ПО в виде недекларированных возможностей (НДВ), на уровне дистрибутива. В таком случае проверка целостности исполняемых файлов и конфигурации системы рискует не выявить никаких аномалий. Покрытие данного кейса требует глубокого анализа подозрительного программного обеспечения.
1 Хотелось бы подчеркнуть, что в ходе "Тестов на проникновение" используются эмуляторы, то есть программы, имитирующие отдельные особенности вредоносного ПО (такие, как обход защиты и повышение уровня привилегий в системе), полностью подконтрольные специалисту и не содержащие вредоносных функций.
2 На черном рынке (см. хакерские Web-форумы) открыто котируются только простые троянцы, нацеленные на массовое заражение пользователей, преимущественно с целью создания ботнетов. О ценах на целевые руткиты можно судить, умножая соответствующие котировки в десятки раз.
КОММЕНТАРИЙ ЭКСПЕРТА
Илья Сачков, руководитель направления, группа информационной безопасности Group-IB