在分析Windows系统登录用户的活动时,对注册表的调查是一项重要内容。Windows注册表是帮助Windows控制硬件、软件、用户环境和Windows界面的一套数据文件。在本文中,笔者将分析注册表的一些重点位置,这对于取证调查人员是极为有用的。
本文涉及到的的工具为多种Windows版本(如Windows XP、Vista、Windows Server 2003 及Windows Server 2008)中的一个reg.exe命令。下面笔者展示其强大的注册表控制功能。
自动启动的注册表键
Windows注册表中有三个键可以控制系统的自动启动行为:在用户登录到一个系统上时,这些注册表键中设置的程序可被自动执行:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE \Software\Microsoft\Windows\CurrentVersion\Runonce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunonceEx
在系统启动时,许多恶意软件(当然也包括许多合法程序)通过向这些注册表位置添加程序项目而得以运行。而使用reg命令就可以访问这些位置,如下所示:
C:\> reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run
C:\> reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Runonce
C:\> reg query HKLM\Software\Microsoft\Windows\CurrentVersion\RunonceEx
因为一台典型的Windows计算机可能拥有多个合法的程序,取证的调查人员通过研究每一个发现的项目就可以将善意的程序与恶意的程序分离开来。通过抓取非正常自动运行的程序进一步分析,或者上网搜索可以区别程序的善恶。
在从HKEY_LOCAL_MACHINE中查询这些项目时,可使用reg命令访问网络上拥有SMB连接的一台远程计算机。不幸的是,这个reg工具在远程仅能对HKEY_LOCAL_MACHINE和HKEY_ USERS中的项目有效。它无法从注册表中的其它位置抽取数据。这就要求取证人员在目标系统上运行命令,以获取HKEY_CURRENT_USER数据。
要在远程通过reg命令查询HKEY_LOCAL_MACHINE和HKEY_ USERS中的项目,在目标机器中必须启动远程注册表服务,此服务在许多Windows版本中默认情况下是被启用的。运用管理员账号与目标系统建立一个SMB会话:
C:\> net use \\目标系统的IP地址  /u:管理员账号名称
在收到提示后,输入管理员的口令,然后,在这个打开的会话中,使用reg命令查询HKEY_LOCAL_MACHINE中的项目:
C:\> reg query \\目标系统的IP地址\HKLM\Software\Microsoft\Windows\CurrentVersion\Run
USB驱动器历史调查
除了自动启动的键,注册表还可以记住曾插入到系统中的每一个USB设备。为查询Windows系统中曾经插入的USB设备,可运行下面的命令:
C:\> reg query HKLM\System\currentcontrolset\enum\usbstor /s
运行结果如下,下图1显示出,运行后程序找到一个三星闪盘:
 


 

注意,在这里,笔者在命令的尾部使用了“/s”,它告诉从指定的注册表分支中搜索所有项目信息。可以看出,此命令生成的数据是很多的,所以调查人员可能需要通过“more”命令(|more)来查看,还可以将此命令的输出结果交给一个文本文件。
由运行结果可以看出,此命令的输出结果包括每一个设备制造商的及其版本号的小结,为了清楚起见,笔者将刚运行的命令部分结果列示如下:
C:\>reg query HKLM\System\currentcontrolset\enum\usbstor /s >d:\usb.txt

C:\>reg query HKLM\System\currentcontrolset\enum\usbstor /s

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\System\currentcontrolset\enum\usbstor

HKEY_LOCAL_MACHINE\System\currentcontrolset\enum\usbstor\Disk&Ven_Netac&Prod_OnlyDisk&Rev_1.11

HKEY_LOCAL_MACHINE\System\currentcontrolset\enum\usbstor\Disk&Ven_Netac&Prod_OnlyDisk&Rev_1.11\F2413093D44AB53
  
在上面的列表中,“Disk&Ven”后面的内容部分即是分配给每一个USB设备的ID号码,这可以帮助调查人员决定此USB设备是否连接到计算机。通过将同样的USB设备插入到另外一台系统,查询同样的信息,就可以比较两台计算机的输出结果,看其是否在在两台计算机上安装过。
作为选择,假设调查人员想查找连接到一台计算机的iPod设备的细节,他可能会运行同样的reg命令,不过这时他就要通过find命令来查找“iPod”这个字符串了,命令如下所示:
C:\> reg query HKLM\System\currentcontrolset\enum\usbstor /s | find /i "ipod"
在这里需要注意的是,我们使用了/i选项,其意思是使命令对大小写不敏感。
识别网络接口
如果调查人员需要抽取IP地址信息和网络设备上所有网络接口的相关配置信息,应当运行下面的命令:
C:\> reg query hklm\system\currentcontrolset\services\tcpip\parameters\interfaces /s
可以看出,此命令输出信息极为有用,除了IP地址、子网掩码、默认网关、DNS服务器之外,还要注意一个重要的参数,即“LeaseObtainedTime”,其值是十六进制的。此值指明了什么时间本地系统接收其DHCP信息,在系统首次起动或加入一个网络时,这会经常发生。使用此数据,调查人员就可以知道某台特定的机器何时加入网络等关键信息。
“LeaseObtainedTime”的十六进制值代表什么含义呢?它指的是从1970年1月1日中午12点以来经过的秒数,也就是Unix Epoch的开始时间。例如,笔者系统目前的是值是0x48263ef6,笔者将小写的字母e和f转换为大写字母(48263EF6),然后访问http://dan.drydog.com/unixdatetime.html上的免费计算器,它可以将十六进制的秒数转换为实际的天数,如下图2所示:
 


 

由此图可以看出,笔者的系统是在2008年5月11日8点33分安装好的系统,因此对于调查人员来说,得到当前的日期和时间是很有用的,其命令如下所示:
C:\> time /t & date /t
从命令的运行结果可以看出,上图中的时间仅仅是以时:分的形式体现的。如果调查人员需要知道机器的时区信息,就可以使用下面的命令:
C:\> reg query hklm\system\currentcontrolset\control\timezoneinformation
Windows防火墙命令
虽然用户可以安装某些第三方的防火墙,但Windows内置的个人防火墙的配置信息也是很有用的,调查人员可运行下面的命令来访问这个防火墙:
C:\> reg query hklm\system\controlset001\services\sharedaccess\parameters\firewallpolicy /s
注意此命令的输出结果,它指明了防火墙准许哪些程序通过哪些端口与网络通信,当然还有其它的配置信息。这样,调查人员都可以决定黑客是否禁用了防火墙,或者对它重新进行了配置使其准许恶意活动。为更便于解析,调查人员也可以运行下面的命令:
C:\> netsh firewall show config
结论
注册表是一个充满了多种额外帮助信息的工具,它可以为调查人员取证提供大量的材料。关键是要学会使用reg命令的一些强大的组合模式。大家不妨访问微软的网站,其中不乏有用的资料。

文章如转载,请注明转载自:http://www.5iadmin.com/post/617.html