- Notifications
You must be signed in to change notification settings - Fork 513
Description
Crowdstrike Integration - TRaDE Feedback - 2nd Round
CrowdStrike - Windows Mappings Review
This issue contains further improvements to the CrowdStrike integration mappings.
Integration Version: 2.0.0 / Stack Version: 8.19.1
Not solved yet:
host.id: Should be populated using theaidfield that is not currently parsed.- Neither
crowdstrike.aidorhost.idare being currently populated, but aid is available in the original event.
- Neither
- The following is valid for all events with the
event.actionending with *Written, except forPeFileWritten,NewExecutableWritten,NewScriptWrittenevent.categoryis not set for events ending with Writtenevent.actionshould be set to creation
New adjustments:
For all events:
process.entity_idandprocess.parent.entity_idare not populated in network, file, configuration, registry, driver events. UseContextProcessId&ParentProcessIdto populate these as done in process events.process.pidcan be also populated usingContextProcessId
Registry events for when (event.category is registry):
event.categoryis missing for some events that we didn’t have in the previous dataset. We should include theseevent.actionvalues:RegCrowdstrikeKeyUpdateRegCrowdstrikeValueUpdate
registry.keycontains extra backslash (\) in the start:\SYSTEM\ControlSet001\Services\BcastDVRUserService_cbd3cshould be
SYSTEM\ControlSet001\Services\BcastDVRUserService_cbd3c
registry.pathis not populated whenRegValueNameis empty- Some events do not populate
RegValueName. We can check if it is the case and use onlyRegObjectNameif it is the only one available. Sample doc
- Some events do not populate
crowdstrike.RegOperationType- On
RegOperationType 3event.typeis set to both change and creation, should be creation only - On
RegOperationType 4event.typeis set change, but it is related to deletion, we should set it to deletion, and don’t populate theevent.typewith change by default.
- On
File events for when (event.category is file):
crowdstrike.OriginalFilenameis being mapped toprocess.pe.original_file_name:- We should map it to
file.pe.original_file_nameinstead
- We should map it to
user.idis not populated- We can use
FileOperatorSidto populate it when present
- We can use
- Set
event.typeto creation onFileDetectInfoevents. - For
NewExecutableRenamedandFileRenameInfoevent.actionvalues:- Use
crowdstrike.TargetFileNameto populatefile.path- We can extract the file name from to populate
file.name
- We can extract the file name from to populate
- Use
crowdstrike.SourceFileNameto populatefile.Ext.original.path- We can extract the file name from to populate
file.Ext.original.name
- We can extract the file name from to populate
- Use
Library events for when (event.category is library):
crowdstrike.OriginalFilenameis being mapped toprocess.pe.original_file_name:- We should map it to
dll.pe.original_file_nameinstead
- We should map it to
dll.code_signature.trustedis being populated withtrueeven for unsigned DLLs- The documentation says that
ImageSignatureLevel 2isENTERPRISE (0x2), but when I tested with an unsigned DLL it was populated with 2. However, we can combine it withImageSignatureTypeso it becomes more reliable. - Here is a more specific logic so we can refine this:
- If
ImageSignatureType == 0 (NONE (0x0)):- Set
dll.code_signature.existstofalse - Set
dll.code_signature.trustedtofalse
- Set
- If
ImageSignatureType >= 1andImageSignatureLevelis0or1:- Set
dll.code_signature.existstotrue - Set
dll.code_signature.trustedtofalse
- Set
- If
ImageSignatureType >= 1andImageSignatureLevel >= 2:- Set
dll.code_signature.existstotrue - Set
dll.code_signature.trustedtotrue
- Set
- If
- The documentation says that
- Drop
process.pid, I mistakenly suggested that we could useContextProcessIdto populate it, but considering other events, this doesn’t make sense
Driver events for when (event.category is driver):
crowdstrike.OriginalFilenameis being mapped toprocess.pe.original_file_name:- We should map it to
dll.pe.original_file_nameinstead
- We should map it to
CertificatePublishercan used to populatedll.code_signature.subject_nameImageFileNamecan used to populatedll.pathdll.namecan be extracted from theImageFileNamepath
ContextProcessIdcan used to populateprocess.entity_idCertificatePublishercan used to populatedll.code_signature.subject_nameevent.actioncan be set toloadSHA256HashDatacan used to populatedll.hash.sha256MD5HashDatacan used to populatedll.hash.md5CertificatePublishercan used to populatedll.code_signature.subject_nameServiceDisplayNamecan used to populateservice.name
Additional adjustments:
Misclassification of events as malware
AssociateIndicatorEvents are classified asevent.category == malware, may not be accurate as per events doc:This event is generated when the sensor generates an indicator. An indicator is like a detection event (AssociateTreeIdWithRoot) except that it is not necessarily malicious, either because it is just an indicator (e.g. when a process opens the Recycle Bin) or because CrowdStrike is not yet confident enough in the indicator to trigger it as a detection.
- Other misleading classification as malware for activity that are not malicious per nature:
SensitiveWmiQueryEvents haveevent.category == malware- I suggest using
event.categoryapior keepingprocessonly, notmalware
- I suggest using
SuspiciousCreateSymbolicLinkEvents haveevent.category == malware- Drop the
malwarevalue, keep thefile
- Drop the
DetectionExcludedEvents haveevent.category == malware- As per event documentation: This event indicates that a detection has been excluded by the customer.
- I suggest using
event.categoryconfiguration, notmalware
RegistryOperationDetectInfoEvents haveevent.category == malware- As per event documentation: An event that describes a registry operation blocked using a callback filter.
- Drop the
malwarevalue, keep theregistry
Overuse of event.kind: alert
- Using
event.kind == alerttoo broadly promotes many irrelevant events to security alertsErrorEvent- Definitely not something to promote as an alert: Event indicating a sensor error.
- Set
event.kindtoevent
RansomwareOpenFile- Is informational, like a counter, for their ransomware protections.
-
From a crowdstrike person: “It operates as a counter to help Falcon track which processes are opening a high number of files at high velocity. The presence of this event is not indicative of ransomware. It just helps the sensor keep track of what's being opened, how much is being opened, and how fast it's being opened. I hope that helps.” reference
-
- Set
event.kindtoevent
- Is informational, like a counter, for their ransomware protections.
RansomwareCreateFile- As they have the same description on the docs, it is safe to assume that they have the same purpose
- Set
event.kindtoevent
ModifyServiceBinary- Too noisy to be automatically promoted
- Set
event.kindtoevent
DetectionExcluded- I would not promote this as an alert, it is more like an audit log.
SensitiveWmiQuery- Too noisy to be automatically promoted
- Set
event.kindtoevent
FileSystemOperationDetectInfo- Informational event for a file system operation detection.
- Set
event.kindtoevent
Missing event coverage (examples)
Based on the pipeline, we support 238 events, we are missing a lot of them which cause the events to not have basic stuff as event.category, event.type, event.kind, etc. Examples observed (not exhaustive):
- File Events
CrxFileWrittenJpegFileWrittenGzipFileWrittenPngFileWrittenEseFileWrittenWebScriptFileWrittenLnkFileWrittenMotwWrittenMsiFileWrittenCabFileWrittenMountedVolumeFileWrittenWithEntropyHigh
- Library Events
ReflectiveDotnetModuleLoad
- Alerts
SuspiciousPrivilegedProcessHandleFalconProcessHandleOpDetectInfo
- Configuration Events
ServiceStoppedKernelServiceStartedInstalledBrowserExtensionSensorAntiTamperStateSensorSettingsUpdateServicesStatusInfo