| ID | Technique | Tactic |
|---|---|---|
| T1090 | Proxy | Command and Control |
| T1572 | Protocol Tunneling | Command and Control |
Detection: Cisco IOS XE Tunnel Interface Configuration
Description
This analytic detects creation of a Cisco IOS-XE tunnel interface with tunnel source, tunnel destination, and an IP address in the 10.10.12.0 network. The Salt Typhoon notes identify this tunnel configuration pattern as suspicious.
Search
1`cisco_ios`
2facility IN ("HA_EM", "PARSER")
3mnemonic IN ("LOG", "CFGLOG_LOGGEDCMD")
4message_text IN ("*interface Tunnel*", "*tunnel source*", "*tunnel destination*", "*ip address 10.10.12.*")
5
6| rex field=message_text "^(?:[^:]+:\s+)?(?:catchall:\s+)?(?<eem_command>.+?)\s*$"
7
8| rex field=message_text "<enteredCommand><cli>(?<parser_command>.*?)</cli>"
9
10| rex field=message_text "<user>(?<parser_user>[^<]+)</user>"
11
12| rex field=message_text "<srcIP>(?<parser_src_ip>[^<]+)</srcIP>"
13
14| eval command=lower(trim(coalesce(parser_command, eem_command, "")))
15
16| eval event_type=case(
17 match(command, "^interface\s+tunnel"), "interface_tunnel",
18 match(command, "^tunnel\s+source"), "tunnel_source",
19 match(command, "^tunnel\s+destination"), "tunnel_destination",
20 match(command, "^ip\s+address\s+10\.10\.12\."), "tunnel_ip_address",
21 true(), null())
22
23| where isnotnull(event_type)
24
25| eval user=coalesce(parser_user, user, "unknown")
26
27| eval src_ip=coalesce(parser_src_ip, src_ip, "unknown")
28
29| eval dest=coalesce(host, dvc, dest, "unknown")
30
31| bin _time span=15m
32
33| stats count min(_time) as firstTime
34 max(_time) as lastTime
35 values(event_type) as event_types
36 values(user) as user
37 values(src_ip) as src_ip
38 values(command) as commands
39 by _time dest
40
41| where mvfind(event_types, "interface_tunnel") >= 0
42 AND
43 mvfind(event_types, "tunnel_source") >= 0
44 AND
45 mvfind(event_types, "tunnel_destination") >= 0
46 AND
47 mvfind(event_types, "tunnel_ip_address") >= 0
48
49| `security_content_ctime(firstTime)`
50
51| `security_content_ctime(lastTime)`
52
53| `cisco_ios_xe_tunnel_interface_configuration_filter`
Data Source
| Name | Platform | Sourcetype | Source |
|---|---|---|---|
| Cisco IOS Logs | Other | 'cisco:ios' |
'cisco:ios' |
Macros Used
| Name | Value |
|---|---|
| cisco_ios | sourcetype=cisco:ios |
| cisco_ios_xe_tunnel_interface_configuration_filter | search * |
cisco_ios_xe_tunnel_interface_configuration_filter is an empty macro by default. It allows the user to filter out any results (false positives) without editing the SPL.
Annotations
MITRE ATT&CK
Kill Chain Phases
NIST
CIS
Threat Actors
Command and Control
DE.AE
CIS 13
Blue Mockingbird
Chimera
Cinnamon Tempest
Cobalt Group
Contagious Interview
CopyKittens
Earth Lusca
Ember Bear
FIN13
FIN6
FIN7
Fox Kitten
Gamaredon Group
LAPSUS$
Leviathan
Magic Hound
MirrorFace
MoustachedBouncer
MuddyWater
Mustang Panda
OilRig
POLONIUM
Salt Typhoon
Sandworm Team
Scattered Spider
TEMP.Veles
Turla
UNC3886
VOID MANTICORE
Volt Typhoon
Windigo
Default Configuration
This detection is configured by default in Splunk Enterprise Security to run with the following settings:
| Setting | Value |
|---|---|
| Disabled | true |
| Cron Schedule | 0 * * * * |
| Earliest Time | -70m@m |
| Latest Time | -10m@m |
| Schedule Window | auto |
| Creates Finding (Notable) | No |
| Creates Intermediate Finding (Risk Event) | Yes |
Anomaly detections generate Intermediate Findings (Risk Events). They do not generate a Finding (Notable) directly.
Implementation
Use the Cisco Catalyst Add-on for Splunk (https://splunkbase.splunk.com/app/7538) to Ingest Cisco IOS-XE syslog with sourcetype "cisco:ios" and enable archive/config command logging.
Known False Positives
No false positives have been identified at this time.
Associated Analytic Story
Intermediate Findings
| Message | Entity Field | Entity Type | Risk Score |
|---|---|---|---|
| Cisco IOS-XE tunnel interface configuration matching Salt Typhoon notes was observed on $dest$ by $user$. | dest | system | 20 |
Threat Objects
| Field | Type |
|---|---|
| commands | command |
References
Detection Testing
| Test Type | Status | Dataset | Source | Sourcetype |
|---|---|---|---|---|
| Validation | ✅ Passing | N/A | N/A | N/A |
| Unit | ✅ Passing | Dataset | ctb:catalyst:syslog |
cisco:ios |
| Integration | ✅ Passing | Dataset | ctb:catalyst:syslog |
cisco:ios |
Replay any dataset to Splunk Enterprise by using our replay.py tool or the UI.
Alternatively you can replay a dataset into a Splunk Attack Range
Source: GitHub | Version: 1