Мне было интересно, есть ли инструмент или метод для запуска исполняемого файла в изолированной среде, может быть, на виртуальной машине. Во время работы программы я хочу иметь возможность проверять приложение, т.е. видеть все, что делает исполняемый файл (доступ к файлам и сети).
Поступая так, я хочу иметь возможность проверить, является ли исполняемый файл вредоносным, т.е. выполняет операции, которые он не должен (чтение / запись в файлы, прослушивание / подключение к сетевым портам, ...).
Я не против чего-то с графическим интерфейсом.
sandbox somebinary
и воображаемаяsandbox
программа будет записывать все файлы,somebinary
прочитанные или записанные, все IP-адреса / порты, к которым подключены, данные переданы и т. Д. Это было бы полезно иметь, я также хотел бы знать, существует ли что-то подобное (и на самом деле, без такого инструмента наблюдать за программой, работающей на ВМ, было бы бессмысленно, поскольку не могу сказать, что он там делает в любом случае). Хороший вопрос.Ответы:
Да, это называется виртуализация приложений .
LXC (Linux Containers) - это часто используемый инструмент для настройки этого. Это позволяет вам настроить полностью разделенную сеть для этого приложения и «помещать» ее в «виртуальную машину», почти как chroot. Это в основном в целях безопасности («тюрьма»), а не для аудита.
Я думаю, что это немного выходит за рамки вопроса, чтобы объяснить полные контейнеры LXC, а также как точно его проверить. Ниже немного о том, как начать, хотя.
Это можно сделать с помощью,
strace
и я задал тот же вопрос по Unix и Linux:Как там ответили , все сводится к
Важно: как только вы видите, что это происходит, ущерб уже произошел.
LXC контейнер приложений
Из этой статьи . Это сводится к:
lxc-macvlan.conf
Файл конфигурации:Запустите это используя
lxc-execute
:Обратите внимание, что LXC предлагает контейнеры как системного, так и прикладного типа. Вы ищете контейнеры для приложений здесь.
источник
/sys
не виртуализируется, и изменения, сделанные/sys
в контейнере, вносятся/sys
в хост. Делая быстрый поиск в Интернете, есть несколько статей, которые документируют, как «убежать» из контейнера. LXC будет хорошим решением проблемы, но в настоящее время это не так, и его не следует использовать в качестве инструмента безопасности.lxc.mount
опции. Это означает, что файловая система всего пользователя доступна при запуске исполняемого файла.То, что вы ищете, это инструмент, который показывает, как программа взаимодействует с системой (точнее, с ядром). Программы взаимодействуют с системой с помощью системных вызовов. Примеры системных вызовов:
open
- используется для открытия файла;read
иwrite
- используется для чтения / записи из / в дескриптор файла;connect
- используется для подключения сокета к пиру;man syscalls
).Дело в том, что системные вызовы можно отслеживать с помощью
ptrace(2)
. Итак, в основном, вы ищете инструменты, построенные вокругptrace
. Одним из таких инструментов являетсяstrace(1)
терминальное приложение, которое принимает команду в качестве аргумента и выдает:Выход в C-моде. Вот пример:
Там вы видите, что
cat test
открываете файл с именемtest
, читаете его content (hello
) и помещаете его в стандартный вывод.strace
может выдавать много информации, поэтому обязательно прочитайте man-страницу (man strace
), особенно документацию по-e
выводу, которая позволит вам увидеть только те системные вызовы, которые вас интересуют.К сожалению, я не знаю графических или простых в использовании альтернатив. Если вы хотите искать их,
ptrace
должно быть одно из ваших ключевых слов поиска.Что касается изоляции, там много технологий. Chroots, контейнеры Linux (которые в настоящее время находятся в стадии разработки и не завершены), виртуализация программного обеспечения и паравиртуализация являются наиболее используемыми. Однако эта тема слишком велика для обсуждения. Я бы предложил открыть новый вопрос, если вы хотите узнать больше.
источник
Взгляните на AppArmor . Вы можете добавить ограниченный профиль для исполняемого файла и перевести его в режим «жалоб», где действия будут разрешены, но зарегистрированы, что, я думаю, соответствует вашим требованиям.
Но учтите, что этого не достаточно. Умный злонамеренный двоичный файл может обнаружить, что он находится под наблюдением, и не выполнять злонамеренных действий, кроме случаев, когда он не наблюдается.
AppArmor идет дальше этого и позволяет приложению навсегда ограничиться только утвержденными операциями. Приложения, попадающие в Ubuntu Software Center, поставляются с профилями AppArmor.
источник
Как вы определили, виртуальную машину лучше обеспечить изоляцией, особенно если у вас есть основания полагать, что исполняемый файл является вредоносным в первую очередь. Но даже это не идеально, поскольку уязвимости в платформе виртуализации (как аппаратные, так и программные) могут быть использованы злонамеренным кодом для их устранения. Вот пример реальной уязвимости виртуализации: http://www.kb.cert.org/vuls/id/649219
источник
Вы можете создать оснастку .
Моментальные снимки «ограничиваются ОС и другими приложениями с помощью механизмов безопасности, но могут обмениваться контентом и функциями с другими моментальными снимками в соответствии с детальными политиками, контролируемыми пользователем и значениями по умолчанию ОС». (с http://snapcraft.io/docs/snaps/intro )
Они обеспечивают дополнительную изоляцию в дополнение к AppArmor, например, с использованием seccomp .
Кроме того, оснастка может быть автономной для легкого распространения и элементарных обновлений в вашей системе.
источник
Спасибо, ответы были очень полезны ...
Я также нашел это: https://downloads.cuckoosandbox.org/docs/
Это очень интересный инструмент для анализа вредоносных программ, когда они находятся в виртуальной машине
источник