zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    MySQL DATE_ADD() 函数
    今天一早来打开IDEA,全面飘红,所有的含有import语句的文件都会报错
    Spring cloud Eureka注册中心搭建的方法Spring cloud Eureka注册中心搭建的方法
    Spring Cloud Config配置中心
    在IDEA下导入Maven项目之后 Dependencies报红线
    解决idea项目没有蓝色小方块
    idea 导入源码显示橙色
    MYSQL中的UNIX_TIMESTAMP函数
    kernel 文件系统挂载流程分析【转】
    Linux--根文件系统的挂载过程分析【转】
  • 原文地址:https://www.cnblogs.com/Mikasa-Ackerman/p/Windows-zhu-ce-biao-de-xue-xi.html
Copyright © 2011-2022 走看看