Lingze's blog Lingze's blog
timeline
about
friends
categories
tags

lingze

bin不是垃圾桶的意思!
timeline
about
friends
categories
tags
  • labbb
  • memlab
lingze
2021-08-07
目录

memlab

# memlab

  • 工具安装
  • 使用
    • imageinfo
    • pslist
    • cmdscan
    • consoles
    • mftparser
    • mimikatz
    • envars
  • memlab0
  • memlab1
    • 基本信息
    • flag1
    • flag2
    • flag3
  • memlab2
  • memlab3
  • memlab4
  • memlab5
  • memlab6

一个关于取证的ctf题目集合, github (opens new window).

# 工具安装

最主要的工具就是volatility, 是python2运行的工具, 注意使用的时候使用对应的python,

其实这个工具现在有volatility3, 为兼容python3的版本, 但是相关插件等不够多, 所以现在还是用python2的版本多一些,

下载代码:

git clone https://github.com/volatilityfoundation/volatility.git
cd volatility
1
2

可以先运行一下, 查看缺少的库,

python vol.py 
1

安装必须的库:

pip2 install pycrypto
pip2 install distorm3
# 这个是为了mimikatz插件
pip2 install construct==2.5.5-reupload
1
2
3
4

安装一个比较实用的第三方插件, mimikatz (opens new window), 放到./volatility/plugins内,

sudo python2 setup.py install
1

安装成功的话运行vol.py -h会有输出内容.

# 使用

一般是使用如下的命令, 其中FILE是我们的内存映像文件, XXX表示对应的文件类型, 我们通过imageinfo指令获取类型以后指定对应类型来进行后续的分析, command是指令, 一般是调用volalitity中的内置或外部插件,

vol.py -f FILE --profile=XXX  command
1

# imageinfo

分析映像文件的文件类型, 使用如下:

vol -f FILE imageinfo
1

上面示例的话是可以得到对应的profile为Win7SP1x86, 于是可以进行后续的操作,

后续一般情况下在分析过程中, 我们会关注的几个部分:

  • 活动进程
  • 终端下运行的指令
  • 隐藏的进程或者退出的进程
  • 浏览器历史记录

# pslist

一般需要注意的是,

  • 命令行工具
  • 资源管理器

# cmdscan

非常强大的功能, 会查找出输入到cmd.exe中运行的指令, 包括某些攻击者从后门传入的指令,

实现原理是查找csrss.exe和conhost.exe的内存, 查找CONSOLE_HISTORY获取历史指令.

# consoles

打印所有控制台上的输入输出,其实和cmdscan类似, 但是这个功能会扫描CONSOLE_INFORMATION, 他会收集当时的整个屏幕缓冲区,

打印当时整个屏幕信息, 不仅打印输入的数据, 还会打印对应的输出等,

此外还会获取运行指令的相关信息和某些别名等,

比如攻击者会定义别名来隐藏自己的时候

# mftparser

会解析整个文件结构,然后打印所有的文件, 一般来说我们会配合grep -C一起使用,

# mimikatz

获取windows内的密码信息,

其中这个密码使用hash储存起来, mimikatz插件实现了对这个hash的爆破,

# envars

获取系统内的环境变量

# memlab0

获取信息, 是win732位,

然后在consoles中发现了C:\Python27\python.exe C:\Users\hello\Desktop\demon.py.txt指令,

然后通过mftparser查找到文件内容:

$DATA
0000000000: 61 20 3d 20 22 31 5f 34 6d 5f 62 33 74 74 33 72   a.=."1_4m_b3tt3r
0000000010: 7d 22 0d 0a 0d 0a 62 20 3d 20 22 22 0d 0a 0d 0a   }"....b.=.""....
0000000020: 66 6f 72 20 69 20 69 6e 20 61 3a 0d 0a 20 20 20   for.i.in.a:.....
0000000030: 20 62 20 3d 20 62 20 2b 20 63 68 72 28 6f 72 64   .b.=.b.+.chr(ord
1
2
3
4
5

可以看到前一半flag,

然后envars中有这么一项:

    2424 conhost.exe          0x002934b0 Thanos                         xor and password
1

于是使用mimikatz找到密码:

wdigest  hello            hello-PC         flag{you_are_good_but  
1

得到完整flag,

# memlab1

题目描述是有三个flag的, 其中关键信息是, 有一个flag在某个画图程序内,

# 基本信息

首先检测系统信息, 是win7 x64

然后pslist, cmdline, consoles,

# flag1

在consoles中发现这个

----
Screen 0x1e0f70 X:80 Y:300
Dump:
Microsoft Windows [Version 6.1.7601]                                            
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.                 
                                                                                
C:\Users\SmartNet>St4G3$1                                                       
ZmxhZ3t0aDFzXzFzX3RoM18xc3Rfc3Q0ZzMhIX0=                                        
Press any key to continue . . .        
1
2
3
4
5
6
7
8
9

看起来是个base64, 解码得到一个flag

$ echo "ZmxhZ3t0aDFzXzFzX3RoM18xc3Rfc3Q0ZzMhIX0=" | base64 -d 
flag{th1s_1s_th3_1st_st4g3!!}

1
2
3

# flag2

在cmdline中发现正在rar压缩这个important.rar,

WinRAR.exe pid:   1512
Command line : "C:\Program Files\WinRAR\WinRAR.exe" "C:\Users\Alissa Simpson\Documents\Important.rar"
************************************************************************
1
2
3

提取出来文件 image-20210730191506535

解压, 要求输入对应的hash值, 且注意要大写, F4FF64C8BAAC57D22F22EDC681055BA6

image-20210730192043760

解压成功会得到一个图片flag,

image-20210730192221589

flag{w3ll_3rd_stage_was_easy}

# flag3

然后题目提示中的正在写字, 同时看到进程mspaint.exe, 应该就是在里面写字了, dump出文件, 然后使用gimp调整可以看到一个反向的图片, 倒过来就好了,

image-20210730195248593

# memlab2

题目提示说环境变量相关的操作,

在envars中找到了一个奇怪的字符串, base64解密是flag,

image-20210730214848179

flag{w3lc0m3_T0_$T4g3_!_Of_L4B_2}

然后提到密码管理器和浏览器,

在进程中可以看到keepasword和chrome,

dump出来chrome历史文件, 并在线sqllite解析出url, 或者直接使用chromehistory的第三方插件,

可以知道获得到一个mega地址, 然后下载下来一个important.zip,

image-20210730215210305

他需要一个lab1 的flag ,

image-20210730215435755

$ echo -n "flag{w3ll_3rd_stage_was_easy}" | sha1sum             
6045dd90029719a039fd2d2ebcca718439dd100a  -
1
2

解压开是important.png,

image-20210730215526800

flag{OK_So_Now_St4g3_3_is_DoNE!!}

然后另一个一点是程序内的这个Hidden.kdbx文件, 查了下是KeePass保存密码的文件, 然后用这个密码管理器打开即可,

image-20210730215637826

他又需要一个password,

在文件中查找, 正好有个Password.png,

image-20210730215821785

其中右下角给出了password,

image-20210730215855076

然后flag在

image-20210730220000939

flag{w0w_th1s_1s_Th3_SeC0nD_ST4g3_!!}

# memlab3

首先常规分析, cmdline中有两个奇怪的数据,

image-20210730223115783

首先先导出了几个数据, 从python脚本分析,

import sys
import string

def xor(s):
	a = ''.join(chr(ord(i)^3) for i in s)
	return a


def encoder(x):
	return x.encode("base64")


if __name__ == "__main__":

	f = open("C:\\Users\\hello\\Desktop\\vip.txt", "w")
	arr = sys.argv[1]
	arr = encoder(xor(arr))
	f.write(arr)
	f.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

写了个解密脚本, 得到第一段flag,

import base64

def xor(s):
	a = ''.join(chr(i^3) for i in s)
	return a

if __name__ == "__main__":

	s = b"am1gd2V4M20wXGs3b2U="

	s1 = base64.b64decode(s) 
	print(xor(s1))

1
2
3
4
5
6
7
8
9
10
11
12
13

inctf{0n3_h4lf

然后根据题目描述中反复提到的steghide是个处理图片隐写的工具

_1s_n0t_3n0ugh}

# memlab4

首先检查, 发现似乎没啥东西, 然后导出文件以后发现文件列表有个Important文件,

但是文件已经被删除了, 我们无法导出出来, image-20210802103154691

这里需要了解下ntfs中的mft

首先, 从windows nt开始, windows使用ntfs(New Technology File System), 这是一种新的文件格式,

其中每个卷对应会有mft(Master File Table), 其中的每个文件都会对应有mft中的一项,

文件增加的时候mft会增加对应的一项,

文件访问的时候首先会查询mft中的对应项, 查看对应属性等,

但是文件删除的时候, mft会标记为空闲并且对应的表项可以被重复使用,但是这个内存空间不会被立刻清除,

详细的格式 (opens new window),

于是我们可以从mft中尝试恢复这个文件,

image-20210802110039334

image-20210802110050150

于是就得到了这个文件, 其中就是flag

inctf{1_is_n0t_EQu4L_7o_2_bUt_th1s_d0s3nt_m4ke_s3ns3}

# memlab5

  • 工具安装
  • 使用
    • imageinfo
    • pslist
    • cmdscan
    • consoles
    • mftparser
    • mimikatz
    • envars
  • memlab0
  • memlab1
    • 基本信息
    • flag1
    • flag2
    • flag3
  • memlab2
  • memlab3
  • memlab4
  • memlab5
  • memlab6

在进程中可以看到winrar进程,然后可以发现对应的文件SW1wb3J0YW50.rar,

导出出来以后解压此文件需要一个密码, 题目也说需要第一个flag才能得到第二个flag,

于是继续分析,

最后用iehistory找到一个奇怪的文件名,然后得到对应的文件名, 是个base64

flag{!!_w3LL_d0n3_St4g3-1_0f_L4B_5_D0n3_!!}

然后解压得到图片

image-20210803213843336

# memlab6

首先常规检查, 在cmdline中发现flag.rar,

WinRAR.exe pid:   3716
Command line : "C:\Program Files\WinRAR\WinRAR.exe" "C:\Users\Jaffa\Desktop\pr0t3ct3d\flag.rar"
***********************************************************************
1
2
3

然后导出文件, 发现需要解压密码,

在console中可以看到使用了env指令, 于是我们也尝试查看环境变量, 找到了winrar的密码,

image-20210807161331548

于是解压得到第二段flag:

image-20210807161408948

然后题目提示使用浏览器聊天, 我们使用chromehistory可以获取到历史记录, 然后可以得到一个google文档,

image-20210807162159405

其中有个文件链接,

image-20210807162243626

但是文件需要密码,

然后我们通过其他线索,screenshot, 可以发现某个截图存在字符串Mega Drive Key, 然后直接用strings Memlab6.raw | grep "Mega Drive Key", 找到了密码,

image-20210807154208306

然后010中查看发现是IHDR错误, i改成I就可以了

image-20210807154145623

image-20210807154247034

上次更新: 6/24/2025, 5:07:55 AM
Theme by Vdoing | Copyright © 2019-2025 lingze | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式