Наша совместная команда Banwar.org

Связаться с нами

  • (097) ?601-88-87
    (067) ?493-44-27
    (096) ?830-00-01

Статьи

Розширюємо стандартні можливості жорсткого диска

  1. Зміст статті Жорсткий диск, він же вінчестер, не таке вже й просте пристрій, яким може здатися на...
  2. електроніка HDD
  3. INFO
  4. пацієнт
  5. копнемо глибше
  6. Ласкаво просимо, або Стороннім вхід заборонено
  7. міняємо прошивку
  8. INFO
  9. Термінальний режим жорсткого диска
  10. Запис інформації в сервісні розділи HDD
  11. WARNING
  12. Програми для відновлення HDD
  13. висновок

Зміст статті

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

WARNING

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

електроніка HDD

Конструкція вінчестера в якійсь мірі напевно відома кожному. По суті, це кілька пластин, які обертаються зі швидкістю 15 000 об / хв, пристрій позиціонування і блок керуючої електроніки. Додамо до цього систему самоконтролю SMART і інші інтелектуальні атрибути. Коротше, без півлітри не розберешся, тим більше технологія окремих елементів становить комерційну таємницю.

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

Мал. 1. Плата жорсткого диска

INFO

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

пацієнт

Отже, перед нами плата типового жорсткого диска Western Digital WD5000AAKX об'ємом в 500 Гб (рис. 1). Що ми маємо:

  1. Мікросхема DRAM. Інтересу як такого не представляє, мануал легко можна знайти в Мережі. Пам'ять цих чіпів коливається від 8 до 64 Мб і відповідають розміру кеша жорсткого диска.
  2. Контролер двигуна шпинделя. Відповідає за управління механікою, регулює потужність і має деякі аналогові / цифрові канали. На чіп Smooth L7251 3.1 мануали відсутні, але можна спробувати пошукати схожі мікросхеми.
  3. Флеш пам `ять. На деяких вінчестерах мікросхема відсутня, але флеш-пам'ять буває вбудована в чіп контролера диска. Зазвичай має розмір в межах від 64 до 256 Кб. Використовується для зберігання програми, від якої завантажується контролер жорсткого диска.
  4. І найцікавіша для нас річ - контролер жорсткого диска. Їх виробляють компанії Marvell, ST, LSI і інші. Деякі компанії, що виробляють вінчестери, роблять свої власні контролери, як, наприклад, Samsung і Western Digital.

Контролер жорсткого диска призначений для управління операціями перетворення і обміну даними від головок читання / запису до інтерфейсу накопичувача. На жаль, компанія Marvell не хоче викладати документацію на свою продукцію у відкритий доступ. Ну що ж, спробуємо розібратися самі.

копнемо глибше

Наш закордонний колега Джероєн «Sprite_tm» Домбург знайшов цікавий вихід з даної ситуації - для дослідження контролера він використовував інтерфейс JTAG (від англ. Joint Test Action Group). Цей інтерфейс призначений для тестування і налагодження друкованих плат. Тобто за допомогою JTAG ми можемо спокійно підключитися до цікавого для нас пристрою, що підтримує стандарт IEEE 1149. В мікросхему інтегрується порт тестування (TAP - Test Access Port), що складається з чотирьох або п'яти висновків: TDI, TDO, TMS, TCK і, можливо, TRST. Розташування цих висновків для контролера Marvell знайшов якийсь dex, люб'язно поділився результатами на форумі HDDGURU .

Джероєн з'ясував, що у контролерів Western Digital є ARM-ядро, доступне через JTAG-порт. А також послідовний порт, який зазвичай не використовується, але може бути корисний для наших цілей.

Для дослідження контролера жорсткого диска використовувалася плата FT2232H, яку можна замовити в інтернеті за 30 євро. Вона підтримує JTAG, зв'язок через послідовний порт, а також SPI. Для роботи з нею використовувалася програма OpenOCD .

В результаті виявилося, що у мікросхеми є цілих три ядра. Два Feroceon, які є досить сильними ARM9-подібними ядрами, і Cortex-M3, яке трохи слабкіше. У всіх ядер різне призначення:

  • Feroceon 1 обробляє фізичні читання / запис на жорсткий диск;
  • Feroceon 2 -обрабативает SATA-інтерфейс, кеш і перетворює LBA в CHS;
  • Cortex-M3 - призначення невідомо. Можна просто зупинити його, але жорсткий диск буде продовжувати працювати.

Ласкаво просимо, або Стороннім вхід заборонено

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

Для доступу до ядра можна використовувати режим DMA (Direct Memory Access). Це такий режим, коли обмін даних відбувається безпосередньо з головки зчитування в пам'ять, без активної участі процесора. Те ж саме відноситься і до SATA-порту: процесору потрібно тільки вказати, де дані, і логіка DMA подбає про читання інформації безпосередньо з пам'яті.

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

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

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

В результаті свого дослідження Джероєн створив інструмент fwtool, який може скидати різні блоки під флеш і переводити код в текстовий файл. Потім можна змінити, видалити або додати блок і знову зібрати все в одному файлі прошивки, який потім спокійно завантажити у флеш.

міняємо прошивку

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

У компанії Western Digital є спеціальні програмні утиліти для роботи з жорстким диском - це інструменти, що працюють під DOS, які можуть завантажити нову прошивку контролера, мікросхеми флеш-пам'яті або сервісного розділу. Інструменти використовують так звані Vendor Specific Commands (VSC), втім, про це трохи пізніше.

Також є набір інструментів під назвою idle3-tools , Які можна взяти на озброєння для модифікації прошивки жорсткого диска. Він також використовує VSC, застосовуючи Linux SCSI PassThrough IOCTLs. Джероєн взяв цей код, змінив його і інтегрував в fwtool. Після цієї модифікації fwtool навчився читати і писати на мікросхему флеш-пам'яті.

Тепер якщо хакер якимось чином зможе скористатися fwtool на віддаленій машині, то отримає можливість скинути флеш-пам'ять диска, змінити її і «зашити» назад. Правда, в кінці кінців власник дізнається про злом і, ймовірно, перевстановить систему, але зловмисник може впровадити що-небудь, що проявить себе і після переустановлення. Наприклад, почекати, поки машина зачитує з файлу / etc / shadow /, де зберігаються всі паролі в системах UNIX / Linux, і змінити вміст. Після чого можна буде просто увійти під своїм паролем.

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

INFO

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

Термінальний режим жорсткого диска

При роботі в термінальному режимі користувач може взаємодіяти з жорстким диском за допомогою діагностичних команд. Цей метод застосовується для діагностики і ремонту накопичувачів Seagate і Toshiba, в Western Digital така можливість відсутня через складність підключення. Термінальний режим фактично надає повний root - управління механікою і логікою пристрої. З його допомогою можна також оновити або перезавантажити прошивку вінчестера. Список команд для більшості накопичувачів можна подивитися в інтернеті. А на платі жорсткого диска є спеціальний роз'єм для підключення через послідовний порт.

А на платі жорсткого диска є спеціальний роз'єм для підключення через послідовний порт

Мал. 2. Роз'єм для підключення через послідовний порт. Однією таємницею менше

Для доступу в термінальний режим знадобиться пристрій-адаптер, необхідне для перетворення рівнів сигналів RS-232 в рівні TTL (такі адаптери є в продажу, але можна зібрати і самому - всі необхідні схеми знаходяться у вільному доступі, а в якості основи можна взяти деякі моделі Arduino). Ми ж візьмемо готовий чіп FTDI, який перетворює USB в послідовний інтерфейс для мікроконтролера Atmega. Потрібно з'єднати GND і RESET, а для підключення використовувати контакти RX і TX.

Мал. 3. Arduino Nano як адаптера

Для роботи з COM-портом використовуємо будь-яку вподобану програму - наприклад, PuTTY або Hiperterminal. Вибираємо тип підключення, вводимо номер COM-порту і інші настройки:

Speed: 9600 Data Bits: 8 Stop Bits: 1 Parity: None Flow Control: None Speed: 9600 Data Bits: 8 Stop Bits: 1 Parity: None Flow Control: None   Мал Мал. 4. Вікно налаштувань PuTTY

Для перевірки працездатності схеми потрібно замкнути RX і TX між собою. В результаті все набираються символи відобразяться в подвійній кількості. Це відбувається через те, що введені дані будуть передаватися по лінії TX, а потім вони ж повернуться по лінії RX. Робиться це так: відключивши SATA-кабель, з'єднуємо вихід TX диска з входом RX адаптера, і навпаки - RX адаптера з TX диска. Підключаємо харчування. Після натискання клавіш <Ctrl + Z>, отримуємо запрошення Т> (або F> для несправних HDD) і вводимо команди. Для отримання списку команд вводимо / C, а потім Q.

Через велику кількість команд інженери Seagate розділили їх структуру на рівні. Такі команди, як читання, запис, пошук, лог помилок, доступні відразу на кількох рівнях. Щоб переключити жорсткий диск для роботи на іншому рівні, треба скористатися командою / x.

Рівень Т - сертифікаційні випробування. Рівень 1 - команди управління пам'яттю. Рівень 2 - команди настройки механіки приводу. Рівень 3 - пошукові команди. Рівень 4 - команди стеження серводвігателя. Рівень 5 - використовується тільки в заводських умовах. Рівень 6 - адаптивні команди управління. Рівень 8 - спеціальні команди настройки запису. Рівень 9 - команди режиму системи контролю дефектів. Рівень Т - сертифікаційні випробування Мал. 5. Обнулення SMART

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

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

Запис інформації в сервісні розділи HDD

У будь-якому жорсткому диску присутні сервісні розділи. Вони призначені для зберігання службових програм вінчестера, таких як SMART, модулі раннього виявлення помилок, модулі самодіагностики і так далі. На щастя, всі ці дані не займають виділене місце повністю, а значить, при правильному підході ми можемо використовувати це бонусне простір. Сервісні розділи не слід плутати з DCO або HPA, які можуть бути легко виявлені і доступні через стандартні ATA-команди.

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

Для доступу до інформації з сервісних розділів не підійдуть стандартні ATA-команди, натомість для запису і читання використовуються спеціальні команди VSC (Vendor Specific Commands). Як правило, виробники тримають в секреті ці команди, але часом випускають утиліти для роботи з сервісними розділами - наприклад, програма wdidle3.exe від компанії Western Digital і її опенсорсний аналог idle3-tools. Ще один приклад для WD - програма HDDHackr, яка змінює записи в системних розділах HD.

WARNING

Дані в сервісних розділах дуже важливі для правильної роботи вінчестера. Пошкодження записаної інформації веде до втрати працездатності диска. Відновити її буде не так вже й просто - для перезапису даних в сервісних розділах знадобляться спеціалізовані програми (наприклад, Ace Laboratory PC3000).

Обсяг сервісного розділу залежить від моделі вінчестера. Наприклад, в диску WD2500KS-00MJB0 сімейства Hawk об'ємом 250 Гб (прошивка 02AEC) в сервісний розділ записується дві копії файлів, близько 6 Мб кожна. Розмір зони на кожній поверхні становить близько 23 Mб (64 трека по 720 секторів на кожному). Оскільки цей диск має шість поверхонь (головки від 0 до 5), модулі сервісних розділів розташовуються на місці, зіставлення з головками 0 і 1, а місце, закріплене за головками з 2 по 5, зарезервовано, але не використовується. Таким чином, зарезервований розділ займає близько 141 Мб, з яких 12 Мб знаходиться у використанні.

Для порівняння: модель WD10EACS-00ZJB0, ємністю в терабайт і з вісьмома поверхнями, має зарезервоване простір 450 Мб, з яких зайнято 52 Мб. Аріель Беркман (Ariel Berkman) з компанії Recover Information Technologies LTD написав статтю про роботу з сервісними відділами HDD, а також виклав PoC-код для запису 94 Мб інформації в сервісний відділ диска Western Digital 250GB Hawk. Робиться це в такий спосіб:

  • Дізнаємося свій SATA IO адресу, використовуючи lspci -v.
  • Для компіляції використовуємо команду gcc -Wall -O -g -o SA-cover-poc SA-cover-poc.c.
  • Створюємо рандомний файл (94 Мб в розмірі) і обчислюємо його MD5-хеш.
  • Записуємо файл в сервісний розділ.
  • Очищаємо вінчестер за допомогою команди dd-ing / dev / zero, яку слід поширити на весь жорсткий диск (або на окрему частину, попередньо заблокувавши доступ до решти). Досить один раз прогнати цей код, щоб знищити дані безповоротно.
  • Читаємо вміст сервісного розділу, обчислюємо його хеш і переконуємося в цілісності даних. root @ Shafan1: ~ / SA # dd if = / dev / urandom count = 184320> random-file; md5sum random-file root @ Shafan1: ~ / SA # ./SA-cover-poc -p 0x0170 -w ./random-file root @ Shafan1: ~ # dd if = / dev / zero of = / dev / sdb bs = 1M root @ Shafan1: ~ / SA # ./SA-cover-poc -p 0x0170 -r after-dding-dev-zero root @ Shafan1: ~ / SA # md5sum after-dding-dev-zero

Автор попереджає, що його код може привести до втрати даних і виходу з ладу жорсткого диска, так що використовувати цей метод можна тільки на свій страх і ризик.

Програми для відновлення HDD

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

  1. TestDisk - найпростіша і ефективна програма для відновлення HDD. Призначена для пошуку і реконструкції втрачених розділів, завантажувального сектора, віддалених файлів; виправляє таблицю розділів. Працює з великою кількістю файлових систем. Працює в консольному режимі, чим досягається висока швидкість.
  2. Acronis Disk Director - цілий програмний пакет, в який включено чималу кількість інструментів для роботи з HDD. Містить в собі утиліту Acronis Recovery Expert, яка служить для реконструкції файлів і розділів. На відміну від попередньої програми має графічний інтерфейс, але працює з меншою кількістю файлових систем.
  3. Paragon Partition Manager - безкоштовна програма від вітчизняних розробників, вміє майже все те ж саме, що і Acronis, але жахливо повільна.

Мал. 6. Відновлюємо пошкоджені розділи за допомогою TestDisk

висновок

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

Новости

Banwar.org
Наша совместная команда Banwar.org. Сайт казино "Пари Матч" теперь доступен для всех желающих, жаждущих волнения и азартных приключений.