红明谷CTF 2022

news2024/11/14 20:39:05

MissingFile

前置知识

DPAPI

全称:Data Protection Application Programming Interface

DPAPI blob

一段密文,可以使用Master Key对其解密

Master Key

64字节,用于解密DPAPI blob,使用用户登录密码、SID和16字节随机数加密后保存在Master key file

Master Key File

二进制文件,可以使用用户登录密码对其解密,获得Master Key

楔子

本意是为了考察选手对于MTF的一些认知,以及对于微软里面常见的一个API CryptProtectData加密获得的数据,也就是常说的 DPAPI Blob的一些了解程度的考察。但是为了方便出题(其实是自己折磨自己了),用了各种办法将数据读入内存,反而导致flag的泄露(疑似是flag也被存在了内存中,还没有被抹去),导致出现了非预期解

题目
题目描述: 某日Akira检查自己电脑时,发现机器好像中毒了!Akira试着抢救,但被病毒发现,只剩下了一份快照,这份快照能帮Akira找到病毒留下的秘密吗?
思路

题目描述中提到了机器中毒,其实就是指这台电脑 已经被攻击过,暗示memory中会残留一些攻击者利用过的数据。通产情况下,内存中残留的数据不足以进行数据恢复,但是在某些特定的情况下,数据被加载到内存中,便有获取一些特定数据的机会,这一题就是模拟这种场景,同时提到了被病毒发现,其实这里是想表达病毒进行了自我数据删除,所以有数据残留。

加密数据发现

对于此类内存分析题,首先通过volatility调查当前内存版本

vol -f memory imageinfo 

然后我们查看桌面上的文件

vol -f memory --profile=Win7SP1x86_23418 filescan | grep -E -i "desktop"

在这里插入图片描述

我们发现了一个奇怪的目录UsersNewGuestDesktopHacker以及mimikatz.exe

然而这个目录内似乎什么也没有。但是题目里提到病毒把数据给删除了(假设该情况成立),于是考虑使用 mftparser对内存中的 MFT进行分析。关于这个MTF的介绍,网上有很多文章都有介绍,这边简单提一下:在Windows使用的NTFS文件系统中,有一个被称为 Master File Table的数据,这部分数据会 存放在内存中,用于对NTFS中每个新增文件的一些信息进行记录,例如:文件的位置,修改时间等等。利用此特性,NTFS就能够快速定位每一个文件在磁盘上的位置,并且也能够让Explore能够对文件进行快速搜索。当文件大小不足1024字节的时候,这个文件数据 会直接存放到MFT中。由于大部分文件删除的时候,并不会直接抹去数据,而是标记此块数据已经被删除,所以MFT中通常会残留某些被删除的小文件的数据

我们就可以利用volatility中内置的插件mftparser 来查找Hacker目录中被删除的数据

vol -f memory --profile=Win7SP1x86 mftparser > mtfparser.txt

在这里插入图片描述

我们追踪Hacker文件夹的时候找到了一个可疑文件S3cret

官方WP的提示说从文件的魔数可以看出来,这个文件用的是Windows的 DPAPI技术进行的数据加密。(但是这个时候我还不知道是怎么看出来的)

DPAI就是Windows提供的一种数据保护API,它本质上使用了Windows通过用户自己登录(sids,登录密码等),以及域登录后的一些数据生成的密钥,并且使用内置的算法,对用户指定的数据进行加密。通常Windows上的浏览器历史数据,邮件加密,wifi密码等等都会以这种方式进行数据加密。

如果对这种数据进行解密的话,需要能够获取当前操作系统登录用户对应的 MasterKey才能解开。然而获得这个 MasterKey需要知道攻击者登录过程中使用的账户,以及账号的登录密码和对应的SIDs。通常的思路是利用这些数据生成一个blob加密过程中使用的MasterKey,从而对目标blob进行解密。

此时如果用 volatility 进行过文件扫描的话,会发现磁盘上残存则 mimikatz,一个专门用于Windows渗透的工具。并且使用这个工具可以进行一些敏感数据的导出。考虑到本机曾经中毒而且存在mimikatz,攻击者可能对当前机器的密码进行了dump,内存中可能残存着可以利用的数据。

对于DPAPI加密的数据了,从filescan中可以发现,S3cret被存放在一个叫做 NewGuest的用户桌面,于是尝试dump基本信息。

.volatility_2.6_win64_standalone.exe -f memory --profile=Win7SP1x86 hivelist
.volatility_2.6_win64_standalone.exe -f memory --profile=Win7SP1x86 hashdump

在这里插入图片描述
在这里插入图片描述

我们结合前面的信息发现 可疑的NewGuest用户,我们对其用户密码进行爆破可疑得到其加密密码为弱口令 123456

在这里插入图片描述

根据前置知识,我们解密Master Key file需要用户登录密码,以及sid

然后我们就需要搜索关于NewGuest用户的sid

使用命令

vol -f memory --profile=Win7SP1x86_23418 getsids
vol -f memory --profile=Win7SP1x86_23418 getsids | grep NewGuest

在这里插入图片描述

得到sid S-1-5-21-206512979-2006505507-2644814589-1001

然后我们将DPAPI加密的文件S3cret文件dump出来,这里我不知道怎么dump,就手动删除前面的偏移量以及后面的ASCII编码(卑微)

在这里插入图片描述

将十六进制转为文件dump_s3cret(也就是DPAPI blob文件)

这个时候我们就可以使用渗透工具mimikatz检查对应的blob文件的内容

dpapi::blob /in:"dump_S3cret"

在这里插入图片描述

可以知道这里需要一个GUID470a5148-d8c9-4453-bf41-f0c09d158bfd Master key,我们试着返回内存去寻找这个Master Key文件(也就是从我们之前保存的mtfmaster.txt中查找关于这个GUID的信息)

cat mtfparser.txt| grep "470a5148-d8c9-4453-bf41-f0c09d158bfd"   

2022-02-13 08:35:13 UTC+0000 2022-02-13 08:35:13 UTC+0000   2022-02-13 08:35:13 UTC+0000   2022-02-13 08:35:13 UTC+0000   Users\NewGuest\AppData\Roaming\MICROS~1\Protect\S-1-5-21-206512979-2006505507-2644814589-1001\470a5148-d8c9-4453-bf41-f0c09d158bfd

我们找到了这条数据,然后我们可以查看大约匹配到的数据的前后50条数据

在这里插入图片描述

手动导出hex数据

在这里插入图片描述

我们将文件提取出来了之后保存为Master.key。并且使用mimikatz结合SID用户登录密码 提取出 masterkey

mimikatz # dpapi::masterkey /in:"master.key" /sid:S-1-5-21-206512979-2006505507-2644814589-1001 /password:123456

在这里插入图片描述

masterkey:092c4220064c30bc7f8b15d2d48957c4926af0632149b9c08cd87f34fc43aa1204d775bdc6ab429a0d4d0826fb80b08250b125d92913e2f7578cf778073bfe38

最后使用 masterkey解密DPAPI blob文件

dpapi::blob /in:dump_S3cret /masterkey:092c4220064c30bc7f8b15d2d48957c4926af0632149b9c08cd87f34fc43aa1204d775bdc6ab429a0d4d0826fb80b08250b125d92913e2f7578cf778073bfe38

在这里插入图片描述

内容被提取出来了

66 6c 61 67 7b 48 69 64 65 5f 42 65 68 69 6e 64 5f 57 69 6e 64 6f 77 73 7d 00

flag{Hide_Behind_Windows}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2053924.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

周易测算系统前景分析

周易测算系统作为一种结合传统文化与现代技术的服务平台。其市场前景分析如下: 市场需求增长:随着人们对传统文化的重视和对个性化服务的追求,周易测算系统市场需求正逐渐增长。特别是在互联网的背景下,周易预测服务与互联网的结…

java: 错误: 不支持发行版本

报这样的错误大概率是 idea 中的版本配置不统一导致的 通过确保四个位置的版本一致,解决版本不同的问题 第一个位置:Project ,确保 SDK 和 Project language level 的版本适配 第二个位置:Modules,确保需要运行的模块的 Language level 正确…

本地下载安装WampServer结合内网穿透配置公网地址远程访问详细教程

文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境,是一组常用来…

AI浪潮下的教育革新:把握机遇,拥抱变化!

在全球范围内,AI技术正以前所未有的速度改变着我们的生活和工作方式。据麦肯锡数据预测,到2045年左右,有50%的工作将被AI替代。与此同时,具有创造力、深度思考的高阶智力的人才,将享受到AIGC带来的效率优势&#xff0c…

Maven的依赖范围

依赖的jar包,默认情况下,可以在任何地方使用,可以通过scope来设置作用范围 作用范围: 主程序范围有效(main文件夹范围内)测试程序范围有效(test文件夹范围内)是否参与打包运行&…

HTML静态网页成品作业(HTML+CSS)——古诗词网设计制作(5个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码CSS部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有5个页面。 &#x1…

产线一直在用的 RabbitMQ 搭建教程(含负载均衡配置,验证脚本,监控案例),偷偷抄出来的,建议收藏备用

本文介绍公司一直在用的 rabbitmq 集群安装部署过程,版本不算太新,但一直稳定运行,对其他版本安装也有一定的参考价值,建议收藏备用。 简介 官网:https://www.rabbitmq.com/ RabbitMQ 是一个开源的遵循 AMQP(Advance…

超详细的Vue新手向教程

一,前言 本篇文章的正文部分为渐近式介绍Vue基础中的OptionAPI和相关指令,在两大内容之外,本文结尾处会附上vue的特性。 ps:本文总字数过22000,足够详细,尽量新手向的同时也包含一些原理性知识,部分内容…

TILs 评分:TCGA 肿瘤浸润淋巴细胞病理切片深度学习评分!图片下载与可视化

生信碱移 病理切片的TILs评分 TCGA 数据库是最大的肿瘤组学公开数据库之一。尽管如此,更多的研究往往仅局限于关注 TCGA 中各类肿瘤样本的上游组学信息或基本病理特征,而忽略了对样本数字化 H&E 病理染色图像的进一步应用。 ▲ TCGA中肿瘤样本的病…

Centos系统中创建定时器完成定时任务

Centos系统中创建定时器完成定时任务 时间不一定能证明很多东西,但是一定能看透很多东西,坚信自己的选择,不动摇,使劲跑,明天会更好。 在 CentOS 上,可以使用 systemd 定时器来创建一个每十秒执行一次的任务…

拟合与插值|线性最小二乘拟合|非线性最小二乘拟合|一维插值|二维插值

挖掘数据背后的规律是数学建模的重要任务,拟合与插值是常用的分析方法 掌握拟合与插值的基本概念和方法熟悉Matlab相关程序实现能够从数据中挖掘数学规律 拟合问题的基本提法 拟合问题的概念 已知一组数据(以二维为例),即平面上n个点 ( x i , y i ) …

Blazor开发框架Known-V2.0.8

V2.0.8 Known是基于Blazor的企业级快速开发框架,低代码,跨平台,开箱即用,一处代码,多处运行。目前已有部分客户在使用,最近客户的项目和产品,有的在Docker中运行,有的在重新升级改造…

2024.8.18周报

摘要 本周利用阳朔水站的数据对1D浅水方程进行了求解,通过将1D浅水方程的物理约束纳入到神经网络,将时空坐标x,t作为输入到神经网络中,得到预测解水深和流量的数据,然后利用真实的数据进行比较,计算损失。…

【鸿蒙学习】HarmonyOS应用开发者基础 - 白皮书V3.0的关键知识点

本文内容由智谱清言的长文章解读生成。 智谱AI(https://zhipuai.cn/) 白皮书V3.0这份文档详细介绍了鸿蒙生态应用开发的各个方面,涵盖了从核心概念到开发流程、测试和运维分析的各个环节。由于这本书有128页,读完时间较长&#xf…

Java数组02:数组内存分析、三种初始化方式及特点

本节内容视频链接:Java数组03:三种初始化及内存分析_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV12J41137hu?p53&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.数组内存分析 堆:存放new的对象和数组;可以被所有线…

【精选】基于Python大型购物商城系统(京东购物商城,淘宝购物商城,拼多多购物商城爬虫系统)

目录: 目录: 系统介绍: 系统开发技术 Python语言 Django框架简介 MySQL数据库技术 B/S架构 系统设计 系统总体设计 系统详细界面实现: 系统测试 测试目的 测试用例 本章小结 参考代码: 为什么选择我&…

【C语言可变参数函数的使用与原理分析】

文章目录 1 前言2 实例2.1实例程序2.2程序执行结果2.3 程序分析 3 补充4 总结 1 前言 在编程过程中,有时会遇到需要定义参数数量不固定的函数的情况。 C语言提供了一种灵活的解决方案:变参函数。这种函数能够根据实际调用时的需求,接受任意…

yum 源更新

本人使用Centos7系统; 系统自带的Yum源地址,下载速度又慢,而且有些包还是没有的,于是考虑将yum进行更换,可以更换为国内其他厂商的yum源,比如:阿里、腾讯、163、清华的,尽可能汇总&…

如何有效利用渗压计来避免溃坝风险

有效利用渗压计来避免溃坝风险是一个综合性的过程,涉及渗压计的安装、监测、数据分析以及应急响应等多个方面。以下是一些关键步骤和建议: 选择合适的渗压计: 根据具体工程需求和环境条件,选择合适的渗压计类型确保渗压计的质量可…

嘀嗒出行拼车系统源码

嘀嗒出行APP的开发需求与功能架构主要围绕提升用户出行体验、提高匹配效率、保障行程安全以及满足多样化的出行需求来构建。以下是对嘀嗒出行APP开发需求与功能架构的详细解析 一、开发需求 市场需求:随着出行市场的竞争加剧,嘀嗒出行需要不断提高自身服…