作者的掏心话
该系列名为 渗透测试-XXXX
该系列都是比较基础的内容,如各位没找到自己想要的内容,小编给各位赔不是了。
该系列是以俺日常学习笔记为数据基础,所整理出来的使用手册。该系列希望能够做到成为渗透测试时的帮助手册,提醒渗透的思路、渗透工具的具体使用等内容,以免各位在互联网再不断翻找。由于互联网的内容良莠不齐,俺可保证收集到的内容均经过验证,所以请放心食用。
我们必须记录的信息
整个域渗透过程都充斥着这些消息,我们必须对其保持高度敏感:
1.域用户\组
2.加域设备
3.关键服务
4.存在漏洞主机
使用文档简介
该文档的重点在于思路上的枚举,瘾小生会将所有经过验证的思路写于此处,以便使用,工具的具体使用本文没有详细介绍,参考文章《渗透测试--域攻击工具Playbook》,里面有详细的攻击使用指令。这两篇文章是相辅相成的,在这里所有的手法指令都能在那篇文章找到对应点。
寻找立足点
寻找立足点的最终目的为拿到一台加域的Windows主机,可以让这台主机搭载我们的toolkit。我们通常有以下过程和手段:
1.嗅探存活的主机
2.对LLMNR/NBT-NS投毒
3.用户枚举&密码喷洒&了解密码策略
4.Administrator密码复用
5.内网漏洞扫描
立足点建立
当我们寻找到可以立足的地方后,我们就可以在这个地点上做一些别的事情了,站稳脚跟后我们可以完成以下操作:
枚举当前主机的安全策略
枚举当前主机的基本信息
枚举当前主机的防御情况
枚举当前主机的人员使用情况
网络情况
凭证枚举
站在立足点上寻找更高的立足点
立足点可能各种情况,针对这些情况,我们应该有不同的处理办法。但是万变不离其宗,我们在获取到一个立足点的时候,我们必须了解,我们是谁,我们在哪里,我们可以做什么。
用户
设备
服务
设备
设备是用户的载体,在设备上的时候,我们有必要获取这个设备上的一切用户凭证。
在Linux设备上Responder嗅探
在Windows设备上Inveigh嗅探
在Windows设备上提取LSA
在Windows设备上提取SAM
在Linux主机上查看ccache文件
在Linux主机上查看keytab文件
在Linux\Winodws设备上使用Lazagne
在Linux\Winodws设备上搜索用户文件
在Linux\Winodws设备上搜索配置文件
在DC设备上复制NTDS.dit
在Linux设备上使用linpeas自动化获取敏感信息
用户
用户是权限的载体,当我们获取到一个用户的时候,我们非常有必要了解用户价值,以及其可能深入的可能性。
枚举用户的所属组
枚举用户的ACL权限
枚举用户可用服务
构建域地图以了解用户是否拥有价值
猜测用户的功能
服务
服务很可能会导致凭证的泄露,这正是我们喜欢的。服务是否存在漏洞,是否存在缺陷,能否获取凭证,是我们应当思考的东西
mssql RCE
mssql 窃取Hash
SMB 窃取Hash
SMB Pwned 则可以做一切你想做的
域信息收集
探测存活主机
fping扫描
Responder嗅探存活主机
对LLMNR/NBT-NS投毒
Responder投毒
Responder hash存储位置/usr/share/responder/logs/
Powershell启动Inveigh投毒
cmd启动Inveigh投毒,在控制台输入HELP即可看到一些操作手册。
用户枚举
Windows SMB空会话枚举
rpcclient工具利用SMB会话检索用户名
crackmapexec工具利用SMB会话检索用户名
nxc工具利用SMB检索用户名
Windows net工具利用SMB会话检索用户名
ldapsearch工具利用LDAP匿名绑定枚举用户名
windapsearch工具利用LDAP匿名绑定枚举用户名
kerbrute工具利用kerberous协议爆破枚举用户名
密码喷洒行为守则
因为我们是白客,我们必须负责人地采取渗透行为,来维护信任关系。所以我们应当记录我们的密码喷洒活动:
【需记录内容】
- 目标账户
- 攻击中使用的域控制器
- 喷药时间
- 喷药日期
- 尝试输入密码
【我们必须避免的情况】
- 锁定用户账户
密码喷洒
hydra&medusa密码喷洒渗透测试-暴力破解_渗透测试密码本-CSDN博客
bash密码喷洒
nxc&crackmapexec密码喷洒
kerbrute密码喷洒
Administrator密码复用
DomainPasswordSpray.ps1在Windows主机上进行密码喷洒
了解密码策略
rpcclient枚举密码策略
crackmapexec枚举密码策略
enum4linux枚举密码策略
ldapsearch枚举密码策略
Windows net工具枚举密码策略
PowerView.ps1枚举密码策略
密码本制作
fscan扫描内网漏洞情况
fscan可能是我们的好帮手https://github.com/shadow1ng/fscan。但请记住,这种做法比较吵闹。
枚举当前主机的安全策略
Powershell枚举当前主机是否开启实时防护
Powershell枚举当前主机的是否存在app锁
Powershell枚举当前主机的Powershell是否受限
Powershell枚举当前主机的LAPS策略
Powershell使用LAPS策略枚举LAPS主机密码
枚举当前主机的基本信息
使用cmd枚举主机基本信息
使用Powershell枚举当前主机基本信息
使用WMIC枚举当前主机补丁情况
使用WMIC枚举当前主机的整体情况
使用WMIC枚举当前主机的进程列表
枚举当前主机的防御情况
使用Powershell枚举当前主机防火墙情况
使用Powershell枚举当前主机Windows Defender情况
使用Powershell枚举当前主机的AV设置和版本号情况
枚举当前主机的人员使用情况
使用qwinsta了解当前主机的使用情况
网络情况
使用cmd了解当前主机的网络情况
使用net了解当前主机的网络情况
建立SMB服务点
在立足点使用net工具建立SMB服务
枚举域密码策略、组策略、域信息
使用net枚举密码策略
使用PowerView枚举组策略
使用Powershell枚举组策略
Powerview枚举域信息SID
枚举域名信息
ActiveDirectory PowerShell枚举域名信息
使用WMIC枚举域和域控信息
枚举域用户
CrackmapExec & nxc枚举用户
rpcclient枚举用户
rpcclient枚举用户详细信息,依据SIDsmbmap枚举用户
net工具枚举用户
Windapsearch枚举域用户
在立足点使用ActiveDirectory PowerShell枚举域用户
在立足点使用Powerview枚举用户详细信息
Powerview枚举子域用户信息
在立足点使用Powershell测试本地管理员人员
在立足点使用net枚举域设备
在立足点使用net枚举域内某用户详细信息
在立足点使用net枚举域内用户列表
在立足点使用dsquery枚举域内用户列表
在立足点使用dsquery按通配符搜索域内信息
在立足点使用dsquery按特定属性集进行搜索域内信息
在立足点使用Powershell搜索用户详细信息
在立足点使用net枚举组内用户
枚举管理员
Windapsearch查找域管理员名称
Windapsearch查找特权账户位置
在立足点使用net寻找本地管理员账户
在立足点使用net列出本地管理员组的用户
Powerview枚举本地账号的管理员权限
Rubeus枚举特权账户的管理员用户以及其TGS票据
Powerview检索根域管理员SID
枚举主机上登录的用户、本地组
nxc & CrackMapExec枚举登录用户
使用Wmic枚举当前主机上登录的用户
使用Wmic枚举当前主机上的本地组
在立足点使用net枚举主机的本地组
枚举域组,组成员
CrackmapExec & nxc枚举组
rpcclient枚举域组
在立足点使用ActiveDirectory PowerShell枚举域组
在立足点使用ActiveDirectory Power域团队详情Shell枚举
在立足点使用ActiveDirectory PowerShell枚举域团队成员
在立足点使用Powerview枚举域组用户信息
Powershell枚举域组详细信息
在立足点使用net枚举域组列表
在立足点使用net枚举域组信息
在立足点使用dsquery按通配符搜索域内信息
在立足点使用dsquery按特定属性集进行搜索域内信息
枚举使用了SPN用户
在立足点使用Powerview查找设置了SPN的用户
在立足点使用Powershell查找设置了SPN的用户
在立足点使用impacket-GetUserSPNs.py查找设置了SPN的用户
在立足点使用setspn.exe枚举设置了SPN的用户
枚举使用了RC4进行密码存储的用户
Powershell查找RC4可逆密码存储用户
powerview了解哪些用户采用RC4进行加密
枚举ACL,GUID反向查询
Powerview枚举当前用户对所有对象的ACL
Powerview枚举当前用户对单个对象的ACL
Powershell枚举当前用户对单个对象的ACL
Powershell枚举当前用户对所有对象的ACL
Powershell完成GUID反向查询权限
Google搜索GUID查询权限
ForceChangePassword
abused withSet-DomainUserPassword
Add Members
abused withAdd-DomainGroupMember
GenericAll
abused withSet-DomainUserPassword
orAdd-DomainGroupMember
GenericWrite
abused withSet-DomainObject
WriteOwner
abused withSet-DomainObjectOwner
WriteDACL
abused withAdd-DomainObjectACL
AllExtendedRights
abused withSet-DomainUserPassword
orAdd-DomainGroupMember
Addself
abused withAdd-DomainGroupMember
枚举域用户组策略权限
Powerview枚举域用户GPO权限
Powershell枚举域用户GPO权限
枚举域设备,域控
在立足点使用dsquery枚举域设备
netdom查询域控
netdom查询域工作站和服务器
在立足点使用dsquery按通配符搜索域内信息
在立足点使用dsquery按特定属性集进行搜索域内信息
在立足点使用dsquery搜索域控
枚举域内共享
在立足点使用net工具枚举域内的SMB共享
在立足点使用net工具列出当前计算机的共享
枚举DNS记录
使用adidnsdump枚举DNS记录
枚举域内敏感信息
1.使用Powerview枚举描述字段,可能发现密码
2.使用Powerview枚举PASSWD_NOTREQD字段用户,可能发现空密码用户
3.留意.bat .vbs .ps1文件,可能包含敏感信息
4.组策略首选项GPP密码,drives.xml printers.xml services.xml scheduledtasks.xml ,在这些文件中使用的密码,cpassword采用AES加密,我们可以在MSDN上找到AES的私钥https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-gppref/2c15cbf0-f086-4c74-8b70-1f2fa45dd4be?redirectedfrom=MSDN,也可以使用gpp-decrypt直接解密
5.在受害机上Get-GPPPassword.ps1获取GPP密码
6.使用crackmapexec枚举SMB服务是否存在GPP文件并解析密码
7.使用Powerview、Rubeus、kerburte、Impacket-GetNPUsers.py枚举DONT_REQ_PREAUTH用户,获取不需要认证就能获取TGT的用户
构建域地图、查找域信任关系
Bloodhound构建域地图
Powerview构建域态势地图
sharphound构建域地图
PowerView枚举信任关系
Powershell枚举信任关系
netdom查询与信任
转储当前主机有关账户的信息
使用Wmic转储任何有关服务账户的系统账户信息
枚举主机SMB服务的分享文件夹胡敏感信息
smbmap可递归搜索分享文件夹
CrackmapExec & nxc枚举SMB服务器分享
CrackmapExec & nxc枚举SMB服务器文件基于爬虫
在立足点使用net查看当前主机的smb分享
snaffler爬取所有SMB服务器的有趣文件
基本操作
从NTDS.DIT提取哈希值
SecretsDump 提取ntds.dit哈希值
DSInternals提取ntds.dit哈希值
创建CMD导致RCE
psexec执行cmd
wmiexec执行cmd
创建Powershell导致RCE
evil-winrm执行powershell
将用户添加到管理员
在立足点使用net将用户添加到管理员
获取TGS票据
impacket-GetUserSPNs索要TGS门票
setspn配合Powershell索要TGS票证并存入内存
使用PowerView索要TGS票证
使用Rubeus索要TGS票证
枚举用户支持的加密类型
使用Powershell查看用户支持的加密类型
为设备写入TGT票证
通过Powershell创建PSCredential对象完成TGT票证写入
Powershell创建SecureString对象完成后TGT票证写入
PowerView强制修改密码-GenericALL权限
PowerView添加到用户组-GenericWrite权限
PowerView开启虚假SPN服务获取TGS票据
runas开启某用户上下文的Powershell
mimikatz在具有DCsync权限用户上下文下提取NTLM
横向移动
RDP
使用powerview枚举RDP的用户
Bloodhound枚举RDP用户
MSSQL
Bloodhound枚举MSSQL用户
PowerUpSQL枚举MSSQL实例
mssqlclient创建mssqlshell
Winrm
使用powerview枚举WINRM的用户
Bloodhound枚举WINRM用户
Powershell建立WINRM会话
携带NTLM进行横向
impacket工具集
xfreerdp 依据RDP协议获取远程桌面
evil-winrm 依据winrm协议获取Powershell RCE
CME&nxc 依据SMB实现RCE 枚举 等大量功能
CME&nxc 实现PTH枚举各种服务
域内攻击
nopac漏洞导致RCE和权限提升
printNightmare漏洞导致RCE和权限提升
PetitPotam漏洞导致RCE和权限提升
ACL滥用导致权限提升
Exchange导致权限提升
PrivExchange强迫对任意主机HTTP身份验证,导致中继攻击
打印机配置错误使用RpcOpenPrinter方法强制服务器对任何主机进行SMB身份验证
MS14-068导致权限提升
嗅探LDAP凭证导致获取凭证
DCsync攻击
mimikatz实施DCsync攻击
secretdump实施DCsync攻击
域间攻击
ExtraSids攻击,通过sid历史完成域间的控制
滥用域信任,以当前域权限攻击信任域
Powerview
bloodhound
GetUserSPNs
解决Kerberos双跳问题
使用远程主机的Powershell导入PScredential
使用远程主机注册PSSession配置
攻击链路执行
由于域内的攻击链路并非固定化的操作,在此只会罗列基本的样例。
ACL链路-例子1
攻击链路
- 使用
wley
用户更改damundsen
用户的密码【该步骤危险,需要询问被测方】- 以
damundsen
用户身份进行身份验证并利用GenericWrite
权限将我们控制的用户添加到Help Desk Level 1
组中- 利用
Information Technology
组中嵌套的组成员身份并利用GenericAll
权限来控制adunn
用户创建SPN服务,并获取该用户TGS票据,然后破解- 使用adunn用户执行DCsync攻击【需要知道adunn的密码】
攻击操作
1.使用Powershell构造好更改密码需要的对象。对象为PSCredential和SeureString对象,PSCredential是当前账户的认证信息,SeureString是想修改成为的密码。
2.使用Powerview修改
damundsen
密码。3.使用Powershell构建damundsen的PSCredential凭证。
4.利用damundsen用户对Help desk level 1 组的 GenericWrite权限,将damundsen用户写入Help desk level 1 组。
5.将特权账户damundsen开启SPN,从而让其他机器可以请求这个服务,以获取TGS票证。
6.离线破解TGS票证
7.使用adunn账户的权限,完成DCsync攻击
8.清理自己的行踪,使用Powerview删除创建的SPN
9.使用Powerview删除damundsen在help desk level 1中的权限