Active Directory
One source, Active Directory (On-Prem), covers directory reads over LDAP and Windows event log collection over WinRM. The rights the service account needs for each operation are on the Active Directory account page; this page is about connecting and what happens once you do.
The source form
| Field | Example | Notes |
|---|---|---|
| Domain Controller | dc01.corp.example | The DNS name on the domain controller's certificate, in every mode. The appliance checks the certificate against this name, so an IP address here is refused. |
| Domain Controller IP address (optional) | 192.0.2.10 | Only when the appliance cannot look up the Domain Controller name in DNS. The appliance connects to this address and still checks the certificate against the Domain Controller name. Password mode only: in the Kerberos modes the name must resolve in DNS, and a source with this field set is refused. |
| Domain (FQDN) | corp.example | Derived from the username if it is a UPN and the field is blank. Upper-cased, it is the Kerberos realm. |
| Security and Port | LDAPS, 636 | LDAPS is the default. On 389 the appliance starts TLS (StartTLS) before it binds, and refuses a domain controller that does not offer it; password resets need LDAPS. |
| CA certificate (PEM, optional) | -----BEGIN CERTIFICATE----- | The certificate of the CA that issued the domain controller's certificate, and its root CA. Needed when that CA is your domain's own (AD CS), because the appliance does not trust it otherwise. On the CA server, certutil -ca.cert ca.cer writes it; convert it with certutil -encode ca.cer ca.pem and paste the PEM text. |
| Base DN | DC=corp,DC=example | Derived from the domain when blank. |
| Additional Servers | fs01.corp.example, srv02.corp.example | Extra hosts to collect event logs from. By DNS name in the Kerberos modes. |
| Authentication | Password / Kerberos with password / Kerberos with keytab | See below. |
| Username or principal, Password, Keytab | CORP\svc-cicada or svc-cicada@CORP.EXAMPLE | The keytab is uploaded as a file in keytab mode and no password is stored. |
The three authentication modes
- Password (default). The LDAP bind is NTLM when the username is written
DOMAIN\user, and a simple bind otherwise (user@domain, or a bare name which CICADA completes with the Domain field). WinRM uses NTLM. As in every mode, the domain controller's LDAP certificate is checked before the password is sent (see CA certificate above). Over HTTPS (5986) the WinRM certificate is checked too; see WinRM over HTTPS. - Kerberos with password. CICADA obtains a ticket for the principal and uses it for LDAP (SASL/GSSAPI) and WinRM. No NTLM anywhere. Enter the account as
svc-cicada@CORP.EXAMPLEor a bare name plus the Domain field.DOMAIN\useris refused in this mode with the message In Kerberos mode enter the account as user@REALM or a bare name; DOMAIN\user is an NTLM form. The source is still saved, with status Error and that message. - Kerberos with keytab. As above, but the ticket comes from a keytab you upload, so no password is stored on the appliance.
Rules in the Kerberos modes
- The Domain Controller field must be the DC's DNS name, not an IP address. The service ticket is issued for
ldap/<name>, so an IP is refused when the source signs in: the source is saved with status Error and the message In Kerberos mode the Domain Controller must be its DNS name ... not an IP address. Additional servers given as IP addresses are accepted silently (the only warning is a line in the appliance's own log), but WinRM to them will fail in the Kerberos modes; enter names. - The appliance's DNS must resolve those names. Set DNS in the console network wizard.
- The appliance clock must be within five minutes of the domain. The error you get otherwise is The appliance clock differs from the domain by more than five minutes; check NTP on the appliance and on the domain controller.
- The account must allow AES. Tick This account supports Kerberos AES 128/256 bit encryption. A keytab that holds only RC4 keys is refused.
- Port 88 to the domain controllers must be open. The appliance's Kerberos library makes that connection, so allow both TCP and UDP, as Network Requirements lists.
Making the keytab
On a domain controller, as a domain admin:
ktpass -princ svc-cicada@CORP.EXAMPLE -mapuser CORP\svc-cicada -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass * -out cicada.keytabktpass sets a new password on the account. If the password changes later the keytab stops working until it is issued again and uploaded again. Before storing the file CICADA checks that it is a version 2 keytab, that it holds an AES key, and that the principal you typed is in it; the error names the principals it did find. The file is capped at 64 KiB; a service-account keytab is a few hundred bytes.
Ports
| Port | To | Used for |
|---|---|---|
| 636 TCP (or 389) | Domain controllers | LDAPS (or LDAP): directory reads, account disable and enable, password reset (LDAPS only) |
| 88 TCP and UDP | Domain controllers | Kerberos, in the two Kerberos modes |
| 5985 TCP, then 5986 TCP | Every host in Domain Controller and Additional Servers | WinRM. CICADA tries HTTP on 5985 first and HTTPS on 5986 second, and caches whichever answered. With WinRM over HTTPS only it uses 5986 alone. |
| 53 | Your DNS servers | Resolving the names above |
The full list is on Network Requirements.
WinRM on domain controllers and member servers
On each host CICADA will collect from, in an elevated PowerShell:
# Turn on the WinRM service and the HTTP listener on 5985
Enable-PSRemoting -Force
# Let the service account connect over WinRM
Add-LocalGroupMember -Group "Remote Management Users" -Member "CORP\svc-cicada"
# Let it read the Security log (and the other channels)
Add-LocalGroupMember -Group "Event Log Readers" -Member "CORP\svc-cicada"On a domain controller the two groups are domain groups, so add the account once in Active Directory Users and Computers instead. Member servers can get the same two group memberships through Group Policy (Restricted Groups).
- CICADA runs
wevtutil,tzutil,gpupdate,repadminand short PowerShell scripts through WinRM. It does not install anything on the host. - Remote Management Users and Event Log Readers are enough for log collection.
gpupdate /forceneeds local administrator on the target; see the rights table. - A host that does not answer on 5985 or 5986 is reported as WinRM unreachable and its event logs are not collected; for that host, whether a domain controller or a member server, CICADA falls back to the LDAP queries below, which always run against the domain controller it is bound to.
- The Sysmon channel is not collected: on some domain controllers its absence breaks the WinRM session for the channels after it.
WinRM over HTTPS
Over HTTPS (port 5986) CICADA checks the host's certificate before it sends any credential or command. The certificate must be issued by the CA in the source's CA certificate field (or, when that is blank, a CA the appliance already trusts), be in date, and carry the host's name as you entered it in its Subject Alternative Name. A host entered as an IP address needs that address in the Subject Alternative Name. A refused certificate gives The WinRM certificate presented by …:5986 was not accepted (…). No credentials or commands were sent. CICADA does not then retry over HTTP.
Over HTTP (5985) the traffic is encrypted by NTLM or Kerberos, not TLS. NTLM, used in Password mode, does not prove the host is genuine. To never use HTTP, tick WinRM over HTTPS only on the source; every host CICADA runs commands on then needs an HTTPS listener with such a certificate:
# On the host: an HTTPS listener with the computer certificate AD CS issued
$cert = Get-ChildItem Cert:\LocalMachine\My |
Where-Object { $_.Subject -eq "CN=$env:COMPUTERNAME.$env:USERDNSDOMAIN" } |
Select-Object -First 1
New-Item -Path WSMan:\localhost\Listener -Transport HTTPS -Address * `
-CertificateThumbPrint $cert.Thumbprint -Force
New-NetFirewallRule -DisplayName "WinRM HTTPS" -Direction Inbound -Protocol TCP -LocalPort 5986 -Action AllowWhat CICADA collects over WinRM
For each host, for each channel, one wevtutil qe query with an absolute time range in UTC (TimeCreated[@SystemTime >= ... and @SystemTime <= ...]), newest first, in text format, capped per channel. A channel that does not exist on a host is skipped, not failed. Before the first query CICADA asks the configured domain controller, once per run, for its time zone: first the TimeZoneKeyName registry value through PowerShell, then tzutil /g, then a PowerShell UTC offset as a last resort. That zone is applied to every host in the run, so the local times wevtutil prints can be turned back into UTC; if the zone cannot be read the run carries a warning.
| Channel | Cap | Why |
|---|---|---|
| Security (three queries: authentication, changes, object access) | 2000 + 2000 + 1000 | Logons 4624/4625, lockouts 4740, Kerberos 4768 to 4771, NTLM 4776, RDP 4778/4779, audit policy 4719; process creation 4688, services 4697/4698, account changes 4720 to 4756; object access 4656/4662/4663, DCSync, shares 5140/5145, USB 6416 |
| System | 3000 | Services 7045, driver loads, shutdown and boot |
| Application | 1000 | Crashes, MSI installs |
| Microsoft-Windows-PowerShell/Operational | 2000 | Script block 4104 and module 4103 logging |
| Microsoft-Windows-Windows Defender/Operational | 1000 | AV detections and protection state |
| Windows Firewall With Advanced Security/Firewall | 1000 | Rule changes |
| TerminalServices-RemoteConnectionManager/Operational | 1000 | RDP connections |
| TaskScheduler/Operational | 1000 | Scheduled task lifecycle |
| WMI-Activity/Operational | 1000 | WMI persistence and execution |
| Directory Service | 2000 | Replication and DCShadow 4928/4929, LDAP operations (domain controllers) |
| DNS Server | 1000 | Queries: tunnelling, beaconing, reconnaissance (domain controllers running DNS) |
| CertificationAuthority/Operational | 1000 | Certificate requests 4886/4887, template changes 4899/4900, CA backup 4876 (AD CS hosts) |
| AD FS/Admin | 1000 | Token signing 1200/1202, configuration changes 307/510, certificate export 70/1007 (AD FS hosts) |
| ADSync | 1000 | Password hash sync 611/650/651/656/657 (Entra Connect hosts) |
| AADConnect | 1000 | Entra Connect sync operations and errors |
| CodeIntegrity/Operational | 500 | Driver signing failures 3033/3063 (LSASS protection bypass) |
| CAPI2/Operational | 500 | Certificate private key export, event 70 |
| BitLocker/BitLocker Management | 500 | BitLocker protection state changes |
| ForwardedEvents | 2000 | Events forwarded from other hosts, where Windows Event Forwarding is configured |
| DFS Replication | 1000 | DFS-R and SYSVOL replication |
That is the full list of twenty channels. A host other than the configured domain controller whose name does not resolve is skipped with a warning rather than costing one timeout per channel. Warnings from a run (a skipped host, a time zone that could not be read, timestamps that could not be resolved across a daylight-saving change) are shown on the Sources page against the source.
What CICADA collects over LDAP
- Users, groups and computers, with their membership, for target resolution and for blast-radius and access-rights analysis.
- Other domain controllers, discovered after the first bind, so a collection can cover them.
- When a host is unreachable over WinRM, a fallback query against the bound domain controller lists objects whose
whenChangedfalls in the collection window: modified users (includinguserAccountControl,lockoutTime,pwdLastSet,adminCount), modified groups and their members, modified computers, and modified Group Policy objects. This gives account and group changes even without event logs. It is the only place GPOs are read.
What Test Connection tells you
The result is one line per protocol, for example:
LDAP: connected via Kerberos as svc-cicada@CORP.EXAMPLE (dc01.corp.example:636)
WinRM: connected (dc01.corp.example)In password mode the first line reads connected via NTLM or connected via simple bind. If only one of the two works the source is still marked connected and the message ends with collection will use LDAP or collection will use WinRM. A WinRM line of timed out after 60s is the network or the listener. A WinRM line of unreachable is any failure to open a session on 5985 or 5986, a rejected credential included; the underlying error follows the dash. A Kerberos failure is explained in plain words (unreadable keytab file, principal not found in the domain, wrong password or stale keytab, clock skew, KDC not found, no service principal for that name, AES not enabled, password expired) followed by the raw Kerberos text.
Response actions and the rights each needs
| Action | How | Right | Approval |
|---|---|---|---|
| Disable AD Account, Enable AD Account | LDAP modify of userAccountControl on the user found by sAMAccountName, UPN, mail or DN. There is no separate unlock: the connector does not write lockoutTime. | Write userAccountControl on the users in scope | Needs approval |
| Reset AD Password | LDAPS modify of unicodePwd to a random temporary password and pwdLastSet=0 (change at next logon). Refused over plain LDAP. The temporary password is fetched once from Download credentials on the completed action. | "Reset password" extended right and write pwdLastSet | Needs approval |
| Bulk disable, bulk enable, bulk reset | Same as above over a list of accounts; bulk disable and enable can also set pwdLastSet=0 | Same | Needs approval |
| Collect Event Logs | wevtutil qe per channel over WinRM, last 24 hours by default, raw text kept for download | Remote Management Users and Event Log Readers | Automatic (low impact) |
| Collect AD Replication Data | repadmin /showrepl, /replsummary, /showconn over WinRM on a domain controller | See the rights table; published as a broad right until confirmed | Automatic (low impact) |
| Browse File Server | Lists shares and directories with SHA-1 hashes over WinRM | Remote Management Users plus share and NTFS read | Automatic (low impact) |
| Force Group Policy Update | gpupdate /force over WinRM | Local Administrators on the target | Needs approval |
Approving an action needs Approve or deny actions, and running it needs Execute actions on customer systems. IR lead and Admin have both by default.
The exact rights, and which of them have been confirmed in a lab, are on the Active Directory account page.