Neptune
Run a query on SIEM to identify if the any user has added other affected user in the same or the other critical groups in past 48 hours. Note:- above step applies even when the source user is the authorised or not authorised.
SPL:- (Splunk)''
index=your_index sourcetype=your_sourcetype EventCode=4728 OR EventCode=4732 OR EventCode=4756 affected_user!=affected users from the alert log group="identified group name from the alerts"
| eval action=case(EventCode==4728, "Added to Global Security Group", EventCode==4732, "Added to Local Security Group", EventCode==4756, "Added to Universal Security Group")
| eval timestamp=strftime(_time, "%Y-%m-%d %H:%M:%S")
| where _time>=relative_time(now(), "-48h"s)
| table _time, source_user, affected_user, group_name, action
| rename source_user as "Source User", affected_user as "Affected User", group_name as "Group Name", action as "Action", _time as "Timestamp"
| stats values("Timestamp") as "Timestamps", values("Action") as "Actions", dc("Group Name") as "Distinct Groups", values("Group Name") as "Groups" by "Source User", "Affected User"
| search "Distinct Groups">1
KQL(Sentinel):-
your_index
| where sourcetype == "your_sourcetype"
and (EventCode == 4728 or EventCode == 4732 or EventCode == 4756)
and affected_user != "affected users from the alert log"
and group="identified group name from the alerts"
| extend action = case(
EventCode == 4728, "Added to Global Security Group",
EventCode == 4732, "Added to Local Security Group",
EventCode == 4756, "Added to Universal Security Group",
""
)
| extend timestamp = format_datetime(_time, "yyyy-MM-dd HH:mm:ss")
| where _time >= ago(48h)
| project Timestamp = timestamp, "Source User" = source_user, "Affected User" = affected_user, "Group Name" = group_name, Action = action
| summarize
Timestamps = make_list(Timestamp),
Actions = make_list(Action),
"Distinct Groups" = dcount("Group Name"),
Groups = make_list("Group Name")
by "Source User", "Affected User"
| where "Distinct Groups" > 1
5.1 :- if you don't find any suspicious activity, then as a precausunary messure it is safe to reset the all affected users and Source users password (follow your company policy to reset affected user password) due to 4.2 being true.
Run a query on SIEM to identify if the any user has added other affected user in the same or the other critical groups in past 48 hours. Note:- above step applies even when the source user is the authorised or not authorised.
SPL:- (Splunk)''
index=your_index sourcetype=your_sourcetype EventCode=4728 OR EventCode=4732 OR EventCode=4756 affected_user!=affected users from the alert log group="identified group name from the alerts"
| eval action=case(EventCode==4728, "Added to Global Security Group", EventCode==4732, "Added to Local Security Group", EventCode==4756, "Added to Universal Security Group")
| eval timestamp=strftime(_time, "%Y-%m-%d %H:%M:%S")
| where _time>=relative_time(now(), "-48h"s)
| table _time, source_user, affected_user, group_name, action
| rename source_user as "Source User", affected_user as "Affected User", group_name as "Group Name", action as "Action", _time as "Timestamp"
| stats values("Timestamp") as "Timestamps", values("Action") as "Actions", dc("Group Name") as "Distinct Groups", values("Group Name") as "Groups" by "Source User", "Affected User"
| search "Distinct Groups">1
KQL(Sentinel):-
your_index
| where sourcetype == "your_sourcetype"
and (EventCode == 4728 or EventCode == 4732 or EventCode == 4756)
and affected_user != "affected users from the alert log"
and group="identified group name from the alerts"
| extend action = case(
EventCode == 4728, "Added to Global Security Group",
EventCode == 4732, "Added to Local Security Group",
EventCode == 4756, "Added to Universal Security Group",
""
)
| extend timestamp = format_datetime(_time, "yyyy-MM-dd HH:mm:ss")
| where _time >= ago(48h)
| project Timestamp = timestamp, "Source User" = source_user, "Affected User" = affected_user, "Group Name" = group_name, Action = action
| summarize
Timestamps = make_list(Timestamp),
Actions = make_list(Action),
"Distinct Groups" = dcount("Group Name"),
Groups = make_list("Group Name")
by "Source User", "Affected User"
| where "Distinct Groups" > 1
Hi hello