Sandboxed process что это
Что такое «sandboxd» и что он делает в моем Mac
Открыли «Мониторинг системы» и обнаружили непонятный процесс под названием «sanboxd»? Давайте вместе разбираться что это такое. «sandboxd» — это демон (от анг. daemon), процесс, который выполняет определенную задачу в фоновом режиме, как правило у всех daemon-процессов буква «d» в окончании. Если конкретнее, sandboxd отвечает за работу процесса «песочницы». Запустите терминал и введите команду «man sandboxd» (без кавычек) и вы получите описание процесса:
«App Sandbox is an access control technology provided in macOS, enforced at the kernel level. It is designed to contain damage to the system and the user’s data if an app becomes compromised.» |
Приложение sandbox — это технология контроля доступа в MacOS, которая действует на уровне ядра системы. Она предназначена, уберечь систему и данные пользователя от повреждений, на случай если приложение будет скомпрометировано. |
Приложения, которые работают из «песочницы» делают запрос на доступ к файлам и функциям системы, например, на доступ к веб-камере — этот процесс добавляет дополнительный уровень безопасности ОС. Использование «песочницы» является одним из самых основных требований к приложениям, которые распространяются через Mac App Store — это одна из причин по которой некоторого софта нет в Mac App Store. Процесс «sandboxd» не расходует много системных ресурсов.
И самое главное, не забудьте подписаться на наш канал в Telegram
Детект песочницы. Учимся определять, работает ли приложение в sandbox-изоляции
Содержание статьи
Sandbox (песочница) — изолированная программная среда, в которой задается и контролируется набор ресурсов для запущенной внутри нее программы. Как правило, ограничиваются и фильтруются вызовы WinAPI, которые отвечают за доступ к оборудованию, процессорным ядрам, определение размера памяти, а также доступ к сети и привилегированным средствам операционной системы. Сендбоксинг часто используется для запуска небезопасного кода и для анализа программ.
Проверяем запущенные процессы
Если виды песочниц нам приблизительно известны, то это облегчит детектирование. Можно просто поискать сендбоксы в списке выполняющихся процессов. Для этого используем функцию, которая перечислит все процессы и определит PID нужного по названию.
Детект песочницы Comodo Internet Security:
Процесс cmdvirth.exe обеспечивает виртуализацию в Comodo Internet Security. По тому же принципу можно задетектить песочницу Sandboxie:
Проверяем подключенные модули в нашем адресном пространстве
Другая интересная идея — просмотреть подключенные модули в адресном пространстве нашей программы на предмет известных модулей песочниц. Сделаем это напрямую из нашего процесса при помощи WinAPI-функции GetModuleHandle :
Проверка на песочницу Comodo Internet Security:
Или проверим на Sandboxie:
Функция GetModuleHandle() проверяет наличие DLL в адресном пространстве вызывающего процесса. Если функция не находит модуль, то возвращает ноль, условие не срабатывает.
Человеческий фактор
Что делать, если мы не знаем даже примерно, какая именно программа-песочница будет использована? Надо сказать, что очень сложно на 100% задетектить грамотно написанную песочницу, ведь она будет работать на уровне ядра, может прятать все свои процессы, подключенные модули, может даже скрывать собственный драйвер. Техники, которые будут перечислены далее, я рекомендую использовать по принципу экспертной системы для анализа результатов: чем больше будет срабатываний, тем более вероятно, что мы находимся в изолированной среде.
Первый способ косвенного обнаружения sandbox-изоляции основан на человеческом поведении. Мы допускаем, что после запуска нашей программы указатель мыши перемещался, и если это происходит, то можно предположить, что песочница не используется. Сравним координаты указателя через некоторый промежуток времени: если координаты не меняются, можно ставить один балл в пользу того, что нас исследуют внутри песочницы.
В этой функции мы берем два отрезка времени по полторы секунды каждый и, если в каком-то отрезке времени не было перемещения указателя мыши, делаем вывод, что, скорее всего, выполнение идет под бдительным взором изолированной среды.
PEB → NumberOfProcessors
Изолированные среды часто усекают число процессоров, чтобы не занять все ресурсы компьютера. Например, песочница может эмулировать одноядерный процессор. Но на дворе 2018 год, и даже в мобильных гаджетах зачастую камни с четырьмя ядрами, так что смело можем проверять, сколько ядер процессора видит наша программа. Если ядро всего одно, то это повод для подозрений.
Код для архитектуры x64:
Этот код получает содержимое поля NumberOfProcessors из PEB (Process Environment Block). Теперь легко проверить число процессоров:
Выясняем размер оперативной памяти
Другой побочный признак сендбоксинга — это малое количество оперативной памяти. В наши дни редко можно увидеть ПК с одним-двумя гигабайтами оперативки, теперь это скорее нормальный объем для смартфонов. Вот как будет выглядеть реализация проверки.
Проверяем свободное место
Мало места на жестком диске? Возможно, и правда все забито под завязку, но есть вероятность того, что это очередной признак песочницы. В этом примере мы предполагаем, что программа работает в изоляции, если доступно меньше 30 Гбайт.
Простые тайминг-атаки
Песочницы зачастую весьма требовательны к ресурсам и нередко сильно замедляют работу программы. Мы можем использовать тайминг-атаки для того, чтобы понять, используется эмуляция оборудования или нет. Один из вариантов — выполнять какой-нибудь системный вызов, который на чистой системе будет работать моментально, а в эмулируемой среде замедлен из-за драйвера песочницы. Если разница велика, то можно предположить, что используется песочница. На такой трюк ловится, например, песочница Sandboxie.
Отношение времени выполнения функции CloseHandle и GetProcessHeap() должно быть около 1 к 10. Если отношение меньше, делаем вывод о наличии фильтрации вызовов в драйвере песочницы.
Быстрый детект гипервизоров
Так же легко найдем гипервизор Citrix Xen:
Теперь посмотрим, как задетектить гипервизоры по характерным записям в реестре. Для этого напишем небольшую функцию, которая поможет нам определить, что программа исполняется внутри Wine.
Заключение
Вот мы и разобрали, как определять известные изолированные среды разными способами. Это не все из возможных методов, но от такого набора заготовок можно будет отталкиваться, конструируя свои методы определения (а возможно, и обхода) сендбоксинга.
Что такое песочница (sandbox) и почему вы должны в ней играть
Для успешного предотвращения хакерских атак, разработчики должны самостоятельно обнаруживать и закрывать все без исключения дыры в своем коде, а это, как показывает многолетний опыт, практически невозможно. Поэтому для того чтобы защитить должным образом свои приложения их создатели в последнее время всё чаще используют особые защитные механизмы.
Наиболее эффективным и распространенным решением среди них является – sandbox (песочница).
В песочнице не песок?
Нет, это не детская песочница в парке развлечений, а специальная песочница для программного обеспечения. Ключевая цель такой песочницы: предотвратить распространение хакерских атак. Как мы говорили выше: опытные программисты знают, что их код не является совершенным и продукт может быть взломан, т.е. через него может быть совершена успешная атака. Для того чтобы защитить пользователя от возможных угроз, разработчики создают песочницы, которые изолируют отдельные части их программ. Фактически, все, что происходит в песочнице, там же и остается.
Песочница в действии
Для того чтобы объяснить действие песочницы мы будем использовать в качестве основного примера Google Chrome. Браузер Chrome – один из самых известных продуктов, в котором реализованы функции песочницы. Именно их компания Google с гордостью рекламирует, как уникальные особенности безопасности, которых нет у других браузеров.
Инженеры Google взяли Chrome и по сути разделили его на три различных компонента: основной процесс, связывающий все воедино, процессы вкладок, удерживающие страницы и включающие визуализацию, а также процессы плагинов, таких, как, например, Adobe Flash.
Все эти компоненты имеют разные уровни доступа и те, возможности которых ограничены, оказываются буквально изолированными от всего остального. Помимо этого, различные процессы не могут взаимодействовать между собой и просто совместно сосуществуют.
К примеру, Flash-контент из соответствующего плагина может быть представлен на открытой вкладке браузера, однако их процессы (вкладки и плагина) разделены и не имеют ничего общего.
Функция визуализации только оставит зарезервированное место на странице, в котором будет отображаться процесс. Отсутствие взаимодействия очень важно, ведь если вкладка совершила критическое действие или ее взломали, она не сможет повлиять на другие вкладки и, тем более, не сможет навредить всей вашей системе.
Firefox также имеет некоторые функции песочницы
В браузере Firefox имеется своя песочница, правда, с некоторыми ограничениями. Она отделяет только сторонние плагины, такие, как Flash и Silverlight, но все вкладки браузера по-прежнему объединены в единый процесс.
Получается, что Firefox больше доверяет своему собственному коду, в отличие от компании Google с ее браузером Chrome, и возлагает вину за все нестандартные ситуации полностью на сторонние плагины. Поэтому, если с плагином произошла какая-либо нештатная ситуация, то она не повлияет на браузер и на открытые в нём вкладки.
Существование вне песочницы
Внедрять в программный код функции песочницы – отличная стратегия, но существует огромное количество программ, не имеющих этой замечательной функции. К счастью, вы можете использовать виртуальную песочницу, в которой сможете запускать любые программы, потенциально опасные для вашей системы.
Такая технология часто применяется для тестирования программного обеспечения, однако это неплохой вариант для запуска веб-браузера или практически любого программного обеспечения. Самой популярной программой для создания виртуальной песочницы является Sandboxie, но существуют и другие варианты как платные, так и бесплатные, обладающие примерно одинаковыми возможностями.
В настоящее время песочница (sandbox) является одной из самых обсуждаемых тем, особенно, когда речь заходит о компьютерной безопасности, и это правильно, ведь технология определенно справляется со своими обязанностями. Конечно, разработчики по-прежнему должны уделять особое внимание своему коду и доводить его до совершенства, но это нелегкая задача и не у всех получается ее достигнуть. Имейте в виду, что песочницы все еще не идеальны, например, песочница Chrome всё-таки была однажды сломана на хакерском конкурсе Pwn2Own 2012 после нескольких чрезвычайно трудных хаков.
Однако, согласитесь, такой защитный механизм все-равно лучше, чем ничего.
Google Chrome
Автор Краб,
29 апреля, 2011 в Технологии и техника
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Похожий контент
Добрый день. Периодически выскакивает сообщение от KIS 2021. Полная проверка ничего не находит. Пробовал сносить Chrome (через Revo uninstaller) и переустанавливать. Удалял все расширения, не помогает. Буду благодарен за помощь.
Событие: Загрузка остановлена
Пользователь: ALIOGLU\aliza
Тип пользователя: Активный пользователь
Имя программы: chrome.exe
Путь к программе: C:\Program Files\Google\Chrome\Application
Компонент: Веб-Антивирус
Описание результата: Запрещено
Тип: Троянская программа
Название: HEUR:Trojan.Script.Generic
Точность: Эвристический анализ
Степень угрозы: Высокая
Тип объекта: Файл
Имя объекта: cdn.js
Путь к объекту: https://sso.umagnet.ru/app
MD5: B789863B7EF545769400FB2CA2524BED
Причина: Экспертный анализ
Дата выпуска баз: Сегодня, 28.06.2021 13:50:00
CollectionLog-2021.06.28-18.00.zip
Безопасны ли расширения для Google Chrome из их же интернет-магазина Chrome, что открывается во вкладке браузера «Сервисы»? Проверяются ли эти расширения разработчиками браузера?
Если расширение содержит угрозу (уязвимость), среагирует ли KIS 21 при его установке?
Возможно ли при установке расширения из интернет-магазина Chrome, что утекут логины, пароли хранящиеся в браузере?
Хотя в настройках браузера если «Выполнить проверку», то есть пункт: «Расширения Включена защита от потенциально опасных расширений». Говорит ли это о том, что расширения из интернет-магазина Chrome безопасны?
Ну и может кто пользуется подобным расширением из интернет-магазина Chrome, подскажите какое установить.
Оценка вредоносности файлов с помощью песочниц: Часть 2. Анализ в оффлайн
Однако на практике случается довольно много случаев, когда использование онлайн-песочниц не позволяет решить задачу. Это может быть связано с самыми различными факторами, например:
— Доступ к интернет затруднителен
— Онлайн-песочницы в данный момент перегружены, а выполнение анализа критично по времени
— Выполнение в онлайн песочницах блокируется изучаемым файлом
— Необходима более тонкая настройка режима выполнения файла при анализе, например — увеличение времени задержки с момента запуска
В этом случае на помощь нам приходит оффлайн-решение проблемы.
Суть работы практически любой песочницы — это ограничение выполнения программы в контролируемой среде с виртуализацией вносимых изменений в систему. Безусловно, идеальным решением такой задачи будет выполнение кода на виртуальной машине с возможностью отката назад до снимка, либо на физической машине с полным посекторным бэкапом системы с возможностью такого же отката назад. И это абсолютно верно — так же работают аналитики во всём мире, так же работают уже рассмотренные нами онлайн-песочницы. Однако в таком случае необходимо вручную снимать и анализировать дампы памяти, изучать изменения в системе, реестре и т.д. Мы же рассмотрим несколько решений, выполняющих эту работу автоматически. Ну или почти автоматически 🙂
В нашем обзоре мы будем двигаться от простого к сложному, от доступного — к затруднительному и от автоматического — к ручному. Мне кажется, что с таким подходом люди, которым станет скучно, уйдут и не потеряют ничего важного 🙂
Комплекс Buster Sandbox Analyzer + SandboxIE
SandboxIE — пожалуй, одна из самых перспективных программ-песочниц из имеющихся в открытом доступе. Связано это с рядом факторов, не последними в которых является постоянная поддержка и обновление программы автором, а также доступность бесплатного варианта использования с практически полным функционалом (во всяком случае для наших целей его вполне хватит). Самое главное — это поддержка в SandboxIE подключаемых плагинов, которые расширяют функционал.
Одним из таких плагинов является Buster Sandbox Analyzer или BSA. Этот плагин работает во многом подобно уже обсуждённой CWSandbox — внедряет динамическую библиотеку в адресное пространство исследуемого процесса, позволяя отслеживать API-вызовы в ходе выполнения. Кроме того, программа позволяет отслеживать сетевую активность, производить анализ изменённых файлов и другие полезные вещи.
Чтобы оценить работу этой системы, вначале построим её. Дополнительно нужно будет скачать такие два аддона на SandboxIE: Block Process Access и Antidel. Эти плагины позволяют с одной стороны скрыть от анализируемого процесса наличие других процессов вне песочницы, а с другой — воспрепятствовать удалению файлов в ходе работы (полезно при анализе некоторых дропперов).
1. Устанавливаем SandboxIE.
2. Создаём дополнительную песочницу через Песочница — Создать новую песочницу. Я её назвал BSA — пусть и у вас будет так же для простоты.
3. Правой кнопкой мыши щёлкаем на песочницу BSA в списке окна программы и выбираем Настройки песочницы.
4. Критично:
Поведение — Отображать границу вокруг окна — выбрать красный
Recovery. — Немедленное восстановление — убрать галку И вообще убедиться, что ни одной папки нет в восстановлении.
Delete — поснимать все галки про удаление.
Restrictions — Доступ в Internet — поудалять все программы, пока не появится надпись «Ни одна программа не сможет получить доступ в Internet». Запомните эту опцию — для некоторых зловредов доступ нужно будет открывать, но учтите, что в этом случае все пароли и информация с хостовой машины уйдут злоумышленнику.
Restrictions — Доступ на запуск и выполнение — разрешить всем.
Доступ низкого уровня и аппаратные средства — все галки поснимать. Это важно, иначе низкоуровневые вирусы типа TDSS, Mebratix, Mebroot пролезут из песочницы в систему.
Остальные опции оставить по умолчанию. В дальнейшем можно их настроить на свой вкус — там всё достаточно понятно.
5. В папке, куда установили SandboxIE, создаём папку Buster Sandbox Analyzer, куда распаковываем всё, что скачано выше.
6. Файл LOG_API.DLL переименовываем во что хотите. Я его назвал LAPI.DLL. Также переименовываем HideDriver.sys.
7. В главном окне SandboxIE выбираем Настроить — Редактировать конфигурацию. В открывшемся текстовом документе находим раздел BSA сразу под этими буквами добавляем строки:
InjectDll=C:\Program Files\SandboxIE\Buster Sandbox Analyzer\sbiextra.dll
InjectDll=C:\Program Files\SandboxIE\Buster Sandbox Analyzer\antidel.dll
InjectDll=C:\Program Files\SandboxIE\Buster Sandbox Analyzer\LAPI.dll
OpenWinClass=TFormBSA
Путь у вас, конечно, может отличаться. Но порядок инжектируемых библиотек обязательно должен быть такой!
Теперь обратите внимание на раздел GlobalSettings, а конкретно на параметр FileRootPath:
FileRootPath=C:\Sandbox\%SANDBOX%
(у вас может отличаться).
Запомните его значение.
8. Сохраняем текстовый файл по оригинальному пути. В главном окне SandboxIE выбираем Настроить — Перезагрузить конфигурацию.
9. В главном окне SandboxIE выбираем: Настроить — Интеграция в проводник Windows — Запустить управление SandboxIE — когда запускается программа в песочнице и Действия «запускать в песочнице» — добавить пункт контекстного меню «Запустить в песочнице» для файлов и папок.
10. Запускаем Buster Sandbox Analyzer (вручную, из одноимённой папки путём запуска bsa.exe.
11. Выбираем Options — Analysis mode — Manual и Options — Program Options — Windows Shell Intagration — Add right-click action «Run BSA».
Всё готово для работы.
Как это использовать?
1. Отключаем резидентный антивирус (если имеется).
2. Наводим мышкой на изучаемый процесс и жмём правой кнопкой Run BSA. Откроется окно BSA.
3. Убедитесь, что в строке Sandbox folder to check указана папка, которая совпадает со значением параметра FileRootPath SandboxIE (см. выше), только вместо %SANDBOX% в ней указано BSA. В моём случае при параметре
в BSA должно стоять
4. Нажмите Start Analysis.
5. Наводим мышкой на изучаемый процесс и жмём правой кнопкой Запустить в песочнице. В предлагаемом списке песочниц выбираем BSA.
Всё. Процесс пойдёт. Вы будете видеть лог API-вызовов в BSA и активные процессы в главном окне SandboxIE. Иногда процесс завершится, тогда в BSA жмите Finish Analysis, иногда — его нужно прибить в SandboxIE (например, для файловых инфекторов), выбрав на правой мышкой на активной песочнице BSA Завершить программы.
По окончании BSA выдаст детальный отчёт об изменениях в системе, можно также через Viewer ознакомиться с другими отчётами. Если поставите в систему WinPcap — сможете даже перехватывать пакеты из песочницы, хотя там это не очень здорово организовано, нет, например, персонализации UDP-пакетов. Но если очень хочется — то можно, но при этом на хостовой системе следует заглушить все сетевые приложения, особенно торренты.
После работы, кликнув на песочнице BSA правой мышкой можно выбрать Просмотреть содержимое и изучить все файлы, созданные или изменённые процессом в ходе работы.
Логи BSA и файлы песочницы хранятся до следующего запуска нового процесса на исследование.
Следует заметить, что возможен прямой анализ изменений, вносимых в систему изучаемым файлом. Учитывая то, что виртуализованный реестр хранится C:\Sandbox\%SANDBOX%\RegHive, то перевести его в «понятный» вид крайне просто вот таким командным скриптом:
REG LOAD HKLM\uuusandboxuuu C:\Sandbox\DefaultBox\RegHive
REG EXPORT HKLM\uuusandboxuuu C:\Sandbox\sandbox.reg
REG UNLOAD HKLM\uuusandboxuuu
Только учтите, что «DefaultBox» у каждого будет индивидуален — но об этом уже мы говорили выше.
Полученный файл sandbox.reg будет содержать все внесённые в реестр изменения, которые легко проанализировать.
Возможность SandboxIE инжектировать динамические библиотеки в процесс может быть эффективно использована зловредного кода, выполняемого не в виде PE-исполняемого файла, а виде библиотеки, инжектируемой в адресное пространство процессов или регистрируемой в качестве сервиса. Но об этом — совершенно другой и непростой разговор.
Одним из наиболее распространённых приёмов автоматизации изучения зловредного кода является объединение выполнения ряда операций и утилит на Linux-системе с помощью скриптов Python. Именно так поступил Joxean Koret при создании своего проекта ZeroWine. ZeroWine — это образ виртуальной машины QEmu (который, однако, легко может быть конвертирован для других систем, в том числе VBox и VMWare), построенный на базе Debian. Вредоносный файл можно загрузить через веб-интерфейс, в результате чего он выполняется в среде wine, работа его контролируется рядом утилит, автоматизированных скриптом на Python. В результате, пользователь может получить информацию о вызываемых командах, дампы памяти процесса, перехват сетевых пакетов и др.
Другим «лицом» проекта ZeroWine является ZeroWine-tryouts? в котором внесено несколько дополнительных функций.
К сожалению, использование wine не позволяет полностью создать среду для вредоносов, которая бы соответствовала Windows. В результате этого выполнение кода может быть совершенно не таким, а иногда оно может просто не происходить. Сам автор указывает на ряд недочётов в своей программе, а также на лёгкий способ обнаружения выполнения в среде wine со стороны исследуемого процесса. Да и логи, представленные на скринах на сайте автора вряд ли могут помочь в понимании механизма заражения и планирования процесса лечения, скорее, они представят интерес для аналитика, строящего сигнатурную или поведенческую защиту от зловредов.
От себя хочу добавить, что хоть ZeroWine обновился в декабре прошлого года, мне лично больше понравился старый (с 2009 года) ZeroWine-tryout — может быть из-за более гибкой настройки и управления сканированием, а может быть — потому что он у меня запустился нормально, в отличие от новой версии 🙂
Распределённые системы анализа
Это — наиболее серьёзные и сложные решения аналитического характера. Обычно, распределённые системы представляют собой Linux-систему, работающую как сервер, принимающую и обрабатывающую дампы и логи, получаемые с заражённой Windows-системы. Такой механизм может быть построен в рамке взаимодействия виртуальных машин, либо виртуального Windows-гостя с Linux-хостом. По последнему принципу построен MINIBIS — Вы можете свободно скачать всё необходимое для развёртывания такой системы, базирующейся на выполнении виртуальной Windows XP в среде Ubuntu. Ещё одним интересным подходом является использование гипервизора, как в проекте Ether.
Однако если уж Вы решили заняться данным вопросом серьёзно — наиболее правильным подходом является построение своей собственной системы на базе двух физических машин. При этом Linux-система обычно работает в роли эмулятора сетевого соединения и конечной станции обработки информации, а Windows — как исследуемая база, на которой выполняется зловредный код. В сети свободно распространяются как готовые решения — например Truman, так и примеры Linux-систем, например REMnux и SIFT Workstation.
Безусловно, Вы можете сами создать любую аналогичную систему на базе любимого дистрибутива Linux (настоятельно рекомендую Ubuntu, но не потому что являюсь её фанатом, а потому что к сожалению специализированный софт был заточен под Debian, а сейчас — почти всегда под Ubuntu), дополнив её необходимым софтом и скриптами по образу и подобию описанных выше или по собственному разумению. Однако описание создания таких систем чрезвычайно сложно и длительно, поэтому я приведу ряд ссылок на проекты, которые могут быть интересны и полезны в такой работе.
— Невидимый прокси-сервер для перехвата и анализа http/https-трафика, используемого для связи с C&C и скачивания модулей. Пример — Burp Suite.
— Симулятор интернета, например INetSim.
— Централизованная система восстановления образов, например FOG.
— Система анализа дампов памяти, лучшая имхо тут Volatality Framework.
— Антивирусная система ClamAV для автоматизации классификации найденных зловредов. Я сознательно не пишу коммерческие антивирусы не по причине убеждённости, что ClamAV круче (что неверно), а по причине возможности добавления собственных сигнатур в ClamAV, чего нет в коммерческих вариантах. В крайнем случае можно использовать для тех же целей YARA.
— Утилиты для анализа и деобфускации JS, PDF, Flash, java-скриптов, парсинга файловой системы Windows, работы с сигнатурами файлов и распаковки — всё это есть в большом количестве в сети, описать всё невозможно и всегда является делом вкуса. В частности, ряд таких утилит упомянут на сайте проекта REMnux и входит в его состав.
На этой оптимистической ноте я заканчиваю (?) свой опус, если всё же возникнут вопросы — буду рад отписаться в комментах. Спасибо тем, кто дотерпел и дочитал это до конца 🙂