Jak zasymulować bad sectory na dysku?

24 maja 2013, 17:55 | Teksty | Komentarze: 13
: zin o bezpieczeństwie - pobierz w pdf/epub/mobi.

Jakiś czas temu na jednym szkoleniu miałem potrzebę zapewnienia uczestnikom możliwości pracy na uszkodzonych dyskach (np. w grę wchodziła realizacja obrazu posektorowego tego typu dysków). Z różnych powodów nie chciałem używać realnie uszkodzonego sprzętu – choćby ze względu na słabą powtarzalność. Z pomocą przyszedł “The Device Mapper”.

Czym jest ten mechanizm? Zobaczmy na jeden z bardziej rozbudowanych opisów:

The Device Mapper is a kernel driver that provides a framework for volume management. It provides a generic way of creating mapped devices, which may be used as logical volumes. It does not specifically know about volume groups or metadata formats.

Dalej w sekcji “The error Mapping Target” czytamy:

An error mapping target can be used for testing. To test how a device behaves in failure, you can create a device mapping with a bad sector in the middle of a device (…)

Wygląda obiecująco, szczególnie że ktoś już próbował tego wcześniej. Czas zakasać rękawy:

1. Przygotowanie pustego pliku bazowego na naszą symulację dysku.

2.  Stworzenie filesystemu na pliku.

3. Umożliwienie wykorzystania naszego pliku jako ‘realnego urządzenia’.

4.  Stworzenie dysku z wirtualnym jednym bad sectorem.

5. Zamontowanie dysku.

W porządku. Spróbujmy teraz wykonać kopię posektorową tego dysku, z wykorzystaniem narzędzia dd:

Wygląda na to, że całość działa poprawnie (to znaczy niepoprawnie działa nasz dysk ;-) ). Widać też pewne charakterystyczne zachowanie narzędzia dd – tj. zatrzymanie działania po napotkaniu błędu. Obraz x.img ma tylko 4096 bajtów!

Teraz do gry można włączyć narzędzia typu ddrescue czy dd_rescue, ale to już temat na osobny wpis. Miłego odzyskiwania danych z uszkodzonych dysków! :-)

— michal.sajdak<at>securitum.pl

 

 

 

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. soal

    Wystarczy właściwie parametr conv=noerror zamiast używać od razu ddrescue ;)

    Odpowiedz
    • @soal – słuszna uwaga, tej opcji nie znałem :-)

      Choć ddrescue ma prawdopodobnie trochę bardziej złożone możliwości. Np. dzielenie sektora aby odzyskać dane z jego części, powtarzanie odczytu (może za którymś razem się uda? ;) itd.
      Więcej info np. tutaj: http://www.forensicswiki.org/wiki/Ddrescue

      –ms

      Odpowiedz
      • Duży Pies

        Także program MHDD ma możliwość tworzenia bad sectorów na dysku. MHDD to znakomity program do diagnostyki i wykonywania niskopoziomowych operacji na dyskach twardych.

        Odpowiedz
  2. Damian

    Bardzo fajnie. Mało takich postów… producenci dysków zapewne uzywają podobnych narzędzi do testowania zachowania dysków na ich prace.

    Odpowiedz
    • @Damian
      No…choć bardziej do przydatne jest w temacie testowania narzędzi do odzyskiwania danych. Do parametrów dysku polecam za to np. hdparm.

      Odpowiedz
  3. Mateusz

    Świetny artykuł, choć chciałbym uzupełnienia odnośnie tego, co się dzieje w czwartym punkcie. Leniwy jestem, nie chce mi się zerkać do manuala dm_setup ;-)

    Odpowiedz
    • @Mateusz – tam jest definicja nowego “dysku”. Tj kopiowane jest (mapowane) kilka pierwszych sektorów z oryginalnego hdd – później wstawiany jeden bad sector i później znowu liniowo kopia z oryginalnego hdd. Tj. w zasadzie ten nowy dysk jest starym z tym że posiada jeden wprowadzony bad sector.

      –ms

      Odpowiedz
  4. soal

    @sekurak: Tak, zgadza się, ale do takich prostych testów taka opcja idealnie się nadaje. A oczywiście ddrescue przyda się do działania w przypadku ważniejszych danych ;) (chociaż backupy też b. ważna rzecz)

    Odpowiedz
  5. mbr

    # hdparm –help
    […]
    –make-bad-sector Deliberately corrupt a sector directly on the media (VERY DANGEROUS)

    a potem

    –write-sector Repair/overwrite a (possibly bad) sector directly on the media (VERY DANGEROUS)

    Mógłbyś przygotować zestaw fizycznych dysków z “uszkodzonymi” tymi samymi sektorami. :)

    Odpowiedz
  6. Zawsze można użyć MHDD i komendy MAKEBAD albo RANDOMBAD :)

    Odpowiedz
  7. Fajny artykuł. Jest też druga metoda symulowania uszkodzonych sektorów, oparta o narzędzia badblocks i e2fsck, umożliwiająca bardziej kontrolowane nanoszenie informacji o uszkodzeniach na istniejące systemy plików.

    Natomiast obie metody mają wspólną wadę: zakładają, że podczas dalszego postępowania z uszkodzonym dyskiem, dysk ten będzie z jednej strony uszkodzony, a z drugiej jednak na tyle sprawny, że próba odczytu uszkodzonego sektora nie zakończy się wywaleniem całego systemu operacyjnego.

    To, co by było naprawdę ciekawe, to artykuł opisujący postępowanie z dyskami “bardziej uszkodzonymi”, gdzie już nie mówimy o wadliwych pojedynczych sektorach, ale właśnie o uszkodzonej elektronice dysku, odbitym talerzu, uszkodzonej głowicy itd. – innymi słowy postępowanie w sytuacjach, gdzie:

    a) zwykły system operacyjny nie daje rady

    b) podejrzewamy, że każda próba operacji na dysku wprowadzi nieodwracalne uszkodzenia i musimy wymyślić strategię odczytania jak największej liczby danych, bądź konkretnych danych na zasadzie “po nitce do kłębka”

    Odpowiedz
  8. socrtp

    Symulacja fajna, ale przy prawdziwym dysku może się trochę inaczej wszystko zachowywać. Dawno temu miałem uszkodzony dysk i próbowałem odzyskać dane właśnie korzystając z opcji conv=noerror w dd, jednak firmware dysku okazał się być przeszkodą. Po natrafieniu na uszkodzony sektor firmware automatycznie zapamiętywał ten sektor jako uszodzony, ale dodatkowo uznawał kolejnych bodajże 15 sektorów za uszkodzone, a tak naprawdę uszkodzone były tylko 4 sektory. Po restarcie sprzętu do pozostałych 12 sektorów dobrałem się zgrywając dane sektor po sektorze, ale lecąc od ostatniego.

    Odpowiedz

Odpowiedz