
Разворачивает реалистичные виртуальные стенды SCADA/ICS с узлами IEC 60870-5-104 и OPC-UA, позволяя проводить симуляции атак, генерировать легитимные пакеты и выполнять упражнения red team по кибербезопасности.
Предлагается масштабируемый каркас для автоматического развёртывания локально (или удалённо) набора виртуальных машин, воспроизводящих сеть диспетчерского управления и сбора данных (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.
Генерация пакетов: Цель первого варианта использования — генерировать сетевой трафик от большого числа устройств с высокой степенью достоверности предметной области, в идеале включая в трафик информацию о технологическом процессе. Как отмечалось ранее, создание наборов данных на основе работающей системы не всегда возможно: это трудоёмко, необходимо найти подходящую точку подключения и получить одобрение операторов предприятия. Это может ограничиваться режимом работы и политиками предприятия, поскольку вмешательство в работающую сеть может привести к непредвиденным обстоятельствам и утечке идентифицируемой информации. Генерация пакетов может использоваться для проверки предлагаемых изменений в сети SCADA перед их внедрением в работающую систему. Она также позволяет выполнять стресс-тестирование устройств с использованием легитимно выглядящих пакетов. К интересным исследовательским задачам относятся эксперименты с различными сетевыми парадигмами, такими как ICN или IPv6, которые не применялись к сетям АСУ ТП.
Симуляция атак: Этот вариант рассматривает моделирование сложных атак на системы SCADA и направлен на анализ рисков воспроизведённой сети АСУ ТП без отрицательного влияния на работающую систему. Испытательный стенд может использоваться командами красных (red team) для попытки компрометации узлов стенда с последующим анализом последствий и полным захватом и анализом пакетов. Если атака успешна, процесс можно повторить с добавленными контрмерами, что позволяет тестировать новые контрмеры в контексте безопасности и их влияние на технологические процессы объекта. Захваченный сетевой трафик учений красной команды может быть опубликован в виде открытых наборов данных для проверки систем обнаружения вторжений (IDS), которые могут быть воспроизведены и подтверждены другими исследователями.
Бенчмаркинг агентов: Цель этого варианта использования — поддержка бенчмаркинга агентских систем на хостах, которые обычно не тестируются на работающих системах из-за ограничений вендоров. Если агент не одобрен вендорами, его развёртывание часто запрещено из-за риска нарушения контракта. Используя испытательный стенд, точно представляющий реальный промышленный объект, можно отслеживать работу агентского программного обеспечения без возникновения сбоев. При условии, что стенд свободно модифицируется, функционально точен и может интегрироваться с физическим оборудованием, можно выполнить бенчмаркинг агента.
Расширение ограниченного оборудования: Последний вариант — расширение существующего физического испытательного стенда для включения коммуникационных протоколов и конфигураций, которые были невозможны на существующем оборудовании. Это может потребовать использования сетевых эмуляторов для расширения сетевого оборудования и симуляторов технологических процессов для расширения оборудования управления. Связывая виртуальное и физическое оборудование, можно создать сложный и высокореалистичный испытательный стенд, позволяющий создавать и анализировать крупные развёртывания, объединяющие несколько протоколов и устройств. Этот вариант использования можно применять вместе с другими для улучшения их результатов.
Клонируйте репозиторий и установите необходимые зависимости:
git clone --recurse-submodules [email protected]:PMaynard/ICS-TestBed-Framework.git
sudo apt install openjdk-8-jdk maven
Сборка:
mvn clean package
mvn package -DskipTests # Пропустить тесты.
Запуск RTU:
java -jar node/target/node-1.0.jar
shell> rtu
shell> rtu-iec104port 2404
shell> rtu-listen 127.0.0.1
shell> run
Запуск HMI:
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 из исходного кода, а не предварительно собранные/дистрибутивные пакеты, поскольку эти скрипты используют функции из последних версий Vagrant. Должно работать при использовании Ubuntu 18.04.1 LTS.
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:
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 МБ.
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/'
Численная разбивка набора данных показана ниже:
Пожалуйста, цитируйте этот каркас в следующем формате:
@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/
| Хост | IP | IEC104 | OPC-UA | Другое | Всего |
|---|
| HMI | 10.50.50.150 | 26,158 | 0 | 17,688 | 43,846 |
| Historian | 10.50.50.151 | 0 | 14,695 | 14,927 | 29,622 |
| RTU-1 | 10.50.50.101 | 3,592 | 2,940 | 5,543 | 12,075 |
| RTU-2 | 10.50.50.102 | 3,665 | 2,941 | 5,876 | 12,482 |
| RTU-3 | 10.50.50.103 | 3,668 | 2,940 | 5,793 | 12,404 |
| RTU-4 | 10.50.50.104 | 3,690 | 2,940 | 5,771 | 12,404 |
| RTU-5 | 10.50.50.105 | 3,576 | 930 | 7,933 | 12,442 |
| MITM | 10.50.50.99 | 2,390 | 0 | 3,449 | 5,839 |
| SCAN | 10.50.50.3 | 15 | 0 | 28,351 | 28,366 |