一般情况下,当发现 Windows 系统受到入侵而需要对系统进行取证分析的时候,首先需要关闭系统,然后对硬盘进行按位(bit-level)备份。
但是有些重要的入侵数据一旦关机往往会丢失。这些证据主要存在于被入侵机器的寄存器、缓存、内存中。主要包括网络连接状态、正在运行的进程等信息。这些数据被称为易失性数据。
主要的易失性数据包括:
- 系统日期和时间
- 当前运行的活动进程
- 当前的网络连接
- 当前打开的端口
- 在打开的套接字(socket)上监听的应用程序
- 当前登录的用户
- 剪贴板数据
Windows 系统中一些可以用来得到易失性数据的命令:
- ipconfig:查看系统 IP 地址
- netstat:列出所有监听端口以及这些端口的所有连接
- nbtstat:列出最近 10 分钟内的 NetBIOS 连接
- net:列出 NetBIOS 连接、用户账号、共享文件夹等信息
- arp:本机的 ARP 缓存表
- doskey:显示打开 cmd.exe 命令解释程序的命令记录
初始信息收集步骤
① 上传一个可信的 shell
因为攻击者可能会将已被攻破的服务器上的 shell 进行修改,因此由其得出的数据不一定可信,因此需要取证人员使用自己的可信的 shell 来获取数据。
② 使用瑞士军刀 netcat 通过网络将数据传送到取证人员的机器上
在数据收集过程中,不能将收集到的数据写回到被入侵机器的硬盘上,因为这会改变机器的状态,所以需要将得到的数据通过一些手段发送给取证人员的机器。
-
首先在取证人员的机器上输入一下命令,是机器处于监听状态(
-l
表示是监听模式,且当监听方收到数据后将关闭套接字接口;如果希望监听方收到数据后继续监听,可以用参数 -L;-p
是监听的端口;>>
是追加重定向,即将得到的数据重定向到某个文件中):
nc -l -p 55555 >> evidence.txt
-
在被入侵的机器上输入以下形式的命令即可将数据传送给取证人员已经开启了监听模式的机器上:
nc 取证人员机器IP 端口 -e 命令
或
命令 | nc 取证人员机器IP 端口
如:
nc 192.168.10.10 55555 -e ipconfig
或
ipconfig | nc 192.168.10.10 55555
即可将 ipconfig 命令的结果传送到取证人员已经开启了监听模式的机器上(假设该机器的 IP 地址为 192.168.10.10)
③ 将“命令”处替换为一些命令来收集易失性数据
如:
date /t | nc 192.168.10.10 55555
下面给出一些需要收集的数据:
-
系统日期和时间:
date /t
time /t
-
系统 IP 地址信息
ipconfig /all
-
记录系统的环境变量
set
-
查看本地连接和远程连接的所有用户
query user
-
查看当前有哪些用户登录到了系统
whoami
-
列出主机缓存中的 NetBIOS 名(如果攻击者发起了某台机器到受害者机器的任意 NetBIOS 连接,并且是最近 10 分钟连接的,那么可以通过以下命令看到该机器的 BIOS 名)
nbtstat -c
-
获取剪贴板内容
-
记录所有动态链接库的信息
-
查看机器上打开的 TCP 和 UDP 端口是由哪些程序开启的
① 先用netstat -ano
查看开启的 TCP 和 UDP 端口的进程 PID 号
② 再用tasklist | findstr "进程 PID号"
即可查看 -
所有正在运行的进程列表信息
tasklist
-
查看被入侵机器上的监听程序和当前连接的网络信息
netstat -an
-
查看 arp 缓存表
arp -a
-
查看系统日志,包括:系统事件日志、应用程序日志、安全事件日志