Lion Cipher Lab

Attribute a Go-compiled binary by its build toolchain (recover what stripped strings hide)

Why it matters

A growing share of commodity and targeted malware is written in Go, and Go quietly breaks the reflexes analysts built on C/C++ Windows malware: the binary is statically linked so there is no informative import table to read, the Go runtime bloats it, and `strings` output drowns in runtime noise. Analysts who don't adjust conclude 'it's packed / I can't tell what it does' and stall. But Go binaries carry rich internal structure — function names, source paths, the exact compiler version, the developer's module namespace, and sometimes VCS build info — that survives stripping and can be…

What you'll learn

Steps in this lab

  1. Why Go breaks your normal triage reflex
  2. Confirm the Go toolchain is installed
  3. Write a tiny, benign Go program with recognisable names
  4. Build two versions: normal, and fully stripped
  5. Watch naive triage fail on the stripped binary
  6. Recover build metadata that survives stripping: `go version -m`
  7. Recover function names and source paths from the pclntab with GoReSym
  8. Feed the symbols back into Ghidra (described)
  9. The attribution judgment — and the false-flag caveat

Open the full interactive lab →