第一次做数字取证,记下来
神器volatility取证分析
内存取证工具volatility 的使用:
volatility -f <
文件名> –profile=<配置文件> <插件> [插件参数]
使用imageinfo插件来猜测dump文件的profile值:WinXPSP2x86
root@kali:~/quzhen# volatility -fmem.vmem imageinfo
grep是用来搜索特定的字符串,bgrep是用来搜索非文本数据模式和hexdump
volatility –info 用于查看volatility已经添加的profile和插件信息
Volatility -f file.raw
imageinfo 判断当前镜像信息,或kdbgscan,仅适合windows内存镜像
常见插件:
Volatility -f file.raw
–profile=WinXPSP2x86 notepad 查看当前展示的notepad文本
Volatility -f file.raw
–profile=WinXPSP2x86 pslist 列出运行的进程,如果Exit所在的一列显示了日期时间,则表明该进程已经结束了
Hivelist 列出缓存在内存中的注册表
Filescan 扫描内存中的文件
Dumpfiles 将内存中的缓存文件导出
Volatility -f file.raw
–profile=WinXPSP2x86 Memdump -p 进程号 -D ./(导出目录) 将某个进程信息导出/根据pid dump出指定进程
Foremost 2888.dmp 分析dump出的内存文件
Svcscan 扫描windows的服务
Connscan 查看网络连接
Cmdscan 查看命令行上的操作
常见进程:
wscntfy.exe
,Windows系统关键进程,负责检查计算机的安全状态,包括防火墙、病毒防护软件、自动更新三个安全要素,如果这些服务状态不正常,系统就会在状态栏进行告警提示。这个进程也可能会被病毒软件和黑客程序伪装
ctfmon.exe
,Microsoft Office产品套装的一部分,是有关输入法的一个可执行程序。它可以选择用户文字输入程序,和微软Office XP语言条。这不是纯粹的系统程序,但是如果终止它,可能会导致不可知的问题。另外,ctfmon.exe可能被感染上木马而成为病毒程序
wordpad.exe
,是微软Microsoft
Windows自带的免费字处理工具。
Conime.exe
,输入法编辑器
Cmd.exe
,windows系统的命令行程序
第一感觉,ctfmon.exe肯定和ctf有关系…当我没说…
这时有一个密码,weak_auth_top100
foremost 提取date.vmem,有压缩包,需要密码,压缩包内的usbdata.txt
ps:
import os
import sys
mappings = { 0x04:”A”, 0x05:”B”, 0x06:”C”, 0x07:”D”, 0x08:”E”, 0x09:”F”,0x0A:”G”, 0x0B:”H”, 0x0C:”I”, 0x0D:”J”, 0x0E:”K”, 0x0F:”L”, 0x10:”M”,0x11:”N”,0x12:”O”, 0x13:”P”, 0x14:”Q”, 0x15:”R”, 0x16:”S”, 0x17:”T”,0x18:”U”,0x19:”V”, 0x1A:”W”, 0x1B:”X”, 0x1C:”Y”, 0x1D:”Z”, 0x1E:”1″, 0x1F:”2″,0x20:”3″, 0x21:”4″, 0x22:”5″, 0x23:”6″, 0x24:”7″, 0x25:”8″, 0x26:”9″, 0x27:”0″,0x28:”n”, 0x2a:”[DEL]”, 0X2B:” “, 0x2C:” “, 0x2D:”-“, 0x2E:”=”, 0x2F:”[“,0x30:”]”, 0x31:”\”, 0x32:”~”, 0x33:”;”, 0x34:”‘”, 0x36:”,”, 0x37:”.” }
nums = []
keys = open(‘usbdata.txt’)
for line in keys:
if line[0]!=’0′ or line[1]!=’0′ or line[3]!=’0′ or line[4]!=’0′ or line[9]!=’0′or line[10]!=’0′ or line[12]!=’0′ or line[13]!=’0′ or line[15]!=’0′ orline[16]!=’0′ or line[18]!=’0′ or line[19]!=’0′ or line[21]!=’0′ orline[22]!=’0′:
continue
nums.append(int(line[6:8],16))
# 00:00:xx:….
keys.close()
output = “”
for n in nums:
if n == 0 :
continue
if n in mappings:
output += mappings[n]
else:
output += ‘[unknown]’
print(‘output :n’ + output)
脚本跑出flag
1.wireshark流量分析,不要再借助binwalk、foremost…尽量手动提取,提取出来啥谁也说不好,大小差别很大
2.volatility对于Windows系统较好,linux貌似少一些,以下有大佬做profile的方法。
[if !supportLists]1. [endif]首要是安装dwarfdump工具。一般CentOs的源中没有这个所以需要自己下载。(有的说在fedora的源中下载,我发现根本没法用,或者我不会用那个)
首先安装:
yum install elfutils-devel
然后获取dwarfdump的源文件:
wget‘http://www.prevanders.net/libdwarf-20140413.tat.gz’
解压后进入文件夹
./configure
make
然后进入dwarfdump文件夹下1
make install
dwarfdump装好了
2.CentOs中可能没有安装g++
安装g++的方法是:
yum install gcc-c++
3.在volatility的文件夹下找到tools文件夹下的linux文件夹,
在volatiltiy/volatility/tools/linux/目录下:
make
会生成一个dwarfdump格式的文件moudle.dwarfdump
4.将boot文件夹下的systemmap和第三步生成的moudle.dwarf打包生成profile
zip CentOs6.6.zipmodule.dwarfdump /boot/Systemmap-…
Systemmap会因为内核不同而不同