7d45a6c027
also added --paranoid mode
334 lines
12 KiB
Markdown
334 lines
12 KiB
Markdown
# Covert SD Card Tool
|
|
|
|
## Introduction
|
|
|
|
The **Covert SD Card Tool** is a Python script designed to automate the process of setting up a bootable USB/SD card with either Kali Linux or Tails OS. It includes options to create encrypted persistence partitions, secure document storage, and user-friendly access scripts. This tool simplifies the complex steps involved in preparing a secure, portable operating system on a USB drive or SD card.
|
|
|
|
## Features
|
|
|
|
- **Install Kali Linux or Tails OS** on a USB/SD card
|
|
- **Create an encrypted persistence partition** for Kali Linux (LUKS encryption)
|
|
- **Create a maximum-security encrypted documents partition** with triple-cascade encryption
|
|
- **Secure drive wiping** using multi-pass shred for data sanitization
|
|
- **User-friendly access scripts** for mounting and locking secure storage
|
|
- **OPSEC-focused design** - generated scripts use generic terminology
|
|
- **Automated dependency checking and installation**
|
|
|
|
## Prerequisites
|
|
|
|
- **Operating System:** Linux (Debian-based distributions recommended)
|
|
- **Python Version:** Python 3.x
|
|
- **Root Access:** Required for disk operations
|
|
- **Dependencies:**
|
|
- `parted` - Partition management
|
|
- `cryptsetup` - LUKS encryption
|
|
- `lsblk` - Block device listing
|
|
- `dd` - Disk writing
|
|
- `sgdisk` - GPT partition manipulation
|
|
- `wipefs` - Filesystem signature removal
|
|
- `shred` - Secure data wiping
|
|
- `bc` - Calculator for partition math
|
|
- `fdisk` - Partition table manipulation
|
|
- `veracrypt` - Document partition encryption
|
|
- `lsof`, `fuser` - Process detection
|
|
- `udevadm` - Device management
|
|
|
|
**Note:** The script will automatically detect missing dependencies and offer to install them.
|
|
|
|
## Installation
|
|
|
|
1. **Clone the Repository or Download the Script:**
|
|
|
|
```bash
|
|
git clone https://github.com/yourusername/covert_sd_card_tool.git
|
|
cd covert_sd_card_tool
|
|
```
|
|
|
|
2. **Make the Script Executable:**
|
|
|
|
```bash
|
|
chmod +x covert_sd_card_tool.py
|
|
```
|
|
|
|
## Usage
|
|
|
|
Run the script with appropriate options:
|
|
|
|
```bash
|
|
sudo ./covert_sd_card_tool.py [options]
|
|
```
|
|
|
|
### Command-Line Options
|
|
|
|
- `-a`, `--all` : Set up both the OS bootable USB and the documents partition (defaults to Kali)
|
|
- `-k`, `--kali` : Create a Kali bootable USB and persistence partition
|
|
- `-t`, `--tails` : Create a Tails bootable USB (no persistence, mutually exclusive with `-a`)
|
|
- `-c`, `--custom` : Create a custom ISO bootable USB (uses Kali-style partitioning with persistence)
|
|
- `-d`, `--docs` : Create an encrypted documents partition
|
|
- `-i`, `--iso` : Path to the ISO file (Kali, Tails, or custom)
|
|
- `--fast` : Enable fast setup mode (weaker encryption, faster setup - not recommended)
|
|
- `--paranoid` : Enable paranoid mode (maximum security: 3-pass wipe, Argon2id, PIM 5000)
|
|
- `--debug` : Enable debug mode with verbose logging
|
|
|
|
**Note:** `--fast` and `--paranoid` are mutually exclusive. Documents partition always uses strong encryption even in fast mode.
|
|
|
|
### Examples
|
|
|
|
- **Install Kali with Encrypted Persistence and Encrypted Documents Partition:**
|
|
|
|
```bash
|
|
sudo ./covert_sd_card_tool.py -a -i /path/to/kali.iso
|
|
```
|
|
|
|
- **Install Tails with Encrypted Documents Partition:**
|
|
|
|
```bash
|
|
sudo ./covert_sd_card_tool.py -t -d -i /path/to/tails.iso
|
|
```
|
|
|
|
- **Install Tails Only (No Documents Partition):**
|
|
|
|
```bash
|
|
sudo ./covert_sd_card_tool.py -t -i /path/to/tails.iso
|
|
```
|
|
|
|
- **Create Encrypted Documents Partition Only (No OS):**
|
|
|
|
```bash
|
|
sudo ./covert_sd_card_tool.py -d
|
|
```
|
|
|
|
- **Install Custom ISO (e.g., Parrot OS, BlackArch) with Persistence and Documents:**
|
|
|
|
```bash
|
|
sudo ./covert_sd_card_tool.py -c -d -i /path/to/custom.iso
|
|
```
|
|
|
|
- **Install Custom ISO with Persistence Only (No Documents):**
|
|
|
|
```bash
|
|
sudo ./covert_sd_card_tool.py -c -i /path/to/custom.iso
|
|
```
|
|
|
|
- **Paranoid Mode - Maximum Security (Tails + Docs):**
|
|
|
|
```bash
|
|
sudo ./covert_sd_card_tool.py -t -d -i /path/to/tails.iso --paranoid
|
|
```
|
|
|
|
## Security Features
|
|
|
|
### Documents Partition Encryption
|
|
|
|
The documents partition uses **strong security** in all modes:
|
|
|
|
**Standard Mode (default):**
|
|
- **Triple Cascade Encryption:** AES-Twofish-Serpent (3 layers)
|
|
- **Hash Algorithm:** SHA-512
|
|
- **Key Derivation:** PIM 2000 (strong key stretching)
|
|
- **Unlock Time:** ~2-3 seconds
|
|
- **Filesystem:** ext4
|
|
- **Full Format:** Always overwrites old data
|
|
|
|
**Paranoid Mode (`--paranoid`):**
|
|
- **Triple Cascade Encryption:** AES-Twofish-Serpent (3 layers)
|
|
- **Hash Algorithm:** SHA-512
|
|
- **Key Derivation:** PIM 5000 (maximum key stretching)
|
|
- **Unlock Time:** ~5-7 seconds
|
|
- **Security:** Would take trillions of years to brute force
|
|
|
|
**Fast Mode (`--fast`):**
|
|
- Documents still use standard mode (PIM 2000) - no compromise on docs security
|
|
|
|
### Persistence Partition Encryption (Kali/Custom)
|
|
|
|
**Standard Mode (default):**
|
|
- **Algorithm:** AES-XTS-PLAIN64
|
|
- **Key Size:** 512-bit
|
|
- **Hash:** SHA-512
|
|
- **KDF:** LUKS2 PBKDF2
|
|
- **Iteration Time:** 5 seconds
|
|
|
|
**Paranoid Mode (`--paranoid`):**
|
|
- **Algorithm:** AES-XTS-PLAIN64
|
|
- **Key Size:** 512-bit
|
|
- **Hash:** SHA-512
|
|
- **KDF:** LUKS2 Argon2id (memory-hard, GPU-resistant)
|
|
- **Memory:** 1GB
|
|
- **Parallel Threads:** 4
|
|
- **Iteration Time:** 10 seconds
|
|
|
|
**Fast Mode (`--fast`):**
|
|
- **Algorithm:** AES-CBC-ESSIV:SHA256
|
|
- **Key Size:** 256-bit
|
|
- **Hash:** SHA-256
|
|
- **KDF:** LUKS1 PBKDF2
|
|
- **Iteration Time:** 1 second
|
|
|
|
### Secure Drive Wiping
|
|
|
|
**Standard Mode (default):**
|
|
- **1 pass** with zeros (`dd if=/dev/zero`)
|
|
- Fast and sufficient for most use cases
|
|
- Prevents casual data recovery
|
|
- Confirmation required (must type 'WIPE')
|
|
|
|
**Paranoid Mode (`--paranoid`):**
|
|
- **3 passes** with random data (`shred`)
|
|
- **Final pass** with zeros
|
|
- Makes data recovery virtually impossible
|
|
- Defense against forensic recovery techniques
|
|
- **Much slower** (can take hours on large drives)
|
|
- Confirmation required (must type 'WIPE')
|
|
|
|
### OPSEC (Operational Security)
|
|
|
|
The generated helper scripts use **generic terminology** to avoid disclosing encryption methods:
|
|
|
|
- Scripts renamed to `mount_storage.sh` and `lock_storage.sh` (instead of mentioning encryption types)
|
|
- README uses terms like "secure storage" instead of specific encryption names
|
|
- No algorithm disclosure in user-facing documentation on the device
|
|
- Suitable for travel scenarios where device inspection may occur
|
|
|
|
## Generated Helper Scripts
|
|
|
|
The tool creates a small unencrypted partition (TOOLS) containing:
|
|
|
|
### `mount_storage.sh`
|
|
- Interactive script to mount the encrypted documents partition
|
|
- Shows available devices and validates input
|
|
- Mounts to `/mnt/secure_storage`
|
|
- Clear error messages and success confirmations
|
|
|
|
### `lock_storage.sh`
|
|
- Safely dismounts and locks the encrypted storage
|
|
- Checks for open files before locking
|
|
- Shows warnings if applications are still using the storage
|
|
- Syncs pending writes before dismount
|
|
- Prevents data loss from improper ejection
|
|
|
|
### `README.txt`
|
|
- Simple instructions for non-technical users
|
|
- Generic terminology (no encryption disclosure)
|
|
- Step-by-step mount/lock procedures
|
|
|
|
## Security Mode Comparison
|
|
|
|
| Feature | Fast Mode | Standard Mode (Default) | Paranoid Mode |
|
|
|---------|-----------|------------------------|---------------|
|
|
| **Drive Wipe** | Partition table clear only | 1-pass zeros | 3-pass shred + zeros |
|
|
| **Wipe Time (64GB)** | Instant | ~5-10 min | ~2-3 hours |
|
|
| **Persistence KDF** | LUKS1 PBKDF2 | LUKS2 PBKDF2 | LUKS2 Argon2id |
|
|
| **Persistence Unlock** | ~1 sec | ~5 sec | ~10 sec |
|
|
| **Docs Encryption** | AES-Twofish-Serpent | AES-Twofish-Serpent | AES-Twofish-Serpent |
|
|
| **Docs PIM** | 2000 | 2000 | 5000 |
|
|
| **Docs Unlock** | ~2-3 sec | ~2-3 sec | ~5-7 sec |
|
|
| **Best For** | Testing/dev | Travel, daily use | Maximum security, high-value targets |
|
|
|
|
**Recommendation:** Use **standard mode** for most cases. Use **paranoid mode** if:
|
|
- You're protecting extremely sensitive data
|
|
- You face nation-state level threats
|
|
- You have time for longer setup and unlock times
|
|
- You want defense against forensic analysis
|
|
|
|
## Important Security Notes
|
|
|
|
⚠️ **Password Strength:** Use strong passphrases (20+ characters, mixed case, numbers, symbols)
|
|
|
|
⚠️ **No Password Recovery:** If you forget your password, your data is **permanently inaccessible**
|
|
|
|
⚠️ **PIM Value:** The tool enforces PIM 2000 for documents partition - this adds 2-3 seconds to unlock time but massively increases security
|
|
|
|
⚠️ **Always Lock Before Removal:** Use `lock_storage.sh` before removing the device to prevent data corruption
|
|
|
|
⚠️ **Fast Mode:** While available for persistence partition, documents partition **always uses maximum security**
|
|
|
|
## Partition Layout Examples
|
|
|
|
### Kali + Documents (`-a`)
|
|
1. **Partition 1:** Kali Live OS (bootable)
|
|
2. **Partition 2:** LUKS encrypted persistence (configurable size, e.g., 4GB)
|
|
3. **Partition 3:** VeraCrypt encrypted documents (remaining space minus 1GB)
|
|
4. **Partition 4:** Unencrypted tools partition (1GB, FAT32, contains scripts)
|
|
|
|
### Tails Only (`-t`)
|
|
- **Entire Drive:** Tails Live OS (bootable, no additional partitions)
|
|
|
|
### Tails + Documents (`-t -d`)
|
|
1. **Partition 1:** Tails Live OS (bootable, 12MB EFI System)
|
|
2. **Partition 2:** Tails system partition (~2-3GB depending on Tails version)
|
|
3. **Partition 3:** VeraCrypt encrypted documents (remaining space minus 1GB)
|
|
4. **Partition 4:** Unencrypted tools partition (1GB, FAT32, contains scripts)
|
|
|
|
### Documents Only (`-d`)
|
|
1. **Partition 1:** VeraCrypt encrypted documents (remaining space minus 1GB)
|
|
2. **Partition 2:** Unencrypted tools partition (1GB, FAT32, contains scripts)
|
|
|
|
### Custom ISO + Documents (`-c -d`)
|
|
1. **Partition 1:** Custom Live OS (bootable)
|
|
2. **Partition 2:** LUKS encrypted persistence (configurable size, e.g., 4GB)
|
|
3. **Partition 3:** VeraCrypt encrypted documents (remaining space minus 1GB)
|
|
4. **Partition 4:** Unencrypted tools partition (1GB, FAT32, contains scripts)
|
|
|
|
**Note:** Custom ISO mode uses Kali-style partitioning. Works well with Debian-based live ISOs like Parrot OS, BlackArch, BackBox, etc.
|
|
|
|
## Using Custom ISOs
|
|
|
|
The `-c` (custom) flag allows you to use **any bootable ISO** and set it up with encrypted persistence and documents partitions. This is useful for:
|
|
|
|
### Compatible ISOs
|
|
- **Parrot Security OS** - Privacy-focused security distro
|
|
- **BlackArch Linux** - Penetration testing distro
|
|
- **BackBox** - Ubuntu-based penetration testing
|
|
- **Pentoo** - Gentoo-based security distro
|
|
- **Any Debian/Ubuntu-based live ISO**
|
|
|
|
### How It Works
|
|
Custom ISOs are treated like Kali Linux:
|
|
1. ISO is flashed to the drive
|
|
2. LUKS encrypted persistence partition is created (if you want settings to persist)
|
|
3. VeraCrypt encrypted documents partition is added (if `-d` flag is used)
|
|
4. Tools partition with mount/lock scripts
|
|
|
|
### Example: Parrot OS with Docs
|
|
```bash
|
|
sudo ./covert_sd_card_tool.py -c -d -i ~/Downloads/parrot-security.iso
|
|
```
|
|
|
|
### Compatibility Notes
|
|
- **Best for:** Debian/Ubuntu-based live ISOs
|
|
- **May not work with:** Arch-based ISOs (different partition structure), Windows ISOs
|
|
- **Persistence:** Depends on the ISO supporting LUKS persistence (Debian-based usually do)
|
|
- If persistence doesn't work with your ISO, you can still use the documents partition
|
|
|
|
## Troubleshooting
|
|
|
|
### Device Busy Errors
|
|
- The tool automatically unmounts partitions and kills processes using the drive
|
|
- If problems persist, manually unmount: `sudo umount /dev/sdX*`
|
|
- Check for processes: `sudo lsof /dev/sdX`
|
|
|
|
### VeraCrypt Not Found
|
|
- On Debian/Ubuntu: `sudo apt install veracrypt`
|
|
- Or the script will offer to install it automatically
|
|
|
|
### Permission Denied
|
|
- Always run with `sudo`
|
|
- Ensure your user has sudo privileges
|
|
|
|
### Drive Not Detected
|
|
- Check if drive is connected: `lsblk`
|
|
- Verify drive path (e.g., `/dev/sdb` not `/dev/sdb1`)
|
|
- Try unplugging and reconnecting the device
|
|
|
|
## License
|
|
|
|
This tool is provided as-is for educational and legitimate security purposes only. Use responsibly and in compliance with applicable laws.
|
|
|
|
## Contributing
|
|
|
|
Contributions, bug reports, and feature requests are welcome! Please open an issue or submit a pull request.
|
|
|
|
## Disclaimer
|
|
|
|
This tool performs destructive operations on storage devices. **Always verify you've selected the correct drive** before proceeding. The authors are not responsible for data loss. |