OtterCTF---Memory Forensics内存取证(1-13)

news2024/11/25 4:39:12

一.OtterCTF 内存取证

CTF地址:

OtterCTF

国产化一下:

注册一下 登录就可以 (注:因为邮箱不验证,随意搞个就可以): 

1 - What the password? 

第一题:

国产化: 

 下载OtterCTF.7z的压缩包:

 是OtterCTF.vmem镜像文件

volatility介绍
        Volatility是一款非常强大的内存取证工具,它是由来自全世界的数百位知名安全专家合作开发的一套工具, 可以用于windows,linux,mac osx,android等系统内存取证。Volatility是一款开源内存取证框架,能够对导出的内存镜像进行分析,通过获取内核数据结构,使用插件获取内存的详细情况以及系统的运行状态。

volatility工具的基本使用
命令格式

volatility -f [image] --profile=[profile] [plugin]

在分析之前,需要先判断当前的镜像信息,分析出是哪个操作系统

volatility -f xxx.vmem imageinfo

如果操作系统错误,是无法正确读取内存信息的,知道镜像后,就可以在--profile=中带上对应的操作系统

常用插件

下列命令以windows内存文件举例

查看用户名密码信息

volatility -f 1.vmem --profile=Win7SP1x64 hashdump

查看进程

volatility -f 1.vmem --profile=Win7SP1x64 pslist

查看服务

volatility -f 1.vmem --profile=Win7SP1x64 svcscan

查看浏览器历史记录

volatility -f 1.vmem --profile=Win7SP1x64 iehistory

查看网络连接

volatility -f 1.vmem --profile=Win7SP1x64 netscan

查看命令行操作

volatility -f 1.vmem --profile=Win7SP1x64 cmdscan

查看文件

volatility -f 1.vmem --profile=Win7SP1x64 filescan

查看文件内容

volatility -f 1.vmem --profile=Win7SP1x64 dumpfiles -Q 0xxxxxxxx -D ./

查看当前展示的notepad内容

volatility -f 1.vmem --profile=Win7SP1x64 notepad

提取进程

volatility -f 1.vmem --profile=Win7SP1x64 memdump -p xxx --dump-dir=./

屏幕截图

volatility -f 1.vmem --profile=Win7SP1x64 screenshot --dump-dir=./

查看注册表配置单元

volatility -f 1.vmem --profile=Win7SP1x64 hivelist

查看注册表键名

volatility -f 1.vmem --profile=Win7SP1x64 hivedump -o 0xfffff8a001032410

查看注册表键值

volatility -f 1.vmem --profile=Win7SP1x64 printkey -K "xxxxxxx"

查看运行程序相关的记录,比如最后一次更新时间,运行过的次数等。

volatility -f 1.vmem --profile=Win7SP1x64 userassist

最大程序提取信息

volatility -f 1.vmem --profile=Win7SP1x64 timeliner

windows:

1.查看操作系统

volatility_2.6.exe -f OtterCTF.vmem imageinfo

 2.查看密码

首先hash

volatility_2.6.exe -f OtterCTF.vmem --profile=Win7SP1x64 hashdump

518172d012f97d3a8fcc089615283940 这串哈希估计是解不出来,太复杂了。。。

   

 换个方法: lsadump模块提取密码:

volatility_2.6.exe -f OtterCTF.vmem --profile=Win7SP1x64 lsadump

 flag:CTF{MortyIsReallyAnOtter}

kali:同理:

系统信息

vol.py -f OtterCTF.vmem imageinfo 

 hash哈希

vol.py -f OtterCTF.vmem --profile Win7SP1x64 hashdump

 lasdump密码

vol.py -f OtterCTF.vmem --profile Win7SP1x64 lsadump 

 mimikatz这个也可以查看明文,不过我没成功 ,不知道啥原因 可能是python2的问题。。。

 提交flag:

2.General Info

国产化: 

 PC的ip和名称:

查看网络连接:

volatility_2.6.exe -f OtterCTF.vmem --profile=Win7SP1x64 netscan

 kali:

vol.py -f OtterCTF.vmem --profile Win7SP1x64 netscan

 虽然IP挺多的,但ip应该是192.168.202.131(因为就这一个像)

CTF{192.168.202.131}

查看主机名称:

查看注册表:

vol.py -f OtterCTF.vmem --profile Win7SP1x64 hivelist

看到system 

主机名信息在system的那一条记录中

查看注册表键名

-o + 地址 printkey 来查看指定的记录 

vol.py -f OtterCTF.vmem --profile Win7SP1x64 -o 0xfffff8a000024010 printkey

 然后就是步步跟进了:

vol.py -f OtterCTF.vmem --profile Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001"

vol.py -f OtterCTF.vmem --profile Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001\Control"

vol.py -f OtterCTF.vmem --profile Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001\Control\ComputerName"

vol.py -f OtterCTF.vmem --profile Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001\Control\ComputerName\ComputerName"

 运气较好 第一个直接试出来:

CTF{WIN-LO6FAF3DTFE}

3.Play Time

 国产化:

 游戏名称和服务器ip:

查看进程: 

vol.py -f OtterCTF.vmem --profile Win7SP1x64 pslist 

好多,盲猜吧。。。 

 LunarMS.exe,可以搜索一下,发现是个游戏。。。

 用netscan查出ip地址

vol.py -f OtterCTF.vmem --profile Win7SP1x64 netscan

 在这:

CTF{LunarMS}

CTF{77.102.199.102}

 4. Name Game

 国产化:

 已知这个账户登录到称为Lunar-3的频道,找出账户名。

把OtterCTF.vmem搞到WinHex做分析:

先搜索Lunar-3

 后面有一段字符串:

使用strings命令加上grep搜索,-C 5表示查找前后5条记录,同样可以找到可疑字符串 

 strings OtterCTF.vmem|grep Lunar-3 -C 5  

 

CTF{0tt3r8r33z3}

5.Name Game 2

 看着还是围绕LunarMS这进程来的:

先提取进程:D保存当前目录就可以

vol.py -f OtterCTF.vmem --profile Win7SP1x64 memdump -p 708 -D ./

进程号PID可以看前面的pslist:

先分析题目十六进制数值:

0x64 0x??{6-8} 0x40 0x06 0x??{18} 0x5a 0x0c 0x00{2}
分析:0x 十六进制的标志    {6-8} {18} {2}间隔位数
64 ?? {6-8}未知 40 06 ?? {18} 5a 0c 00 {2} 
只能搜索 5a 0c 00 好找一些

Winhex工具: 

打开708.dmp 先搜索5a 0c 00 

慢慢找。。。。。出来了M0rtyL0L 

 这里也能查出来M0rtyL0L  不过旁边十六进制与题目所给的对不起来。。。

kali同样也可以

hexdump命令:-A -B是指定列数

hexdump -C 708.dmp | grep "5a 0c 00" -A 3 -B 3

 找到:

还有这:

 CTF{M0rtyL0L} 

6.Silly Rick

 

找rick的电子邮件密码 :

题目说他总是复制并粘贴密码

那我们就查看粘贴板:

 vol.py -f OtterCTF.vmem --profile Win7SP1x64 clipboard                                                          

CTF{M@il_Pr0vid0rs} 

7.Hide And Seek

 

找到恶意软件进程名称(包括扩展名)

PID和PPID:

进程PID是当操作系统运行进程时系统自动为其分配的标识符,具有唯一性,且为非零整数。一个PID只会标识一个进程。

PPID代表的是父进程的PID,即父进程相应的进程号。当一个进程被创建时,创建它的那个进程会被称作为父进程,而子进程将以PPID指出它的父进程。

查看进程:

vol.py -f OtterCTF.vmem --profile Win7SP1x64 pslist

 查看进程发现一个名为Rick And Morty的进程与题目对应

而且vmware-tray.ex进程,PPID比PID还大 估计是。

 查看cmd历史命令:

vol.py -f OtterCTF.vmem --profile Win7SP1x64 cmdline  

查看该进程的进程命令参数,发现Rick And Morty下载了vmware-tray.exe,默认下载路径在RarSFX目录下,并执行了它:

 dlllist查看一下进程相关的dll文件列表

 vol.py -f OtterCTF.vmem --profile Win7SP1x64 dlllist -p 3720

 CTF{vmware-tray.exe}

8.Path To Glory

这题意有点不明确。。。

恶意软件是如何进入 rick 的 PC 的?应该是下载的某个文件。

filescan找一下这个文件

vol.py -f OtterCTF.vmem --profile Win7SP1x64 filescan|grep 'Rick And Morty'

 一共三个exe和三个种子文件,我们要分析来源就要关注种子文件,里面可能放着地址信息:

先保存 在用strings命令 字符串查看文件:

可惜第一个和第二个都没有flag信息:

0x000000007dae9350 第二个 这个有信息:

//保存
vol.py -f OtterCTF.vmem --profile Win7SP1x64 dumpfiles -Q 0x000000007dae9350 -D ./
//查看
strings file.None.0xfffffa801b42c9e0.dat 

CTF{M3an_T0rren7_4_R!ck} 

9. Path To Glory 2

 让我们继续。。。

没头绪了,看大佬的文章吧。

torrent文件是通过web浏览器下载的 先将所有的chrome进程转储下来:

vol.py -f OtterCTF.vmem --profile Win7SP1x64 memdump -n chrome.exe  -D ./chrome

strings ./chrome/* | grep 'Rick And Morty season 1 download.exe' -C 10  

 在这:

 过程中发现了flag.txt 可能后面的关卡会用到

 CTF{Hum@n_I5_Th3_Weak3s7_Link_In_Th3_Ch@in}

10.Bit 4 Bit

 

找攻击者的地址

两个方法: 

vmware-tray.exe pid 3720 

将恶意软件转储出来:

知识点: 要把内存中某个进程给dump出来,一般有两种方式

memdump:以dmp格式保存
procdump:直接提取

vol.py -f OtterCTF.vmem --profile Win7SP1x64 procdump -p 3720  -D ./kiss 

使用IDA Pro进行分析 打开executable.3720.exe

 方法二:

通过匹配

strings -e l OtterCTF.vmem | grep -i -A 5 "ransomware"

 CTF{1MmpEmebJkqXG8nQv4cjJSmxZQFVmFo63M}

11.Graphic's For The Weak

 

分离文件: 

foremost kiss/executable.3720.exe -v

foremost kiss/executable.3720.exe -o odic
-o 分离到odic目录

 

 查看

 CTF{S0_Just_M0v3_Socy}

12.Recovery

 

加密文件的随机密码:

IDA查看带有password的函数:

发现有computerName+"-"+userName+" ",也就是WIN-LO6FAF3DTFE-Rick

strings命令查看:

-a --all:扫描整个文件而不是只扫描目标文件初始化和装载段
-f –print-file-name:在显示字符串前先显示文件名
-n –bytes=[number]:找到并且输出所有NUL终止符序列
- :设置显示的最少的字符数,默认是4个字符
-t --radix={o,d,x} :输出字符的位置,基于八进制,十进制或者十六进制
-o :类似--radix=o
-T --target= :指定二进制文件格式
-e --encoding={s,S,b,l,B,L} :选择字符大小和排列顺序:s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit
@ :读取中选项

还要带上参数-e,要以16-bit寻找,即-el-eb,不然找不到。 

strings -eb OtterCTF.vmem | grep WIN-LO6FAF3DTFE-Rick 

 CTF{aDOBofVYUNVnmp7}

13.Closure

 最后一题了 解密rick的文件:

前面好像找到了一个flag.txt

在查找一下吧:

vol.py -f OtterCTF.vmem --profile Win7SP1x64 filescan|grep -i 'flag'  

 应该是第二个 提取到kiss目录下:

vol.py -f OtterCTF.vmem --profile Win7SP1x64 dumpfiles -Q 0x000000007e410890 -D ./kiss

cat查看 被加密了 

 命令行把带有0字节的删除 然后保存到flag2.png.lockad

hexdump查看一下 还是没有发现flag

tr < file.None.0xfffffa801b0532e0.dat -d '\000' > flag2.png.locked

hexdump -C flag2.png.locked   

 这时需要工具:

已知这个勒索软件为HiddenTear,直接在网上找到解密程序HiddenTearDecrypter

 winhex操作:

shift+delete删除:

 删除成功

 

 改名flag.png.locked

HiddenTearDecrypter:

密钥就是12题的flag  aDOBofVYUNVnmp7

当然,也可以破解:

 就是有亿点点慢。。。。。

 还是直接填密钥吧:

代表成功: 

 

 flag.png.locked变成了falg.png

 

打开是损坏的:

改成flag.txt 查看:

  Winhex查看:

 CTF{Im_Th@_B3S7_RicK_0f_Th3m_4ll}

 总结:

        到此 13关全部完成,主要用到的就是volatility工具和一些查看16进制的工具,Winhex,还有逆向IDA反编译查询,最后的HiddenTear勒索病毒,大家要了解,现在已经可以破解密钥了,还有就是一些基本的kali的查询和工具命令要掌握。

推荐博客:

内存取证-volatility工具的使用 (史上更全教程,更全命令)_路baby的博客-CSDN博客

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

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

相关文章

DEJA_VU3D - Cesium功能集 之 104-攻击箭头(标绘+编辑)

前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小140个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码,…

FreeRTOS:中断配置

目录 一、Cortex-M 中断1.1中断简介1.2中断管理简介1.3优先级分组定义1.4优先级设置1.5用于中断屏蔽的特殊寄存器1.5.1PRIMASK 和 FAULTMASK 寄存器1.5.2BASEPRI 寄存器 二、FreeRTOS 中断配置宏2.1configPRIO_BITS2.2configLIBRARY_LOWEST_INTERRUPT_PRIORITY2.3configKERNEL_…

Class 01 - R语言介绍及部分功能演示

Class 01 - R语言介绍及部分功能演示 教程介绍功能演示数据导入 R语言&Python对比在数据科学中的不同优势 教程介绍 在本章中&#xff0c;将学习到编程的新概念&#xff0c;以及如何使用R语言来做数据的分析。 我们先谈谈计算机编程吧&#xff0c;计算机编程是指向计算机…

计算机网络学习笔记-数据链路层

目录 概述 三个功能 封装成帧 透明传输 差错检测 点对点协议PPP 三个组成部分 帧格式 透明传输 工作状态 使用广播信道的局域网 以太网 两个主要标准 高速以太网&#xff08;速率 > 100Mb/s&#xff09; MAC层&#xff1a; 集线器 交换机 自学习和转发帧 生…

tkinter+re实现百度网盘分享链接自动跳转

目录 一、背景 二、需求分析 三、实现 三、打包 四、测试 一、背景 相信大家使用百度网盘的时候都会去一些链接网站吧&#xff0c;比如下面这个网站 这个网站具体实现的功能是&#xff1a;管理员上传百度网盘链接&#xff0c;用户点击复制链接按钮可以将百度网盘的分享链…

线性结构-数组

数组(Array)是最简单的数据结构&#xff0c;是由有限个相同类型的变量或对象组成的有序集合。因为数组中各元素之间是按顺序线性排列的&#xff0c;所以数组是一种线性数据结构。 数组是一类物理空间和逻辑形式都连续的线性数据结构&#xff1a; 数组用唯一的名字标识&#xf…

输出数字的位数(C语言)以及逆序输出

#include <stdio.h>int main() {int N;int i 0;scanf("%d",&N);int a[5];int j;while(N > 0){a[i] N%10;i;N N/10;}printf("这个数字是%d位数\n",i); for(j 0;j < i;j){printf("%d",a[j]);} } 原题如下&#xff1a;

并发编程08:原子操作类

文章目录 8.1 基本类型原子类8.1.1 常用API简介8.1.2 Case 8.2 数组类型原子类8.2.1 常用API简介8.2.2 Case 8.3 引用类型原子类8.4 对象的属性修改原子类8.4.1 使用目的8.4.2 使用要求8.4.3 Case 8.5 原子操作增强类原理深度解析8.5.1 常用API8.5.2 面试题8.5.3 点赞计数器8.5…

读书笔记-《ON JAVA 中文版》-摘要15[第十五章 异常]

文章目录 第十五章 异常1. 异常概念2. 基本异常2.1 基本异常2.2 异常参数 3. 异常捕获3.1 try 语句块3.2 异常处理程序3.3 终止与恢复 4. 自定义异常4.1 自定义异常 5. 异常声明6. 异常捕获6.1 捕获所有异常6.2 多重捕获6.3 栈轨迹6.4 重新抛出异常6.5 精准的重新抛出异常 6.6 …

ExpressGridPack Crack快速电子表格

ExpressGridPack Crack快速电子表格 ExpressEditors库 外壳对话框-对话框窗体不会出现在活动监视器中。 TdxVisualRefinements.PPadding属性对dxTokenEdit没有影响。 Express库 TdxVisualRefinements.PPadding属性对dxTokenEdit没有影响。 ExpressQuantumTreeList套件 TcxTreeL…

二层交换机和三层交换机到底区别在哪?

你好&#xff0c;这里是网络技术联盟站。 今天我们谈谈二层交换机和三层交换机。 二层交换机的概念和特点 二层交换机是一种工作在数据链路层的网络设备&#xff0c;主要功能是根据数据帧中的MAC地址进行转发&#xff0c;并将这些MAC地址与对应的端口记录在自己内部的一个地…

IDA常用宏定义函数

一.引言 做题目遇到了几个神奇的函数. SDWORD1(x), SDWORD2(x), SHIDWORD(x) 通过查询得知是IDA的宏定义函数 宏定义本身类似字符串替换,假设#define x 666 只是编译器在预处理阶段进行宏展开,将所有的x替换为666,然后再进行编译 二.IDA宏定义头文件 可以在路径\IDA_Pro_7.7…

Dubbo2.7 纯注解使用+ Nacos + Springboot 整合集成

Dubbo2.7 纯注解使用 NacosSpringboot 环境准备篇相关依赖nacos准备代码编写服务提供者服务使用者整体结构图 结果 常规操作篇服务分组服务版本参数传递泛化调用参数校验只订阅延迟暴露服务端异步回调多协议复用多注册中心本地存根 服务治理篇超时时间重试并发控制权限控制服务…

css04笔记

目录 盒子模型 5.7 外边距折叠现象 – ① 合并现象 5.8 外边距折叠现象 – ② 塌陷现象 5.9 行内元素的margin和padding无效情况 一、结构伪类选择器 &#xff08;了解&#xff09;nth-of-type结构伪类选择器 二、伪元素 三、标准流 四、浮动 浮动的代码&#xff1a; …

用 Pygal 模拟掷骰子

这篇博客&#xff0c;我们将学习使用 python可视化包 Pygal 来生成矢量图形文件。针对于需要在尺寸不同的屏幕上显示的图表具有很大用处。因为它们可以自动缩放&#xff0c;以此来适合观看者的屏幕。 . 在这个项目中&#xff0c;我们将对掷骰子的结果进行分析。掷6面的常规骰子…

<Linux> 基础IO(文件操作、文件描述符fd、重定向)

基础IO&#xff08;文件操作、文件描述符fd、重定向&#xff09; 文章目录 基础IO&#xff08;文件操作、文件描述符fd、重定向&#xff09;一、回顾C和C的文件操作二、C语言文件IO1.什么是当前路径&#xff1f;2.C语言文件接口汇总3.默认打开的三个流 三、系统文件IO1.open2.c…

真题详解(索引长度计算)-软件设计(七十一)

真题详解(哈希冲突)-软件设计&#xff08;七十)https://blog.csdn.net/ke1ying/article/details/130566800 在面向对象系统中&#xff0c;一个类定义了大体相似的对象&#xff0c;这些对象共享_____。 属性和行为。 &#xff08;属性就是状态&#xff09; 数据库主要分为用户…

shapefile.js实现shp数据的上传与展示

概述 shapefile是常见的矢量数据格式&#xff0c;但是由于其文件组成结构很难在webgis上直接展示。本文通过express和compressing实现打包后shapefile文件的上传&#xff0c;并结合shapefile.js实现shapefile数据的转换展示。 实现效果 实现代码 1. 后端实现 router.post(/…

Android 引入hunter-debug监测代码运行时函数耗时和参数及返回值,Java(1)

Android 引入hunter-debug监测代码运行时函数耗时和参数及返回值&#xff0c;Java&#xff08;1&#xff09; &#xff08;1&#xff09;在工程的根build.gradle文件里面添加cn.quinnchen.hunter:hunter-debug-plugin引用&#xff1a; buildscript {repositories {mavenCentra…

SAP CAP篇三:定义Model

SAP CAP篇一:快速创建一个Service&#xff0c;基于Java的实现 SAP CAP篇二&#xff1a;为Service加上数据库支持 文章目录 理解CAP的ModelDomain-Driven DesignKISSBasic TypesCommon Reuse TypecuidmanagedtemporalCountry, Currency, LanguagecodeList Assocation & Comp…