"""Constants for AYN Antivirus.""" import os # --- Default Paths --- DEFAULT_CONFIG_PATHS = [ "/etc/ayn-antivirus/config.yaml", os.path.expanduser("~/.ayn-antivirus/config.yaml"), ] DEFAULT_SCAN_PATH = "/" DEFAULT_QUARANTINE_PATH = "/var/lib/ayn-antivirus/quarantine" DEFAULT_DB_PATH = "/var/lib/ayn-antivirus/signatures.db" DEFAULT_LOG_PATH = "/var/log/ayn-antivirus/" DEFAULT_YARA_RULES_DIR = os.path.join(os.path.dirname(__file__), "signatures", "yara_rules") QUARANTINE_ENCRYPTION_KEY_FILE = "/var/lib/ayn-antivirus/.quarantine.key" # --- Database --- DB_SCHEMA_VERSION = 1 # --- Scan Limits --- SCAN_CHUNK_SIZE = 65536 # 64 KB MAX_FILE_SIZE = 100 * 1024 * 1024 # 100 MB HIGH_CPU_THRESHOLD = 80 # percent # --- Suspicious File Extensions --- SUSPICIOUS_EXTENSIONS = [ ".php", ".sh", ".py", ".pl", ".rb", ".js", ".exe", ".elf", ".bin", ".so", ".dll", ] # --- Crypto Miner Process Names --- CRYPTO_MINER_PROCESS_NAMES = [ "xmrig", "minerd", "cpuminer", "ethminer", "claymore", "phoenixminer", "nbminer", "t-rex", "gminer", "lolminer", "bfgminer", "cgminer", "ccminer", "nicehash", "excavator", "nanominer", "teamredminer", "wildrig", "srbminer", "xmr-stak", "randomx", "cryptonight", ] # --- Crypto Pool Domains --- CRYPTO_POOL_DOMAINS = [ "pool.minergate.com", "xmrpool.eu", "nanopool.org", "mining.pool.observer", "supportxmr.com", "pool.hashvault.pro", "moneroocean.stream", "minexmr.com", "herominers.com", "2miners.com", "f2pool.com", "ethermine.org", "unmineable.com", "nicehash.com", "prohashing.com", "zpool.ca", "miningpoolhub.com", ] # --- Suspicious Mining Ports --- SUSPICIOUS_PORTS = [ 3333, 4444, 5555, 7777, 8888, 9999, 14433, 14444, 45560, 45700, ] # --- Known Rootkit Files --- KNOWN_ROOTKIT_FILES = [ "/usr/lib/libproc.so", "/usr/lib/libext-2.so", "/usr/lib/libns2.so", "/usr/lib/libpam.so.1", "/dev/shm/.x", "/dev/shm/.r", "/tmp/.ICE-unix/.x", "/tmp/.X11-unix/.x", "/usr/bin/sourcemask", "/usr/bin/sshd2", "/usr/sbin/xntpd", "/etc/cron.d/.hidden", "/var/tmp/.bash_history", ] # --- Suspicious Cron Patterns --- SUSPICIOUS_CRON_PATTERNS = [ r"curl\s+.*\|\s*sh", r"wget\s+.*\|\s*sh", r"curl\s+.*\|\s*bash", r"wget\s+.*\|\s*bash", r"/dev/tcp/", r"base64\s+--decode", r"xmrig", r"minerd", r"cryptonight", r"\bcurl\b.*-o\s*/tmp/", r"\bwget\b.*-O\s*/tmp/", r"nohup\s+.*&", r"/dev/null\s+2>&1", ] # --- Malicious Environment Variables --- MALICIOUS_ENV_VARS = [ "LD_PRELOAD", "LD_LIBRARY_PATH", "LD_AUDIT", "LD_DEBUG", "HISTFILE=/dev/null", "PROMPT_COMMAND", "BASH_ENV", "ENV", "CDPATH", ] # ── Dashboard ────────────────────────────────────────────────────────── DEFAULT_DASHBOARD_HOST = "0.0.0.0" DEFAULT_DASHBOARD_PORT = 7777 DEFAULT_DASHBOARD_DB_PATH = "/var/lib/ayn-antivirus/dashboard.db" DASHBOARD_COLLECTOR_INTERVAL = 10 # seconds between metric samples DASHBOARD_REFRESH_INTERVAL = 30 # JS auto-refresh seconds DASHBOARD_MAX_THREATS_DISPLAY = 50 DASHBOARD_MAX_LOG_LINES = 20 DASHBOARD_SCAN_HISTORY_DAYS = 30 DASHBOARD_METRIC_RETENTION_HOURS = 168 # 7 days # Dashboard authentication DEFAULT_DASHBOARD_USERNAME = "admin" DEFAULT_DASHBOARD_PASSWORD = "ayn@2024"