分享好友 最新动态首页 最新动态分类 切换频道
【网络攻防零基础入门到精通教程】如何获取Windows主机信息、注册表、U盘历史痕迹和回收站文件
2024-12-27 10:45

本文将给大家分享获取Windows主机信息,利用注册表获取主机名及USB历史痕迹、回收站文件等,这些知识广泛应用于电子取证、Web渗透和攻击溯源领域,并且USB历史痕迹是本文的亮点。 希望这篇基础文章对您有所帮助,更希望大家提高安全意识,学会相关防范,也欢迎大家讨论。

【网络攻防零基础入门到精通教程】如何获取Windows主机信息、注册表、U盘历史痕迹和回收站文件

声明:本人坚决反对利用教学方法进行恶意攻击的行为,一切错误的行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解技术背后的原理,更好地进行安全防护。虽然作者是一名安全小白,但会保证每一篇文章都会很用心地撰写,希望这些基础性文章对你有所帮助,在安全路上一起前行。


WMI(Windows Management Instrumentation) 是一项核心的Windows管理技术,WMI模块可用于获取Windows内部信息。WMI作为一种规范和基础结构,通过它可以访问、配置、管理和监视几乎所有的Windows资源,比如用户可以在远程计算机器上启动一个进程;设定一个在特定日期和时间运行的进程;远程启动计算机;获得本地或远程计算机的已安装程序列表;查询本地或远程计算机的Windows事件日志等等。

本文使用Python获取Windows系统上相关的信息可以使用WMI接口,安装调用PIP工具即可。

  • pip install wmi

  • import wmi

下面的代码是获取Windows主机相关信息。

 

输出结果如下图所示


注册表(Registry)是Windows系统中一个重要的数据库,它用于存储有关应用程序、用户和系统信息。注册表的结构就像一颗树,树的顶级节点(hive)不能添加、修改和删除,如下图所示是Windows注册表的顶级节点。

在C#中对注册表进行操作,需要引用命名空间using Microsoft.Win32。

  • RegistryKey类:表示注册表中的顶级结点,此类是注册表的封装。

  • Registry类:提供表示Windows注册表中的根项RegistryKey对象,并提供访问项/值的static方法。常用的Registry对象的顶级节点(蜂窝,hive)的属性如下表所示

注册表中常用的数据类型有

  • REG_SZ:字符串数据的主要类型,用于存储固定长度的字符串或其他短文本值。我们在实际程序中常用这种数据类型,如果要保存布尔值时,将它表示成0或1。

  • REG_BINARY:用于存储二进制数据。

  • REGEXPANDSZ:可扩展的字符串值,可以保存在运行时才解析的系统变量。

  • REGMULTISZ:以数组的格式保存多个文本字符串,每个字符串"元素"都以null字符结束。


Python注册表操作主要调用winreg扩展包。官方文档如下

  • https://docs.python.org/3.0/library/winreg.html

基本操作函数如下

(1) 创建操作

  • winreg.ConnectRegistry(computer_name, key)

    与计算机的预定义注册表句柄建立连接

  • winreg.CreateKey(key, sub_key)

    创建或打开指定的键

例如在HKEYCURRENTUSER下创建键Eastmount,其中我们最常用的是在Software这个键下创建程序产品键,保存一些程序的配置在注册表中。如果Software中没有Eastmount键,则会先创建这个键及其子键,如果存在就不会重写。

 

运行结果如下:


(2) 检索键值操作

  • winreg.QueryInfoKey(key)

    以元组形式返回键的信息

  • winreg.QueryValue(key, sub_key)

    以字符串形式检索键的未命名值

  • winreg.QueryValueEx(key, value_name)

    检索与打开注册表项关联的指定值名称的类型和数据

在Eastmount下面新建一个值yxz,内容为“hello na”,然后编写代码读取相关的内容。

 

输出结果如下图所示


(3) 创建键值操作

  • winreg.SetValue(key, sub_key, type, value)

    将值与指定的键关联

  • winreg.SetValueEx(key, value_name, reserved, type, value)

    将数据存储在打开的注册表项Value字段中

创建键值代码如下,但会提示PermissionError: [WinError 5] 拒绝访问错误。

 

(4) 删除键值操作

  • winreg.DeleteKey(key, sub_key)

    删除指定的键

  • winreg.DeleteValue(key, value)

    从注册表项中删除值

 

成功删除键值,如下图所示。


(5) 其他操作

  • winreg.EnumKey(key, index)

    枚举打开注册表的键

  • winreg.EnumValue(key, index)

    枚举打开注册表项的值

  • winreg.OpenKey(key, subkey,sam=KEYREAD)

    打开指定键

  • winreg.FlushKey(key)

    刷新注册表

  • winreg.LoadKey(key, subkey, filename)

    在指定键下创建一个子键,并将注册信息从指定文件存储到该子键中


获取用户名称的代码如下

 

执行结果如下,我们可以通过读取含有Users字段的数据,从而间接获取用户账户信息。

 

为什么我们要去获取回收站文件呢?因为很多情况下调查取证需要获取远程目标的历史痕迹,回收站是重要的一个目标。在Windows操作系统中,回收站是一个专门用来存放被删除文件的特色文件夹。

在使用FAT文件系统的Windows98系统中,回收站目录通常是C:Recycled;在Windows NT2000、Windows XP在内支持的NTFS操作系统中,C:Recycler;在Windows Vista和Windows7中,回收站目录是C:$Recycle.Bin。如下图所示,回收站中包含两个文件,分别位于桌面和D盘目录。

第一步,检测回收站目录是否存在。

 

Windows10操作系统输出结果如下所示

  • C:$Recycle.Bin

第二步,找到回收站之后,检测其中的内容,如下图所示,字符串SID与用户账户名是对应的,比如1001结尾的SID。

第三步,编写代码获取回收站文件夹所在目录。

 

输出结果如下图所示

第四步,用python将用户的SID关联起来,使用Windows注册表将SID转化为一个准确的用户名。

  • 通过检查Windows注册表键值

  • HKEYLOCALMACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileListProfileImagePath

编写一个函数来将每一个SID转化为用户名,这个函数将打开注册便检查ProfileImagePath键值,找到其值并从中找到用户名。

如下图所示,用户名为“xiuzhang”。

第五步,获取回收站所有内容,完整代码如下。

 

输出结果如下图所示

对应的回收站内容如下,但非常可惜获取的值无法对应,why?后续作者会继续深入挖掘。


如果我们想把文件删除到回收站,又怎么解决呢?Python删除文件一般使用os.remove,但这样是直接删除文件,不删到回收站的,那么想删除文件到回收站怎么办

(1) 安装pypiwin32扩展包(含win32api)。

(2) 调用SHFileOperation函数实现删除文件至回收站。

在Windows的shellapi文件中定义了一个名为SHFileOperation的外壳函数,用它可以实现各种文件操作,如文件的拷贝、删除、移动等,该函数使用起来非常简单,它只有一个指向SHFILEOPSTRUCT结构的参数。

 

最终效果如下图所示,可以看到require.rb文件被成功删除。

注意,注册表操作可能会遇到“PermissionError: [WinError 5] 拒绝访问”问题,我们需要设置Python.exe用户名完全控制,并且用管理员方式打开即可解决。


**这部分我认为是本文最大的亮点。**在Windows系统中,当一个USB移动存储设备插入时,就会在注册表中留下痕迹。当移动设备插入计算机时,即插即用管理器PnP(Plug and Play)接受该事件,并且在USB设备的固件(Firewre information)中查询有关该设备的描述信息(厂商、型号、序列号等)。当设备被识别后,在注册表中创建一个新的键值

  • HKEYLOCALMACHINESYSTEMCurrentControlSetEnumUSBSTOR

在这个键值下,会看到类似下面的结构子键,该子键代表设备类标示符,用来标识设备的一个特定类。

  • Disk&Ven###&Prod###&Rev_###

其中,子键中"###"代表区域由PnP管理器依据在USB设备描述符中获取的数据填写。如下图所示

  • Disk&Venaigo&ProdMiniking&Rev_8.07是Device class ID

  • Q0UKCH37&0是Unique instance ID(UID)

注意需要判断Service值为disk,即为磁盘的子项,光盘为cdrom。

如果使用UVCView工具可以看见USB设备描述内容,其中的信息都是相互对应的。设备类ID一旦建立,就需要建立一个特定唯一的UID,它可以把具有同一设备类标识的多个存储设备区分。

完整实现代码如下

 

输出的USB记录键名如下图所示,包括三星、金盾、等U盘或硬盘型号。

其中对应的注册表信息如下图所示,FriendlyName即是输出的USB名称“Kingston DataTraveler 2.0 USB Device”,UID序号为“C860008862F1EE501A0F0105&0”,搜索的Service(服务)为disk(磁盘)的选项。

简单总结

个人感觉这方面的资料真心很少,文章博客也少,所以看起来操作似乎很简单,但真正实现起来还是令人深思的。然后就是其实存储USB记录的还有很多键值,如

  • HKEYLOCALMACHINESYSTEMCurrentControlSetEnumUSB 该键值中能看到厂商号(VID)、厂商产品号(PID),还有LocationInformation(端口号) Port#0001.Hub#0005等。
  • HKEYLOCALMACHINESYSTEMCurrentControlSetControlDeviceClasses 该键值下有两个设备类:{53F56307-B6BF-11D0-94F2-00A0C91EFB8B}{53F5630d-B6BF-11D0-94F2-00A0C91EFB8B},可以通过他们获取USB最后接入系统时间。

接下来我想要完成的就是如何把这些键值联系起来,似乎要通过Dictionary,同时怎样获取时间,怎样正确删除这些信息都值得深究。

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

最新文章
通知!最高补贴2000元/人!人工智能训练师报考安排来啦,符合条件可领
人工智能训练师报考通知2020年,“人工智能训练师”正式成为新职业并纳入国家职业分类目录。2024年,“人工智能+”被写入相关报告,其中提出要深化大数据、人工智能等研发应用,开展“人工智能+”行动。这充分说明我国人工智能技术正在蓬勃
韶关外贸独立站设计哪家靠谱
设计外贸网站客户反馈机制,收集意见提升服务质量。韶关外贸独立站设计哪家靠谱
打造全新的在线游戏平台系统,融合音乐聚合搜索和影视在线观看
随着互联网的发展,线上娱乐已经成为人们生活中不可或缺的一部分。在这其中,小游戏平台是非常受欢迎的,特别是对于广大年轻人群体来说,小游戏可以为他们带来快速娱乐和放松心情的功能,同时也是与朋友互动
盘点全球十大最贵法拉利排行榜:1963法拉利250 GTO领衔,满足车迷好奇心
盘点全球十大最贵法拉利排行榜:1963法拉利250 GTO领衔,满足车迷好奇心关于法拉利,我们之前介绍过“世界上最贵的法拉利”。虽然一辆法拉利高达三亿,对于我们这些凡人来说是买不起的,但既然买不起,看看也无妨。以下是小编为满足汽车爱
秦总夫人今天掉马了吗超级挑战短剧,探索精彩瞬间,免费观看全集及下载
《秦总夫人今天掉马了吗》是一部免费观看的超级挑战短剧。该剧集紧凑精彩,探索了无限可能的精彩瞬间。观众可以下载全集观看,感受剧情的起伏和人物的情感变化。这部短剧将带给你紧张刺激的视觉体验,不容错过。本文目录导读:超级挑战短剧
手机wps怎么换字体
在日常的工作和学习中,我们常常需要使用WPS Office来处理文档。在手机端,WPS Office同样提供了丰富的编辑功能,包括更改字体样式。那么,如何在手机WPS中更换字体呢?以下将详细讲解操作步骤。首先,我们需要打开WPS应用,并找到需要编辑
科技通报“wepoker俱乐部作弊透视”确实有挂-知乎
11498 3008061 15426449 73224391 357433 1732 0559 14397 0546 2586 0630 03980 1567 1632 11180 68772 113868 0956 01081 07501 01966 01466 101653 11468 2 新华网北京12月6日电 时值冬季,但珠江之畔的花城却涌动着创新的热潮。12月3日
如何在手机地图上标记位置离线电子地图标注软件-商家新开门店地图定位
如何在手机地图上标记位置离线电子地图标注的步骤: 1, 打开电子地图应用,使用账号登录并进入离线页面。 2,选择需要标记的地点,点击,完成后点击标注即可完成标记。 除了离线标记,还有以下步骤可以参考: 1,打开电子地图应用,在搜索
结合公司低码产品(lowcode),谈谈自己思路和实现
复制下公司的技术选型框架说明版本JDKJava 开发工具包= 1.8.0MavenJava 管理与构建工具= 3.5.0Redis(opens new window)key-value 数据库= 5.0框架说明版本Spring Boot(opens new window)微服务开发框架2.5.6spring-brick(opens new window)
获取 Android 13
您可以通过以下任一方式获取 Android 13:在 Google Pixel 设备上获取 Android 13设置 Android 模拟器获取通用系统映像 (GSI)获取适用于 Android TV 的 Android 13 Beta 版如果您使用的是受支持的 Google Pixel 设备,则可以查看并更新 And
相关文章
推荐文章
发表评论
0评