VAULT. что делать?


В связи с широким распространением шифратора VAULT (ранее это были keybtc/paycrypt), который использует для несанкционированного шифрования документов пользователя gpg.exe из состава GnuPG (c последующим предложением о выкупе ключа secring.gpg) есть ли возможность превентивно завершить процесс шифрования? после того пользователь открыл "документ" из электронной почты,а установленные антивирусы сигнатурно и проактивно не заметили ничего подозрительного в запускаемом js скрипте, который или скачивает из сети необходимые модули и файлы для шифрования, или содержит все необходимое в теле js в закодированном base64 виде.


Комментарии
— SATtva (29/04/2015 08:24)   
Если червь использует GnuPG в неизменном виде, то есть тривиальное решение — watchdog-процесс, который будет отслеживать запуск процесса с именем gpg.exe и тихонько его прибивать. Однако такую контрмеру можно столь же тривиально обойти. Единственная достаточно надёжная мера — не использовать дырявые ОС и дырявые бразуеры.
— safety (29/04/2015 08:36, исправлен 29/04/2015 08:38)   

злоумышленники здесь используют естественную уязвимость другого рода. мышление.


Здравствуйте,
Директор распорядился провести сверки со всеми контрагентами (по состоянию на 01.03.2015 года).
Отправляю Вам Акт сверки взаиморасчетов за указанный период (во вложении). Прошу рассмотреть и завизировать документ.
Перешлите нам (если возможно, до конца дня) подписанный экземпляр или ваши замечания.

Прикрепленные файлы (1):
1. Акт сверки (01.03.2015).zip


--
С уважением начальник коммерческого отдела
ООО «Механический завод» г.Бийск
Татаринова Лариса Владимировна

пользователи сами все скачивают, и сами запускают. их лишь слегка подталкивают к этому методами соц_инженерии.


gpg.exe и iconv.dll как правило скачиваются из сети с другими именами, иногда модуль gpg.exe может быть упакован в UPX для изменения размера,
а после копирования в %temp% юзера эти файлы будут переименованы, например в svchost.exe. поэтому по имени не получится заблокировать процесс.
Я использовал такой метод:
копирую в %temp% из известной ключевой пары pubring.gpg и защищаю его от удаления и перезаписи.
в итоге после запуска исполняемого энкодера, новый ключ не может быть создан, шифрование продолжается, но уже моим ключом.

Гость (29/04/2015 12:08)   
Без регулярных бэкапов жизни нет. А с ними проблема не так уж чувствительна для бизнеса.

С домашними пользователями виндовс решения я вообще не вижу. Всё равно разрешат и запустят.
— sentaus (29/04/2015 12:16, исправлен 29/04/2015 12:16)   
Я использовал такой метод:
копирую в %temp% из известной ключевой пары pubring.gpg и защищаю его от удаления и перезаписи.

А червь такой тупой, что не делает имена временных файлов уникальными. Куда катится мир?..

— safety (29/04/2015 12:17)   
одно другому не мешает.
здесь все средства хороши:
бэкапы, локальные политики, сигнатуры, правила HIPS, но хотелось бы привязки правил к особенностях работы gpg.exe,
чтобы если один рубеж обойден (политики и сигнатуры), то на пути шифратора срабатывал, другой уровень защиты – HIPS с привязкой к особенностям работы GnuPG.

восстановление из бэкапа – процедура, которая занимает время.
— safety (29/04/2015 12:22, исправлен 29/04/2015 12:38)   
А червь такой тупой, что не делает имена временных файлов уникальными. Куда катится мир?..

червь то не тупой,
но ключи pubring.gpg, secring.gpg создаются модулем gpg.exe.
даже если он переименован и упакован, то ключи при их создании будут с именами pubring/secring.
(или я не прав?)


на выходе команды здесь все равно будут файлы pubring.gpg и secring.gpg
но при этом со специфичной, добавленной из gk.vlt информацией.


echo Key-Type: RSA> "%temp%\gk.vlt"
echo Key-Length: 1024>> "%temp%\gk.vlt"
echo Name-Real: Cellar>> "%temp%\gk.vlt"
echo Name-Comment: Cellar>> "%temp%\gk.vlt"
echo Name-Email: v@u.lt>> "%temp%\gk.vlt"
"%temp%\svchost.exe" -batch -homedir "%temp%" -gen-key "%temp%\gk.vlt"

— SATtva (29/04/2015 13:20)   

До очередного обновления червя Ваш метод может работать, но ничто не мешает червю создавать связки ключей в той директории, где захочется, и под какими угодно именами, так что в конечном счёте это тупиковый путь.
— safety (29/04/2015 13:25, исправлен 29/04/2015 13:30)   

SATtva, поясните пожалуйста,


может gpg.exe (а злоумышленники сейчас используют легальные модули из GnuPG) создать ключевую пару изначально с другими именами, отличными от pubring/secring?
(понятно, что червь в дальнейшем может их переименовать как угодно)
то что ключи могут быть положены в другой каталог, отличный от %temp% – это понятно.

— SATtva (29/04/2015 13:34, исправлен 29/04/2015 13:34)   

Да, см. --no-default-keyring, --keyring, --secret-keyring.



Одного этого вполне достаточно в качестве контрмеры со стороны червя.

— safety (29/04/2015 13:42, исправлен 29/04/2015 13:43)   

ок, спасибо, посмотрю.

— safety (31/10/2015 21:08)   
вот еще вопрос:
есть ли возможность обработать код операции при расшифровки файлов (после VAULT) в командном режиме?
например.
для расшифровки группы файлов на дисках создал небольшой командный файл, в котором используем
следующую конструкцию команд



необходимо учесть момент, если будет ошибка по какой то причине с расшифровкой файла с расширением gpg (после его переименования из vault)
с тем чтобы предотвратить последующую команду удаления файла *.gpg в случае его неуспешной расшифровки по той или иной причине.

чтобы команда удаления del *.gpg выполнялась только после проверки успешности расшифровки данного файла.

есть ли коды, которые gpg.exe возвращает после удачной (или неудачной) расшифровки текущего файла *.gpg?
— pgprubot (31/10/2015 22:20)   

man gpg:

RETURN VALUE
The program returns 0 if everything was fine, 1 if at least a signature was bad, and other error codes for fatal errors.

Да и в сети обсуждений на тему вашего вопроса хватает [1][link1], [2][link2], [3][link3].
— safety (01/11/2015 05:53, исправлен 01/11/2015 09:11)   

pgprubot,
спасибо за ответ.

0 is success (all other values indicate a failure).
2 is usually used for unxpected errors.
1 for things like a BAD signature.

поясните пожалуйста, как я могу (программно) получить это значение для последующей его проверки в теле программы, и создания блока проверки этого значения на результат 0?


на примере командной строки.

— pgprubot (01/11/2015 05:58, исправлен 01/11/2015 06:00)   

В борн-совместимом шелле как-то так:

if gpg [опции] ; then
    your commands for the case 0
fi
(но надо тестировать). Как в вашем шелле — не знаю, но знаю, что в винде можно установить tcsh и писать скрипты на нём. По мною данным ссылкам, кстати, тоже есть примеры скриптов.

— safety (01/11/2015 06:07, исправлен 01/11/2015 06:08)   

примеры есть, конечно,
One way of using the status-fd in linux is as follows:



попробую применить это в bat скрипте

— pgprubot (01/11/2015 06:12, исправлен 01/11/2015 06:14)   

Cчитается, что винда там, где требуется защита информации, точно не нужна. Если вам она всё же нужна, вы что-то делаете не так.

— safety (01/11/2015 06:23, исправлен 01/11/2015 08:44)   

Вы видимо не знакомы с проблемой пользователей от шифратора ВАУЛТ как раз в win
http://chklst.ru/forum/discussion/1481/vault-chto-delat


т.е. мысль здесь простая.
если GnuPG портирован для windows, то в самой архитектуре команд должны быть заложены опции или параметры, которые позволяют гибко управлять процессом дешифровки. Возможно они есть, просто не знаю как их использовать через командный интерпретатор win/ (cmd.exe)

— safety (01/11/2015 11:00, исправлен 01/11/2015 11:02)   

возможно, я неверно сформулировал вопрос:


есть ли возможность (средствами GnuPG) записать результат (успешная расшифровка или нет) выполнения команды?


в файл например, чтобы затем можно было проанализировать результат
с тем, чтобы в зависимости от результата добавить порцию команд.
(уже средствами cmd.exe)
(или не добавить)

— pgprubot (01/11/2015 11:21, исправлен 01/11/2015 11:23)   

ОК, перефразирую мысль. Если вы выбрали своей работой решение вирусопроблем под винду, то могу вам только посочувствовать.



Можно, но, как правило, не нужно. Посмотрите на вышеприведённую ссылку[link3]. Переменная $? содержит результат (код) выполнения команды. Смысла записывать его в файл не вижу, но можете записать. Условие if выполняется, если значение кода возврата нулевое. Если нужно несколько вариантов обработать, либо пишите через elif:

if [ $? -eq 0 ] ; then
    commands for case 0
elif [ $? -eq 1 ] ; then
    commands for case 1
elif [ $? -eq 2 ] ; then
    commands for case 2
fi
либо через case/esac:
case $? in 
    0)
        commands for case 0
        ;;
    1)
        commands for case 1
        ;;
    2)
        commands for case 2
        ;;
esac
В борн-совместимых шеллах в UNIX всё так. Такие же ли коды возврата в винде — не знаю, как это адаптировать под виндошелл — тоже.

— SATtva (01/11/2015 11:24, исправлен 01/11/2015 11:25)   

В unix shell статус-код последней операции хранится в специальной переменной $?. Если в винде нет её аналога, то используйте статус-интерфейс gpg, например, --status-file (смотрите документацию и файл DETAILS, где описана спецификация интерфейса). Такой подход предпочтительнее и в nix-системах, т.к. статус-код операции может быть ненулевым из-за каких-то несущественных проблем в среде, даже если сама операция была успешной, то есть такая проверка приводит к false positives (фактически gpg возвращает ненулевой статус-код, если stderr содержит какой-либо вывод).

— safety (01/11/2015 11:54, исправлен 01/11/2015 12:20)   

SATva, благодарю.
этот подход должен работать.


[GNUPG:] FILE_START 3 E:\deshifr\VAULT\4_Инструкция по порядку заполнения страхового полиса_Ничего лишнего.doc.gpg
[GNUPG:] ENC_TO FF30D0AE5E72AD83 1 0
[GNUPG:] GOOD_PASSPHRASE
[GNUPG:] BEGIN_DECRYPTION
[GNUPG:] DECRYPTION_INFO 2 9
[GNUPG:] PLAINTEXT 62 1445938784 4_Èíñòðóêöèÿ%20ïî%20ïîðÿäêó%20çàïîëíåíèÿ%20ñòðàõîâîãî%20ïîëèñà_Íè÷åãî%20ëèøíåãî.doc
[GNUPG:] PLAINTEXT_LENGTH 88576
[GNUPG:] DECRYPTION_OKAY
[GNUPG:] GOODMDC
[GNUPG:] END_DECRYPTION
[GNUPG:] FILE_DONE

это при успешной расшифровке.


а в случае неуспешной расшифровки такой контент:

[GNUPG:] FILE_START 3 E:\deshifr\VAULT\21550.xls.gpg
[GNUPG:] ENC_TO 0455772A912609CA 1 0
[GNUPG:] BEGIN_DECRYPTION
[GNUPG:] DECRYPTION_FAILED
[GNUPG:] END_DECRYPTION
[GNUPG:] FILE_DONE

этот файл уже можно будет обработать, чтобы принять решение, была ли успешной расшифровка или нет.
если расшифровка была успешной, то можно удалять (зашифрованную копию документа) файл *.gpg с диска.
По каким то причинам, не всегда бывает успешной расшифровка отдельных файлов(даже при наличие правильного ключа) при массовой дешифровки (особенно когда зашифрованы тысячи файлов), и поэтому не стоит их удалять после завершения операции,чтобы не потерять нужные документы.

— safety (01/11/2015 12:27, исправлен 01/11/2015 12:27)   

pgprubot, благодарю.
Теперь ваша мысль стала более объемной. Посмотрю доки, возможно есть переменные, которые формирует gpg.exe в среде Win.


тогда решение по расшифровке может быть более изящным.
А вообще, под Win есть хорошие инструменты для решения вирусопроблем. Universal Virus Sniffer, например. позволяет при определенной работе с ним автоматически создавать скрипты для очистки от зараженных систем.
Но шифраторы здесь, особый случай. Можно найти и удалить файл шифратора, а восстановить документы становится все труднее и труднее. (если нет копий.)

— pgprubot (02/11/2015 02:37)   

Г[link4]рамотная настройка привилегий в том же Windows даст лучший результат.
— safety (02/11/2015 09:51, исправлен 02/11/2015 09:52)   

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

— K10 (03/11/2015 05:06, исправлен 03/11/2015 05:07)   

Винда на самом деле, ничуть не дырявее линуксов. Я не припомню когда последний раз эскплуатировалась remote code execution уязвимость в винде. Тем, кто считает, что открытые исходники что-то гарантируют – напомню про Heartbleed и Shellshock.
Для соц. инжинерии вообще без разницы, что за ОС стоит у пользователя. При запуске в линуксе у вредоноса будет достаточно прав, чтобы зашифровать пользовательские документы.
Если на машине есть ценные файлы, то регулярные бекапы обязательны. Помогут не только от вирусов, но и от выхода из строя диска и прочих форс-мажоров.

— SATtva (03/11/2015 09:11)   

Тем, кто считает, что открытые исходники ничего не дают, напомню, что Heartbleed и ShellShock в итоге всё же обнаружили, тогда как закрытые компоненты винды в этом плане — тёмный лес.
— pgprubot (03/11/2015 11:46, исправлен 03/11/2015 11:49)   

MS не закрывала критические баги годами несмотря на баг-репорты, пока в паблике не начали ходить эксплоиты. Потом, коммерческая фирма, да ещё с закрытыми исходниками, легко принуждается АНБ и т.п. агенствами к сотрудничеству. Писалось про мнение АНБ: баг не должен быть немедленно закрыт — комапниии должны в первую очередь стучать в АНБ и т.п. конторы, чтобы дать им воспользоваться уязвимостями в их целях. Сотрудничество MS и др. коммерческих компаний с АНБ полностью подтверждается документами Сноудена, а про дыры в оупенсорсе там нет ничего (кроме попыток вовремя писать эксплоиты на найденные дыры в firefox, да иногда быстрее находить в нём дыры). Аргументов тысячи, всем они известны и много раз обсуждались, перечислять лень, проще такие вбросы удалять как толстый троллинг.



А локальное повышение привелегий до админских — это так себе, а не дыра, ага.

— safety (03/11/2015 15:52)   
со 2 ноября 2015 года ВАУЛТ распространяется через электронную почту в новом варианте:
из закодированного js извлекается exe, который и выполняет тихо всю работу по шифрованию документов. и самоудаляется. не оставляя следов в темпе.
алгоритм шифрвания видимо другой, не openPGP, поскольку при расшифровке файлов с расширением vault gpg.exe не распознает пакет openPGP

gpg: no valid OpenPGP data found.
gpg: processing message failed: eof

File: X:\viruses\shifratory\VAULT.new\19\Зашифрованные\шифр\01-0602H корич.JPG.vault
Time: 03.11.2015 18:47:38 (03.11.2015 12:47:38 UTC)


в остальном все то же.
оставлен ключ VAULT.key с зашифрованным контентом, который не является пакетом gnuPG,

gpg: no valid OpenPGP data found.
gpg: processing message failed: eof

File: X:\viruses\shifratory\VAULT.new\19\Зашифрованные\шифр\VAULT.KEY
Time: 03.11.2015 18:50:48 (03.11.2015 12:50:48 UTC)


добавлена в автозапуск заставка hta, с адресом кабинета злоумышленников в tor-сети, с рекомендациями как быстрее получить свои файлы за денежки (биткойны).
— K10 (03/11/2015 19:39, исправлен 03/11/2015 19:47)   

Отдельного open-source разработчика еще проще принудить к сотрудничеству.
Одни попытаются предупредить об этом общественность, как автор TrueCrypt ;) Но сколько тех, кто не предупредит? Думается, что на порядок больше.



Как раз таки есть, упоминалась спец программа (не в смысле софт, а в смысле комплекс мероприятий) по внедрению бэкдоров в opensource софт и еще одна программа по внедрению ослаблений в паблик крипто софт.


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

— sentaus (04/11/2015 12:09, исправлен 04/11/2015 12:11)   
Отдельного open-source разработчика еще проще принудить к сотрудничеству.

Осталось понять, как обстоят дела с отдельными closed-source разработчиками, сотрудниками коммерческих фирм. 6)


по внедрению бэкдоров в opensource софт и еще одна программа по внедрению ослаблений в паблик крипто софт.

Караул. Мы все умрём.

— pgprubot (04/11/2015 13:17, исправлен 04/11/2015 13:18)   

Кого надо принудить, чтобы у нужного Linux-юзера появился, к примеру, забэкдоренный GnuPG? И как скрыть следы такого принуждения?


В случае прориетарщиков и принуждать никого не надо — с проприетарным софтом всё просто, примерно так:


e[link5]very attempt to implant iOS will always succeed


Ждём пруфов.



Не важно, только зачем нужна социнженерия, когда проще сделать нужный MS-апдейт с полным паком бэкдоров для конкретного юзера?


Ссылки
[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