Skip to content

Commit 175706f

Browse files
committed
Merge branch 'master' into v-tsawant/ASIM-vimAuthenticationSshd
2 parents ecc093f + 08a3a14 commit 175706f

File tree

15 files changed

+358
-326
lines changed

15 files changed

+358
-326
lines changed

Detections/SigninLogs/AnomalousSingleFactorSignin.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,16 @@ tags:
2222
query: |
2323
let known_locations = (SigninLogs
2424
| where TimeGenerated between(ago(7d)..ago(1d))
25-
| where ResultType == 0
25+
| where ResultType != 0
2626
| extend LocationDetail = strcat(Location, "-", LocationDetails.state)
2727
| summarize by LocationDetail);
2828
let known_asn = (SigninLogs
2929
| where TimeGenerated between(ago(7d)..ago(1d))
30-
| where ResultType == 0
30+
| where ResultType != 0
3131
| summarize by AutonomousSystemNumber);
3232
SigninLogs
3333
| where TimeGenerated > ago(1d)
34-
| where ResultType == 0
34+
| where ResultType != 0
3535
| where isempty(DeviceDetail.deviceId)
3636
| where AuthenticationRequirement == "singleFactorAuthentication"
3737
| extend LocationParsed = parse_json(LocationDetails), DeviceParsed = parse_json(DeviceDetail)
@@ -60,7 +60,7 @@ entityMappings:
6060
columnName: AppId
6161
- identifier: Name
6262
columnName: AppDisplayName
63-
version: 1.0.4
63+
version: 1.0.5
6464
kind: Scheduled
6565
metadata:
6666
source:

Parsers/ASimNetworkSession/ARM/ASimNetworkSessionCiscoMerakiSyslog/ASimNetworkSessionCiscoMerakiSyslog.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

Parsers/ASimNetworkSession/ARM/vimNetworkSessionCiscoMerakiSyslog/vimNetworkSessionCiscoMerakiSyslog.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

Parsers/ASimNetworkSession/Parsers/ASimNetworkSessionCiscoMerakiSyslog.yaml

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Parser:
22
Title: Network Session ASIM parser for Cisco Meraki
3-
Version: '1.2.1'
4-
LastUpdated: Jul 19, 2024
3+
Version: '1.2.2'
4+
LastUpdated: Nov 23, 2025
55
Product:
66
Name: Cisco Meraki
77
Normalization:
@@ -157,14 +157,20 @@ ParserQuery: |
157157
| project-rename LogMessage = SyslogMessage
158158
);
159159
let PreFilteredData = allData
160-
| where not(disabled) and (LogMessage has_any("flows", "firewall", "ids-alerts") or LogMessage has_all("security_event", "ids-alerted") or (LogMessage has "events" and (LogMessage has_any ("Blocked DHCP server response", "association") or (LogMessage has "VRRP packet" and not(LogMessage has_any ("VRRP passive", "VRRP active"))) or (LogMessage has "disassociation" and not(LogMessage has_any ("auth_neg_failed", "dhcp"))))) or (LogMessage has "airmarshal_events" and LogMessage has_any("ssid_spoofing_detected", "rogue_ssid_detected")))
160+
| where not(disabled) and (
161+
LogMessage has_any("flows", "firewall", "ids-alerts", "cellular_firewall", "vpn_firewall", "ip_flow_start", "ip_flow_end")
162+
or LogMessage has_all("security_event", "ids-alerted")
163+
or LogMessage has_all("security_event", "ids_alerted")
164+
or (LogMessage has "events" and (LogMessage has_any ("Blocked DHCP server response", "association") or (LogMessage has "VRRP packet" and not(LogMessage has_any ("VRRP passive", "VRRP active"))) or (LogMessage has "disassociation" and not(LogMessage has_any ("auth_neg_failed", "dhcp")))))
165+
or (LogMessage has "airmarshal_events" and LogMessage has_any("ssid_spoofing_detected", "rogue_ssid_detected"))
166+
)
161167
| extend Parser = extract_all(@"(\d+.\d+)\s([\w\-\_]+)\s([\w\-\_]+)\s([\S\s]+)$", dynamic([1, 2, 3, 4]), LogMessage)[0]
162168
| extend
163169
LogType = tostring(Parser[2]),
164170
Substring = tostring(Parser[3]);
165171
let FlowsFirewallData = PreFilteredData
166-
| where LogType in ("flows", "firewall", "cellular_firewall", "vpn_firewall")
167-
| parse-kv Substring as(src: string, dst: string, mac: string, sport: string, dport: string, protocol: string, type: int) with (pair_delimiter=" ", kv_delimiter="=", quote="'")
172+
| where LogType in ("flows", "firewall", "cellular_firewall", "vpn_firewall", "ip_flow_start", "ip_flow_end")
173+
| parse-kv Substring as(src: string, dst: string, mac: string, sport: string, dport: string, protocol: string, type: int, translated_dst_ip: string, translated_port: string) with (pair_delimiter=" ", kv_delimiter="=", quote="'")
168174
| parse Substring with pattern1: string " src=" temp_restmessage: string
169175
| parse Substring with * "pattern: " pattern2: string " " temp_restmessage: string
170176
| extend NetworkIcmpCode_lookup = iff(protocol == 'icmp6', type, int(null))
@@ -182,7 +188,7 @@ ParserQuery: |
182188
let IDSAlertData = PreFilteredData
183189
| where LogType in ("ids-alerts", "security_event")
184190
| parse LogMessage with * "security_event " LogSubType: string " " * "message: " message: string
185-
| where LogType == "security_event" and LogSubType == "ids-alerted" or LogType == "ids-alerts"
191+
| where LogType == "security_event" and (LogSubType == "ids-alerted" or LogSubType == "ids_alerted") or LogType == "ids-alerts"
186192
| parse-kv Substring as(priority: string, timestamp: string, direction: string, protocol: string, src: string, dst: string, signature: string, dhost: string, shost: string) with (pair_delimiter=" ", kv_delimiter="=", quote="'")
187193
| extend EventResult = "Success"
188194
| extend
@@ -285,11 +291,11 @@ ParserQuery: |
285291
)
286292
| extend SrcPortNumber = iff(isempty(SrcPortNumber), toint(coalesce(sport, temp_srcport)), SrcPortNumber)
287293
| extend SrcPortNumber = toint(iff(isempty(SrcPortNumber) and SrcIpAddr has ".", split(temp_srcipport, ":")[1], SrcPortNumber))
288-
| extend temp_dstipport = coalesce(dst, dns_server)
294+
| extend temp_dstipport = coalesce(dst, dns_server, translated_dst_ip)
289295
| extend temp_dstipport = trim('"', temp_dstipport)
290296
| parse temp_dstipport with * "[" temp_dstip "]:" temp_dstport
291297
| extend DstIpAddr = iff(temp_dstipport has ".", split(temp_dstipport, ":")[0], coalesce(temp_dstip, temp_dstipport))
292-
| extend DstPortNumber = toint(coalesce(dport, temp_dstport))
298+
| extend DstPortNumber = toint(coalesce(dport, temp_dstport, translated_port))
293299
| extend DstPortNumber = toint(iff(isempty(DstPortNumber) and DstIpAddr has ".", split(temp_dstipport, ":")[1], DstPortNumber))
294300
| extend SrcIpAddr = iff(SrcIpAddr == SrcMacAddr, "", SrcIpAddr)
295301
| extend DstIpAddr = iff(DstIpAddr == DstMacAddr, "", DstIpAddr)
@@ -348,6 +354,8 @@ ParserQuery: |
348354
dns_server,
349355
sport,
350356
dport,
357+
translated_dst_ip,
358+
translated_port,
351359
*_lookup,
352360
type*,
353361
pattern*,
@@ -383,4 +391,5 @@ ParserQuery: |
383391
HostIP,
384392
ProcessName,CollectorHostName,NetworkProtocolNumber
385393
};
386-
parser(disabled=disabled)
394+
parser(disabled=disabled)
395+

Parsers/ASimNetworkSession/Parsers/vimNetworkSessionCiscoMerakiSyslog.yaml

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Parser:
22
Title: Network Session ASIM filtering parser for Cisco Meraki
3-
Version: '1.2.1'
4-
LastUpdated: Jul 19, 2024
3+
Version: '1.2.2'
4+
LastUpdated: Nov 23, 2025
55
Product:
66
Name: Cisco Meraki
77
Normalization:
@@ -197,7 +197,13 @@ ParserQuery: |
197197
);
198198
let PreFilteredData = allData
199199
| where not(disabled) and (isnull(starttime) or TimeGenerated >= starttime)
200-
and (isnull(endtime) or TimeGenerated <= endtime) and (LogMessage has_any("flows", "firewall", "ids-alerts") or LogMessage has_all("security_event", "ids-alerted") or (LogMessage has "events" and (LogMessage has_any ("Blocked DHCP server response", "association") or (LogMessage has "VRRP packet" and not(LogMessage has_any ("VRRP passive", "VRRP active"))) or (LogMessage has "disassociation" and not(LogMessage has_any ("auth_neg_failed", "dhcp"))))) or (LogMessage has "airmarshal_events" and LogMessage has_any("ssid_spoofing_detected", "rogue_ssid_detected")))
200+
and (isnull(endtime) or TimeGenerated <= endtime) and (
201+
LogMessage has_any("flows", "firewall", "ids-alerts", "cellular_firewall", "vpn_firewall", "ip_flow_start", "ip_flow_end")
202+
or LogMessage has_all("security_event", "ids-alerted")
203+
or LogMessage has_all("security_event", "ids_alerted")
204+
or (LogMessage has "events" and (LogMessage has_any ("Blocked DHCP server response", "association") or (LogMessage has "VRRP packet" and not(LogMessage has_any ("VRRP passive", "VRRP active"))) or (LogMessage has "disassociation" and not(LogMessage has_any ("auth_neg_failed", "dhcp")))))
205+
or (LogMessage has "airmarshal_events" and LogMessage has_any("ssid_spoofing_detected", "rogue_ssid_detected"))
206+
)
201207
| extend Parser = extract_all(@"(\d+.\d+)\s([\w\-\_]+)\s([\w\-\_]+)\s([\S\s]+)$", dynamic([1, 2, 3, 4]), LogMessage)[0]
202208
| extend
203209
LogType = tostring(Parser[2]),
@@ -214,8 +220,8 @@ ParserQuery: |
214220
and ((isnull(dstportnumber)) or Substring has tostring(dstportnumber))
215221
and (array_length(dvcaction) == 0 or LogMessage has_any (dvcaction));
216222
let FlowsFirewallData = PreFilteredData
217-
| where LogType in ("flows", "firewall", "cellular_firewall", "vpn_firewall")
218-
| parse-kv Substring as(src: string, dst: string, mac: string, sport: string, dport: string, protocol: string, type: int) with (pair_delimiter=" ", kv_delimiter="=", quote="'")
223+
| where LogType in ("flows", "firewall", "cellular_firewall", "vpn_firewall", "ip_flow_start", "ip_flow_end")
224+
| parse-kv Substring as(src: string, dst: string, mac: string, sport: string, dport: string, protocol: string, type: int, translated_dst_ip: string, translated_port: string) with (pair_delimiter=" ", kv_delimiter="=", quote="'")
219225
| parse Substring with pattern1: string " src=" temp_restmessage: string
220226
| parse Substring with * "pattern: " pattern2: string " " temp_restmessage: string
221227
| extend NetworkIcmpCode_lookup = iff(protocol == 'icmp6', type, int(null))
@@ -234,7 +240,7 @@ ParserQuery: |
234240
let IDSAlertData = PreFilteredData
235241
| where LogType in ("ids-alerts", "security_event")
236242
| parse LogMessage with * "security_event " LogSubType: string " " * "message: " message: string
237-
| where LogType == "security_event" and LogSubType == "ids-alerted" or LogType == "ids-alerts"
243+
| where LogType == "security_event" and (LogSubType == "ids-alerted" or LogSubType == "ids_alerted") or LogType == "ids-alerts"
238244
| parse-kv Substring as(priority: string, direction: string, protocol: string, src: string, dst: string, signature: string, dhost: string, shost: string) with (pair_delimiter=" ", kv_delimiter="=", quote="'")
239245
| extend EventResult = "Success"
240246
| extend
@@ -332,10 +338,10 @@ ParserQuery: |
332338
)
333339
| extend SrcPortNumber = iff(isempty(SrcPortNumber), toint(coalesce(sport, temp_srcport)), SrcPortNumber)
334340
| extend SrcPortNumber = toint(iff(isempty(SrcPortNumber) and SrcIpAddr has ".", split(temp_srcipport, ":")[1], SrcPortNumber))
335-
| extend temp_dstipport = trim('"', coalesce(dst, dns_server))
341+
| extend temp_dstipport = trim('"', coalesce(dst, dns_server, translated_dst_ip))
336342
| parse temp_dstipport with * "[" temp_dstip "]:" temp_dstport
337343
| extend DstIpAddr = iff(temp_dstipport has ".", split(temp_dstipport, ":")[0], coalesce(temp_dstip, temp_dstipport))
338-
| extend DstPortNumber = toint(coalesce(dport, temp_dstport))
344+
| extend DstPortNumber = toint(coalesce(dport, temp_dstport, translated_port))
339345
| extend DstPortNumber = toint(iff(isempty(DstPortNumber) and DstIpAddr has ".", split(temp_dstipport, ":")[1], DstPortNumber))
340346
| extend SrcIpAddr = iff(SrcIpAddr == SrcMacAddr, "", SrcIpAddr)
341347
| extend DstIpAddr = iff(DstIpAddr == DstMacAddr, "", DstIpAddr)
@@ -405,6 +411,8 @@ ParserQuery: |
405411
dns_server,
406412
sport,
407413
dport,
414+
translated_dst_ip,
415+
translated_port,
408416
*_lookup,
409417
type*,
410418
pattern*,

0 commit comments

Comments
 (0)