Как взломать защиту проекта PLC Allen-Bradley

Автор Сообщение
#1 / 12.04.2016 22:08
admin

Краткая предыстория


В течении некоторого времени использования одной из систем управления тех. процессом возникла необходимость редакции проекта PLC. Так как, система была установлена американской компанией, то проект был реализован на контроллере Allen Bradley, а именно 1756-L61. Совпадение? Не думаю. 

Хотя любовь американцев к Allen Bradley — это скорее просто мое наблюдение. И ни в коем случае не реклама этого производителя контроллеров.

Ближе к делу. Секции проекта были защищены от редактирования, в связи с ”мудрой” политикой разработчика в стиле ”Ничего не трогайте, без нас! Это нарушит стандарты безопасности эксплуатации управляемого агрегата. И т.д.”

Признаюсь, никто не ставил перед собой цель менять технологическую логику объекта.

Речь шла только о создании пары-тройки переменных для последующего вывода на Панель Оператора с возможностью изменения уставки.

Но защита не позволяла даже создать новую переменную вместо константы. Поэтому желание взлома защиты захлестнуло полностью.

Приступим


Для подключения к контроллеру использовал RSLogix 5000 V19.01.00 (CPR 9 SR 3).

f4315e13aea64ace8df6e27c751ad4f4.png

Серый фон редактора проекта показывает запрет на редактирование секции. 

Заходим File-> Save as… и сохраняем файл в формате XML RSLogix 5000 .L5X: 

cf9bf9401bfa462e8fcd83655858c6c1.png 

Открываем сохраненный проект *.L5X в текстовом редакторе, например Notepad++.

Копируем содержимое и переходим на онлайн дескриптор: skdatmonster.github.io/DecryptSourceProtection/index.html. Вставляем содержимое в левое окно.

Внимание! Копирование может занят некоторое время. Ожидаем в предвкушении. Мой файл был размером 1,9 MB: это заняло порядка 15-20 реальных секунд.

bfce5a0ab4184df9aed53a2350ea78d0.png

Скопировалось? Нажимаем “Decrypt->”.

Получаем картинку схожую с этой. Где ” Unpacked encoded data”- неудачная попытка декриптирования. Скролим немного ниже – Hallelujah! Вот он – декриптированный ключ.

b4f98851937348d4a4babf688d33ebc6.png 

Теперь мы готовы перейти к второй части, а именно, к снятию защиты с каждой секции проекта. 

С помощью Notepad++, создаем файл разблокировки sk.dat и вставляем в него уже известный нам ключ снятия защиты проекта.

Заходим в Tools -> Security ->Configure Source Protection. Нажимаем ”Specify” и выбираем путь к нашему файлу sk.dat.

4cb78763f35d4f709b4222c7df74c5d9.png

Далее, все еще проще – выбираем секцию проекта и нажимаем “Unprotect”.

15b055f9ff01437fa5479e69d1f40f72.png

Атрибуты Source Key и Viewable буду исчезать, подтверждая факт разблокировки секции. Таким образом, так делаем с каждой, интересной для нас, в плане редактирования секцией.

Подключаемся online к нашему контроллеру — он предложит выгрузить проект. Соглашаемся. 

edce149172ae40209b207e525f53c499.png

И через пару минут, после выгрузки проекта, заходим в любую секцию, с которой предварительно сняли защиту. Вуаля!

cd7a7ba3dcda42eeb207c02e6a625922.png

Белый фон редактора кода проекта подтверждает нам, что теперь, мы можем редактировать секцию. Цель достигнута.

В случае, последующего перемещения или удаления файла с ключем снятия защиты проекта, редактирование будет запрещено. Следовательно, вам прийдется повторить действия по созданию нового файла sk.dat.
 

Послесловие


По иронии судьбы или возможно даже по причине “буйной” фантазии разработчика кода, в моем случае, ключ отличался от пароля доступа к Панели Оператора системы управления, всего лишь на один символ. А именно — знак подчеркивания. 

Всем удачи!

 

Оригинал статьи находится по адресу https://habrahabr.ru/post/280846/

Сообщения: 463