How T1095 non-application layer protocol hides command and control traffic
T1095 Non-application layer protocol is a Command and Control (TA0011) technique in which an adversary moves control traffic over protocols that sit below the application layer, such as raw TCP, UDP or ICMP, instead of over a recognized application protocol. ATT&CK defines the tactic as the adversary trying to communicate with compromised systems to control them. For a SOC lead, this matters because the traffic may never look like web browsing, DNS or email, so signatures and application-aware controls written for expected services can miss it entirely. The technique is catalogued in ATT&CK version 20.0, so detection content should name that version explicitly and be checked against it.
Adversaries use this approach because a non-application layer channel carries commands and responses without the structure that application inspection depends on. In an intrusion, it typically appears after a foothold is established, when an implant or operator needs a return path from a host inside a segment that allows outbound connections. It can also appear on systems that were never meant to talk to the internet, such as hypervisors, network devices or servers in restricted zones, where unexpected flows stand out sharply against a known baseline. The useful question for the SOC is not only what the payload looks like, but which hosts open sessions that have no business case and which sessions carry steady, low-variance traffic on unusual port and protocol pairs.
Before writing detection content, confirm with your network and platform teams which protocols and destinations are legitimately used in each zone, and record that baseline. Ask your sensor provider and log pipeline owners which fields are captured for connection creation, flow records and content, because the usefulness of this technique's detections depends on those fields being present. Treat any unexpected non-application flow from a server, hypervisor or network device as a priority to triage, and plan the cyber range rehearsal around the same baseline so that test results reflect your real environment.
Which telemetry reveals non-application layer protocol traffic
This table maps the three data components most relevant to T1095 to the signal each provides, the platforms where it is typically available, and the open-source collector that produces it. Read it as a coverage plan: pick the signal that matches your platform, then confirm in your own environment what each collector actually records.
| Telemetry (data component) | Signal for T1095 | Platforms to confirm | Open-source collector |
|---|---|---|---|
| Network Connection Creation (DC0082) | Session start with source, destination, port and transport protocol, showing traffic on protocols that do not match the expected application layer | ESXi, Linux, macOS, network devices and other platforms: confirm per source | Zeek connection logs, Suricata flow events, Wazuh endpoint or syslog events |
| Network Traffic Flow (DC0078) | Volume, direction, duration and byte counts per flow, useful for spotting unusual transport use at scale without payload inspection | Network devices and sensors: confirm flow export from each segment | Zeek conn.log, Suricata flow records, Security Onion dashboards built on Zeek and Suricata |
| Network Traffic Content (DC0085) | Payload-level evidence that a non-application protocol is carried on a port or path where a different protocol is expected | Sensors placed on monitored segments: confirm visibility on encrypted or tunneled paths | Suricata signatures and protocol parsers, Zeek protocol analyzers, Security Onion packet and alert review |
| Process Creation (DC0032) | Host context linking a socket or protocol use to the process that opened it, which narrows investigation | Linux, macOS and other endpoints with process auditing: confirm enabled audit sources | Wazuh process and audit events, Velociraptor artifacts for process and socket state |
| Coverage per platform | Network-only sensing sees traffic but not the owning process, so endpoint context is needed to attribute activity | ESXi and network devices often lack local process telemetry: confirm logging export options | Wazuh agents where supported, syslog forwarding into Wazuh or Security Onion |
Detection logic for T1095 that SOC teams can tune
T1095 Non-application layer protocol is hard to spot because traffic uses a transport or protocol number that the environment rarely sees, so detection depends on comparing each segment against its own baseline. The cards below describe four logic patterns, the thresholds to tune for each, and the legitimate traffic that will trigger them. Logic is written against Enterprise ATT&CK version 20.0.
Unusual protocol numbers on a segment
Flag IP packets whose protocol field carries a value that is not seen on the segment during the baseline window, and that is not one of the transport or tunneling protocols the team has approved. Build the baseline from Network Traffic Flow records over several weeks, grouped by source subnet and by host class such as ESXi hosts, Linux servers or network devices. Alert on first occurrence per host class, then escalate only when the same pair repeats. Expect false positives from VPN gateways using IPsec encapsulation, GRE tunnels between routers, and new monitoring agents. Keep an allowlist owned by the network team and review it at each change window.
Regular interval connection patterns
Look for flows between one internal host and one external or internal peer that recur at near-constant intervals, with similar byte counts and no matching user activity. Compute the coefficient of variation of inter-arrival times over a rolling window and set the threshold from your own baseline, not from a published number. Pair the timing signal with the Network Connection Creation record so that the process owner can be identified where the host telemetry allows it. Expect false positives from NTP, time synchronization, health checks, SNMP polling, backup heartbeats and cluster keepalives. Suppress known schedules by destination and port, and keep the suppression list versioned.
Protocol to port mismatches
Compare the transport and application protocol the sensor identifies with the port the flow uses. A flow that carries traffic on a port normally associated with a different service, or a payload that does not match its declared protocol, deserves review. Zeek and Suricata protocol identification can supply the parsed service label, while the Network Traffic Flow record supplies the port. Tune by destination class: internal east-west traffic usually has stable mappings, while internet-facing egress varies more. Expect false positives from applications that run services on nonstandard ports by design, such as internal APIs, custom agents and some database replication links. Confirm each mapping with the application owner before it enters the allowlist.
Protocol header content checks
Where sensors can read content, check that the bytes after the transport header match the header structure expected for the declared protocol, for example a valid version field, a plausible length and correct framing. Malformed or unexpected framing on an otherwise allowed port is a strong indicator to investigate. Network Traffic Content depends on sensor placement, and encrypted traffic limits what can be inspected, so record which segments have full visibility before writing the rule. Expect false positives from protocol implementations that deviate from specifications, from packet capture artifacts, and from load balancers that rewrite headers. Validate each rule in a cyber range against captured legitimate traffic before enabling it in production.
How to baseline normal protocol use before alerting on T1095
Before any T1095 alert is tuned, you need a written inventory of which non-application layer protocols legitimately cross each segment. Start with the segments that matter most: the boundary between user networks and data center zones, the management network that reaches hypervisors and network devices, and any segment carrying storage or cluster traffic. For each segment, record the protocols and ports in use, the source and destination roles, and the owning team. Routing protocols such as those used between core and distribution devices, cluster heartbeats and replication traffic between hypervisor hosts, and out-of-band management sessions to switches and firewalls are the usual sources of legitimate non-standard traffic that looks suspicious in a flow log. Ask each platform owner to confirm these flows in writing, because vendor documentation often lists defaults that a given environment has changed.
Build the baseline from a window long enough to include normal operational cycles, such as backups, patch windows, failover tests and month-end batch jobs. Collect Network Traffic Flow records and Network Connection Creation events for that window, then group them by source role, destination role, protocol and port. Separate expected flows, which map to an inventoried owner and purpose, from unexpected flows, which have no owner or appear only from a single host. Treat unexpected flows as leads for investigation rather than as allow list candidates. The exact retention period and sampling rate depend on your sensors and storage, so confirm them with the platform vendor and your own capacity planning before you commit to a window.
Feed each confirmed exception into your allow list with four fields: the flow definition, the business owner, the justification, and a review date. Review dates matter because a stale exception is a common route for real misuse to go unnoticed. Set the review cadence with the owners and tie it to change control, so that any change to a routing design, cluster configuration or management tool triggers a re-check of the related exceptions. Store the allow list under version control in your Wazuh or SIEM content repository so that every change has an author and a reason, and so that the Sigma or detection rules referencing it can be audited against the ATT&CK version you target.
How to validate the T1095 detection in a lab before production
This sequence proves that the T1095 detections fire on the right sensors, at the right time, with alerts a SOC analyst can act on, before any rule reaches production. It ends with tuned rules, a retest record and a documented list of coverage gaps per platform.
Agree scope and rules of engagement
The detection owner, the SOC lead, the platform owners for ESXi, Linux, macOS and network devices, and the range operator agree in writing which segments, hosts and accounts are in scope and which are excluded. The team also agrees who can stop the exercise, how the range is isolated from production, and where evidence is stored. The step is done when every platform owner has signed off on the scope document and the emergency stop contact is named.
Map detections to the ATT&CK version under test
Before any traffic is generated, the team records the exact ATT&CK version the detections target, the detection strategy and analytic identifiers, and the data components each analytic relies on, such as Network Connection Creation, Network Traffic Flow and Network Traffic Content. Each analytic is paired with its expected platform coverage and the sensors that should produce its input. The output is a test matrix that lists each analytic, its required telemetry and the owner of that telemetry source. Confirm the version and identifiers against the ATT&CK updates page because releases can rename or deprecate techniques.
Design a benign protocol-based test pattern
The range team designs a benign test pattern that produces traffic whose protocol behavior matches what T1095 analytics are meant to find, such as traffic on a non-application layer protocol between lab hosts and a controlled lab destination. The pattern is written as a description of intent and expected observables, not as a runnable script, and it is reviewed by the detection engineer. The step closes when the pattern has a documented expected result for each sensor in the test matrix and the reviewer has approved it.
Run the pattern on instrumented segments
The range operator runs the approved pattern on segments where Zeek, Suricata or the chosen network sensor, the Wazuh agents and the platform logs are confirmed to be collecting. Each run is logged with a start time, an end time, the source and destination lab hosts and the operator who ran it. The step is done when the run log is complete and the operator confirms in writing that the sensors were healthy for the full window.
Record sensor hits, timestamps and alert fidelity
The analyst compares the observed sensor output with the expected result from the test matrix. For each analytic the record notes whether it fired, the time between the activity and the alert, the fields populated, and whether the alert contained enough context to triage without extra searching. Repeated or noisy alerts are marked as fidelity issues. The output is an evidence sheet per platform that shows hits, misses, latency and triage quality, with raw log references kept in the range evidence store.
Tune rules and rerun the same pattern
The detection engineer adjusts thresholds, allowlists and field mappings based on the evidence sheet, then records each change with its reason and the analytic it affects. The same test pattern is run again on the same segments so results can be compared directly with the first run. The step is done when every analytic that missed or over-fired in the first run has either passed on retest or has a documented reason for remaining as a known limitation.
Document coverage gaps per platform
The team lists every platform and telemetry combination where detection did not work, including ESXi, Linux, macOS and network devices, and states the cause, such as missing log forwarding, unsupported telemetry or sensor placement. Each gap has an owner and a planned remediation, such as adding a collector, enabling a logging feature or adjusting mitigations like Network Intrusion Prevention and Filter Network Traffic. The output is a gap register that the CISO and platform leads review before the rule is promoted. Confirm each platform's logging capability with its vendor or your own environment instead of assuming it.
Approve promotion and retain evidence
The SOC lead and detection owner review the tuned results, the gap register and the scope document, then decide whether each analytic can move to production, stay in staging or be retired. Approved rules are versioned, and the evidence package includes the test matrix, run logs, evidence sheets, change records and the signed scope. The step is complete when the package is stored in the location the compliance team has named and the production change request references it.
Mitigations that limit non-application layer protocol abuse
T1095 abuse depends on raw protocols crossing boundaries that were never meant to carry them, so the two controls that matter most sit at network edges and between segments. Network Intrusion Prevention (M1031) and Filter Network Traffic (M1037) work together: one inspects and blocks by behavior, the other enforces what may leave and enter at all.
Network intrusion prevention at the boundary
M1031 places inline inspection where traffic crosses into or out of a zone, so that signatures and protocol anomaly rules can flag or drop non-application layer traffic such as raw TCP, UDP or ICMP payloads that do not match the expected service. Confirm whether the chosen platform, for example Suricata in inline mode, can run protocol anomaly rules on the links that matter, and whether it sees east-west traffic or only north-south. Inline placement adds latency and a failure mode, so define fail-open or fail-closed behavior before rollout.
Filtering traffic by protocol and direction
M1037 limits which protocols, ports and directions are permitted between networks, for example allowing outbound HTTPS from a proxy only and denying arbitrary outbound transport protocols from servers. This removes the reason many T1095 channels work at all. Check that host firewalls, cloud security groups and network firewalls share one rule set and that default-deny applies to egress, not only ingress. Expect ongoing exception handling for legitimate protocols, which is a recurring operational cost.
Segment boundaries for management and ESXi
Hypervisor management networks, network device management planes and build hosts should sit in segments where only named protocols reach them. Filter rules at these boundaries are often the only enforcement point, because many appliances cannot run endpoint agents. Ask the platform owner which management protocols are required, who approves exceptions, and whether change records are kept for each rule. Review these rules after every firmware or hypervisor upgrade.
Validate rules with a cyber range
Rules that have never been tested against an actual protocol abuse pattern give false confidence. In a private cyber range, run controlled, agreed simulations of non-standard protocol use against the filtered boundary and confirm that M1031 raises alerts and M1037 blocks the traffic as designed. Record which rules fired, which did not, and how long detection took. Keep the simulation scripts under change control and do not run them against production networks.
Monitor blocked and allowed flows
Blocking alone does not show whether abuse is being attempted. Forward firewall deny logs and IPS alerts to the SIEM, such as Wazuh, and review denied flows from hosts that normally generate none. Confirm log retention periods with the chosen platform owner and your compliance team. Tune noisy rules before they are relied on for response, because alert fatigue at the boundary hides real activity.
What to do when a T1095 alert fires
The first decision on a T1095 alert is whether the flow is an approved service at all. Confirm that the traffic is not a sanctioned protocol before anyone isolates a host. Check the flow against your approved service register, change records and firewall rules for the source and destination pair, and look at whether the protocol is one that the destination is expected to speak on that port. Non-application layer traffic such as raw TCP, UDP or ICMP payloads with no recognizable application framing can come from monitoring agents, time sync, backup or storage replication, so a clean match against an approved service ends triage early. Next, identify the source and destination hosts, the owning team for each, and the service account or process that opened the connection on the Linux, macOS, ESXi or network device side. Record the owner contact details in the case before going further, because the owning team is the fastest way to confirm intent.
Preserve evidence before you change anything. Export the Network Connection Creation events, the Network Traffic Flow records and any Network Traffic Content captures covering the alert window from your Security Onion, Zeek or Suricata sensors and from the Wazuh manager, and hash the exported files. Keep the captures in the case store with their collection times and sensor identifiers. Then check adjacent hosts on the same subnet and VLAN for the same port, protocol and destination pattern, since T1095 activity often appears on more than one system. If the pattern appears on other hosts, treat the alert as a campaign-level signal and widen the scope. Escalate to incident response when the flow goes to an external destination without a known owner, when content captures show encrypted or encoded payloads with no approved reason, when the same pattern appears across several segments, or when the affected system is a hypervisor, identity system or network device. Contain by applying a filter on the segment or isolating the host only after the owning team and incident lead agree, and document the timeline as you go: alert time, triage decisions, who was contacted, each containment step and its time, and the evidence hashes. That record is what an incident review will use.
Before the first production alert, agree these steps with your incident response and network teams and rehearse them in a private cyber range, so the decision to isolate a segment is not made for the first time during a live event. Confirm with your vendors which containment actions your firewalls and hypervisors support without disrupting management traffic. The response plan should also reference the Network Intrusion Prevention and Filter Network Traffic mitigations described for this technique, and it should name the ATT&CK version your detection mappings target, because technique definitions can change between releases. Refer to the MITRE ATT&CK tactic page for Command and Control for the technique context your analysts will cite in the incident record.
How to rehearse T1095 detection in a private cyber range
The range for this segment should mirror your production hypervisor management network and a representative set of Linux hosts, with host-level sensors and network visibility on the path between them. Keep the management plane separated from workload segments so that traffic crossing those boundaries is clearly observable. Plan injects at a high level: a non-application layer channel that starts from a host that should not originate outbound traffic of that shape, and a second variant that uses a different transport on an unusual port. Do not script the adversary actions in the design document; describe the expected behavior and the telemetry it should produce.
- Topology: One management segment, one workload segment, and a monitored egress path to a simulated external network under your control.
- Injects: Two or three scenarios with different transports, timing patterns and source hosts, each with a written expected outcome.
- Good detection: Network Connection Creation and Network Traffic Flow records correlate with the originating host, and an alert fires with the host, process context and destination.
- Good response: Triage confirms the host and owner within the agreed window, and containment isolates the host without disrupting unrelated management traffic.
- Tuning: Record every false positive and missed inject against the Enterprise ATT&CK version you target, such as v20.0, so mappings stay traceable after future releases.
Check that each inject produced the telemetry you expected at the sensor you expected, before judging the alert logic.
Network devices in this segment, such as routers, switches and firewalls, often generate the clearest flow records but the least host context. The range should include representative device syslog, flow export and any intrusion prevention or traffic filtering points you plan to use in production. Confirm with each vendor which flow and session fields are exported and at what granularity, because that determines which Network Traffic Flow analytics you can build. Injects should test whether unexpected non-application layer traffic crosses a boundary that policy says it should not, and whether the filtering layer blocks or only logs it.
- Topology: Device under test placed between the monitored segments, with flow export and logging sent to the same collector used in production.
- Injects: Traffic that crosses a segmentation boundary in a direction policy forbids, plus a benign control flow that must not alert.
- Good detection: Flow records show source, destination, port and protocol behavior, and an alert identifies the device, interface and policy context.
- Good response: Triage checks the change and session history on the device, and containment applies a filter rule scoped to the flow rather than a broad outage.
- Tuning: Compare device logging levels and retention with what analysts need, and log which vendor firmware version produced each result.
Confirm the export format and sampling settings with the vendor before you rely on the results.
The monitoring tier combines Wazuh, Security Onion with Zeek and Suricata, and any dashboards your analysts use. Its job in the range is to prove that data from hosts and devices meets in one place with consistent identifiers, timestamps and time zones. Rehearse the handoff: an alert raised by the sensor should reach the analyst queue with enough context to start triage without manual lookups. Measure the process, not only the detection. Record how long each step took, where analysts paused and which fields were missing.
- Topology: Sensors, log collectors and the dashboard stack deployed as they would be in production, with time synchronization verified across all sources.
- Injects: Scenarios that span both environments, so a single channel is visible from a host and from a device.
- Good detection: Correlated alerts reference the same session across host and network data, and Sigma-based rules map to the data components you documented.
- Good response: The on-call analyst opens a case, reaches the owner and records containment in the agreed sequence.
- Tuning: Review each rule against the ATT&CK version you target and retire or update rules whose technique IDs changed.
Check that the handoff between tiers works under load, not only in a quiet test window.
Questions SOC leads ask about T1095 detection
How does T1095 differ from T1071 and T1572?
T1095 covers traffic that rides directly on network or transport protocols such as ICMP or raw TCP and UDP, instead of carrying the conversation inside an application protocol like HTTP or DNS. T1071 covers adversary traffic that imitates or uses application layer protocols, and T1572 covers traffic wrapped inside another protocol to hide its contents or destination. The three overlap in practice, so an alert on one often needs a look at the others. Confirm the sub-technique structure and the mapped data components for your target ATT&CK version in the enterprise-attack STIX bundle before you write rules, because the boundaries are defined there and can change between releases.
Which data components should a SOC prioritize for T1095?
Start with Network Connection Creation (DC0082) and Network Traffic Flow (DC0078). Together they show which hosts open unusual protocol pairs, how often, and in what volume, and they are usually available from firewalls, flow exporters and host sensors. Add Network Traffic Content (DC0085) on segments where your sensors can parse packets, because it confirms what a protocol is carrying. Process Creation (DC0032) helps tie a connection to the process that opened it on Linux and macOS hosts. Map each data component to the sensors you actually run, and record the gaps.
How do we avoid false positives from VPN and routing traffic?
Baseline first. VPN concentrators, tunnel endpoints, routing protocols and monitoring probes often generate non-TCP and non-UDP traffic by design, so a rule that flags every unusual IP protocol will fire constantly. Build allow lists by source, destination and protocol tied to documented owners, and review them with network engineering. Alert on changes against that baseline, such as a new host using a protocol it has never used, or volume that departs sharply from its history. Test each rule against a week of production-like traffic in a lab before it reaches the production queue.
How often should we retest T1095 detections after ATT&CK version changes?
Retest whenever your target ATT&CK version changes and whenever your telemetry changes, not on a fixed calendar alone. MITRE's release history shows that versions can rename, deprecate or revoke techniques, and the v18 release replaced detections with detection strategies and analytics while updating data components. Record the ATT&CK version each rule targets, diff the enterprise-attack STIX bundle for T1095 and its sub-techniques when a new version ships, and rerun your cyber range scenarios against the affected rules. The exact cadence is a policy decision for your team, so agree it with your governance owner.
How do we handle sensor coverage gaps on network devices?
Network devices often cannot run host agents, so coverage usually comes from flow export, syslog and mirrored traffic at chokepoints. Inventory which switches, routers and firewalls export flow records, and which segments have a tap or span port that a sensor can read. Where a device has no export path, document the gap as a risk with a compensating control, such as moving the segment behind a monitored firewall or enforcing filtering at its boundary, which maps to ATT&CK mitigation Filter Network Traffic (M1037). Confirm each device's export capabilities with its vendor or in your own environment, because they vary by model and firmware.
Can our own team run T1095 detection, or do we need outside help?
A capable team can build and run T1095 detection with open-source tools such as Zeek, Suricata, Security Onion and Wazuh, provided it has network engineers, detection engineers and time to tune rules. The work splits into one-time setup (sensor placement, parsing, baselining and rule authoring) and recurring work (tuning, version reviews and retesting). DeployOpen plans, implements, tunes and documents self-hosted open-source platforms inside your own environment, and runs security testing and private cyber ranges. Fixed-scope engagements agree deliverables and timelines in writing before work starts, and ongoing retainers cover continuous testing. Ask any provider which of these steps they will own and which stay with your staff.
What should a cyber range exercise prove for T1095?
A useful exercise proves that a rule fires on the intended behavior, stays quiet on normal VPN and routing traffic, and produces an alert that an analyst can act on within your response process. Run controlled, approved scenarios in a private cyber range where non-application layer traffic is generated against monitored segments, then record detection time, alert content and any missed steps. Repeat the exercise after tuning and after each ATT&CK version change. Keep the evidence, because it supports the detection validation your auditors and risk committee will ask about. Do not run these scenarios against production networks without written authorization.
Official ATT&CK sources for T1095 detection work
Start with the ATT&CK tactic page for Command and Control, TA0011, which describes the adversary goal this technique serves: communicating with compromised systems to control them. Use it to confirm that T1095 Non-Application Layer Protocol sits under this tactic in the version you are working from, and to read the related technique family before you write detection logic. For a T1095 detection, the practical question is which protocols and ports your environment expects to see on each platform, so record that baseline alongside the ATT&CK reference. Your detection notes should name the ATT&CK version they target so that later reviews can tell whether a mapping has changed.
Next, read the MITRE ATT&CK updates page. ATT&CK releases can rename, deprecate or revoke techniques, and a mapping that was correct in one release may need review in the next. Confirm the current status of T1095 and its platform coverage in the release you target, and check whether its detection strategies or data component references have changed since your last review. The release notes linked from that page describe the scope of each update, so read the notes for any release that lands between your baseline and your planned rollout.
The STIX 2.1 bundles in the mitre-attack/attack-stix-data repository are the most reliable way to check mappings programmatically. Pull the bundle for the exact version you target and confirm the technique ID, platforms, tactics, data components and mitigations that your Wazuh, Sigma or Security Onion rules depend on. Store that bundle version in your detection catalog and record who approved any change. Ask your DeployOpen team, or your own threat intelligence owner, to confirm the mapping for your environment before a rule is promoted to production.
How DeployOpen builds T1095 detections and range scenarios
DeployOpen approaches T1095 Non-application layer protocol as a fixed-scope engagement inside the client's own infrastructure, starting from the telemetry the client already collects. The work turns that telemetry into tested detections for non-application layer traffic and rehearses them in a private cyber range before handover.
How we scope
- We agree in writing which platforms are in scope, such as ESXi, Linux, macOS and network devices.
- We confirm which telemetry exists for Network Connection Creation, Network Traffic Flow and Network Traffic Content.
- We record the ATT&CK version the detections target, so later releases can be mapped against it.
How we build
- We write detection logic in open formats, such as Sigma rules, for Wazuh, Security Onion, Suricata or Zeek.
- We map Network Intrusion Prevention and Filter Network Traffic controls to the detections where the client's stack supports them.
- We test each rule against recorded benign traffic to measure false positives before it reaches production.
How we hand over
- We deliver rule sets, configuration, and a written runbook describing each detection and its expected response.
- We run a cyber range exercise that simulates non-application layer traffic on the client's chosen platforms and documents the results.
- We agree a validation checklist so the client's own analysts can repeat the test after handover.
How we support
- Ongoing support, upgrades and continuous testing are available as a retainer, scoped separately from the initial work.
- We review detections when ATT&CK releases rename, deprecate or revoke techniques that affect this mapping.
- We update the range scenarios when the client's network architecture or monitoring tooling changes.

