Микроконтроллерный вирус и антивирус

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

Данный тип микроконтроллерного вируса (вируса на кристалле) имеет следующие сходства и отличия с компьютерным вирусом и антивирусом.

  • Специфика. Мало кому в голову может прейти идея о выполнении микроконтроллером инструкций приводящих к порче данных или сбоям. Стоит отметить принцип и тип работы с данными. Так, например, чем выше производительность микроконтроллера способного работать с файлами и т.д., тем больше принцип работы похож на компьютерные вирусы.
  • Размножение локальное (в рамках одного микроконтроллера). Действительно, подпрограмма-вирус статична и имеет физическую основу в виде Flash-памяти программ микроконтроллера (согласно типу используемого микроконтроллера – PIC16F628A). Конечно, в других микроконтроллерах, где можно программно перезаписывать Flash-память, программа-вирус может перемещаться.
  • Размножение глобальное (среди микроконтроллеров, связанных шинами для передачи данных). Неспособность к передаче вредоносного кода программы-вируса другим микроконтроллерам (нет физической основы в отличие от ПК). Конечно, потенциально можно предать вредоносный код программы-вируса от одного микроконтроллера к другому, т.е. «заразить» по протоколам I²C, SPI, USART, CAN, USB и др., но для этого нужно соответствующим образом запрограммировать микроконтроллеры, потенциально готовые к выполнению инструкций приводящих к порче данных или сбоям.
  • Антивирус. В данной работе микроконтроллерный антивирус представляет из себя бит, который разрешает или запрещает выполнять программу-вирус, т.е. не анализирует выполняемые микроконтроллером инструкции, в отличие от компьютерного антивируса, который анализирует работу компьютера.  

На рисунке выше изображена схема прибора для демонстрации микроконтроллерного вируса и антивируса. Ядром схемы является микроконтроллер PIC16F628A. Алгоритм управления кнопкой изображен на рисунке 2. Код программы написан на языке ассемблер, смотреть листинг Virus16F628ATEMP.ASM. Прибор управляется одной кнопкой. Нажатием на кнопку добиваются последовательной смены режимов работы прибора. Для визуального отображения информации служит дисплей со встроенным контроллером.

Полный цикл внутрисхемного программирования и отладки микроконтроллера PIC16F628A был осуществлён при помощи MPLAB IDE v8.15 (интегрированная среде разработки), компилятор MPASM v5.22 (входит в MPLAB IDE v8.15) и MPLAB ICD 2 (внутрисхемный отладчик — «Дебагер»). Для тех, кто не располагает средствами приведёнными выше, а имеет свою программу для работы с *.HEX файлами и иной программатор, можно в соответствующем проекте найти файл 16F628ATEMP.HEX. Техническую спецификацию микроконтроллера можно найти на сайте [1] и [2].

Микроконтроллер DD1 имеет функциональные выводы RA0, RB2 – RB7 которые служат для ввода и вывода информации. Микроконтроллер DD1 не имеет функции принудительного сброса, вывод для сброса подключен через резистор R1 к положительному потенциалу питания. Для генерации тактовой частоты используется встроенный RC-генератор на кристалле.

К выводу RA0 через токоограничивающий резистор R3 подключена тактовая кнопка SB1. В отжатом положении тактовой кнопки SB1 резистор R4 имитирует низкий логический уровень. Микроконтроллер DD1 распознаёт три состояния тактовой кнопки SB1:

  • не нажата;
  • нажата кратковременно (менее 1 с);
  • нажата и удерживается (более 1 с).

Изображение на дисплее помогает различать состояния тактовой кнопки SB1. Так при 1 состоянии микроконтроллер выполняет инструкции не связанные с нажатием кнопки, при 2 состоянии происходит выполнение настройки, которые выделены квадратными скобками пока микроконтроллер не распознает 3 состояние, а в 3 состоянии дисплей изображает следующие настраиваемое состояние квадратными скобками.

Для отображения информации используется жидкокристаллический дисплей HG1. Техническую спецификацию дисплея можно найти на сайте [3]. Он имеет контроллер, в котором реализована функция знакогенерации. Отображает две строки по шестнадцать символов в каждой. Управление дисплеем осуществляется через выводы микроконтроллера RB2 – RB7. Загрузка данных происходи полубайтами, через выводы RB4 – RB7. «Защёлка» — RB3. Выбор регистра сигнала формируем на выводе RB2. Переменным резистором R2 устанавливаем контрастность дисплея HG1. Подсветка дисплея отключена.

Прибор запитывается от переменного или постоянного источника напряжения, подключаемого к разъему X1. Номинальное напряжение источника питания 9 – 15 В. Номинальный ток источника питания 0.5 А. Для стабилизации питания используется обычная схема из диодного моста VD1, линейного стабилизатора DA1, фильтрующих конденсаторов C1 – C4.

Работу прибора можно разбить на десять состояний.

1) При включении прибора происходит чтение энергонезависимой памяти данных EEPROM, где происходит выгрузка данных состояния антивируса и слова из 14 букв (по умолчанию «KOVALEV ANTON»). Прибор переходит в состояние где происходит настройка антивируса, т.е. 2.


Фото 1

2) В данном состоянии прибор в верхней строке выводит на дисплее надпись «ANTIVIRUS [x]»* и  в нижней строке отображает «S(1) I(X/Y)**». При кратковременном нажатии тактовой кнопки прибор изменяет состояние антивируса (включает или выключает). (фото 1). После удерживаемого нажатия тактовой кнопки прибор переходит в состояние где происходит случайная генерация 2-х цифр, т.е. 3.


Фото 2

3) В данном состоянии прибор в верхней строке выводит на дисплее надпись «A+B» (где «A» и «B» цифры) и  в нижней строке отображает «S(2.1) I(X/Y)**». При кратковременном нажатии тактовой кнопки происходит случайная генерация цифр «A» и «B». (фото 2). После удерживаемого нажатия тактовой кнопки прибор переходит в состояние где происходит выбор результата арифметики, т.е. 4.


Фото 3

4) В данном состоянии прибор в верхней строке выводит на дисплее надпись «A+B=С» (где «A» и «B» цифры, «С» число от 0 до 18) и  в нижней строке отображает «S(2.2) I(X/Y)**». При кратковременном нажатии тактовой кнопки происходит инкриминирование числа «С». (фото 3).  После удерживаемого нажатия тактовой кнопки прибор переходит в состояние где происходит сравнение результата, т.е. 5.

5) В данном состоянии прибор сравнивает число «С» с собственным сложением цифр «A» и «B». Если результат сложения микроконтроллера совпал с «С», то прибор переходит в состояние, где отображает слово, т.е. 7. Если числа не совпали, то прибор переходит в состояние, где происходит вирусная атака, т.е. 6.

6) В данном состоянии прибор руководствуется битом, который отвечает за работу антивируса. Если антивирус включен («ANTIVIRUS[E]»), то прибор переходит в состояние где происходит настройка антивируса, т.е. 2. Если антивирус выключен («ANTIVIRUS[D]»), то происходит  запуск подпрограммы-вируса. Подпрограмма-вирус проверяет бит, который указывает на ранее заражение. Если не заражено, то подпрограмма-вирус меняет местами буквы слова так — 1 с 14, 2 с 13, 3 с 12, 4 с 11, 5 с 10, 6 с 9, 7 с 8 и инкриминирует счётчик числа заражений «X». Таким образом выводимое слово будет перевёрнутым. Если заражено, то программа-вирус не меняет местами буквы. Далее прибор переходит в состояние, где отображает слово, т.е. 7.


Фото 4


Фото 5

7) В данном состоянии прибор в верхней строке выводит на дисплее надпись – слово из 14 букв и в нижней строке отображает «S(3.0) I(X/Y)**». Происходит инкриминирование числа отображений слова «Y». (При правильной арифметике — фото 4, после вирусной атаки – фото 5). При кратковременном нажатии тактовой кнопки прибор переходит в состояние где происходит настройка антивируса, т.е. 2. После удерживаемого нажатия тактовой кнопки прибор переходит в состояние где происходит изменение слова, т.е. 8.


Фото 6

8) В данном состоянии прибор в верхней строке выводит на дисплее надпись – слово из 14 букв в котором квадратными скобками выделяется N-я изменяемая буква и в нижней строке отображает «S(3.N) I(X/Y)**». При кратковременном нажатии тактовой кнопки прибор в N последовательно выбирает пробел и буквы английского алфавита. (фото 6). После удерживаемого нажатия тактовой кнопки прибор переходит в состояние где происходит подтверждение изменённого слова, т.е. 9.

9) В данном состоянии прибор в верхней строке выводит на дисплее надпись – слово из 14 букв и в нижней строке отображает «S(3.15) I(X/Y)**». При кратковременном нажатии тактовой кнопки прибор переходит в состояние где происходит изменение слова, т.е. 8. После удерживаемого нажатия тактовой кнопки прибор переходит в состояние где происходит сохранение слова в энергонезависимой EEPROM памяти, т.е. 10.

10) В данном состоянии прибор в верхней строке выводит на дисплее надпись «SAVING». Прибор сбрасывает бит, который указывает на заражение, потому что слово было изменено. Происходит сохранение слова в энергонезависимой EEPROM памяти. Далее прибор переходит в состояние где происходит настройка антивируса, т.е. 2.

*«ANTIVIRUS [x]» (по умолчанию «ANTIVIRUS [D]»), где: [D], D-Disable (Выключен), [E], E-Enable (Включен). 
**«S(3.N) I(X/Y)», где: S-Step, N-число от 1 до 14, I-Infected, X-число заражений от 0 до 18, Y-число отображений слова от 0 до 18. Если X или Y больше 18 происходит обнуление X или Y соответственно.


Фото 7

Прибор собран на демонстрационной плате Microchip PICDEM 2 PLUS. (фото 7). Схему демонстрационной платы можно найти на официальном сайте Microchip [1].

В данном устройстве можно заменить следующие детали. Микроконтроллер DD1 из серии PIC16F628A-I/P-xxx с рабочей тактовой частотой 20 МГц в корпусе DIP18. Дисплей HG1 подойдет любой из серии WH1602x. Стабилизатор напряжения DA1 отечественный КР142ЕН5А (5 В, 1.5 А). Диодный мост VD1 можно применить любой из серии 2Wxx. Разъём питания X1 аналогичный указанному на схеме с центральным контактом d=2.1 мм. Неполярные конденсаторы С1 и С2 номиналом 0.01 – 0.47 µF x 50 V. Электролитические конденсаторы С3 и С4 ёмкостной номинал тот же, а напряжение не ниже указанного на схеме.

Ссылки в интернете

Название сайта

Адреса

[1]

Microchip Technology Inc. — a Leading Provider of Microcontroller and Analog Semiconductors   

http://www.microchip.com/

[2]

ООО Микро-Чип — микроконтроллеры и источники питания   

http://www.microchip.ru/

[3]

Winstar Display Co., Ltd.

http://www.winstar.com.tw/main.php

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.