Files

██████╗ ██╗   ██╗███╗   ██╗
██╔══██╗╚██╗ ██╔╝████╗  ██║
███████║ ╚████╔╝ ██╔██╗ ██║
██╔══██║  ╚██╔╝  ██║╚██╗██║
██║  ██║   ██║   ██║ ╚████║
╚═╝  ╚═╝   ╚═╝   ╚═╝  ╚═══╝
⚔️ AYN ANTIVIRUS v1.0.0 ⚔️
Server Protection Suite

Python 3.9+ License: MIT Platform: Linux Version 1.0.0


AYN Antivirus

Comprehensive anti-virus, anti-malware, anti-spyware, and anti-cryptominer protection for Linux servers.

AYN Antivirus is a purpose-built security suite designed for server environments. It combines signature-based detection, YARA rules, heuristic analysis, and live system inspection to catch threats that traditional AV tools miss — from cryptominers draining your CPU to rootkits hiding in kernel modules.


Features

  • 🛡️ Real-time file system monitoring — watches directories with inotify/FSEvents via watchdog, scans new and modified files instantly
  • 🔍 Deep file scanning with multiple detection engines — parallel, multi-threaded scans across signature, YARA, and heuristic detectors
  • 🧬 YARA rule support — load custom and community YARA rules for flexible pattern matching
  • 📊 Heuristic analysis — Shannon entropy scoring, obfuscation detection, reverse-shell patterns, permission anomalies
  • ⛏️ Cryptominer detection — process-level, network-level, and file-content analysis (stratum URLs, wallet addresses, pool domains)
  • 🕵️ Spyware & keylogger detection — identifies keyloggers, screen/audio capture tools, data exfiltration, and shell-profile backdoors
  • 🦠 Rootkit detection — hidden processes, hidden kernel modules, LD_PRELOAD hijacking, tampered logs, hidden network ports
  • 🌐 Auto-updating threat signatures — pulls from abuse.ch feeds (MalwareBazaar, ThreatFox, URLhaus, Feodo Tracker) and Emerging Threats
  • 🔒 Encrypted quarantine vault — isolates malicious files with Fernet (AES-128-CBC + HMAC-SHA256) encryption and JSON metadata
  • 🔧 Auto-remediation & patching — kills rogue processes, fixes permissions, blocks IPs/domains, cleans cron jobs, restores system binaries
  • 📝 Reports in Text, JSON, HTML — generate human-readable or machine-parseable reports from scan results
  • Scheduled scanning — built-in cron-style scheduler for unattended operation

Quick Start

# Install
pip install .

# Update threat signatures
sudo ayn-antivirus update

# Run a full scan
sudo ayn-antivirus scan

# Quick scan (high-risk dirs only)
sudo ayn-antivirus scan --quick

# Check protection status
ayn-antivirus status

Installation

From pip (local)

pip install .

Editable install (development)

pip install -e ".[dev]"

From source with Make

make install        # production
make dev-install    # development (includes pytest, black, ruff)

System dependencies

AYN uses yara-python for rule-based detection. On most systems pip handles this automatically, but you may need the YARA C library:

Distro Command
Debian / Ubuntu sudo apt install yara libyara-dev
RHEL / CentOS / Fedora sudo dnf install yara yara-devel
Arch sudo pacman -S yara
macOS (Homebrew) brew install yara

After the system library is installed, pip install yara-python (or pip install .) will link against it.


Usage

All commands accept --verbose / -v for detailed output and --config <path> to load a custom YAML config file.

File System Scanning

# Full scan — all configured paths
sudo ayn-antivirus scan

# Quick scan — /tmp, /var/tmp, /dev/shm, crontabs
sudo ayn-antivirus scan --quick

# Deep scan — includes memory and hidden artifacts
sudo ayn-antivirus scan --deep

# Scan a single file
ayn-antivirus scan --file /tmp/suspicious.bin

# Targeted path with exclusions
sudo ayn-antivirus scan --path /home --exclude '*.log' --exclude '*.gz'

Process Scanning

# Scan running processes for miners & suspicious CPU usage
sudo ayn-antivirus scan-processes

Checks every running process against known miner names (xmrig, minerd, ethminer, etc.) and flags anything above the CPU threshold (default 80%).

Network Scanning

# Inspect active connections for mining pool traffic
sudo ayn-antivirus scan-network

Compares remote addresses against known mining pool domains and suspicious ports (3333, 4444, 5555, 14444, etc.).

Update Signatures

# Fetch latest threat intelligence from all feeds
sudo ayn-antivirus update

# Force re-download even if signatures are fresh
sudo ayn-antivirus update --force

Quarantine Management

# List quarantined items
ayn-antivirus quarantine list

# View details of a quarantined item
ayn-antivirus quarantine info 1

# Restore a quarantined file to its original location
sudo ayn-antivirus quarantine restore 1

# Permanently delete a quarantined item
ayn-antivirus quarantine delete 1

Real-Time Monitoring

# Watch configured paths in the foreground (Ctrl+C to stop)
sudo ayn-antivirus monitor

# Watch specific paths
sudo ayn-antivirus monitor --paths /var/www --paths /tmp

# Run as a background daemon
sudo ayn-antivirus monitor --daemon

Report Generation

# Plain text report to stdout
ayn-antivirus report

# JSON report to a file
ayn-antivirus report --format json --output /tmp/report.json

# HTML report
ayn-antivirus report --format html --output report.html

Auto-Fix / Remediation

# Preview all remediation actions (no changes)
sudo ayn-antivirus fix --all --dry-run

# Apply all remediations
sudo ayn-antivirus fix --all

# Fix a specific threat by ID
sudo ayn-antivirus fix --threat-id 3

Status Check

# View protection status at a glance
ayn-antivirus status

Displays signature freshness, last scan time, quarantine count, real-time monitor state, and engine toggles.

Configuration

# Show active configuration
ayn-antivirus config

# Set a config value (persisted to ~/.ayn-antivirus/config.yaml)
ayn-antivirus config --set auto_quarantine true
ayn-antivirus config --set scan_schedule '0 3 * * *'

Configuration

Config file locations

AYN loads configuration from the first file found (in order):

Priority Path
1 Explicit --config <path> flag
2 /etc/ayn-antivirus/config.yaml
3 ~/.ayn-antivirus/config.yaml

Config file options

# Directories to scan
scan_paths:
  - /
exclude_paths:
  - /proc
  - /sys
  - /dev
  - /run
  - /snap

# Storage
quarantine_path: /var/lib/ayn-antivirus/quarantine
db_path: /var/lib/ayn-antivirus/signatures.db
log_path: /var/log/ayn-antivirus/

# Behavior
auto_quarantine: false
scan_schedule: "0 2 * * *"
max_file_size: 104857600  # 100 MB

# Engines
enable_yara: true
enable_heuristics: true
enable_realtime_monitor: false

# API keys (optional)
api_keys:
  malwarebazaar: ""
  virustotal: ""

Environment variables

Environment variables override config file values. Copy .env.sample to .env and populate as needed.

Variable Description Default
AYN_SCAN_PATH Comma-separated scan paths /
AYN_QUARANTINE_PATH Quarantine vault directory /var/lib/ayn-antivirus/quarantine
AYN_DB_PATH Signature database path /var/lib/ayn-antivirus/signatures.db
AYN_LOG_PATH Log directory /var/log/ayn-antivirus/
AYN_AUTO_QUARANTINE Auto-quarantine on detection (true/false) false
AYN_SCAN_SCHEDULE Cron expression for scheduled scans 0 2 * * *
AYN_MAX_FILE_SIZE Max file size to scan (bytes) 104857600
AYN_MALWAREBAZAAR_API_KEY MalwareBazaar API key
AYN_VIRUSTOTAL_API_KEY VirusTotal API key

Threat Intelligence Feeds

AYN aggregates indicators from multiple open-source threat intelligence feeds:

Feed Source Data Type
MalwareBazaar bazaar.abuse.ch Malware sample hashes (SHA-256)
ThreatFox threatfox.abuse.ch IOCs — IPs, domains, URLs
URLhaus urlhaus.abuse.ch Malware distribution URLs
Feodo Tracker feodotracker.abuse.ch Botnet C2 IP addresses
Emerging Threats rules.emergingthreats.net Suricata / Snort IOCs
YARA Rules Community & custom Pattern-matching rules (signatures/yara_rules/)

Signatures are stored in a local SQLite database (signatures.db) with separate tables for hashes, IPs, domains, and URLs. Run ayn-antivirus update to pull the latest data.


Architecture

┌─────────────────────────────────────────────────────────────────┐
│                          CLI (cli.py)                           │
│                     Click commands + Rich UI                    │
└───────────────────────────────┬─────────────────────────────────┘
                                │
                    ┌───────────▼───────────┐
                    │    Core Scan Engine   │
                    │     (core/engine.py)  │
                    └───┬────┬────┬────┬───┘
                        │    │    │    │
          ┌─────────────┘    │    │    └─────────────┐
          ▼                  ▼    ▼                   ▼
 ┌─────────────────┐ ┌──────────────┐ ┌──────────────────────┐
 │    Detectors     │ │   Scanners   │ │    Monitor           │
 │ ┌─────────────┐ │ │ ┌──────────┐ │ │ ┌──────────────────┐ │
 │ │  Signature   │ │ │ │  File    │ │ │ │  Real-time       │ │
 │ │  YARA        │ │ │ │  Process │ │ │ │  (watchdog)      │ │
 │ │  Heuristic   │ │ │ │  Network │ │ │ └──────────────────┘ │
 │ │  Cryptominer │ │ │ │  Memory  │ │ └──────────────────────┘
 │ │  Spyware     │ │ │ └──────────┘ │
 │ │  Rootkit     │ │ └──────────────┘
 │ └─────────────┘ │
 └─────────────────┘
          │                              ┌──────────────────────┐
          │    ┌───────────────────┐     │     Signatures       │
          └───►│   Event Bus       │     │ ┌──────────────────┐ │
               │ (core/event_bus)  │     │ │  Feed Manager    │ │
               └──────┬────────────┘     │ │  Hash DB         │ │
                      │                  │ │  IOC DB          │ │
           ┌──────────┼──────────┐       │ │  YARA Rules      │ │
           ▼          ▼          ▼       │ └──────────────────┘ │
    ┌────────────┐ ┌────────┐ ┌───────┐  └──────────────────────┘
    │ Quarantine │ │Reports │ │Remedy │
    │   Vault    │ │  Gen.  │ │Patcher│
    │ (Fernet)   │ │txt/json│ │       │
    │            │ │  /html │ │       │
    └────────────┘ └────────┘ └───────┘

Module summary

Module Path Responsibility
CLI cli.py User-facing commands (Click + Rich)
Config config.py YAML & env-var configuration loader
Engine core/engine.py Orchestrates file/process/network scans
Event Bus core/event_bus.py Internal pub/sub for scan events
Scheduler core/scheduler.py Cron-based scheduled scans
Detectors detectors/ Pluggable detection engines (signature, YARA, heuristic, cryptominer, spyware, rootkit)
Scanners scanners/ File, process, network, and memory scanners
Monitor monitor/realtime.py Watchdog-based real-time file watcher
Quarantine quarantine/vault.py Fernet-encrypted file isolation vault
Remediation remediation/patcher.py Auto-fix engine (kill, block, clean, restore)
Reports reports/generator.py Text, JSON, and HTML report generation
Signatures signatures/ Feed fetchers, hash DB, IOC DB, YARA rules

Auto-Patching Capabilities

The remediation engine (ayn-antivirus fix) can automatically apply the following fixes:

Action Description
Fix permissions Strips SUID, SGID, and world-writable bits from compromised files
Kill processes Sends SIGKILL to confirmed malicious processes (miners, reverse shells)
Block IPs Adds iptables DROP rules for C2 and mining pool IP addresses
Block domains Redirects malicious domains to 127.0.0.1 via /etc/hosts
Clean cron jobs Removes entries matching suspicious patterns (curl|bash, xmrig, etc.)
Fix LD_PRELOAD Clears /etc/ld.so.preload entries injected by rootkits
Clean SSH keys Removes command= forced-command entries from authorized_keys
Remove startup entries Strips malicious lines from init scripts, systemd units, and rc.local
Restore binaries Reinstalls tampered system binaries via apt/dnf/yum package manager

Tip: Always run with --dry-run first to preview changes before applying.


Running as a Service

Create a systemd unit to run AYN as a persistent real-time monitor:

# /etc/systemd/system/ayn-antivirus.service
[Unit]
Description=AYN Antivirus Real-Time Monitor
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/ayn-antivirus monitor --daemon
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=10
User=root
Group=root

# Hardening
ProtectSystem=strict
ReadWritePaths=/var/lib/ayn-antivirus /var/log/ayn-antivirus
NoNewPrivileges=false
PrivateTmp=true

[Install]
WantedBy=multi-user.target
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable ayn-antivirus
sudo systemctl start ayn-antivirus

# Check status
sudo systemctl status ayn-antivirus

# View logs
sudo journalctl -u ayn-antivirus -f

Optionally add a timer unit for scheduled signature updates:

# /etc/systemd/system/ayn-antivirus-update.timer
[Unit]
Description=AYN Antivirus Signature Update Timer

[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target
# /etc/systemd/system/ayn-antivirus-update.service
[Unit]
Description=AYN Antivirus Signature Update

[Service]
Type=oneshot
ExecStart=/usr/local/bin/ayn-antivirus update
User=root
sudo systemctl enable --now ayn-antivirus-update.timer

Development

Prerequisites

  • Python 3.9+
  • YARA C library (for yara-python)

Setup

git clone <repo-url>
cd ayn-antivirus
pip install -e ".[dev]"

Run tests

make test
# or directly:
pytest --cov=ayn_antivirus tests/

Lint & format

make lint
# or directly:
ruff check ayn_antivirus/
black --check ayn_antivirus/

Auto-format

black ayn_antivirus/

Project layout

ayn-antivirus/
├── ayn_antivirus/
│   ├── __init__.py          # Package version
│   ├── __main__.py          # python -m ayn_antivirus entry point
│   ├── cli.py               # Click CLI commands
│   ├── config.py            # Configuration loader
│   ├── constants.py         # Thresholds, paths, known indicators
│   ├── core/
│   │   ├── engine.py        # Scan engine orchestrator
│   │   ├── event_bus.py     # Internal event system
│   │   └── scheduler.py     # Cron-based scheduler
│   ├── detectors/
│   │   ├── base.py          # BaseDetector ABC + DetectionResult
│   │   ├── signature_detector.py
│   │   ├── yara_detector.py
│   │   ├── heuristic_detector.py
│   │   ├── cryptominer_detector.py
│   │   ├── spyware_detector.py
│   │   └── rootkit_detector.py
│   ├── scanners/
│   │   ├── file_scanner.py
│   │   ├── process_scanner.py
│   │   ├── network_scanner.py
│   │   └── memory_scanner.py
│   ├── monitor/
│   │   └── realtime.py      # Watchdog-based file watcher
│   ├── quarantine/
│   │   └── vault.py         # Fernet-encrypted quarantine
│   ├── remediation/
│   │   └── patcher.py       # Auto-fix engine
│   ├── reports/
│   │   └── generator.py     # Report output (text/json/html)
│   ├── signatures/
│   │   ├── manager.py       # Feed orchestrator
│   │   ├── db/              # Hash DB + IOC DB (SQLite)
│   │   ├── feeds/           # Feed fetchers (abuse.ch, ET, etc.)
│   │   └── yara_rules/      # .yar rule files
│   └── utils/
│       ├── helpers.py
│       └── logger.py
├── tests/                   # pytest test suite
├── pyproject.toml           # Build config & dependencies
├── Makefile                 # Dev shortcuts
├── .env.sample              # Environment variable template
└── README.md

Contributing

  1. Fork the repo and create a feature branch
  2. Write tests for new functionality
  3. Ensure make lint and make test pass
  4. Submit a pull request

License

This project is licensed under the MIT License. See LICENSE for details.


⚔️ Stay protected. Stay vigilant. ⚔️