Все, кто следил за новостями начала 2010-х — и особенно за технологическими, — почти наверняка слышали про Stuxnet. Эта вредоносная программа породила огромное количество теорий заговора, причём часть из них впоследствии подтвердилась. Червь был нацелен на иранские ядерные объекты и считается первой цифровой угрозой, вызвавшей прямые физические разрушения в реальном мире. Теперь неизвестный исследователь опубликовал результат его обратной разработки во всей полноте.

Центрифуги для обогащения урана на промышленном предприятииИсточник изображения — tomshardware.com

Что именно ломал червь

Конечной целью — судя по всему, успешно достигнутой — были промышленные контроллеры Siemens, которые, по имеющимся сведениям, применялись на заводе по обогащению урана в Натанзе. Добравшись до цели, полезная нагрузка Stuxnet манипулировала преобразователями частоты в промышленных центрифугах, чтобы исподволь повреждать роторы — и при этом держать персонал в неведении, рапортуя о штатной работе оборудования.

реклама кормит Уточку 🦆

Именно этот приём и сделал червя вехой в истории кибербезопасности: атака велась не на данные, а на физику процесса, а система мониторинга при этом показывала операторам заранее записанную «нормальную» картину. Подмена телеметрии с тех пор стала обязательным пунктом в моделях угроз для АСУ ТП.

Три пути распространения

В период активности Stuxnet распространялся тремя способами. Основным вектором заражения были USB-накопители с ярлыками Windows и файлами autorun.inf: достаточно было открыть содержимое диска, и заражение срабатывало немедленно благодаря уязвимости нулевого дня.

реклама кормит Уточку 🦆

Заражённые системы затем самостоятельно пытались распространить червя по сети через уязвимость нулевого дня в диспетчере печати Windows, позволявшую записывать системные файлы на любую машину, с которой был общий принтер. Дополнительно программа копировала себя в доступные сетевые папки. Чтобы обойти проверку подписи драйверов, использовались два цифровых сертификата, похищенных у Realtek и JMicron.

Третий путь был самым изощрённым: код внедрялся в программное обеспечение Siemens через базу данных WinCC на SQL Server и прописывался в проектные файлы Step 7, которые запускались автоматически при открытии инженером. Такие файлы почти гарантированно передавались между несколькими специалистами, что делало их отличным внутренним каналом заражения, не требующим доступа к сетевым папкам.

Финальным шагом был перехват библиотеки, которая общалась непосредственно с центрифугами, и внедрение постороннего кода в программируемые логические контроллеры этих машин.

реклама кормит Уточку 🦆

Операция и её последствия

Stuxnet считается частью операции Olympic Games — предполагаемых совместных усилий США и Израиля по сдерживанию иранской ядерной программы в Натанзе. Инициатива, по имеющимся данным, велась при двух администрациях подряд и рассматривалась как способ отговорить Израиль от собственного превентивного удара. Разработку приписывают Пентагону и израильскому подразделению 8200, а результатом называют вывод из строя порядка 10% центрифуг завода из-за серьёзного повреждения роторов.

Впрочем, у червя обнаружился неприятный дефект: он недостаточно тщательно проверял, в какой среде находится, и не заметил, что покинул пределы локальной сети. Когда инженеры унесли ноутбуки домой, программа вырвалась в открытый интернет — и исследователи безопасности по всему миру дружно произнесли «странно, что это такое?» и взялись за анализ. К счастью, в коде была зашита дата самоуничтожения — 24 июня 2012 года.

Опубликованный репозиторий содержит и инструкции по сборке, что превращает его прежде всего в учебный материал по истории атак на промышленные системы. Практический смысл для специалистов по защите здесь очевиден: разбор реального кода даёт куда более полное понимание техник, чем описания по мотивам отчётов пятнадцатилетней давности.