Akwizycja danych z urządzeń mobilnych to w dzisiejszym świecie rzecz zupełnie normalna. Co więcej, rzecz obowiązkowa przy zabezpieczaniu wszelkich dowodów elektronicznych.
Pamięci tych pozornie małych urządzeń są olbrzymie, a zgromadzone w nich dane niejednokrotnie zawierają więcej wrażliwych informacji niż dysk komputera. Wiąże się to przede wszystkim z faktem, iż użytkownikom łatwiej jest sięgnąć do kieszeni i wyjąć nowoczesnego telefona, aniżeli chodzić po ulicy z włączonym laptopem. Świadczą o tym wszelkie statystyki, które wprost ukazują ogromną przewagę przeglądania Internetu dzięki urządzeń mobilnych właśnie.
Najlepiej obrazuje to wykres (Rys. 1), który przedstawia jak na przestrzeni lat zmieniała się zależność korzystania z Internetu na stacjach roboczych i urządzeniach mobilnych. Możemy śmiało przyjąć, iż ów trend będzie się utrzymywał. Niezaprzeczalnym jest również fakt, iż znakomita część urządzeń mobilnych to telefony bądź tablety wyposażone w system operacyjny Android.
Rys. 1
Android to system operacyjny dla urządzeń mobilnych korzystający z jądra systemu Linux. O możliwościach odczytu danych z pamięci nieulotnych, czyli pamięciach ROM na łamach Magazynu Informatyki Śledczej i Bezpieczeństwa IT pisano już niejednokrotnie. Ja jednak chciałbym skupić się na akwizycji pamięci ulotnych, znanych szerzej jako pamięci RAM. RAM czyli Random-Access Memory to pamięć stosowana głównie jako pamięć operacyjna urządzenia. Jest pamięcią ulotną co w praktyce oznacza, iż utrata zasilania wiąże się z utratą danych przechowywanych w tej pamięci. W systemie operacyjnym Android pamięć RAM wykorzystywana jest przede wszystkim jako miejsce przechowywania danych z uruchamianych aplikacji, a co za tym idzie – wrażliwych danych. W związku z tym oraz z naturą systemu Linux, akwizycja pamięci RAM to typowy przykład Live Forensics. O ile w systemach Linux akwizycja RAM wiąże się nieodłącznie z dostępem do punktu /dev/mem, o tyle systemy Android skrzętnie ukrywają taki dostęp. Moduł jądra Linux o nazwie fmem, pozwala na ustalenie pozycji pamięci RAM i sprawdzenie czy obszar to faktycznie pamięć RAM, a nie część pamięci wewnętrznej urządzenia, a następnie do wykonania DUMP’a określonego obszaru (Rys. 2).
Rys. 2
Niestety w architekturze ARM funkcja page_is_ram, czyli określenie zakresu pamięci RAM nie istnieje. Dlatego system Android nie jest od razu otwarty na analizę pamięci RAM. Należy wykonać odpowiednie kroki, które przygotują urządzenie do takiej akwizycji. Pierwszą i najważniejszą rzeczą jest tzw. rootowanie. Root to nazwa konta w systemie uniksowym. Najprostszym tłumaczeniu root to dostęp do wszystkich plików systemowych oraz możliwości dowolnego ich modyfikowania. Metody rootowania są różne – root może być permanentny lub tymczasowy – ale cel jest zawsze taki sam. Drugą częścią jest przygotowanie odpowiedniego modułu jądra, które będzie w stanie zinterpretować odpowiedni zakres pamięci RAM. W tym celu można posłużyć się oprogramowaniem LiME, które potrafi ładować odpowiednie moduły do jądra systemu Linux. Mając przygotowany odpowiedni moduł, aplikacja LiME interpretuje adresy pamięci RAM (jak na grafice powyżej) dając możliwość pozyskania obrazu pamięci RAM w formie pliku. Wówczas analiza odbywa się już wyłącznie na pliku wynikowym, którego rozmiar jest identyczny jak fizyczna kość pamięci RAM (np. 512MB pamięci RAM w urządzeniu = 5 12MB plik wynikowy) ( Rys. 3 ).
Rys. 3
Analizę pliku RAM można dokonywać dzięki np. oprogramowania Volatility, które zawiera odpowiednie profile pozwalające na interpretację odczytu. Po użyciu komend zwracane są wyniki (Rys. 4).
Rys. 4
Do ekstrakcji plików z pamięci RAM możemy wykorzystać np. oprogramowanie XACT (część pakietu XRY), które w szybki i przyjemny sposób przeszukuje obraz pod względem sygnatur plików (Rys. 5).
Rys. 5
Na przykładzie widać, iż analiza pamięci RAM na urządzeniach z systemem Android jest możliwa, a dane są możliwe do łatwego zinterpretowania. Jednak przygotowanie urządzenia do odczytu tej części pamięci jest kłopotliwe. Być może z którymś wydaniem kolejnej wersji Androida zostaną zaimplementowane mechanizmy, które pozwolą na łatwiejszy dostęp do tego cennego obszaru pamięci.