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

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

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

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

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

Категории

Все категории
Loading categories
ICS-TestBed-Framework — Разворачивает реалистичные виртуальные стенды SCADA/ICS с узлами IEC 60870-5-104 и OPC-UA, позволяя проводить симуляции атак, генерировать легитимные пакеты и выполнять упражнения red team по кибербезопасности. | Kitploit
Инструменты/GitHubGitHub/pmaynard/ics-testbed-framework
Сниффинг и анализ пакетовБезопасность SCADA/ICSСетевая безопасностьТестирование на ПроникновениеRed TeamingЛаборатории и Практика
GitHubpmaynard/ics-testbed-framework

ICS-TestBed-Framework

Разворачивает реалистичные виртуальные стенды SCADA/ICS с узлами IEC 60870-5-104 и OPC-UA, позволяя проводить симуляции атак, генерировать легитимные пакеты и выполнять упражнения red team по кибербезопасности.

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
70267 лет назадПроверено Kitploit

Каркас ICS TestBed

Предлагается масштабируемый каркас для автоматического развёртывания локально (или удалённо) набора виртуальных машин, воспроизводящих сеть диспетчерского управления и сбора данных (SCADA). Он включает несколько виртуальных хостов, эмулирующих датчики и исполнительные механизмы, а также человеко-машинный интерфейс (HMI), управляющий хостами. Представленный каркас содержит набор скриптов автоматизации, которые создают и развёртывают переменное количество виртуальных машин, предварительно настроенных для работы в качестве удалённого терминала (RTU), HMI или архиватора данных (Data Historian). Представленная работа включает стандартизированную реализацию IEC 60870-5-104 (IEC104) и OPC Unified Architecture (OPC-UA) с возможностью поддержки других протоколов, таких как Modbus-TCP (Modbus) и IEC61850.

Это позволяет исследователям создавать испытательные стенды, которые можно настраивать для воспроизведения реальных развёртываний сетей SCADA. Каркас построен на основе библиотек с открытым исходным кодом и выпущен под лицензией, одобренной Фондом свободного программного обеспечения, — GNU General Public License версии 3.

Пример работы

asciicast

Возможные варианты использования

  • Генерация пакетов: Цель первого варианта использования — генерировать сетевой трафик от большого числа устройств с высокой степенью достоверности предметной области, в идеале включая в трафик информацию о технологическом процессе. Как отмечалось ранее, создание наборов данных на основе работающей системы не всегда возможно: это трудоёмко, необходимо найти подходящую точку подключения и получить одобрение операторов предприятия. Это может ограничиваться режимом работы и политиками предприятия, поскольку вмешательство в работающую сеть может привести к непредвиденным обстоятельствам и утечке идентифицируемой информации. Генерация пакетов может использоваться для проверки предлагаемых изменений в сети SCADA перед их внедрением в работающую систему. Она также позволяет выполнять стресс-тестирование устройств с использованием легитимно выглядящих пакетов. К интересным исследовательским задачам относятся эксперименты с различными сетевыми парадигмами, такими как ICN или IPv6, которые не применялись к сетям АСУ ТП.

  • Симуляция атак: Этот вариант рассматривает моделирование сложных атак на системы SCADA и направлен на анализ рисков воспроизведённой сети АСУ ТП без отрицательного влияния на работающую систему. Испытательный стенд может использоваться командами красных (red team) для попытки компрометации узлов стенда с последующим анализом последствий и полным захватом и анализом пакетов. Если атака успешна, процесс можно повторить с добавленными контрмерами, что позволяет тестировать новые контрмеры в контексте безопасности и их влияние на технологические процессы объекта. Захваченный сетевой трафик учений красной команды может быть опубликован в виде открытых наборов данных для проверки систем обнаружения вторжений (IDS), которые могут быть воспроизведены и подтверждены другими исследователями.

  • Бенчмаркинг агентов: Цель этого варианта использования — поддержка бенчмаркинга агентских систем на хостах, которые обычно не тестируются на работающих системах из-за ограничений вендоров. Если агент не одобрен вендорами, его развёртывание часто запрещено из-за риска нарушения контракта. Используя испытательный стенд, точно представляющий реальный промышленный объект, можно отслеживать работу агентского программного обеспечения без возникновения сбоев. При условии, что стенд свободно модифицируется, функционально точен и может интегрироваться с физическим оборудованием, можно выполнить бенчмаркинг агента.

  • Расширение ограниченного оборудования: Последний вариант — расширение существующего физического испытательного стенда для включения коммуникационных протоколов и конфигураций, которые были невозможны на существующем оборудовании. Это может потребовать использования сетевых эмуляторов для расширения сетевого оборудования и симуляторов технологических процессов для расширения оборудования управления. Связывая виртуальное и физическое оборудование, можно создать сложный и высокореалистичный испытательный стенд, позволяющий создавать и анализировать крупные развёртывания, объединяющие несколько протоколов и устройств. Этот вариант использования можно применять вместе с другими для улучшения их результатов.

Сборка и локальный запуск

Клонируйте репозиторий и установите необходимые зависимости:

root@kitploit:~
git clone --recurse-submodules [email protected]:PMaynard/ICS-TestBed-Framework.git
sudo apt install openjdk-8-jdk maven

Сборка:

root@kitploit:~
mvn clean package
mvn package -DskipTests # Пропустить тесты.

Запуск RTU:

root@kitploit:~
java -jar node/target/node-1.0.jar
shell> rtu
shell> rtu-iec104port 2404
shell> rtu-listen 127.0.0.1
shell> run

Запуск HMI:

root@kitploit:~
java -jar node/target/node-1.0.jar
shell> hmi
shell> hmi-interval 1000
shell> remote-hosts 127.0.0.1
shell> run

Автоматическое развёртывание в виртуальных машинах

Профиль конфигурации по умолчанию развёртывает 1 HMI и 4 RTU. HMI интегрирует RTU с использованием IEC104 и OPC-UA. RTU настроены на возврат случайных данных технологического процесса.

Предварительные требования (Vagrant+VirtualBox)

Используйте последнюю версию Vagrant из исходного кода, а не предварительно собранные/дистрибутивные пакеты, поскольку эти скрипты используют функции из последних версий Vagrant. Должно работать при использовании Ubuntu 18.04.1 LTS.

root@kitploit:~
git clone https://github.com/mitchellh/vagrant.git /opt/vagrant
cd /opt/vagrant
bundle install
bundle --binstubs exec
ln -sf /opt/vagrant/exec/vagrant /usr/local/bin/vagrant 

[НЕОБЯЗАТЕЛЬНО] Создание образа виртуальной машины

Это необязательный шаг для разработки. Он создаёт образ виртуальной машины, предварительно настроенный для запуска узлов испытательного стенда. Если вы не хотите создавать последнюю версию, по умолчанию можно получить стабильный образ из репозитория образов Vagrant, который идёт в ногу с веткой master.

Для создания образа виртуальной машины, подходящего для VirtualBox и Vagrant, используется Packer:

root@kitploit:~
cd vagrant_image
packer build vagrant-node.json
vagrant box add testbed-node vagrant.box

Развёртывание

ВНИМАНИЕ Вам понадобится не менее 4 ГБ свободной оперативной памяти.

Обновите Vagrantfile, указав любую дополнительную информацию, например статический IP-адрес и объём оперативной памяти.

Настройки IP по умолчанию: 10.50.50.*. .200 используется для HMI, а 101-105 — для RTU. Объём оперативной памяти по умолчанию на виртуальную машину — 512 МБ.

root@kitploit:~
vagrant up
vagrant ssh hmi
vagrant ssh rtu-1 # 1-5
vagrant halt
vagrant destroy 

Пример набора данных

Пример набора данных был создан с использованием конфигурации развёртывания по умолчанию. PCAP-файлы можно загрузить здесь. MITM-атака на IEC104 выполнялась с помощью плагина ettercap, расположенного здесь

  • [Host-SCAN 13:45]: Базовая сетевая разведка с помощью сканирования Nmap всей сети. КОМАНДА: 'nmap -sn 10.50.50.*'

  • [Host-SCAN 13:47]: Базовая сетевая разведка в поисках доступных серверов [IEC104]{acronym-label="IEC104" acronym-form="singular+short"}. КОМАНДА: 'nmap 10.50.50.* -p 2404'

  • [Host-SCAN 13:47]: Полное сканирование портов обнаруженных узлов [RTU]{acronym-label="RTU" acronym-form="plural+short"}. КОМАНДА: 'nmap 10.50.50.101-105 -A'

  • [Host-SCAN 13:49]: Активное сканирование [IEC104]{acronym-label="IEC104" acronym-form="singular+short"}, которое проверяет узлы с использованием протокола [IEC104]{acronym-label="IEC104" acronym-form="singular+short"}[^1]. КОМАНДА: 'nmap -Pn -n -d --script iec-identify.nse --script-args='iec-identify.timeout=500' -p 2404 10.50.50.101-105'

  • [Host-MITM 14:19]: Выполняет [MITM]{acronym-label="MITM" acronym-form="singular+short"} между RTU-1 и HMI. КОМАНДА: 'ettercap -i enp0s8 -T -M arp -P spoof_104 /10.50.50.101/ /10.50.50.150/'

Численная разбивка набора данных показана ниже:

Связанные проекты

  • https://github.com/flesueur/mi-lxc
  • https://github.com/nsec/the-internet
  • https://minicps.readthedocs.io/en/latest/

Цитирование

Пожалуйста, цитируйте этот каркас в следующем формате:

root@kitploit:~
@conference{
 author   = "Peter Maynard and Kieran McLaughlin and Sakir Sezer",
 title 	  = "An Open Framework for Deploying Experimental SCADA Testbed Networks",
 journal  = "5th International Symposium for ICS & SCADA Cyber Security Research",
 year 	  = "2018"
}

Набор данных можно цитировать, используя DOI: 10.6084/m9.figshare.6133457.v1

Полную версию статьи можно найти по адресу: https://petermaynard.co.uk/publication/an-open-framework-for-deploying-experimental-scada-testbed-networks/

Скачать инструмент
ХостIPIEC104OPC-UAДругоеВсего
HMI10.50.50.15026,158017,68843,846
Historian10.50.50.151014,69514,92729,622
RTU-110.50.50.1013,5922,9405,54312,075
RTU-210.50.50.1023,6652,9415,87612,482
RTU-310.50.50.1033,6682,9405,79312,404
RTU-410.50.50.1043,6902,9405,77112,404
RTU-510.50.50.1053,5769307,93312,442
MITM10.50.50.992,39003,4495,839
SCAN10.50.50.315028,35128,366