---
name: mac-security-scanner
description: Сканер безопасности macOS (High Sierra+) — проверка на вирусы, малварь, adware, подозрительные процессы, автозагрузку, сеть, шифрование. С обновляемой базой сигнатур.
---

# macOS Security Scanner

## Описание

Собственный сканер безопасности для macOS. Не требует внешних зависимостей — только Python stdlib и built-in macOS утилиты.

- Проверка на вирусы, малварь, adware
- Анализ процессов и автозагрузки
- Проверка шифрования (FileVault), SIP, Gatekeeper, Firewall
- Сканирование DNS на adware-домены
- Проверка браузерных расширений
- Отчёт с оценкой безопасности

## Файлы

- `~/.hermes/scripts/mac-security-scanner.py` — основной скрипт (локальная версия под Hermes)
- `~/.hermes/scripts/malware-signatures.json` — база сигнатур (можно редактировать)
- `~/.hermes/scripts/malware-signatures-updater.py` — апдейтер сигнатур (запускать раз в месяц)
- Отчёты сохраняются в: `~/.hermes/scans/`

**Для публичного/standalone использования:** скачать из репозитория, сигнатуры подтянутся из той же папки автоматически.

## Важные детали реализации (из code review)

### Перевод на английский
Весь вывод сканера переведён на английский язык:
- Все категории (System, Encryption, Firewall, Processes, Startup, Scheduler, Network...)
- Статусы (ON ✅ / OFF ❌)
- Сообщения (Scanning system..., Report saved..., No suspicious processes found...)
- Shell-команды (echo 'No cron')
- JSON-ключи в `--report` (summary: good/warning/critical)

Это сделано для международной аудитории (README на английском).

### CLI-флаг --report
```bash
python3 scanner.py --report /tmp/security.json
```
Выдаёт JSON-отчёт со структурой:
```json
{
  "version": "1.1",
  "time": "2026-05-17T12:00:00",
  "hostname": "MacBook-Air.local",
  "score": 85,
  "findings": [...],
  "summary": "good",
  "total_findings": 21
}
```
Используется AI-агентами (Claude Code и др.) для программного потребления.
Без флага — обычный текстовый отчёт на stdout.

### README bugs (были исправлены)
1. Clone URL: было `Valkonstantinov` → стало `valldun1`
2. "~200 lines" → "~530 lines" (фактический размер)
3. `--report` флаг — теперь реально работает (был описан в README, но не существовал в коде)
4. "Auto-updating signatures" → "Updatable signatures" (честнее: не авто, а ручной запуск)

### Путь к сигнатурам
- **Локально (Hermes):** `~/.hermes/scripts/malware-signatures.json`
- **Публично (standalone):** `Path(__file__).parent / "malware-signatures.json"`
- Используется `Path(__file__).parent.resolve()` — работает и из папки, и из symlink

### Поиск Chrome-расширений
Структура папок расширений Chrome: `ext_id/VERSION/manifest.json`
❌ Старая ошибка: искал `ext_id/manifest.json` (всегда unknown)
✅ Исправлено: итерируемся по папкам версий, берём последнюю

### Удалён мёртвый код
- `SUSPICIOUS_PATTERNS` — не использовался
- `check_scheduler()` — убраны unused переменные `at_jobs`
- `check_launch_agents()` — убран бесполезный `if...pass`

### CPU whitelist
В `check_processes()` для high-CPU процессов исключаются только: kernel, WindowServer, Chrome, Hermes, Google Chrome.
Список намеренно узкий — лучше false positive, чем пропустить реальную угрозу.

## GitHub (Open Source)

Проект опубликован как **OldMacGuard**:
🔗 https://github.com/valldun1/OldMacGuard

Темы: `macos-security`, `antivirus`, `legacy-mac`, `high-sierra`, `malware-scanner`, `python`, `hermes-agent`, `ai-agent`, `opensource`

В репозитории:
- `scanner.py` — основная программа
- `update-signatures.py` — обновление сигнатур
- `malware-signatures.json` — база угроз
- `README.md` — описание (en) с инструкциями для AI-агентов

## Использование

```bash
python3 ~/.hermes/scripts/mac-security-scanner.py
```

## Как обновлять базу сигнатур

Отредактировать `~/.hermes/scripts/malware-signatures.json`:

1. Добавить новые процессы в `suspicious_processes` (ключ: имя процесса, значение: описание)
2. Добавить новые домены в `suspicious_domains`
3. Добавить новые приложения в `suspicious_app_names`
4. Увеличить `version` и обновить `updated`

```json
{
  "version": "1.1",
  "updated": "2026-05-17",
  "suspicious_processes": {
    "NewMalware": "Trojan",
    ...
  },
  ...
}
```

## Расписание

- **Сканирование:** каждое воскресенье в 10:00 (cron)
- **Обновление сигнатур:** каждое 1-е число месяца в 12:00 (cron)
Результат доставляется в Telegram.

## Автообновление сигнатур

База сигнатур автоматически обновляется раз в месяц из публичных источников:
- Objective-See Mac Malware list
- AdGuard Adware filters
- Apple XProtect (встроенный антивирус macOS)
- Известные семейства малвари

Запуск вручную:
```bash
python3 ~/.hermes/scripts/malware-signatures-updater.py
```

## Развитие скилла

Чтобы скилл развивался:
1. Периодически (раз в месяц) проверять свежие источники Mac-малвари:
   - objective-see.org/blog
   - theevilbit.github.io
   - reddit.com/r/MacOS
   - Обновлять malware-signatures.json новыми названиями
2. Если сканер нашёл что-то новое — добавить это в базу сигнатур
3. Если алгоритм сканера можно улучшить — обновлять mac-security-scanner.py

## Типичный отчёт

```
============================================================
🍎 macOS Security Scan — MacBook-Air.local
   Time: 2026-05-17T12:00:00
   Security score: 85/100
============================================================

📁 Processes
  ✅ No suspicious processes found

📁 Applications
  🔴 [CRITICAL] MPlayerX (Adware bundle)
     Found in /Applications/
     💡 Remove: sudo rm -rf '/Applications/MPlayerX'

📁 Network
  🟠 [HIGH] Suspicious domain resolves: search.genieo.com → 1.2.3.4

...

📊 TOTAL: 10 findings | Score: 85/100
✅ System is in good shape
============================================================
```
