`

[译]解密MSSQL密码

 
阅读更多
原文地址:
https://blog.netspi.com/decrypting-mssql-database-link-server-passwords/
https://blog.netspi.com/decrypting-mssql-credential-passwords/
(一)Linked Servers
MSSQL在数据库中hash本地SQL口令,而linked server口令则加密存储。如果MSSQL可以解密它们,那么你也可以使用PowerShell脚本来做相同的事。
MSSQL服务器允许user创建链接来连接到外部的服务去,典型的是其他的MSSQL服务器。如果使用MSSQL口令,那么账号和密码加密存储在数据库中,而且他们是可以逆向的格式。不可以使用单向hash,因为MSSQL必须使用明文口令来认证其他的服务器。
MSSQL存储服务器信息,包含加密密码在master.sys.syslnklgns表中。特别的是,加密的密码存储在"pwdhash"列(即使它不是一个hash)。

master.sys.syslnklgns 不能通过普通的SQL连接访问,但是可以使用DAC*(http://technet.microsoft.com/en-us/library/ms178068%28v=sql.105%29.aspx),需要Sysadmin特权来开启一个DAC连接。但是管理员权限是必须的。如果本地管理员没有sysadmin权限,你将需要伪装成MSSQL 账户或本地管理员账户。https://www.netspi.com/blog/entryid/133/sql-server-local-authorization-bypass.
接下来的过程需要Service Master Key,Service Master Key是SQL服务器加密的根源。当第一次需要使用它加密密码的时候它将会被创建。SMK存储于master.sys.key_encryptions,通过key_id 102找到。SMK使用Windows Data Protection API加密并且有两个版本:一个加密为localmachine另一个在当前user的上下文中。我们选择第一个版本,它可以不需要伪装成服务账号来解密。

额外的熵可以用来强化加密,但是熵字节可以在注册表中找到:HKLM:SOFTWAREMicrosoftMicrosoft SQL Server[instancename]SecurityEntropy,需要本地管理员权限来访问注册表。

根据smk的长度或MSSQL的版本,我们可以确定加密算法:MSSQL2012使用AES,之前版本使用3DES
使用https://github.com/NetSPI/Powershell-Modules/blob/master/Get-MSSQLLinkPasswords.psm1来解密
脚本必须在MSSQL服务器本地运行(因为DPAPI需要访问local machin key)执行脚本必须有所有db的sysadmin权限以及本地管理员权限(来获得注册表中的熵)。如果UAC启动了,那么必须以管理员来运行脚本。
1)识别MSSQL 服务器的db
2)为每一个db尝试创建一个DAC连接
3)从master.sys.syslnklgns表中的pwdhash列选出linked服务器口令
4)从每个db的master.sys.key_encryptions表选出key_id为102的MSK。根据thumbprint列选出加密为LocalMachine的版本
5)从注册表中提取熵
6)解密SMK
7)脚本确定加密算法
8)使用SMK解密linked服务器口令
9)成功结果如下

(二)MSSQL口令
MSSQL允许user往数据库中添加口令。这些口令,典型的windows用户名和密码,可以用来访问MSSQL服务器以外的资源。
一个例子就是MSSQL代理账户。当执行xp_cmdshell的时候,默认是使用MSSQL账户。但是如果配置代理账户,则可以使用权限较低的代理账户而不是MSSQL服务器账户来访问系统资源。
当往服务器中添加口令的时候,密码是可逆向的格式。
MSSQL存储口令密码在master.sys.sysobjvalues表中,可以使用下面的语句来确定加密的密码位置
引用

SELECT object_definition(OBJECT_ID('sys.credentials'))

Master.sys.sysobjvalues中有很多数据,但是口令信息的valueclass是28.加密的密码存在于imageval 列并且valclass=28 以及 valnum=2.

需要使用DAC来访问master.sys.sysobjvalues。
使用脚本 https://github.com/NetSPI/Powershell-Modules/blob/master/Get-MSSQLCredentialPasswords.psm1来解密密码
引用
PS C:\> Get-MSSQLCredentialPasswords | out-gridview



  • 大小: 48.2 KB
  • 大小: 54.1 KB
  • 大小: 76.6 KB
  • 大小: 38.5 KB
  • 大小: 26.4 KB
  • 大小: 17.8 KB
分享到:
评论

相关推荐

    MSSQL存储过程解密工具SQL SERVER

    "MSSQL存储过程解密工具SQL SERVER"就是为了应对这种情况而设计的。 SQL Decryptor是一款专为了解密SQL Server中的加密存储过程、函数等数据库对象而开发的软件。这款工具的主要功能是帮助数据库管理员和开发者恢复...

    4种解密软件打包 S7-200解密 SMART200解密 项目密码 POU子程序块密码解密软件.zip

    S7-200 SMART200 项目密码 POU子程序块密码 4种解密软件 SMART200电脑上程序.smart 文件 S7-200电脑上程序mwp文件 第1 S7-200 POU子程序块密码解密 第2 S7-200 项目密码解密 第3 SMART200 POU子程序块密码解密 第4...

    MSSQL密码字段的加密

    在本篇文章中,我们将深入探讨如何在MSSQL数据库中实现密码字段的加密与解密。根据提供的信息,本文将围绕以下核心知识点展开讨论:密码字段的设计、自定义加密函数的创建及其应用。 ### 一、密码字段设计 在MSSQL...

    C++密码加密与解密C++密码加密与解密

    C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与...

    希尔密码解密脚本Python

    解密希尔密码

    海泰克触摸屏项目密码解密软件直读工具 注意是电脑上文件解密 不是解上传密码.zip

    海泰克触摸屏项目密码解密是一个针对海泰克(Hitech)触摸屏编程软件的专用工具,主要用于解决用户在操作过程中遇到的项目密码保护问题。海泰克是一家知名的自动化设备制造商,其生产的触摸屏广泛应用于各种工业自动化...

    凯撒密码解密

    凯撒密码解密 凯撒密码解密

    西门子PLC 200 300 解密软件 LOGO解密软件 200项目密码解密 200上传密码解密2.0版本以下.zip

    PLC的解密软件,这包括200项目密码解密和200上传密码解密的2.0版本以下版本。LOGO! 是西门子推出的一种小型、经济型的逻辑控制器,适用于简单的自动化任务。 首先,我们需要明确的是,使用这样的解密软件可能涉及...

    CTF密码学-Python古典密码加密解密脚本

    CTF(Capture The Flag)是一种网络安全竞赛,其中密码学挑战是常见的环节,要求参赛者解决各种加密和解密问题。在这个压缩包中,我们有四个Python脚本,分别涉及摩斯密码、培根密码、ASCII编码和解码以及凯撒密码。...

    仿射密码解密工具

    是仿射密码的解密工具,可以解仿射密码;

    WinScp密码解密工具.rar

    综上所述,"WinScp密码解密工具.rar"提供了一种方法来查看和管理WinSCP保存的加密密码,这对于忘记密码或需要临时查看明文密码的用户来说非常有用。然而,使用此类工具时务必谨慎,遵循最佳安全实践,防止密码泄露。

    工具+Navicat密码解密.rar

    然而,当需要重置或解密这些密码时,我们需要理解Navicat的密码存储方式。Navicat的连接信息,包括用户名和密码,是存储在其配置文件中的,通常是XML格式。这些文件通常位于用户的个人设置目录下,如Windows的 `%APP...

    栅栏密码加密解密

    总的来说,"栅栏密码加密解密"是一个基于VB编写的程序,它实现了栅栏密码的加密和解密功能,适用于教学、研究或个人兴趣探索。开源特性使得用户可以自由地查看、学习和改进这个程序,进一步理解加密解密的基本原理...

    S7200CN系统密码与POU密码解密.rar

    3. 解密过程:使用编程或解密工具,根据已知的密码结构和算法,解密POU的密码。 4. 修改和重新编程:解密后,可以修改密码并重新上传程序到PLC。 需要注意的是,密码解密操作应遵循合法性和合规性原则,仅用于学习...

    仿射密码加密与解密C++源程序

    仿射密码加密与解密C++源程序 仿射密码是一种简单的加密算法,它使用线性变换来进行加密和解密。下面我们将详细介绍仿射密码的加密和解密算法,并提供相应的C++源代码。 仿射密码的加密算法是一个线性算法,密钥...

    解密navicat保存的MYSQL密码

    总而言之,了解如何解密Navicat保存的MySQL密码是解决紧急情况的一种手段,但更重要的是,我们应该重视密码管理,遵循安全策略,以防止密码泄露带来的潜在威胁。在实际工作中,我们应优先考虑使用安全的方法来保护...

    Excel VBA密码解密 密码解密 VBA保护密码解密

    Excel VBA密码解密 超级实用 很难得的哦.

    猪圈密码解密脚本-python

    猪圈密码解密脚本-python 猪圈密码(Pigpen Cipher或称九宫格密码、朱高密码、共济会密码或共济会员密码),是一种以格子为基础的简单替代式密码

    栅栏密码加密解密工具

    在网络安全挑战赛(CTF)中,栅栏密码通常作为一个基础的密码学问题出现,参赛者需要通过分析和逻辑推理来确定栅栏数,并进行加密或解密操作。这有助于参赛者了解基本的密码学概念,并锻炼他们的逻辑思维和问题解决...

Global site tag (gtag.js) - Google Analytics