Artifacts Generated: WindowsAPIInvoke
Summary
Lists all Kerberos tickets in the current logon session using LSA APIs. When executed from an elevated context, can enumerate tickets from all logon sessions or target a specific session by LUID. Provides filtering options for system tickets.- Needs Admin: False (elevated context enables cross-session enumeration)
- Version: 2
- Author: @drago-qcc
Arguments
- luid (String, Optional) - Target LUID to filter tickets (requires elevation)
- getSystemTickets (Boolean, Optional) - Include system context tickets (default: true)
Usage
Detailed Summary
Agent Execution Flow
1. Parameter Processing and Validation
- Requires JSON parameter format only
- LUID parameter is optional for targeting specific sessions
- getSystemTickets parameter controls system ticket filtering
2. Display Parameter Configuration
- Shows getSystemTickets setting in display parameters
- Includes LUID in display when specified
- Provides clear operation summary
3. Ticket Enumeration Process (C#)
- Enumerates all logon sessions on the system
- Filters by target LUID when specified
- Applies system ticket filtering based on session ID
- Aggregates tickets from all matching sessions
4. LSA Connection and Session Enumeration
- Uses
LsaEnumerateLogonSessionsto get all session LUIDs - Iterates through session array with proper pointer arithmetic
- Handles duplicate LUID detection and filtering
- Properly frees LSA memory resources
5. Session Data Retrieval
- Retrieves detailed session information for each LUID
- Extracts username, domain, session ID, and other metadata
- Converts Windows structures to managed objects
- Handles null pointer checks for optional fields
6. Ticket Cache Querying
- Queries ticket cache for specific logon session
- Clears LUID for non-elevated contexts to use current session
- Processes ticket cache response structure
- Extracts detailed ticket information including timing and encryption
7. System Ticket Filtering Logic
- Retrieves session data to check session ID
- Session ID 0 indicates system/service context
- Skips system tickets when getSystemTickets is false
- Allows filtering out service account tickets
Filtering and LUID Handling
Target LUID Filtering
- Compares session LUID with target LUID parameter
- Skips sessions that don’t match target when specified
- Allows precise targeting of specific logon sessions
Integrity Level Considerations
- Uses null LUID for non-elevated contexts
- Limits enumeration to current session when not elevated
- Prevents access to other users’ sessions without elevation
Browser Script Integration
UI Features
- Provides interactive table display for ticket information
- Enables sorting and filtering of ticket data
- Shows detailed ticket metadata in structured format
Parameter Configuration
Default Values
- getSystemTickets defaults to true (includes system tickets)
- LUID defaults to empty string (all accessible sessions)
- Optional parameters for flexible enumeration
Integration with TicketManager
Interface Methods
- Provides clean interface to enumeration functionality
- Handles parameter passing to helper methods
- Returns list of KerberosTicket objects
Error Handling
Connection Initialization Errors
- Validates LSA connection establishment
- Checks authentication package lookup success
- Ensures logon sessions were enumerated
- Returns empty list on initialization failures
Resource Cleanup
- Ensures LSA connection cleanup
- Generates artifacts for cleanup operations
- Prevents resource leaks on errors
APIs Used
MITRE ATT&CK Mapping
- T1550 - Use Alternate Authentication Material
Security Considerations
- Session Enumeration: Enumerates all logon sessions on system when elevated
- Ticket Exposure: Reveals Kerberos ticket metadata for accessible sessions
- Cross-Session Access: Can view other users’ tickets when elevated
- System Ticket Access: Can enumerate service account tickets
- LSA Interaction: Direct interaction with Local Security Authority
Limitations
- JSON Format Only: Requires JSON parameter format
- Elevation for Cross-Session: Multi-session enumeration requires elevated context
- LSA Dependencies: Requires functional LSA subsystem
- Session Access: Limited to accessible logon sessions
- Metadata Only: Shows ticket information but not encoded ticket data
- System Filtering: System ticket filtering based on session ID only
Error Conditions
- Invalid JSON: Malformed JSON parameters
- LSA Connection Failed: Cannot connect to Local Security Authority
- Session Enumeration Failed: Cannot enumerate logon sessions
- Package Lookup Failed: Kerberos authentication package not found
- Ticket Query Failed: Cannot query ticket cache for session
- Access Denied: Insufficient privileges for target sessions
- Invalid LUID: Specified LUID does not exist or is inaccessible
Best Practices
- Parameter Awareness: Understand filtering implications of getSystemTickets setting
- Session Targeting: Use LUID parameter for focused enumeration when elevated
- Error Monitoring: Check for enumeration failures and access issues
- Resource Management: Monitor system impact of full session enumeration
- Context Understanding: Be aware of elevation requirements for cross-session access