Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
adit — 基于 ADWS(net.tcp/9389)的 Active Directory 侦察与只读安全审计,使用 Go 语言实现 | Kitploit
工具/GitHubGitHub/joda32/adit
防御工具权限提升侦察漏洞分析脚本与自动化配置审计信息收集网络安全渗透测试身份验证红队
18921天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHub
joda32/adit

adit

基于 ADWS(net.tcp/9389)的 Active Directory 侦察与只读安全审计,使用 Go 语言实现

查看仓库

adit

adit 是一个单二进制的 Active Directory 侦察与只读安全审计工具,它通过 ADWS(Active Directory Web Services,TCP/9389) 而非 LDAP 与域控制器通信。

adit 是矿井的水平入口——一条安静的进入通道。通过 ADWS 而非 LDAP/389 查询 AD 意味着流量是 WCF net.tcp 帧格式的、基于不常见端口的二进制 XML SOAP,因此相比经典 LDAP 更不容易被检查、过滤或特征识别——同时仍返回相同的目录数据。adit 用 Go 实现了完整的 ADWS 协议栈,无外部运行时依赖。

┌────────────┐   net.tcp/9389   ┌──────────────┐
│   adit     │ ───────────────▶ │  ADWS on DC  │ ──▶ local LDAP
│  (Linux)   │   NMF · NNS ·    │  (port 9389) │
│            │   NBFSE · SOAP   └──────────────┘
└────────────┘

adit — 通过 ADWS 进行侦察和只读审计

  • 侦察 — 31 个收集器将目录导出为 CSV、带样式的 XLSX 工作簿 以及自包含的 HTML 仪表板。
  • 审计 — 只读发现引擎评估 30 条规则(DCSync、危险 ACL、AdminSDHolder、委派、roasting、ADCS ESC1–4/9、过期/遗留 对象等),并输出按严重性排序的 JSON 报告,该报告同时位于 仪表板顶部。
  • 可达性 — 通过 HTTP CONNECT 或 SOCKS4/4a/5 代理路由整个流程, 以审计只能通过跳板主机访问的 DC。
  • 认证 — NTLM 或 Kerberos,完全手工实现(NTLMv2 签名+密封、RFC 4121 密封 GSS Wrap),并针对 impacket 进行逐字节验证。

adit 是一款防御/审计与授权评估工具。请仅对您获得授权 评估的目录运行它。

功能

能力详情
传输基于 WCF net.tcp(TCP/9389)的 ADWS — MC-NMF 帧、MS-NNS 握手、MC-NBFS/NBFSE 二进制 XML、WS-Enumeration/WS-Transfer SOAP
认证NTLMv2(签名 + 密封)和 Kerberos(ccache / keytab / 密码;RFC 4121 密封 GSS)
侦察收集器31 个模块(见下文)→ 每个模块一个 CSV
报告带样式的多工作表 XLSX 工作簿 + 自包含 HTML 仪表板(搜索/排序、严重性徽章、滚动监听)
安全审计30 条只读规则(包括 ADCS ESC1–4/9)→ 按严重性排序的 JSON,同时展示在仪表板中
代理 / 跳板主机HTTP CONNECT、SOCKS5/5h、SOCKS4/4a(支持代理认证 + 远程 DNS)
分页服务端 WS-Enumeration Pull 分页,页面大小可配置
离线报告从先前收集的 CSV 重建 XLSX/HTML,无需 DC
依赖纯 Go;无 LDAP 库、无 .NET、无外部服务

收集器

forest、domain、trusts、sites、subnets、schemahistory、dcs、 users、userspns、groups、computers、computerspns、ous、gpos、 gplinks、passwordpolicy、fgpp、dnszones、dnsrecords、kerberoastable、 asreproastable、krbtgt、adcs、cas、laps、protectedgroups、 groupmembers、gmsa、dmsa、printers、bitlocker

ADCS(adcs)会标记 ESC1–ESC4/ESC9;laps 报告谁可以读取每个密码; protectedgroups 审计受保护用户。运行 adit -list-modules 获取 当前列表。

审计检查

-audit 运行 30 条只读规则。发现项包含规则 ID、严重性、受影响 对象、证据和修复建议,并写入 Adit-Audit.json(并且, 当与 -collect 结合使用时,会生成一个位于仪表板顶部的“Audit Findings”部分)。 该引擎从不读取机密属性值(LAPS / gMSA / BitLocker),尽管侦察收集器可以读取。

规则严重性标记内容
AD-DOM-010严重非 Tier-0 主体持有 DCSync(复制)权限
AD-ACL-001/005/006/007/011–016严重对特权对象的危险控制(GenericAll/Write、WriteDACL/Owner、ForceChangePassword、Write SPN / KeyCredentialLink / member / AllowedToAct)
AD-SDH-001/002严重AdminSDHolder 的意外控制/所有者
AD-CS-001严重–中ESC1 — 证书模板允许注册者提供主题
AD-CS-002严重–中ESC2 — Any-Purpose / 无 EKU 证书模板
AD-CS-003高–中ESC3 — 证书请求代理模板
AD-CS-004高ESC4 — 证书模板上的弱访问控制
AD-CS-009高ESC9 — 证书模板缺少安全扩展
AD-CS-005严重/高ESC5 — 对 PKI 对象的危险控制(NTAuthCertificates、CA 存储、CA 对象)
AD-CS-006信息存在 AD CS — ESC6/ESC7/ESC8 需要主机级验证(无法通过 ADWS 观察)
AD-DOM-008高域范围内启用了可逆密码加密
AD-USR-001高禁用了 Kerberos 预认证(可进行 AS-REP 烘焙)
AD-USR-009高账户仅使用 DES 加密
AD-CMP-006高非 DC 上的无约束委派
AD-KCL-001高特权账户上的密钥凭据(影子凭据)
AD-KRB-001高krbtgt 密码已过期
AD-DOM-005中机器账户配额 > 0(任何用户都可以加入计算机)
AD-USR-002中可 Kerberoast 的服务账户(若为特权账户则为高)
AD-USR-005中设置了 PASSWD_NOTREQD
AD-USR-006中特权账户密码永不过期
AD-USR-011中特权账户密码已过期
AD-CMP-008中配置了基于资源的约束委派
AD-CMP-012中旧版/不受支持的操作系统
AD-GRP-009中特权组中的外部安全主体
AD-GRP-020中通过 primaryGroupID 隐藏的特权成员身份
AD-TRU-001/003高/中未启用 SID 过滤 / 带有 SID 历史的信任
AD-DNS-003/004中/低存在 WPAD / ISATAP 记录
AD-CMP-011低过期的计算机账户
AD-INT-005高sIDHistory 包含特权 SID
AD-USR-020高userPassword / unixUserPassword 中存储了可恢复密码
AD-USR-021高description / info / comment 中可能遗留密码(启发式)
AD-DOM-012高/中Pre-Windows 2000 Compatible Access 中的 Everyone / Anonymous / Authenticated Users

阈值可调整:-krbtgt-max-age、-priv-pwd-max-age、-stale-days。

ADCS 说明:ESC1–ESC5 和 ESC9 通过 ADWS 从 AD 对象进行评估。ESC6 (EDITF_ATTRIBUTESUBJECTALTNAME2)、ESC7(CA 角色 ACL)和 ESC8(Web 注册 / NTLM 中继)位于 CA 主机的注册表/HTTP 端点中,无法通过 ADWS 观察 — AD-CS-006 会标记存在 CA,以便在主机上进行验证(例如使用 Certipy)。

开始使用

需要 Go 1.26+。无其他构建依赖。

# Build the binary
go build -o adit ./cmd/adit
./adit -version

# …or run without installing
go run ./cmd/adit -h

# Cross-compile release archives for linux/windows/darwin (amd64+arm64) into dist/
bash scripts/build-release.sh

-fqdn 必须是 DC 的真实 FQDN(而非其 IP):ADWS SOAP 的 To 头会由 WCF 的 AddressFilter 与端点进行匹配。可通过例如 nslookup -type=SRV _ldap._tcp.dc._msdcs.<domain> <dc-ip> 来查找。

用法

adit -dc <host> -fqdn <dc-fqdn> -d <DOMAIN> -u <user> -p <pass> [flags]

侦察

# RootDSE handshake only (verifies auth + the full protocol stack)
adit -dc 10.0.0.10 -fqdn dc01.example.local -d EXAMPLE.LOCAL -u user -p 'pass'

# Run every collector -> ./report/CSV-Files/*.csv + Adit-Report.{xlsx,html}
adit -dc 10.0.0.10 -fqdn dc01.example.local -d EXAMPLE.LOCAL -u user -p 'pass' \
  -collect all -o ./report

# A subset of collectors
adit -dc 10.0.0.10 -fqdn dc01.example.local -d EXAMPLE.LOCAL -u user -p 'pass' \
  -collect users,groups,computers,kerberoastable

安全审计

# Audit only -> Adit-Audit.json
adit -dc 10.0.0.10 -fqdn dc01.example.local -d EXAMPLE.LOCAL -u user -p 'pass' -audit

# Recon + audit: findings lead the XLSX + HTML dashboard
adit -dc 10.0.0.10 -fqdn dc01.example.local -d EXAMPLE.LOCAL -u user -p 'pass' \
  -collect all -audit -o ./report

Kerberos

# Password (synthesises a krb5.conf from the domain + DC if none is present)
adit -dc 10.0.0.10 -fqdn dc01.example.local -d EXAMPLE.LOCAL -u user -p 'pass' -auth kerberos

# Existing ticket cache
KRB5CCNAME=/tmp/krb5cc_1000 adit -dc 10.0.0.10 -fqdn dc01.example.local \
  -d EXAMPLE.LOCAL -u user -auth kerberos -ccache /tmp/krb5cc_1000

通过跳板机 / 代理

ADWS 是一个Web 服务,但并非 HTTP——它通过 9389 端口承载原始 TCP 流量——不过代理仍然可以隧道传输该 TCP 流。在协议允许的情况下(SOCKS5/4a、HTTP CONNECT),DC 名称会在代理端解析,因此仅内部可用的名称也能正常工作。

# SSH dynamic forward = a local SOCKS5 proxy
ssh -D 1080 -N jump-host &
adit -dc dc01.corp.internal -fqdn dc01.corp.internal -d CORP.INTERNAL \
  -u user -p 'pass' -proxy socks5://127.0.0.1:1080 -collect all -audit -o ./report

# Other proxy forms
-proxy socks5://user:[email protected]:1080   # SOCKS5 with username/password auth
-proxy socks4a://10.0.0.5:1080             # SOCKS4a (remote DNS)
-proxy http://user:[email protected]:8080    # HTTP CONNECT (Basic auth)
-proxy https://proxy.corp:8443             # HTTP CONNECT over TLS to the proxy

使用 -auth kerberos + 密码时,KDC 交换仍会直连;通过跳板主机时,先获取票据并传入 -ccache / KRB5CCNAME。

临时查询与离线报告

# Raw LDAP-filter query over ADWS, selecting attributes (paged automatically)
adit -dc 10.0.0.10 -fqdn dc01.example.local -d EXAMPLE.LOCAL -u user -p 'pass' \
  -query '(&(objectClass=user)(objectCategory=person))' \
  -attrs sAMAccountName,userAccountControl,objectSid

# Rebuild the workbook / dashboard from existing CSVs (no DC needed)
adit -generate-excel-from ./report/CSV-Files -o report.xlsx
adit -generate-html-from  ./report/CSV-Files -o report.html

运行 adit -h 查看完整的参数列表。

布局

下载工具