T1612 Build image on host

How to detect T1612 Build Image on Host on container hosts with open-source tooling, using network connection and image creation telemetry, and how to prove the detection works in a private cyber range.

On this page

How T1612 build image on host shows up on container hosts

For an attacker, T1612 Build image on host, listed under the Stealth tactic (TA0005), means assembling a container image directly on a host instead of moving it through the normal registry path. The payoff is concealment: an image built locally can avoid the checkpoints the organization assumes every image passes, such as registry scanning and admission controls. This section and the rest of the page target ATT&CK v20.0 and cover container hosts only. T1612 has no sub-techniques, so detection logic can be written against the technique as a whole. In intrusions, it often appears after an initial foothold on a build or application host where a container runtime and build tooling are already present.

The difficulty is that legitimate build pipelines produce the same activity. Developers run local builds, CI runners construct images on shared hosts, and platform teams rely on build agents that call the container runtime all day. A SOC analyst looking at one build event on a container host has little to separate a sanctioned engineer from an intruder. Context carries the decision: which account started the build, whether the host is meant to build images at all, whether the base image and build inputs match an approved pipeline, and whether a matching image later appears in a registry. In an illustrative case, a build on a developer workstation that is never pushed anywhere deserves a different response than the same build on a production node. Confirm with your platform team which hosts are approved builders before tuning any alert.

Start with an inventory. Ask your platform team to name the container hosts sanctioned to build images, the service accounts that run builds there, and the registries those builds push to. Then confirm that your telemetry records Network Connection Creation (DC0082) and image creation events on those hosts, and that retention covers enough history to baseline normal build activity. Any build on a host outside that inventory is a question to answer before it becomes an incident. Plan to validate the detection in a private cyber range against your own container runtime and build tooling before it runs in production, and record which findings were expected and which were not.

Telemetry that reveals T1612 and the open-source tools that collect it

This table maps each behavior that can reveal T1612 Build Image on Host to the telemetry source that records it and the open-source collector that gathers it. Read each row as a candidate signal, then check the listed item before writing rules against ATT&CK v20.0. The main takeaway is that no single source is enough: registry contact, build activity and new image records should be correlated on the same container host.

SignalTelemetry sourceOpen-source collectorConfirm before rules ship
Registry contact before a local buildNetwork Connection Creation (DC0082)Zeek connection and TLS metadata, Suricata alerts on registry hostnamesApproved registry hostnames for your estate and expected pull paths
New image records with no matching registry pushImage Creation (DC ID to confirm)Wazuh log collection from container runtime logs, Falco runtime events where rules cover image eventsThat your runtime emits image creation events and which rule names apply
Build tool execution on a container hostProcess Creation (DC0032)auditd execution records forwarded to Wazuh, Falco process eventsWhich build binaries to monitor and how auditd rules are scoped
New build context files written to diskFile Creation (DC0039)Wazuh file integrity monitoring on build directories, Falco file eventsBuild directory paths and noise from normal CI workspaces
Build activity from unexpected or privileged accountsRuntime API audit logs and host authentication recordsWazuh collection of audit logs, Kubernetes audit logs where the cluster provides themAccount inventory and which roles should never trigger builds
Data component IDs for rule mappingATT&CK v20.0 STIX bundle for enterprise-attackattack-stix-data repository used to verify DC IDs and detection mappingsConfirm every DC ID in the v20.0 bundle before writing detection rules

Detection logic for T1612 on container hosts

T1612 Build Image on Host shows up as image creation that does not match an approved build path. The cards below describe detection logic in words, with the thresholds to tune and the false positives to expect, so each rule can be written in Sigma and tested against ATT&CK v20.0 mappings. Tune every threshold against your own build history before alerting.

Image creation without a pipeline job

Flag image creation events on a container host that cannot be tied to a recorded CI pipeline job or an approved build request within the same time window. Correlate Image Creation records with the build system's job log by host name, image digest and build identifier. The main signal is the unmatched record, so check whether your pipeline stamps a build identifier into image metadata. Expect false positives from CI runners that build outside the tracked system and from developers who run local builds on shared hosts. Allowlist known runner hosts explicitly rather than broadly.

Build activity from unexpected service accounts

Alert when a build or image creation event is initiated by an account that is not in the approved build service account list for that host. Compare the initiating account against directory group membership and against the accounts your pipeline is documented to use. Privileged accounts that can run builds should be rare, so any build from a human administrator account on a production host deserves review. False positives come from platform engineers running manual rebuilds during incidents, so require a change or incident reference for those runs.

Build-related connections to unapproved destinations

Look for Network Connection Creation events from a build process to registries, package sources or endpoints that are not on your approved list. Build jobs normally pull base images and dependencies from known hosts, so a new destination is a useful pivot. Keep the baseline per build runner and review destinations that appear only once. Expect false positives from new upstream package mirrors, vendor-hosted base images and dependency updates, so route first-seen destinations to a review queue before paging anyone.

Image creation bursts outside maintenance windows

Set a threshold on the count of image creation events per host within a rolling window, and alert when the count exceeds the historical maximum for that host outside its scheduled maintenance window. Tune the window length and the count against at least several weeks of baseline data, since scheduled rebuilds and nightly base image refreshes produce regular bursts. Expect false positives from scheduled rebuilds that are moved, from security patch rebuilds triggered by an advisory, and from clock skew between hosts. Confirm the maintenance calendar with the platform team before enabling the rule.

How to validate that the T1612 detection fires

This sequence proves that the T1612 detection fires on a non-production container host, that each expected event reaches the SIEM, and that the results are recorded against a named ATT&CK version so the detection can be re-tested after every rule change.

  1. Define the test scope and boundaries

    The detection owner and the platform team agree in writing which non-production container host, namespace and build pipeline the test may touch, and which actions are out of bounds. The scope also names the ATT&CK technique (T1612 Build image on host), the target ATT&CK version and the telemetry sources expected to be in play, such as Network Connection Creation and Image Creation. The step is done when the scope document is signed off by both the owning team and the security lead, and nothing in it touches production images or registries.

  2. Agree the emulated behavior with the owning team

    Security engineers and the owners of the container platform agree, in plain language, the behavior the emulation will represent: a build activity on a host that the team would not normally expect to build images there. The owners confirm which alerts they expect to see, which logs they can read, and who watches the lab while it runs. Describe the behavior in words only, without commands or payloads, and keep a written record of the agreed expectations. The step is complete when each expected event has a named owner and a named SIEM location.

  3. Run the emulation inside the cyber range

    A tester runs the agreed emulation inside the private cyber range against the non-production container host, following the scope document and within the time window the owners approved. A second person keeps a timestamped log of what was executed and when, so that events in the SIEM can be matched to test actions later. The step is done when the run ends, the test log is saved, and the host is returned to its baseline state for the next run.

  4. Confirm each expected event reaches the SIEM

    The analyst checks, event by event, that the telemetry expected for T1612 (such as Network Connection Creation and Image Creation) arrived in the SIEM, for example in Wazuh or Security Onion, with the right host, container and timestamp fields. Missing or malformed events are logged as collection gaps, separate from detection gaps, because they point to agent, log forwarding or parsing problems. The step closes when every expected event is either present or recorded as a gap with a suspected cause.

  5. Measure latency, fidelity and gaps

    The analyst compares the time of each test action with the time the detection alert was created, which gives detection latency, and reviews each alert for fidelity: whether it fired on the intended behavior, whether it fired on unrelated activity, and whether it included enough context to triage. Any action that produced no alert is recorded as a detection gap with the telemetry that was available. The step is done when the results are in a table with latency, fidelity and gap entries for every test action.

  6. Re-run the test after rule changes

    Each time a detection rule, decoder, threshold or data source changes, the same emulation is repeated on the same non-production host so results can be compared with the previous run. The team compares the new results with the saved baseline and confirms that fixes closed the earlier gaps without creating new false positives. The step is complete when the re-run shows the expected alerts and the comparison is filed with the rule change record.

  7. Log results against the ATT&CK version

    The team records each validation run with the ATT&CK version it targeted, the rule identifiers, the technique and sub-technique mapping, the telemetry sources and the outcome. Because ATT&CK releases can rename, deprecate or revoke techniques, the record states the version used, so a later reviewer can tell whether a mapping still applies. The step is done when the record is stored with the detection documentation and linked from the page used for audit evidence.

Preventive controls that limit T1612

Two ATT&CK mitigations shape how hard it is for an adversary to build an image on a container host. Audit gives you the record needed to spot image builds, while Privileged Account Management restricts who can run the build tooling in the first place. Scope both to the hosts that run container workloads and keep the evidence that proves they work.

Audit (M1047) scope for build activity

The Audit mitigation is about making sure the host records the activity that a build generates, so detections have something to read. For T1612, confirm that process creation and network connection events are logged on every container host, and that build tooling invocations are included rather than filtered out as routine. Check that logs are forwarded off the host, since a local log an attacker can edit does not support investigation. Ask your platform team to show a sample build event reaching your SIEM.

Audit evidence to retain

Keep configuration evidence showing which audit rules or logging settings apply to container hosts, who approved them, and when they last changed. Retain a periodic export of sample events from each host class so an assessor can see that logging was working during the review period. Record the retention period you chose and the storage location for those logs. Without this evidence, a claim that audit is in place cannot be verified.

Privileged Account Management (M1026) for build rights

The Privileged Account Management mitigation limits which accounts can run container build or image tooling on a host. Build capability is powerful because it can package and place code on a machine, so treat it as a privileged function. Confirm that only named operators and approved CI service accounts hold it, and that interactive use of those accounts is logged. Review the list on a set schedule and remove accounts that no longer need the role.

Privileged account review evidence

Keep the current list of accounts with build rights, the owner of each entry, and the record of each access review with its reviewer and outcome. Retain approvals for any grant made outside the standard process. Include CI service accounts, since they are often overlooked during reviews. Auditors and internal reviewers will ask for this list alongside a sample of privileged logins, so keep both in the same evidence folder.

Separate build and runtime hosts

Where the design allows, keep image builds on dedicated build hosts or build runners instead of production container hosts. This reduces the number of machines where the build capability exists and makes any unexpected build event on a production host stand out. Confirm with your platform team which hosts are permitted to build, and alert on builds elsewhere. Document this boundary in the architecture record so it survives staff changes.

What the SOC does when a T1612 alert fires

The first decision on a T1612 alert is whether the image build is authorized, so the SOC should start by checking the build against the approved pipeline. Compare the build event with the CI/CD system's run records for the same time window, confirm the pipeline definition and commit that should have produced the image, and check whether the build agent is one your platform team manages. If no approved run explains the build, treat it as a suspicious event immediately. Next, identify the account and host that executed the build: the user or service account in the container runtime or orchestrator audit log, the node where the build ran, and the source of any remote API session. Record the account's recent role changes and whether it is a privileged account, because that determines how far the investigation must widen.

Preserve evidence before anything changes. Export the image creation events, the image digest and manifest, the build log and the Dockerfile or build context referenced by the event, and copy them to write-once storage with hashes recorded. Pull the host's container runtime and orchestrator logs for the same window, and snapshot the node's relevant state where your forensic procedure allows it. Check outbound connections from the build host and any registries it contacted using network connection telemetry, looking for destinations that do not appear in your baseline for build traffic. Confirm which image tags or deployments reference the new digest, so the SOC knows whether anything has already been promoted.

For containment, prefer restricting the account's privileges, blocking the suspect host's outbound egress, and cordoning the node from new scheduling over deleting the container or powering the host off, since termination can destroy memory and runtime evidence. Isolation decisions should weigh whether the host runs production workloads, which the platform owner must confirm before isolation. Escalate to incident response once the build is confirmed unauthorized or the outbound review shows unexplained destinations, and hand over the preserved evidence, the timeline, the affected accounts and the list of images and deployments that reference the suspect digest. Agree in advance with your incident response lead who may approve isolation out of hours.

Rehearsing T1612 detection in a private cyber range

The range should mirror the container hosts your organization operates, but sit fully isolated from production networks, credentials and log pipelines. The goal is to generate realistic telemetry for T1612 Build Image on Host on Containers while keeping every exercise contained. Confirm the range design with your own security and network teams before any build activity runs.

  • Container hosts: Provision container hosts that match your production runtime and build tooling, with the same logging agents and audit configuration you intend to deploy.
  • SIEM: Run Wazuh as the central collector and rule engine, with agents on each host and a separate index or tenant for range data so exercise events never mix with production records.
  • Network sensors: Place Zeek or Suricata on the range segment to record network connection creation, so detections can be compared across host and network telemetry.
  • Isolation controls: Confirm that the range has no routes to production, no shared identity sources and no reused secrets, and document these checks in writing.
  • Baseline capture: Record a clean baseline of normal build activity before injects begin, so analysts can tell routine pipeline events from exercise activity.

Before the first exercise, ask your platform team to confirm which Wazuh rule sets, decoders and audit settings they plan to use, and which Zeek or Suricata versions they will run.

Practitioner questions about detecting T1612

How do I separate legitimate build pipelines from attacker-driven image builds?

Start by building an inventory of every process, service account and host that is expected to build container images, then alert on builds that fall outside that baseline. Legitimate pipelines usually run under named service identities, from known runner hosts, and against known repositories and Dockerfile paths. Attacker-driven builds tend to show a different parent process, an unfamiliar user context, a build originating from an interactive session or a base image pulled from an unexpected registry. Treat the baseline as a living artifact: review it whenever a pipeline is added, moved or retired. Expect some noise in the first weeks, and tune by allowlisting specific, documented pipeline identities rather than broad host ranges.

How should detection handle ephemeral CI runners that disappear after each job?

Ephemeral runners make host-based baselines unreliable, so anchor detections to the identity and the build event rather than to a long-lived host name. Forward process and network telemetry from the runner image or its orchestrator in real time, because an ephemeral host may be gone before a periodic agent check-in. Keep runner provisioning logs, image build records and orchestrator audit trails for long enough to correlate after the fact. Confirm with your platform team which of these sources actually exist in your environment, since runner designs vary widely.

Which telemetry should I prioritize first for T1612 on containers?

Prioritize Process Creation and Network Connection Creation, since these are the data components ATT&CK references for this technique and they are the signals most likely to reveal an image build starting outside the expected pipeline. Image Creation events from the container runtime or build tooling add the context of what was built and from which base. Collect these first on the hosts and runners that have build privileges, then extend coverage to the rest of the fleet. Verify each source against the ATT&CK version you target, because data component mappings change between releases.

How do I version detection rules against ATT&CK releases without breaking coverage?

Record the ATT&CK version each rule targets in its metadata, and check that version against the MITRE updates page whenever a new release lands. ATT&CK v18 moved technique detections into detection strategies and analytics and deprecated data sources, and later releases can rename, deprecate or revoke techniques. Maintain a mapping file that links each rule to its technique, detection strategy and data components, and diff that file against the STIX bundle for each new version. Keep rules in version control with tests, so a change in ATT&CK content produces a reviewable pull request instead of a silent gap.

How can I measure detection coverage for T1612 without guessing?

Measure coverage by testing, not by counting rules. For each detection, define a documented test in a private cyber range, run it, and record whether the alert fired, how long it took and which fields were populated. Track the percentage of in-scope build hosts that forward the required telemetry, and track the share of expected pipeline builds that match the baseline. Report these as measured results with dates and the ATT&CK version used. Avoid presenting a rule count as coverage, because a rule without working telemetry proves nothing.

Which ATT&CK mitigations should I document for T1612, and who owns them?

The mitigations ATT&CK maps to this technique are Audit and Privileged Account Management. Audit ownership usually sits with the security engineering team, which defines which build and runtime events are logged and retained. Privileged Account Management usually sits with identity or platform administration, which controls who can run builds, push images and change runner configuration. Document both in a shared control record that names an owner, a review cadence and the evidence that proves the control works. Confirm the ownership split with your own governance model, since responsibility varies by organization.

How DeployOpen builds T1612 detections and range scenarios

DeployOpen starts by mapping where image builds happen in the client's own environment before writing any rule. That means listing the build hosts, CI runners and container platforms that can create images, the service and human identities allowed to start a build, and the log sources that already exist, such as container runtime events, orchestrator audit logs and host audit records. The written scope should name the ATT&CK version the detections target, because the technique mappings and data component names change between releases. Confirm this with the client's security team and record it in the scope document. Teams should also decide early which build activity is expected, such as approved pipelines, so that the detection logic separates routine builds from builds launched outside the pipeline.

Next, DeployOpen rebuilds the relevant part of the client's pipeline inside a private cyber range and runs agreed build scenarios under a labelled test identity. The team checks whether Image Creation and Network Connection Creation events are captured with enough context to link a new image to the host, user or process that produced it, and whether outbound connections made during a build, such as pulls of base images from registries, are visible to the monitoring stack. Illustrative example: if a build starts on a host that is not in the approved list, the rule should raise an alert within the agreed triage window, and the range log shows which fields made that match possible. Gaps found in this step feed back into the rule design.

The handover covers the detection rules in the format the client's SIEM expects, tuning notes that explain expected false positives, validation records showing which scenarios fired and which did not, and triage runbooks for the security operations team. On the mitigation side, DeployOpen maps the work to Audit (M1047), so the client can confirm that build and registry events are retained, and to Privileged Account Management (M1026), so the client can review which accounts can build images on privileged hosts. DeployOpen prepares this evidence under a fixed written scope with agreed timelines. Independent auditors, not DeployOpen, decide whether any control meets a given assessment requirement.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.