[Перевод] Конференция DEFCON 27. Извлечение пользы из хакерских продуктов для macOS. Часть 2


  • Перевод
Конференция DEFCON 27. Извлечение пользы из хакерских продуктов для macOS. Часть 2

Получив с удаленного хакерского C&C-сервера файл с вредоносным кодом, эксплойт приступает к его исполнению. Здесь используется тот же SDF-метод, когда архив с вредоносным ПО распаковывается при помощи встроенной команды ditto и затем выполняется через NS API. Таким образом, Windtall использует стандартный встроенный загрузчик.

Кроме этого, бэкдор снабжен логикой самоликвидации, так что каждый раз, когда вредоносное ПО стартует, оно связывается с хакерским сервером и спрашивает, не должно ли оно деинсталлироваться. Если C&C-сервер отвечает кодом «1», программа сама себя удаляет, тем самым прекращая шпионскую деятельность.

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

Сначала поговорим о перепрофилировании эксплойта. Создать хакерскую веб-страницу, которая автоматически загружает ZIP-файл, содержащий вредоносное приложение, довольно просто. Как я упоминал, Safari по умолчанию будет автоматически распаковывать архивы ZIP, так что если мы разместим вредоносное приложение в этом архиве, который занимается реализацией некоторых обработчиков URL, Mac OS автоматически зарегистрирует его еще до того, как пользователь запустит приложение.

Затем вредоносная веб-страница может сделать запрос этого уже зарегистрированного пользовательского URL, который приведет к запуску приложения. Обычно при этом всплывает окно с предупреждением, но пользователь кликает по кнопке, не обращая на него внимания.

Итак, вы видите демонстрацию переделанного эксплойта и окно с предупреждением, что «Final_Presentation» представляет собой приложение, загружаемое из интернета, с вопросом, уверен ли пользователь, что хочет открыть его на компьютере?

Клик по кнопке «Open» является вторым запросом, вызывающим всплывающее окно, и если пользователь кликнет по отображенному в нем значку приложения, мы увидим, что вредоносное ПО автоматически установилось в систему.

Здесь имеет место логический недостаток Apple, при котором для заражения системы не нужно патчить ОС, и это все ещё срабатывает в последней версии macOS. Теперь, когда мы переделали эксплойт, поговорим о переделке malware.

Наш первый шаг заключается в подмене встроенного адреса C&C-сервера для того чтобы эксплойт обратился к нашему серверу и скачал с него переделанное вредоносное ПО. К сожалению, адрес оказался зашифрованным, но нас это не обеспокоило. Мы решили заставить malware всегда загружать динамическую библиотеку. Затем, как только наша библиотека запускалась в адресном пространстве вредоносного процесса, мы в принципе могли бы модифицировать malware так, чтобы оно в процессе работы перехватывало расшифрованные адреса C&C-сервера еще до того, как использовать этот сервер для подключения. Давайте поближе рассмотрим этот процесс.

Напомню ещё раз – нашей целью было перепрофилировать malware указав свой собственный C&C-сервер для того, чтобы вредоносное ПО подключалось обратно к нашей инфраструктуре.

Итак, динамическая библиотека была загружена в адресное пространство malware, и мы заменили процедуру расшифровки, или применили Swizzle. Этот эффективный и мощный метод замены API носит название «Yoop».

На слайде видно, что мы заменили функцию расшифровки таким образом, что всякий раз, когда вредоносное ПО её вызывает, оно на самом деле вызывает наш метод расшифровки в нашей библиотеке. Я понятия не имею, что собой представляет алгоритм расшифровки и как он работает, и, честно говоря, мне все равно, но после подмены я могу видеть результат этого шифрования. Так что если оригинальный метод шифрования возвращает мне расшифрованные адреса C&C-сервера, я могу просто внедрить свой собственный C&C-сервер в логику malware. Это дает нам возможность прозрачно заменить расшифрованный C&C-сервер своим сервером.

Теперь я добавляю некоторые отладочные сообщения в библиотеку так, что когда мы запускаем переделанную вредоносную программу, то в процессе её выполнения можем увидеть, как происходит замена адресов C&C-сервера. В окне терминала командной строки вы видите, как наша библиотека, которая проходит через оригинальный метод расшифровки, обнаруживает, что этот ответ приходит от C&C-сервера, адрес которого сейчас расшифрован.

Поскольку мы не хотим, чтобы наша программа обращалась к логике оригинального malware, то просто отбрасываем эту функцию и возвращаемся к своей собственной программе. Конечно, мы всегда должны быть уверены, что бэкдор обращается к нашему C&C-серверу, а не к серверу оригинальной APT-группы.

Нам потребовалось написать свой C&C-сервер, поскольку теперь malware будет к нему подключаться, и нам нужно обеспечить «разговор» с протоколом, чтобы правильно озадачить вредоносное ПО.

Основной функцией бэкдора Windtall является сбор и извлечение файлов пользователя, поэтому в первую очередь нам нужно было добавить эту функцию в наш C&C-сервер. Файлы извлекаются через запрос POST, так что мы просто написали несколько строчек кода на Python, позволяющих нам сохранять файлы, извлекаемые и присылаемые нам из инфицированного хоста.

Вы видите на экране, как наш C&C-сервер получает файлы, извлеченные с атакуемого компьютера.

Слева видно, как приходят сетевые запросы, а справа – как наш сервер записывает их в файловую систему. Это значит, что сейчас мы поддерживаем возможность malware извлекать файлы всех типов из инфицированного хоста.

Мы также приспособили наш C&C-сервер для поддержки возможностей загрузки и выполнения Windtall. Мы заметили, что для этого malware выполняет 2 запроса.

Первый запрос касается получения имени файла для скачивания, а на второй запрос мы должны ответить конкретными байтами файла, который мы хотим загрузить. Malware сохраняет все это в файл, который мы указали, а затем распаковывает его и исполняет. Еще раз повторю – нам потребовалось всего пару строчек на Python, это просто, так как он использует множество встроенных библиотек.

Как только мы это сделали, у нас появилась возможность «озадачить» имплант. Давайте посмотрим на это в действии. Мы видим, как malware подсоединяется к нашему C&C-серверу, потому что мы успешно подменили адрес оригинального сервера, и выполняет выданную ему задачу – загружает приложение «Калькулятор».

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

Наконец, давайте дадим нашему серверу возможность дистанционно удалять malware. Функция самоуничтожения очень пригодится, если ребята из ФБР будут ломиться в вашу дверь. Одно нажатие на клавишу — и вирус сам удалит себя из всех инфицированных систем.

Шпионское ПО периодически обращается к нам с запросом, нужно ли удалить само себя, и если нужно, мы просто отвечаем ему кодом «1», после чего оно полностью деинсталлируется из системы.

Ещё одно демо покажет это в действии. Можно увидеть, что наше malware имеет свой собственный оранжевый логотип, имитирующий документ Power Point, но в действительности это скрытая системная директория.

После того, как оно в очередной раз отослало C&C-серверу запрос на уничтожение и мы ответили единицей, оранжевый значок исчез из каталога программ, а само приложение прекратило с нами «общаться», поскольку выполнило самоуничтожение.

Итак, мы показали, как перепрофилируются некоторые образцы вредоносного ПО для macOS, а теперь давайте обсудим, как при этом оставаться необнаруженными. Так как мы переделываем известные вредоносные программы, которые обнаруживает и блокирует встроенная защита macOS и антивирусное ПО сторонних производителей, нам нужно как-то решить эту проблему.

Как не быть обнаруженным

Сначала поговорим о программах обнаружения и борьбы с вирусами, которые встроены в macOS, как например, XProtect, инструмент для удаления вирусов MRT и проверка отозванных сертификатов.

На первый взгляд это выглядит проблематично, так как эти программы могут заблокировать наше переделанное шпионское ПО на любом компьютере Mac. Поэтому нужно подумать о том, как обойти защиту, потому что если мы попадемся со своим тщательно перепрофилированным malware и Apple его заблокирует, это будет полный провал.

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

Он сканирует файлы, загруженные пользователем на компьютер, перед их первым запуском, руководствуясь правилами обнаружения вирусов. На экране мы видим проверку сигнатуры вируса OSX.KeRanger.А, перепрофилирование которого мы только что рассмотрели.

Мы написали простую утилиту под названием UXProtect, позволяющую исследовать эти сигнатуры через пользовательский интерфейс UI, а также в любое время сканировать файлы на предмет наличия сигнатур вирусов. Поскольку XProtect использует только механизм обнаружения сигнатур, его чрезвычайно легко обойти. Давайте рассмотрим поближе сигнатуру вируса KeRanger.

Мы видим указание на группу сигнатур malware, для обхода которых требуется просто изменить порядок или модифицировать любую из этих инструкций. Изменение нескольких байтов инструкции приводит к тому, что сигнатура больше не совпадает с параметрами обнаружения. Для примера мы изменили число байтов, которые должны читаться из буфера, с 0х400 на 0х300. Это никак не повлияло на функциональность вируса, но как только мы изменили число байтов, которые сканер проверяет на предмет совпадения с сигнатурой, то полностью исключили возможность реагирования XProtect на данную угрозу.

Наступает время очередной демонстрации, где вы увидите два примера работы KeRanger. Мы снова используем зараженный клиент BitTorrent. Слева на экране расположен оригинальный хакерский экземпляр вируса, а справа – его перепрофилированный вариант, который для получения ключа шифрования связывается с нашим C&C-сервером. Кроме того, он модифицирован так, чтобы обойти защиту XProtect.

Вы видите, что экземпляр оригинального вируса блокируется системой без возможности запуска, и единственная разрешенная с ним операция – это удаление.

Если мы запускаем переделанный вариант KeRanger, система просто сообщает, что он загружен из интернета и спрашивает, действительно ли мы хотим его запустить.

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

Следующий способ защиты Mac – это проверка подписей сертификатов. Большинство подписанных двоичных файлов macOS не блокируется функцией безопасности GateKeeper, поэтому хакеры снабжают подписями большинство современного вредоносного ПО для Mac. С другой стороны, как только подписанный вирус будет обнаружен, Apple просто отзывает его сертификат подписи. Это означает, что данное вредоносное ПО нельзя будет запустить ни на одном компьютере Mac.

Например, у нас имеется бинарник вируса Windtall, сертификат подписи которого был отозван Apple. Это означает, что даже если мы перепрофилируем и применим его против новой системы, то все равно не сможем запустить. Поэтому мы просто попробуем обойти процедуру отзыва сертификата, удалив сам сертификат подписи.

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

Для удаления сертификата Apple фактически сама предоставляет утилиту под названием Code Sign, содержащую недокументированный флаг remove-signature, или «удалить подпись». Если вы выполните эту операцию со своим malware, Apple просто не обратит внимание на отозванный сертификат подписи.

Мы также можем переподписать свое приложение с помощью этой же утилиты, используя команду codesign -s “Developer ID Applikation: ”. Это приведет к тому, что переподписанный Windtall больше не будет блокироваться macOS.

Наконец, мы переходим к MRT — встроенному инструменту удаления вирусов, который имеется в последних версиях операционной системы Mac. Он похож на XProtect, но сканирует malware, которое уже установлено в системе, и при обнаружении удаляет его автоматически. В отличие от XProtect, его сигнатуры встроены в собственный двоичный файл. Apple часто использует этот инструмент для удаления легальных приложений, которые считает небезопасными для вашего компьютера. Обычно это приложения, содержащие известные уязвимости.

Поскольку MRT, как и XProtect, работает с сигнатурами, его так же можно обойти. Мы использовали дамп MRT, опять же, потому что сигнатуры встроены в сам бинарник, и смогли просмотреть их все, включая сигнатуру вируса Fruitfly. Мы удивились – неужели MRT сможет обнаружить наше переделанный экземпляр этого malware?

Мы стали исследовать встроенную сигнатуру Fruitfly и выяснили, что её обнаружение базируется на двух вещах: пути установки вируса и загружаемом файле .plist. Это означало, что если мы изменим путь или название malware, MRT не сможет его обнаружить. Как я сказал, в результате обойти данную защиту оказалось довольно просто.

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

На эту тему было много разговоров, я не хочу погружаться в детали, но в целом традиционные антивирусные продукты основаны на проверке сигнатур, как и антивирусное ПО Apple, а это значит, что их можно обойти теми же методами.

Для примера я взял тот же Fruitfly, вспомнил, что это тоже скрипт Perl, и пропустил его через бесплатную онлайн–утилиту Perl Obfuscator, предназначенную для того, чтобы сделать Perl-скрипт трудночитаемым и свести к нулю вероятность его обнаружения. Естественно, это сработало. Но вы можете пойти более хитроумным путем, особенно если используете malware на основе двоичного файла. Вы можете упаковать его в архив, использовать шифровальщик или даже in-memory execution, то есть безфайловую загрузку и исполнение вируса в оперативной памяти.

Несколько лет назад эти технологии обсуждались на конференции BlackHat и был сделан вывод, что даже если пользователь Mac установил в системе антивирусное обеспечение сторонних разработчиков, оно все равно не способно обнаружить перепрофилированное вредоносное ПО. Это плохая весть для пользователей macOS, поскольку мы знаем, что опытные хакеры используют именно переделанное вредоносное ПО. Зачастую вся переделка сводится к изменению нескольких байтов кода или аргументов командной строки, и это дает возможность захватить контроль над компьютером, чтобы пользоваться им в своих собственных целях. Кроме того, большинство встроенных антивирусных инструментов macOS и антивирусное ПО сторонних производителей не в состоянии обнаружить переделанные угрозы.

Поскольку это перепрофилированное ПО представляет собой лишь слегка переделанные оригинальные, хорошо известные шпионские программы, я собираюсь надеть на себя «белую шляпу» и рассказать, как же их все-таки можно обнаружить.

Обнаружение перепрофилированного ПО

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

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

Если мы переделаем троян-вымогатель Ransomware, он все равно будет шифровать ваши файлы, а переделанный бэкдор будет продолжать собирать файлы и отправлять на шпионский сервер.
На приведенном выше слайде я отобразил функции или возможности системы, за которыми следует наблюдать и мониторить их активность. К ним относится «настойчивость» приложений, необычная активность микрофона или камеры, загрузка или передача файлов, несанкционированная съемка экрана, симптомы перехвата клавиатуры, синтетические кликеры и шифрование файлов. Это позволит обнаружить даже перепрофилированное malware.

Давайте поговорим о настойчивости. Когда я говорю «настойчивость», то имею в виду, что как только шпионское ПО установится на компьютер, оно будет запускаться каждый раз автоматически после перезагрузки системы. Это особенность любого malware для macOS или Windows – упорно стремиться к достижению вредоносной цели.

Мы можем просто контролировать файловую систему, наблюдая за поведением «настойчивого» приложения, и если что-то в нем изменится, сообщить об этом пользователю или системному администратору.

Сейчас я хочу продемонстрировать, как можно обнаружить активность оригинального или переделанного вируса Windtall, которая проявляется в несанкционированном доступе к микрофону или веб-камере Mac.

Множество вредоносных программ для Mac получают доступ к веб-камере или микрофону для того, чтобы шпионить за пользователем зараженной системы. Чтобы обнаружить эту вирусную активность, мы можем зарегистрировать в системе macOS каждое включение камеры и микрофона так, чтобы пользователь автоматически получал уведомление об этом событии. При этом можно обнаружить работу даже такого вируса, как перепрофилированный нами FruitFly, или такого эксплойта, как Zoom, который в любое время может получить доступ к микрофону или камере.

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

Самый простой способ обнаружить нажатия клавиш в macOS – это зарегистрировать процесс под названием Event Taps. При этом операционная система будет генерировать сообщения об активности клавиатуры каждый раз, когда будет зафиксирован факт нажатия клавиши. Это позволяет с легкостью обнаруживать даже переделанные кейлоггеры.

Мы много говорили о FruitFly, одной из самых сложных вредоносных программ, особенностью которой является возможность удаленного взаимодействия с пользовательским интерфейсом через синтетические, или запрограммированные проявления активности мыши и клавиатуры – «невидимые» клики.

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

В начале разговора я упоминал о ресурсе Objective-See, это моя собственная веб-страница безопасности macOS. Главная цель этого ресурса состоит в том, чтобы предоставить всем конечным пользователям преимущественно бесплатные инструменты обеспечения безопасности с открытым исходным кодом. Здесь представлен целый ряд средств безопасности, о которых мы сегодня говорили, так что вам будет интересно посетить этой сайт.

Недостатком этих инструментов является то, что они являются специализированными – одни противостоят только кейлоггерам, другие представляют собой лишь файрвол, то есть у нас нет решений типа «все в одном».

Поэтому, когда я начал работать в Digita Security, мы решили соединить их в один универсальный инструмент. Идея состояла в комбинации двух функций: мониторинга системы и последующего создания правил для обнаружения необычного поведения приложений. Мы решили взять обе эти функции и вставить их во встроенный игровой логический движок Apple, который сделал бы за нас всю тяжелую работу, применил бы наши правила к нашим данным и выдал бы нам конечный результат.

Давайте поговорим о некоторых из этих правил обнаружения, основанных на необычном поведении приложений. Это важно для того, чтобы знать, сможете ли вы использовать их в других инструментах безопасности, так как наш продукт не является разработкой, предназначенной исключительно для macOS.

Используя этот продукт, мы можем обнаружить практически все упомянутое сегодня переделанное вредоносное ПО. Например, мы можем обнаружить Windtall, наблюдая за тем, как Safari загружает, а затем автоматически извлекает приложение.

Это то же самое приложение, которое затем инициирует регистрацию обработчика URL и то же самое приложение, которое запускается автоматически с веб-сайта через запрос пользовательского URL. Обнаружение комбинации этих событий дает нам универсальные возможности борьбы как с Windtall, так и с любым другим вредоносным ПО, которое использует тот же вектор заражения.

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

Если предположить, что FruitFly уже запущен и работает в системе, мы можем обнаружить его присутствие с помощью наблюдения за поведением среды выполнения. Этот вирус делает такие подозрительные вещи, как настойчивый запуск скрытого процесса. Этот скрытый процесс в некоторых сценариях будет размещать встроенный неподписанный двоичный файл в каталоге шаблонов template для последующего запуска и генерации синтетических событий. Ясно, что это является совершенно недопустимой системной операцией.

Таким образом, если в системе происходит несколько связанных между собой подозрительный событий, мы должны пристально к ним присмотреться. На приведенных примерах я продемонстрировал, как поведенческая эвристика способна обнаружить даже сложные, перепрофилированные угрозы безопасности macOS.

Прежде чем закончить выступление, я хочу анонсировать ежегодную конференцию по безопасности Mac, которая состоится в феврале 2020 года на Гавайях, и пригласить вас принять в ней участие.

Немного рекламы 🙂

Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас, оформив заказ или порекомендовав знакомым, облачные VPS для разработчиков от $4.99, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).

Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 ТВ от $199 в Нидерландах! Dell R420 — 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB — от $99! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?

Source: habr1