Tails

Tails amnesic live OS. USB installation, Tor routing, persistent storage, MAC spoofing, metadata removal, and operational usage for privacy-critical tasks.

#Overview

#What Is Tails

Tails (The Amnesic Incognito Live System) is a Debian-based live operating system designed to preserve privacy and anonymity.

Core principles:

Principle Description
Amnesia Every reboot wipes all session data from RAM - nothing persists unless explicitly configured
Tor-only All network traffic is forced through Tor at the OS level - no application can bypass it
Live USB Boots entirely from USB - leaves no trace on the host machine's disk
No disk writes The host hard drive is never mounted or touched by default
Hardened Ships with pre-configured security tools, no telemetry, minimal attack surface

Tails achieves amnesia by running entirely in RAM. On shutdown, the RAM is overwritten to prevent cold boot recovery of sensitive data.

#Architecture

┌──────────────────────────────┐
│         Tails Desktop        │
│  Tor Browser, Thunderbird,   │
│  KeePassXC, OnionShare, MAT2 │
├──────────────────────────────┤
│     All Apps → Tor Network   │
│   (iptables enforced rules)  │
├──────────────────────────────┤
│   Debian Live (in RAM only)  │
├──────────────────────────────┤
│   USB Stick (read-only OS +  │
│   optional encrypted persist)│
└──────────────────────────────┘

Key design decisions:

  • Firewall rules block all non-Tor traffic at the kernel level via iptables/netfilter
  • DNS is resolved through Tor (no DNS leaks possible)
  • System clock is set via Tor consensus to avoid time-based fingerprinting
  • MAC address is spoofed automatically on boot before any network connection

#Installation

#Download and Verify

Always verify the download to prevent supply-chain attacks. Tails provides an OpenPGP signature for every release.

# Download the USB image
wget https://tails.net/install/download/tails-amd64-X.Y.img

# Download the OpenPGP signature
wget https://tails.net/install/download/tails-amd64-X.Y.img.sig

# Import the Tails signing key
wget https://tails.net/tails-signing.key
gpg --import tails-signing.key

# Verify the image
gpg --verify tails-amd64-X.Y.img.sig tails-amd64-X.Y.img
# Must show "Good signature from Tails developers"
# Fingerprint: A490 D0F4 D311 A415 3E2B B7CA DBB8 02B2 58AC D84F

Alternative: use the Tails website's JavaScript verification tool in-browser, which computes a SHA-256 hash client-side and compares against the expected value.

#USB Creation - Linux

# List block devices to find your USB
lsblk

# Write image directly to USB (replace /dev/sdX)
# WARNING: this erases everything on the target device
sudo dd if=tails-amd64-X.Y.img of=/dev/sdX bs=16M status=progress oflag=direct

# Sync and safely remove
sync

Alternatively, use GNOME Disks ("Restore Disk Image" function) for a GUI approach.

#USB Creation - Windows

Tails replaced balenaEtcher with Rufus in 2025 due to privacy concerns (Etcher was sending the image filename, USB model, and user IP to the Balena company).

Step Action
1 Download and install Rufus
2 Select the Tails .img file
3 Select your USB drive (minimum 8 GB)
4 Click Start, wait for write and verification

Do not use balenaEtcher. It leaks identifying telemetry.

#USB Creation - macOS

Tails still documents balenaEtcher for macOS but recommends dd or Raspberry Pi Imager if you want to avoid Etcher telemetry.

# Identify the USB device
diskutil list

# Unmount the USB
diskutil unmountDisk /dev/diskN

# Write the image (use rdiskN for raw device - much faster)
sudo dd if=tails-amd64-X.Y.img of=/dev/rdiskN bs=16m

sync

Minimum USB requirements: 8 GB capacity. Recommended: 16 GB or larger to allow persistent storage.

#First Boot

#Boot Process

Step Action
1 Insert the Tails USB and reboot the machine
2 Access the BIOS/UEFI boot menu (common keys: F12, F2, Esc, Del)
3 Select the USB drive as boot device
4 Tails GRUB menu appears - select "Tails" (default) or "Tails (Troubleshooting Mode)"

If the machine uses Secure Boot, you may need to disable it in BIOS. Tails does not ship with signed bootloaders for all hardware.

#Welcome Screen

The Tails Welcome Screen appears on every boot:

Setting Description
Language & Region Sets UI language, keyboard layout, and locale
Persistent Storage Unlock existing persistent volume (if configured)
Additional Settings Access admin password, MAC spoofing, network config

Additional Settings options:

Setting Default Detail
Administration Password Disabled No sudo/root. Enable to install packages or run commands as root
MAC Address Anonymization Enabled Spoofs MAC before any network activity
Network Configuration Auto-connect to Tor Options: auto-connect, configure bridge, or disable networking (offline mode)

#Connecting to Tor

After the Welcome Screen:

Mode Description
Direct connection Default. Tails connects to the public Tor network
Bridge mode If Tor is censored in your location, configure bridges
Offline mode No network activity at all

The Tor Connection assistant guides you through:

Step Action
1 Automatic Tor connection attempt
2 If blocked, select "Configure a Tor Bridge"
3 Select bridge type (obfs4, Snowflake, meek-azure, custom)
4 Test connection
5 Tor circuit established, desktop is ready

The notification area clock icon turns green with an onion symbol when Tor is fully connected.

#Persistent Storage

#Configuring Persistence

Persistent Storage creates an encrypted (LUKS) partition on the same USB drive. Data stored here survives reboots.

# Create persistent storage from:
# Applications > Tails > Persistent Storage

# The tails-persistence-setup CLI tool was removed
# in newer versions. Use the GUI application.

You set a passphrase during creation. This passphrase encrypts the LUKS partition. Use a strong passphrase - at least 7 random diceware words recommended.

The persistent volume is mounted at:

/home/amnesia/Persistent
/live/persistence/TailsData_unlocked

#What Can Be Persisted

Feature Path / Description
Personal Data ~/Persistent - your files, documents, downloads
GnuPG Keys ~/.gnupg - GPG keypairs and trust database
SSH Client ~/.ssh - SSH keys and known_hosts
Wi-Fi Passwords NetworkManager saved connections
Browser Bookmarks Tor Browser bookmarks only (not history or cookies)
Thunderbird Email config, accounts, PGP keys, local mail
KeePassXC Password database files
Electrum Bitcoin Wallet data
Dotfiles ~/.bashrc, ~/.vimrc, etc. via dotfiles feature
Additional Software APT packages to auto-install on boot
Printers CUPS printer configuration
Network Connections All saved NetworkManager profiles

#Persistence Security Notes

  • The persistent volume is not hidden - its existence is visible on the USB
  • If you are forced to decrypt, all persistent data is exposed
  • Tails does not support hidden volumes (unlike VeraCrypt)
  • Backup your persistent data - USB drives fail
# Backup persistent storage to another encrypted drive
# Mount an external encrypted drive first, then:
rsync -av --progress /home/amnesia/Persistent/ /media/amnesia/backup/

# Delete persistent storage completely
# (Recreate from Persistent Storage settings)
# This securely wipes the LUKS header, making data unrecoverable

#Tor Configuration

#Bridges and Pluggable Transports

Bridges are unlisted Tor relays used to circumvent censorship. Pluggable transports disguise Tor traffic as other protocols.

Transport Disguise Method Best For
obfs4 Scrambles traffic to look random Evading DPI that blocks Tor
meek-azure Tunnels through Microsoft CDN Countries blocking Tor + obfs4
Snowflake Uses WebRTC peer proxies Censored networks, easy to use

Configure bridges in Tails:

Step Action
1 Welcome Screen - Additional Settings - Network Configuration
2 Select "Configure a Tor Bridge"
3 Choose built-in bridge type OR enter custom bridges
# Custom bridge format:
obfs4 IP:PORT FINGERPRINT cert=CERT iat-mode=0

Getting custom bridges:

# Via Tor Project website
https://bridges.torproject.org

# Via email (from Gmail/Riseup only)
# Send email to [email protected]
# Body: get transport obfs4

#Circuit View and Tor Control

Tor Browser includes a circuit display showing the path your traffic takes.

You > Guard Node (entry) > Middle Relay > Exit Node > Destination
      [Country A]           [Country B]    [Country C]

Each tab in Tor Browser uses a different circuit. Click the padlock icon in the URL bar to see the current circuit and request a new one.

# If admin password is set, you can interact with Tor:

# View Tor circuit info via control port
sudo -u debian-tor tor-ctrl GETINFO circuit-status

# Signal Tor to build new circuits
sudo -u debian-tor tor-ctrl SIGNAL NEWNYM

# Check Tor connection status
systemctl status tor@default

# View Tor logs
sudo journalctl -u tor@default -f

#Built-in Tools

#Tor Browser

Pre-configured Firefox ESR hardened for Tor. Key differences from standard Firefox:

  • All traffic routed through Tor SOCKS proxy (127.0.0.1:9050)
  • JavaScript enabled by default but can be set to "Safest" security level
  • NoScript pre-installed
  • Letterboxing enabled (resizes content to standard sizes to prevent window-size fingerprinting)
  • WebRTC disabled (prevents IP leaks)
  • No browser history, cookies cleared on exit
Security Levels (shield icon in toolbar):
  Standard  - JavaScript enabled, all features on
  Safer     - JS disabled on non-HTTPS, some fonts/media blocked
  Safest    - JS disabled everywhere, fonts/media blocked

#Communication Tools

Thunderbird + Torbirdy:

- Email client pre-configured for Tor
- PGP encryption via OpenPGP built-in (Enigmail deprecated)
- All connections route through Tor
- Strips email metadata headers automatically
- IMAP/SMTP over Tor (use .onion mail servers when possible)

OnionShare:

# Share files over Tor without a server
# Applications → OnionShare

# Creates a temporary .onion address for:
# - Sharing files (upload to recipients)
# - Receiving files (others upload to you)
# - Hosting a simple website
# - Anonymous chat room

# The .onion address is only active while OnionShare runs
# Recipients need Tor Browser to access it

#Security and Encryption Tools

KeePassXC:

- Password manager with TOTP support
- Database stored in Persistent Storage
- Use a strong master password + key file for defense in depth
- Path: ~/Persistent/keepassxc.kdbx

MAT2 (Metadata Anonymisation Toolkit):

# Remove metadata from files before sharing
# Supports: images, PDFs, office docs, audio, video, archives

# Check metadata
mat2 --show document.pdf

# Clean a single file (creates cleaned copy)
mat2 document.pdf
# Output: document.cleaned.pdf

# Clean in-place
mat2 --inplace photo.jpg

# Clean all files in a directory
mat2 *.pdf

# Right-click any file in Files → "Remove metadata"

GnuPG:

# Generate a GPG key pair
gpg --full-generate-key

# Encrypt a file for a recipient
gpg --encrypt --recipient [email protected] file.txt

# Sign a file
gpg --detach-sign --armor file.txt

# Verify a signature
gpg --verify file.txt.asc file.txt

# Export public key for sharing
gpg --armor --export [email protected] > pubkey.asc

# GPG keys persist if GnuPG is enabled in Persistent Storage

LUKS Disk Encryption:

# Create an encrypted volume on an external drive
# Applications → Disks → Select drive → Format → LUKS + Ext4

# Command line alternative (admin password required):
sudo cryptsetup luksFormat /dev/sdX1
sudo cryptsetup open /dev/sdX1 encrypted_vol
sudo mkfs.ext4 /dev/mapper/encrypted_vol
sudo mount /dev/mapper/encrypted_vol /mnt

# Close when done
sudo umount /mnt
sudo cryptsetup close encrypted_vol

Electrum Bitcoin Wallet:

- Lightweight Bitcoin wallet routed through Tor
- Wallet data persists if Electrum is enabled in Persistent Storage
- Use for anonymous transactions
- Connects to Electrum servers via Tor

#Networking

#Tor-Enforced Networking

Tails enforces Tor at the firewall level. The iptables rules ensure:

ALLOWED:
  - Traffic from Tor process to the internet (direct)
  - Traffic from applications to Tor SOCKS (127.0.0.1:9050/9150)
  - Tor control port (127.0.0.1:9051)
  - Local loopback

BLOCKED:
  - ALL other outbound traffic
  - Direct internet access from any application
  - UDP traffic (except DNS to Tor)
  - ICMP (ping) in all directions

This means even if malware runs in your session, it cannot phone home without going through Tor (making C2 attribution harder but not impossible).

#MAC Spoofing

Tails automatically randomizes your MAC address before connecting to any network.

Step Boot Sequence
1 Network interfaces detected
2 MAC addresses randomized (per-interface)
3 NetworkManager starts
4 Connection to Wi-Fi/Ethernet established
5 Tor connection initiated

The spoofed MAC appears as a random vendor OUI. Different MAC on every boot. Can be disabled in Welcome Screen if it causes connectivity issues.

Why it matters: your real MAC address is a hardware identifier logged by routers, access points, and captive portals. Spoofing prevents linking your device across sessions.

#Unsafe Browser

Tails includes an "Unsafe Browser" for one specific purpose: logging into captive portals (hotels, airports, cafes).

- Connects DIRECTLY to the network (NOT through Tor)
- Clearly marked with red warning theme
- Only use to authenticate with captive portals
- Close immediately after portal login
- Tor Browser then routes normally through the open connection

WARNING: Traffic through the Unsafe Browser reveals your real IP
to the captive portal and any observer on the local network.

Enable it: Welcome Screen - Additional Settings - Unsafe Browser.

#Advanced

#Administration Password

By default, Tails has no root/admin password - this prevents accidental system modification and limits malware impact.

Enable when needed:
  Welcome Screen > Additional Settings > Administration Password

Use cases:
  - Installing additional packages (apt)
  - Running commands as root
  - Configuring advanced networking
  - Accessing system logs
  - Mounting internal hard drives (forensics)

# Once set, use sudo normally:
sudo apt update
sudo apt install <package>

The admin password only lasts for the current session. It is never persisted.

#Additional Software

Install extra packages that auto-reinstall on every boot (requires Persistent Storage).

# Method 1: GUI
# Install a package normally with apt (admin password required)
sudo apt update && sudo apt install <package>
# Tails notification: "Install Every Time" or "Install Only Once"
# Select "Install Every Time" to persist

# Method 2: Manual configuration
# Packages are stored in:
/live/persistence/TailsData_unlocked/apt/cache
/live/persistence/TailsData_unlocked/apt/lists

# Persistent config at:
/live/persistence/TailsData_unlocked/live-additional-software.conf

Useful additions for security work:

sudo apt install git python3-pip vim tmux nmap whois

#Virtual Machine Considerations

Running Tails in a VM reduces some security properties:

Concern Impact
Host OS sees all RAM Host can dump Tails memory, defeating amnesia
No MAC spoofing VM uses virtual NIC, MAC spoofing applies to virtual adapter only
Clipboard sharing Risk of data leaking between host and guest
Host disk artifacts VM disk images, snapshots, swap files contain Tails data
Reduced anonymity Tor Browser fingerprint may differ in VM environment

When VMs are acceptable:

  • Testing and learning Tails functionality
  • When the host OS is also hardened (e.g., Qubes-Whonix)
  • When physical USB boot is not possible
# QEMU/KVM example (Linux host):
qemu-system-x86_64 \
  -enable-kvm \
  -m 2048 \
  -boot d \
  -drive file=tails-amd64-X.Y.img,format=raw,readonly=on \
  -net nic -net user

#Cloning and Upgrading

# Clone Tails USB to another USB
# Applications → Tails → Tails Installer → Clone the current Tails
# This copies the full Tails system (NOT persistent storage)

# Manual upgrade (automatic upgrades preferred):
# Tails checks for updates on Tor connection
# Notification appears when an upgrade is available
# Follow the guided upgrade process

# If automatic upgrade fails:
# 1. Download new Tails image
# 2. Boot from current Tails USB
# 3. Use Tails Installer to upgrade from the .img file

# Full manual reinstall:
# Use dd or Rufus to write new image (wipes persistent storage!)
# Backup ~/Persistent first

#Operational Usage

#Journalist Source Protection

Tails is used by journalists and sources working with sensitive material (recommended by Freedom of the Press Foundation and used alongside SecureDrop).

Step Action
1 Boot Tails from USB on an air-gapped machine
2 Connect to Tor
3 Access SecureDrop .onion address
4 Download submitted documents
5 Use MAT2 to strip metadata before any processing
6 Encrypt files with GPG before transferring
7 Shut down Tails (RAM wiped automatically)

Key principles:

  • Never open documents on a non-Tails machine first
  • Disable JavaScript in Tor Browser (Safest mode)
  • Use OnionShare for secure file transfer between parties
  • Verify GPG signatures on all received material

#Anonymous Research

For red team operators and researchers conducting anonymous OSINT or infrastructure research:

Account creation:
- Use Tails + Tor Browser to create accounts
- Use temporary email services over Tor (.onion preferred)
- Never reuse identities across Tails sessions
- Use KeePassXC in persistent storage to manage credentials

Infrastructure research:
- All reconnaissance through Tor Browser or proxychains
- Use the session's unique Tor circuit
- Request new identity (Ctrl+Shift+U) between targets
- Do not mix personal and operational browsing

OPSEC checklist:
Check Item
Verify Booted from clean Tails USB
Verify Persistent storage unlocked only if needed
Verify Tor connected (green onion in taskbar)
Verify Security level set to Safest
Verify No personal accounts logged in
Verify MAT2 used on all files before exfiltration
Verify Shutdown when task complete

#Whistleblowing Workflow

Step Action
1 Obtain a dedicated Tails USB (purchased with cash)
2 Boot on a machine not associated with you
3 Connect via public Wi-Fi (not home/work network)
4 Access the target platform's .onion submission page
5 Upload documents (stripped of metadata via MAT2)
6 Note any confirmation codes in KeePassXC
7 Shut down - session is gone
8 For follow-up: boot Tails again, unlock persistent storage to retrieve codes

Never do any of the following:

  • Use your personal computer
  • Connect from home/work network
  • Access personal accounts in the same session
  • Keep unencrypted copies of submitted material
  • Tell anyone which USB is your Tails drive

#Limitations

#Tor-Level Risks

Tails routes everything through Tor, but Tor itself has known limitations:

Exit node monitoring:
- Exit nodes can see unencrypted traffic (HTTP, DNS over exit)
- Always use HTTPS/TLS for end-to-end encryption
- .onion services avoid exit nodes entirely

Traffic correlation:
- A global adversary observing both entry and exit
  can correlate timing to deanonymize users
- Tails cannot protect against this

Guard node exposure:
- Your ISP sees you connecting to a Tor guard node
- Use bridges to hide Tor usage from local observers
- meek/snowflake make traffic look like CDN/WebRTC

Circuit fingerprinting:
- Unique traffic patterns on a circuit can identify
  the type of activity (streaming vs. browsing vs. upload)

#Hardware and Physical Attacks

Hardware fingerprinting:
- Display resolution, USB devices, CPU info can leak
  through browser or OS-level queries
- Tor Browser mitigates some (letterboxing) but not all

Cold boot attacks:
- RAM contents can be recovered for seconds-minutes
  after power off using physical access
- Tails overwrites RAM on shutdown to mitigate this
- Does NOT protect against liquid nitrogen attacks
  (RAM frozen before shutdown)

Evil maid attacks:
- An attacker with physical access to your USB can
  modify the bootloader or OS to install backdoors
- Tails does not have Secure Boot verification on all platforms
- Mitigate: keep USB on your person at all times

BIOS/UEFI/firmware implants:
- Tails cannot detect or protect against compromised
  firmware on the host machine
- A rootkit in BIOS/UEFI persists across all OS boots
- Use trusted hardware or hardware you control
- Intel ME / AMD PSP run below the OS - invisible to Tails

DMA attacks:
- Thunderbolt/FireWire/PCIe devices can read/write RAM
  directly, bypassing OS protections
- Disable unused ports in BIOS when possible

#What Tails Does NOT Protect Against

Threat Why Tails Fails Mitigation
Keylogger (hardware) Physical device between keyboard and port Inspect hardware before use
Screen capture (camera) Optical surveillance of your screen Use in a private location
Compromised host firmware BIOS/UEFI/ME runs below Tails Use trusted/verified hardware
User error Logging into personal accounts breaks anonymity Strict OPSEC discipline
Tor correlation attacks Global passive adversary can deanonymize Defense in depth, limit session time
Rubber hose cryptanalysis Coercion to reveal passwords Deniable encryption (not built-in), legal counsel
Local network monitoring Tor usage visible unless bridges used Always use bridges in hostile networks
USB forensics Persistent volume existence is detectable Use a second decoy USB or no persistence

#Comparison and Physical Security

#Tails vs Whonix vs Qubes

Feature Tails Whonix Qubes OS
Architecture Live USB, runs in RAM Two VMs (Gateway + Workstation) Xen hypervisor with isolated qubes
Amnesia Full - every reboot wipes everything No - persistent by design No - persistent by design
Tor enforcement OS-level iptables, all traffic forced through Tor Gateway VM routes all Workstation traffic through Tor Only in Whonix qubes (optional)
Isolation None - single monolithic session Network isolation (Gateway/Workstation split) Strong - each qube is a separate VM
Portability USB stick, boot on any machine Requires a host OS or hypervisor Installed on internal disk
Persistence Optional encrypted LUKS partition Full disk persistence Full disk persistence
Identity separation One identity per session Multiple Workstations possible Separate qubes per identity
Hardware requirements Minimal (any x86_64 with USB boot) Moderate (enough RAM for 2 VMs) High (VT-x/VT-d, 16 GB+ RAM)
Ease of use Simplest Moderate Most complex
Best threat model Temporary anonymous sessions, leave no trace Persistent anonymous workstation, leak-proof networking Compartmentalized workflows, multiple security domains

#When to Use Which

Scenario Recommended OS
One-time anonymous activity, leave no forensic trace Tails
Persistent anonymous research over days/weeks Whonix
Multiple identities that must never cross-contaminate Qubes + Whonix
Receiving sensitive documents (journalism, whistleblowing) Tails on air-gapped machine
Long-term anonymous server administration Whonix
High-security daily driver with compartmentalization Qubes OS
Travel, using untrusted hardware at hotels/cafes Tails
Red team infrastructure management Whonix (persistent configs) or Qubes (isolated per-op)

#Tails and VPNs

The Tails project explicitly recommends against using VPNs with Tails. This is a deliberate architectural decision.

Concern Detail
Tails position Tor only. VPNs are not supported and break the threat model
Why no VPN before Tor The VPN provider sees your real IP and knows you use Tor. Adds a permanent, identifiable relay. Tor entry guards already rotate
Why no VPN after Tor The VPN exit replaces Tor exit nodes. VPN provider sees all your traffic. Defeats the purpose of Tor's multi-hop design
Mullvad argument Some users want Mullvad to hide Tor usage from ISP. Bridges (obfs4, Snowflake) achieve the same without trusting a VPN provider
When VPN is actually useful On Whonix or Qubes, where VPN and Tor can be properly compartmentalized in separate VMs. Not on Tails

If your threat model requires hiding Tor usage from your ISP, use Tor bridges instead of a VPN. If you need a VPN for non-Tor traffic, use a separate OS or VM.

#Physical Security Considerations

The USB drive itself is a physical artifact that can be found, seized, or forensically analyzed.

Threat Mitigation
USB found during search Keep it disguised among other USB drives. Use a generic-looking drive, not one labeled "Tails"
Persistent volume detected Existence of LUKS partition is visible. Cannot be hidden or made deniable on Tails
USB left unattended Evil maid can modify bootloader. Keep USB on your person at all times
Cross-border searches Some countries compel decryption. Consider no persistent storage for border crossings
Drive failure USB drives fail without warning. Maintain encrypted backups of persistent data
VeraCrypt hidden volumes Tails does not support VeraCrypt hidden volumes on the same USB. The Tails partition layout is fixed. Use a separate VeraCrypt drive if you need deniable encryption
Disposal Physically destroy the USB (shred, burn, drill) when no longer needed. Secure erase is insufficient for flash storage due to wear leveling

For maximum deniability: use Tails without persistent storage, boot from a generic USB that could plausibly contain anything, and physically destroy the drive after use.

#Also See

#Cyber Aurelien Guidi

  • Whonix (Tor-enforced anonymity OS with gateway isolation)
  • Qubes OS (Security through compartmentalization with Xen)
  • GrapheneOS (Hardened mobile OS for privacy-focused devices)
  • Anonymization (Identity separation and OPSEC methodology)
  • Cellular OPSEC (Mobile threat model, IMSI catchers, baseband)
  • Mullvad VPN (Privacy-focused VPN with anonymous signup)
  • OPSEC Checklist (Operational security verification steps)