Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
ThreatLens — Python CLI-инструмент для быстрого анализа IOC (IP-адреса, домены, CVE) с использованием 6 бесплатных API Threat Intel. Вывод: цветной Excel, JSON, CSV. Использует: VT, Shodan, AbuseIPDB. | Kitploit
Инструменты/GitHubGitHub/abdaullahag/threatlens
Оборонительные ИнструментыУправление индикаторами компрометации (IOC)OSINT (Разведка открытых источников)Фиды и агрегаторы угрозАнализ уязвимостейСкриптинг и автоматизацияСбор информацииРазведка угрозРеагирование на ИнцидентыАнализ Журналов
GitHubabdaullahag/threatlens
8121 день назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →

ThreatLens

Python CLI-инструмент для быстрого анализа IOC (IP-адреса, домены, CVE) с использованием 6 бесплатных API Threat Intel. Вывод: цветной Excel, JSON, CSV. Использует: VT, Shodan, AbuseIPDB.

Репозиторий
Поделиться
ThreatLens — Multi-Source Threat Intelligence CLI

Awesome Python License: PolyForm Noncommercial Tests CI PRs Welcome Maintained


Исследуйте IP-адреса, домены, хеши и CVE через 6 бесплатных API-сервисов киберразведки — не переключаясь между вкладками браузера.

Быстрый старт · Использование · Архитектура · API-ключи · Скриншоты · Участие в разработке


🚀 С гордостью представлен в официальном репозитории Awesome OSINT.


📖 Обзор

ThreatLens — это единый инструмент командной строки, который объединяет поиск данных киберразведки по наиболее авторитетным бесплатным OSINT-источникам. Вместо того чтобы вставлять IP-адрес на пять разных сайтов, ThreatLens опрашивает их все параллельно, нормализует результаты и выдаёт чёткий вердикт — прямо в терминале или в аккуратном цветном отчёте Excel/JSON/CSV.

Создан для аналитиков SOC, специалистов по реагированию на инциденты, охотников за угрозами и всех, кому нужно быстрое и надёжное обогащение IOC без выхода из командной оболочки.

Почему ThreatLens

  • Одна команда вместо пяти вкладок браузера
  • Автоматически извлекает IOC прямо из сырых логов
  • Один сбойный или ограниченный по частоте API никогда не блокирует остальные
  • Полностью работает на бесплатных тарифах API
  • Локальный кеш SQLite — повторные запросы мгновенны
  • Ограничение бюджета запросов предотвращает неконтролируемые расходы на API

Не предназначен для

  • Конвейеров обнаружения в реальном времени/потоковой обработки
  • Платных/корпоративных источников разведки
  • Замены полноценной платформы SIEM или SOAR

✨ Возможности

ВозможностьПодробности
🎯 Типы IOCIP, домен, URL, хеш файла (MD5 / SHA1 / SHA256), CVE
🔌 Интегрированные APIAbuseIPDB, VirusTotal, AlienVault OTX, Shodan, URLScan.io, NVD
📄 Разбор логовАвтоматически извлекает все типы IOC из любого лога или текстового файла
📊 ОтчётыExcel (с цветовой кодировкой), JSON, CSV
💾 Локальный кешКеш SQLite с настраиваемым TTL — пропускает повторные запросы по известным IOC
🛡️ БезопасностьБлокировка редиректов, белый список хостов, маскировка API-ключей в логах, нейтрализация формул в электронных таблицах
🔒 Lockfilerequirements.lock с хешами SHA-256 для воспроизводимых установок
💻 Опыт работы с CLIПрогресс-бары Rich, цветные таблицы и чистый итоговый вердикт
🧩 АрхитектураМодульные обогатители, типизированные модели, строгое разделение ответственности
✅ Протестировано60 модульных и интеграционных тестов с pytest; CI через GitHub Actions
⚡ ОтказоустойчивостьОдин сбойный API никогда не блокирует остальные — ошибки изолируются и логируются

🚀 Быстрый старт

root@kitploit:~
# 1. Clone & install
git clone https://github.com/AbdaullahAG/threatlens.git
cd threatlens
pip install -r requirements.txt

# 2. Configure your API keys
cp config/keys.env.example config/keys.env
# → edit config/keys.env and fill in your keys

# 3. Run your first scan
python main.py -i 45.33.32.156

💡 NVD (поиск CVE) работает из коробки без API-ключа. Все остальные API предлагают бесплатный тариф, регистрация в котором занимает менее 2 минут — см. API-ключи ниже.

Воспроизводимая установка (с зафиксированными зависимостями)

root@kitploit:~
pip install --require-hashes -r requirements.lock

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

root@kitploit:~
# Investigate a single IP
python main.py -i 45.33.32.156
Базовый поиск по одному IOC
root@kitploit:~
# Investigate multiple IOC types at once
python main.py -i 45.33.32.156 -d malware.example.com \
  -s d41d8cd98f00b204e9800998ecf8427e -c CVE-2021-44228
Комбинируйте разные типы IOC в одном запуске
root@kitploit:~
# Parse a log file — all IOCs auto-extracted
python main.py --file /var/log/apache2/access.log
Массовое исследование прямо из сырых логов
root@kitploit:~
# Output JSON instead of Excel
python main.py -i 8.8.8.8 --format json
Машиночитаемый вывод для конвейеров
root@kitploit:~
# Use only specific APIs
python main.py -i 8.8.8.8 --apis abuseipdb virustotal
Ограничение обогащения выбранными источниками
root@kitploit:~
# Generate every report format at once
python main.py --file access.log --format all
Excel + JSON + CSV за один запуск
root@kitploit:~
# Lookup a CVE — no API key needed
python main.py -c CVE-2021-44228 --apis nvd --format json
Обогащение CVE через NIST NVD (бесплатно, без ключа)
root@kitploit:~
# Verbose / debug mode
python main.py -i 8.8.8.8 -v
Полное логирование запросов/ответов для диагностики
Все флаги CLI
ФлагОписание
-i, --ipIP-адрес(а) для исследования
-d, --domainДомен(ы) для исследования
-s, --hashХеш(и) файла — MD5 / SHA1 / SHA256
-c, --cveИдентификатор(ы) CVE, например CVE-2021-44228
--fileПуть к лог- или текстовому файлу для автоматического извлечения IOC
--apisОграничить обогащение определённым набором API
--formatФормат вывода: excel (по умолчанию) | json | csv | all
--outputКаталог для сохранения отчётов (по умолчанию: ./output)
--no-reportВыводить результаты только в терминал, не сохранять файл
--cache-pathПуть к SQLite для локального кеша (по умолчанию: .threatlens/investigations.db)
--cache-ttlВремя жизни кеша в секундах (по умолчанию: 3600)
--no-cacheПолностью обойти локальный кеш
--max-requestsОграничение на внешние вызовы API за запуск (по умолчанию: 250)
--max-iocsМаксимум уникальных IOC за запуск (по умолчанию: 1000)
--allow-private-iocsРазрешить приватные/loopback IP-адреса (по умолчанию отключено)
--delayЗадержка между вызовами API для настройки ограничения частоты
-v, --verboseВключить отладочное логирование

🏗️ Архитектура

root@kitploit:~
threat_intel_tool/
├── main.py                      # CLI entry point & argument parser
├── requirements.txt             # Runtime dependencies
├── requirements-dev.txt         # Dev/CI tooling (ruff, bandit, pip-audit, pip-tools)
├── requirements.lock            # Pinned lockfile with SHA-256 hashes
├── pytest.ini                   # pytest configuration (marks, etc.)
├── config/
│   └── keys.env                 # API keys (copy from keys.env.example)
├── output/                      # Generated reports land here
├── src/
│   ├── engine.py                # Main orchestrator (collect → enrich → report)
│   ├── models.py                # IOC & EnrichmentResult dataclasses
│   ├── storage.py               # SQLite cache & investigation history
│   ├── parsers/
│   │   └── ioc_parser.py        # Regex-based IOC extractor with validation
│   ├── enrichers/
│   │   ├── base.py              # Abstract base — safe HTTP client (redirect-block, budget, retry)
│   │   ├── registry.py          # Enricher dispatcher
│   │   ├── abuseipdb.py         # AbuseIPDB      (IP)
│   │   ├── virustotal.py        # VirusTotal     (IP / Domain / URL / Hash)
│   │   ├── otx.py               # AlienVault OTX (IP / Domain / URL / Hash)
│   │   ├── shodan.py            # Shodan         (IP)
│   │   ├── urlscan.py           # URLScan.io     (URL / Domain)
│   │   └── nvd.py               # NVD / NIST     (CVE — no key required)
│   ├── reporters/
│   │   ├── excel_reporter.py    # Color-coded Excel reports
│   │   ├── other_reporters.py   # JSON & CSV output
│   │   └── terminal_display.py  # Rich terminal tables
│   └── utils/
│       ├── config.py            # API key loader & runtime config
│       ├── logger.py            # Rich logging setup
│       ├── banner.py            # ASCII banner
│       ├── quota.py             # Per-run request budget (thread-safe)
│       └── security.py         # IOC validation, formula neutralisation, secret redaction
└── tests/
    ├── conftest.py              # pytest fixtures & --run-e2e flag
    ├── test_core.py             # IOC parser, verdict logic, cache round-trip (34 tests)
    ├── test_enrichers.py        # BaseEnricher HTTP edge-cases — mock only (9 tests)
    ├── test_reporters.py        # Excel/CSV formula protection + SQLite integration (17 tests)
    └── test_cli_e2e.py          # Full CLI run against real NVD API (opt-in, --run-e2e)

Принципы проектирования

  • Подключаемые обогатители — для добавления нового источника разведки достаточно создать новый файл в src/enrichers/, наследующий BaseEnricher. Изменения в других местах не требуются.
  • Типизированные IOC — типы IOC представлены перечислениями, а не сырыми строками, что позволяет выявлять ошибки на этапе разработки, а не во время выполнения.
  • Безопасный HTTP-клиент — BaseEnricher.get() обеспечивает работу только по HTTPS, белый список хостов, блокировку редиректов, обработку 429/Retry-After и ограничение бюджета запросов в одном месте.
  • Конфигурация, удобная для CI/CD — ключи читаются из config/keys.env с откатом к системным переменным окружения.
  • Ограничение частоты для каждого обогатителя — настраиваемая задержка (--delay) удерживает вас в пределах бесплатных тарифов каждого API.
  • Изоляция сбоев — каждая ошибка обогатителя перехватывается, логируется и сохраняется в result.errors; один сбойный API никогда не обрушит весь скан.
  • Безопасность электронных таблиц — все значения, записываемые в Excel и CSV, нейтрализуются против инъекции формул (префиксы =, +, -, @).

🔑 API-ключи

ПровайдерРегистрацияБесплатный тариф
AbuseIPDBБесплатно1 000 проверок/день
VirusTotalБесплатно4 запроса/мин · 500 запросов/день
AlienVault OTXБесплатноБез ограничений (публичный фид)
ShodanБесплатноОграниченное число запросов
URLScan.ioБесплатно5 000 запросов/день (поиск бесплатен)
NVD / NISTОпциональноКлюч не требуется

🧪 Тестирование

root@kitploit:~
# Run all unit and integration tests (no network required)
pytest tests/ -v --ignore=tests/test_cli_e2e.py

# With coverage report
pytest tests/ -v --ignore=tests/test_cli_e2e.py --cov=src --cov-report=term-missing

# Run the end-to-end CLI test (makes a real NVD request)
pytest tests/test_cli_e2e.py --run-e2e -v

Что тестируется

Файл тестовПокрытие
test_core.pyПарсер IOC (все типы + граничные случаи), логика вердикта, круговой тест кеша SQLite
test_enrichers.pyBaseEnricher.get() — блокировка редиректов, исчерпание бюджета, 429+Retry-After, маскировка API-ключей в логах, не-JSON ответ, некорректный JSON, белый список хостов, блокировка схемы HTTP
test_reporters.pyНейтрализация инъекции формул в Excel и CSV (7 вариантов префиксов), сквозная передача чисел, истечение TTL SQLite, upsert, запись исследования
test_cli_e2e.pyПолный запуск подпроцесса: python main.py -c CVE-2021-44228 --apis nvd --format json → код выхода 0, корректный JSON, правильный вердикт

🔐 Безопасность

МераРеализация
Только HTTPSBaseEnricher.get() отклоняет любой URL, не начинающийся с https://, до выполнения запроса
Белый список хостовКаждый обогатитель объявляет allowed_hosts; запросы к неизвестным хостам молча отбрасываются
Блокировка редиректовВсе запросы используют allow_redirects=False
429 / Retry-AfterОдна автоматическая повторная попытка с соблюдением заголовка Retry-After (не более 15 с)
Бюджет запросов--max-requests жёстко ограничивает общее число вызовов API за запуск
Маскировка API-ключейВ исключениях и строках логов сырые значения ключей заменяются на [REDACTED]
Инъекция формулВсе значения ячеек Excel и CSV очищаются с помощью spreadsheet_value()
Валидация IOCКаждый IOC, переданный через CLI, проверяется и нормализуется перед обогащением
Защита от приватных IPПриватные/loopback адреса отклоняются по умолчанию (--allow-private-iocs для переопределения)
Аудит зависимостейpip-audit запускается в CI; requirements.lock фиксирует все хеши для воспроизводимых установок

📊 Пример вывода

Терминал:

root@kitploit:~
╭──────────────────────────── IOC Collection ─────────────────────────────╮
│ Found 4 IOCs to investigate                                              │
│   CVE: 1  Domain: 1  Hash: 1  IP: 1                                     │
╰──────────────────────────────────────────────────────────────────────────╯
✓ Active APIs: abuseipdb, virustotal, otx, shodan, urlscan, nvd

🌐 IP Address Results
┌─────────────────┬──────────────┬──────────┬─────────┬────────────────────┐
│ IP Address      │ Verdict      │ Abuse %  │ Country │ ISP / Org          │
├─────────────────┼──────────────┼──────────┼─────────┼────────────────────┤
│ 45.33.32.156    │ Suspicious   │ 42       │ US      │ Linode             │
└─────────────────┴──────────────┴──────────┴─────────┴────────────────────┘

⚠️  CVE Results
┌──────────────────┬──────────┬──────┬──────────────┐
│ CVE ID           │ Severity │ CVSS │ Published    │
├──────────────────┼──────────┼──────┼──────────────┤
│ CVE-2021-44228   │ Critical │ 10.0 │ 2021-12-10   │
└──────────────────┴──────────┴──────┴──────────────┘

Отчёт Excel: Многостраничная книга с цветовой кодировкой вердиктов (🔴 вредоносный · 🟡 подозрительный · 🟢 чистый), сохраняется в output/ThreatLens_Report_<timestamp>.xlsx


🖼️ Скриншоты

IP Usage Combo lookup #2 Combo lookup #1 Clean IP verdict Malicious and safe IP comparison Hash lookup


🗺️ План развития

  • Локальный кеш SQLite с TTL
  • Бюджет запросов на запуск
  • Валидация IOC и защита от приватных IP
  • Защита от инъекции формул в электронных таблицах
  • Маскировка API-ключей в логах
  • Зафиксированный lockfile с хешами SHA-256
  • Конвейер CI (GitHub Actions)
  • Асинхронное/параллельное обогащение для ускорения сканов с множеством IOC
  • Опциональный Docker-образ
  • Формат экспорта STIX/TAXII
  • Веб-панель (только чтение) для просмотра отчётов
  • Дополнительные обогатители (GreyNoise, IPQualityScore)

Есть идея? Откройте issue — вклад и предложения приветствуются.


🤝 Участие в разработке

Вклад приветствуется и ценится!

  1. Сделайте форк репозитория
  2. Создайте ветку для новой функции: git checkout -b feature/my-feature
  3. Добавьте тесты для любого нового поведения
  4. Убедитесь, что pytest tests/ -v --ignore=tests/test_cli_e2e.py проходит и ruff check . не выдаёт ошибок
  5. Откройте pull request с чётким описанием изменения

Новые обогатители, исправления ошибок, улучшения документации и покрытие тестами — всё это отличные первые вклады — см. Архитектура, чтобы понять, как устроены обогатители.


📄 Лицензия

Этот проект распространяется под лицензией PolyForm Noncommercial License 1.0.0.

Вы можете свободно использовать, изучать, изменять и распространять этот код в личных, образовательных или исследовательских целях. Коммерческое использование не разрешено без предварительного письменного разрешения автора ([email protected]).


⚠️ Правовая оговорка

Этот инструмент предназначен только для образовательных целей и авторизованного тестирования безопасности. Пользователь несёт исключительную ответственность за соблюдение условий обслуживания интегрированных API и всех применимых законов. Автор не несёт никакой ответственности и не отвечает за любое неправомерное использование, незаконную деятельность или ущерб, причинённый этой программой.


Если ThreatLens сэкономил вам время, поставьте ему ⭐ — это поможет другим узнать о проекте.

Скачать инструмент