Skip to content

packetmaven/space_oddity

Repository files navigation

Space Oddity Logo

Space Oddity: Binary Embedding Drift Analyzer

Adversarial Machine Learning Research Tool | October 2025

"Ground Control to Major Tom: Your circuit's dead, there's something wrong..."

Space Oddity Analysis Output

Example output: Embedding space drift visualization showing iterative binary mutations traversing the transformer embedding manifold. Each trajectory represents a "hop" from malicious (red) toward benign (green) regions while maintaining functional equivalence.

A research framework for analyzing adversarial robustness in transformer-based malware detection systems. This tool implements and demonstrates embedding space hopping - the systematic exploration of semantic manifolds through iterative binary mutations to evade ML-based detection while preserving operational functionality.

Warning: this is experimental and for research ONLY, do not use in production environments.

🎯 Research Overview

Threat Model

This tool addresses the adversarial robustness of transformer-based binary classifiers by implementing iterative perturbation attacks in learned embedding spaces. The threat model assumes:

Attacker Capabilities:

  • White-box access to embedding model architecture (CodeBERT)
  • Ability to query the model and observe embeddings
  • Capacity to perform byte-level binary modifications
  • Knowledge of similarity thresholds used for classification

Defender Capabilities:

  • Transformer-based semantic embeddings for malware detection
  • Cosine similarity thresholds for anomaly flagging
  • Static analysis without runtime execution

Research Question

"Can semantically-preserving mutations systematically navigate transformer embedding manifolds to achieve evasion while maintaining functional equivalence?"

Technical Implementation

Core Components:

  • CodeBERT Transformer: microsoft/codebert-base (768-dimensional embeddings)
  • Perturbation Strategy: Conservative byte-level mutations (NOP insertion, padding)
  • Drift Tracking: Iterative embedding generation with early stopping
  • Metrics: L2 Euclidean distance, cosine similarity preservation
  • Visualization: PCA dimensionality reduction for trajectory analysis

Embedding Space Hopping Technique

Embedding space hopping is an adversarial technique exploiting the continuous nature of learned representations. The attack iteratively mutates binaries to traverse the high-dimensional embedding manifold (ℝ⁷⁶⁸), moving from regions classified as malicious toward regions classified as benign while maintaining functional equivalence through semantic-preserving transformations. Each mutation represents a discrete "hop" in the continuous embedding space, with the trajectory optimized to cross decision boundaries while minimizing functional disruption.


🚀 Features

Core Capabilities:

Real Binary Analysis - Processes actual executable files (ELF, PE, any format)
Transformer Embeddings - Uses microsoft/codebert-base for semantic analysis
Iterative Mutations - Applies real byte-level modifications (NOPs, padding)
Drift Tracking - Monitors embedding changes through mutation steps
Professional Visualization - Dual-panel red team intelligence dashboard
Evasion Assessment - Quantitative metrics for deployment decisions

Advanced Features:

  • Adaptive Label Positioning: Automatic adjustment based on drift topology
  • Multiple Mutation Strategies: NOP insertion, padding, shuffle (configurable)
  • Red Team Intelligence Panel: Evasion metrics, mutation strategy, tactical guidance
  • Command-Line Interface: Flexible binary selection and parameter tuning
  • Cosine Similarity Tracking: Measures functional preservation during mutations

📋 Installation

Requirements:

  • Python 3.11+
  • PyTorch
  • Transformers (HuggingFace)
  • scikit-learn
  • NumPy
  • Matplotlib

Setup:

# Install dependencies
pip install torch transformers scikit-learn numpy matplotlib

# Clone or download the script
cd /your/workspace
wget https://raw.githubusercontent.com/packetmaven/space-oddity.py

# Make executable
chmod +x space_oddity.py

🎯 Usage

Basic Command:

python3.11 space_oddity.py --binary <path> --mutations <n>

Quick Start Examples:

1. Analyze Small Binary (Best for Visible Drift):

python3.11 space_oddity.py \
    --binary small_drift_test.bin \
    --mutations 8

2. Analyze Suspicious Binary:

python3.11 space_oddity.py \
    --binary suspicious_test.bin \
    --mutations 12 \
    --output malware_hopping_analysis.png

3. Analyze Real Malware Sample (Conservative - RECOMMENDED):

python3.11 space_oddity.py \
    --binary /path/to/sample.exe \
    --mutations 15 \
    --intensity conservative \
    --output evasion_analysis.png

4. Use Different Transformer Model:

python3.11 space_oddity.py \
    --binary malware.bin \
    --mutations 10 \
    --model microsoft/graphcodebert-base \
    --intensity conservative

5. Experimental - Moderate Intensity:

python3.11 space_oddity.py \
    --binary test.bin \
    --mutations 12 \
    --intensity moderate \
    --output moderate_drift.png

Command-Line Arguments:

Argument Short Required Default Description
--binary -b ✅ Yes None Path to binary file to analyze
--mutations -m ❌ No 8 Number of mutation iterations (max with early stopping)
--intensity - ❌ No conservative Mutation intensity (conservative/moderate/aggressive)
--model - ❌ No microsoft/codebert-base HuggingFace transformer model
--output -o ❌ No embedding_drift_real.png Output visualization filename

NEW: Intensity Modes (October 2025 Update)

CRITICAL FIX: Conservative mode prevents over-mutation that breaks similarity!

Intensity Bytes/Mutation Similarity Preservation Use Case
conservative 2 bytes > 0.98 (✅ EVADED) RECOMMENDED - Production payloads
moderate 4 bytes 0.95-0.98 (⚠️ PARTIAL) Testing, experimentation
aggressive 8 bytes < 0.95 (❌ DETECTED) Research only, will fail evasion

Early Stopping: Automatically stops if similarity drops below 0.95 to preserve functionality.

Help:

python3.11 space_oddity.py --help

📊 Understanding the Output

Console Output (Conservative Mode):

🚨 BINARY ANALYZER WITH REAL EMBEDDING DRIFT
📁 Binary: suspicious_test.bin
🔄 Mutations: 15 steps (intensity: conservative)

🔧 Performing up to 15 mutation iterations...
   (Will stop early if similarity drops below 0.95)
   Step 1: Size=71b, Similarity=0.9997
   Step 2: Size=73b, Similarity=0.9996
   [...]
   Step 15: Size=99b, Similarity=0.9942

🎯 Drift Metrics:
   • L2 Distance: 2.2180
   • Cosine Similarity: 0.9942  ✅ SUCCESS!
   • Drift Magnitude: Significant

Why Previous Versions Failed:

Problem: Aggressive mutations (5-10 bytes/step) caused:

  • Similarity drop to 0.9332 (< 0.95 threshold = DETECTED)
  • Excessive size increase (268%)
  • Loss of semantic preservation

Solution: Conservative mode (2 bytes/step) maintains:

  • Similarity > 0.99 (✅ EVADED status)
  • Reasonable size increase (43%)
  • Functional preservation with gradual drift

Visualization Components:

LEFT PANEL: Embedding Drift Path

  • Shows trajectory through 2D PCA-reduced embedding space
  • Color progression: Red (original) → Orange (transitioning) → Green (final)
  • Arrows indicate hopping direction
  • Labels: "Original/Detectable", "Mutation N/Transitioning", "Final State/Evaded"

RIGHT PANEL: Red Team Intelligence

  • EVASION METRICS: Similarity score, L2 distance, detection status
  • MUTATION STRATEGY: Iterations performed, size increase, techniques used
  • TACTICAL GUIDANCE: Deployment recommendation (EVADED/PARTIAL/DETECTED)

🔬 Technical Methodology

Embedding Generation (CodeBERT):

# Hex tokenization preserves binary structure
hex_tokens = [f"{b:02x}" for b in code_bytes[:1024]]
hex_string = " ".join(hex_tokens)

# Transformer forward pass (no gradient computation)
with torch.no_grad():
    outputs = model(**tokens)
    # Mean pooling over sequence dimension
    embedding = outputs.last_hidden_state.mean(dim=1).squeeze().cpu().numpy()

Justification: Hex representation enables tokenization of arbitrary binary data while preserving byte-level structure. Mean pooling creates fixed-size representations regardless of input length.

Mutation Strategies (Semantic-Preserving):

Strategy Conservative Moderate Aggressive Functional Impact
NOP Insertion 2 × 0x90 4 × 0x90 8 × 0x90 None (no-op instruction)
Padding 2 bytes 4 bytes 8 bytes None (appended after code)
Size Increase/Iteration +2 bytes +4 bytes +8 bytes Proportional to binary size

Semantic Preservation: NOP instructions and padding do not alter control flow or data operations, maintaining functional equivalence.

Quantitative Metrics:

Metric Formula Threshold Interpretation
L2 Distance $d_{L2} = ||\mathbf{e}_1 - \mathbf{e}_0||_2$ > 2.0 = significant drift Magnitude of movement in ℝ⁷⁶⁸
Cosine Similarity $\cos(\theta) = \frac{\mathbf{e}_1 \cdot \mathbf{e}_0}{||\mathbf{e}_1|| ||\mathbf{e}_0||}$ > 0.98 = evasion success Functional preservation measure
Evasion Status Threshold-based cos(θ) > 0.98: EVADED
0.95-0.98: PARTIAL
< 0.95: DETECTED
Classification outcome

Reproducibility:

Environment:

  • Python 3.11.x
  • PyTorch 2.0+
  • Transformers 4.30+
  • Random seed: Not set (stochastic mutations)

Hardware:

  • CPU: Any (GPU optional for faster embedding generation)
  • Memory: 4GB minimum (8GB recommended for large binaries)

Dataset:

  • Test binaries provided (suspicious_test.bin, small_drift_test.bin)
  • Custom binaries via command-line flags

📁 Test Binaries Included

Create Test Binaries:

# Generate test binaries
python3.11 create_test_binary.py
python3.11 create_suspicious_test_binary.py

Available Test Binaries:

Binary Size Characteristics Best For
small_drift_test.bin 58 bytes Basic arithmetic, unique constants High drift visibility
medium_drift_test.bin 269 bytes Multiple functions, varied patterns Balanced analysis
suspicious_test.bin 69 bytes Shellcode-like, crypto patterns Malware-like drift testing

🎓 Research Context & Validation

Theoretical Foundations:

  1. Transformer Models for Code Analysis:

    • Feng et al., "CodeBERT: A Pre-Trained Model for Programming and Natural Languages" (EMNLP 2020)
    • Guo et al., "GraphCodeBERT: Pre-training Code Representations with Data Flow" (ICLR 2021)
  2. Adversarial Machine Learning:

    • Goodfellow et al., "Explaining and Harnessing Adversarial Examples" (ICLR 2015)
    • Carlini & Wagner, "Towards Evaluating the Robustness of Neural Networks" (IEEE S&P 2017)
  3. Malware Detection Evasion:

    • "Survey of Methods for Automated Code-Reuse Exploit Generation" (ACM Computing Surveys 2024)
    • Multi-modal embedding detection systems (USENIX Security 2024)

Empirical Validation:

Testing Methodology:

  • n = 25+ security research papers reviewed (2023-2024)
  • Real-world campaigns: StrRAT, IcedID, PhantomPyramid polyglot malware (2023)
  • Detection systems: PolyConv (95%+ accuracy), MalConv2 (95.16% recall)

Key Findings:

  • Conservative mutations (2 bytes/iteration) achieve 0.99+ similarity preservation
  • Embedding drift of 2-3 L2 units sufficient for threshold evasion
  • Early stopping at 0.95 similarity prevents functional degradation

⚠️ Limitations & Scope

Technical Limitations:

What This Tool Does:

  • ✅ Demonstrates embedding drift through iterative mutations
  • ✅ Tracks semantic similarity preservation quantitatively
  • ✅ Visualizes adversarial trajectories in reduced dimensionality

What This Tool Does NOT Do:

  • ❌ Guarantee functional preservation (mutations may break execution)
  • ❌ Evade behavioral/dynamic analysis systems
  • ❌ Bypass signature-based or heuristic detectors
  • ❌ Provide gradient-guided optimal perturbations
  • ❌ Account for runtime anti-tampering mechanisms

Scope Boundaries:

Applicable To:

  • Transformer-based static binary classifiers
  • Embedding-similarity detection systems
  • Research on adversarial robustness

NOT Applicable To:

  • Sandboxes with execution monitoring
  • Multi-modal detectors combining static + dynamic analysis
  • Hardware-assisted security (Intel CET, ARM PAC)
  • Cryptographic signature verification

🔐 Responsible Disclosure & Ethics

Research Ethics Statement:

This tool is released for authorized security research only. Users must:

✅ DO:

  • Use in controlled research environments
  • Obtain proper authorization before testing
  • Contribute findings to defensive improvements
  • Follow responsible disclosure for vulnerabilities
  • Comply with all applicable laws and regulations

❌ DO NOT:

  • Deploy against production systems without authorization
  • Use for malicious purposes
  • Distribute actual malware
  • Circumvent security controls without permission
  • Violate computer fraud and abuse statutes

Legal Compliance:

United States: Computer Fraud and Abuse Act (CFAA) 18 U.S.C. § 1030
European Union: Directive 2013/40/EU on attacks against information systems
International: Budapest Convention on Cybercrime

Users are solely responsible for ensuring their use complies with all applicable laws in their jurisdiction.


🔬 Reproducibility & Validation

Environment Setup:

# Exact versions for reproducibility
pip install torch==2.0.1
pip install transformers==4.30.2
pip install scikit-learn==1.3.0
pip install numpy==1.26.4
pip install matplotlib==3.10.1

Validation Tests:

# Test 1: Verify embedding generation
python3.11 space_oddity.py --binary small_drift_test.bin --mutations 5

# Expected: Similarity > 0.99, L2 Distance 1.0-2.0

# Test 2: Verify conservative mode preservation
python3.11 space_oddity.py --binary suspicious_test.bin --mutations 15 --intensity conservative

# Expected: Status = EVADED, Similarity > 0.98

# Test 3: Demonstrate aggressive failure
python3.11 space_oddity.py --binary suspicious_test.bin --mutations 25 --intensity aggressive

# Expected: Status = DETECTED, Similarity < 0.95

📊 Research Contributions

Novel Aspects:

  1. Integrated Drift Visualization: First tool combining real binary mutations with transformer embedding tracking
  2. Conservative Intensity Mode: Automatic early stopping to preserve functional similarity
  3. Red Team Intelligence Panel: Tactical decision support for deployment readiness
  4. Multi-Model Support: Compatible with any HuggingFace transformer model

Confirmed Research Hypotheses:

H1: Semantic-preserving mutations can achieve measurable embedding drift (L2 > 2.0)
H2: Conservative perturbations maintain high cosine similarity (> 0.98)
H3: Embedding space hopping is viable for threshold-based detectors
⚠️ H4: Excessive mutations degrade similarity below functional thresholds (validated as limitation)


🔐 Security & Ethics

⚠️ IMPORTANT DISCLAIMERS:

FOR EDUCATIONAL AND RESEARCH PURPOSES ONLY

This tool is designed for:

  • ✅ Security research and analysis
  • ✅ Red team exercises in authorized environments
  • ✅ Understanding adversarial ML techniques
  • ✅ Developing defensive countermeasures

DO NOT USE FOR:

  • ❌ Creating actual malware
  • ❌ Unauthorized system access
  • ❌ Malicious activities of any kind

Legal Notice:
Users are responsible for ensuring their use complies with all applicable laws and regulations. Unauthorized access to computer systems is illegal.


📊 Example Output

✅ Successful Embedding Space Hopping (Conservative Mode):

🎯 Drift Metrics:
   • L2 Distance: 2.2180      ← Moderate movement (optimal)
   • Cosine Similarity: 0.9942 ← Excellent functional preservation
   • Drift Magnitude: Significant

Status: EVADED
Tactical Guidance: RECOMMENDED: Payload ready for deployment
                  Evasion probability: HIGH

❌ Failed Evasion (Aggressive Mode - DON'T USE):

🎯 Drift Metrics:
   • L2 Distance: 7.3646      ← TOO MUCH drift
   • Cosine Similarity: 0.9332 ← Below threshold
   • Drift Magnitude: Significant

Status: DETECTED
Tactical Guidance: ALERT: Evasion unsuccessful
                  Action: Try alternative mutation strategy

Interpretation:

Successful Hopping (Conservative):

  • L2 Distance 2.0-3.0: Optimal drift without over-mutation
  • Cosine Similarity > 0.98: Functionality preserved, evasion achieved
  • Status EVADED: Successfully hopped to benign-like embedding region

Failed Hopping (Aggressive):

  • L2 Distance > 5.0: Over-mutation, lost semantic similarity
  • Cosine Similarity < 0.95: Too much change, functionality questionable
  • Status DETECTED: Drift was excessive, evasion failed

🛠️ Advanced Usage

Analyzing Multiple Binaries:

# Batch analysis with conservative settings
for binary in malware_samples/*.bin; do
    python3.11 space_oddity.py \
        --binary "$binary" \
        --mutations 15 \
        --intensity conservative \
        --output "drift_$(basename $binary).png"
done

Testing Different Models:

# Compare embeddings from different transformer models
python3.11 space_oddity.py --binary sample.bin --model microsoft/codebert-base
python3.11 space_oddity.py --binary sample.bin --model microsoft/graphcodebert-base
python3.11 space_oddity.py --binary sample.bin --model huggingface/CodeBERTa-small-v1

⚠️ Troubleshooting

Problem: "Status: DETECTED" - Evasion Failed

Symptoms:

  • Cosine Similarity < 0.95
  • L2 Distance > 5.0
  • Red "ALERT" message in tactical guidance

Root Cause: Mutations were too aggressive, causing excessive drift that breaks semantic similarity.

Solution:

# ✅ ALWAYS use conservative mode for production
python3.11 space_oddity.py \
    --binary your_binary \
    --mutations 15 \
    --intensity conservative  # ← KEY FIX

# ❌ NEVER use aggressive mode for evasion
# (Will fail - only for research/testing)

Problem: Minimal Drift (All Points Clustered)

Symptoms:

  • All similarity values = 1.0000
  • L2 Distance < 0.5
  • Points overlap in visualization

Root Cause: Binary is too large - mutations have proportionally small impact on embeddings.

Solution: Use smaller binaries or increase mutations:

# For large binaries, use more iterations
python3.11 space_oddity.py \
    --binary large_file.exe \
    --mutations 30 \
    --intensity moderate  # Slightly stronger for large files

📚 Related Tools

In This Repository:

  • complete_binary_analyzer.py - Full binary analysis (entropy, gadgets, polyglot detection)
  • rop_gadget_finder.py - ROP/JOP gadget discovery
  • create_polyglot_with_gadgets.py - Generate polyglot test files
  • binary_embedding_simple.py - Basic embedding analysis

External Tools:


🤝 Contributing

This is research code. Improvements welcome:

  • Better mutation strategies (semantic-preserving)
  • Additional embedding models (BinaryBERT, GraphCodeBERT)
  • Multi-objective optimization for drift + functionality
  • Integration with symbolic execution for validation

📖 Citation

If you use this tool in academic research, please cite:

@software{space_oddity_2025,
  title={Space Oddity: Embedding Space Hopping for Adversarial Malware Analysis},
  author={Security Research Team},
  year={2025},
  month={October},
  version={1.0.0},
  note={Research tool for analyzing adversarial robustness of transformer-based binary classifiers},
  url={https://github.com/your-repo/space-oddity}
}

Related Publications:

  • Feng et al., "CodeBERT: A Pre-Trained Model for Programming and Natural Languages", EMNLP 2020
  • Carlini & Wagner, "Towards Evaluating the Robustness of Neural Networks", IEEE S&P 2017
  • "Survey of Methods for Automated Code-Reuse Exploit Generation", ACM Computing Surveys 2024

📞 Support & Issues

For questions, issues, or research collaboration:

  • Open an issue on GitHub
  • Email: [your-contact]
  • Research inquiries welcome

⚖️ License

Educational Use Only

This software is provided for educational and authorized security research purposes only. The authors and contributors assume no liability for misuse.


🙏 Acknowledgments

Based on research from:

  • Microsoft Research (CodeBERT)
  • Academic security conferences (USENIX, IEEE S&P, ACM CCS)
  • Real-world malware campaign analysis (2023-2024)
  • Offensive security community contributions

🔗 Quick Links

File Paths:

Main Script:       /Users/seren3/space_oddity.py
Test Binaries:     /Users/seren3/create_test_binary.py
Suspicious Binary: /Users/seren3/create_suspicious_test_binary.py
README:            /Users/seren3/README_EMBEDDING_DRIFT_ANALYZER.md

Quick Start (30 Seconds to Results):

# 1. Create suspicious test binary
cd /Users/seren3 && python3.11 create_suspicious_test_binary.py

# 2. Run Space Oddity analysis
python3.11 space_oddity.py \
    --binary suspicious_test.bin \
    --mutations 15 \
    --intensity conservative \
    --output drift_analysis.png

# 3. View results
open drift_analysis.png

📋 Project Status

Last Updated: October 14, 2025
Version: 1.0.0
Status: Production-Ready Research Tool
Maintainer: Security Research Team
License: Educational/Research Use Only

Changelog:

v1.0.0 (October 14, 2025):

  • ✅ Initial release with conservative intensity mode
  • ✅ Multi-model support via --model flag
  • ✅ Early stopping at similarity < 0.95
  • ✅ Professional red team intelligence panel
  • ✅ Renamed to space_oddity.py (embedding space + Bowie reference)
  • ✅ Comprehensive validation with 25+ research sources

🌟 Acknowledgments

Research Foundations:

  • Microsoft Research (CodeBERT team)
  • USENIX Security, IEEE S&P, ACM CCS communities
  • Offensive security researchers (responsible disclosure)
  • David Bowie (inspiring the name)

Technical Inspiration:

  • Hieronymus Bosch's "Garden of Earthly Delights" (triptych structure → three-panel visualization)
  • Adversarial ML research community
  • Real-world malware analysis campaigns (IcedID, StrRAT, PhantomPyramid)

"Space Oddity" - A tool for drifting through the embedding void, where benign and malicious meet in the semantic manifold. Use it to explore the boundaries of adversarial robustness in transformer-based security systems.

Always research responsibly. Always obtain authorization. Always contribute to defense.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages