Windows注册表的学习

Posted mikasa-ackerman

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows注册表的学习相关的知识,希望对你有一定的参考价值。

 

  • 什么是注册表

注册表是Windows在Win95/98系统开始引入的一种核心数据库,里面存放着各类的配置信息、参数等、直接控制着系统的启动、硬件的装载以及Winodws程序的运行
 

  • 手册表的功能

 
记录用户安装在计算机上的软件和每个程序的相关信息,通过他可以控制硬件、软件、用户环境和操作系统界面的数据信息文件.
 

注册表的结构

快捷键regedit可以打开注册表,查看详细的结构

  • 不同机器注册表结构
    win7 技术图片?

win10

技术图片?

win08

技术图片?

 

可以看到大部分机器的注册表的根键是差不多的.

 

  • 简单结构

 

根键:被称为HKEYxxxxxx,某一项的句柄项:附加文件夹和一个或多个值
子项:在某一个项(父项)下面出现的项(子项)
项值:带有一个名称和一个值的有序值,每个项都可包括任何数量的值项,值项由三个部分组成:名称、数据类型和数据

1.名称:不包括反斜线的字符、数字、代表符和空格的任意组合。同一键中不可有相同的名称
2.数据类型:包括字符串、二进制和双字节等
3.数据:值项的具体值,它的大小可以占用64KB
  • 总体结构分析

    注册表包括以下5个根键
     

    • HKEY_CLASSES_ROOT

     

    该根键包括启动应用程序所需的全部信息,包括扩展名,应用程序与文档之间的关系
    驱动程序名,DDE和OLE信息,类ID,编号和应用程序与文档的图标等.
    

     

    • HKEY_CURRENT_USER

     

    该根键包括当前登录用户的配置信息,包括环境变量,个人程序以及桌面设置等
    

     

    • HKEY_LOCAL_MACHINE

     

    该根键包括本地计算机的系统信息,包括硬件和操作系统信息。
    安全数据和计算机专用的各类软件设置信息
    

     

    • HKEY_USERS

     

    该根键包括计算机的所有用户使用的配置数据(是所有用户哦)
    这些数据只有在用户登录系统时才能访问.
    这些信息告诉系统当前用户使用的图标,激活的程序组,开始菜单的内容以及颜色,字体

     

    • HKEY_CURRENT_CONFIG

     

    该根键包括当前硬件的配置信息,其中的信息是从HKEY_LOCAL_MACHINE中映射出来的
    

     

注册表中的结构详解

  • HKEY_CLASSES_ROOT

 
以AVIFILE这个项来举例
 
技术图片?

 

CLSID:分类标识,系统可以用这个类标识来识别相同类型的文件
Compressors:它下面有两个子项:auds:用于设置音频数据压缩程序的类标识;vids:用于设置视频数据压缩程序的类标识
RIFFHandlers:在它的下面有两个类标识:AVI:用于设置AVI文件的类标识;WAVE:用于设置WAVE文件的类标识
Shellex:包括了视频文件的外壳扩展

 

  • HKEY_CURRENT_USER
此根键中保存当前用户的子项信息
  • HKEY_LOCAL_MACHINE

 

此根键中存放的是用来控制系统和软件的设置,由于这些设置是针对那些使用Windows系统的用户而设置的,是一个公共配置信息,所以它与具体的用户没多大关系。
HARDWARE:有四个子项
    1. ACPI:存放高级电源管理接口数据
    2. DEVICEMAP: 用于存放设备映射
    3. DEscriptION: 存放有关系统信息
    4. RESOURCEMAP: 用于存放资源列表
SAM子项:跟系统的存储密码有关
SECURITY子项:该子项只是为将来的高级功能而预留的
SOFTWARE子项:该子项中保留的是所有已安装的32位应用程序的信息,各个程序的控制信息分别安装在相应的子项中,由于不同的计算机安装的应用程序互不相同,因此这个子项下面的子项信息也不完全一样。
SYSTEM子项:该子项是启动时所需的信息和修复系统时所需要的信息


另外说明一点:我们转储hash时候导出的注册表就是在这个根键里面的(请参考亮神的文章)

 

  • HKEY_USERS
此根键中保存的是默认用户(default),当前登录用户和软件(software) 的信息.
其中DEFAULT子项是其中最重要的,它的配置是针对未来将会被创建的新用户的。
新用户根据默认用户的配置信息来生成自己的配置文件,该配置文件包括环境、屏幕和声音等多种信息

 
没有什么好讲的
 

  • HKEY_CURRENT_CONFIG

 

此根键存放的是当前配置的文件信息.

 

  • 总结

 

注册表看似是五个分支(五个根键),其实不然,其实就是HKEY_LOCAL_MACHINE、HKEY_USERS这两个才是真正的注册表键,其它都是从某个分支映射出来的,相当于快捷方式或是别名.

 

注册表的基本操作

 

  • 常用操作
     
创建项和项值
更新项值的数据
删除项、子项或值项
查找项、值项或数据
  • 基本数据类型

 

二进制值(reg_binary):多数硬件信息以二进制数据存储,而以十六进制格式显示在注册表编辑器中
字符串值(reg_sz):包括字符串的注册表键,使用字符串数据类型
双字节值(reg_dword):是32位信息常显示成4个字节。它在出错控制功能上用处极大,其数据一般以十六进制格式显示在注册表编辑器中。
多字符串值(reg_multi_sz):允许将一系列项目作为单独的一个值使用。对于多种网络协议、多个项目、设备列表以及其他类似的列表项目来说,可以使用多字符串值可扩充字符串值(reg_expand_sz):代表一个可扩展的字符串

 

  • 操作实战

 
向"HKEY_CURRENT_USER"下创建一个子键"Mikasa",向该子键中添加名为"Mikasa",类型为"REG_ZS",数据为"QAQ"

reg add HKCUMikasa /v Mikasa /t REG_SZ /d "QAQ"
技术图片?

 
参数解释:/v 值 /t 类型 /d 数据
 
修改注册表中的值
 
reg add "HKCUMikasa" /f /v Saber /t REG_SZ /d "test"
 
技术图片?

 
同理的我们可以修改支持远程桌面连接
 
reg add "HKLMSYSTEMCurrentControlSetControlTerminal Server" /f /v fDenyTSConnections /t REG_DWORD /d 0
 
修改支持远程桌面
reg query "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections
 
查询一下
reg query "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections
 
查询注册表的值
 
reg query HKLMxxx /v xxx /v指定值查询,例如查询我们插入的值
 
reg query HKCUMikasa /v Mikasa
 
技术图片?

 
导入/导出注册表

 

reg import c:	est.reg  //导入
reg export HKCUMikasa c:	est1.reg  //导出注册表

上述都是需要管理员权限的,不然会发生错误

 
删除注册表中的某一项
 

reg delete HKCUMikasa /v Mikasa /f

技术图片?

 
删除成功

渗透中常用的注册表操作

 

reg add "hklmsystemcurrentcontrolsetcontrol	erminal server" /f /v fDenyTSConnections /t REG_DWORD /d 0
启动远程桌面
netsh firewall set service remoteadmin enable
netsh firewall set service remotedesktop enable
配置防火墙
REG QUERY "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" /v PortNumber 
查看RDP远程连接的端口
reg add "HKLMSystemCurrentControlSetServicesLanManServerParameters" /f /v RequireSecuritySignature /t REG_DWORD /d 0
开启hash传递

 
亮神的注册表导出数据库,本地破解hash

reg save HKLMSYSTEM sys.hiv
reg save HKLMSAM sam.hiv
reg save HKLMsecurity security.hiv

技术图片?

 
有师傅总结的关于可能保存密码的注册表键
 

HKCUSoftwareORLWinVNC3Password
HKCUSoftwareSimonTathamPuTTYSessions
HKLMSYSTEMCurrentControlSetServicesSNMP
HKEY_CURRENT_USERSoftwareMartin PrikrylWinSCP 2Sessions
HKLMSOFTWAREMicrosoftWindows NTCurrentversionWinlogon

 
也可以用注册表语句检索

reg query HKLM /f password /t REG_SZ /s 
reg query HKCU /f password /t REG_SZ /s

 

参考资料

 
http://ittxx.cn/view/139
http://t3ngyu.leanote.com/post/Windows-Reg

以上是关于Windows注册表的学习的主要内容,如果未能解决你的问题,请参考以下文章

Windows注册表的学习

渗透学习总结-Windows基础

java SpringRetry学习的代码片段

python 机器学习有用的代码片段

在片段中注册和取消注册BroadcastReceiver

将本地项目文件托管到github的方法-Windows10