比赛时没整出来,赛后整理了一下网上放出的wp,算是自己学习一下别人的思路,记录一下以备以后复习。

    解法一:
    用通用的工具Volatility:
    由于在Ubuntu上的复现发现不是太成功,顺便安了一下windows下的Volatility。这里放上下载链接:
    https://www.volatilityfoundation.org/releases
    最好把下载下来的exe文件重命名一下,用起来方便点。
    解题:
    先是基本的查看镜像信息: vol.exe -f memory.dmp imageinfo 命令其实和Ubuntu下差不多。
    image.png
    然后根据题目要求:powershell执行的脚本储存的注册表键
    这里提到根据分析出的镜像和powershell得知是windows的镜像进行操作,这里看网上师傅的解法中提到了:evtx.操作是进行文件搜索,把带有evtx后缀的文件全部打印出来。
    这里补充一下evtx的东西:
    image.png
    可以看出这里的思路是从系统日志进行下手。
    命令: vol.exe -f memory.dmp —profile=Win7SP1x64 filescan | find “evtx”
    image.pngimage.png
    分离出来两个文件:
    image.png
    然后打开那个evtx文件:
    image.png
    image.png
    发现有关键的信息,这个事件分析器上面的信息还挺多,因为没再仔细地去花时间去学,只是简单的看了下,后续有遇到的类似的问题再补上。
    这里的关键信息是:powershell -noprofile
    然后在winhex里面搜索关键词:
    image.png
    这里就可以看到其键值:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Communication
    然后这个就是flag了。
    ——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

    解法二:因为是windows的键值表
    image.png
    然后根据Powershell所处的分类,进行进一步的细化:HKEY_LOCAL_MACHINE
    在winhex中进行搜索:然后进行再进行进一步的查看。
    —————————————————————————————————————————————————————————————
    —————————————————————————————————————————————————————————————
    解法三:
    和解法一用些许类似,但个人感觉还是这个解法更为容易理解,适用性广泛。
    ————————————————————————————————————————————————————————————-
    正文:
    所用工具还是windows下的volatility,感觉用起来比Linux下的更为便捷,有些操作很是快。
    image.png
    依旧是常规做法,先看版本,然后根据题目的hint再确定下一步。
    这里整理下一些常用的操作(这里以题目附件为例):
    —————————————————————————————————————————————————————————————
    这里说下下面的打印出来的进程和文件信息都可以导出到txt中。
    简单举个例子:vol.exe -f memory.dmp —profile=Win7SP1x64 pslist > pslist_output.txt
    image.png
    —————————————————————————————————————————————————————————————
    进程获取:
    vol.exe -f memory.dmp —profile=Win7SP1x64 pslist
    image.png
    —————————————————————————————————————————————————————————————
    文件信息获取:
    vol.exe -f memory.dmp —profile=Win7SP1x64 filescan

    image.png
    —————————————————————————————————————————————————————————————
    命令行信息:
    vol.exe -f memory.dmp —profile=Win7SP1x64 cmdline
    —————————————————————————————————————————————————————————————
    注册表内容:
    vol.exe -f memory.dmp —profile=Win7SP1x64 hivelist

    #查看注册表software项,0xfffff8a0002d7010是software的内存虚拟地址
    vol.exe -f memory.dmp —profile Win7SP1x64 printkey -o 0xfffff8a0002d7010
    #根据名称查看具体子项的内容
    vol.exe -f memory.dmp —profile Win7SP1x64 printkey -K “SAM\Domains\Account\Users\Names”
    —————————————————————————————————————————————————————————————————-
    由于本题要在所有的注册表中查找新增的注册表,并且不知道具体的子项,所以上述方式不适用,只能将所有注册表转储:
    vol.exe -f memory.dmp —profile=Win7SP1x64 dumpregistry —dump ./test_one
    这里的test_one是在当前目录下存在的一个文件夹,因为转储出来的是文件,所以不和上文一样了。

    image.png
    根据题目说明是恶意软件的缘由,那就对:registry.0xfffff8a0002d7010.SOFTWARE.reg 进行分析
    问题:
    1、从内存中导出的内容,跟标准的注册表项文件有差别导致无法导入系统注册表。
    2、若直接导入系统注册表,可能会跟原有的注册表项有冲突甚至覆盖原有注册表项,导致系统崩溃。基于以上两个问题,需要寻找第三方工具去查看注册表。
    这里放个注册表恢复的工具链接:https://www.mitec.cz/wrr.html
    image.png
    界面是这个样子的,不算太复杂,摸索一会后发现主要是用Raw Data这个模块,然后题目说的是powershell的恶意代码,然后看的网上师傅的题解说是直接搜索关键词:New-Object.然后就不懂为什这样搜索,查了下New-Object的渊源:
    image.png
    然后就得到上图的搜索结果code。根据这里的路径得到:Microsoft\Windows\Communication
    然后再根据注册表的前面路径,得到最终结果:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Communication