Неожиданно для себя оказался на конференции по безопасности АСУ ТП (промышленного производства). Если ты уже спешишь закрыть страницу, не пугайся — колонка ни в коем случае не о том, как я защищал инфраструктуру очистительных сооружений для водоканала г. Мухосранск (хотя не без этого — читай ниже).
В кулуарах мероприятия активно обсуждалась тема защиты от целенаправленных атак. Некоторые эксперты выражали мнение, что единственный работающий сейчас путь — это оценивать изменения в окружении каждой рабочей станции. Причем если для Windows решений довольно много, то OS X (то есть для Mac’ов) security-утилит не так уж и много. И что делать, если у тебя в компании таких машин сотни или даже тысячи?
У меня у самого свежа в памяти попытка установить антивирус на OS X, после чего я впервые увидел kernel panic системы. Такой авер сразу пришлось снести и забыть как страшный сон. Тем не менее вопрос безопасности остался открытым. Система без антивируса и вообще без всякой защиты или мониторинга в нашем жестоком мире — роскошь непозволительная.
На виндовой системе я довольно хорошо представляю, где может прописаться малварь и как ее можно задетектить, в том числе с помощью специализированных утилит вроде GMER. Для OS X подобных утилит я до недавнего времени не знал.
Решение от Facebook и Etsy
Тем радостнее для меня оказалась новость, что security-команды Facebook и Etsy зарелизили фреймворк MIDAS (Mac Intrusion Detection Analysis System), предназначенный как раз для обнаружения зловредной активности в системе.
Это не антивирус, нет. Это вообще не готовый продукт — это очень продвинутый и кастомизируемый фреймворк, с помощью которого можно анализировать большое количество рабочих станций на OS X, чтобы обнаружить аномалии в поведении, характерные для малвари. Может показаться, что использовать такой тулкит у себя на рабочей машине подобно стрельбе из пушки по воробью, но в действительности ничего похожего я пока не видел.
Структура фреймворка
У MIDAS модульная структура, самой важной частью которой являются так называемые helper’ы (они находятся в папке midas/lib/helper) — это уже написанные скрипты по анализу различной активности в системе. С их помощью можно, например:
- показать все слабые SSH-ключи на хосте;
- найти все файлы в заданной директории с нужными разрешениями;
- отобразить все элементы из автозапуска;
- перечислить все LaunchAgents, LaunchDaemons и так далее;
- запросить все расширения ядра;
- выяснить SSID текущей Wi-Fi-сети, к которой подключена машина;
- вернуть IP- и MAC-адреса используемого шлюза;
- проверить настройки DNS.
И это лишь малая часть того, что умеют helper’ы из коробки. На основе хелперов пишутся модули, которые выполняют уже вполне конкретные проверки (например, поиск новых приложений, которые прописываются для старта вместе с системой, или расширения ядра). Вместе с MIDAS идет модуль-пример (midas/modules/example.py), который проверяет LaunchAgents и LaunchDaemons в системе и логирует любые найденные изменения. Понятно, что для хранения состояния нужно иметь некоторую базу данных — так вот, в MIDAS реализована своя простенькая ORM-система, так что на этот счет можно не волноваться. Сами модули могут быть написаны как на Python, так и на Ruby или простом Bash.
В масштабах компании
Как разработчики видят использование MIDAS в больших компаниях? Сценарий предельно понятный:
- создается форк MIDAS (каждая компания использует его лишь как основу);
- добавляются модули и хелперы, которые реализуют необходимые проверки;
- все это деплоится на рабочие станции компании;
- через crontab/LaunchAgent прописывается автоматический запуск MIDAS в заданном интервале;
- для агрегации логов с различных систем используется syslog или другой похожий инструмент;
- по собранным данным проводится анализ, и, если обнаружены аномалии, генерируются предупреждения.
Разработать правильные модули и алерты — задача не из простых. Но теперь у нас есть хороший конструктор, на базе которого это можно сделать.
P. S.
В самом начале статьи я говорил, что не защищал никакие инфраструктурные объекты. Это не совсем так :). Организаторы конференции придумали очень прикольную и занимательную игру, которая заставила прочувствовать всю боль директора по информационной безопасности промышленного предприятия. Все участники разбивались в команды, каждой команде выдавалось игровое поле (схема водоочистительной станции с указанием ИТ-инфраструктуры: SCADA, PLC-контролеры, рабочая станция инженера и прочее), а также набор карт (провести пентест, установить патч, поменять пароли и так далее). В каждом из пяти раундов приходили какие-то вводные данные и надо было использовать самые нужные карты, имея ограничение времени и бюджета (каждая карта «стоила» по-разному). Несмотря на сильную команду, мы облажались и оказались почти на последнем месте: пару недель линии не работали из-за отказавших контроллеров :). Если бы это было реальное производство, то убытки могли бы составить сотни тысяч долларов. Провал :).
Напоследок хочу спросить: как тебе идея сделать что-то подобное для настольных игр дома? Мы готовы в этом максимально поучаствовать.