Как безопасно запустить ненадежный исполняемый файл в Linux?
Я скачал исполняемый файл, скомпилированный сторонним разработчиком, и мне нужно, чтобы он работал на моем компьютере (Ubuntu 16.04 - x64) с полным доступом к ресурсам HW, таким как CPU и GPU (через драйверы nVidia).
Предположим, что этот исполняемый файл содержит вирус или бэкдор, как мне его запустить?
Должен ли я создать нового пользователя, запустить его вместе с ним, а затем удалить самого пользователя?
редактировать
Пока не одобряю ответ ниже, потому что firejail может не работать.
редактировать 2
С firejail все в порядке, но нужно быть предельно осторожным, указав все параметры с точки зрения черного и белого списков. По умолчанию он не выполняет то, что цитируется в этой статье вжурнале linux (см. Также некоторые комментарии от автора firejail).
Будьте предельно осторожны, когда используете его, это может дать вам ложное чувство безопасности без правильных вариантов.
4 ответа
Прежде всего, если это бинарный файл с очень высоким риском... вам придется настроить изолированную физическую машину, запустить двоичный файл, а затем физически уничтожить жесткий диск, материнскую плату и, в основном, все остальные. Потому что в наши дни даже ваш робот-пылесос может распространять вредоносное ПО. А что, если программа уже заразила вашу микроволновую печь через динамик компьютера с помощью высокочастотной передачи данных?!
Но давайте снимем эту шляпу из фольги и немного вернемся к реальности.
Нет виртуализации, быстро использовать: Firejail
Он уже упакован в Ubuntu, он очень маленький, практически не имеет зависимостей.
Как установить на Ubuntu: sudo apt-get install firejail
Веб-сайт: https://firejail.wordpress.com/
Информация о пакете:
Package: firejail
Priority: optional
Section: universe/utils
Installed-Size: 457
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Reiner Herrmann <reiner@reiner-h.de>
Architecture: amd64
Version: 0.9.38-1
Depends: libc6 (>= 2.15)
Filename: pool/universe/f/firejail/firejail_0.9.38-1_amd64.deb
Size: 136284
MD5sum: 81a9a9ef0e094e818eb70152f267b0b6
SHA1: 41d73f8b9d9fd50ef6520dc354825d43ab3cdb16
SHA256: f1cbc1e2191dbe6c5cf4fb0520c7c3d592d631efda21f7ea43ab03a3e8e4b194
Description-en: sandbox to restrict the application environment
Firejail is a SUID security sandbox program that reduces the risk of
security breaches by restricting the running environment of untrusted
applications using Linux namespaces and seccomp-bpf. It allows a
process and all its descendants to have their own private view of the
globally shared kernel resources, such as the network stack, process
table, mount table.
Description-md5: 001e4831e20916b1cb21d90a1306806f
Homepage: https://firejail.wordpress.com
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Мне пришлось запустить подобный "недоверенный" двоичный файл всего несколько дней назад. И мой поиск привел к этой очень крутой маленькой программе.
Виртуализация: KVM, Virtualbox.
Это самая безопасная ставка. В зависимости от двоичного Но эй, смотри выше.
Если его прислал "Мистер Хакер", который является программистом "черного пояса", существует вероятность, что двоичный файл может избежать виртуальной среды.
Бинарный вредоносный код, метод экономии затрат: арендуйте машину! Виртуальный. Примеры поставщиков виртуальных серверов: Amazon (AWS), Microsoft (Azure), DigitalOcean, Linode, Vultr, Ramnode. Вы арендуете машину, запускаете все, что вам нужно, и они их стирают. Большинство крупных провайдеров выставляют счета за час, поэтому это действительно дешево.
Со страницы руководства Firejail:
Without any options, the sandbox consists of a filesystem build in a new mount namespace, and new PID and UTS namespaces. IPC, network and user namespaces can be added using the command line options. The default Firejail filesystem is based on the host filesystem with the main system directories mounted read-only. These directories are /etc, /var, /usr, /bin, /sbin, /lib, /lib32, /libx32 and /lib64. Only /home and /tmp are writable.
Это высокоуровневое описание, есть и другие вещи, например, / boot занесен в черный список, также как и /sbin и / usr /sbin.
https://firejail.wordpress.com/features-3/man-firejail/
Вы также можете посмотреть этот документ: https://firejail.wordpress.com/documentation-2/firefox-guide/ - у них очень хорошее описание файловой системы.
Просто запустите его для отдельной установки - установите отдельную установку на внешний диск или другой жесткий диск, убедитесь, что разделы основной установки не смонтированы (или, что еще лучше, отключите их), и протестируйте. Вы можете сделать резервную копию этой предустановки на случай, если она вам понадобится снова, и сбросить ее, когда закончите.
Это гораздо более надежный метод, чем песочница / тюрьма, и вы можете с уверенностью относиться ко второй установке как к одноразовой и / или использовать ее только при необходимости.
Просто запустите в прямом эфире из ISO
Все изменения файловой системы сохраняются только в оперативной памяти и теряются/сбрасываются при перезагрузке (при условии, что ничего не было записано на какие-либо накопители). Доступ к «голому железу» можно получить напрямую, и не нужно беспокоиться о джейлбрейке или побеге виртуальной машины. Вы ограничены только в/
пространство файловой системы, доступное для записи новых файлов.
Вы также можете полностью отключить основной жесткий диск (если вы беспокоитесь, что он может быть перезаписан, если его не прочитать и не предоставить общий доступ) и запустить ISO с USB-накопителя (например, флэш-накопителя, внешнего жесткого диска) или даже со второго жесткого диска. диск — аналогично ответу Journeyman Geek, но сделать загрузочный USB-накопитель намного проще, чем полную установку (imo).
Если у вас достаточно оперативной памяти (возможно, более 4 ГБ), вы можете скопировать всю файловую систему в оперативную память, а затем отключить USB-накопитель, чтобы даже на USB-накопитель нельзя было записать данные.
- Если поддерживается, опция загрузки для копирования всего в оперативную память часто имеет вид «toram».
Со многими ISO-образами можно даже скопировать файл ISO, например, в загрузочный раздел вашего установленного в данный момент жесткого диска, а затем использовать grub для загрузки напрямую из ISO-образа. Хотя он работает не для каждого ISO, и ему могут потребоваться некоторые специальные параметры загрузки (например, MX-Linux может использовать fromiso=[iso file] blab=[метка раздела] и т. д. Он довольно надежен, имеет инструменты для создания ISO. из работающей системы, запишите ISO на USB-накопитель (сохранение необязательно) и даже выполните «экономную установку», при которой содержимое ISO загружается с раздела жесткого диска).
Остерегайтесь программ, которые автоматически создают загрузочный USB- накопитель.Это сохранит изменения на USB-накопителе, но даже сохранение, вероятно, можно отключить с помощью некоторых параметров загрузки.
Существует прошивка, которая может быть повреждена на вашей материнской плате, накопителях, графических процессорах/видеокартах и, конечно же, сетевых устройствах, если вы планируете передать полный контроль этому загадочному исполняемому файлу. Апач был в основном прав в своем вступлении в шляпе из фольги .