МИХАЙЛОВ1 Дмитрий Михайлович, кандидат технических наук СМИРНОВ2 Александр Сергеевич ДЮМИН3 Александр Александрович КЛАРИН4 Аркадий Павлович НОВИКОВ5 Григорий Григорьевич
ВОЗМОЖНОСТЬ ОСУЩЕСТВЛЕНИЯ АТАКИ НА СИСТЕМЫ АВТОМАТИЗАЦИИ ЗДАНИЯ С ИСПОЛЬЗОВАНИЕМ УЯЗВИМОСТЕЙ СЕТЕВОЙ ПЛАТФОРМЫ LONWORKS
Данная статья, посвящена исследованию уязвимостей сетевой платформы. LonWorks, которые могут быть использованы злоумышленником, для. осуществления, атаки на системы, автоматизации здания. В работе приводятся примеры, уязвимых участков кода на языке Neuron C.
Ключевые слова: сетевая, платформа LonWorks, Neuron Chip, код, буфер.
This article is devoted to analysis of vulnerabilities of net platform. LonWorks that can be used, to attack the systems of digital home. The paper provides examples of vulnerable code areas in Neuron C language. Keywords: LonWorks net platform, Neuron Chip, code, buffer store.
Большинство из нас знает, что пароль не всегда может обеспечить должный уровень защиты информации. Для опытного злоумышленника взлом пароля не составляет труда. Тем не менее иногда другие механизмы защиты данных просто недоступны. В этом случае приходится уповать на сложную комбинацию букв и цифр и надеяться на то, что грубый перебор займет у злоумышленника несколько лет. Но грубый перебор — это не тот метод, которым пользуются мошенники, хотя и этим способом они не пренебрегают. Особенно эффективен грубый перебор в ситуации, когда мошенник может за
счет субъективных признаков снизить количество комбинаций. Так, например, взламывают электронные замки. Если код на замке не меняется длительное время, то хозяин здания, набирающий изо дня в день одну и ту же комбинацию цифр, в конечном счете, оставит потертости на цифрах, используемых чаще других. Таким образом, злоумышленнику будет необходимо только угадать последовательность.
В данной статье речь пойдет о мошенничестве, основанном не на человеческом факторе, а на использовании высоких технологий для осуществления неправомерных действий.
Предположим, владелец умного дома или администратор автоматизированного здания использует популярную систему управления с применением 1;оисЬ-панели с интерактивным интерфейсом. В этом случае узнать пароль по «изношенности» определенных клавиш невозможно. Пароль может меняться случайным образом каждый день и знать его будет только администратор. Тем не менее злоумышленник без проблем сможет открыть замок. Более того, он способен обойтись даже без специальной техники. Все, что ему понадобится, — это знания уязвимостей 1;оисЬ-панели и возможность
1 - НИЯУ МИФИ, доцент;2 - НИЯУ МИФИ, аспирант;3 - НИЯУ МИФИ, доцент;
4 - НИЯУ МИФИ, доцент;5 - НИЯУ МИФИ, доцент.
ввести последовательность цифр на ее клавиатуре.
Для того чтобы понять, как вооруженный лишь собственными знаниями злоумышленник может взломать электронную систему защиты, обратимся к теории разработки систем управления зданием. Рассмотрим ситуацию на примере, пожалуй, самой популярной на сегодняшний день системы управления автоматизированным зданием — системы LonWorks. LonWorks — это программно-аппаратная сетевая платформа компании Echelon Corporation, которая является международным стандартом построения систем мониторинга и управления. Ее используют не только для оборудования частных коттеджей, но и для больших офисных зданий [1]. Именно эта система обычно выбирается для осуществления управления системами специального назначения: железнодорожных станций и путей, аэропортов, а также мест большого скопления людей. Так системой LonWorks оборудованы Лондонский аэропорт Хитроу, институт им. Курчатова и другие объекты. LonWorks, как уже было сказано, — это целая аппаратно-программная система, которая включает в себя следующие компоненты:
♦ протоколы связи — стандарты передачи данных в сети LonWorks, которая охватывает автоматизируемое здание;
♦ специализированные процессоры (Neuron Chip) — устройства, осуществляющие обработку данных и реализующие логику управления;
♦ различные среды передачи данных — в системах LonWorks поддерживается большое количество целевых сред передачи данных (витые пары, линии электропередач, радиочастотная передача, инфракрасная передача); для того чтобы передавать данные по тем или иным каналам, используются специализированные передатчики;
♦ сетевая база данных — это обязательная часть платформы, которая позволяет управлять, расширять и поддерживать сети LonWorks извне.
Отличие LonWorks от классической топологии управляющих сетей заключается в концепции «интеллектуального узла».
Классическая управляющая сеть, например X10 и KNX, представляет собой совокупность датчиков и контролируемых узлов (освещение, системы климат контроля и т.д.) и центральный узел обработки данных и выработки команд, куда стекается информация с датчиков и от которого контролируемые системы получают команды [2, 3]. Достоинства этой системы заключаются в предельной простоте всех узлов, кроме центрального. LonWorks предлагает распределить задачу обработки данных. Датчики, обладая интеллектуальной частью в виде процессора Neuron Chip, могут нормализовать свои данные и сообщать только о существенных событиях, например, о превышении некоторого температурного порога, появлении в помещении постороннего и т.д. Таким образом, снижается нагрузка на сеть, упрощается узел обработки данных, часть команд будет передаваться напрямую между датчиком и контролируемым устройством (вошел человек — включить свет). Для разработки программного обеспечения для процессоров Neuron Chip используется язык Neuron C [4]. Уязвимость, которая лежит в основе рассмотренной атаки, является причиной того, что разработчики логики системы, использующие язык программирования Neuron C, допускают существенные ошибки при написании кода, которыми пользуются злоумышленники. Являясь наследником языка программирования С, Neuron C также обладает фундаментальной уязвимостью своего предшественника — переполнением буфера. Рассмотрим базовые основы стандартного переполнения буфера.
Пусть логикой программы подразумевается, что пользователь должен ввести строку символов (пароль, свое имя и т.д.) с клавиатуры. Эту строку программа должна обработать согласно заложенному алгоритму. Для того чтобы сохранить строку, программисты выделяют небольшой объем памяти — буфер, где введенная строка запоминается для последующей обработки. Большинство программистов выделяют для подобного временного хранения строку определенной длины. Логично предположить, что имя человека не будет составлять больше
чем 30 символов. Более того, не все программисты делают проверку того, что введенная строка действительно содержит менее 30 символов. Но если она окажется больше определенной длины, буфер будет переполнен и «хвост» введенной строки в памяти компьютера окажется в ячейках памяти, следующих за ячейками памяти, выделенными под буфер. Если в этих ячейках памяти хранится полезная информация, то она будет затерта и на ее месте окажется «хвост» введенных пользователем данных. Этим, как правило, пользуются злоумышленники, например, для того, чтобы заменить значения хранимых в памяти программы данных на те, которые выгодны им. Если же мошенники обладают более высоким мастерством, то они могут заставить атакуемое программное средство реализовать собственную вредоносную программу, код которой они введут прямо в окно запроса.
О переполнении буфера разработчикам известно давно, и в приложениях уважаемых компаний-разработчиков подобные уязвимости уже вряд ли можно встретить, так как перед выпуском продукта на рынок эксперты компании проверяют код на наличие подобного рода «дырок». К сожалению, большинство разработчиков ошибочно полагают, что системы умного дома атаковать никто не станет, ведь о вирусах для подобных систем никто не слышал, а разработчики вредоносных программ (которые в большинстве своем являются студентами) вряд ли будут атаковать автоматизированные системы управления зданием, ведь покупка оборудования для тестирования вирусов — дорогое удовольствие [5]. Но для профессионалов в случае необходимости взлом разработанной на скорую руку системы — это не столь сложная задача. Приведем пример уязвимого участка кода на языке Neuron C.
//переменная попадающая под атаку int ivar;
//переполняемый буфер char buff[40];
//чтение длины очередного пакета io_in(RxD, buff, 2); //чтение пакета io_in(RxD, buff, *(short*)buff);
Как правило, при реализации программы на языке Neuron C память под переменные будет выделена таким образом, что переменная ivar окажется сразу после переполняемого буфера. То есть сначала выделяется память под переменные, объявляемые последними. В рассматриваемом примере используется функция io_in, которая отвечает за взаимодействие Neuron Chip по последовательному интерфейсу, например, с компьютером. Как видно, разработчик подразумевает, что в буфер будет введена строка длиной не более 40 символов. При этом никакой проверки не производится. Очевидно, что при последующем вызове функции io_in будет изменено значение переменной ivar.
Теперь обратимся к рассматриваемой атаке. Как отмечалось выше, для входа в здание может использоваться touch-панель, на которой вводится пароль доступа. Подобные панели подключаются к Neuron Chip, который осуществляет проверку введенного пароля и затем отдает в сеть указание о возможности допуска человека в здание в случае успешной авторизации.
Программист, не обладающий высокой квалификацией или просто не задумывающийся о вопросах обеспечения безопасности, может реализовать
программный код проверки вводимого пароля следующим образом:
//переменная попадающая под атаку char pass[7] = "Пароль"; //переполняемый буфер char buff[40];
//чтение длины очередного пакета io_in(RxD, buff, 2); //чтение пакета io_in(RxD, buff, *(short*)buff); //проверка пароля for (int iter = 0; iter < 7; ++iter){ if (buff[iter] != pass[iter]) return;
}
//открытие замка
Как и в предыдущем примере, буфер будет переполнен и у переменной pass окажется новое значение. То есть соответствующее переполнение буфера buff позволит внести контролируемое изменение в буфер пароля. Чтобы проникнуть в здание, злоумышленнику будет достаточно ввести на touch-панели пароль длиной 46 символов, где первые 6 символов будут равны последним. Ведь в цикле проверки происходит посимвольное сравнение двух переменных, доступ к которым, используя уязвимость, получил злоумышленник. При этом мошеннику нет необходимо-
сти угадывать сам пароль и взламывать систему путем подключения к ней специализированного устройства. Для того чтобы защититься от атаки, необходимо крайне аккуратно подходить к выбору компании — инсталлятора систем умного дома. Если разработчик — небольшая компания, которая использует труд неквалифицированных программистов, то обладатель системы автоматизации здания может оказаться в серьезной опасности. Чтобы взломать систему, имеющую подобную уязвимость, помимо квалификации, мошенникам требуется существенное время на ее изучение, ведь исходного кода они не видят, а значит, могут только догадываться об уязвимостях. Обнаружить уязвимости не сложно, но для этого требуется получить доступ к системе на некоторое время. Если нет уверенности в том, что система разработана без «узких» мест, не стоит позволять возможным мошенникам получать к ней доступ и тестировать ее на предмет наличия уязвимостей. В некоторых случаях будет полезным ограничить возможность посторонних лиц пользоваться touch-панелью, с которой можно ввести код доступа, или установить камеру видеонаблюдения для того, чтобы фиксировать неожиданную активность устройства для ввода пароля
Литература
1. Дитмар Дитрих, Дитмар Лой, Ганс Юрген Швайнцер. LON — технология: построение распределенных приложений. / Пер. с нем.. — под ред. О. Б. Низамутдинова. — Пермь: Звезда, 1999. — 424 с.
2. Соломатина Е.В. Обеспечение безопасности систем, автоматизированного управления, зданием, на базе системы. X10. Труды. VII Межведомственной научно-технической конференции «Проблемы, комплексного обеспечения, защиты, информации и совершенствования, образовательных технологий подготовки специалистов в области информационной безопасности», том. 1. — Краснодар: Краснодарское высшее военное училище (военный институт) им. Генерала армии С.М. Штеменко, 2009. — С. 26 — 29.
3. Д. Дитрих, В. Кастнер, Т. Саутер, О. Низамутдинов. EIB — система автоматизации зданий./ Пер. с нем.. — под ред. О.Б. Низамутдинова, М.В. Гордеева. — Пермь: ПермГТУ, 2001. — 378 с.
4. Neuron® C Programmées Guide. Echelon Corporation, the United. States of America, 2009. 268р. URL: http://www.echeIon.com/ support/documentation/manuaIs/devtooIs/078-0002-02H_Neuron_C_Programmers_Guide.pdf.
5. Михайлов Д.М. Вопросы безопасности систем умного дома и интеллектуального здания. Труды VII Межведомственной научно-технической конференции «Проблемы комплексного обеспечения защиты информации и совершенствования образовательных технологий подготовки специалистов в области информационной безопасности», том 1. — Краснодар: Краснодарское высшее военное училище (военный институт) им. Генерала армии С.М. Штеменко, 2009. — С. 35 — 39.