取证

取证(Forensic)

内存取证

工具:volatility,DiskGenius

volatility

https://github.com/volatilityfoundation/volatility

镜像基本信息(得到profile):

volatility -f mem.data imageinfo

python3 vol.py -f mem.data windows.info

搜索进程、导出内存块:

volatility -f mem.data --profile=XXX pslist

python3 vol.py -f mem.data windows.pstree

volatility -f mem.data --profile=XXX memdump -p 2768 -D ./

查看命令行输入、命令行历史记录:

volatility -f mem.data --profile=XXX cmdline

python3 vol.py -f mem.data windows.cmdline

volatility -f mem.data --profile=XXX cmdscan

volatility -f mem.data --profile=XXX consoles

查看可疑文件、导出文件:

volatility -f mem.data --profile=XXX filescan | grep -E ".zip|.rar|.jpg|.png|.txt|.bmp|.7z"

volatility -f mem.data --profile=XXX dumpfiles -D ./ -Q 0x000000001e85f430 -n

python3 vol.py -f mem.data windows.dumpfiles --pid 8180

特殊文件后缀:

evtx - Windows系统日志

无法导出.dat文件,加 -u 参数(-u = —unsafe relax safety constraints more data)
volatility -f mem.data dumpfiles -r pdf$ -i --name -D dumpfiles/ -u

dumpfiles 参数:
参考:https://www.andreafortuna.org/2017/07/17/volatility-my-own-cheatsheet-part-4-kernel-memory-and-objects

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-r REGEX, --regex=REGEX
Dump files matching REGEX
-i, --ignore-case Ignore case in pattern match
-o OFFSET, --offset=OFFSET
Dump files for Process with physical address OFFSET
-Q PHYSOFFSET, --physoffset=PHYSOFFSET
Dump File Object at physical address PHYSOFFSET
-D DUMP_DIR, --dump-dir=DUMP_DIR
Directory in which to dump extracted files
-S SUMMARY_FILE, --summary-file=SUMMARY_FILE
File where to store summary information
-p PID, --pid=PID Operate on these Process IDs (comma-separated)
-n, --name Include extracted filename in output file path
-u, --unsafe Relax safety constraints for more data
-F FILTER, --filter=FILTER
Filters to apply (comma-separated)

查看内存中记录的当时正在运行的程序、运行次数、最后运行时间:

volatility -f mem.data --profile=XXX userassist

查看截图:

volatility -f mem.data --profile=XXX screenshot -D ./

查看剪贴板:

volatility -f mem.data --profile=XXX clipboard

volatility -f mem.data --profile=XXX clipboard -v

查看当前notepad文本:

volatility -f mem.data --profile=XXX notepad

查看账户与密码:

volatility --plugins=plugins/ -f mem.data --profile=XXX mimikatz

查看系统用户名:

volatility -f mem.data --profile=XXX printkey -K "SAM\Domains\Account\Users\Names"

查看最后登录系统的账户:

volatility -f mem.data --profile=xxx printkey -K "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"

查看网络连接:

volatility -f mem.data --profile=XXX netscan

查看缓存在内存中的注册表:

volatility -f mem.data --profile=XXX hivelist

提取注册表:

volatility -f mem.data --profile=XXX dumpregistry (dumpregistry插件)

提取注册表system和SAM虚拟地址的hash内容:

volatility -f mem.data --profile=XXX hashdump

volatility -f mem.data --profile=XXX hashdump -y 0xfffff8a000024010 -s 0xfffff8a00167a010 -D ./

提取内存中主文件表(MFT)记录信息(文件属性):

volatility -f mem.data --profile=XXX mftparser > mft.txt

提取IE历史记录:

volatility -f mem.data --profile=XXX iehistory

显示环境变量:

volatility -f mem.data --profile=XXX envars

python3 vol.py -f mem.data windows.envars

提取Chrome历史记录(插件):

Chrome Cookies 的本质是 SQLite。

Chrome 80 以后更改了 Cookies 的加密方法。

cookies 表 encrypted_value 字段不为 V10 / V11 开头,是 Chrome 79 及以前版本的 Cookies。

volatility --plugins=plugins/ -f mem.data chromehistory

volatility --plugins=plugins/ -f mem.data chromevisits -Q(visits – QUICK)

volatility --plugins=plugins/ -f mem.data chromevisits(visits – FULL)

volatility --plugins=plugins/ -f mem.data chromesearchterms

volatility --plugins=plugins/ -f mem.data chromedownloads(Standard Text Output)

volatility --plugins=plugins/ -f mem.data chromedownloads --output=csv(CSV Output)

volatility --plugins=plugins/ -f mem.data chromedownloads --output=body(Bodyfile Output)

volatility --plugins=plugins/ -f mem.data chromedownloadchains

volatility --plugins=plugins/ -f mem.data chromecookies | more(Cookies – Basic example)

volatility --plugins=plugins/ -f mem.data chromecookies(Cookies – No Decryption)

volatility --plugins=plugins/ -f mem.data chromecookies -K "rq2uadV+VvAD+IBiBeJ75a=="(Cookies – Decrypted)

提取登录密码(LassPass插件):

volatility --plugins=plugins/ -f mem.data --profile=XXX lasspass

USB设备相关(usbstor插件):

volatility --plugins=plugins/ -f mem.data --profile=XXX usbstor

磁盘取证

vmdk

AccessData FTK Imager 挂载

  • Bitlocker
    1. 磁盘+内存

      Elcomsoft Forensic Disk Decryptor

      volume选择挂载过的物理磁盘,memory dump选择内存文件,一直往后解密。

社工(信息收集)

  • 用户名

    https://github.com/sherlock-project/sherlock

    Sherlock Project提供了一个非常强大的命令行工具Sherlock来查找社交网络(社交网络列表及规则可自定义扩展延伸)中的用户名,以方便您进行信息收集相关的安全保障工作。

    命令:python3 sherlock.py user1 user2 user3

WiFi

参考:How to decrypt stored Windows passwords using mimikatz and DAPA

工具:mimikatz

保存/使用主密钥(master keys):

dpapi::cache /save /file:cache.bin

提取WiFi密码:

dpapi::wifi /in:"{fullpath}\file.xml"

Cookies

工具:mimikatz

保存/使用主密钥(master keys):

Windows 下:文件夹选项 -> 查看 -> 取消勾选 “隐藏受保护的操作系统文件” 才能看到 SID 文件夹
下的 protect 文件

dpapi::masterkey /in:S-1-5-21-262715442-3761430816-2198621988-1001\57935170- beab-4565-ba79-2b09570b95a6 /sid:S-1-5-21-262715442-3761430816-2198621988-1001 /password:<登录密码>

解密Cookies:

dpapi::chrome /in:"Cookies"