Przerwa w historii tamagotchi? Nie do końca, ten event log, którego nie mogę otworzyć pochodzi właśnie z tego tamagotchi.
Error opening event log (...) The event log file is corrupted
Ważnym elementem analizy jest przeglądnięcie logów systemowych, Application, System i Security. Pliki logów są w formacie binarnym, więc ich przeglądnięcie nie jest tak łatwe, jak choćby logów sysloga. Co prawda istnieje wiele narzędzi, które potrafią na przykład zrzucić zawartość logów do plików tekstowych, które później można łatwiej (?) analizować. Większość narzędzi ma jednak pewną wadę - korzysta z funkcji API systemu. A czasami pojawia się właśnie taki miły komunikat o uszkodzeniu pliku logów. Co wtedy?
Struktura pliku jest opisana w dokumentacji udostępnionej przez firmę Microsoft. Składa się na nią:
Na podstawie tej dokumentacji napisałem sobie skrypt do odzyskiwania wpisów z plików *.evt. Takie skrypty co prawda istnieją (File-ReadEvt), ale jakoś jestem uczulony na Perla. W związku z tym napisałem sobie coś analogicznego korzystając z Pythona. Muszę przyznać, że zdziwiłem się łatwością, z jaką poradziłem sobie z tym zadaniem. W szczególności tym, że narzędzie bez problemu radzi sobie z plikiem, który podobno jest uszkodzony. O co więc chodzi z tym The event log file is corrupted?
Potem doszedłem jednak do opisu struktury ELF_LOGFILE_HEADER i zastanowiło mnie pole Flags, a konkretnie flaga ELF_LOGFILE_HEADER_DIRTY. Po dopisaniu parsowania nagłówka pliku, otrzymałem następujący rezultat:
Version: 1.1 StartOffset: 48 EndOffset: 83912 Current Record Number: 261 Oldest Record Number: 1 Max size: 65536 Flags: 9 Retention: 604800 End Header Size: 48 Flags: ELF_LOGFILE_HEADER_DIRTY
ELF_LOGFILE_ARCHIVE_SET
Powoduje to pojawienia się naturalnego pytania: A co, jeśli wyczyszczę flagę ELF_LOGFILE_HEADER_DIRTY? Okazuje się, że wyczyszczenie tej flagi pozwala już operować na pliku przy pomocy API znajdującego się w systemie, a więc również przy pomocy choćby narzędzia LogParser. Wyczyszczenie flag jest łatwe, wystarczy wyzerować zawartość pliku między 0x24 a 0x28, zgodnie z opisem struktury ELF_LOGFILE_HEADER.
EDIT: UWAGA - prawdopodobnie poza wyczyszczeniem flagi ELF_LOGFILE_HEADER_DIRTY będzie istniała w części przypadków również potrzeba modyfikacji informacji o offsecie do rekordu ELF_EOL_RECORD. Informacja ta zapisana jest w polu EndOffset struktury EFL_LOGFILE_HEADER. Bez tej zmiany część rekordów będzie niewidoczna.
Jeśli po mojej prezentacji na dzisiejszym spotkaniu OWASP kogoś zainteresował temat ogólnie pojętego forensic, być może zainteresują go również starsze wpisy dotyczące tego tematu. Nazbierało się tego trochę, więc małe przypomnienie części z poruszanych t
Przesłany: Jun 10, 20:54