Skip to main content

Yara generator inspired by yarGen

Project description

yarobot

License: GPL v3 Python Version Rust

yarobot is a high-performance YARA rule generator inspired by yarGen, designed to automatically create quality YARA rules from malware samples while minimizing false positives through intelligent goodware database comparison.

🚀 Features

  • Automated YARA Rule Generation: Create both simple and super rules from malware samples
  • Intelligent Scoring System: Advanced string scoring with goodware database comparison
  • High Performance: Core engine written in Rust for maximum speed

🛠 Installation

Install from PyPI

pip install yarobot

Build Prerequisites

  • Python 3.11 or higher
  • Rust toolchain (for building the native extension)

Install from Source

git clone https://github.com/ogre2007/yarobot
cd yarobot
pip install -e .

📖 Quick Start

1. Update Goodware Databases

yarobot update-remote # from yarGen project. Doenst work yet. Just go to ex. 3

2. Generate Rules from Malware Samples

yarobot generate /path/to/malware/samples --output-rule-file my_rules.yar

3. Create Custom Goodware Database

yarobot database create /path/to/goodware/files --recursive

🎯 Usage Examples

Basic Rule Generation

yarobot generate /malware/samples \
  --min-size 8 \
  --max-size 128 \
  --min-score 5 \
  --output-rule-file detection_rules.yar

Advanced Configuration

yarobot generate /malware/samples \
  --opcodes \
  --recursive \
  --author "My Security Team" \
  --ref "Internal Investigation 2024" \
  --superrule-overlap 5 \
  --strings-per-rule 15

Database Management

# Update existing database with new goodware samples
(TODO) yarobot database update /path/to/new/goodware --identifier corporate 

# Create new database from scratch
yarobot database create /path/to/goodware --opcodes

🔧 Configuration Options

Rule Generation Options

  • --min-size, --max-size: String length boundaries
  • --min-score: Minimum string score threshold
  • --opcodes: Enable opcode feature for additional detection capabilities
  • --superrule-overlap: Minimum overlapping strings for super rule creation
  • --recursive: Scan directories recursively
  • --excludegood: Force exclusion of all goodware strings

Database Options

  • --identifier: Database identifier for multi-environment support
  • --update: Update existing databases with new samples
  • --only-executable: Only process executable file extensions

🏗 Architecture

yarobot combines the performance of Rust with the flexibility of Python:

Core Components

  • Rust Engine (yarobot-rs): High-performance file processing and string analysis
  • Python Interface: CLI management, database operations, and rule formatting
  • Scoring Engine: Intelligent string scoring with goodware comparison
  • Rule Generator: YARA rule synthesis and optimization

Database Structure

  • good-strings.db: Common strings from goodware samples
  • good-opcodes.db: Opcode frequency database
  • good-imphashes.db: Import hash database
  • good-exports.db: Export function database

🤝 Contributing

We welcome contributions!

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests
  5. Submit a pull request

📄 License

This project is licensed under the GPLv3 License - see the LICENSE file for details.

🙏 Acknowledgments

  • Based on yarGen by Florian Roth
  • Built with Pyo3 for Python-Rust integration
  • Uses goblin for binary parsing

📞 Support


Made with ❤️ for the security community

Stay safe, automate responsibly

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yarobot-0.2.0.tar.gz (731.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yarobot-0.2.0-cp313-cp313-manylinux_2_34_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

File details

Details for the file yarobot-0.2.0.tar.gz.

File metadata

  • Download URL: yarobot-0.2.0.tar.gz
  • Upload date:
  • Size: 731.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for yarobot-0.2.0.tar.gz
Algorithm Hash digest
SHA256 8e0cd9d04d8e7d444c09bb6e45f560261bffde75dc1e8d159557af7bdca0520b
MD5 c0dace0a65996576767d64f1633c79df
BLAKE2b-256 c68ad3148cd6d8689148a01fc7bdc7899a9b9039ea9e7539cb0fe2331dbbbcfe

See more details on using hashes here.

Provenance

The following attestation bundles were made for yarobot-0.2.0.tar.gz:

Publisher: python-publish.yml on ogre2007/yarobot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file yarobot-0.2.0-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for yarobot-0.2.0-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 a512bbeabe91e7e4ff846b94ef6a8c375ba49d787e11d81b2d356a7c0e2f8130
MD5 12055a7c883bd4793f34753d29c37f74
BLAKE2b-256 4f8da7d508b48003a94f362e8f705ee61c58d18396f30e5a2cb1775e36001fd2

See more details on using hashes here.

Provenance

The following attestation bundles were made for yarobot-0.2.0-cp313-cp313-manylinux_2_34_x86_64.whl:

Publisher: python-publish.yml on ogre2007/yarobot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page