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

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

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

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

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

Категории

Все категории
Loading categories
riotpot — Хоніпот для IoT и операционных технологий | Kitploit
Инструменты/GitHubGitHub/aau-network-security/riotpot
Оборонительные ИнструментыБезопасность IoTБезопасность SCADA/ICSСбор информацииСетевая безопасность
GitHubaau-network-security/riotpot

riotpot

Хоніпот для IoT и операционных технологий

Репозиторий
10528163 лет назадПроверено Kitploit

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
| :loudspeaker: ВНИМАНИЕ!!! |
|:---------------------------|
| Этот репозиторий был перемещён в [проект Honeynet](https://github.com/honeynet/riotpot) :) |

# RIoTPot

<!-- markdownlint-disable MD033 -->
<div align="center" style="box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25); background-color: #EDF2F4; border-radius: 4px; margin: 2em 0;">
  <img src="https://assets.kitploit.com/production/public/readmes/4899/f848f9e56cc0e660137556ca8ee44ff935c577dd24352435beb10c364dbfa2f5.png" height="100px;" style="margin: 1em 0; padding: 1em;">
  <div>
    <!-- Workflow status -->
    <a href="https://github.com/aau-network-security/RIoTPot/actions">
        <img alt="GitHub Actions status" src="https://github.com/aau-network-security/RIoTPot/workflows/cyber/badge.svg">
    </a>
    <a href="https://pkg.go.dev/riopot">
        <img src="https://pkg.go.dev/badge/riopot.svg">
    </a>
    <a href="https://goreportcard.com/badge/github.com/aau-network-security/RIoTPot">
        <img src="https://goreportcard.com/badge/github.com/aau-network-security/RIoTPot?style=flat-square">
    </a>
    <a href="">
        <img src="https://img.shields.io/github/release/RIoTPot/project-layout.svg?style=flat-square">
    </a>
  </div>
</div>

RIoTPot — это гибридный honeypot взаимодействия, в первую очередь ориентированный на эмуляцию протоколов IoT и OT, хотя он также способен эмулировать другие сервисы. По сути, RIoTPot действует как прокси-сервис для других honeypot-ов, включённых в систему. Поэтому вы можете запускать любые honeypot-ы и другие сервисы вместе с RIoTPot. Кроме того, есть веб-приложение с пользовательским интерфейсом, которое вы можете использовать для управления маршрутизацией.

Honeypot поставляется с несколькими низкоинтерактивными сервисами, готовыми к использованию. Поскольку эти сервисы написаны как [плагины](https://pkg.go.dev/plugin), они поддерживаются только на Linux; однако вы можете запустить RIoTPot без них. В следующей таблице приведён список сервисов, включённых в RIoTPot по умолчанию, их внутренние порты и прокси-порты.

<div align="center">

| Сервис | Внутренний порт | Прокси-порт |
| ------- | ------------- | ---------- |
| Echo    | 20007         | 7          |
| SSH     | 20022         | 22         |
| Telnet  | 20023         | 23         |
| HTTP    | 28080         | 80         |
| Modbus  | 20502         | 502        |
| MQTT    | 21883         | 1883       |
| CoAP    | 25683         | 5683       |

</div>

> ## Содержание
>
> - [RIoTPoT](#riotpot)
>   - [1. Architecture](#1-architecture)
>   - [2. How to use RIoTPot](#2-how-to-use-riotpot)
>   - [3. Commands](#3-commands)

## 1. Architecture

Архитектура RIoTPot основана на прокси-соединениях с внутренними и окружающими (или внешними) сервисами (например, honeypot-ами, полноценными сервисами, контейнерами, удалёнными хостами и т.д.). Для этого honeypot управляет рядом определённых пользователем `прокси`, которые ретранслируют соединения между сервисами и RIoTPot [^proxies]. Таким образом, RIoTPot может решать, как и куда направлять входящие атаки. Логика, используемая для определения того, как обрабатывать входящую атаку, реализована в виде `промежуточных слоёв` [^middlewares]. Для управления сервисами, промежуточными слоями и прокси RIoTPot поставляется с REST API [^api] и веб-интерфейсом [^ui] «из коробки». Веб-интерфейс доступен через браузер по адресу `localhost:2022`, а с конечными точками API можно ознакомиться по адресу `localhost:2022/api/swagger`, где отображается интерфейс [Swagger](https://swagger.io/).

[^proxies]: Внутренние и окружающие сервисы недоступны через Интернет.
    Внутренние сервисы интегрированы и доступны только для RIoTPot.
    Эти сервисы загружаются при запуске и не могут быть удалены, но их можно остановить.
    Окружающие сервисы **должны** находиться в той же сети, что и RIoTPot.
    Внешние сервисы **должны** заносить RIoTPot в белый список **только**.

[^middlewares]: Промежуточные слои в настоящее время находятся в разработке.

[^api]: API RIoTPot **не должен** быть доступен из Интернета.
    Независимо от этого, в настоящее время API принимает соединения только с локального хоста.
    В будущем это может быть изменено путём предоставления белого списка хостов и стандартной аутентификации.

[^ui]: Хотя веб-интерфейс может использоваться как отдельный компонент, он встроен в бинарный файл RIoTPot.

**Рисунок 1** показывает архитектуру RIoTPot, включая два основных приложения, составляющих RIoTPot (сам RIoTPot и RIoTPot UI), и их компоненты, а также раздел для внешних (или смежных) сервисов.

<div align="center" style="margin: 2em 0">
    <div style="max-width: 60%; text-align: justify; display: flex; flex-direction: column;">
        <img src="https://assets.kitploit.com/production/public/readmes/4899/1e1d6c536610212491afb2ce713b6f78f703837315bacc8e11b4b06b5a925fdd.png">
        <div>
        <b>Рисунок 1.</b> Архитектура RIoTPot, включая основное приложение, внешние сервисы и веб-приложение с пользовательским интерфейсом для управления экземплярами RIoTPot.
        </div>
    </div>
</div>

RIoTPot написан на [Golang](https://go.dev/)[^os].
Каждый экземпляр RIoTPot предоставляет зарегистрированные прокси (на основе их порта) по требованию.
Чтобы обслуживать прокси, **должен** быть привязан сервис, и порт прокси **должен** быть доступен (в настоящее время RIoTPot не принимает несколько сервисов, работающих на одном порту).
Когда прокси привязан и обслуживается, злоумышленники смогут отправлять сообщения RIoTPot на этот порт, ретранслируя сообщения привязанному сервису и обратно атакующему[^reversed].

[^os]: Хотя базовое приложение кроссплатформенно, внутренние сервисы (плагины) могут использоваться только в средах [Linux, FreeBSD и macOS](https://pkg.go.dev/plugin).
    Мы планируем преодолеть это ограничение, заменив плагины микросервисами, общающимися через [gRPC](https://grpc.io/).

[^reversed]: По этическим соображениям и соображениям безопасности RIoTPot не допускает нежелательных запросов наружу, т.е. реверс-шеллы и тому подобное запрещены.

Для удобства доступа несколькими экземплярами RIoTPot можно управлять из веб-приложения RIoTPot UI.
В дополнение к управлению прокси, зарегистрированными в каждом экземпляре, UI позволяет создавать, использовать и редактировать `профили`.
Каждый профиль содержит ряд прокси, названных в честь протоколов или других сервисов, что делает экземпляр RIoTPot похожим на реальное устройство (например, домашний помощник).
Короче говоря, профили ускоряют процесс настройки и предоставления экземпляра RIoTPot с конкретными конфигурациями.
UI написан с использованием библиотеки React для фронтенда на JavaScript (для этого проекта мы используем Typescript) и библиотеки управления состоянием [Recoil](https://recoiljs.org/).
Поскольку RIoTPot довольно мал, на данный момент он не использует базу данных.

## 2. How to use RIoTPot

Запуск RIoTPot относительно прост.
В целом у вас есть три варианта.
**Первый** — скачать релиз RIoTPot; вы можете выбрать как последний, так и предыдущий релиз.
**Второй вариант** — собрать проект самостоятельно.
**Последний вариант** — использовать исходный код для создания Docker-контейнера с RIoTPot и некоторыми дополнительными приложениями для расширения функциональности honeypot.

<details open>
    <summary><b>Использование релизной версии</b></summary>

> **_Информация_:** Это руководство предназначено для пользователей без особых потребностей, которые хотят получить простой опыт «из коробки».

Каждый релиз поставляется в папке с именем `riotpot`, содержащей исполняемый бинарный файл (также) с именем `riotpot` и папку `plugins`, заполненную различными сервисами (или низкоинтерактивными honeypot-ами).
Важно сохранять внутреннюю структуру папок для правильной работы RIoTPot.

    📁 riotpot
        ┕ riotpot
        ┕ 📁 plugins

---

1. Сначала скачайте релиз на ваш выбор со страницы [релизов](https://github.com/aau-network-security/riotpot/releases). Выберите тот, который нужен для вашей операционной системы (ОС).
2. Извлеките папку `riotpot`.
3. Запустите бинарный файл `riotpot`. Это запустит RIoTPot с включённым API, всеми готовыми к использованию плагинами и сервером UI.
    - API и UI доступны по адресу `localhost:2022`

</details>

<details>
    <summary><b>Сборка самостоятельно</b></summary>

> **_Информация_:** Это руководство предназначено для продвинутых пользователей, уверенно работающих в средах разработки.

<blockquote>
<details>
<summary><b>Требования</b></summary>

- Golang — требуется для сборки проекта
- Node — требуется для сборки UI

**Необязательно**:

- Git — используется для загрузки исходного кода
- Make — для выполнения уже подготовленных команд

</details>
</blockquote>

---

1. Загрузите исходный код RIoTPot с GitHub. Откройте консоль и введите следующую строку.

    ```bash
    git clone [email protected]:aau-network-security/riotpot.git
    ```

2. Перейдите в папку, куда вы загрузили исходный код RIoTPot, и установите необходимые пакеты Node.

    ```bash
    npm install
    ```

3. Если у вас установлен [Make](https://www.gnu.org/software/make/), мы включили несколько вспомогательных команд, чтобы помочь вам собрать проект. Проще говоря, вы можете выполнить две простые команды, которые соберут бинарный файл RIoTPot и плагины (и поместят их в нужную папку).

    ```bash
    # Сборка сервера
    make build-ui
    # Сборка RIoTPot и плагинов
    make riotpot-build
    ```

> **__ПРИМЕЧАНИЕ__:** UI использует [Vite](https://vitejs.dev/) для сборки проекта. Если вы предпочитаете использовать другой сборщик, возможно, вам придётся сначала внести некоторые изменения самостоятельно.

</details>

<details>
    <summary><b>Docker (виртуализация)</b></summary>

> **_Информация_:** Это руководство предназначено для продвинутых пользователей, предпочитающих использовать RIoTPot в виртуальной среде.

<blockquote>
<details>
<summary><b>Требования</b></summary>

- Docker — используется для создания образа экземпляра RIoTPot и сервера UI.
- Docker-compose — используется для создания единого контейнера с экземпляром RIoTPot, UI и другими приложениями и сервисами.

</details>
</blockquote>

Основные преимущества использования такой настройки — дополнительные функции безопасности с минимальными изменениями конфигурации контейнера и самих контейнеров.
Например, мы можем определить отдельные виртуальные частные сети и наложенные сети для скрытия, изоляции и инкапсуляции RIoTPot и других смежных сервисов.
Кроме того, контейнеры позволяют нам привязывать сервисы, используя их имена Docker-адресов, а не IP, что очень удобно.
Наконец, мы можем по требованию запускать и останавливать отдельные контейнеры, не затрагивая другие сервисы.

С другой стороны, виртуализация, вероятно, более требовательна, чем использование приложений на «голом железе».
Хотя один экземпляр RIoTPot относительно лёгок, важно учитывать недостатки, связанные с виртуализацией и эмуляцией оборудования (например, задержки отклика).

> **_Предупреждение_:** Технически говоря, целеустремлённый злоумышленник может понять, что RIoTPot на самом деле является honeypot, анализируя и сравнивая задержки отклика, связанные с виртуализацией, с реальными серверами (!!). Хотя такой вид идентификации honeypot ранее изучался, результаты для распространённых интернет-сервисов (например, HTTP, Telnet и SSH) всё ещё не являются окончательными из-за универсальности услуг облачного хостинга, использующих виртуальные машины и детальные конфигурации серверов.

Файл `docker-compose` включает дополнительные сервисы для расширения функциональности RIoTPot.
В следующей таблице приведён список сервисов и приложений, упакованных в этот контейнер.

<blockquote>
<details>
<summary><b>Сервисы</b></summary>
<div align="center">

| Сервис | Изображение               | Порт | Детали                                       |
| ------- | ---------------------- | ---- | ------------------------------------------ |
| MQTT    | eclipse-mosquitto      | 1883 | Mosquito MQTT сервер                   |
| HTTP    | httpd                  | 80   | Обычный HTTP сервер                         |
| Modbus  | oitc/modbus-server     | 502  | Modbus сервер                               |
| OCPP    | ocpp1.6-central-system | 443  | OCPP v1.6 (используется в зарядных станциях для автомобилей) |

</div>
</details>

<details>
<summary><b>Приложения</b></summary>
<div align="center">

| Приложение | Изображение       | Детали                                                   |
| ----------- | --------------- | --------------------------------------------------------- |
| TCPDump     | kaazing/tcpdump | Запись пакетов. Сохраняет сетевой трафик в файлах .pcap |

</div>
</details>
</blockquote>

---

Контейнер можно настроить за три простых шага:

1. Загрузите исходный код RIoTPot с GitHub. Откройте консоль и введите следующую строку.

    ```bash
    git clone [email protected]:aau-network-security/riotpot.git
    ```

2. Перейдите в папку, куда вы загрузили исходный код RIoTPot.
3. При запущенном Docker: если у вас установлен Make, выполните следующую команду. В противном случае выполните команду docker-compose, используя файл docker-compose, включённый в папку `build/docker`.
    - С make
  
    ```bash
    # С make
    make up
    ```

   - С Docker-compose

    ```bash
    # С docker-compose
    docker-compose -p riotpot -f build/docker/docker-compose.yaml up -d --build
    ```

</details>

## 3. Commands

RIoTPot поставляется с флагами команд, которые влияют на то, что и как запускается.
Пример:
```bash
# Запуск RIoTPot без UI
./riotpot --ui false
```

 | Флаг      | Тип    | По умолчанию                            | Описание                                              |
 | --------- | ------- | -------------------------------------- | -------------------------------------------------------- |
 | debug     | Boolean | false                                  | Установить уровень журнала для отладки                                   |
 | api       | Boolean | true                                   | Запускать ли API                                 |
 | plugins   | Boolean | true                                   | Загружать ли плагины низкоинтерактивных honeypot     |
 | whitelist | String  | http://localhost,http://localhost:3000 | Список разрешённых хостов, разделённых запятыми, для доступа к API |
 | ui        | Boolean | true                                   | Запускать ли UI                                  |
Скачать инструмент