DCSync攻击域控
如果拿到了域内用户的权限,则可以在域内直接使用mimikatz去dump域控hash,注意:这里不需要使用debug权限也可以去直接dump哈希的,因为DCSync去向域控发起请求,并非本地操作,为网络请求。
当前为普通域用户,并非在管理员组中.
具有DCSync权限,则可以直接连接域控dump哈希
主机上有杀软无法上传mimikatz,可以使用impacket中的secretsdump去dump哈希
拿到用户为以下组的用户,即可直接写入DCSync功能,从而dump哈希
当前admin用户为domain admins组的用户
查询到该用户可对自己有写入权限,那么即可写入DCSync
如果拿到了域内用户的权限,则可以在域内直接使用mimikatz去dump域控hash,注意:这里不需要使用debug权限也可以去直接dump哈希的,因为DCSync去向域控发起请求,并非本地操作,为网络请求。
当前为普通域用户,并非在管理员组中.
具有DCSync权限,则可以直接连接域控dump哈希
主机上有杀软无法上传mimikatz,可以使用impacket中的secretsdump去dump哈希
拿到用户为以下组的用户,即可直接写入DCSync功能,从而dump哈希
当前admin用户为domain admins组的用户
查询到该用户可对自己有写入权限,那么即可写入DCSync
配置IDS监管网络流量
如若发现在以DsGetDCChange请求源不在"复制允许列表",
使用DCSYNCMonitor来监控网络流量
我们还可以利用网络流量来检测 DCSync 攻击。需要在域控制器上安装一个工具DCSYNCMonitor来监控网络流量。当通过网络执行任何复制时,此工具会触发警报。当真正的域控制器请求复制时,这可能会触发误报警报。因此,建议使用DCSYNCMonitor工具和配置文件,我们在其中指定网络中域控制器的 IP 地址,以避免误报警报。
如若发现在以DsGetDCChange请求源不在"复制允许列表",
使用DCSYNCMonitor来监控网络流量
我们还可以利用网络流量来检测 DCSync 攻击。需要在域控制器上安装一个工具DCSYNCMonitor来监控网络流量。当通过网络执行任何复制时,此工具会触发警报。当真正的域控制器请求复制时,这可能会触发误报警报。因此,建议使用DCSYNCMonitor工具和配置文件,我们在其中指定网络中域控制器的 IP 地址,以避免误报警报。
Mimikatz 是一款开源工具,旨在收集和利用 Windows 操作系统上的凭据。其主要功能是从内存中提取纯文本密码、哈希、PIN 码和 Kerberos 票证,使其成为一款强大的后利用工具。
1. 凭证提取
Mimikatz 擅长提取各种形式的凭证,包括:
密码:检索存储在内存中的纯文本密码。
哈希:提取密码哈希以进行离线破解。
PIN 码:捕获用于身份验证的 PIN 码。
Kerberos 票证:窃取 Kerberos 票证来冒充用户。
2. 传递票证攻击
Mimikatz 可以操纵 Kerberos 票证,让攻击者无需实际用户密码即可在网络中横向移动。这被称为“传递票证”攻击,其中被盗用的票证授予票证 (TGT) 被用于未经授权的访问。
3. 哈希传递攻击
除了传统的传递哈希攻击之外,Mimikatz 还引入了“过度传递哈希”的概念,即将恶意代码注入 LSASS(本地安全机构子系统服务)进程以实时拦截密码哈希。
4. 金票攻击
Mimikatz 可以创建伪造的 Kerberos 票证,即“黄金票证”。攻击者可以使用这些票证冒充任何用户并获得对网络的持久访问权限。
5. DCSync 攻击
Mimikatz 可以执行 DCSync 攻击来模拟域控制器 (DC) 复制请求,获取敏感帐户信息(包括 NTLM 哈希),而无需直接与 DC 交互。
1. 凭证提取
Mimikatz 擅长提取各种形式的凭证,包括:
密码:检索存储在内存中的纯文本密码。
哈希:提取密码哈希以进行离线破解。
PIN 码:捕获用于身份验证的 PIN 码。
Kerberos 票证:窃取 Kerberos 票证来冒充用户。
2. 传递票证攻击
Mimikatz 可以操纵 Kerberos 票证,让攻击者无需实际用户密码即可在网络中横向移动。这被称为“传递票证”攻击,其中被盗用的票证授予票证 (TGT) 被用于未经授权的访问。
3. 哈希传递攻击
除了传统的传递哈希攻击之外,Mimikatz 还引入了“过度传递哈希”的概念,即将恶意代码注入 LSASS(本地安全机构子系统服务)进程以实时拦截密码哈希。
4. 金票攻击
Mimikatz 可以创建伪造的 Kerberos 票证,即“黄金票证”。攻击者可以使用这些票证冒充任何用户并获得对网络的持久访问权限。
5. DCSync 攻击
Mimikatz 可以执行 DCSync 攻击来模拟域控制器 (DC) 复制请求,获取敏感帐户信息(包括 NTLM 哈希),而无需直接与 DC 交互。
转储 LSASS 的必要条件
为了将 LSASS 转储为攻击者,必须拥有 SEDebugPrivilege。Windows 默认设置是将此权限授予本地管理员,但可以使用“whoami”命令进行验证。
其次,值得注意的是,在现代机器上,Windows Defender 将终止任何试图转储 LSASS(2)的 PowerShell 进程,因此,使用 CMD 或 .net 工具而不是 PowerShell 来执行此操作非常重要。
以下是用于转储 LSASS 的方法列表。请注意,这些方法中有几种会创建内存转储文件,而不是输出哈希/密码。要处理 LSASS 内存转储文件,Mimikatz 或 Pypykatz 是两种用于提取凭据的常用工具。
为了将 LSASS 转储为攻击者,必须拥有 SEDebugPrivilege。Windows 默认设置是将此权限授予本地管理员,但可以使用“whoami”命令进行验证。
其次,值得注意的是,在现代机器上,Windows Defender 将终止任何试图转储 LSASS(2)的 PowerShell 进程,因此,使用 CMD 或 .net 工具而不是 PowerShell 来执行此操作非常重要。
以下是用于转储 LSASS 的方法列表。请注意,这些方法中有几种会创建内存转储文件,而不是输出哈希/密码。要处理 LSASS 内存转储文件,Mimikatz 或 Pypykatz 是两种用于提取凭据的常用工具。
WINDOWS 签名工具
任务管理器(GUI)
如果您有远程桌面协议 (RDP) 或其他 GUI 访问设备,则可以使用 Windows 任务管理器创建转储文件。Windows Defender 默认不会对此发出警报,因此这是一个非常可靠的选择。这种方法的缺点是扩展性不佳并且速度相对较慢。
从任务管理器中,转到“详细信息”选项卡,找到 lsass.exe,右键单击,然后选择“创建转储文件”
这将在用户的 AppData\Local\Temp 目录中创建一个转储文件
现在您需要一种方法将转储文件传输到本地计算机。如果在 Linux 中使用 RDP,xfreerdp 是一个很好的选择,因为您可以使用以下语法自动安装共享驱动器来复制文件:
xfreerdp /v:IPADDRESS /u:USERNAME /p:PASSWORD /d:DOMAIN /drive:SHARE,/path/shared
这将在您远程访问的 Windows 计算机上创建一个名为“SHARE”的共享驱动器
任务管理器(GUI)
如果您有远程桌面协议 (RDP) 或其他 GUI 访问设备,则可以使用 Windows 任务管理器创建转储文件。Windows Defender 默认不会对此发出警报,因此这是一个非常可靠的选择。这种方法的缺点是扩展性不佳并且速度相对较慢。
从任务管理器中,转到“详细信息”选项卡,找到 lsass.exe,右键单击,然后选择“创建转储文件”
这将在用户的 AppData\Local\Temp 目录中创建一个转储文件
现在您需要一种方法将转储文件传输到本地计算机。如果在 Linux 中使用 RDP,xfreerdp 是一个很好的选择,因为您可以使用以下语法自动安装共享驱动器来复制文件:
xfreerdp /v:IPADDRESS /u:USERNAME /p:PASSWORD /d:DOMAIN /drive:SHARE,/path/shared
这将在您远程访问的 Windows 计算机上创建一个名为“SHARE”的共享驱动器
generate/build功能
主要逻辑实现在generateCmd.go
在这里获取stub、puppet的路径和aes的key、获取了时间戳
stub被读取为stubData,然后进入这里面
跟过去发现有个GenerateExe函数,传进了参数,进行了异或,生成了一个新的exe,根据前面调试看见的变量outputPath,可以认定新的exe就是loader.exe
这时候再来看看stub的源码
可以看到一开始是有默认值的
可以手动异或一下看看,发现跟Orca_Master里面type.go默认的值是一样的
然后继续看generateCmd,进入shellcode.PE2ShellCode(srcFile, dstFile, ¶ms),后面就是上传了,所以如果把Orca_Puppet_win_x64.exe转化成.bin文件就是在这里了,步入看一下,经过了donutGen的处理
主要逻辑实现在generateCmd.go
在这里获取stub、puppet的路径和aes的key、获取了时间戳
stub被读取为stubData,然后进入这里面
跟过去发现有个GenerateExe函数,传进了参数,进行了异或,生成了一个新的exe,根据前面调试看见的变量outputPath,可以认定新的exe就是loader.exe
这时候再来看看stub的源码
可以看到一开始是有默认值的
可以手动异或一下看看,发现跟Orca_Master里面type.go默认的值是一样的
然后继续看generateCmd,进入shellcode.PE2ShellCode(srcFile, dstFile, ¶ms),后面就是上传了,所以如果把Orca_Puppet_win_x64.exe转化成.bin文件就是在这里了,步入看一下,经过了donutGen的处理
babyapk
DIE扫出来是一个flutter架构的apk,考虑用blutter来反编译
我之前在ubuntu上配置成功过,后来因为虚拟机坏了全删了。重新配置时kali、ubuntu
网络问题(要全局代理),缺少编译环境
cmake相关的报错就是缺少环境,一定要检查VS这个模块有没有安装
环境配置成功之后就快乐启动
得到输出,利用里面的文件可以恢复符号表,把addName的脚本跑一遍
DIE扫出来是一个flutter架构的apk,考虑用blutter来反编译
我之前在ubuntu上配置成功过,后来因为虚拟机坏了全删了。重新配置时kali、ubuntu
网络问题(要全局代理),缺少编译环境
cmake相关的报错就是缺少环境,一定要检查VS这个模块有没有安装
环境配置成功之后就快乐启动
得到输出,利用里面的文件可以恢复符号表,把addName的脚本跑一遍
在apk包中发现了libapp.so和libfutter.so之后基本可以确定为flutter框架编写的应用,我们可以使用github上的开源项目blutter(GitHub - worawit/blutter: Flutter Mobile Application Reverse Engineering Tool)或者reflutter(Impact-I/reFlutter: Flutter Reverse Engineering Framework (github.com))还原IDA符号表用于分析。通过还原的符号名去猜测函数作用,然后根据目的进行各类分析
reflutter使用方法
reflutter的使用方法比较简单
选项1是抓包流量监控
选项2是获取函数偏移地址
我们是要获取函数偏移以及函数执行流程,所以选择2,然后会让输入burp的ip,这个是用于抓包使用,我们可以忽略,在ip输入填入127.0.0.1即可,此时reflutter会重打包一遍apk
reflutter使用方法
reflutter的使用方法比较简单
选项1是抓包流量监控
选项2是获取函数偏移地址
我们是要获取函数偏移以及函数执行流程,所以选择2,然后会让输入burp的ip,这个是用于抓包使用,我们可以忽略,在ip输入填入127.0.0.1即可,此时reflutter会重打包一遍apk