- Частина 1 У статті «Підготовка та використання аварійного набору» розповідається про те, як швидко...
- копіювання диска
- бездоганна копія
Частина 1
У статті «Підготовка та використання аварійного набору» розповідається про те, як швидко і грамотно відреагувати на інцидент, пов'язаний з порушенням безпеки комп'ютера. У цій статті, також складається з двох частин, буде детально розглянута область комп'ютерної криміналістики і показано, як слід виконувати поглиблений аналіз зазнала нападу машини. Для підготовки до аналізу необхідно створити завантаження компакт-диск і резервну копію жорсткого диска ураженого комп'ютера. Аналізувати вміст копії диска можна за допомогою декількох утиліт. Але перш ніж почати, згадаємо три основних принципи аналітичної криміналістики.
- Необхідно уникати змін будь-яких даних на ураженій машині. Щоб зберегти дані, слід зробити копію досліджуваного жорсткого диска, переконатися, що дубльований диск точно відповідає оригіналу, а потім проаналізувати цей диск. Більшість аналітичних інструментів проектують з розрахунку на роботу з копіями дисків, щоб не втратити цінну інформацію (наприклад, про час доступу) на ураженому комп'ютері.
- Не можна довіряти встановленим на ураженому комп'ютері програм і даних, які могли бути змінені в результаті атаки. Виконавши дублювання і застосовуючи аналітичний інструментарій до дубльованого диску, можна відмовитися від використання потенційно зіпсованих даних і програм.
- Операції криміналістичного копіювання та аналізу необхідно документувати. Хороший метод документування - створити цифрові контрольні суми ураженого диска і досліджуваного образу. Збіг контрольних сум математично доводить, що дані не змінилися. Слід також документувати програми, які були використані, і отримані з їх допомогою результати. Якщо має бути звертатися в суд, то рекомендується виконувати дублювання і аналіз при двох свідках.
Пам'ятаючи про ці три принципи, розглянемо, як створити завантаження компакт-диск і копію ураженого диска. Для цього буде потрібно виконати кілька команд Linux, але для цілей цієї статті знання Linux не обов'язково.
Створення компакт-диска
Основна мета криміналістичного аналізу - зібрати інструменти для копіювання ураженого диска і аналізу інформації на вторинному диску. Я користуюся для цього набором Penguin Sleuth Kit, відкритою версією дистрибутива Knoppix, модернізованого спеціально для криміналістики. Knoppix - дистрибутив Linux, який запускається з компакт-диска без попередньої установки. Програма завантажується з компакт-диска і завантажує всю операційну систему в пам'ять. Таким чином, будь-який комп'ютер з накопичувачем CD-ROM негайно готовий функціонувати в якості криміналістичної робочої станції на базі Linux. Стандартний дистрибутив Knoppix виконує запис на диск, щоб організувати розділ підкачки, але автор Penguin Sleuth Kit Ернест Бака (Ernest Baca) змінив дистрибутив Knoppix так, щоб не записувати ніякої інформації на уражену жорсткий диск.
Існують і інші інструменти криміналістичного дублювання і аналізу, такі як EnCase компанії Guidance Software і SafeBack від Technologies Incorporated (NTI). Однак в даній статті ці інструменти не розглядаються, оскільки, заплативши лише за компакт-диск, можна отримати інструмент, функціональність і продуктивність якого не поступаються або перевершують можливості продуктів незалежних постачальників.
До складу Penguin Sleuth Kit входять всі стандартні утиліти Linux і десятки криміналістичних інструментів, в тому числі надзвичайно корисні Sleuth Kit (в минулому відомий як The @stake Sleuth Kit-TASK) і Autopsy. Крім того, за допомогою Penguin Sleuth Kit можна копіювати вражений диск і навіть переглядати його, не пошкоджуючи доказів.
Penguin Sleuth Kit можна завантажити з Web-вузла Linux-Forensics.com. Слід звернутися за адресою http://www.linux-forensics.com/downloads.html і клацнути на одній з посилань Download Penguin Sleuth Mirror. Завантаження образ формату International Organization for Standardization (ISO) необхідно записати на компакт-диск. Досить помістити завантаження CD-ROM в накопичувач будь-якого комп'ютера, і Penguin Sleuth Kit готовий до роботи.
Поряд з завантажуваних компакт-диском необхідно підготувати носій для копіювання ураженого диска. Ємність носія повинна бути такою ж, як у жорсткого диска, так як Penguin Sleuth Kit копіює навіть порожні ділянки. Так, для зберігання образу диска ємністю 10 Гбайт, з яких 2 Гбайт вільні, потрібно носій нема на 8 Гбайт, а 10. Можна використовувати зовнішній жорсткий диск, підключений через порт USB 2.0 або FireWire (IEEE 1394), або внутрішній жорсткий диск. Внутрішній диск необхідно встановити в ураженому комп'ютері, не видаляючи основного жорсткого диска і накопичувача CD-ROM. Важливо звернути увагу на логічне розташування внутрішнього жорсткого диска (наприклад, ведений на другий шині IDE).
копіювання диска
При підозрі на хакерську атаку необхідно негайно зібрати якомога більше тендітних свідоцтв нападу (про те, як це зробити, розказано в статті «Підготовка та використання аварійного набору»). Потім слід вимкнути машину, діючи відповідно до офіційної політикою організації (якщо така існує). Наприклад, за інструкцією Міністерства оборони США користувач повинен негайно висмикнути шнур живлення з розетки, не намагаючись завершити сеанс звичайним шляхом.
Після того як уражений комп'ютер був відключений, його необхідно заново завантажити з компакт-диска з аварійним набором. Вставивши диск, слід включити комп'ютер і натиснути клавішу, яка дозволяє змінити параметри BIOS. Інформацію про цю клавіші можна знайти в керівництві. Зазвичай це клавіші F2 і Delete. Необхідно замінити першочергове завантажувальний пристрій з жорсткого диска на CD-ROM. Має сенс відкрити корпус комп'ютера і відключити жорсткий диск, щоб машина не завантажилася перш, ніж користувач встигне натиснути на клавішу настройки BIOS. Ця обережність забезпечить початкове завантаження з накопичувача CD-ROM.
Після завантаження з компакт-диска на екрані з'явиться командний рядок. Потрібно ввести команду
knoppix lang = us 2
Всі символи повинні бути в нижньому регістрі, тому що команди Penguin Sleuth Kit, як і команди дистрибутива Knoppix, чутливі до регістру. Команда knoppix запускає стандартний образ ядра. Параметр lang = us налаштовує Penguin Sleuth Kit на роботу зі стандартною розкладкою клавіатури для США. Для вибору іншої розкладки клавіатури слід замінити us на Двосимвольні позначення іншої країни. Якщо опустити параметр lang =, то за замовчуванням використовується німецька розкладка клавіатури. Параметр 2 переводить систему в текстовому режимі. Якщо його опустити, Penguin Sleuth Kit буде задіяти графічний інтерфейс, який займає багато пам'яті і для криміналістичного розслідування необов'язковий. Щоб змінити або додати параметри, можна натиснути клавішу F2 і перейти до екрану довідки. Однак тим користувачам, які мало знайомі з Linux, я цього робити не рекомендую.
Після введення команди knoppix і натискання на клавішу Enter комп'ютер завантажується, і на екрані з'являється базове командне запрошення Linux:
root @ ttyp1 [/] #
Команди Linux запускаються тим же способом, що і команди DOS: слід ввести ім'я команди разом з будь-якими аргументами і натиснути клавішу Enter. Однак в командному синтаксисі існують деякі відмінності. У структурі каталогів Linux каталоги поділяються прямим слешем (/), а не зворотним (), як каталоги DOS. Тому необхідно використовувати прямий слеш у всіх аргументах, що містять шляху. Крім того, стандартний метод Linux - використовувати дефіс (-) замість прямого слеша перед командними аргументами. І нарешті, на відміну від команд DOS, команди Linux чутливі до регістру символів.
Новачкам Linux може стати в нагоді команда man (скорочення від manual - керівництво). Щоб вивести на екран інформацію (наприклад, про застосування або параметрах команди), можна ввести команду man і слідом за нею команду, відомості про яку потрібно отримати. Наприклад, для виведення на екран інформації про команду dcfldd (мова про яку піде нижче) слід ввести
man dcfldd
і натиснути клавішу Enter. Інформація на екрані називається сторінкою man. Для прокрутки тексту на сторінці man використовуються клавіші Up Arrow і Down Arrow. При кожному натисканні на клавішу «пробіл» інформація переміщається на одну сторінку вниз (80 рядків).
Найпоширеніший метод криміналістичного дослідження на комп'ютерах Linux - команда dd, стандартна команда, яка копіює файли на байтовому рівні. У Linux теоретично всі об'єкти можна віднести до одного файлу, тому за допомогою dd можна копіювати цілий диск в один файл, або образ. Співробітники лабораторії DoD Computer Forensics Laboratory (DCFL) переробили команду dd спеціально для дослідницької роботи. В результаті з'явилася команда dcfldd, яка забезпечує хешування копійованих даних через певні інтервали часу з метою їх аутентифікації. Крім того, dcfldd працює значно швидше, ніж команда dd. Незважаючи на високу ефективність dcfldd, для створення образу цілого диска зазвичай потрібно чимало часу. В даній статті наведені необхідні відомості про застосування та параметрах dcfldd, але я рекомендую прочитати відповідну сторінку man, щоб більше дізнатися про команду. Це потужний інструмент, за допомогою якого можна вирішувати ті ж завдання, що і з використанням дорогих комерційних програм.
При запуску dcfldd необхідно спочатку вказати копіюється диск. У Linux диски IDE організовані таким чином: для звернення до кожного пристрою використовується запис / dev / hdx, де x - символ диска, відповідний кожному каналу. Символи дисків зростають відповідно до пріоритетом каналу і статусу провідний / ведений. Тому на першому каналі ведучий диск - / dev / hda, а ведений - / dev / hdb, на другому каналі ведучий диск - / dev / hdc, ведений - / dev / hdd. Порядок запису дисків SCSI майже такий же, як дисків IDE: / dev / sdx, де x може приймати значення a, b, c і т. Д.
Для доступу до розділу диска слід вказати номер відповідного розділу. Наприклад, третій розділ первинного ведучого диска - / dev / hda3, а перший розділ вторинного веденого диска - / dev / hdd1. Такий же спосіб використовується для доступу до розділів SCSI.
Потім необхідно вказати команді dcfldd місце для зберігання образу. При завантаженні з компакт-диска файлову систему будується в оперативній пам'яті, але, як правило, для зберігання образу жорсткого диска вона мала. Щоб записати когерентні дані як на зовнішній, так і на внутрішній жорсткий диск, його необхідно змонтувати. Монтувати диск в Linux - значить привести його в стан, в якому операційна система розпізнає його на файловому рівні. Позначення / dev / hdx забезпечує доступ до диска на байтовому рівні, а команда mount дозволяє працювати з розділом диска як з каталогом, в який можна безперешкодно записувати дані. команда
mount / dev / hdb1 / mnt
монтує перший розділ первинного веденого диска в том / mnt; в результаті можна записувати і читати дані з будь-яких файлів на цьому томі. Linux розпізнає FAT32 і NTFS і без праці монтує диски в цих форматах. Однак я рекомендую задіяти жорсткий диск з FAT32, так як слабке опис NTFS (промах Microsoft!) Істотно ускладнює запис в розділи NTFS.
При використанні зовнішніх жорстких дисків USB і FireWire Linux емулює з'єднання диска з системою SCSI. Якщо SCSI-накопичувачі відсутні, то перший диск USB або FireWire матиме позначення / dev / sda. Якщо є накопичувачі SCSI, то перший диск USB або FireWire буде черговим диском в ланцюжку SCSI. Linux підтримує майже всі пристрої USB і FireWire, але, щоб перевірити сумісність операційної системи з конкретним пристроєм, слід звернутися за адресою http://www.qbik.ch/usb/devices і клацнути на Devices (для пристроїв USB) або http://www.linux1394.org/hcl.php (Для пристроїв FireWire).
Після запису диск необхідно демонтувати; в іншому випадку дані можуть бути втрачені. Для цього використовується команда umount (НЕ unmount):
umount / dev / sda1
При размонтировании диска звертатися до нього не можуть ніякі файли, в тому числі інтерпретатор команд (оболонка). У робочому каталозі необхідно використовувати команду
cd /
щоб вийти з каталогу перед застосуванням команди umount.
Тепер можна отримати образ диска. Припустимо, що вражений диск, образ якого потрібно отримати, - / dev / hda1, а диск, на який буде зроблений запис, позначений / dev / hdb1 і змонтований в / mnt. Через поточних обмежень в Autopsy доводиться отримувати образ розділу, а не цілого диска. Якщо уражений диск працює тільки з Windows, то / dev / hda1, швидше за все, диск C. Якщо відомо, що на диску є інші розділи, то слід отримати і їх образи. Можливо, до моменту публікації даної статті обмеження буде усунуто і можна буде отримати образ цілого диска. Слід запустити команду
dcfldd if = / dev / hda1 of = / mnt / image.dd bs = 4096 hashwindow = 732954624 hashlog = / mnt / hashlog conv = noerror, sync
Команда надрукована на декількох рядках, але вводити її потрібно одним рядком. Те ж саме відноситься і до інших багаторядковим командам в даній статті. Параметри цієї команди потребують пояснень. Параметри if = і of = вказують вхідний файл (в даному випадку / dev / hda1) і вихідний файл (/mnt/image.dd) відповідно. Параметр bs = 4096 задає режим читання і запису блоками розміром по 4096 байт і підвищує ефективність пересилання даних. Команда dcfldd Не додає зайвих даних в копіюється файл, якщо розмір блоку більше останнього фрагмента даних вхідного файлу. Наприклад, якщо останній копіюється блок має розмір всього 2096 байт, то dcfldd зайві 2000 байт не додають. Копіювання припиняється, коли закінчуються дані. Цей режим можна змінити, але робити цього при криміналістичному копіюванні не рекомендується.
Параметр hashwindow = призначений спеціально для криміналістичних завдань. Він забезпечує роздруківку хешу MD5 (хешу, отриманого з використанням алгоритму MD5) даних, скопійованих для будь-якого блоку зазначених даних. У прикладі команди вказано 732 954 624 байт, і dcfldd буде генерувати хеш для кожних 699 Мбайт записаних даних. Щоб генерувати тільки один хеш, слід вказати hashwindow = 0. Хеші відображаються на екрані, якщо за допомогою параметра hashlog = невідомий файл, в якому їх потрібно зберегти. У прикладі команди вони записуються в файл / mnt / hashlog. Збереження цієї інформації в файлі значно сприятиме кращому розумінню і перевірку хешів. Крім того, слід роздрукувати екземпляр хеш-файлу після отримання образу і зберегти його в надійному місці. Нижче буде розказано про те, як прочитати хеш-файл.
Останній параметр задає метод обробки помилок читання. За замовчуванням в разі помилки в процесі читання робота dcfldd припиняється. Якщо параметру conv = присвоєно значення noerror, то dcfldd пропускає помилкові байти і продовжує читати диск. Прапор sync підставляє нульове значення замість кожного непрочитаного байта. В результаті остаточний розмір файлу буде незмінним, незалежно від кількості помилок.
Можна припустити параметр of = і задіяти утиліту Netcat (або Cryptcat) для перенаправлення результатів команди на сервер. Наприклад, щоб перенаправити результати команди в порт 5000 прослуховуючого сервера (з IP-адресою 192.168.1.100), слід ввести команду
dcfldd if = / dev / hda1 bs = 4096 hashwindow = 732954624 hashlog = / mnt / hashlog conv = noerror, sync | nc -p 5000 192.168.1.100
Після завершення виконання команди dcfldd необхідно обробити вихідний файл утилітою Md5sum, щоб переконатися в його цілісності. Більш докладно про застосування Md5sum, Netcat і Cryptcat розказано в статті « Підготовка та використання аварійного набору ", частина 1.
Побачити хеші, створені командою dcfldd, можна за допомогою команди less.
less / mnt / hashlog
Для прокрутки результатів команди less на 80 рядків вниз (як і сторінки man) використовується клавіша "пробіл". Для повільної прокрутки екрану вгору і вниз можна натискати клавіші Up Arrow і Down Arrow.
Команда dcfldd генерує тільки один файл образу. За допомогою команди split можна розбити файл на більш дрібні фрагменти (хоча робити це не обов'язково). В даному прикладі можна використовувати команду
split -bytes = 699m /mnt/image.dd suscomp
Параметр -bytes = вказує, скільки байтів вхідного файлу повинна бути передано в вихідний файл. В даному випадку вказано значення 699 Мбайт, що збігається з числом байтів, використаних для обчислення кожного хешу MD5. Передостанній параметр - ім'я файлу, яке поділяється на більш дрібні фрагменти (в даному випадку, /mnt/image.dd). Останній параметр - префікс, який присвоюється вихідним файлів. Формат іменування - prefixaa, prefixab, prefixac і т. Д. Таким чином, в даному прикладі вихідні файли отримають імена suscompaa, suscompab, suscompac і т. Д. При необхідності згодом можна об'єднати групи файлів за допомогою команди cat. Наприклад, команда
cat suscompaa suscompab> combo1
об'єднує файли suscompaa і suscompab в файл combo1.
бездоганна копія
Отже, ми отримали цифрову копію ураженого жорсткого диска. Криміналістичний аналіз можна виконати на дубльованому диску, щоб виключити будь-які зміни даних в постраждалій машині. У другій частині статті буде розказано, як провести вичерпний аналіз.
Матт Леско ( [email protected] ) - системний адміністратор компанії Advanced DataTools в Аннандейл, шт. Вірджинія