Narzędzia mdd i win32dd służą do zbierania obrazu pamięci fizycznej w celu jej późniejszej analizy. Krótkie porównanie ich wydajności oraz możliwości.
Wydajność mdd i win32dd
mdd zbiera wyłącznie pamięć w trybie RAW. Obraz taki nadaje się do analizy przy pomocy Volatility, Memoryze, zwykłego keyword search czy choćby carvingu, nie można go jednak załadować do debuggera (przynajmniej nie do WinDbg).
win32dd jest narzędziem bardziej zaawansowanym pod względem formatów wyjściowych. Obsługuje format RAW, ale również potrafi tworzyć obraz "kompatybilny" z tym, który jest tworzony w trakcie BSOD, i który może zostać załadowany do WinDbg. Dodatkowo zarówno dla trybu RAW jak i crashdump dostępne są dwa tryby zrzutu pamięci, ale to są dodatkowe szczegóły. Jeśli ktoś jest nimi zainteresowany, polecam blog autora tego narzędzia: Matthieu Suiche’s blog.
Z mojego punktu widzenia, jeśli chodzi o możliwości tych narzędzi, win32dd jest o tyle lepszy od mdd, że potrafi zapisać zrzut w formacie crashdump. Co prawda (ponownie to powtarzam), nie jestem jakoś specjalnie zaprzyjaźniony z debuggerem, ale pewne informacje za jego pomocą ze zrzutu pamięci jestem w stanie uzyskać. Teoretycznie Volatility jest w stanie dokonać konwersji obrazu RAW na format crashdump, w praktyce takiego obrazu nigdy nie udało mi się załadować do WinDbg (następował crash WinWbg). Teoretycznie te same informacje można uzyskać z obrazu w trybie RAW tworząc odpowiednie pluginy dla Volatility.
Jeśli chodzi o wydajność, to przedstawia się ona w sposób następujący (dla 1,5 GiB pamięci RAM):
- win32dd (raw): 101 sekund,
- win32dd (crashdump): 237 sekund,
- mdd: 55 sekund,
Jak widać pod względem szybkości mdd zdecydowanie zwycięża z win32dd.
Szybkość stworzenia obrazu pamięci może mieć znaczenie dla późniejszej analizy obrazu. RAM ma to do siebie, że jego zawartość jest dynamiczna. Im dłużej trwa proces zbierania pamięci, tym większe jest prawdopodobieństwo, że otrzymany obraz będzie niespójny. Prawdopodobieństwo to jest tym większe, im bardziej aktywna jest badana maszyna.
UWAGA: istnieje poważny problem z wydajnością procesu zrzucania pamięci, jeśli plik wyjściowy tworzony jest na pendrive. W moim przypadku (tylko jeden test), win32dd tworzył obraz pamięci (crashdump) przez 2128 sekund, czyli ponad 35 minut(!). Zdecydowanie lepiej sprawuje się mdd, zrzut pamięci wykonał w około 440 sekund.
Możliwą drogą obejścia tego problemu jest zapisanie pliku na lokalnym dysku badanej maszyny. Należy jednak pamiętać, że potencjalnie może to spowodować nadpisanie interesujących danych w nieużywanych obszarach dysku.