VAULT. что делать?
В связи с широким распространением шифратора VAULT (ранее это были keybtc/paycrypt), который использует для несанкционированного шифрования документов пользователя gpg.exe из состава GnuPG (c последующим предложением о выкупе ключа secring.gpg) есть ли возможность превентивно завершить процесс шифрования? после того пользователь открыл "документ" из электронной почты,а установленные антивирусы сигнатурно и проактивно не заметили ничего подозрительного в запускаемом js скрипте, который или скачивает из сети необходимые модули и файлы для шифрования, или содержит все необходимое в теле js в закодированном base64 виде.
Ссылки
[link1] https://lists.gnupg.org/pipermail/gnupg-devel/2005-December/022558.html
[link2] http://www.gossamer-threads.com/lists/gnupg/users/49116
[link3] https://unix.stackexchange.com/questions/50541/what-does-gpg-error-code-2gpg-err-unknown-packet-mean
[link4] https://www.pgpru.com/comment51726
[link5] https://www.pgpru.com/comment75315
Если червь использует GnuPG в неизменном виде, то есть тривиальное решение — watchdog-процесс, который будет отслеживать запуск процесса с именем gpg.exe и тихонько его прибивать. Однако такую контрмеру можно столь же тривиально обойти. Единственная достаточно надёжная мера — не использовать дырявые ОС и дырявые бразуеры.
злоумышленники здесь используют естественную уязвимость другого рода. мышление.
пользователи сами все скачивают, и сами запускают. их лишь слегка подталкивают к этому методами соц_инженерии.
gpg.exe и iconv.dll как правило скачиваются из сети с другими именами, иногда модуль gpg.exe может быть упакован в UPX для изменения размера,
а после копирования в %temp% юзера эти файлы будут переименованы, например в svchost.exe. поэтому по имени не получится заблокировать процесс.
Я использовал такой метод:
копирую в %temp% из известной ключевой пары pubring.gpg и защищаю его от удаления и перезаписи.
в итоге после запуска исполняемого энкодера, новый ключ не может быть создан, шифрование продолжается, но уже моим ключом.
Без регулярных бэкапов жизни нет. А с ними проблема не так уж чувствительна для бизнеса.
С домашними пользователями виндовс решения я вообще не вижу. Всё равно разрешат и запустят.
А червь такой тупой, что не делает имена временных файлов уникальными. Куда катится мир?..
одно другому не мешает.
здесь все средства хороши:
бэкапы, локальные политики, сигнатуры, правила HIPS, но хотелось бы привязки правил к особенностях работы gpg.exe,
чтобы если один рубеж обойден (политики и сигнатуры), то на пути шифратора срабатывал, другой уровень защиты – HIPS с привязкой к особенностям работы GnuPG.
восстановление из бэкапа – процедура, которая занимает время.
червь то не тупой,
но ключи pubring.gpg, secring.gpg создаются модулем gpg.exe.
даже если он переименован и упакован, то ключи при их создании будут с именами pubring/secring.
(или я не прав?)
на выходе команды здесь все равно будут файлы pubring.gpg и secring.gpg
но при этом со специфичной, добавленной из gk.vlt информацией.
До очередного обновления червя Ваш метод может работать, но ничто не мешает червю создавать связки ключей в той директории, где захочется, и под какими угодно именами, так что в конечном счёте это тупиковый путь.
SATtva, поясните пожалуйста,
может gpg.exe (а злоумышленники сейчас используют легальные модули из GnuPG) создать ключевую пару изначально с другими именами, отличными от pubring/secring?
(понятно, что червь в дальнейшем может их переименовать как угодно)
то что ключи могут быть положены в другой каталог, отличный от %temp% – это понятно.
Да, см. --no-default-keyring, --keyring, --secret-keyring.
Одного этого вполне достаточно в качестве контрмеры со стороны червя.
ок, спасибо, посмотрю.
вот еще вопрос:
есть ли возможность обработать код операции при расшифровки файлов (после VAULT) в командном режиме?
например.
для расшифровки группы файлов на дисках создал небольшой командный файл, в котором используем
следующую конструкцию команд
необходимо учесть момент, если будет ошибка по какой то причине с расшифровкой файла с расширением gpg (после его переименования из vault)
с тем чтобы предотвратить последующую команду удаления файла *.gpg в случае его неуспешной расшифровки по той или иной причине.
чтобы команда удаления del *.gpg выполнялась только после проверки успешности расшифровки данного файла.
есть ли коды, которые gpg.exe возвращает после удачной (или неудачной) расшифровки текущего файла *.gpg?
man gpg:
Да и в сети обсуждений на тему вашего вопроса хватает [1][link1], [2][link2], [3][link3].
pgprubot,
спасибо за ответ.
поясните пожалуйста, как я могу (программно) получить это значение для последующей его проверки в теле программы, и создания блока проверки этого значения на результат 0?
на примере командной строки.
В борн-совместимом шелле как-то так:
примеры есть, конечно,
One way of using the status-fd in linux is as follows:
попробую применить это в bat скрипте
Cчитается, что винда там, где требуется защита информации, точно не нужна. Если вам она всё же нужна, вы что-то делаете не так.
Вы видимо не знакомы с проблемой пользователей от шифратора ВАУЛТ как раз в win
http://chklst.ru/forum/discussion/1481/vault-chto-delat
т.е. мысль здесь простая.
если GnuPG портирован для windows, то в самой архитектуре команд должны быть заложены опции или параметры, которые позволяют гибко управлять процессом дешифровки. Возможно они есть, просто не знаю как их использовать через командный интерпретатор win/ (cmd.exe)
возможно, я неверно сформулировал вопрос:
есть ли возможность (средствами GnuPG) записать результат (успешная расшифровка или нет) выполнения команды?
в файл например, чтобы затем можно было проанализировать результат
с тем, чтобы в зависимости от результата добавить порцию команд.
(уже средствами cmd.exe)
(или не добавить)
ОК, перефразирую мысль. Если вы выбрали своей работой решение вирусопроблем под винду, то могу вам только посочувствовать.
Можно, но, как правило, не нужно. Посмотрите на вышеприведённую ссылку[link3]. Переменная $? содержит результат (код) выполнения команды. Смысла записывать его в файл не вижу, но можете записать. Условие if выполняется, если значение кода возврата нулевое. Если нужно несколько вариантов обработать, либо пишите через elif:
В unix shell статус-код последней операции хранится в специальной переменной $?. Если в винде нет её аналога, то используйте статус-интерфейс gpg, например, --status-file (смотрите документацию и файл DETAILS, где описана спецификация интерфейса). Такой подход предпочтительнее и в nix-системах, т.к. статус-код операции может быть ненулевым из-за каких-то несущественных проблем в среде, даже если сама операция была успешной, то есть такая проверка приводит к false positives (фактически gpg возвращает ненулевой статус-код, если stderr содержит какой-либо вывод).
SATva, благодарю.
этот подход должен работать.
это при успешной расшифровке.
а в случае неуспешной расшифровки такой контент:
этот файл уже можно будет обработать, чтобы принять решение, была ли успешной расшифровка или нет.
если расшифровка была успешной, то можно удалять (зашифрованную копию документа) файл *.gpg с диска.
По каким то причинам, не всегда бывает успешной расшифровка отдельных файлов(даже при наличие правильного ключа) при массовой дешифровки (особенно когда зашифрованы тысячи файлов), и поэтому не стоит их удалять после завершения операции,чтобы не потерять нужные документы.
pgprubot, благодарю.
Теперь ваша мысль стала более объемной. Посмотрю доки, возможно есть переменные, которые формирует gpg.exe в среде Win.
тогда решение по расшифровке может быть более изящным.
А вообще, под Win есть хорошие инструменты для решения вирусопроблем. Universal Virus Sniffer, например. позволяет при определенной работе с ним автоматически создавать скрипты для очистки от зараженных систем.
Но шифраторы здесь, особый случай. Можно найти и удалить файл шифратора, а восстановить документы становится все труднее и труднее. (если нет копий.)
тут все средства хороши:
и проактивная защита+локальные политики безопасности по ограничению запуска исполняемых файлов
и работа под ограниченной учетной записью, там где надо
и анализаторы процессов и автозапуска + хорошие антивирусные сканеры
и защита документов+ бэкапы.
Винда на самом деле, ничуть не дырявее линуксов. Я не припомню когда последний раз эскплуатировалась remote code execution уязвимость в винде. Тем, кто считает, что открытые исходники что-то гарантируют – напомню про Heartbleed и Shellshock.
Для соц. инжинерии вообще без разницы, что за ОС стоит у пользователя. При запуске в линуксе у вредоноса будет достаточно прав, чтобы зашифровать пользовательские документы.
Если на машине есть ценные файлы, то регулярные бекапы обязательны. Помогут не только от вирусов, но и от выхода из строя диска и прочих форс-мажоров.
Тем, кто считает, что открытые исходники ничего не дают, напомню, что Heartbleed и ShellShock в итоге всё же обнаружили, тогда как закрытые компоненты винды в этом плане — тёмный лес.
MS не закрывала критические баги годами несмотря на баг-репорты, пока в паблике не начали ходить эксплоиты. Потом, коммерческая фирма, да ещё с закрытыми исходниками, легко принуждается АНБ и т.п. агенствами к сотрудничеству. Писалось про мнение АНБ: баг не должен быть немедленно закрыт — комапниии должны в первую очередь стучать в АНБ и т.п. конторы, чтобы дать им воспользоваться уязвимостями в их целях. Сотрудничество MS и др. коммерческих компаний с АНБ полностью подтверждается документами Сноудена, а про дыры в оупенсорсе там нет ничего (кроме попыток вовремя писать эксплоиты на найденные дыры в firefox, да иногда быстрее находить в нём дыры). Аргументов тысячи, всем они известны и много раз обсуждались, перечислять лень, проще такие вбросы удалять как толстый троллинг.
А локальное повышение привелегий до админских — это так себе, а не дыра, ага.
со 2 ноября 2015 года ВАУЛТ распространяется через электронную почту в новом варианте:
из закодированного js извлекается exe, который и выполняет тихо всю работу по шифрованию документов. и самоудаляется. не оставляя следов в темпе.
алгоритм шифрвания видимо другой, не openPGP, поскольку при расшифровке файлов с расширением vault gpg.exe не распознает пакет openPGP
в остальном все то же.
оставлен ключ VAULT.key с зашифрованным контентом, который не является пакетом gnuPG,
добавлена в автозапуск заставка hta, с адресом кабинета злоумышленников в tor-сети, с рекомендациями как быстрее получить свои файлы за денежки (биткойны).
Отдельного open-source разработчика еще проще принудить к сотрудничеству.
Одни попытаются предупредить об этом общественность, как автор TrueCrypt ;) Но сколько тех, кто не предупредит? Думается, что на порядок больше.
Как раз таки есть, упоминалась спец программа (не в смысле софт, а в смысле комплекс мероприятий) по внедрению бэкдоров в opensource софт и еще одна программа по внедрению ослаблений в паблик крипто софт.
Кроме того, повторюсь, что для соц инжиниринговых методов, все это не важно. Пользователь сам запустит и даст все права вредоносному приложению.
Именно так происходит большинство APT-атак.
Осталось понять, как обстоят дела с отдельными closed-source разработчиками, сотрудниками коммерческих фирм. 6)
Караул. Мы все умрём.
Кого надо принудить, чтобы у нужного Linux-юзера появился, к примеру, забэкдоренный GnuPG? И как скрыть следы такого принуждения?
В случае прориетарщиков и принуждать никого не надо — с проприетарным софтом всё просто, примерно так:
Ждём пруфов.
Не важно, только зачем нужна социнженерия, когда проще сделать нужный MS-апдейт с полным паком бэкдоров для конкретного юзера?