Eric Partington mentioned on his recent post Log - Sysmon 6 Windows Event Collection that a lot is being said about the use of Sysmon with logging solutions.
As Incident Responders or even as simple malicious activity hunters one of the key sources of data we rely on daily is the ability to track all command execution and endpoint activity. Here at RSA we use NWE’s Behavioral Tracking to give the level of visibility that is comparable to what Sysmon is doing. Due to the importance of this type of visibility and the buzz that Sysmon is generating in having this data on your SIEM/Log solution, I felt that it is important to provide some guidance on how you can accomplish the same thing using NWE.
If you already have NWE deployed to your endpoints there is no need to configure or manage another solution. The question that needs to be answered is how to retrieve this data from NWE to feed your SIEM/Log solution. This is indeed possible, and with a little help from colleagues and peers (I can name you if you want) I started to play with an SQL query to retrieve such data from the NWE database. The following query is suitable to import NWE data into a SIEM/Log Management solution:
SELECT * FROM (SELECT
SE.PK_WinTrackingEvents,
SE.EventUTCTIme,
MA.MacAddress as src_mac,
MA.LocalIp as src_ip,
MA.MachineName,
LOWER(PA.Path + FN.FileName) AS Source,
MO.HashSHA256,
LA.LaunchArguments AS SLA,
CASE
WHEN SE.BehaviorFileOpenPhysicalDrive = 1 THEN 'OpenPhysicalDrive'
WHEN SE.BehaviorFileReadDocument = 1 THEN 'ReadDocument'
WHEN SE.BehaviorFileWriteExecutable = 1 THEN 'WriteExecutable'
WHEN SE.BehaviorFileRenameToExecutable = 1 THEN 'RenameExecutable'
WHEN SE.BehaviorProcessCreateProcess = 1 THEN 'CreateProcess'
WHEN SE.BehaviorProcessCreateRemoteThread = 1 THEN 'CreateRemoteThread'
WHEN SE.BehaviorProcessOpenOSProcess = 1 THEN 'OpenOSProcess'
WHEN SE.BehaviorProcessOpenProcess = 1 THEN 'OpenProcess'
WHEN SE.BehaviorFileSelfDeleteExecutable = 1 THEN 'SelfDelete'
WHEN SE.BehaviorFileDeleteExecutable = 1 THEN 'DeleteExecutable'
WHEN SE.BehaviorRegistryModifyBadCertificateWarningSetting = 1 THEN 'ModifyBadCertificateWarningSetting'
WHEN SE.BehaviorRegistryModifyFirewallPolicy = 1 THEN 'ModifyFirewallPolicy'
WHEN SE.BehaviorRegistryModifyInternetZoneSettings = 1 THEN 'ModifyInternetZoneSettings'
WHEN SE.BehaviorRegistryModifyIntranetZoneBrowsingNotificationSetting = 1 THEN 'ModifyIntranetZoneBrowsingNotificationSetting'
WHEN SE.BehaviorRegistryModifyLUASetting = 1 THEN 'ModifyLUASetting'
WHEN SE.BehaviorRegistryModifyRegistryEditorSetting = 1 THEN 'ModifyRegistryEditorSetting'
WHEN SE.BehaviorRegistryModifyRunKey = 1 THEN 'ModifyRunKey '
WHEN SE.BehaviorRegistryModifySecurityCenterConfiguration = 1 THEN 'ModifySecurityCenterConfiguration'
WHEN SE.BehaviorRegistryModifyServicesImagePath = 1 THEN 'ModifyServicesImagePath'
WHEN SE.BehaviorRegistryModifyTaskManagerSetting = 1 THEN 'ModifyTaskManagerSetting'
WHEN SE.BehaviorRegistryModifyWindowsSystemPolicy = 1 THEN 'ModifyWindowsSystemPolicy'
WHEN SE.BehaviorRegistryModifyZoneCrossingWarningSetting = 1 THEN 'ModifyZoneCrossingWarningSetting'
END AS Action,
LOWER(SE.Path_Target + SE.FileName_Target) AS Destination,
SE.LaunchArguments_Target AS TLA,
se.HashSHA256_Target
FROM
dbo.WinTrackingEvents_P1 AS SE WITH(NOLOCK)
INNER JOIN dbo.Machines AS MA WITH(NOLOCK) ON MA.PK_Machines = SE.FK_Machines
INNER JOIN dbo.MachineModulePaths AS MP WITH(NOLOCK) ON MP.PK_MachineModulePaths = SE.FK_MachineModulePaths
INNER JOIN dbo.Modules AS MO WITH(NOLOCK) ON MO.PK_Modules = MP.FK_Modules
INNER JOIN dbo.FileNames AS FN WITH(NOLOCK) ON FN.PK_FileNames = MP.FK_FileNames
INNER JOIN dbo.Paths AS PA WITH(NOLOCK) ON PA.PK_Paths = MP.FK_Paths
INNER JOIN dbo.LaunchArguments AS LA WITH(NOLOCK) ON LA.PK_LaunchArguments = SE.FK_LaunchArguments__SourceCommandLine
UNION
SELECT
SE.PK_WinTrackingEvents,
SE.EventUTCTIme,
MA.MacAddress as src_mac,
MA.LocalIp as src_ip,
MA.MachineName,
LOWER(PA.Path + FN.FileName) AS Source,
MO.HashSHA256,
LA.LaunchArguments AS SLA,
CASE
WHEN SE.BehaviorFileOpenPhysicalDrive = 1 THEN 'OpenPhysicalDrive'
WHEN SE.BehaviorFileReadDocument = 1 THEN 'ReadDocument'
WHEN SE.BehaviorFileWriteExecutable = 1 THEN 'WriteExecutable'
WHEN SE.BehaviorFileRenameToExecutable = 1 THEN 'RenameExecutable'
WHEN SE.BehaviorProcessCreateProcess = 1 THEN 'CreateProcess'
WHEN SE.BehaviorProcessCreateRemoteThread = 1 THEN 'CreateRemoteThread'
WHEN SE.BehaviorProcessOpenOSProcess = 1 THEN 'OpenOSProcess'
WHEN SE.BehaviorProcessOpenProcess = 1 THEN 'OpenProcess'
WHEN SE.BehaviorFileSelfDeleteExecutable = 1 THEN 'SelfDelete'
WHEN SE.BehaviorFileDeleteExecutable = 1 THEN 'DeleteExecutable'
WHEN SE.BehaviorRegistryModifyBadCertificateWarningSetting = 1 THEN 'ModifyBadCertificateWarningSetting'
WHEN SE.BehaviorRegistryModifyFirewallPolicy = 1 THEN 'ModifyFirewallPolicy'
WHEN SE.BehaviorRegistryModifyInternetZoneSettings = 1 THEN 'ModifyInternetZoneSettings'
WHEN SE.BehaviorRegistryModifyIntranetZoneBrowsingNotificationSetting = 1 THEN 'ModifyIntranetZoneBrowsingNotificationSetting'
WHEN SE.BehaviorRegistryModifyLUASetting = 1 THEN 'ModifyLUASetting'
WHEN SE.BehaviorRegistryModifyRegistryEditorSetting = 1 THEN 'ModifyRegistryEditorSetting'
WHEN SE.BehaviorRegistryModifyRunKey = 1 THEN 'ModifyRunKey '
WHEN SE.BehaviorRegistryModifySecurityCenterConfiguration = 1 THEN 'ModifySecurityCenterConfiguration'
WHEN SE.BehaviorRegistryModifyServicesImagePath = 1 THEN 'ModifyServicesImagePath'
WHEN SE.BehaviorRegistryModifyTaskManagerSetting = 1 THEN 'ModifyTaskManagerSetting'
WHEN SE.BehaviorRegistryModifyWindowsSystemPolicy = 1 THEN 'ModifyWindowsSystemPolicy'
WHEN SE.BehaviorRegistryModifyZoneCrossingWarningSetting = 1 THEN 'ModifyZoneCrossingWarningSetting'
END AS Action,
LOWER(SE.Path_Target + SE.FileName_Target) AS Destination,
SE.LaunchArguments_Target AS TLA,
se.HashSHA256_Target
FROM
dbo.WinTrackingEvents_P0 AS SE WITH(NOLOCK)
INNER JOIN dbo.Machines AS MA WITH(NOLOCK) ON MA.PK_Machines = SE.FK_Machines
INNER JOIN dbo.MachineModulePaths AS MP WITH(NOLOCK) ON MP.PK_MachineModulePaths = SE.FK_MachineModulePaths
INNER JOIN dbo.Modules AS MO WITH(NOLOCK) ON MO.PK_Modules = MP.FK_Modules
INNER JOIN dbo.FileNames AS FN WITH(NOLOCK) ON FN.PK_FileNames = MP.FK_FileNames
INNER JOIN dbo.Paths AS PA WITH(NOLOCK) ON PA.PK_Paths = MP.FK_Paths
INNER JOIN dbo.LaunchArguments AS LA WITH(NOLOCK) ON LA.PK_LaunchArguments = SE.FK_LaunchArguments__SourceCommandLine) t
WHERE PK_WinTrackingEvents > ? ORDER By PK_WinTrackingEvents ASC
In this query the question mark “?” at the end of the last line needs to be automatically replaced by the previous highest entry already collected with the previous query execution. Each solution will have its own way of tracking and processing this query. In some solutions you may only need the portion between the main ()s group as they will build the rest automatically. Other solutions will probably require more work/tweaking.
For Netwitness for Logs, Chris Thomas created a post here with all the details needed to accomplish this integration. I'm sure the same can be done with Splunk, ArcSight, Elastic, <insert your favorite solution here> so please feel free to post your experience to the comments section of this post.
Happy Hunting,
Rui
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.