Skip to content

Cisco IOS

Overview

Cisco IOS is a network operating system for Cisco ASR routers and Cisco Catalyst switches.

  • Vendor: Cisco
  • Supported environment: On Premise
  • Version compatibility: 15.5 (Latest version as of now)
  • Detection based on: Telemetry
  • Supported application or feature: Network management and operation

High-Level Architecture Diagram

  • Type of integration: Outbound (PUSH to Sekoia.io)
  • Schema

cisco_ios_architecture

Specification

Prerequisites

  • Resource:
    • Self-managed syslog forwarder
  • Network:
    • Outbound traffic allowed
  • Permissions:
    • Administrator or Root access to the Cisco IOS device
    • Root access to the Linux server with the syslog forwarder

Transport Protocol/Method

  • Indirect Syslog

Logs details

  • Supported functionalities: See section Overview
  • Supported type(s) of structure: Plain text
  • Supported verbosity level: Informational

Note

Log levels are based on the taxonomy of RFC5424. Adapt according to the terminology used by the editor.

Step-by-Step Configuration Procedure

Instructions on the 3rd Party Solution

Forward Cisco IOS Logs to Sekoia.io

This setup guide will show you how to provide an integration between Cisco IOS events and Sekoia.io.

Enable Syslog Forwarding: - Log on your Cisco appliance. - Follow this guide to enable syslog forwarding to a managed syslog forwarder.

Instruction on Sekoia

Configure Your Intake

This section will guide you through creating the intake object in Sekoia, which provides a unique identifier called the "Intake key." The Intake key is essential for later configuration, as it references the Community, Entity, and Parser (Intake Format) used when receiving raw events on Sekoia.

  1. Go to the Sekoia Intake page.
  2. Click on the + New Intake button at the top right of the page.
  3. Search for your Intake by the product name in the search bar.
  4. Give it a Name and associate it with an Entity (and a Community if using multi-tenant mode).
  5. Click on Create.
  6. You will be redirected to the Intake listing page, where you will find a new line with the name you gave to the Intake.

Note

For more details on how to use the Intake page and to find the Intake key you just created, refer to this documentation.

Configure a forwarder

To forward events using syslog to Sekoia.io, you need to update the syslog header with the intake key you previously created. Here is an example of your message before the forwarder

<%pri%>1 %timestamp:::date-rfc3339% %hostname% %app-name% %procid% LOG RAW_MESSAGE
and after
<%pri%>1 %timestamp:::date-rfc3339% %hostname% %app-name% %procid% LOG [SEKOIA@53288 intake_key=\"YOUR_INTAKE_KEY\"] RAW_MESSAGE

To achieve this you can:

  • Use the Sekoia.io forwarder which is the official supported way to collect data using the syslog protocol in Sekoia.io. In charge of centralizing data coming from many equipments/sources and forwarding them to Sekoia.io with the apporpriated format, it is a prepackaged option. You only have to provide your intake key as parameter.
  • Use your own Syslog service instance. Maybe you already have an intance of one of these components on your side and want to reuse it in order to centralize data before forwarding them to Sekoia.io. When using this mode, you have to configure and maintain your component in order to respect the expected Sekoia.io format.

Warning

Only the Sekoia.io forwarder is officially supported. Other options are documented for reference purposes but do not have official support.

Raw Events Samples

In this section, you will find examples of raw logs as generated natively by the source. These examples are provided to help integrators understand the data format before ingestion into Sekoia.io. It is crucial for setting up the correct parsing stages and ensuring that all relevant information is captured.

FE03.LOCAL: Mar 6 2023 08:04:45.866 CET: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet1/0/13, changed state to down
STN01.LOCAL: Mar 6 2023 08:04:45.866 CET: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet1/0/13, changed state to up
FE05: Mar 6 2023 08:04:45.866: %LINK-3-UPDOWN: Interface GigabitEthernet2/0/13, changed state to down
Jul  3 2024 16:39:13 CEST: %LINK-3-UPDOWN: Interface GigabitEthernet2/0/14, changed state to down
FE05: Mar 6 2023 08:04:45.866: %LINK-3-UPDOWN: Interface GigabitEthernet2/0/25, changed state to up
FE08: Jan 13 2023 10:16:05.33: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: jdoe] [Source: 1.2.3.4] [localport: 22] at 10:16:05 GMT Fri Jan 13 2023
FE08: Jan 13 2023 10:16:05.33: %SYS-3-LOGGINGHOST_FAIL: Logging to host 3.2.4.5 port 514 failed
FE08: Jan 13 2023 10:16:05.33: %SYS-6-LOGOUT: User jdoe has exited tty session 2(1.2.3.4)
Jul  3 2024 16:40:48: %MAB-5-FAIL: Authentication failed for client (0000.0000.0000) on Interface Gi2/0/7 AuditSessionID 0000000D0000000000000000
DN04.LOCAL: Feb 21 06:59:55.692: %SW_MATM-4-MACFLAP_NOTIF: Host 0011.2233.4455 in vlan 20 is flapping between port Gi1/0/9 and port Gi2/0/9
FE08: Jan 13 2023 10:16:05.33: %SYS-6-TTY_EXPIRE_TIMER: (exec timer expired, tty 2 (1.2.3.4)), user jdoe

Detection section

The following section provides information for those who wish to learn more about the detection capabilities enabled by collecting this intake. It includes details about the built-in rule catalog, event categories, and ECS fields extracted from raw events. This is essential for users aiming to create custom detection rules, perform hunting activities, or pivot in the events page.

The following Sekoia.io built-in rules match the intake Cisco IOS router and switch. This documentation is updated automatically and is based solely on the fields used by the intake which are checked against our rules. This means that some rules will be listed but might not be relevant with the intake.

SEKOIA.IO x Cisco IOS router and switch on ATT&CK Navigator

Account Added To A Security Enabled Group

Detection in order to investigate who has added a specific Domain User in Domain Admins or Group Policy Creator Owners (Security event 4728)

  • Effort: master
Account Removed From A Security Enabled Group

Detection in order to investigate who has removed a specific Domain User in Domain Admins or Group Policy Creator Owners (Security event 4729)

  • Effort: master
Computer Account Deleted

Detects computer account deletion.

  • Effort: master
Cryptomining

Detection of domain names potentially related to cryptomining activities.

  • Effort: master
Domain Trust Created Or Removed

A trust was created or removed to a domain. An attacker could perform that in order to do lateral movement easily between domains or shutdown the ability of two domains to communicate.

  • Effort: advanced
Dynamic DNS Contacted

Detect communication with dynamic dns domain. This kind of domain is often used by attackers. This rule can trigger false positive in non-controlled environment because dynamic dns is not always malicious.

  • Effort: master
Exfiltration Domain

Detects traffic toward a domain flagged as a possible exfiltration vector.

  • Effort: master
Password Change On Directory Service Restore Mode (DSRM) Account

The Directory Service Restore Mode (DSRM) account is a local administrator account on Domain Controllers. Attackers may change the password to gain persistence.

  • Effort: intermediate
Possible Replay Attack

This event can be a sign of Kerberos replay attack or, among other things, network device configuration or routing problems.

  • Effort: intermediate
RSA SecurID Failed Authentification

Detects many failed attempts to authenticate followed by a successfull login for a super admin account.

  • Effort: advanced
Remote Access Tool Domain

Detects traffic toward a domain flagged as a Remote Administration Tool (RAT).

  • Effort: master
SEKOIA.IO Intelligence Feed

Detect threats based on indicators of compromise (IOCs) collected by SEKOIA's Threat and Detection Research team.

  • Effort: elementary
Sekoia.io EICAR Detection

Detects observables in Sekoia.io CTI tagged as EICAR, which are fake samples meant to test detection.

  • Effort: master
TOR Usage Generic Rule

Detects TOR usage globally, whether the IP is a destination or source. TOR is short for The Onion Router, and it gets its name from how it works. TOR intercepts the network traffic from one or more apps on user’s computer, usually the user web browser, and shuffles it through a number of randomly-chosen computers before passing it on to its destination. This disguises user location, and makes it harder for servers to pick him/her out on repeat visits, or to tie together separate visits to different sites, this making tracking and surveillance more difficult. Before a network packet starts its journey, user’s computer chooses a random list of relays and repeatedly encrypts the data in multiple layers, like an onion. Each relay knows only enough to strip off the outermost layer of encryption, before passing what’s left on to the next relay in the list.

  • Effort: master
User Account Created

Detects user creation on windows servers, which shouldn't happen in an Active Directory environment. Apply this on your windows server logs and not on your DC logs. One default account defaultuser0 is excluded as only used during Windows set-up. This detection use Security Event ID 4720.

  • Effort: master
User Account Deleted

Detects local user deletion

  • Effort: master

Event Categories

The following table lists the data source offered by this integration.

Data Source Description
Host network interface every packets are logged and information on the outcome, the source/destination are extracted
Network device logs ACL logs are examined in detail
Network protocol analysis packets are fully analyzed

In details, the following table denotes the type of events produced by this integration.

Name Values
Kind ``
Category host
Type ``

Transformed Events Samples after Ingestion

This section demonstrates how the raw logs will be transformed by our parsers. It shows the extracted fields that will be available for use in the built-in detection rules and hunting activities in the events page. Understanding these transformations is essential for analysts to create effective detection mechanisms with custom detection rules and to leverage the full potential of the collected data.

{
    "message": "FE03.LOCAL: Mar 6 2023 08:04:45.866 CET: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet1/0/13, changed state to down",
    "event": {
        "action": "down",
        "category": [
            "host"
        ],
        "code": "UPDOWN",
        "reason": "Line protocol on Interface GigabitEthernet1/0/13, changed state to down",
        "severity": 5,
        "type": [
            "info"
        ]
    },
    "@timestamp": "2023-03-06T07:04:45.866000Z",
    "cisco": {
        "ios": {
            "event": {
                "facility": "LINEPROTO"
            },
            "observer": {
                "interface": {
                    "name": "GigabitEthernet1/0/13"
                }
            }
        }
    },
    "host": {
        "name": "FE03.LOCAL"
    },
    "observer": {
        "product": "ios",
        "vendor": "Cisco"
    }
}
{
    "message": "STN01.LOCAL: Mar 6 2023 08:04:45.866 CET: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet1/0/13, changed state to up",
    "event": {
        "action": "up",
        "category": [
            "host"
        ],
        "code": "UPDOWN",
        "reason": "Line protocol on Interface GigabitEthernet1/0/13, changed state to up",
        "severity": 5,
        "type": [
            "info"
        ]
    },
    "@timestamp": "2023-03-06T07:04:45.866000Z",
    "cisco": {
        "ios": {
            "event": {
                "facility": "LINEPROTO"
            },
            "observer": {
                "interface": {
                    "name": "GigabitEthernet1/0/13"
                }
            }
        }
    },
    "host": {
        "name": "STN01.LOCAL"
    },
    "observer": {
        "product": "ios",
        "vendor": "Cisco"
    }
}
{
    "message": "FE05: Mar 6 2023 08:04:45.866: %LINK-3-UPDOWN: Interface GigabitEthernet2/0/13, changed state to down",
    "event": {
        "action": "down",
        "category": [
            "host"
        ],
        "code": "UPDOWN",
        "reason": "Interface GigabitEthernet2/0/13, changed state to down",
        "severity": 3,
        "type": [
            "info"
        ]
    },
    "@timestamp": "2023-03-06T08:04:45.866000Z",
    "cisco": {
        "ios": {
            "event": {
                "facility": "LINK"
            },
            "observer": {
                "interface": {
                    "name": "GigabitEthernet2/0/13"
                }
            }
        }
    },
    "host": {
        "name": "FE05"
    },
    "observer": {
        "product": "ios",
        "vendor": "Cisco"
    }
}
{
    "message": "Jul  3 2024 16:39:13 CEST: %LINK-3-UPDOWN: Interface GigabitEthernet2/0/14, changed state to down",
    "event": {
        "action": "down",
        "category": [
            "host"
        ],
        "code": "UPDOWN",
        "reason": "Interface GigabitEthernet2/0/14, changed state to down",
        "severity": 3,
        "type": [
            "info"
        ]
    },
    "@timestamp": "2024-07-03T14:39:13Z",
    "cisco": {
        "ios": {
            "event": {
                "facility": "LINK"
            },
            "observer": {
                "interface": {
                    "name": "GigabitEthernet2/0/14"
                }
            }
        }
    },
    "observer": {
        "product": "ios",
        "vendor": "Cisco"
    }
}
{
    "message": "FE05: Mar 6 2023 08:04:45.866: %LINK-3-UPDOWN: Interface GigabitEthernet2/0/25, changed state to up",
    "event": {
        "action": "up",
        "category": [
            "host"
        ],
        "code": "UPDOWN",
        "reason": "Interface GigabitEthernet2/0/25, changed state to up",
        "severity": 3,
        "type": [
            "info"
        ]
    },
    "@timestamp": "2023-03-06T08:04:45.866000Z",
    "cisco": {
        "ios": {
            "event": {
                "facility": "LINK"
            },
            "observer": {
                "interface": {
                    "name": "GigabitEthernet2/0/25"
                }
            }
        }
    },
    "host": {
        "name": "FE05"
    },
    "observer": {
        "product": "ios",
        "vendor": "Cisco"
    }
}
{
    "message": "FE08: Jan 13 2023 10:16:05.33: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success [user: jdoe] [Source: 1.2.3.4] [localport: 22] at 10:16:05 GMT Fri Jan 13 2023",
    "event": {
        "category": [
            "host"
        ],
        "code": "LOGIN_SUCCESS",
        "reason": "Login Success [user: jdoe] [Source: 1.2.3.4] [localport: 22] at 10:16:05 GMT Fri Jan 13 2023",
        "severity": 5,
        "type": [
            "access",
            "start"
        ]
    },
    "@timestamp": "2023-01-13T10:16:05.330000Z",
    "cisco": {
        "ios": {
            "event": {
                "facility": "SEC_LOGIN"
            }
        }
    },
    "host": {
        "name": "FE08"
    },
    "observer": {
        "product": "ios",
        "vendor": "Cisco"
    },
    "related": {
        "ip": [
            "1.2.3.4"
        ],
        "user": [
            "jdoe"
        ]
    },
    "source": {
        "address": "1.2.3.4",
        "ip": "1.2.3.4",
        "port": 22
    },
    "user": {
        "name": "jdoe"
    }
}
{
    "message": "FE08: Jan 13 2023 10:16:05.33: %SYS-3-LOGGINGHOST_FAIL: Logging to host 3.2.4.5 port 514 failed",
    "event": {
        "category": [
            "host"
        ],
        "code": "LOGGINGHOST_FAIL",
        "reason": "Logging to host 3.2.4.5 port 514 failed",
        "severity": 3,
        "type": [
            "access",
            "end"
        ]
    },
    "@timestamp": "2023-01-13T10:16:05.330000Z",
    "cisco": {
        "ios": {
            "event": {
                "facility": "SYS"
            }
        }
    },
    "destination": {
        "address": "3.2.4.5",
        "ip": "3.2.4.5",
        "port": 514
    },
    "host": {
        "name": "FE08"
    },
    "observer": {
        "product": "ios",
        "vendor": "Cisco"
    },
    "related": {
        "ip": [
            "3.2.4.5"
        ]
    }
}
{
    "message": "FE08: Jan 13 2023 10:16:05.33: %SYS-6-LOGOUT: User jdoe has exited tty session 2(1.2.3.4)",
    "event": {
        "category": [
            "host"
        ],
        "code": "LOGOUT",
        "reason": "User jdoe has exited tty session 2(1.2.3.4)",
        "severity": 6,
        "type": [
            "access",
            "end"
        ]
    },
    "@timestamp": "2023-01-13T10:16:05.330000Z",
    "cisco": {
        "ios": {
            "event": {
                "facility": "SYS"
            },
            "observer": {
                "terminal": "2"
            }
        }
    },
    "host": {
        "name": "FE08"
    },
    "observer": {
        "product": "ios",
        "vendor": "Cisco"
    },
    "related": {
        "ip": [
            "1.2.3.4"
        ],
        "user": [
            "jdoe"
        ]
    },
    "source": {
        "address": "1.2.3.4",
        "ip": "1.2.3.4"
    },
    "user": {
        "name": "jdoe"
    }
}
{
    "message": "Jul  3 2024 16:40:48: %MAB-5-FAIL: Authentication failed for client (0000.0000.0000) on Interface Gi2/0/7 AuditSessionID 0000000D0000000000000000",
    "event": {
        "category": [
            "host"
        ],
        "code": "FAIL",
        "reason": "Authentication failed for client (0000.0000.0000) on Interface Gi2/0/7 AuditSessionID 0000000D0000000000000000",
        "severity": 5,
        "type": [
            "info"
        ]
    },
    "@timestamp": "2024-07-03T16:40:48Z",
    "cisco": {
        "ios": {
            "event": {
                "facility": "MAB"
            }
        }
    },
    "observer": {
        "product": "ios",
        "vendor": "Cisco"
    }
}
{
    "message": "DN04.LOCAL: Feb 21 06:59:55.692: %SW_MATM-4-MACFLAP_NOTIF: Host 0011.2233.4455 in vlan 20 is flapping between port Gi1/0/9 and port Gi2/0/9",
    "event": {
        "category": [
            "host"
        ],
        "code": "MACFLAP_NOTIF",
        "reason": "Host 0011.2233.4455 in vlan 20 is flapping between port Gi1/0/9 and port Gi2/0/9",
        "severity": 4,
        "type": [
            "info"
        ]
    },
    "@timestamp": "2024-02-21T06:59:55.692000Z",
    "cisco": {
        "ios": {
            "event": {
                "facility": "SW_MATM"
            },
            "observer": {
                "interface": {
                    "ports": [
                        "Gi1/0/9",
                        "Gi2/0/9"
                    ]
                }
            }
        }
    },
    "host": {
        "name": "DN04.LOCAL"
    },
    "network": {
        "vlan": {
            "id": "20"
        }
    },
    "observer": {
        "product": "ios",
        "vendor": "Cisco"
    },
    "source": {
        "mac": "00:11:22:33:44:55"
    }
}
{
    "message": "FE08: Jan 13 2023 10:16:05.33: %SYS-6-TTY_EXPIRE_TIMER: (exec timer expired, tty 2 (1.2.3.4)), user jdoe",
    "event": {
        "category": [
            "host"
        ],
        "code": "TTY_EXPIRE_TIMER",
        "reason": "(exec timer expired, tty 2 (1.2.3.4)), user jdoe",
        "severity": 6,
        "type": [
            "info"
        ]
    },
    "@timestamp": "2023-01-13T10:16:05.330000Z",
    "cisco": {
        "ios": {
            "event": {
                "facility": "SYS"
            },
            "observer": {
                "terminal": "2"
            }
        }
    },
    "host": {
        "name": "FE08"
    },
    "observer": {
        "product": "ios",
        "vendor": "Cisco"
    },
    "related": {
        "ip": [
            "1.2.3.4"
        ],
        "user": [
            "jdoe"
        ]
    },
    "source": {
        "address": "1.2.3.4",
        "ip": "1.2.3.4"
    },
    "user": {
        "name": "jdoe"
    }
}

Extracted Fields

The following table lists the fields that are extracted, normalized under the ECS format, analyzed and indexed by the parser. It should be noted that infered fields are not listed.

Name Type Description
@timestamp date Date/time when the event originated.
cisco.ios.event.facility keyword The facility of the event
cisco.ios.observer.interface.name keyword The name of the interface
cisco.ios.observer.interface.ports array The list of ports associated to the interface
cisco.ios.observer.terminal keyword The identifier of the terminal used for the action
destination.ip ip IP address of the destination.
destination.port long Port of the destination.
event.action keyword The action captured by the event.
event.category keyword Event category. The second categorization field in the hierarchy.
event.code keyword Identification code for this event.
event.reason keyword Reason why this event happened, according to the source
event.severity long Numeric severity of the event.
host.name keyword Name of the host.
network.vlan.id keyword VLAN ID as reported by the observer.
observer.product keyword The product name of the observer.
observer.vendor keyword Vendor name of the observer.
source.ip ip IP address of the source.
source.mac keyword MAC address of the source.
source.port long Port of the source.
user.name keyword Short name or login of the user.

For more information on the Intake Format, please find the code of the Parser, Smart Descriptions, and Supported Events here.

Further readings