Professional Documents
Culture Documents
Л1 Безпека ІоТ
Л1 Безпека ІоТ
з навчальної дисципліни
«Архітектура та технології ІоТ»
Питання лекції
1. Загальновживані поняття кібербезпеки
2. Анатомія кібератак на IoT-пристрої
3. Фізична і апаратна безпека
4. Криптографія
5. Програмно-визначаємий периметр
6. Блокчейн і криптовалюта в Інтернеті речей
ВСТУП
У світі кібербезпеки є усталений набір визначень, які описують різні типи атак і
запобіжні заходи. У цьому розділі ми коротко пройдемося по жаргону і термінам,
прийнятим в цій індустрії, і далі будемо використовувати їх на протязі всієї глави.
Область кібербезпеки занадто широка, щоб її можна було втиснути в одну-дві лекції.
Але, оскільки Інтернет речей складається з апаратного забезпечення, мережі, протоколів,
сигналів, хмарних компонентів, фреймворків, операційних систем і всього, що їх пов'язує,
то всі відомі на цей час експлойти і атаки на IoT-пристрої можна розділити на три основні
типи:
Mirai - найбільш руйнівна DDoS-атака в історії, спровокована поганим захистом IoT-
пристроїв у віддалених районах;
Stuxnet - урядова кіберзброя, націлена на IoT-пристрої в SCADA-системах. Завдала
значної і непоправної шкоди ядерній програмі Ірану;
ланцюгова реакція (Chain Reaction) - дослідницька методика для експлуатації
особистих мереж. Використовує пристрої на кшталт «розумних» лампочок і не вимагає
підключення до Інтернету.
Маючи уявлення про те, як працюють ці загрози, архітектор може підібрати
технології для їх запобігання і налагодити процеси, які дозволять нівелювати шкоду від
аналогічних атак.
Mirai
Mirai - це назва шкідника, який в серпні 2016 р заразив IoT-пристрої на базі Linux.
Атака виконувалася з ботнету, що згенерував величезне DDoS-навантаження. У число
найбільш відомих жертв увійшли Krebs on Security (популярний блог про безпеку), Dyn
(дуже популярний і затребуваний DNS-провайдер) і Lonestar (великий стільниковий
оператор в Ліберії). Серед менш значущих цілей були італійські політичні сайти, сервери
Minecraft в Бразилії і російські інтернет-аукціони. Непрямими жертвами DDoS-атаки на
компанію Dyn стали її клієнти, серед яких виявилися такі величезні сервіси як PlayStation
Network, Amazon, GitHub, Netfix, PayPal, Reddit і Twitter.
Всього було заражено 600 000 пристроїв, які стали частиною ботнету. Вихідний код
Mirai був опублікований на хакерському форумі hackforums.net. Шляхом його аналізу, а
також за допомогою трасування і вивчення журнальних файлів дослідники розкрили
принцип роботи і хронологію виконання атаки:
пошук жертв - швидке асинхронне сканування з використанням пакетів TCP SYN і
перевіркою довільних IPV4-адрес. Особливу увагу шкідник приділяв TCP-порту 23, що
належить SSH/Telnet, і порту 2323. У разі знаходження відповідного порту починався
другий етап. У Mirai був вбудований чорний список адрес, які слід уникати. Він містив 3,4
мільйона записів, що належать поштовій службі США, Hewlett Packard, GE і
американському міністерству оборони. Швидкість сканування сягала 250 б/с. Для ботнету
це досить повільно. Атаки на кшталт SQL Slammer генерували скануючі запити на
швидкості 1,5 Мбіт/с. Справа в тому, що IoT-пристрої мають куди більш скромні
обчислювальні можливості в порівнянні з настільними і мобільними комп'ютерами;
простий перебір через Telnet - на цьому етапі шкідник намагався встановити робоче
з'єднання з жертвою через Telnet, відправляючи 10 пар «логін-пароль», обраних
випадковим чином зі списку з 62 парами.
У разі успіху зламаний комп'ютер підключався до сервера C2. Пізніші різновиди
Mirai навчилися виконувати RCE-експлойти;
зараження - сервер передавав потенційній жертві програму-завантажувач, яка
відповідала за визначення версії операційної системи і установку шкідника, заточеного
під конкретний пристрій.
Потім завантажувач шукав і припиняв роботу конкуруючих процесів, які
використовували порти 22 або 23 (в тому числі і інші шкідники, які могли перебувати на
пристрої). Після цього завантажувач віддалявся, а ім'я процесу маскувався, щоб приховати
його присутність. Шкідник не зберігався на постійному накопичувачі і зникав після
перезавантаження. В кінці бот входив в сплячий режим в очікуванні подальших команд.
Жертвами Mirai були такі IoT-пристрої, як IP-камери, DVR, споживчі
маршрутизатори, IP-телефонія, принтери та цифрові телевізійні приставки. Шкідливі
виконавчі файли підтримували 32-бітові версії ARM, MIPS і x86.
1 серпня 2016 р відбулося перше сканування, яке було виконано з американського
веб-хостингу. На пошук першого комп'ютера з відкритим портом і відповідним паролем
пішло 120 хвилин. За хвилину було заражено ще 834 пристрої. Через 20 годин кількість
заражених пристроїв досягло 64 500. Ще через 75 хвилин охоплення Mirai подвоївся.
Більшість заражених комп'ютерів, які стали частиною ботнету, перебували в Бразилії
(15%), Колумбії (14%) і В'єтнамі (12,5%), хоча DDoS-атаки були націлені на інші регіони.
Збиток був обмежений DDoS-атаками, які проводилися через SYN-пакети, мережі
GRE IP, а також протоколи STOMP і DNS. Протягом п'яти місяців сервери C2 передали 15
194 окремі команди, спрямовані проти 5042 веб-сайтів. 21 вересня 2016 р ботнет Mirai
справив масовану DDoS-атаку на Krebs (блог, присвячений безпеці), згенерувавши трафік
на швидкості 623 Гбіт/с. Це була найгірша DDoS-атака в історії. Нижче показаний знімок
екрана, зроблений під час цих подій за допомогою сервісу www.digitalattackmap.com, який
став результатом співпраці між NETSCOUT і Google Jigsaw (рис. 12.1).
Stuxnet
Stuxnet - це перша задокументована кіберзброя, призначена для нанесення шкоди
активів іншої країни. Це був черв'як, спрямований проти програмованих логічних
контролерів (англ. Programmable Logic Controllers, або PLC) Siemens, заснованих на
SCADA. Він використовував руткит для зміни швидкості обертання двигунів, які
перебувають під безпосереднім управлінням PLC. Творці цього вірусу зробили все для
того, щоб він атакував тільки пристрої з відомими частотно регульованими приводами, які
підключені до модулів Siemens S7-300 PLC і обертаються з частотою 807 Гц або 1210 Гц,
так як вони зазвичай застосовуються в насосах і газових центрифугах для збагачення
урану.
Атака імовірно почалася в квітні або березні 2010 р Процес зараження складався з
наступних етапів:
1) початкове зараження - спочатку черв'як заразив комп'ютер з Windows,
використовуючи вразливості, виявлені в попередніх вірусних атаках. Вважається, що це
було зроблено через підключення USB-диска. При цьому використовувалося відразу
кілька експлойтів нульового дня (безпрецедентна витонченість). Експлойти запускали
руткит в режимі користувача і ядра, а потім встановлювали драйвер пристрою з
коректним сертифікатом, викрадений у компанії Realtek. Драйвер, що працює в режимі
ядра, був необхідний для приховування Stuxnet від різних антивірусних пакетів;
2) атака на Windows і розповсюдження - після установки через руткит вірус
починав шукати в системі Windows файли, пов'язані з контролером Siemens SCADA версії
WinCC/PCS 7, також відомим як Step-7. У разі успіху черв'як намагався з'єднатися з
сервером C2 через Інтернет, використовуючи підставні URL-адреси
(www.mypremierfutbol.com і www.todaysfutbol.com), щоб оновитися до останньої версії.
Потім він шукав на диску файл з назвою s7otbdx.dll, який представляв собою важливу
комунікаційну бібліотеку для взаємодії між Windows і PLC. Контролер Step-7 включав в
себе вбудовану базу даних з паролями, яка зламувалася за допомогою ще одного
експлойта нульового дня. Stuxnet впроваджувався між системою WinCC і s7otbdx.dll,
виконуючи атаку посередника. Насамперед вірус записував інформацію про нормальний
режим роботи центрифуг;
3) руйнування - коли було вирішено скоординувати атаку, вірус відтворив
попередньо записані дані і відправив їх контролерам SCADA, які не підозрювали про те,
що система була скомпрометована або поводиться незвично. Збиток був нанесений в ході
двох різних скоординованих атак, заснованих на маніпуляції PLC, в результаті чого
постраждав весь комплекс збагачення урану. Кожні 27 днів ротори центрифуги
запускалися на 15 або 50 хвилин, що призводило до їх поступового зношування і появи
тріщин в їх шахтах. Крім того, порушувався процес збагачення.
Вважається, що дана атака, направлена на головний іранський об'єкт зі збагачення
урану в місті Нетензе, вивела з ладу понад тисячу центрифуг. З тих пір код Stuxnet став
загальнодоступним і перетворився на своєрідний ігровий майданчик для створення
похідних експлойтів (github.com/micrictor/stuxnet).
Ланцюжкова реакція
Ланцюгова реакція (англ. Chain Reaction) - це академічне дослідження нового виду
кібератак, націлених на персональні mesh-мережі без підключення до інтернету. Воно
також показує, наскільки вразливими можуть бути видалені IoT-датчики і керуючі
системи. Метою оригінальної атаки були лампочки Philips Hue, які можна знайти в так
званих розумних будинках з підтримкою управління через інтернет або мобільні додатки.
Експлойт здатний масштабироваться для атаки на цілі розумні міста - досить лише
вкрутити одну заражену лампочку.
Лампочки Philips Hue піднімають mesh-мережу на основі протоколу Zigbee, який є
частиною ініціативи Zigbee Light Link (ZLL) щодо забезпечення сумісності між різними
методами освітлення. ZLL-повідомлення не шифруються і не підписуються, хоча для
захисту ключів, обмін якими відбувається при додаванні лампочки в mesh-мережу,
застосовується криптографія.
У підсумку витік головний ключ, відомий всім учасникам консорціуму ZLL. Крім
того, відповідно до стандарту ZLL, лампочка, що підключається, повинна перебувати в
безпосередній близькості до ініціатора, що не дає йому перехопити контроль над
лампочками своїх сусідів. Протокол Zigbee також надає безконтактний метод
перепрограмування пристроїв, хоча пакети з прошивкою є зашифрованими і мають
цифровий підпис.
План атаки, яку провели дослідники, складався з чотирьох етапів:
1) зламати шифрування і цифровий підпис пакету з прошивкою;
2) написати і доставити заражене оновлення прошивки на одну єдину лампочку,
використовуючи зламані шифрування і ключі;
3) скомпрометована лампочка приєднається до мережі за допомогою головного
ключа, викраденого раніше, і обійде захист на основі близькості розміщення,
використовуючи дефект нульового дня, знайдений в широко поширеному компоненті
Atmel AtMega;
4) після успішного підключення до mesh-мережі Zigbee шкідливий код буде
розісланий сусіднім лампочкам, що призведе до їх швидкого зараження. Поширення
вірусу буде відбуватися відповідно до теорії перколяції і охопить всі освітлювальні
прилади в місті.
Для шифрування безконтактних оновлень прошивки Zigbee використовує AES-CCM
(частина стандарту IEEE 802.15.4). Для його злому зловмисник використовує кореляційний
і диференційний аналіз енергоспоживання (англ. Correlation Power Analysis [CPA] і
Differential Power Analysis [DPA]). Це витончений вид атаки, який підрозумівав би
розміщення лампочки на спеціальний стенд і вимір енергії, яку вона споживає. З огляду на
розвинені засоби управління, можна виміряти динамічне енергоспоживання процесора,
який виконує інструкцію або переміщує дані (наприклад, під час роботи алгоритму
шифрування). Це простий аналіз енергоспоживання, який залишає мало шансів на злом
ключа. Методи CPA і DPA є більш просунутими і використовують статистичну
кореляцію. Замість спроби розпізнати окремі біти, CPA може оперувати цілими байтами.
Показники живлення знімаються за допомогою осцилографа і розбиваються на дві
множини в залежності від проміжного значення, яке зламується: в першому воно
дорівнює 1, а в другому - 0. Реальне значення обчислюється шляхом вирахування з цих
множин середнього показника.
Шляхом використання DPA і CPA дослідникам вдалося зламати систему освітлення
Philips Hue:
- метод CPA застосовувався для злому AES-CBC. У атакуючої сторони не було ні
ключа, ні випадкового числа, ні вектора ініціалізації. Завдяки цьому підходу було
отримано ключ, який потім за допомогою того ж методу використовувався для злому
випадкового числа;
- метод DPA застосовувався для злому режиму лічильника AES-CTR і згодом -
алгоритму шифрування, який використовувався при упаковці прошивки. Дослідники
виявили 10 ділянок, в яких, імовірно, виконувався режим AES-CTR, що залишало 10
потенційних рішень;
- потім дослідники зосередилися на зломі захисту Zigbee, заснованої на близькості
розміщення, щоб підключитися до мережі. В результаті вивчення вихідного коду
завантажувача, який використовувався в чіпі Atmel, була знайдена уразливість нульового
дня. Зокрема, в момент відправлення запиту сканування в Zigbee перевірка на віддаленість
проходила успішно. Щоб її обійти, досить було почати сеанс з будь-якого іншого
повідомлення. Це дозволило дослідникам підключитися до мережі.
Справжня атака могла б змусити зламану лампочку заразити своїх сусідів в радіусі
ста метрів, передавши їм шкідливий код для відключення оновлень, щоб їх неможливо
було відновити. По суті, лампочки були б під управлінням зловмисника, і їх довелося б
знищити.
Дослідники зуміли створити повністю автоматизовану систему для атаки і
прикріпити її до безпілотного літального апарату, який робив систематичний обліт в
радіусі прийому лампочок Philips Hue на території університету та заражав кожну з них.
Більше інформації про атаку на Zigbee методом CPA можна знайти в доповіді Е.
Ронена, А. Шаміра, А. О. Вейнгартена і К. О'Флінн «IoT Goes Nuclear: Creating a ZigBee
Chain Reaction» (стор. 195-212), підготовленому до симпозіуму з безпеки і
конфіденційності IEEE (Сан-Хосе 2017 г.). Гарне керівництво і вихідний код для
проведення атаки CPA можна знайти на вікі-сторінці ChipWhisperer:
wiki.newae.com/AES-CCM_Attack.
Корінь довіри
Перший рівень апаратної безпеки полягає у встановленні кореня довіри (англ. Root
of Trust, або RoT). RoT - це процес завантаження з апаратною перевіркою достовірності,
який гарантує, що джерело першої виконуваної інструкції не підлягає зміні. Це ключовий
етап процесу завантаження, який бере участь в подальшому запуску системи - від BIOS до
ОС і додатків. RoT є базовим захистом від руткітів.
Кожен етап процесу завантаження перевіряє справжність наступного етапу,
формуючи таким чином ланцюжок довіри. Корінь довіри може використовувати різні
методи запуску:
завантаження образу і кореневого ключа з прошивки або незмінної пам'яті;
зберігання кореневого ключа в одноразовій програмованій пам'яті за допомогою
фьюз-бітів;
завантаження коду з захищеної області пам'яті в захищене сховище.
Корінь довіри повинен перевіряти справжність кожного наступного етапу
завантаження. Для цього на кожному етапі використовується набір ключів з цифровим
підписом (рис. 12.2). У різних процесорах корінь довіри реалізований по-різному. Intel і
ARM підтримують такі технології:
Фізична безпека
Стійкість до проникнення і фізична безпека грають важливу роль в Інтернеті речей.
Багато IoT-пристроїв розміщені віддалено, без будь-якого захисту. Це нагадує історію з
проектом «Енігма» під час Другої світової війни. Витяг робочої шифрувальної машини з
німецького підводного човна U-110 допомогло зламати шифр. Зловмисник з
безпосереднім доступом до IoT-пристрою може використовувати будь-які інструменти
для злому системи, як ми бачили на прикладі експлойта «Ланцюгова реакція».
Раніше вже був представлений приклад атаки сторонніми каналами за допомогою
аналізу енергоспоживання; злом також може здійснюватися на основі часу, кеша,
випромінювання електромагнітного поля і ланцюгів сканування.
Головна особливість атак сторонніми каналами полягає в тому, що зламані пристрій,
по суті, перетворюється в тестову площадку. Це означає, що воно буде знаходитися під
наглядом в контрольованому середовищі і його активність буде всіляко вимірюватися.
Крім того, такі методики, як DPA, використовують статистичний аналіз для
виведення закономірності між випадковим введенням і висновком. Цей підхід
застосовується лише в разі, якщо система демонструє ідентичну поведінку з одним і тим
же введенням (табл. 1).
4. КРИПТОГРАФІЯ
Симетрична криптографія
У криптографії використовуються такі терміни, як простий текст (англ. Plaintext) і
шифротекст (англ. Ciphertext), які позначають незашифрований ввід і, відповідно,
зашифрований вивід. Поточним стандартом шифрування вважається AES (англ. Advanced
Encryption Standard - просунутий стандарт шифрування); він прийшов на зміну старому
алгоритму DES, розробленому ще в 1970-х рр. AES є частиною специфікації FIPS і
стандарту ISO/IEC 18033-3, які використовуються у всьому світі. Алгоритми AES
засновані на блоках фіксованої довжини по 128, 192 або 256 біт. Повідомлення, що
перевищують довжину блоку, розбиваються на кілька частин. AES складається з чотирьох
основних етапів шифрування. Нижче показаний псевдокод для шифрування цим методом:
Довжина ключів в AES дорівнює 128, 192 або 256 біт. В цілому, чим довше ключ,
тим краще захист. Розмір ключа пропорційний кількості циклів процесора, необхідних для
шифрування або розшифрування блоку: 128 біт вимагає 10 циклів, 192 біта - 12 циклів, а
256 біт - 14 циклів.
Асиметрична криптографія
В цілому, повідомлення, які подаються на ввід алгоритму SHA, повинні бути менше
264 біт. Вони послідовно обробляються в 512-бітних блоках. Стандарт SHA-1 витіснений
більш стійкими версіями, такими як SHA-256 і SHA-3. У хешах SHA-1 знайшли
можливість «колізій»; і хоча для цього потрібно приблизно від 251 до 257 операцій, злом
хешу на орендованому графічному адаптері обійдеться лише в кілька тисяч доларів. У
зв'язку з цим рекомендується перейти на інші різновиди SHA.
Протокол захисту транспортного рівня (англ. Transport Layer Security, або TLS)
Стандарт TLS увібрав в себе всі криптографічні протоколи і технології, які ми вже
обговорювали. У цьому питанні ми коротко пройдемося по специфікації TLS1.2, її
структурі та використання.
Спочатку рівень захищених сокетів (англ. Secure Sockets Layer, або SSL) був
представлений в 1990 р, але вже через 9 років йому на зміну прийшла технологія TLS. З
2008 р. поточна специфікація TLS1.2 входить до складу стандарту RFC5246. TLS 1.2
включає в себе генератор хешів SHA-256, який був доданий замість SHA-1 для
поліпшення безпеки.
Процес шифрування в TLS виглядає наступним чином:
1) клієнт відкриває з'єднання з сервером, що підтримує TLS (порт 443 для HTTPS);
2) клієнт надає список шифрів, які він підтримує;
3) сервіс вибирає шифр і функцію шифрування і оповіщає клієнта;
4) сервер передає клієнту цифровий сертифікат, виданий центром, що засвідчує і
містить відкритий ключ;
5) клієнт підтверджує справжність сертифіката;
6) для генерації ключа сеансу використовується один з двох способів:
1) серверу передається випадкове число, попередньо зашифроване за допомогою
його відкритого ключа. Потім сервер і клієнт створюють на його основі ключ
сеансу, який використовується на протязі взаємодії;
2) ключ сеансу для шифрування і дешифрування генерується за допомогою
протоколу Діффі-Хеллмана. Отриманий ключ використовується, поки не
закриється з'єднання.
7) взаємодія переходить в зашифрований канал.
На рис. 12.9 показаний процес рукостискання двох пристроїв, які з'єднано через
TLS1.2.
5. Програмно-визначаємий периметр
Bitcoin (блокчейн)
Та частина Bitcoin, яка відноситься до криптовалюти, не є блокчейном як таким.
Bitcoin - це штучна валюта, яка сама по собі не має ніякої цінності і нічим не забезпечена
(на відміну від золота). Її не можна помацати; вона існує лише в рамках мережі. І, нарешті,
кількість «монет» Bitcoin не контролюється центральним банком або урядом. Це повністю
децентралізована технологія. Як і інші блокчейни, вона заснована на криптографії
відкритого ключа, великій і розподіленій одноранговій мережі та протоколі, який визначає
структуру Bitcoin. У 2008 р Сатоши Накамото (псевдонім) опублікував в розсилці,
присвяченій криптографії, документ під назвою «Біткойн: система цифрової пірингової
готівки». У 2009 р була запущена перша мережа Bitcoin, в якій Сатоши згенерував перший
блок (первинний блок [англ. Genesis Block]). Концепція блокчейна має на увазі наявність
блоку, який представляє собою поточний фрагмент реєстру. Комп'ютер, підключений до
мережі блокчейн, називається вузлом (англ. node). Кожен вузол бере участь в перевірці
автентичності та передачі транзакцій; для цього він отримує копію реєстру та, по суті, стає
її адміністратором.
Розподілені мережі, засновані на однорангових топологіях, ідеально підходять для
Bitcoin. У мережі Bitcoin діє закон Меткалфа, оскільки її розмір визначає цінність валюти.
Мережа зберігає ланцюжок записів (реєстр). Виникає питання: хто захоче добровільно
ділитися своїми обчислювальними ресурсами для моніторингу журналу? Відповіддю є
система винагороди на основі майнінгу (від англ. Mining).
На рис. 12 показаний процес виконання транзакції. Спочатку робиться запит, який
транслюється по піринговій (англ. Peer-to-Peer, або P2P) мережі комп'ютерів (вузлів). Ця
мережа відповідальна за перевірку справжності своїх користувачів, під час якої також
перевіряється сама транзакція. Потім транзакції об'єднуються в новий блок даних в
розподіленому реєстрі.
Після заповнення блок додається в існуючий блокчейн і більше не підлягає зміні.
Нижче проілюстровані аутентифікація, майнінг і перевірка справжності в Bitcoin.
На діаграмі показаний процес передачі 0,000554 BTC між Еліс і Бобом зі службовою
комісією 0,0001 BTC. Еліс ініціює транзакцію, підписуючи її вміст комбінацією хешу
попередньої транзакції і свого закритого ключа. Еліс також поміщає свій закритий ключ в
скрипт inputScriptSig. Потім транзакція поширюється по мережі для подальшого
додавання в блок і перевірки автентичності. Кожен учасник мережі намагається першим
підтвердити справжність і знайти підходяще випадкове число (NONCE), засноване на
поточному рівні складності. При знаходженні блоку сервер передає його іншим
учасникам, щоб ті його перевірили і додали в ланцюжок.
ВИСНОВОК