skip to content

When Two Mappings Differ

Two competent people mapping the same intrusion to technique identifiers produce different lists, and the gap is rarely accuracy. Interviewers use it to see whether you argue lists or fix conventions.

on this pageshow

explore

questions

4

Should an ATT&CK mapping credit a credential-access step the write-up only implies?

level: middleimportance: must knowfreq 61%

answer

  1. entailed is not the same as plausible
  2. something had to read the mounted token
  3. mark it, do not smuggle it
  4. boilerplate inflates every mapping alike

basics

~10 s

Credit it only when the described outcome entails the step, and only as a row marked inferred against the sentence behind it. Silence is a fact about the author, not the intrusion.

solid answer

~50 s

Separate *entailed* from *plausible*. A published account says an exploit gave a shell inside a web pod and that, minutes later, that pod's service account was listing pods across every namespace. It never says the projected bearer token at the pod's mounted secret path was read — but those API calls cannot happen unless something read it, often the client library doing it automatically, which is why the author saw nothing worth writing. That step is entailed, so crediting Unsecured Credentials (`T1552`) is defensible; a step that is merely one of several routes to the same outcome is not. Either way, mark the row inferred and cite the sentence behind it. And keep the habit narrow: if you credit every entailed precondition, every mapping fills with the same boilerplate and stops telling a reader what the source actually contained.

code

text · 10 lines
text
published account (verbatim):
  'The exploit returned a shell inside the web pod. Minutes later that
   pod's service account was listing pods in every namespace.'

mapping A                                mapping B
  T1190  Exploit Public-Facing App         T1190  Exploit Public-Facing App
  T1552  Unsecured Credentials  [inferred] --     (token read never stated)
  T1078  Valid Accounts                    T1078  Valid Accounts
  T1613  Container and Resource Discovery  T1613  Container and Resource Discovery
  ...                                      ...

go deeper

for a junior

Know that a mapping row should be traceable to a sentence, and that a step nobody wrote down is either left out or clearly labelled as inferred. Never add an identifier just to make the story flow.

for a middle

Be ready to argue the entailed-versus-plausible test on a concrete case, including why a mounted container token can be read with no deliberate act by the operator and so goes unmentioned in a thin write-up.

for a senior

Show judgment about how far inference should run: state the convention you would apply, defend why merely plausible steps get prose rather than an identifier, and explain how unmarked inference hardens into false fact once copied onward.

for a principal

Take the position that row-level provenance — source sentence, inference mark, framework version — is what makes mappings from many hands mergeable at all, and be able to say what you give up by mandating it.

## The situation You are mapping a thin public write-up: somebody ran a public proof-of-concept against an internet-facing service running in a Kubernetes cluster, got code execution inside the pod, and shortly afterwards that pod's service account was enumerating pods across all namespaces through the cluster API. The author — not a specialist, writing up something that took an afternoon — never mentions credentials at all. Two mappings come back. One carries a Credential Access row for the mounted token; the other does not. The obvious reading, *they disagree so one is wrong*, is the wrong answer. ## Entailed versus plausible The useful distinction is not "stated versus unstated". It is: - **Entailed** — the described outcome is impossible without the step. A pod's service account cannot authenticate to the cluster API unless the bearer token mounted into the container was read from its file path and presented. If the outcome happened, the step happened. - **Plausible** — the step is one of several routes to the described outcome. If the account said only that the cluster API was called with valid credentials, the operator might have used the pod's token, a token they already held from elsewhere, or an unauthenticated endpoint. Nothing is entailed. Crediting an entailed step is a defensible inference about the world. Crediting a plausible one is a guess about the adversary dressed as a reading of the text. ## Why the author's silence is not evidence of absence In a container, the projected service-account token is placed in the filesystem by the platform; a client library picks it up without the operator typing anything. The "credential access" here may have involved no deliberate act at all. That is precisely why a thin write-up omits it: from the author's chair nothing interesting happened. Silence is a property of the source, not of the intrusion — which is why both mappings can be faithful, and why the difference must be visible rather than smoothed away. ## The convention that makes both mappings usable Row-level provenance: 1. Every row cites the sentence it rests on. 2. A row with no sentence behind it is marked **inferred**, with the sentence that entails it. 3. Merely plausible steps get no row. If they are worth saying, they belong in prose, phrased as a possibility, not as an identifier. With that convention, the two mappings above are no longer in conflict: one includes a marked inferred row and the other omits it, and any reader can see exactly which choice was made and on what basis. ## The cost of crediting everything There is a strong pull towards completeness — a mapping with gaps looks like sloppy work. Resist it. Almost every technique entails predecessors: using an account entails obtaining it; running a command entails execution; reaching a host entails reaching the network. Credit them all and every mapping converges on the same long, uninformative list. The value of a mapping is that it is a compressed statement of what one source contained; boilerplate destroys exactly that. There is also a direction-of-claim problem. An identifier presented without a mark reads as observed behaviour. Once a mapping is copied into somebody else's summary, the mark is what stops an inference from hardening into a stated fact about the intrusion — and the thinner the source, the more of the narrative is inference, so the more the marks matter. ## What a good answer sounds like "Both mappings are faithful to the same text. The token read is entailed by the API calls made under that service account, so I would carry it as a marked inferred row rather than either dropping it or asserting it. What I would not do is add rows for steps the outcome does not require — that turns a statement about the source into a story about the adversary, and once it is copied onward nobody can tell which is which."

  • The write-up is a public proof-of-concept run by an unskilled operator. Does that change your inference?
    It changes how much silence to expect, not the logic. A thin write-up omits far more, so a larger share of any narrative you build is inference and the marks matter more. It also explains the silence: the exploit script and the client library handle the mounted token automatically, so from the author's chair there was no distinct credential step to describe.
  • What would make the inferred row wrong rather than merely uncertain?
    If the outcome could be reached without it. Suppose the account said only that the cluster API was called successfully — the caller could have used a token obtained elsewhere, or an endpoint requiring no authentication. Then nothing is entailed and the row is a guess about the adversary. The test is always: is there any way the stated outcome happened without this step?
  • Why not simply credit every precondition an outcome entails?
    Because nearly every technique entails predecessors — using an account entails obtaining it, running a command entails execution. Credit them all and every mapping converges on the same list, which no longer tells anyone what this particular source contained. Reserve inferred rows for steps that carry real information about how this operator worked.

saying these in an interview costs you the question

  • Adds the row silently so the narrative reads complete
  • Refuses all inference and calls the other mapping wrong
  • Treats the author's silence as proof the step did not happen
  • Credits every precondition an outcome could require
  • Cannot distinguish an entailed step from a plausible one

context

open as a page

Two ATT&CK mappings of the same intrusion write-up differ — is one of them wrong?

level: juniorimportance: should knowfreq 52%

basics

~10 s

Not necessarily. An ATT&CK mapping is a claim about the account you read, not about the intrusion itself. Two people differ mainly because they apply different rules to steps the author never wrote down.

open as a page

A step in an intrusion write-up has no matching ATT&CK technique — what do you do?

level: middleimportance: should knowfreq 37%

basics

~20 s

Leave it unmapped and say so. ATT&CK catalogues adversary behaviour, so much of any account — conditions, motive, business context, the author's speculation — carries no identifier. Forcing the nearest one asserts a behaviour the source never describes.

open as a page

Two accounts of the same intrusion map to 6 and 19 ATT&CK techniques — what does the gap measure?

level: seniorimportance: nice to knowfreq 29%

basics

~20 s

It measures the accounts, not the intrusion: how much each author could see, how much they chose to write, how far each mapper inferred, and how much of each text was behaviour at all. It says nothing about adversary sophistication.

open as a page