Зустріч із вірусом – враження не з приємних. Але є способи зловити і “препарувати” шкідливу програму. Саме цим і займаються вірусні аналітики. У цій статті зібранні початкові етапи цієї роботи.
Про всі основні кроки аналізу і як користуватися професійними інструментами, пише Хакер.
Крок перший
Якщо Ваш ПК вже уражений, то насамперед потрібно виконати три основні дії: ізолювати комп’ютер від інших в мережі, зробити дамп пам’яті і зняти образ диска.
При відключенні зараженого комп’ютера від мережі варто пам’ятати, що якщо ми маємо справу з вірусом-шифрувальником, то є шанс втратити призначені для користувача дані. Malware (шкідливе програмне забезпечення) може почати шифрувати їх, коли перерветься з’єднання з мережею, тому в першу чергу оцініть, наскільки важливі дані на зараженому ПК і чи варто ризикувати.
Найкраще буде створити для карантину віртуальну мережу (VLAN) з виходом в Інтернет і перемістити туди заражені ПК. У великій компанії це потребує злагоджених дій співробітників служби кібербезпеки і мережевих адміністраторів, в дрібній – різнопланових навичок сисадміна.
Далі необхідно зняти дамп пам’яті. Робиться це з самого початку, тому що під час копіювання жорсткого диска потрібно вимкнути комп’ютер і вміст оперативної пам’яті буде втрачено. Програму, яка знімає дамп, найкраще запускати з зовнішнього носія, щоб не залишати зайвих слідів на жорсткому диску – дані з нього знадобляться нам в незміненому вигляді.
Щоб Malware не встигло зреагувати на вимикання системи, найпростіше висмикнути кабель живлення. Метод, звичайно, варварський, зате гарантує моментальне відключення. Зберегти дані на жорсткому диску недоторканими для нас важливіше, ніж турбуватися про справність інших компонентів.
Далі запустимо ПК, використовуючи завантажувальний носій з будь-якою операційною системою в режимі forensic і ПЗ для отримання образу жорсткого диска. Найчастіше використовується образ диска в форматі E01 (Encase Image File Format). Його підтримує велика кількість додатків як для Windows, так і для Linux.
Режим forensic – це завантаження без монтування фізичних дисків. Це дозволяє виключити внесення будь-яких змін в досліджуваний диск. Професійні криміналісти також використовують пристрої, що дозволяють заблокувати будь-які спроби звернення до диска для запису.
Дампи пам’яті і диска, швидше за все, містять все, що нам необхідно, – тіло шкідливої програми і залишені нею сліди.
Рекомендують починати з вивчення копії диска, а дамп пам’яті використовувати, якщо на диску не вдасться виявити ніяких слідів або як додаткове джерело. При аналізі вмісту диска в першу чергу звертаємо увагу на автозавантаження, планувальник завдань і початковий сектор завантаження диска.
На сайті Microsoft є документація з автозавантаження сервісів і бібліотек.
Щоб зрозуміти, яким шляхом Malware потрапило до комп’ютера, варто досліджувати час створення і зміни файлів на диску, історію браузера і поштовий архів користувача. Якщо вийде встановити хоча б приблизний час зараження, то це буде плюсом.
З дампа пам’яті також можливо витягти деяку унікальну інформацію, наприклад які були відкриті документи і вкладки браузера в момент зараження, які були активні з’єднання з мережею, робочі процеси (в тому числі приховані).
Перевірка файлів
Коли у Вас на руках виявиться файл, що викликає підозри, потрібно буде якось упевнитися, що це і є екземпляр шкідливої програми. Звичайно, якщо це відомий вірус, то його можна виявити антивірусом (для перевірки відразу всіма антивірусними движками є сайт virustotal.com). Але все частіше трапляються унікальні випадки, які не виявляються антивірусними програмами. Такі шкідливі програми мають статус FUD (Fully UnDetectable).
Також не можна виключати, що Ви зіткнулися із загрозою нульового дня (0-day) – тієї, про яку ще нікому не відомо (і у розробників є нуль днів на її усунення – звідси і назва). Malware, яке експлуатує 0-day і має статус FUD, становить серйозну загрозу не тільки для окремих комп’ютерів, але і для цілих компаній.
Перед початком перевірки підозрілого файлу необхідно зробити наступне:
- Підготувати стенд для дослідження – віртуальну машину з встановленою операційною системою, придатною для запуску досліджуваного файлу.
- Налаштувати вихід в Інтернет, бажано забезпечивши приховування своєї реальної IP-адреси, щоб не втратити зв’язок з серверами управління Malware (тебе можуть розпізнати як вірусного аналітика і обмежити доступ, щоб приховати якісь функції).
- Зробити знімок (snapshot) первинного стану віртуальної машини.
- Стенд повинен бути ізольований від корпоративної мережі – це може викликати масове зараження інших комп’ютерів.
Існує два підходи до аналізу ПЗ – динамічний і статичний. Як правило, для кращого ефекту використовують більш відповідний для ситуації метод або обидва методи одночасно. Наприклад, може бути необхідно вивчити поведінку шкідливої програми, щоб виявити характерні маркери без аналізу алгоритмів. Тому вибір методів та інструментів може змінюватися в ході аналізу.
Статичний аналіз
Почнемо зі статичного аналізу, оскільки він не вимагає запускати шкідливий код і точно не викличе зараження на комп’ютері.
Розглянемо початкові заголовки виконуваного файлу для Windows.
DOS-заголовок файлу, також відомий як DOS-заглушка. Завдяки йому можливий запуск програми в DOS (зазвичай всього лише виводиться напис This program can not be run in DOS mode). Можна побачити початок заголовка за характерними буквах MZ.
Відразу ж за першим йде використовуваний сучасними ОС заголовок з усіма необхідними параметрами для виконуваного файлу (наприклад, зміщення до таблиці імпорту/експорту, початок секції виконуваного коду).
Початок заголовка можна знайти за характерними буквах PE, а опис формату є на сайті Microsoft.
Можна сказати, що заголовок файлу містить довідник про те, де і що саме знаходиться всередині самого файлу, які дозволи повинні бути видані секціям, всі налаштування для коректної роботи, тому аналіз заголовка може дати цінну первинну інформацію.
Крім цього, необхідно переглянути, чи немає в файлах строкових даних. За ним можна згодом визначати подібні файли або навіть отримати важливу інформацію на кшталт адрес серверів управління.
Перед розробниками Malware завжди стоїть завдання якомога сильніше маскувати своє творіння і всіляко ускладнювати виявлення і аналіз. Тому дуже часто використовуються пакувальники для виконуваних файлів.
Пакувальники – утиліти для стиснення і шифрування виконуваних файлів. Використовуються не тільки творцями Malware, а й розробниками легітимного ПЗ для захисту від зламу своїх програм. Самописні пакувальники, спеціально створені для утруднення аналізу, не завжди виявляються програмами і зажадають від аналітика додаткових дій, щоб зняти упаковку.
Більш глибокий (і в той же час складний) аналіз будь-яких виконуваних файлів – це застосування дизасемблерів (програм для перекладу машинного коду). Асемблерний код зрозуміліше для людини, ніж машинний, але через обсяги розібратися в ньому буває далеко не так просто. В окремих випадках можливо відновити вихідний код програм на мові високого рівня шляхом декомпіляції (відновлення вихідного коду програми) – якщо вдасться визначити, який використовувався компілятор і алгоритм обфускаціі (зміни вихідного коду програми).
Аналіз коду на асемблері – трудомісткий процес, який вимагає великих витрат часу і хороших навичок низькорівневого програмування, тому для швидкого аналізу можна перетворити отриманий код в псевдокод. Читати псевдокод більш зручно, ніж асемблер, це можна побачити за наступним прикладом, де зверху оригінальний код на асемблері, а знизу – псевдокод.
Динамічний аналіз
Читання псевдокоду або коду на асемблері подібне до розплутування клубка ниток – ретельно і занадто багато роботи. Тому можна скористатися іншим видом аналізу – динамічним. Динамічний аналіз має на увазі запуск виконуваного файлу і відстеження виконуваних ним дій, таких як звернення до гілок реєстру, відправлення і отримання даних через мережу, робота з файлами.
Динамічний аналіз передбачає запуск досліджуваного файлу. Це необхідно робити на віртуальній машині, ізольованій від інших комп’ютерів, щоб уникнути можливості поширення шкідливого ПЗ у мережі.
Аналізувати поведінку програми можна, відстежуючи і перехоплюючи запуск додатків на рівні ОС або підключившись до працюючого процесу і перехоплюючи виклики бібліотек і API. А щоб детально розібрати процес виконання програми, найкраще скористатися однією з програм налаштувань.
Програма налаштувань – утиліта або набір утиліт, який використовується для тестування і налагодження цільового програми. Вона може імітувати роботу процесора, а не запускати програму на цьому ПК. Це дає більш високий рівень контролю над виконанням і дозволяє зупиняти програму при заданих умовах. Більшість програм також здатні запускати виконання досліджуваного коду в покроковому режимі.
Працювати доведеться в ручному режимі. А це значить, що будуть потрібні поглиблені знання операційної системи.
Однак аналіз можна й автоматизувати. Для цього використовуються так звані пісочниці (sandbox) – тестові середовища для запуску ПЗ.
Пісочниці діляться на два типи: офлайнові і онлайнові. Для отримання найбільш повної картини рекомендують використовувати відразу кілька джерел даних і не виключати якийсь із типів пісочниць. Чим більше інформації, тим краще.
Приклад аналізу
Оскільки аналіз Malware завжди потребує практичного досвіду, стаття була б неповною без його демонстрації.
Для початку визначимося з послідовністю дій. Ось що потрібно зробити:
- отримати хеш-суму з файлу;
- скористатися онлайновим сервісом для перевірки файлу;
- зібрати статичні дані з файлу;
- перевірити файл в пісочниці (локальної або в інтернеті);
- запустити файл у віртуальному середовищі для відстеження виконуваних дій;
- зняти оболонки і отримати розгорнутий в пам’яті шкідливий;
- проаналізувати код в дизасемблера.
Припустимо, що необхідно досліджувати невідомий файл Sample.exe.
Для зберігання файлу рекомендовано насамперед змінити розширення, наприклад на Sample._exe, щоб уникнути випадкового запуску.
Робимо знімок (snapshot) віртуальної машини, на якій і будемо запускати виконуваний файл (початковий стан системи нам ще стане в нагоді), і рахуємо хеш-суму файлу.
Скопіюємо результат і скористаємося virustotal.com для перевірки.
Як можна побачити з скріншоту вище, вердикт VT – 54 з 70. З високою часткою ймовірності це шкідливе ПЗ, але не варто на цьому зупинятися, треба ще скористатися іншим сервісом – Any.run.
Бачимо, що він видає схожий результат (дивись в правому нижньому куті).
Крім того, можна зібрати додаткові дані про те, що робила програма:
- після старту продублювала себе в пам’яті;
- звернулася до сервера 208.91.199.224 по порту 587. На платформі можна подивитися мережевий дамп взаємодії з сервером управління Malware (їх часто називають Command&Control, C2 або C&C);
- додала заборону на запуск диспетчера завдань;
- скопіювала себе в окрему призначену для користувача директорію;
- додала себе в автозавантаження.
Навіть якби вердикт не вказав на можливу загрозу, відключення диспетчера задач і додавання в автозавантаження не обіцяє нічого хорошого для користувача, особливо якщо врахувати, що все це було зроблено відразу ж після запуску.
Отже, вже два сервісі підтвердили, що це Malware. Продовжуємо. Скористаємося інструментом під назвою DIE.
Detect it easy (DIE) – утиліта, що дозволяє імпортувати і експортувати список ресурсів, витягувати маніфест і версію ПЗ, переглядати обчислення ентропії. Є можливість додати свої власні алгоритми виявлення або змінити існуючі. Це робиться за допомогою скриптів на мові, що нагадує JavaScript.
Як можна бачити на скріншоті, Malware написане на Visual Basic. Можна легко знайти в Інтернеті структуру програм на Visual Basic 6.0 і опис принципів їх роботи. Якщо коротко, то запускаються вони в віртуальному середовищі, а це означає, що потрібно зловити момент, коли цей код буде розпакований в пам’яті. Також можна проаналізувати структуру файлу і отримати назву проекту, використані форми і інші дані.
Інший спосіб дізнатися, що Malware написана на Visual Basic, – використовувати CFF Explorer.
CFF Explorer – набір інструментів з єдиним мінімалістичним інтерфейсом, який дозволяє переглядати і редагувати всі секції заголовка виконуваного файлу. Тут же можна побачити обсяги імпорту та експорти функцій з бібліотек, перелік самих бібліотек і адресацію секцій.
В цьому випадку ми побачимо характерну імпортовану бібліотеку – її наявність говорить про те, що використовуються функції Visual Basic.
Наступним кроком запускаємо Hiew і, перейшовши на початок виконуваного коду, виявляємо виклик функції з бібліотеки.
Hiew – редактор двійкового коду з вбудованим дизасемблером для x86, x86-64 і ARM. Також ним можна відкривати фізичні і логічні диски як файл.
На цьому етапі нам досить знати, що під час запуску буде виконуватися код на Visual Basic.
Прийшов час спробувати витягти код і зафіксувати поведінку під час запуску. Для цього нам буде потрібна приготована віртуальна машина з Windows, Process Dump і API Monitor.
API Monitor – програма, яка дозволяє контролювати виклики функцій API додатками і сервісами в Windows, перехоплює інформацію про запущену програму або підключається до виконуваного процесу, щоб переглянути використовувані бібліотеки і виклики API.
В API Monitor запускаємо Sample.exe і отримуємо наступну картину: стартує ще один процес, після чого перший завершується, далі програма додається в автозавантаження.
Знаходимо вказаний виконуваний файл, це початковий файл, записаний в директорію користувача.
Програма ще вимикає можливість викликати диспетчер задач.
Цього вже цілком достатньо, щоб з упевненістю сказати, що файл шкідливий.
Вивантажимо з оперативної пам’яті процес. Скористаємося утилітою для вивантаження дампа процесу – Process Dump. PID беремо з даних API Monitor, він відображається поруч з ім’ям процесу.
В результаті будуть вивантажені всі бібліотеки, які використовує додаток. Також виявляємо, що в адресному просторі, крім основного виконуваного файлу, є ще й заховані, це можна побачити нижче, в імені файлу є слово hiddenmodule.
Перевіряємо кожен отриманий виконуваний файл в DIE.
Бачимо, що два з трьох файлів написані на C++, а один на VB.NET.
Звернемо увагу на додаток, написаний на VB.NET. Його можна відкрити будь-якою утилітою для роботи з .NET, наприклад dnSpy. І ми отримаємо код на Visual Basic, який можна прочитати, залишилося тільки прибрати обфускацію. В цьому випадку алгоритм ускладнили, додавши безліч переходів по коду за допомогою команди GoTo.
Для аналізу ще двох файлів скористаємося дизасемблером IDA.
IDA – популярний інтерактивний дизасемблер компанії Hex-Rays. Має безкоштовну і пробну версію, чого цілком достатньо для первинного знайомства. Також компанія випускає версію Pro. Основне завдання програми – це переклад виконуваних файлів з бінарного вигляду в читаний код на асемблері.
Як видно з прикладу, IDA дозволяє отримати код програми на асемблері, але для більш зручного перегляду і первинної оцінки можна скористатися плагіном Snowman і отримати псевдокод.
Використання псевдокоду спрощує аналіз, але не завжди дає очікуваний результат. Дизасемблювання і створення псевдокоду виконуються автоматично, і у вірусів є техніки для їх ускладнення.
На цьому ніби все, але це лише початок шляху. Адже тут виконані лише ті дії, які не вимагають знання асемблера. Однак, провести експрес-аналіз і встановити, чого можна чекати від шкідливого ПЗ, цілком реально і без цього.
При повноцінному ж розборі буде потрібно глибоке знання принципів роботи операційної системи і, звичайно, знання асемблера.
Якщо Ви хочете знати більше, то Вам допоможе література по reverse engineering, аналізу Malware, системного програмування та асемблеру, а також практика, багато практики. Рекомендуємо зареєструватися на hybrid-analysis.com для отримання прикладів працюючих Malware.
До речі, у рамках своїх активних зусиль щодо захисту мільярдів користувачів Інтернету компанія Google виявила та попередила понад 12 тисяч своїх користувачів, які зазнали кібератак від “державних хакерів” у третьому кварталі цього року.
Якщо Вас турбує “одвічне” питання геймерів та ентузіастів: побудувати комп’ютер із власноруч вибраних комплектуючих або купити готовий укомплектований системний блок? CyberCalm розібрав це питання.
Стало відомо, що Фінляндія першою в Європі почала привласнювати так звані ярлики кібербезпеки мережевим “розумним” пристроям.
Також 14 січня 2020 року Microsoft завершить підтримку операційної системи Windows 7 і пакету офісних програм Office 2010. Тому якщо Windows 10 виявилася занадто важкою системою для Вашого комп’ютера, як варіант – можете перейти на ОС Linux. У чому її переваги, читайте у статті.
Зверніть увагу, в наступному році iPhone чекають ще більш значущі зміни, ніж ті, що відбувалися з ними раніше. Apple планує зменшити діагональ дисплея одного з iPhone 2020 модельного року.
Здається, вже всі знають, що таке QR-код, але мало хто знає, як він з’явився, де застосовується і які особливості має. Усі подробиці про QR-код читайте у статті.