How I set up a research box

Isolation first, then tooling. A research box that is not cleanly separated from everything you depend on is a liability, not an asset. Here is what I actually do.


There is a category of security research work that is genuinely hazardous to run on a machine you depend on. Executing unknown binaries. Fuzzing software until it crashes. Running network services that intentionally listen for hostile input. For all of this, you need a machine — or at minimum a sufficiently isolated environment — that you can break without consequence, rebuild without ceremony, and trust completely within its own boundary.

What "trust completely" means in this context: you know everything that is on the machine, you know where it came from, and you are not surprised by its behaviour. This is achievable for a dedicated research host in a way that it is not achievable for a general-purpose workstation that also holds your email, your work documents, and the things you cannot afford to lose.

The hardware decision

I use a Mac Mini as a dedicated research host, separate from the machines I use for everything else. The decision in favour of dedicated hardware over VMs-on-the-main-machine was deliberate: a VM escape, however unlikely, is not the scenario I want to reason about. Dedicated hardware makes the isolation boundary physical rather than software-enforced, and for work that involves executing potentially malicious code or probing vulnerable services, physical isolation is the more honest model.

The Mac Mini is small enough to sit unobtrusively on a shelf, draws little power, and is powerful enough for the work I do with it. It is not connected to the network used by the rest of the house. It connects to its own VLAN, with firewall rules that prevent it from reaching anything I care about. If something goes wrong with it, the blast radius is contained.

Snapshots before anything interesting

The most important habit for a research box is snapshotting before anything interesting happens. Before you install research tooling that might leave artefacts. Before you execute a sample. Before you start a fuzzing campaign that will modify the target's state in ways you may not fully understand. The snapshot is the clean baseline. If the experiment goes wrong — if the target crashes in a way that corrupts state, if the research tooling installs something unexpected, if you simply lose track of what you have done — you restore the snapshot and start again.

VMs are excellent for this because snapshots are first-class operations. A VM hypervisor on the research host lets you maintain multiple clean environments for different purposes: one for kernel work, one for network analysis, one for whatever the current project requires. Each can be snapshotted independently. Each can be restored in seconds.

Tooling choices

The tooling I install on the research box is the minimum necessary for the current work, plus a small set of permanent utilities. Permanent: Wireshark, tcpdump, a current version of Python, a C compiler, a debugger. Per-project: whatever is specific to the current investigation. I document what I install and why, because the history of what is on the machine is part of understanding what it is doing.

No cloud sync. No automatic updates that might change tool behaviour mid-investigation. No browser extensions that phone home. The research box should be, as nearly as possible, a known quantity.

Keeping research separate from production

The discipline here is not just technical. It is habitual. The research box is for research. When I am on it, I am doing research. Its outputs — pcaps, logs, notes — stay on it until I have reviewed and sanitised them. The separation is partly about containment and partly about mental clarity: working on a dedicated machine creates a context that cues the right kind of attention. The 2am kernel sessions happen on the research box. The email does not.

A research box is a space you can afford to break. The value is in what it lets you do with confidence — knowing that the blast radius is bounded, the clean state is recoverable, and the only machine at risk is the one you set up for the purpose. PING freely. The network is isolated for exactly that reason.