Шифровальщик, который смог.

Posted: 2019-06-15 in IT, Security
Метки:, ,

Всем привет. Сегодня мы поговорим о безопасности WINE и важности изоляции вайн-префиксов.

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

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

Одной из таких точек возникновения опасности являются вайн-префиксы ~/.wine или каталог из переменной WINEPREFIX.
Дело в том, что по умолчанию (ради удобства ?) в префикс вайна добавляется вся файловая система как диск Z: -> [ / ]. Это удобно, но это же создаёт ощутимые риски утечки или порчи данных в случае, если запускаемый в вайне сторонний софт окажется неблагонадёжным.

Буквально на днях я пообщался с одним чёрным сумрачным злодеем коллегой, у которого на предприятии впервые за 10 с лишним лет произошел небольшой инцидент с вирусом-шифровальщиком. Оказалось, что на некоторых машинах использовался древний виндовс-софт, написанный ещё на древних дельфях под виндовс-98. Софт этот массово давно уже не используется, однако хранимые в нём архивные данные весьма ценны для компании, чтобы с ним можно было просто так расстаться.

Для его запуска использовался дефолтный префикс вайна (в своё время ОБЭП, массовые проверки юрлиц, простимулированные микрософтом, и попытки изъятия серверов под предлогом проверки лицензионности очень помогли этому предприятию заняться линуксячьим импортозамещением и массовым истреблением платного софта), которому были доступны внутренний диск C:, каталог загрузок и один из каталогов сетевого хранилища, куда эта архаичная убер-софтень выгружала данные.

Один из менеджеров ухитрился скачать в каталог загрузок вредоносное говно из почты и его запустить!! в том же дефолтном вайн-префиксе, где и размещалась архаичная дельфо-софтень. Вирус оказался написан качественно — его совершенно не смутил тот факт, что система представлялась как виндовс-98, причём крайне обрезанная виндовс-98 без IE, аутглюка и половины привычных библиотек. Данные в каталоге загрузок и каталоге на сетевом сервере моментально сдохли, превратившись в бинарное месиво из файлов со странными расширениями =) .

Так что даже там, где обычный софт может не сработать (попробуйте найти современный софт, стартующий на эмулированной и порезанной виндовс-98 !), вирусня, носящая всё необходимое с собой, вполне может активироваться при отсутствии требуемой паранойи.

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

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

Сами разработчики вайна открыто пишут, что их цель — обеспечить запускаемость виндовс-приложений, но не гарантировать безопасность и изоляцию от вредоносного софта ! Считается, что пользователь достаточно разумен, чтобы запускать там только чистый, доверенный софт. WinAPI оказалось слишком развесистым и сложным, чтобы при трансляции каждой из тысяч функций быть надёжно уверенным в её 100% безопасности выполнения.
Изоляция путей решает часть таких проблем, но не является 100%-й !

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

Дело в том, что запущенный в вайне софт не может обойти стандартные линукс-пермишены (если и может, то цена на эскплоит будет семизначной). Если вы от пользователя test сделаете вайн-префикс, и даже сделаете в нём доступной всю ФС : Z: -> [ / ] , то зайти в /home/Amin у софта не выйдет (я подразумеваю, что в домашнем каталоге права выставлены по уму в 700 или 770), а поменять что-либо в системных файлах тоже не получится. Но даже если вы просто сделаете удаление лишних путей в настройках дисков, оставив приложению только его виртуальный диск C: — это уже очень сильно сократит возможности софту повредить или отослать злоумышленникам ваши ценные файлы.

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

1). # ls -la /etc/skel
lrwxrwxrwx. 1 root root 9 июн 16 00:08 /etc/skel/.wine -> /dev/null

Каталог /etc/skel — это шаблон домашнего каталога нового пользователя.
Сделайте там симлинку с именем .wine, ведущую в /dev/null с помощью файлового менеджера или командой:
ln -s /dev/null /etc/skel/.wine

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

2). Проделайте тоже самое для существующих префиксов.
Если у вас уже есть префикс ~/.wine — переименуйте его, и исправьте пути в ярлыках.
Команда запуска должна начать выглядеть как-то так:

env WINEPREFIX="/home/Amin/.wine_wolf2newcoloss" /usr/bin/wine C:\\windows\\command\\start.exe /Unix /home/Amin/.wine_wolf2newcoloss/dosdevices/c:/ProgramData/Microsoft/Windows/Start\ Menu/Programs/R.G.\ Mechanics/Wolfenstein\ II\ -\ The\ New\ Colossus/Играть\ Wolfenstein\ II\ -\ The\ New\ Colossus.lnk

То есть задается переменная WINEPREFIX с путем к префиксу, и правится полный путь к запускаемой аппликухе.

После чего сделайте так для каждого уже существующего пользователя:

ln -s /dev/null /home/Amin/.wine
ln -s /dev/null /home/other_user1/.wine

Это сделает невозможным запуск скачанных виндовс-файлов в дефолтном вайн-префиксе по случайному щелчку, но никак не помешает запуску уже установленных приложений.

Хинт: если запустить инсталлятор игры сразу в нужном вайн-префиксе, то все необходимые параметры будут добавлены в ярлыки запуска автоматически. Это удобно.

3). Каждой игре — свою псевдо-виндовс. Современные игрухи (да и не только, современный софт под виндовс та ещё помойка) любят обильно надристать в реестр, файловую систему и профиль пользователя, поставить свой директ-хэ, высушил-студия-с++-рантаймы, либы и прочую нечисть. Жесткие диски сейчас дешевы. Да, каждый вайн-префикс — это ~400Мб на c:\windows. Но что такое сейчас 400 Мб на фоне 45 Гб, которые весит тот же последний вульф ? Меньше процента ! Зато в случае инцидента взбесившаяся игруха испортит разве что саму себя, но не другие профили, не говоря уже об основных данных пользователя !
Да и при удалении пройденной / надоевшей игры вам не придется долго вычищать её останки.

4). winetricks — sandbox
Скрипт winetricks сильно облегчает жизнь, если вы хотите запустить что-то в вайне, поставить дополнительные компоненты или совершить ещё какое непотребство, и содержит массу полезных настроек, собранных в одном интерфейсе. sandbox советую.

5). Особый изыск — сделать отдельного пользователя и наложить на него отдельного SELinux-юзера с куда более строгоими ограничениями. Это непроверенный сценарий, и думаю, от такого надругательства и без того хрупкий софт может совсем сломаться. Но это идея для дальнейших гурманистических изысканий.

6). Если софту не нужен доступ к GPU и железу — нафиг вайн, пусть коптится в виртуалке. Если софт не нуждается в этом и всё равно не хочет в виртуалку — в помойку его, без сожаления. В 2019 году совместимость с виртуализацией — обязательный атрибут качественного софта.

Ну и ещё одна заметка на подобную тему:
Как защитить Ubuntu от вируса-шифровальщика

Будьте бдительны и осторожны.

- комментарии
  1. […] сконфигурен по умолчанию, что может создавать некоторые риски. Я бы диск Z: удалил =) В отличии от прошлой древней […]

  2. […] Альт-Образование 8.2… к записи Шифровальщик, который смог. […]