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

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

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

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

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

Категории

Все категории
Loading categories
SSHintel — Автономный SSH-хоніпот для перехоплення взаємодій атакуючих і перетворення їх на структуровану розвідку з кібербезпеки. | Kitploit
Инструменты/GitHubGitHub/sonitbahl/sshintel
Сетевая безопасностьРазведка угрозОбнаружение ВторженийРеагирование на ИнцидентыАнализ Журналов
GitHubsonitbahl/sshintel

SSHintel

Автономный SSH-хоніпот для перехоплення взаємодій атакуючих і перетворення їх на структуровану розвідку з кібербезпеки.

Репозиторий
131 день назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

SSHintel — Легковесный SSH-хоніпот

License: MIT Python Last Commit Repo Size

SSHintel — это легковесный SSH-хоніпот, созданный с использованием Python и Paramiko. Он имитирует фейковую Linux-оболочку для регистрации несанкционированных попыток доступа, перехвата учетных данных и анализа поведения атакующих в контролируемой среде.


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

  • Регистрирует попытки входа по SSH с указанием IP, имени пользователя и пароля
  • Предоставляет имитированную Linux-оболочку (фейковое, in-memory окружение)
  • Поддерживает широкий набор команд разведки и навигации (ls, cd, pwd, , , , , , , , , , , , , , , и др.)
cat
echo
grep
find
tree
head
tail
wc
stat
ps
df
free
env
id
whoami
  • Опциональный режим --tarpit для замедления атакующих с задержкой вывода
  • Изолированная для каждой сессии фейковая файловая система с поддержкой создания и чтения файлов
  • Локальная веб-панель для визуализации собранной телеметрии безопасности (сессии, команды, попытки аутентификации, топ атакующих)
  • Просмотр расследования сессии — выберите любую сессию и восстановите полную хронологию атаки, включая исходный IP, результат аутентификации, каждую выполненную команду с её рабочей директорией и продолжительность сессии
  • Всё имитируется — команды никогда не выполняются на хосте, никогда не обращаются к реальной файловой системе и не отправляют сетевых запросов.
  • SSHintel — это не полноценная Bash/Linux-оболочка. Он имитирует правдоподобное подмножество распространённых команд для сбора телеметрии атакующих. Команды обрабатываются лёгким реестром; добавление команды означает добавление небольшой функции-обработчика.


    🛠️ Установка

    1. 📦 Установка зависимостей

    root@kitploit:~
    pip install -r requirements.txt
    

    Примечание: SSH-ключ хоста генерируется автоматически при первом запуске. Ручная генерация ключей не требуется.


    🚀 Запуск хоніпота

    Запустите хоніпот с указанным портом, именем пользователя и паролем:

    root@kitploit:~
    python3 run.py serve --port 2222 --username user1 --password pass123
    

    Порт по умолчанию — 2222, хост — 0.0.0.0.

    Хоніпот автоматически генерирует SSH-ключ хоста в static/server.key при первом запуске, если он не существует. Ручная генерация ключей не требуется.

    Для включения режима tarpit:

    root@kitploit:~
    python3 run.py serve --port 2222 --username user1 --password pass123 --tarpit
    

    Для отключения телеметрии SQLite (только JSONL):

    root@kitploit:~
    python3 run.py serve --port 2222 --username user1 --password pass123 --no-db
    

    🛡️ Лимиты подключений и таймауты

    SSHintel защищает от исчерпания ресурсов из-за множества одновременных подключений или подключений, поддерживаемых бесконечно. Это настраивается через CLI:

    ФлагПо умолчаниюНазначение
    --max-connections50Максимальное количество одновременных активных подключений; дополнительные подключения отклоняются и регистрируются как событие connection_rejected
    --auth-timeout60 (с)Время, отведённое на завершение SSH-рукопожатия/аутентификации; зависшие клиенты отключаются
    --session-idle-timeout300 (с)Таймаут бездействия для аутентифицированной оболочки; бездействующая сессия завершается, но активно печатающий атакующий никогда не убивается

    Пример:

    root@kitploit:~
    python3 run.py serve --port 2222 --username user1 --password pass123 \
      --max-connections 25 --auth-timeout 30 --session-idle-timeout 300
    

    Когда открыто слишком много подключений, дополнительное подключение немедленно закрывается, и в JSONL-журнал записывается событие безопасности connection_rejected (с reason: connection_limit). Зависшая аутентификация регистрируется как отключение с reason: auth_timeout; бездействующая оболочка завершается с reason: idle_timeout.

    Режим tarpit намеренно отправляет вывод медленно, чтобы удерживать атакующего, поэтому цикл баннера tarpit не подчиняется таймауту бездействия — но tarpit-сессии учитываются в лимите подключений.


    📊 Панель управления

    SSHintel включает локальную веб-панель, которая визуализирует телеметрию безопасности, хранящуюся в SQLite.

    Запуск панели

    root@kitploit:~
    python3 run.py dashboard
    

    Затем откройте http://localhost:5000 в браузере.

    Панель по умолчанию читает данные из базы SQLite в data/sshintel.db. Сначала запустите хоніпот, чтобы телеметрия собиралась, затем запустите панель и наблюдайте, как она заполняется.

    Что она отображает

    • Карточки KPI — общее количество сессий, уникальные исходные IP-адреса, попытки аутентификации, успешные/неудачные аутентификации и выполненные команды
    • График активности — подключения с течением времени, сгруппированные по часам
    • Топ команд — наиболее часто выполняемые команды атакующих
    • Целевые имена пользователей — какие имена пользователей пытаются использовать атакующие
    • Недавние сессии — нажмите на любой ID сессии для её расследования
    • Недавняя активность — последние события телеметрии в таблице с поиском

    Расследование сессии

    Нажмите на ID сессии (или перейдите по адресу /session/<session_id>), чтобы открыть просмотр расследования сессии, который восстанавливает одну атаку в хронологическом порядке:

    • Сводка сессии — исходный IP, имя пользователя, время начала/окончания, продолжительность, результат аутентификации, причина отключения
    • Хронология атаки — каждое событие (подключение, попытки аутентификации, команды, отключение) в хронологическом порядке
    • Последовательность команд — компактный вид $ команда всего, что вводил атакующий, с рабочими директориями

    Пример рабочего процесса

    root@kitploit:~
    # Терминал 1: запуск хоніпота
    python3 run.py serve --port 2222 --username user1 --password pass123
    
    # Терминал 2: запуск панели
    python3 run.py dashboard
    
    # Терминал 3: имитация атакующего
    ssh user1@localhost -p 2222
    # (выполните несколько команд, затем выйдите)
    

    Затем откройте http://localhost:5000, чтобы просмотреть захваченную активность.

    Панель поддерживает живую телеметрию — она опрашивает хоніпот каждые 2 секунды и обновляется автоматически. Новые сессии, команды и события появляются в реальном времени без обновления страницы. Индикатор Live (● Live) показывает статус подключения.


    🔐 Тестирование из другого терминала

    Откройте второй терминал и попробуйте подключиться:

    root@kitploit:~
    ssh user1@localhost -p 2222
    

    Если учетные данные совпадают, вы попадёте в эмулированную оболочку.


    🚑 Опционально: Очистка известных хостов (при повторном подключении)

    Чтобы удалить устаревшие SSH-отпечатки:

    root@kitploit:~
    notepad "%USERPROFILE%\.ssh\known_hosts"
    

    Удалите соответствующую строку, содержащую localhost или IP хоніпота.


    📝 Регистрируемая информация

    • Учетные данные регистрируются в creds_logger
    • Команды оболочки регистрируются через funnel_logger
    • Структурированные события безопасности записываются в log_files/events.jsonl в формате JSON Lines (JSONL) — один корректный JSON-объект на строку

    Каждое событие JSONL включает UTC ISO-8601 timestamp, event_type, уникальный session_id и source_ip. Подключения, попытки/результаты аутентификации, выполнение команд, активация tarpit и отключения — всё регистрируется как структурированные события.

    Каждое входящее SSH-подключение отслеживается как независимая сессия со своим session_id. Сессия записывает исходный IP, время подключения/отключения, результат аутентификации и продолжительность подключения, и каждое событие, сгенерированное в рамках этого подключения, несёт тот же session_id (поэтому попытки аутентификации, команды и отключения можно связать с одним подключением). Сессии изолированы для каждого подключения — состояние не разделяется между одновременными клиентами.

    Каждая сессия также получает свою собственную изолированную, in-memory фейковую файловую систему — имитированная файловая система создаётся заново для каждого подключения и очищается при завершении подключения. Файлы, директории и рабочая директория, созданные или изменённые одним атакующим, никогда не видны другому атакующему, подключённому одновременно. Вся файловая система имитируется в памяти Python и никогда не касается реальной файловой системы хоста.

    Текущие значения event_type: connect, auth_attempt, auth_success, auth_failure, command, disconnect, connection_rejected, tarpit.


    📂 Структура файлов

    root@kitploit:~
    SSHintel/
    ├── honeypot/                  # Основная логика хоніпота
    │   ├── __init__.py
    │   ├── main.py                # Цикл приёма + ограничение подключений
    │   ├── handlers.py            # Настройка SSH-транспорта + эмулированная оболочка
    │   ├── server.py              # Интерфейс сервера Paramiko (аутентификация)
    │   ├── session.py             # Отслеживание сессии для каждого подключения
    │   ├── fs.py                  # In-memory фейковая файловая система (изолирована для каждой сессии)
    │   ├── shell.py               # Фейковая оболочка: реестр команд + диспетчер
    │   ├── limits.py              # Потокобезопасное ограничение одновременных подключений
    │   ├── logger.py              # JSONL-регистрация событий + мост SQLite
    │   └── telemetry_store.py     # Хранилище телеметрии SQLite + слой запросов
    │
    ├── dashboard/                 # Локальная веб-панель
    │   ├── app.py                 # Приложение Flask + API-маршруты
    │   ├── templates/
    │   │   ├── index.html         # Основной шаблон панели
    │   │   └── session.html       # Шаблон расследования сессии
    │   └── static/
    │       ├── style.css          # Стили панели
    │       ├── dashboard.js       # Основной JS панели (живые обновления)
    │       └── session.js         # JS расследования сессии
    │
    ├── log_files/                 # Журналы выполнения (игнорируются git)
    │   ├── creds_audits.log       # Попытки ввода учетных данных
    │   ├── cmd_audits.log         # Журнал аудита команд
    │   └── events.jsonl           # Структурированные события безопасности JSONL
    │
    ├── data/                      # База данных SQLite (игнорируется git)
    │   └── sshintel.db
    │
    ├── static/                    # SSH-ключ хоста (автоматически генерируется)
    │   └── server.key
    │
    ├── .github/workflows/         # Конфигурация CI
    │   └── tests.yml
    │
    ├── Dockerfile
    ├── README.md
    ├── requirements.txt           # Зависимости выполнения (paramiko, flask)
    ├── requirements-dev.txt       # Тестовые зависимости (pytest, pytest-cov)
    └── run.py                     # Точка входа CLI
    

    💪 Запуск с Docker (альтернативный метод)

    Если вы предпочитаете запускать хоніпот в контейнеризированной среде, вы можете использовать включённый Dockerfile.

    🔨 Сборка Docker-образа

    root@kitploit:~
    docker build -t sshintel .
    

    Это создаёт Docker-образ с именем sshintel.


    🚀 Запуск контейнера

    root@kitploit:~
    docker run -p 2222:2222 sshintel
    

    Это:

    • Автоматически сгенерирует приватный SSH-ключ в static/server.key (если он ещё не существует)
    • Запустит хоніпот на порту 2222 с учетными данными по умолчанию:
      username: user1, password: pass123

    🔮 Тестирование хоніпота

    Откройте второй терминал и подключитесь через SSH:

    root@kitploit:~
    ssh user1@localhost -p 2222
    

    Вы попадёте в имитированную оболочку, если учетные данные совпадают.


    🧼 Остановка и очистка

    Чтобы остановить контейнер:

    root@kitploit:~
    docker ps  # Найдите ID контейнера
    docker stop <container_id>
    

    Чтобы удалить образ:

    root@kitploit:~
    docker rmi sshintel
    

    Вы также можете экспортировать образ с помощью docker save -o sshintel.tar sshintel и загрузить его позже с помощью docker load -i sshintel.tar.


    📄 Лицензия

    Этот проект лицензирован в соответствии с лицензией MIT.


    👤 Автор

    Sonit Bahl
    🔗 LinkedIn
    🔗 Портфолио

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