Linux песочница для пользователя

Linux Sandbox

Для будущих студентов курса «Administrator Linux. Professional» и всех интересующихся подготовили статью, автором которой является Александр Колесников.

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

Linux особенности песочниц

Основная проблема песочниц ОС Linux для анализа приложений это ограниченная поддержка процессоров, на которых работает операционная система. Так как использовать для каждой архитектуры свою физическую машину весьма дорого. То как компромисс используют виртуализированные решения типа Hyper-V, VMWare или VBox. Эти решения достаточно хорошо справляются со своей задачей, но они позволяют проводить виртуализацию только на той архитектуре, на которой работает основной хост. Чтобы запустить код для ARM, MIPS и других архитектур, придется обращаться к другим продуктам, которые могут эмулировать необходимые команды процессора. Попробуем собрать как можно больше проектов и посмотреть какие архитектуры процессоров поддерживаются.

Cuckoo Sandbox

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

Эта песочница очень популярна для анализа вредоносного программного обеспечения для ОС Windows. Разработчики утверждают, что она так же может работать и с ОС Linux. Разница только будет заключаться в том, что вместо виртуальной машины на Windows, должна быть настроена виртуальная машина на Linux. Попробуем найти еще аналоги.

LiSA Sandbox

Opensource песочница для анализа кода под ОС Linux. Найти репозиторий песочницы можно тут. Документация гласит, что эта песочница может анализировать исполняемые файлы с платформ:

Подобная эмуляция возможна из-за использования эмулятора Qemu. Также песочница предлагает статический и динамический анализ исполняемого файла. Статический анализ производится за счёт инструмента radare2, а динамический за счет специального расширения ядра, которое собирает события взаимодействия с ОС: файловые операции, сетевые взаимодействия, запуск команд и процессов. В документации описывается, что поддержка такого большого количества процессоров позволяет работать с прошивками устройств. То есть можно просмотреть что выполняет программное обеспечение, которое будет записано на IoT устройства. Весьма полезная фича, учитывая, что вредоносы могут быть записаны в образ прошивки устройств и работать там на постоянной основе.

Из особенностей — использование контейнеров Docker. Это качественно ускоряет настройку песочницы. Интерфейс песочницы:

Limon Sandbox

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

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

drakvuf Sandbox

Найти репозиторий можно тут. Единственный набор инструментов, который не направлен специально на исследование вредоносного кода. Этот набор используется для изучения программного обеспечения в целом. Записываемые артефакты выполнения приложений настолько подробны, что можно анализировать и вредоносное программное обеспечение. Документация гласит, что этот набор инструментов может работать практически со всеми популярными ОС. Единственное условие, которое нужно выполнить на устройстве — вложенная виртуализация. Все действия песочницы реализуются за счет перехвата системных функций ОС, которая используется в качестве хостовой для исследуемого приложения. К сожалению, для просмотра данных песочницы необходимо самостоятельно парсить данные из json.

Detux

Репозиторий песочницы можно найти здесь. Песочница для анализа вредоносного кода. Умеет анализировать следующие архитектуры:

В качестве базового гипервизора используется проект Qemu. Песочница автоматически собирает трафик и идентификаторы компрометации. Вся информация помещается в отчет. В отличии от аналогов не предоставляет красивого интерфейса, а записывает всё в отчет в формате json.

Как видно из списка выше, выбор хоть и небольшой среди песочниц все-таки есть. Однако, набор инструментов практически везде одинаковый:

Читайте также:  Huawei mediapad установить windows

кастомный перехватчик для системных вызовов.

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

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

Источник

Linux Sandbox

Для будущих студентов курса «Administrator Linux. Professional» и всех интересующихся подготовили статью, автором которой является Александр Колесников.

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

Linux особенности песочниц

Основная проблема песочниц ОС Linux для анализа приложений это ограниченная поддержка процессоров, на которых работает операционная система. Так как использовать для каждой архитектуры свою физическую машину весьма дорого. То как компромисс используют виртуализированные решения типа Hyper-V, VMWare или VBox. Эти решения достаточно хорошо справляются со своей задачей, но они позволяют проводить виртуализацию только на той архитектуре, на которой работает основной хост. Чтобы запустить код для ARM, MIPS и других архитектур, придется обращаться к другим продуктам, которые могут эмулировать необходимые команды процессора. Попробуем собрать как можно больше проектов и посмотреть какие архитектуры процессоров поддерживаются.

Cuckoo Sandbox

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

Эта песочница очень популярна для анализа вредоносного программного обеспечения для ОС Windows. Разработчики утверждают, что она так же может работать и с ОС Linux. Разница только будет заключаться в том, что вместо виртуальной машины на Windows, должна быть настроена виртуальная машина на Linux. Попробуем найти еще аналоги.

LiSA Sandbox

Opensource песочница для анализа кода под ОС Linux. Найти репозиторий песочницы можно тут. Документация гласит, что эта песочница может анализировать исполняемые файлы с платформ:

Подобная эмуляция возможна из-за использования эмулятора Qemu. Также песочница предлагает статический и динамический анализ исполняемого файла. Статический анализ производится за счёт инструмента radare2, а динамический за счет специального расширения ядра, которое собирает события взаимодействия с ОС: файловые операции, сетевые взаимодействия, запуск команд и процессов. В документации описывается, что поддержка такого большого количества процессоров позволяет работать с прошивками устройств. То есть можно просмотреть что выполняет программное обеспечение, которое будет записано на IoT устройства. Весьма полезная фича, учитывая, что вредоносы могут быть записаны в образ прошивки устройств и работать там на постоянной основе.

Из особенностей — использование контейнеров Docker. Это качественно ускоряет настройку песочницы. Интерфейс песочницы:

Limon Sandbox

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

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

drakvuf Sandbox

Найти репозиторий можно тут. Единственный набор инструментов, который не направлен специально на исследование вредоносного кода. Этот набор используется для изучения программного обеспечения в целом. Записываемые артефакты выполнения приложений настолько подробны, что можно анализировать и вредоносное программное обеспечение. Документация гласит, что этот набор инструментов может работать практически со всеми популярными ОС. Единственное условие, которое нужно выполнить на устройстве — вложенная виртуализация. Все действия песочницы реализуются за счет перехвата системных функций ОС, которая используется в качестве хостовой для исследуемого приложения. К сожалению, для просмотра данных песочницы необходимо самостоятельно парсить данные из json.

Detux

Репозиторий песочницы можно найти здесь. Песочница для анализа вредоносного кода. Умеет анализировать следующие архитектуры:

В качестве базового гипервизора используется проект Qemu. Песочница автоматически собирает трафик и идентификаторы компрометации. Вся информация помещается в отчет. В отличии от аналогов не предоставляет красивого интерфейса, а записывает всё в отчет в формате json.

Читайте также:  Вкладка мои файлы mac os

Как видно из списка выше, выбор хоть и небольшой среди песочниц все-таки есть. Однако, набор инструментов практически везде одинаковый:

кастомный перехватчик для системных вызовов.

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

Узнать больше о курсе «Administrator Linux. Professional«.

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

Источник

Песочница в Linux

Я хочу создать веб-приложение, которое позволит пользователю загружать программы на C, и увидеть результаты ее выполнения (код будет скомпилирован на сервере). Пользователи ненадежны, что, очевидно, имеет некоторые огромные последствия для безопасности.

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

загруженные программы будут довольно маленькими, поэтому они должны выполняться быстро (максимум пару секунд). Следовательно, я могу убить процесс после заданного таймаута, но как я могу гарантировать, что он не породит новые процессы? Или, если я не могу, является ли убийство всего pgid надежным методом?

Что было бы лучшим способом сделать это-кроме как «не делать этого вообще»? 🙂 Какие другие вопиющие проблемы безопасности я пропустил?

FWIW, веб-приложение будет написано на Python.

12 ответов

наряду с другими sugestions вы можете найти это полезным.

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

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

часть потехи как безопасно отрегулировать исполнение.

моя ОС-FreeBSD, поэтому я бы настроил предварительно настроенную тюрьму (не путать с ванильной тюрьмой chroot), которая будет компилировать, запускать и сохранять вывод. Затем для каждого представления исходного файла запустите нетронутую копию тюрьмы для каждого выполнения с копией исходного файла внутри.

при условии, что jail’s /dev обрезается почти до нуля, ограничения системных ресурсов устанавливаются безопасно, и что трафик не может выйти из тюрьмы (привязан к unroutable address или просто firewalled), мне лично было бы удобно запускать это на сервере под моей опекой.

поскольку вы используете Linux, я бы исследовал пользовательский режим Linux или Linux-VServer, которые очень похожи по концепции на тюрьмы FreeBSD (я никогда не использовал их сам, но читал о них). Есть несколько других таких систем, перечисленных здесь.

этот метод гораздо более безопасен, чем ванильная тюрьма chroot, и он намного легче, чем использование полной виртуализации, такой как qemu/kvm или VMware.

Я не программист, поэтому я не знаю, какую вещь AJAX-y вы могли бы использовать для опроса результатов, но я уверен, что это можно сделать. Как администратор, я бы нашел этот забавный проект, чтобы принять участие в. Повеселись. 🙂

Я бы сказал, что это крайне опасно на многих уровнях. Вы по существу открываете себя для любого эксплойта, который можно найти в вашей системе (в то время как вы обычно ограничены теми, которые люди могут использовать удаленно). Я бы сказал, Не делай этого, если можешь этого избежать.

Если вы хотите это сделать, вы можете использовать какую-то виртуальную машину для запуска кода пользователя. Используя что-то вроде КВМ можно настроить несколько виртуальных машин, используя одну и ту же базу изображение (вы даже можете сохранить снимок в уже загруженном состоянии, хотя я не уверен, как он будет обрабатывать клонирование). Затем вы можете создать VMs по требованию, запустить код пользователя, вернуть результаты, а затем убить виртуальную машину. Если вы держите виртуальные машины изолированными друг от друга и от сети, пользователи могут нанести любой ущерб, который они хотят, и это не повредит вашему физическому серверу. Единственная опасность, которой вы подвергаете себя в этих условиях, — это какой-то подвиг, который позволяет им убежать от виртуальная память. они чрезвычайно редки и будут более редкими по мере улучшения виртуализации оборудования.

Читайте также:  Как включить виртуальный рабочий стол windows 10

хотя он все еще находится в разработке, и пока не считается безопасным, вы можете проверить технологии Собственный Клиент Google. Он предназначен для запуска ненадежного собственного кода в веб-браузере, но, вероятно, может быть адаптирован для использования на веб-сервере. Вы можете использовать что-то подобное поверх других методов, таких как виртуальная машина, для дополнительной безопасности.

On Fedora 11, есть Песочница SELinux который, похоже, делает именно то, что вы хотите (за исключением, возможно, ограничения новых процессов; в связанном блоге об этом не упоминается).

конечно, всегда есть риск ошибок ядра; даже с SELinux, части ядра по-прежнему подвержены всем процессам.

посмотреть эта страница о методах песочницы Google Chrome для Linux. Как вы можете видеть, существует множество методов, но ни один из них не подходит для распространяемого приложения, такого как Chrome, потому что некоторые дистрибутивы могут их не включать. Это не проблема для веб-приложения, потому что вы можете контролировать то, что установлено на вашем сервере.

лично мой любимый Seccomp, потому что у него есть очень низкие накладные расходы по сравнению с другие инструменты, такие как ptrace (переключение адресных пространств на каждый syscall!) или KVM (Big memory hungry virtual machine), и это невероятно просто по сравнению с такими инструментами, как SELinux (и, следовательно, более вероятно, будет безопасным).

Я думаю libsandbox служит своей цели. Его основная библиотека написана для C / C++, но она также имеет оболочку для программ Python. Он предоставляет опции для настройки, какие системные вызовы могут быть разрешены, сколько памяти можно использовать, как долго можно запускать гостевую программу и т. д. Он уже используется в нескольких онлайн-судей, таких как HOJ.

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

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

создание новой виртуальной машины под KVM или qemu для компиляции и запуска кода выглядит как путь. Запуск кода под jail / LXC может скомпрометировать машину, если она использует незащищенные части ОС, такие как сетевой код. Преимущество работы под виртуальной машиной очевидно. Можно взломать только виртуальную машину, но не саму машину. Но побочный эффект — вам нужно много ресурсов (процессор и память), чтобы создать виртуальную машину для каждого запроса.

в ptrace-на основании заключения для ненадежных программ можно использовать, как описано в http://www.cs.vu.nl/

у них есть правило политики изменения корней, CHRDIR, эффект которого аналогичен chroot. (Раздел «Политика тюремного заключения»)

однако они, возможно, не опубликовали свой исходный код (частично на основе измененной strace http://www.liacs.nl /

см. также другие доступные подходы на основе ptrace к chroot-in-userpace:https://unix.stackexchange.com/a/72697/4319

о единственном шансе, который у вас есть, это запуск VirtualMachine, и у них могут быть уязвимости. Если вы хотите, чтобы ваша машина взломана в краткосрочной перспективе, просто используйте разрешения и сделайте специального пользователя с доступом к одному каталогу. Если вы хотите отложить взлом на какой-то момент в будущем, запустите веб-сервер внутри виртуальной машины и перенесите его. Вы захотите сохранить резервную копию этого, потому что у вас, вероятно, будет взломан менее чем за час и вы захотите перезапустить свежий копию каждые несколько часов. Вы также захотите сохранить изображение всей машины, чтобы просто переосмыслить все это раз в неделю или около того, чтобы преодолеть еженедельные взломы. Не позволяйте этой машине разговаривать с любой другой машиной в вашей сети. Черный список везде. Я говорю о виртуальной машине и IP-адресах физической машины. Регулярно проводите аудит безопасности на любых других компьютерах в сети. Переименуйте машины IHaveBeenHacked1 и IHaveBeenHacked2 и запретить доступ к спискам хостов и брандмауэрам.

таким образом, вы можете отложить свой уровень взлома на некоторое время.

Источник

Оцените статью