Pstools - forenzički alati za MS Windowse

 

Mark Russinovic iz tvrtke Sysinternals izradio je skup forenzičkih alata koji se pokreću s komandne linije MS Windowsa inačica NT/2K/XP/2K3. Svih dvanaest alata, zajedno s  uputama, stane na 1,4 MB disketu, što je praktičan dio kompleta za preživljavanje.

 

Zanimljivo je da alati omogućuju obavljanje istrage na udaljenom računalu, na taj način što naredbi pri pokretanju zadajemo ime umreženog računala, te korisničko ime i zaporku.

 

Ako vam provale na računalo i na njega instaliraju hakerske alate, takozvane rootkit-e, više nećete vidjeti sve aktivne procese niti sve datoteke na disku. Imati ćete osjećaj da je računalo opterećeno i sporo, da je na disku premalo prostora, ali tu sumnju nećete moći potvrditi. Programi iz pstools kompleta pokazat će vam sve što je skriveno, te omogućiti zaustavljanje procesa, spuštanje sustava, promjenu zaporki itd.

 

Nazivi alata počinju s ps, po uzoru na Unix naredbu ps – process status. Evo najprije popisa svih alata s kratkim opisom:

 

PsExec – izvrši proces na udaljenom računalu

 

PsFile – pokaži koje su datoteke otvorene na udaljenom računalu

 

PsGetSid - pokaži SID računala ili korisnika

 

PsInfo – izlistaj informacije o sustavu

 

PsKill – ubij process po imenu ili ID-ju

 

PsList - izlistaj detaljne informacije o procesima

 

PsLoggedOn – pokaži tko je ulogiran lokalno i tko dijeli resurse

 

PsLogList – izlistaj događaje iz loga

 

PsPasswd – promijeni zaporku

 

PsService – ispis i kontrola servisa

 

PsShutdown – spuštanje sustava, ili njegov restart

 

PsSuspend – suspendiraj (zaustavi) i nastavi rad procesa


PsExec

PsExec je zamjena za telnet, omogućuje izvršavanje procesa na udaljenim računalima, pružajući interaktivni rad kao na konzoli, ali pri tom ne morate instalirati softver na udaljeno računalo! Koristite ga za interaktivno izvršavanje naredbi na komandnoj liniji udaljenog računala, na primjer naredbe ipconfig.

Snimite PsExec na svom računalu u direktorij koji je unutar izvršne staze. Kad utipkate samo "psexec" dobiti ćete kratke upute:

usage: [\\computer[,computer[,...] | @file][-u user [-p psswd]][-n s][-s|-e][-i][-c [-f|-v]][-d][-w directory][-<priority>][-a n,n,...>] cmd [arguments]

Computer

Naziv računala na kojem želimo pokrenuti proces. Ako izostavimo ovaj parametar, izvršiti će se na lokalnom računalu. Ako upišemo \\*, tada PsExec izvršava naredbu na svim računalima u domeni.

@file

PsExec će izvršiti naredbu na svakom računalu koje je upisano u file

-u

Korisničko ime na udaljenom računalu (neobavezno)

-p

Password. Ako ga izostaviš, bit ćeš upitan.

-e

Učitaj korisnički profil.

-i

Pokreni program tako da bude u interakciji s desktopom na udaljelnom računalu.

-c

Presnimi navedeni program na udaljeno računalo. Ako ispustiš ovaj parametar, aplikacija mora biti u sistemskoj stazi na udaljenom računalu.

-n

Timeout u sekundama pri spajanju na udaljeni sustav.

-f

Forsiraj kopiranje naredbe iako ona već postoji na udljenom sustavu.

-v

Kopiraj datoteku samo ako ima veći broj verzije ili je novija od one na udaljenom sustavu.

-d

Nemoj čekati da program završi. Koristi samo za ne-interaktivne programe.

-w

Postavi radni direktorij za proces.

-priority

Prioritet procesa: -low, -belownormal, -abovenormal, -high ili -realtime.

-a

Odredi procesor na kojem će se aplikacija izvršavati. Procesore odvajajte zarezima. Na primjer, za pokretanje programa na CPU 2 i CPU 4: "-a 2,4"

arguments

Argumenti  (staze moraju biti apsolutne na udaljenom sustavu)

Ako su unutar naziva aplikacije razmaci, treba ga staviti u navodnike, na pr. "psexec \\marklap "c:\long name\app.exe". Argumente stavite nakon navodnika. Nakon što pritisnete Enter naredba se izvršava na udaljenom računalu, dok Ctrl-C prekida udaljeni proces.

Ako ispustite ime korisnika, proces će se na udaljenom sustavu izvršiti pod istim korisnikom kao na vašem računalu; no kako udaljeni sustav “glumi” tog korisnika, on neće imati pristup mrežnim resursima. Oprez: zaporka se prenosi kao čisti tekst.

Primjeri

Pokreni command prompt na računalu \\marklap:

psexec \\marklap cmd 

Pokreni ipconfig /all na udaljenom računalu:

psexec \\marklap ipconfig /all

Presnimi test.exe na udaljeno računali i pokreni ga:

psexec \\marklap -c test.exe

Navedite punu stazu do programa koji je već instaliran na udaljeno računalo:

psexec \\marklap c:\bin\test.exe

 

PsFile

Ispisuje listu otvorenih datoteka, nešto poput Unix naredbe lsof, list open files. Međutim, skraćuje ispis, pa nećete vidjeti cijelu stazu. Pokazuje datoteke koje su otvorene kroz mrežu, te dozvoljava da ih zatvorite.

Podrazumijevano ponašanje alata PsFile jest ispis datoteka na lokalnom sustavu koje su otvorene s udaljenih računala. Upute o sintaksi dobiti ćete ako utipkate psfile -?

usage: psfile [\\RemoteComputer [-u Username [-p Password]]] [[Id | path] [-c]]

-u

Korisničko ime na udaljenom računalu.

-p

Opciona zaporka: ako je ne upišete, bit ćete upitani.

Id

Identifikator datoteke (kako ga je dodijelio PsFile)

Path

Staza do datoteka

-c

Zatvara (close) datoteku određenu ID-jem ili stazom

 

PsGetSid

Ponekad se dogodi da više računala ima isti SID, (Security Identifier). Do sada nije postojao regularan način da saznate SID računala i njegovih korisnika, bez kompliciranog kopanja po Registryju. Za alat PsGetSid, to je trivijalan zadatak. Radi u mreži, tako da možete prikupiti SIDove po cijeloj domeni.

Ako utipkate samo psgetsid, dobiti ćete upute:

Usage: psgetsid [\\computer[,computer[,...] [-u username [-p password]]] [account]

Kao argumente na komandnoj linij upišite ime računala ili korisnika.

Ako ne upišete password, PsGetSid će ga zatražiti interaktivno.

 

PsInfo

PsInfo prikuplja informacije o lokalnom ili udaljenom računalu (vrstu instalacije, verziju kernela, registriranu tvrtku i korisnika, broj i vrsta procesora, veličina memorije, datum instalacije, datum prestanka važenja probne instalacije. Prekidačima i argumentima možemo vidjeti još i instalirane zakrpe (hotfix-e) i aplikacije.

 

PsInfo pokazuje informacije o lokalnom sustavu, ako ne navedete ime računala. Kako PsInfo pristupa Registry-ju udaljenog računala, ono mora imati aktivan Remote Registry service I korisnički račun s kojeg pokrećete PsInfo mora imati pristup HKLM\System dijelu udaljenog Registry-ja.

 

Kako bi mogao pomoći pri automatskoj dogradnji, PsInfo ispisuje i brojeve instaliranih Service Pack-ova (na pr. 0 ako ih nema, 1 za SP 1, itd).

usage: psinfo [\\computer[,computer[,...] | @file [-u username [-p password]]] [-h] [-s] [-d] [-c [-t delimter]]

computer

Računalo/la na kojima želimo izvršiti naredbu. Ako izostavite ovaj argument, izvršava se na lokalnom računalu, a  \\* znači da treba izvrštiti naredbu na svim računalima u domeni.

@file

Izvrši naredbu na svim računalima navedenim u file-u.

-u

Opciono ime korisnika.

-p

Opciona zaporka.

-h

Pokaži instalirane hotfix-ove.

-s

Pokaži instalirani software.

-d

Pokaži disk volume.

-c

Ispiši u CSV formatu.

-t

Podrazumijevani graničnik za -s je zarez, ali ga možete promijeniti.

 

PsKill

Windowsi nemaju ekvivalent Unixovoj naredbi kill. Verzija koja radi samo lokalno može se nabaviti uz Windows NT ili Win2K Resource Kit. Naravno, PsKill može zaustavljati procese i na udaljenim računalima.

Kad pokrenete PsKill s process ID-jem, zaustavit ćete taj proces. Ako navedete ime procesa, ubit će sve procese s tim imenom.

usage: pskill [\\computer [-u username] [-p password]] <process name | process id>

-u

Korisničko ime (opciono)

-p

Zaporka (opciono)

process id

Broj procesa

process name

Ime procesa

 

PsList

Naredba ps na Unixu pokazuje administratoru informacije o procesima, potrošnji procesora i memorije. Windowsi NT/2K nemaju takav alat, ali nešto slično isporučuje se uz Windows NT Workstation ili Server Resource Kitpstat i pmon prikazuju različite vrste informacija lokalno.

PsList pokazuje sve isto što i pmon i pstat, ali može raditi na udaljenim računalima.

Podrazumijevano ponašanje alata PsList jest da pokazuje podatke vezane uz potrošnju CPU-a za sve aktivne procese. Pokazuje nam vrijeme izvršavanja, količinu vremena izvšravanja u kernel i user načinu, količinu memorije koju je OS dodijelio procesu.

Komandno linijski prekidači omogućuju da podatke sortiramo i prema potrošnji memorije, ili prema "thread-ovima", ili sve tri vrste podataka.

usage: pslist [-?] [-d] [-m] [-x][-t][-s [n] [-r n]  [\\computer [-u username] [-p password]] [name | pid]

-d

Pokaži statistike za sve aktivne threads on the system, grupirajući ih unutar roditeljskog procesa.

-m

Prikaži informacije prema zauzeću memorije,  umjesto prema potrošnji procesora, što je podrazumijevano ponašanje.

-x

Za svaki proces pokaži sve informacije, o potrošnji CPU-a, memorije, i o thread-ovima.

-t

Prikaži stablo procesa

-s [n]

Radi kao task-manager, može se navesti broj sekunda. Escape tipka prekida ovakav rad.

-r n

Period osvježavanja podataka u sekundama (inače 1 sekunda).

-u

Korisničko ime.

-p

Zaporka. Ako je ne upišete na komandnoj liniji, udaljeno računalo će zatražiti da je upišete, pa se zaporka neće vidjeti.

name

Ako želimo suziti ispis samo na neke procese, napišemo ime ili početni dio, zajednički za više procesa. pslist exp će pokazati statistike za procese čije ime uključuje "exp", na pr. Explorer.

pid

Sužava ispis na procese s nevedenom ID oznakom.

 

PsLoggedOn

Windowsi nemaju ekvivalent Unix naredbama who, w, whoami ili finger koje pokazuju tko je ulogiran, odnosno tko radi na računalu. Uobičajeni način da se utvrdi tko koristi resurse na Windows računalu jest korištenje naredbe "net"  ("net session"), koja pokazuje samo lokalne korisnike. PsLoggedOn je programičić koji pokazuje tko je ulogiran bilo lokano, ili preko dijeljenja resursa, ili na udaljenom računalu. Ako kao argument upišete korisničko ime umjesto računala, PsLoggedOn će pregledati sva računala u mreži i provjeriti da li navedeni korisnik trenutno koristi neko od njih. To je korisno, na primjer, ako želite mijenjati korisnički profil.

PsLoggedOn  pretražuje lokalni Registry tražeći korisnike čiji je profil dinamički upisan, tražeći ih pod ključem HKEY_USERS. Za svaki ključ koji sadrži ime koje je zapravo korisnički SID (Security IDentifier), PsLoggedOn  nalazi odgovorajuće korisničko ime I pokaže ga. Da bi odredio tko je ulogiran dijelenjem resursa, PsLoggedOn koristi NetSessionEnum API. I vi ćete biti prikazani na listi, jer PsLoggedOn se mora ulogirati kako bi pregledao Registry.

usage: psloggedon [-?] [-l] [-x] [\\computername | username]

-l

Pokaži samo lokalno ulogirane korisnike, te one koji su spojeni na neki share.

-x

Nemoj pokazati vrijeme ulogiravanja.

\\computername

Ime računala za koje želimo izlistati logon informacije.

username

Ako kao argument navedemo korisničko ime, PsLoggedOn će na svim umreženim računalima provjeriti a li je navedeni korisnik negdje ulogiran.

 

PsLogList

Već spominjani Resource Kit sadrži alat elogdump, koji izlista sadržaj Event Log-a na  lokalnom ili udaljenom računalu. PsLogList je sličan alat, ali s dva dodatka:

·        PsLogList će "zanemariti" sigurnosne ovlasti vašeg korisničkog računa koje bi vam branile pristup Event Log-u

·        PsLogList retrieves message strings from the computer on which the event log you view resides.

Podrazumijevano ponašanje PsLogList-a je da prikaže sadržaj System Event Log-a na lokalnom računalu, s preglednim prikazom zapisa. Argumenti s komandne linije omogućuju gledanje logova na umreženim računalima, koristeći različit korisnički račun, te formatiranje izlaznih podataka na način koji olakšava pretraživanje (na pr. psloglist | findstr /i text) ili importiranje podataka u proračunske tablice.

usage: psloglist [-?] [\\computer[,computer[,...] | @file [-u username [-p password]]] [-s [-t delimiter]] [-n # | -d #][-c][-x][-r][-a mm/dd/yy][-b mm/dd/yy][-f filter]   [-i ID[,ID[,...]] [-o event source]  [-l event log file] <eventlog>

computer

Izvrši naredbu na računalu, ili više računala. Ako ispustite ovaj argument, naredba se izvršava na lokalnom računalu, ako upišete "\\*" tada se naredba izvršava na svim računalima u domeni.

@file

Izvrši naredbu na svim računalima upisanim u file.

-u

Korisničko ime s kojim se želite ulogirati na udaljeno računalo.

-p

Zaporka. Ako je ne upišete na komandnoj liniji, udaljeno računalo će zatražiti da je upišete, pa se zaporka neće vidjeti.

-s

Zapisi će se ispisati kao "string", svaki u svom retku, s poljima odijeljenim zarezima..

-t

Podrazumijevani graničnik, zarez, može se zamijeniti znakom koji upišete iza prekidača -t.

-n #

Prikaži samo broj n najovijih zapisa.

-d #

Prikaži samo zapise za navedeni broj prethosnih dana.

-c

Počisti (clear) Event Log nakon što se pokažu zapisi.

-x

Prikaži prošireni skup podataka.

-r

Ispiši zapise od najstarijih do najnovijih.

-a

Ispiši zapise novije od navedenog datuma (after).

-b

Ispiši zapise starija od upisanog datuma (before).

-f

Filtriraj događaje prema tipu zapisa (na pr. "-f w" za warnings).

-i

Prikaži samo događaje s navedenim ID-ovima (najviše 10).

-o

Prikaži samo zapise iz određenog izvora (na pr. \"-o cdrom\").

-l

Ispiši zapise iz određene event log datoteke.

eventlog

Ako se ne navede drugačije, PsLogList prikazuje sadržaj System Event Log-a. Da bi vidjeli neki drugi log, upišite prvih nekoliko slova naziva log-a, aplikacije, ili na pr. system, security.

 

PsPasswd

PsPasswd je alat koji vam omogućuje da promijenite zaporke korisnicima na lokalnom ili na udaljenim računalima. Asministrator ga može iskoristiti da bi izradio "batch file" za promjenu administratorske zaporke na svim umreženim računalima.

PsPasswd omogućuje promjenu zaporke lokalnog ili domenskog korisničkog računa, na lokalnom ili udaljenom računalu.

usage:  pspasswd [\\computer[,computer[,...] | @file [-u username [-p password]]] Username [NewPassword]

computer

Izvrši naredbu na navedenom računalu, ili računalima. Ako ispustite ovaj argument, naredba se izvršava na lokalnom računalu, ako upišete "\\*" izvršava se na svim računalima u domeni.

@file

Izvrši naredbu na svim računalima upisanim u file.

-u

Korisničko ime s kojim se želite ulogirati na udaljeno računalo.

-p

Zaporka. Ako je ne upišete na komandnoj liniji, udaljeno računalo će zatražiti da je upišete, pa se zaporka neće vidjeti.

Username

Ime korisničkog računa kojem želite promijeniti zaporku.

NewPassword

Nova zaporka. Ako se ispusti, podrazumijeva se NULL, odnosno stara zaporka se izbriše.

 

PsService

PsService omogućuje provjeru i kofiguraciju servisa na Windows NT/2K. Poput alata SC koji je dio Windows NT i Windows 2000 Resource Kita, PsService prikazuje status, konfiguraciju i međuovisnosti servisa i omogućuje da ih zaustavimo, i ponovo pokrenemo. No za razliku od SC utilitija, PsService omogućuje ulogiravanje na udaljena računala, pod  različitim korisničkim imenom,  ako vaš korisnički račun nema potrebne ovlasti. PsService može poslužiti i za traženje aktivnog servisa na svim računalima u vašoj mreži.

Još jedna prednost ovog alata jest što radi i na NT 4, W2K i W2K3, ne treba imati posebne inčice za svaki od navedenih OS-ova, što je zgodno jer s jednom disketom možemo riješiti probleme na različitim računalima u mreži. Na kraju, PsService ne zahtijeva da utipkate "resume index" kako bi dobili potpune informacije o servisima.

Podrazumijevano ponašanje PsService jest prikaz konfiguriranih servisa, bez obzira na to jesu li trenutno aktivni ili ne, i to na lokalnom računalu. Dodatnim parametrima unesenim na komandnoj liniji, ovo se ponašanje može dopuniti. Da biste provjerili sintaksu, utipkajte "pservice -?".

usage: psservice [\\computer [-u username] [-p password]] <command> <options>

-u

Korisničko ime s kojim se želite ulogirati na udaljeno računalo.

-p

Zaporka. Ako je ne upišete na komandnoj liniji, udaljeno računalo će zatražiti da je upišete, pa se zaporka neće vidjeti.

query

Prikaži status servisa

config

Prikaži konfiguraciju servisa

setconfig

Odredi način pokretanja servisa (auto, demand, disabled).

start

Pokreni servis

stop

Zaustavi servis

restart

Zaustavi i ponovo pokreni servis

pause

Pauza, privremeno zaustavljanje servisa

cont

Nastavak rada servisa

depend

Izlistaj servise koji su ovisni o navedenom servisu

find

Potraži navedeni servis na umreženim računalima

 

PsShutdown

PsShutdown je alat sličan shutdown naredbi Resource Kit-a i Windows XP shutdown tools-a, ali pruža i dodatne mogućnosti.

PsShutdown možete koristi da bi inicirali shutdown na lokalnom ili udaljenom računalu, ali možete i zaustaviti već pokrenut shutdown, odlogirati korisnika na konzoli, ili zaključati desktop.

usage: psshutdown [\\computer[,computer[,...] | @file [-u username [-p password]]]  -s|-r|-h|-d|-k|-a|-l|-o [-f] [-c] [-n s] [-t nn|h:m] [-m "message"]

computer

Izvrši naredbu na navedenom računalu, ili računalima. Ako ispustite ovaj argument, naredba se izvršava na lokalnom računalu, ako upišete "\\*" izvršava se na svim računalima u domeni.

@file

Izvrši naredbu na svim računalima upisanim u file.

-u

Korisničko ime s kojim se želite ulogirati na udaljeno računalo.

-p

Zaporka. Ako je ne upišete na komandnoj liniji, udaljeno računalo će zatražiti da je upišete, pa se zaporka neće vidjeti.

-a

Prekini shutdown (moguće jedino ako je odbrojavanje počelo)

-c

Dozvli interaktivnom korisniku da prekine shutdown.

-f

Forsiran prekid pokrenutih aplikacija, ne dozvoljava im da na miru pospreme svoje radne podatke.

-h

Hibernacija računala

-k

Gašenje (poweroff) računala (reboot ako poweroff nije podržan)

-l

Zaključaj (lock) računalo

-m

Poruka (message) koju će vidjeti korisnici kada započne shutdown.

-n

Timeout u sekundama za spajanje na udaljeno računalo

-o

Odlogiraj korisnika na konzoli

-r

Reboot

-s

Shutdown bez gašenja (korisnik mora sam ugasiti računalo)

-t

Određuje broj sekundi do početka shutdowna (podrazumijevana vrijednost je 20 sekundi), ili vrijeme shutdowna u 24 satnoj notaciji.

  

PsSuspend

PsSuspend omogućuje "suspendiranje" procesa na lokalnom ili udaljenom računalu koji, na pr., troši previše resursa (mrežnog prometa, procesorske snage ili diska), a koje želimo osloboditi za druge procese. Umjesto da ubijemo proces, zaustavimo ga na neko vrjeme.

Ako mu proslijedimo proces ID blokirati će samo proces s tim ID-jem na lokalnom računalu. Ako mu pošaljemo ime procesa, zaustaviti će sve procese koji se tako zovu.

usage: pssuspend [-r] [\\computer [-u username] [-p password]] <process name | process id>

-r

Nastavi rad (resume)

-u

Korisničko ime s kojim se želite ulogirati na udaljeno računalo.

-p

Zaporka. Ako je ne upišete na komandnoj liniji, udaljeno računalo će zatražiti da je upišete, pa se zaporka neće vidjeti.

process id

ID procesa koji želimo privremeno zaustaviti

process name

Ime/imena procesa koji želimo privremeno zaustaviti