skip to content

What does calling malware 'fileless' actually claim about it, and what does it not claim?

level: juniorimportance: must knowfreq 70%

answer

  1. a claim about the executable
  2. data at rest, code in memory
  3. an interpreter does the converting
  4. durable does not mean executable
  5. not a synonym for traceless

basics

~20 s

Fileless claims only that the code which ran was never a normal executable file launched from disk; it arrived as data and became code in memory. It does not claim that nothing was written to disk.

solid answer

~50 s

The word is an assertion about the executable, not about the disk. In a fileless chain the payload travels as inert data - a base64 blob inside a scheduled job entry, a value in a configuration store, a long environment variable - and something already permitted on the host, usually a language runtime, turns that data into running code. Almost every real case still writes something durable, because the data has to be parked somewhere and something has to invoke it again. What is missing is a program file you could hash, block by hash, or refuse with an executable allowlist. So `fileless` is not a synonym for `left no trace` and not a synonym for `a reboot fixes it`. The only variant where the reboot claim holds is the deliberately disposable payload that stores nothing and expects to be delivered again.

go deeper

for a junior

Be ready to state the claim in one sentence: no program file was launched from disk, the payload travelled as data. Do not overreach into 'nothing was written' - that is the trap in the question.

for a middle

Explain the data-to-code transition: which everyday component does the converting, and why a durable data record and a trigger usually still exist even when no executable does.

for a senior

Show you can hold three properties apart - fileless, persistent and privileged are independent. Be able to say what would have to be true for a reboot to have genuinely ended the operator's code.

for a principal

Own the vocabulary across an organisation. Insist that a classification tells an owner which control classes were bypassed and which still apply, rather than becoming shorthand for a scary unbounded incident.

## The claim the word makes `Fileless` is a claim about **the executable**, and only about the executable. It says: the code that ended up running was never a program file sitting in a directory that somebody double-clicked or that a launcher started by path. It says nothing whatsoever about whether bytes were written to disk. That distinction matters because it decides which control classes are in play. A conventional payload is an ELF or PE on disk: it has a path, a size, a hash, an owner and a modification time, and a whole family of controls key off exactly that - block by hash, allow only signed programs, allow only programs in these directories, refuse execution from a writable mount. A fileless payload is specifically shaped to have none of those handles, because at rest it is not a program at all. ## What the payload is at rest At rest it is **data**. Three shapes cover most of what operators actually do: - **A blob inside a job entry.** A scheduled job record holds a long encoded string and a line that decodes it and hands the result to a runtime that is installed because the application needs it. The file on disk is a job record - a configuration artefact, not a program. - **A value in a configuration store.** A row in the application's own settings table, a key in a shared cache, a field in a service registry. The application already reads that store, and the store is not treated as executable content by anything. - **An environment variable or a startup script fragment.** A very long value carried into the process at launch and evaluated once the runtime is up. In all three, the transition from data to code happens **inside a process the environment already permits**. Nothing new appears as an image on disk. ## Why memory-only code still needs something durable Memory does not survive the process, let alone the machine. If the operator wants the code back after a service restart or a reboot, something durable must invoke it. That something is the **trigger**, and the trigger is the part of the chain that is hardest to make fileless: it has to be a record that the operating system or the application reads on its own initiative, which means it exists somewhere with a path, an owner and a timestamp. So the honest description of a typical fileless intrusion is: *no program file, but a durable data record and a durable trigger*. Calling that `nothing touched disk` is simply wrong, and it is the wrong answer this topic exists to correct. ## The one case where the reboot claim is true There is a genuine variant where nothing durable is planted: the operator does not want persistence at all. A commodity crew mass-exploiting a single flaw in an internet-facing application has a cheaper option than persistence - **come back through the same flaw**. Building a trigger costs work and gives the estate something to find; re-exploiting costs one request. For that operator, a payload that lives only in the process and dies with it is the *correct* design, not a limitation. When that is what happened, the reboot really did end the code. It did not close the way in, and everything the process could read as the service account was already read. ## Why the label is still useful Used precisely, `fileless` tells you which handles you do not have: no image hash, no signature to check, nothing for an executable allowlist to refuse. It also tells you where the handles you *do* have live - the data record, the trigger, and the interpreter that has to be present for any of it to work. Used imprecisely, it collapses into `spooky and untraceable`, which is the reading that gets a service owner told the wrong thing. ## Adjacent labels not to conflate `Fileless` is orthogonal to privilege: it does not imply kernel access, and most of it runs as an unprivileged service account. It is orthogonal to sophistication: mass-market crimeware uses it because it is cheap, not because it is advanced. And it is orthogonal to persistence: a fileless payload can be extremely persistent (a trigger plus a data blob that is re-decoded on every boot) or entirely disposable. Name the three properties separately and the classification stops being an argument.

  • If the body sits in a scheduled job entry as base64, why do people still call that fileless?
    Because the file that exists is a configuration record, not a program. There is no ELF or PE to hash, to block by hash, or to refuse with an executable allowlist, and the job record itself is the kind of file the host is supposed to have. The executable only exists after a runtime decodes the string in memory.
  • Which part of a fileless chain is hardest for an operator to keep fileless?
    The trigger. Memory does not survive a restart, so anything that wants to come back needs a durable record the system reads on its own - a job entry, a unit, a profile fragment, an application setting. That record has a path, an owner and a timestamp, so operators either accept it or drop persistence entirely and plan to re-enter through the original flaw.
  • Does fileless imply the operator has administrative or kernel privilege?
    No. The technique is about how code is delivered and started, not about what it can do. Most of it runs as whatever unprivileged account the exploited application uses, and the payload inherits exactly that account's reach. Kernel-level concealment is a separate and far more expensive choice.

A recipe card in a drawer is not a meal. It becomes one only when a cook reads it. Fileless code is the card; the interpreter is the cook - and the drawer is still a drawer, sitting on disk.

saying these in an interview costs you the question

  • Says fileless means nothing was ever written to disk
  • Treats fileless as a synonym for untraceable
  • Assumes a reboot always clears a fileless payload
  • Thinks fileless requires kernel or administrator privilege
  • Confuses fileless with advanced or state-sponsored

context