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 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.
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.
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
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 |
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 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. |
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 |
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 Kit: pstat 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. |
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. |
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 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 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 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 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 |