- 浏览: 290798 次
-
文章分类
- 全部博客 (276)
- burp+hydra暴力破解 (1)
- kali linux工具集 (6)
- kali (59)
- linux (54)
- password (14)
- web (63)
- 渗透测试 (50)
- windows (40)
- metasploit (9)
- 信息收集 (32)
- burp suit (4)
- 安全审计 (9)
- https://github.com/secretsquirrel/the-backdoor-factory (0)
- nmap (4)
- arachni (2)
- 工具 (5)
- sql (3)
- 网络 (2)
- 后渗透测试 (10)
- 内网 (5)
- 无线 (2)
- C (3)
- bios (1)
- RoR (12)
- mongodb (1)
- linxu (1)
- gdb (1)
- linux,虚拟化 (1)
- python (4)
最新评论
原文地址:
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来解密密码
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

发表评论
-
[图] windows 10
2015-08-18 20:37 314网上下载的图片,忘了来源 -
[转]Tunneling Data and Commands Over DNS to Bypass Firewalls
2015-07-13 20:44 487https://zeltser.com/c2-dns-tunn ... -
windows提权集合
2015-06-30 00:23 602https://blog.netspi.com/5-ways- ... -
[转]Access to every PC and become local Admin
2015-06-29 21:50 533原文地址:http://www.gosecure.it/blo ... -
[转]Top Five Ways SpiderLabs Got Domain Admin on Your Internal Network
2015-06-29 21:46 1682原文地址:https://www.trustwave.com/ ... -
[转]如何获得window管理员权限
2015-06-29 21:21 481引用A tutorial on how to get into ... -
Window提权基本步骤
2015-06-03 22:00 784原文地址: http://www.fuzzysecurity. ... -
[转]malware persistence
2015-05-06 23:46 413原文地址:http://jumpespjump.blogspo ... -
[转]backdoor a windows domain
2015-05-06 22:56 504原文地址:http://jumpespjump.blogspo ... -
[转]badsamba
2015-03-20 00:55 330原文地址:http://blog.gdssecurity.co ... -
自动化Man-in-the-Middle SSHv2攻击
2015-03-18 01:26 1049参考:http://www.david-guembel.de/ ... -
[译]使用wireshark解密TLS浏览器流量
2015-03-12 00:57 4145原文地址:https://jimshaver.net/2015 ... -
[转]John the ripper hash format cheetsheet
2015-03-10 01:30 1050原文地址:http://pentestmonkey.net/c ... -
window增加硬盘性能方法
2015-02-05 01:03 357参考地址:http://way2h.blogspot.com/ ... -
[译]Skeleton Key Malware & Mimikatz
2015-01-28 20:29 812原文地址: http://adsecurity.org/?p= ... -
绕过PowerShell执行策略的15种方法
2015-01-28 02:27 999https://blog.netspi.com/15-ways ... -
[翻译]oledump: Extracting Embedded EXE From DOC
2015-01-04 22:40 949原文地址:http://blog.didierstevens. ... -
[工具]volatility----Windows内存取证
2015-01-04 22:01 1549下载地址:https://github.com/volatil ... -
[译]Windows提权:ahcache.sys/NtApphelpCacheControl
2015-01-03 21:12 1032原文地址:https://code.google.com/p/ ... -
[译]使用Volatility从memory dump获得密码
2014-12-30 12:27 3827原文地址:https://cyberarms.wordpres ...
相关推荐
"MSSQL存储过程解密工具SQL SERVER"就是为了应对这种情况而设计的。 SQL Decryptor是一款专为了解密SQL Server中的加密存储过程、函数等数据库对象而开发的软件。这款工具的主要功能是帮助数据库管理员和开发者恢复...
S7-200 SMART200 项目密码 POU子程序块密码 4种解密软件 SMART200电脑上程序.smart 文件 S7-200电脑上程序mwp文件 第1 S7-200 POU子程序块密码解密 第2 S7-200 项目密码解密 第3 SMART200 POU子程序块密码解密 第4...
在本篇文章中,我们将深入探讨如何在MSSQL数据库中实现密码字段的加密与解密。根据提供的信息,本文将围绕以下核心知识点展开讨论:密码字段的设计、自定义加密函数的创建及其应用。 ### 一、密码字段设计 在MSSQL...
C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与解密C++密码加密与...
解密希尔密码
海泰克触摸屏项目密码解密是一个针对海泰克(Hitech)触摸屏编程软件的专用工具,主要用于解决用户在操作过程中遇到的项目密码保护问题。海泰克是一家知名的自动化设备制造商,其生产的触摸屏广泛应用于各种工业自动化...
凯撒密码解密 凯撒密码解密
PLC的解密软件,这包括200项目密码解密和200上传密码解密的2.0版本以下版本。LOGO! 是西门子推出的一种小型、经济型的逻辑控制器,适用于简单的自动化任务。 首先,我们需要明确的是,使用这样的解密软件可能涉及...
CTF(Capture The Flag)是一种网络安全竞赛,其中密码学挑战是常见的环节,要求参赛者解决各种加密和解密问题。在这个压缩包中,我们有四个Python脚本,分别涉及摩斯密码、培根密码、ASCII编码和解码以及凯撒密码。...
是仿射密码的解密工具,可以解仿射密码;
综上所述,"WinScp密码解密工具.rar"提供了一种方法来查看和管理WinSCP保存的加密密码,这对于忘记密码或需要临时查看明文密码的用户来说非常有用。然而,使用此类工具时务必谨慎,遵循最佳安全实践,防止密码泄露。
然而,当需要重置或解密这些密码时,我们需要理解Navicat的密码存储方式。Navicat的连接信息,包括用户名和密码,是存储在其配置文件中的,通常是XML格式。这些文件通常位于用户的个人设置目录下,如Windows的 `%APP...
总的来说,"栅栏密码加密解密"是一个基于VB编写的程序,它实现了栅栏密码的加密和解密功能,适用于教学、研究或个人兴趣探索。开源特性使得用户可以自由地查看、学习和改进这个程序,进一步理解加密解密的基本原理...
3. 解密过程:使用编程或解密工具,根据已知的密码结构和算法,解密POU的密码。 4. 修改和重新编程:解密后,可以修改密码并重新上传程序到PLC。 需要注意的是,密码解密操作应遵循合法性和合规性原则,仅用于学习...
仿射密码加密与解密C++源程序 仿射密码是一种简单的加密算法,它使用线性变换来进行加密和解密。下面我们将详细介绍仿射密码的加密和解密算法,并提供相应的C++源代码。 仿射密码的加密算法是一个线性算法,密钥...
总而言之,了解如何解密Navicat保存的MySQL密码是解决紧急情况的一种手段,但更重要的是,我们应该重视密码管理,遵循安全策略,以防止密码泄露带来的潜在威胁。在实际工作中,我们应优先考虑使用安全的方法来保护...
Excel VBA密码解密 超级实用 很难得的哦.
猪圈密码解密脚本-python 猪圈密码(Pigpen Cipher或称九宫格密码、朱高密码、共济会密码或共济会员密码),是一种以格子为基础的简单替代式密码
在网络安全挑战赛(CTF)中,栅栏密码通常作为一个基础的密码学问题出现,参赛者需要通过分析和逻辑推理来确定栅栏数,并进行加密或解密操作。这有助于参赛者了解基本的密码学概念,并锻炼他们的逻辑思维和问题解决...