Windows Wednesday: Prefetch Files

Pentru postul de astăzi, voi lua câteva momente pentru a discuta despre Windows Prefetch. Dar mai întâi, o scurtă promovare pentru o pregătire viitoare:

În prezent mă pregătesc pentru o clasă viitoare FOR508 cu Chad Tillbury la SANS Security East 2017. Deși se apropie foarte mult, așteptăm cu nerăbdare să avem un curs minunat și să găsim următoarea echipă de criminaliști letali! Dacă participați, vă rog să-mi trimiteți un mesaj din timp. Dacă doriți să participați, cred că înregistrarea este încă deschisă! De asemenea, în timpul evenimentului, miercuri, 11 ianuarie, voi susține o conferință SANS@Night intitulată Zero In on the Artifacts That Matter. Pregătirea pentru acel discurs a fost sursa de inspirație pentru postul de astăzi, deoarece prefetch va fi cu siguranță menționat.

Am mai spus-o și o voi spune din nou – multe artefacte pe care le iubim în lumea DFIR sunt de fapt produse secundare ale sistemului de operare care încearcă să facă viața mai ușoară și/sau mai eficientă pentru utilizator sau dezvoltatori. În opinia mea, prefetch intră și el în această categorie.

Prefetch există încă din Windows XP. Inițial a fost conceput pentru a ajuta la accelerarea pornirii sistemului și a lansării aplicațiilor. Scopul prefetch-ului este de a analiza și înregistra comportamentul de pornire al aplicațiilor la execuție pentru a face mai eficiente viitoarele porniri. Aceste date sunt înregistrate timp de până la 10 secunde după pornirea aplicației. Comportamentul înregistrat al aplicației este salvat într-un fișier de urmărire – ceea ce noi numim fișier prefetch – în calea C:\Windows\Prefetch.

Filiere prefetch

După cum am menționat mai sus, fișierele prefetch se găsesc în directorul static C:\Windows\Prefetch. Fișierele Prefetch au extensia .pf și urmează o convenție standard de denumire:

<APPLICATION NAME IN ALL CAPS>-<EIGHT CHARACTER HASH OF APPLICATION LOCATION>.pf

Fișierele Prefetch conțin următoarele metadate:

  • Numele executabilului corespunzător
  • Numărul de execuții ale executabilului
  • Dimensiunea fișierului prefetch
  • Arhivele și directoarele la care s-a făcut referire în timpul pornirii aplicației (aceasta este ceea ce Windows dorește să urmărească)
  • Informații legate de volumul pe care se află executabilul, inclusiv calea volumului și numărul de serie.

Iată o mostră a unor fișiere prefetch de pe gazda mea de test:

Captură de ecran a dosarului Prefetch de la o gazdă de test Windows 10

Rețineți că am mai multe aplicații cu același nume, dar cu locație diferită. Acest lucru este evidențiat de hașurile oarecum similare și, în cazul multor aplicații, este probabil un indiciu al unei actualizări de software sau al unei modificări a structurii dosarelor.

EDIT: Mulțumesc lui Eric Zimmerman pentru că mi-a reamintit că numele fișierelor de prefetch depind, de asemenea, de argumentele din linia de comandă și sunt sensibile la majuscule și minuscule, în ciuda lipsei de sensibilitate la majuscule în fișierul de urmărire. Hexacorn acoperă algoritmul de hașurare în detaliu aici și vă recomand să îl consultați dacă aveți nevoie să faceți acest nivel de analiză prefetch.

Parisarea fișierului Prefetch

Structura fișierelor Prefetch este de fapt destul de bine cunoscută și există mai multe opțiuni de parsare disponibile. Iată câteva opțiuni:

  • Dacă se întâmplă ceva mai rău, putem folosi strings pentru a obține unele informații despre informațiile de urmărire a prefetch-ului. Iată un exemplu de enumerare a șirurilor Unicode dintr-un executabil suspect:

Captură de ecran a șirurilor dintr-un fișier prefetch pentru A.EXE
  • Eric Zimmerman întreține instrumentul său PECmd, în prezent la versiunea 0.7.2.0. Acesta poate fi descărcat de aici.
  • log2timeline/Plaso conține un analizor de prefetch și poate pune datele cheie din fișierele de prefetch într-un format cronologic.
  • TZWorks publică, de asemenea, un analizor de prefetch foarte util și la îndemână pf. Puteți vizualiza mai multe informații despre acesta aici. Iată un exemplu de ieșire a instrumentului pf al TZWorks:

Captură de ecran a ieșirii pf a TZWorks pentru un fișier prefetch

Voi aborda unele dintre artefactele criminalistice din această ieșire în secțiunea următoare, dar observați cum obținem acum informații contextuale, orele de execuție și marcaje temporale importante.

O altă notă importantă cu privire la analizarea fișierelor prefetch este faptul că versiunile mai noi de prefetch, și anume Windows 10, utilizează un nou format de compresie care nu joacă bine cu analizoarele pentru versiunile anterioare. Asigurați-vă că instrumentul dvs. poate gestiona artefactele Windows 10 – sau mergeți să găsiți un nou script – înainte de a presupune că fișierele ar putea fi corupte.

Cum se utilizează în DFIR

Analiștii DFIR trebuie să fie conștienți de prefetch deoarece conține o mulțime de valoare criminalistică. Iată câteva moduri în care am folosit prefetch în trecut:

  • Contul de execuție poate fi un indiciu important pentru a afla cât de mult timp poate fi un malware pe un sistem sau cât de frecvent este/era folosit. Dacă ați văzut doar dovezile a două execuții de malware, dar prefetch arată zeci, atunci trebuie să mai faceți niște săpături.
  • Ancheta temporală a fișierului prefetch ne spune, de asemenea, volume. Gândiți-vă la următoarele: Ce creează un fișier prefetch și ce modifică un fișier prefetch? Transformați aceste acțiuni în timestamps și putem determina următoarele: Ora de creare a unui fișier prefetch este prima dată când aplicația a fost executată, iar ultima oră de modificare a unui fișier prefetch este ultima dată când acesta a fost executat. Să ne uităm din nou la captura de ecran de mai sus:

Captură de ecran a ieșirii pf de la TZWorks pentru un fișier prefetch

Observați ultima noastră oră de execuție (2012-04-04 00:43:06.137) și ora modificată: (2012-04-04 00:43:07). Acum, putem spera foarte rapid prin fișierele Prefetch, fără a fi nevoie să le analizăm, și să găsim ultimele noastre ore de execuție.

Puteți utiliza marcajele de timp și în alte mijloace. De exemplu, luați în considerare vizualizarea timestamp-urilor de creare a tuturor fișierelor din dosarul Prefetch. Dacă avem intervale de timp de interes, sau fișiere prefetch pentru malware cunoscut, căutați alte fișiere cu timestamp-uri aflate într-o proximitate temporală apropiată.

  • Când analizați fișierele prefetch, în special cele legate de malware cunoscut, aruncați o privire la fișierele mapate sau încărcate. Este posibil să găsiți indicatori suplimentari.
  • În plus, examinați directoarele mapate din fișierul prefetch. Este posibil să găsiți dovezi ale unei unități externe sau ale unei partiții anterioare.
  • Vezi mai multe fișiere prefetch cu hashes diferite la sfârșitul fișierului? Amintiți-vă, acel hash este derivat din locație – este posibil să aveți malware în mai multe locuri.
  • În cele din urmă, nu uitați că Windows monitorizează pornirea aplicațiilor timp de până la 10 secunde. Așadar, deși ne putem baza pe marcajele de timp ale fișierelor prefetch ca fiind indicatori destul de puternici, trebuie să luăm în considerare întârzierea maximă de zece secunde.

Dezvoltarea dincolo de Prefetch

În Windows Vista și ulterior, Microsoft a continuat să extindă prefetch-ul cu caracteristici suplimentare precum SuperFetch, ReadyBoost, ReadyBoot și ReadyDrive. Voi aprofunda aceste caracteristici într-o postare ulterioară.

Până mâine, Forensicare fericită!

Lasă un răspuns

Adresa ta de email nu va fi publicată.