Titanis uses only the information on the command line and certain environment variables for authentication. It does not read your current session, OS credential store, or logged-on user identity.
Quick reference
| If you have… | Parameters | Protocols | Notes |
|---|---|---|---|
| Nothing | -Anonymous | NTLM | Use with -vv to discover the domain and computer name of a server. |
| User name + password | -UserName <user> -Password <pass> | NTLM | Domain is inferred from the NTLM challenge. Escape shell special characters. |
| User name + password (with domain) | -UserName <domain>\<user> or -UserName <user>@<domain> or -UserName <user> -UserDomain <domain> | NTLM, Kerberos | Domain may be NetBIOS or FQDN. |
| User name + NTLM hash (no domain) | -UserName <user> -NtlmHash <hex> | NTLM | Hash only — no colons. |
| User name + NTLM hash (with domain) | -UserName <domain>\<user> -NtlmHash <hex> | NTLM, Kerberos (RC4-HMAC) | |
| User name + AES 128 key | -UserName <user>@<domain> -AesKey <hex> | Kerberos (AES128) | Key length distinguishes AES128 from AES256. |
| User name + AES 256 key | -UserName <user>@<domain> -AesKey <hex> | Kerberos (AES256) | |
| TGT file + KDC | -Tgt <file> -Kdc <endpoint> | Kerberos | Titanis requests missing service tickets automatically. |
| Ticket cache + KDC | -TicketCache <file> -Kdc <endpoint> | Kerberos | New tickets are added to the cache and reused. |
| Service ticket file | -Ticket <file> | Kerberos | The SPN of the ticket must match what the command requires. |
| Ticket cache (service tickets) | -TicketCache <file> | Kerberos | |
| Certificate (.pfx) | -UserCert <.pfx> -UserKeyPassword <pass> | Kerberos (PKINIT) | -UserKeyPassword only required if the file is encrypted. |
| Certificate (.pem with key) | -UserCert <.pem> -UserKeyPassword <pass> | Kerberos (PKINIT) | |
| Certificate (.pem) + separate key | -UserCert <.pem> -UserKey <.key> -UserKeyPassword <pass> | Kerberos (PKINIT) |
Anonymous authentication
Pass-Anonymous to authenticate without credentials. Combined with -vv this is useful for enumerating the domain name and computer name that a server reports during the NTLM handshake.
Password authentication
Pass-the-hash
Provide the NT hash as a hex string (no colons):AES key authentication
AES128 and AES256 are distinguished automatically by key length:Ticket-based authentication
Titanis accepts both.kirbi and .ccache formats for all ticket file parameters — no conversion required.
-Tgt and -Kdc
-Tgt and -Kdc
Provide a TGT file and a KDC address. Titanis requests any required service tickets automatically.
-Ticket
-Ticket
Provide a file containing the exact service ticket the command needs. The SPN of the ticket must match what the command requires. This file is never modified.
-TicketCache
-TicketCache
A managed ticket cache that Titanis both reads from and writes to. Requested tickets are added to the file and reused in subsequent commands. If the file does not exist, it is created. The format (kirbi or ccache) is detected from the existing file content regardless of extension; for new files the extension determines the format.Set the If the cache contains tickets for multiple users, pass
KRB5CCNAME environment variable to have all commands use the same cache automatically.-UserName to filter which tickets are used.-Kdc
-Kdc
Address of the Key Distribution Center. Required when Titanis needs to contact a KDC to request tickets. For inter-realm referrals, Titanis resolves the next realm’s KDC via DNS automatically.
- Ticket files specified with
-Tgtor-Ticketare never modified. - A single file may contain both a TGT and service tickets; you can specify the same file for both
-Tgtand-Ticket. - Titanis skips tickets that are outside their validity period.
- If you specify a ticket file without a user name or realm, Titanis uses the first usable ticket it finds.
Certificate-based authentication (PKINIT)
Use a certificate to perform Kerberos PKINIT pre-authentication. Titanis accepts.pfx and .pem formats.
- .pfx (certificate + key)
- .pem (certificate + key)
- .pem (certificate) + separate .key
-UserKeyPassword is only required when the certificate file is encrypted.Other parameters
| Parameter | Description |
|---|---|
-Workstation <name> | Name reported as your workstation during authentication. Windows evaluates logon restrictions against this name and includes it in event log records. |
-NtlmVersion <m.n.b.r> | Version number to send in NTLM messages. |
-UserDomain <domain> | Domain to use when -UserName does not include one. |
Service for User (S4U)
Titanis integrates S4U2self and S4U2proxy, letting a service account obtain a service ticket for — and impersonate — a user account without requiring that user’s credentials.S4U parameters
| Parameter | Description | Notes |
|---|---|---|
-S4UserName <user> | Name of the user to impersonate | If no domain is included, the service account’s domain is assumed. |
-S4UserCert <cert file> | X.509 certificate identifying the user to impersonate | |
-S4ProxyService <service> | Service account to proxy through | May be <class>/<host> or just the account name. Presence of this parameter triggers S4U2proxy. |
Specify either
-S4UserName or -S4UserCert (or both — they must agree). The credentials you provide with -UserName, -Password, etc. are for the service account, not the user to impersonate.S4U2self sequence
Request TGT for the service account
Titanis requests a TGT for
-UserName using the credential you specified (-Password, -NtlmHash, or -AesKey).Request a service ticket for the command
The TGT is used to request a service ticket to the service the command requires.
S4U2proxy sequence
Request TGT for the service account
Titanis requests a TGT for
-UserName using the specified credential.Request a service ticket to the proxy service
The TGT is used to request a service ticket to the service specified by
-S4ProxyService.Obtain an S4U2self ticket to the proxy service
S4U2self is used to request a ticket for the user specified by
-S4User* to -S4ProxyService.At each step, Titanis checks the ticket files in
-Tgt, -Ticket, and -TicketCache first. If the desired ticket is already present, it is used and the KDC is not contacted for that step.S4U2proxy example
You have credentials for service accountallentown@LUMON and want to access a file share as user milchick:
- Requests a TGT for
allentown(or retrieves one from the cache). - Uses S4U2self to request a ticket for
milchicktohost/allentown. - Uses S4U2proxy to request a ticket for
milchicktocifs/LUMON-FS1.