内存取证 volatility

0xThrL狗蛋师傅整理的内存取证笔记   有问题可以联系狗蛋师傅VX:GD0xThrL

这是国赛里面有的内存取证相关的学习笔记绝对的详细

目录

一、安装Volatility(Linux版)

二、Volatility命令大全

三、内存取证实操


Volatility是一款开源的内存取证分析工具,支持Windows,Linux,MaC,Android等多类型操作系统系统的内存取证方式。该工具是由python开发的,目前支持python2、python3环境。目前作者已公布了两个版本的Volatility,Volatility2是基于py2环境,Volatility3是基于py3环境,接下来小编将带领大家分别对这两个环境进行安装。

这是国赛样题公布出的内存取证方向师傅们在练手

第二部分 数字取证调查(150分)

任务2 :基于Linux的内存取证(40分)

A集团某服务器系统感染恶意程序,导致系统关键文件被破坏,请分析A集团提供的系统镜像和内存镜像,找到系统镜像中的恶意软件,分析恶意软件行为。

本任务素材清单:存储镜像、内存镜像。

请按要求完成该部分的工作任务。

任务2:基于Linux的内存取证

序号

任务内容

答案

1

请提交用户目录下压缩包的解压密码

2

请提交root账户的登录密码

3

请指出攻击者通过什么命令实现提权操作

4

请指出内存中恶意进程的PID

5

请指出恶意进程加密文件的文件类型

一、安装Volatility(Linux版)

  • 在volatility官网下载一个linux版本的安装包

  • 下载下来的文件放到/usr/local/sbin目录下 用户自己编译的软件默认会安装到这个目录下(差不多就等于放可执行文件的)
    • 解压:unzip FileName.zip
    • 文件夹改名 mv FileName volatility

  • 在使用是可能会权限失败,那就单独吧文件拿出来使用

  • 添加环境变量 echo $PATH

  • 可以直接使用了

  • 可以直接分析 vmem文件

二、Volatility命令大全

  • volatility -f xxx.vmem imageinfo 分析系统 第一步 知道系统后加上 profile=xxxx
  • 查看用户名和密码
    • volatility -f xxx.vmem profile=Win7SP1x64 hashdump/lsadump
  • 查看进程
    • volatility -f xxx.vmem --profile=Win7sp1x64 pslist/pstree(与pslist差不多,但可以识别子进程和父进程)/psscan显示隐藏进程
  • 提取进程
    • volatility -f xxx.vmem --profile=Win7sp1x64 memdump -p [PID] -D 保存路径 以dump形式保存
    • volatility -f xxx.vmem --profile=Win7sp1x64 procdump -p [PID] -D 保存路径 以exe形式保存
    • 同时还支持输入 --offset地址的方式来提取一些无法从pid提的进程
    • volatility -f xxx.vmem --profile=Win7sp1x64 procdump --offset 0x7d789b50 -D 路径

  • 查看命令行操作
    • volatility -f xxx.vmem --profile=Win7sp1x64 cmdscan
  • 找计算机用户名 步骤
    • volatility -f xxx.vmem --profile=Win7sp1x64 hivelist 查看注册表
    • 找到system的位置 我这里是0xfffff8a000024010

    • 打开注册表键值
       volatility -f xxx.vmem --profile=Win7sp1x64 printkey

    • volatility -f xxx.vmem --profile=Win7sp1X64 -o 0xfffffffffffff(system地址)printkey 指定查看 查看system的注册表用户有哪些

    • volatility -f xxx.vmem --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001\(键值)" 查看system注册表键值

    • 一定要注意的是反斜杠 \\\\\\\\\\ 一般计算机名都在“ControlSet001\Control\ComputerName\ComputerName”
    • 此题的计算机名就在此

  • 注册表数据
    • volatility -f xxx.vmem --profile=Win7sp1x64 hivelist (找注册表system位置)

    • volatility -f xxx.vmem --profile=Win7sp1x64 hivedump -o 0xfffff8a000024010(注册表的Virtual)

  • 查看网络连接
    • volatility -f xxx.vmem --profile=win7sp1x64 netscan

  • 查看Windows服务
    • volatility -f xxx.vmem --profile=Win7SP1x64 svcscan
  • 查看浏览器历史记录
    • volatility -f xxx.vmem --profile=Win7SP1x64 iehistory

  • 查看剪切板数据
    • volatility -f xxx.vmem --profile=Win7SP1x64 clipboard

    • 加参数 -v 可以到处数据
    • volatility -f xxx.vmem --profile=Win7SP1x64 clipboard -v >clip.txt

  • 查看所有进程
    • volatility -f xxx.vmem --profile=Win7sp1x64 dilllist
    • 加参数 -p [PID] 可以看进程相关的dll文件列表

  • 获取内存中正在运行的程序
    • volatility -f xxx.vmem --profile=Win7sp1x64 userassist

        除了这些命令以外,在取证中还会用到一些命令  我也给大家整理了一下  

grep xxx -A 5 -B 5 / grep xxx -C 5
-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
binwalk xxx.exe 分析文件

三、内存取证实操

我这里拿的是OtterCTF靶场里面的取证题实操   就是水懒CTF   绝对的干货实操  绝对的详细

  • 1.What the password?
    • you got a sample of rick’s PC’s memory. can you get his user password?(你得到了瑞克电脑内存的样本,你能得到他的用户密码吗?
    • 使用 volatility -f qz.vmem imageinfo 获取基本信息 profile为Win7SP1x64

    • volatility -f qz.vmem --profile=Win7SP1x64 hashdump 用hashdump查看一下密码 发现全是MD5加密过的

    • volatility -f qz.vmem --profile=Win7SP1x64 lsadump 用lsadump获取一下明文的密码

    • 得到 CTF{MortyIsReallyAnOtter}
  • 2.General Info
    • Let’s start easy - whats the PC’s name and IP address?(让我们从简单的开始–电脑的名称和IP地址是什么?)
    • volatility -f qz.vmem --profile=Win7SP1x64 netscan 使用netscan查看IP地址 得到IP地址:192.168.202.131

    • volatility -f qz.vmem --profile=Win7SP1x64 hivelist 使用hivelist查看注册表

    • volatility -f qz.vmem --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey 使用printkey查看注册表system值

    • 接下来在表里进行翻找
      • volatility -f qz.vmem --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001"

      • volatility -f qz.vmem --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001\Control" 翻到这里时发现了一个名为ComputerName的值

      • volatility -f qz.vmem --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001\Control\ComputerName" 一直不停的解析

      • volatility -f qz.vmem --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001\Control\ComputerName\ComputerName"

    • 电脑名称: WIN-LO6FAF3DTFE IP地址:192.168.202.131
  • 3.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地址是什么?)
    • volatility -f qz.vmem --profile=Win7SP1x64 netscan 使用netscan查看 在这里看到 LuanrMS google发现是一款游戏 但是没有找到服务器的IP地址

    • volatility -f qz.vmem --profile=Win7SP1x64 netscan|grep LunarMS.exe 使用|grep精准查找一下

    • CTF{LunarMS} CTF{77.102.199.102}
  • 4.NameGame
    • We know that the account was logged in to a channel called Lunar-3. what is the account name?(我们知道该账户登录了一个名为Lunar-3的频道。什么是账户名称?)
    • 方法一
      • strings qz.vmem | grep "Lunar-3" -C 5

        • -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
    • 方法二
      • strings qz.vmem | grep Lunar-3 -A 5 -B 5

        • -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
        • -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
    • CTF{0tt3r8r33z3}
  • 5.NameGame2
    • 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} 瑞克的角色叫什么名字?
    • volatility -f qz.vmem --profile=Win7SP1x64 memdump -p 708 -D ./ 先将LunarMS.exe dump出来 然后进一步分析

    • hexdump 708.dmp | grep "5a 0c 00" -A 3 -B 3 进行搜索 或者放到WinHex里面找也可以

    • CTF{M0rtyL0L}
  • 6.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?(愚蠢的瑞克总是忘记他的电子邮件的密码,所以他使用在线存储密码服务来存储他的密码。他总是复制和粘贴密码,这样他就不会弄错。瑞克的电子邮件密码是什么?)
    • volatility -f qz.vmem --profile=Win7SP1x64 clipboard 使用clipboard查看剪切板

    • CTF{M@il_Pr0vid0rs}
  • 7.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)(我们提取瑞克的电脑内存转储的原因是有一个恶意软件感染。请找到恶意软件的进程名称(包括扩展名))
    • volatility -f qz.vmem --profile=Win7SP1x64 pslist 使用pslist查看一下进程

    • 发现一个问题 在程序中运行着一个vmware-tray.exe 此程序是虚拟机在任务栏里面的那个小图标 但是除了他以外没有任何关于虚拟机的服务
    • volatility -f qz.vmem --profile=Win7SP1x64 pstree 使用pstree查看一下父进程子进程

    • 很奇怪的是这个vmware-tray.exe 居然是Rick And Morty的子进程 更加验证刚才的猜疑
    • volatility -f qz.vmem --profile=Win7SP1x64 dlllist -p 3720 使用dlllist查看一下进程相关的dll文件列表

    • 这个进程的执行目录是在temp,所以说一看就不是什么正经程序
    • CTF{vmware-tray.exe}
  • 8.Path To Glory
    • How did the malware got to rick’s PC? It must be one of rick old illigal habits…(恶意软件是如何进入里克的电脑的?这一定是瑞克的一个老习惯…)
    • 这个题没给什么思路 但是在上一题的时候提到了是Rick And Morty的子进程,于是搜索一下跟这个有关的文件,搜到了三个种子文件,每个都dump下来

    • 这三个都进行筛选字符,只有第二个发现了可疑字符串

    • 当做答案提交时 结果错了 最后上网看师傅们的wp发现末尾的e是没有的,我也不明白为什么
    • CTF{M3an_T0rren7_4_R!ck}
  • 9.Path To Glory 2
    • Continue the search after the the way that malware got in.(在恶意软件进入后继续搜索。) #在网上有一万种解法 我写一下自己的思路
    • 在上一题的时候发现了三个.exe文件和种子文件 那种子文件是需要下载的

    • 浏览器的进程dump下来

    • 然后用strings命令打印一下 加上grep筛选一下 条件(种子名)=Rick And Morty season 1 download.exe.torrent

    • CTF{Hum@n_I5_Th3_Weak3s7_Link_In_Th3_Ch@in} 最后需要吧Year去掉
  • 10.Bit 4 Bit
    • We’ve found out that the malware is a ransomware. Find the attacker’s bitcoin address.(我们发现这个恶意软件是勒索软件。找到攻击者的比特币地址。)
    • 勒索软件总喜欢吧勒索标志丢在显眼的地方,所以搜索桌面的记录
    • volatility -f qz.vmem --profile=Win7SP1x64 filescan | grep "Desktop" 两个文件 一个flag.txt 这题肯定用不到 另一个Read_it

    • 提取Read_it volatility -f qz.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007d660500 -D ./ 提示查看程序或多更多信息(也就是上面的Vmware-tray.exe)

    • volatility -f qz.vmem --profile=Win7SP1x64 memdump -p 3720 -D ./ 提取出来

    • 提取后 根据题目提示 ransomware 搜索赎金相关内容
    • strings -e l 3720.dmp | grep -i -A 5 "ransomware"

    • CTF{1MmpEmebJkqXG8nQv4cjJSmxZQFVmFo63M}
  • 11.Graphic's For The Weak
    • There’s something fishy in the malware’s graphics.(恶意软件的图形中有些可疑。)
    • volatility -f qz.vmem --profile=Win7SP1x64 procdump -p 3720 -D ./ 使用procdump转存进程为可执行的文件

    • binwalk executable.3720.exe 使用binwalk分析文件 发现存在图片

    • 使用dnSpy逆向文件 在资源处就能看到此图片

    • CTF{S0_Just_M0v3_Socy}
  • 12.Recovery
    • Rick got to have his files recovered! What is the random password used to encrypt the files?(里克得把他的档案找回来!用于加密文件的随机密码是什么?)
    • 这一题就是找出加密文件所使用的的密码
    • 分析exe可以在form1中看到两个函数 第一个创建密码是随机的,然后是发送密码sendpassword函数、密码格式为computerName和userName还有password拼接后发送

    • 前面得到的computeName是 WIN-LO6FAF3DTFE ,userName是Rick,所以这个函数发送的字符串应该是WIN-LO6FAF3DTFE-Rick-password
    • 接下来直接去勒索软件的内存搜索或者直接在题目内存搜索都可以
    • 勒索软件内存: strings -el 3720.dmp | grep 'WIN-LO6FAF3DTFE-Rick' 加参数C是为了确保它100%可以显示

    • 题目内存:strings -el qz.vmem | grep 'WIN-LO6FAF3DTFE-Rick' 一样可以出来 就是有点慢

    • CTF{aDOBofVYUNVnmp7}
  • 13.Closure
    • Now that you extracted the password from the memory, could you decrypt rick’s files?(既然你从内存中提取了密码,你能解密瑞克的文件吗?)
    • 在上一题中已经获得了密码 aDOBofVYUNVnmp7 ,这个题让我们解密文件
    • 在前面分析软件时 发现多次出现Desktop 猜想被加密的文件就放在桌面

    • 发现有两个文件 READ_IT已经看过 所以这次将flag.txtdump下来

    • volatility -f qz.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007e410890 -D ./

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

    • 先将文件末尾多余的0去掉 再把后缀加上.png.locked

    • 打开解密后的文件得到 CTF{Im_Th@_B3S7_RicK_0f_Th3m_4ll}

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Windows 2003是微软公司发布的一款操作系统,其内存取证是指通过分析和提取Windows 2003操作系统的内存数据来获取相关的取证证据。 在进行Windows 2003内存取证的过程中,需要借助一些专门的工具和技术。首先,需要使用内存取证工具,如Volatility Framework等,来对内存进行分析和提取。这些工具可以从内存镜像中提取出进程、线程、打开的文件、网络连接等信息,从而帮助取证人员获取到被研究系统的相关证据。 其次,需要了解Windows 2003操作系统的内存管理机制和数据结构。这样可以更好地理解内存中存储的数据的结构和格式,有助于提取和解释相关证据。例如,Windows 2003使用的是物理内存和虚拟内存的管理方式,需要理解这两种内存的分配与释放机制。 此外,还需要注意在进行内存取证时可能遇到的一些挑战和限制。例如,Windows 2003在32位系统上的内存限制为4GB,如果目标系统中的内存大于4GB,可能需要采取特殊的处理方式。另外,操作系统的版本和补丁等也会影响内存数据的分析和提取。 最后,进行内存取证时需要保持数据的完整性和可靠性,确保所提取的证据在法庭上具有可信度。因此,需要采用专业的取证工具和方法,并遵循取证规范和程序进行操作,记录下相关的过程和操作步骤。 综上所述,Windows 2003内存取证是通过分析和提取内存数据来获取相关证据的过程,需要借助专门的工具和技术,同时需要了解操作系统的内存管理机制和数据结构,保证数据的完整性和可靠性。这一过程在数字取证领域具有重要的应用价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0xThrL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值