Windows平台下监控取证专业技术.docx
《Windows平台下监控取证专业技术.docx》由会员分享,可在线阅读,更多相关《Windows平台下监控取证专业技术.docx(20页珍藏版)》请在冰豆网上搜索。
![Windows平台下监控取证专业技术.docx](https://file1.bdocx.com/fileroot1/2022-11/24/3a6e772a-e92c-4c14-b665-fb4d0a9a263e/3a6e772a-e92c-4c14-b665-fb4d0a9a263e1.gif)
Windows平台下监控取证专业技术
Windows平台下的监控取证技术
作者:
泉哥
主页:
前言
监控取证技术大多被国家政府公安部门采用的技术,主要用于针对计算机犯罪而进行取证,以此确保人民信息安全。
当然对于我们一般的平民,掌握一定的取证技术也可以很好采取反监控技术,以防止我们的个人隐私泄露,造成不必要的损失。
但监控取证技术的范围很广,本专题主要针对windows平台下的监控取证技术进行简要分析,希望大家能有所得。
一.NTFS属性
NTFS(NewTechnologyFileSystem)是WindowsNT操作环境和WindowsNT高级服务器网络操作系统环境的文件系统.NTFS的目标是提供:
可靠性,通过可恢复能力(事件跟踪)和热定位的容错特征实现;增加功能性的一个平台;对POSIX需求的支持;消除FAT和HPFS文件系统中的限制。
NTFS提供长文件名、数据保护和恢复,并通过目录和文件许可实现安全性。
NTFS支持大硬盘和在多个硬盘上存储文件(称为跨越分区)。
例如,一个大公司的数据库可能大得必须跨越不同的硬盘。
NTFS提供内置安全性特征,它控制文件的隶属关系和访问。
从DOS或其他操作系统上不能直接访问NTFS分区上的文件。
如果要在DOS下读写NTFS分区文件的话可以借助第三方软件;现如今,Linux系统上已可以使用NTFS-3G进行对NTFS分区的完美读写,不必担心数据丢失。
这是WindowsNT安全性系统的一部分,但是,只有在使用NTFS时才是这样。
说白了,NTFS就是一种文件系统,而非文件格式,FAT16,FAT32均是如此。
你查看一下磁盘的属性就可查看是何种文件系统了,如图1:
图1
在NTFS文件系统中,文件亦是按簇进行分配的,文件通过主文件表MFT(MasterFileTable)来确定其在磁盘上的存储位置、大小、属性等信息。
每个文件都有一个文件记录(FileRecord)数据结构,其中第一个记录就是MFT自己本身。
MFT结构如图2,3所示:
图2
图3
关于MFT更详细的资料可参考《NTFS中的$MFT详解》一文:
下面是FILE Record的结构:
Offset Size Description
0x00 4 Magic number 'FILE' //标志,一定是“FILE”
0x04 2 Offset to the update sequence //更新序列US的偏移
0x06 2 Size in words of Update Sequence Number & Array (S) //更新序列号USN的大小与数组,包括第一个字节
0x08 8 $LogFile Sequence Number (LSN) // 日志文件序列号LSN
0x10 2 Sequence number //序列号(SN)
0x12 2 Hard link count //硬连接数
0x14 2 Offset to Update Sequence Array // 第一个属性的偏移地址
0x16 2 Flags //标志,1表示记录正在使用,2表示该记录为目录
0x18 4 Real size of the FILE record //记录头和属性的总长度,即文件记录的实际长度
0x1C 4 Allocated size of the FILE record //总共分配给记录的长度
0x20 8 File reference to the base FILE record //基本文件记录中的文件索引号
0x28 2 Next Attribute Id //下一属性ID
0x2A 2 Align to 4 byte boundary //XP中使用,边界
0x2C 4 Number of this MFT Record //XP中使用,本文件记录号
2 Update Sequence Number (a) //更新序列号,大小为2B,是为了保证该扇区是否正确,以扇区的最后两个字节与该值比较,如果一样,则说明该扇区是正确的,否则就是有问题。
2S-2 Update Sequence Array (a) //更新序列数组,大小一般为2*2B=4B,如果该扇区正确,在解读的时候,则将该数组中的两个2B大小的数字依次复制到该File Record所在的两个扇区的最后两个字节。
在日志文件$LogFile中包含有所有文件系统操作日志,删除文件会在$LogFile中留有记录,因此找到一些不在磁盘上的文件是完全有可能的,在$LogFile上还可以找到一些被系统调用过的文件。
在NTFS中包含有四个时间戳:
创建时间,最后访问时间,最后写入时间以及最后修改时间,因此能过它我们可以查看我们的秘密文件是否被复制,查看等操作。
刚好这里在网上找到一篇关于NTFS分区格式化数据恢复的文件,有兴趣的可以看下:
NTFS分区格式化后用WINHEX手工提取数据:
二.注册文件
注册文件*.reg文件是一种注册表脚本文件,通过它将数据导入注册表中,以此来操作注册表,因此在该文件中包含有各类软件、硬件、用户的相关信息及设置。
在注册表包含有一组主键或根键(HKEY)、键(key)、子键(subkey)、键值(value),通过它可以进行数据备份。
在win98中,注册文件命名为user.dat与system.dat;在windowsmillenniumedition中则为classes.dat,user.dat和system.dat。
而在2000\xp及vista中是在C:
\windows\system32\config文件。
通过查看备份的数据可以获得一些已删除文件或程序的相关信息,对于取证有一定的帮助。
另外能过注册表还可以用于确定用户进行了哪些操作,比如攻击者经常要运行一些指令,而且经常是通过启动->运行……然后输入需要运行的程序名,接着启动程序或指令。
而在windows中就记录了大部分注册表中当前用户通过该方式执行的最近26条指令,只需查看HKCU、Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU这里举个实例,先用启动->运行->输入regedit,然后查看以上键值,结果如图4所示:
图4
另外还有一个地方可以用来查看当前用户最近打开的文件名:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs如图5所示:
图5
除此之外,还有hkcu\software\microsoft\internetexplorer\typedurls可以查看所有IE中URL,hkcu\software\realvnc\vncviewer4\mru可以查看黑客进入到的系统的历史记录。
在《miningdigitalevidenceinmicrosoftwindows》一文中提到注册表中包含下列事件:
systemanduser-specificsettings
UserAssist
MuiCache
MRULists
ProgramsCache
StreamMRU
ShellbagsUsbstor
IEpasswords
andmanymore!
∙三.预读取文件prefetchfile(*.pf)
MS在WinXP以后的操作系统中加入了预读取文件的功能,用于提高系统启动,程序加载及文件读取的速度。
通过缓存正在被使用的程序,可以帮助系统分配用户可能即将访问的系统资源,以此来提高访问速度。
预读取文件保存在c:
\windows\Prefetch目录中,每个应用程序都会在Prefetch目录中留下相应的预读取文件,预读取文件描述了应用程序或系统启动时各个模块的装载顺序,其命名方式是以应用程序的可执行文件名为基础,加上一个"-"和描述执行文件完整路径的十六进制值,再加上文件扩展名PF构成的,例如opera.exe-0065A2A1.pf.不过,windowsXP启动的预读取文件总是同一个名称,即NTOSBOOT-B00DFAAD.PF,其中包含着启动时载入文件的记录。
预读取文件的功能可能过修改注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\PrefetchParameters来设置,如图6所示:
图6
可修改EnablePrefetcher的“DWORD”值为:
“0”——取消预读取功能;
“1”——系统将只预读取应用程序;
“2”——系统将只预读取Windows系统文件,此为WindowsXP/Server2003的默认设置;
“3”——系统将预读取Windows系统文件和应用程序。
预读取文件的分析可借助WFA(windowsfileanalyzer)来进行,如图7所示:
图7
通过上图可知,*.pf文件中包含程序的最新访问时间,嵌入数据的时间,运行次数及文件路径hash值等信息。
∙四.后台打印文件(printspoolerfile)
在打印作业完成之后,会在C:
\Winnt\System32\Spool\Printers目录中留下几个SPL和SHD文件。
SPL文件是实际的后台打印(打印作业)文件。
SHD文件提供有关的打印机打印作业已发送与其打印作业一起提供的信息。
一个SHD文件是"影子"文件跟踪的哪些逻辑打印机(同一号码)xxxxx.spl文件转到。
它还包含队列,发送该的打印机和其他信息的文件在用户中的文件的顺序。
除非逻辑打印机设置否则状态,通常会删除这些文件.
可以通过Splview.exe()来查看这类文件的元数据,如图8所示:
图8
也可通过EMFSpoolviewer(p)来查看实际的后台打印工作,如图9所示:
图9
∙五.info2文件
info2文件中记录着每个被删除后放入回收站的文件的相应信息,比如驱动器指示器dirvedesignator ,原删除文件的完整文件名,文件大小,存放的位置(路径)以及文件被移到回收站的时间。
当一文件被移动到回收站时,该文件被重命名为:
D%DriveLetter%_%IndexNumber%_%FileExtension%.
D%DriveLetter%:
“D”代表Drive,%DriveLetter%为文件放置的磁盘,第一磁盘均有其自已的Recycler目录以及info2文件。
%IndexNumber%:
每一被放入回收站的文件或文件夹均会被分配一索引号,用来标记删除次序,索引号越大,说明越晚删除。
但当加收站清空或系统重启时,索引号将会从新开始分配。
%FileExtension%:
原始文件的扩展名。
当一文件夹被删除时,它将没有扩展名。
例如:
一个文件名为hacker.txt被删除而放入回收站后,该文件将会被重命名为Dc2.txt,文件入口可在C:
\Recycler\%SID%\INFO2文件中找到。
关于INFO2文件结构可参考下图(来源:
www.cybersecurityinstitute.biz):
图10
∙六.thumbs.db文件
thumbs.db文件是用于缓存文件中的缩略图,以提高图片的读取速度,它保存在每个包含图片的目录中,里面保存了这个目录下所有图像文件的缩略图(格式为jpeg),相当于一个缩略图数据库,当以缩略图查看图片时,就会生成一个Thumbs.db文件。
OLE(ObjectLinkingandEmbedding:
对象连接与嵌入,是在一个文件或一个程序中能够包含多种不同数据格式的数据内容而产生的)就在thumbs.db文件中嵌入当前数据。
在一些情况下,当图片从目录中被删除后,图片仍然保存在thumbs.db缓存中,因此该文件也存在一定的安全风险。
下面引用XX百科上的一个例子:
比如当你上传电脑的数码相片,在查看时,删除了其中的一张“SSA2501”,再将其后的“SSA2502”改成了“SSA2501”,看,“SSA2502”的照片立刻换成了“SSA2501”的照片,不只是名字换了,照片也变了。
如果再将“SSA2503”的名字重命名成“SSA2502”,奇迹发生了,原来的“SSA2502”照片又回来了,“SSA2503”的照片不见了!
在WindowsXP/2003中,用户可以通过以下操作来关闭它,如图11所示:
1.打开工具栏——文件夹选项
2.点击查看
3.打勾,不缓存缩略图
4.确定
图11
但在windowsvista中,微软取消了thumbs.db文件,而是使用把缩略图数据库"thumbcache_xxxx.db"文件集中保存于\Users\[username]\AppData\Local\Microsoft\Windows\Explorer该目录中。
如果你想查看thumbs.db文件中缓存的图片,那么可以借助windowsfileanalyzer来查看,如图12所示:
图12
接下来直接点“saveimage”保存图片即可。
也可采用司法分析软件FTK进行查看,如图13所示:
图13
∙七.日志文件(*.evt)
windows系统中的日志文件提供了系统中发生的重要事件,再结合注册表数据可用于追踪之前发生的系统事件,它主要有三种形式:
应用程序,系统,安全性,通过打开开始菜单>运行,输入Eventvwr.msc或打开开始>控制面版>管理工具>事件查看器即可查看相关的日志文件,如图14所示:
图14
本文我是在网吧写,开始里面作了限制,不能打开运行,因此写了一个内容为cmd.exe的批处理文件1.bat,打开运行进入dos后,输入Eventvwr.msc亦可打开事件查看器。
通过查看日志文件,我们可以知晓:
1.失败的登陆尝试,
2.成功的权限提升尝试,
3.更改系统时间,
4.突破登陆时间限制,
5.登陆/退出时间,
6.成功/失败的对象访问。
默认情况下,windows的安全设置是不支持日志文件,另外,可惜的是,日志文件只记录NetbiosName,而不记录IP地址。
∙八.网络历史文件
网络浏览器将用户浏览过的站点及图片,还有cookie文件等保存在硬盘上,对于调查用户的网站浏览行为提供帮助,如图1所示:
图15
图15是IE浏览器保存在硬盘上的历史文件,不同的浏览器保存的历史文件路径不一样,但腾讯TT浏览器与IE是共用历史文件的,因此路径也是一样。
我们也可以通过一些阅读工具来读取这些网络历史文件,比如:
Encase,NetAnalysis,WebHistorian。
通过IE的历史文件我们就可以获得用户浏览过的站点,cookie以及相关的临时文件。
如果我们能够窃取cookie文件,我们就可以获得用户的登陆权限了。
∙九.快捷方式文件(*.lnk)
快捷方式文件(*.lnk)用于链接到目标文件的一种文件,目标文件可为应用程序,目录,文档或者数据文件,在link文件中包含有目标文件的各种属性:
* 目标文件的完整路径
* 目标文件或者目录所在的卷标(volumelabel)和卷序列号(volumeserialnumber),这些将有利于将文件连接到一唯一的卷(volume)
* 文件大小(bytes)
* 目标文件的MAC时间戳
* 媒体类型(如图1)
* 工作目录
* MAC地址
* 远程共享文件名
图16
快捷方式文件的整体结构如图17所示:
图17
关于该文件更为详细的资料可参考此文(Windows快捷方式文件格式解读):
link文件可在未分配的集群(clusters)与交换(swap)内存空间找到.
我们也可借助相关工具来读取link文件所包含的信息,比如EncaselinkparserEnScript和WindowsFileAnalyzer,如图18所示:
图18
∙十.系统还原点(SystemRestorePoint)
系统还原是Windows操作系统默认的一个功能,它用来帮助你恢复你的电脑到预设的状态,同时不会丢失你的数据文件,可通过“开始-程序-附件-系统工具-系统还原”来建立系统还原点,如果你选择系统还原,你就可以看到最新的系统还原点了.
关于系统还原更多的资料可参考下面两篇文章:
《windowsvista系统还原专题》:
《windowsxpProfessional系统恢复浅谈》:
rp.log文件是存储在还原点(RestorePoint)目录的日志文件,设置系统还原点后,就会生成该文件。
通过rp.log文件,我们可以获得以下信息:
* 还原点类型(APPLICATION_INSTALL,CANCELLED_OPERATION……)
* 还原点创建事件的名称(i.e,应用程序或设备驱动程序安装/卸载等)
* 通过64-bitFILETIMEobject可取得还原点的创建时间
CHANGE.LOG.x文件(x为一数字)是系统还原所用的一个记录文件是系统更改日志,通过它我们可以获得以下信息:
* 当系统记录发生更改时,原始文件名会连同一序列号及其它信息(比如:
记录更改类型:
文件删除,属性更改或内容更改等)存入change.log文件中
* 有时整个文件可能被保存(Axxxxxx.ext格式)
通过还原点,我们可以获得以下信息:
* 应用程序的安装或卸载
* 系统时间更改
* 删除/卸载的应用程序的碎片
* 被删除的文件的碎片
* 曾被访问过的文件迹象
∙十一.P2P软件调查取证
P2P(pointtopoint)即点对点的意思,当一台主机从其它服务器下载文件时,它作为客户端;当其它主机从它机上下载文件时,它就作为服务端,像BT,eMule,PPLive等均为P2P软件,本文主要以BT为例来讲解P2P软件的调查取证,其它P2P软件的取证可以此为参考。
P2P软件调查取证的主要目的是为了查找不良信息或危害言论的传染源,以及时切断传染源,防止其继续传播并追究相关人员的法律责任。
BT的运行原理
我们需要先从WEB服务器上下载种子文件*.torrent,该文件中包含tracker服务端地址列表以及下载文件的哈希值,通过种子文件中的服务端地址,我们就可以向其发送以下载文件名哈希值为参数的HTTPget请求,服务端再查找种子列表,提供各下载服务器地址给我们,我们就可以从这些服务器上下载文件片段了。
种子文件格式:
BT种子文件使用了一种叫bencoding的编码方法来保存数据。
bencoding现有四种类型的数据:
srings(字符串),integers(整数),lists(列表),dictionaries(字典)
整个文件为一个字典结构,包含如下关键字:
announce:
tracker服务器的URL(字符串)
announce-list(可选):
备用tracker服务器列表(列表)
creationdate(可选):
种子创建的时间,Unix标准时间格式,从19701月1日00:
00:
00到创建时间的秒数(整数)
comment(可选):
备注(字符串)
createdby(可选):
创建人或创建程序的信息(字符串)
info:
一个字典结构,包含文件的主要信息,为分二种情况:
单文件结构或多文件结构
单文件结构如