PsExec și lucrurile urâte pe care le poate face
majoritatea instrumentelor pe care le folosim pentru a administra rețelele tind să fie o sabie cu două tăișuri. Aceste instrumente oferă o mare flexibilitate și permit gestionarea ușoară a dispozitivelor, serviciilor și software-ului. În mâinile potrivite nu avem de ce să ne facem griji, dar în mâinile greșite instrumentele noastre de administrare de la distanță devin arme puternice care pot fi folosite de atacatori pentru a efectua o gamă largă de activități dăunătoare., În acest articol voi vorbi despre un instrument care se potrivește acestei descrieri. Acest instrument este instrumentul Microsoft Sysinternals PsExec. În acest articol am de gând să dau o imagine de ansamblu a ceea ce este PsExec și ceea ce capacitățile sale sunt din punct de vedere administrativ. În urma acestui lucru, voi lua rolul unui adversar și voi demonstra unele dintre lucrurile urâte pentru care poate fi folosit într-o rețea.
Acest articol își propune să servească două audiențe., Primul public este format din administratorii de sistem care sunt responsabili pentru protejarea rețelelor lor de utilizarea de instrumente precum PsExec în scopuri rău intenționate. Celălalt public destinat este format din hackeri etici și testeri profesioniști de penetrare, care pot obține un beneficiu din cunoașterea unui pic mai mult despre unele dintre lucrurile pentru care PsExec poate fi folosit., Indiferent de care publicul se încadrează în sale important că am oferi atentie ca unele dintre comenzile și tehnici de voi discuta aici poate fi destul de ilegal, în funcție de circumstanțele în care acestea sunt utilizate, așa că vă îndemn să procedeze cu prudență dacă acțiunile pe care le iau pot fi discutabile.
ce este PsExec?
utilitatea PsExec a fost proiectată ca parte a suitei PsTools, dezvoltată inițial de Mark Russinovich de la Sysinternals, deținută acum de Microsoft., Instrumentul este inventat ca un instrument de administrare la distanță bazat pe linia de comandă și permite executarea de la distanță a proceselor pe alte sisteme. Este foarte flexibil prin faptul că va permite utilizarea acreditărilor de autentificare alternative, mai degrabă decât cele ale utilizatorului care le execută, ceea ce înseamnă că puteți gestiona dispozitivele separate de limitele domeniului și site-ului. Nu numai că PsExec poate executa programe pe un sistem la distanță, dar poate redirecționa și intrarea și ieșirea consolei între sisteme, astfel încât să puteți utiliza instrumente interactive de la distanță.,spre deosebire de majoritatea software-ului asociat Microsoft, funcționarea interioară a PsExec nu este un secret și este destul de simplă. PsExec permite redirecționări ale intrării și ieșirii unui executabil pornit de la distanță prin utilizarea SMB și a cotei ascunse $ADMIN pe sistemul de la distanță. Cu această cotă, PsExec utilizează API-ul Windows Service Control Manager pentru a porni serviciul PsExecsvc pe sistemul de la distanță, care creează o conductă numită cu care PsExec comunică. Această conductă numită este ceea ce permite redirecționarea intrării/ieșirii înapoi la sistemul care a lansat PsExec.,conform designului original, PsExec poate fi folosit pentru a face o serie de lucruri foarte utile care pot ajuta administratorii de sistem. Un astfel de scenariu pe care l-am găsit de mai multe ori este unul în care am cunoscut numele DNS al unui computer, dar nu setările exacte de configurare IP (server DNS, gateway implicit, etc). În condiții normale, aș folosi ipconfig pe sistemul local pentru a determina aceste informații., Cu toate acestea, în marea majoritate a cazurilor, acest lucru ar putea însemna că ar trebui să conduc într-o altă locație sau să împrumut computerul unui utilizator, reducând în mod inerent productivitatea pentru ziua respectivă. Deoarece ipconfig nu are capabilități pentru a fi rulat împotriva unei mașini non-locale, pot folosi PsExec să-l lanseze cu succes, așa cum se arată în Figura 1.
Figura 1: Utilizarea PsExec pentru a lansa ipconfig pe un sistem la distanță
după ce PsExec este numit, computerul la distanță este desemnat după slash dublu (\\), urmată de comanda ipconfig., Când executați PsExec, acesta este implicit în directorul% SYSTEM % din sistemul de la distanță pe care încercați să rulați comanda, motiv pentru care nu a trebuit să specific o cale completă aici. În cele din urmă, comutatorul /all pentru ipconfig este specificat pentru a afișa toate informațiile ipconfig disponibile.
O altă implementare comună a PsExec este să-l folosească pentru implementarea de actualizări, patch-uri, și remedieri rapide. Deși metoda preferată tipic de a face acest lucru este prin politica de grup pot exista cazuri în care această metodă este prea lent., Am fost în multe situații în care am avut nevoie să implementez un patch de securitate cu prioritate ridicată, care nu poate aștepta durata timpului standard de reîmprospătare a politicii de grup, așa că am apelat la PsExec pentru a implementa fișierul într-un mod mai rapid. Un exemplu în acest sens este văzut în Figura 2.
Figura 2: Lansarea unui patch executabil de la distanță
imaginea de comandă de mai sus utilizează câteva caracteristici suplimentare. În primul rând, observați că există două nume de computer separate prin virgule după slash dublu (\\)., PsExec vă permite să specificați mai multe dispozitive țintă aici sau, alternativ, un fișier care conține o listă de nume sau adrese ale dispozitivelor. Comanda include, de asemenea, comutatorul / c, care este utilizat atunci când doriți să specificați un fișier pe sistemul local care urmează să fie executat pe sistemul de la distanță. În acest caz, am specificat patch-ul fișierului.exe. Fișierul este localizat pe sistemul meu local la rădăcina unității C, așa că a trebuit să specific calea completă a fișierului. Comutatorul / c arată în mod implicit în directorul% SYSTEM % din sistemul local., După cum puteți vedea, fișierul este executat cu succes și ieșirea este redirecționată înapoi către consola locală de la care rulăm PsExec.
o ultimă utilizare prietenoasă a PsExec pe care am găsit-o foarte convenabilă este utilizarea acesteia pentru a administra de la distanță Sisteme cu un nivel de privilegii mai ridicat în timp ce utilizați un sistem sub un cont privilegiat mai mic. Nu pot conta de câte ori am fost pe site-ul de lucru pe un computer de utilizatori și am primit un apel care îmi cere să îndeplinească o funcție administrativă, cum ar fi o schimbare de parolă., Desigur, într-un mediu Active Directory aș putea doar RDP într-un controler de domeniu și să efectuez această modificare, dar am avut mai mulți clienți care nu folosesc active directory sau RDP din diverse motive. În acest caz, este destul de ușor să pop într-o unitate flash USB și să accesați copia PsExec pe care am instalat-o pe ea. În cazul figurii 3, am folosit PsExec pentru a reseta o parolă de utilizator pe un sistem prin ridicarea privilegiilor” instrumentului net așa cum a fost executat de PsExec.,
Figura 3: Modificarea unui utilizator”parola de ridicare PsExec”s privilegii
Face Lucruri Urât cu PsExec
Acum, să”s ia o plimbare pe partea întunecată și uită-te la unele lucruri care pot fi facute cu PsExec de cei cu potențial de intenții rele. În primul rând, să luăm în considerare un scenariu în care un atacator a obținut acreditări pentru un sistem, dar nu are acces direct la acesta., În acest caz, atacatorul urmărește să obțină controlul GUI sau al liniei de comandă a sistemului, dar căile disponibile pentru utilizarea acestor acreditări pot fi limitate. O metodă care poate fi utilă în această situație este de a utiliza PsExec pentru a rula un executabil backdoor pe sistem, cum ar fi ceea ce este prezentat în Figura 4.figura 4: un executabil rău intenționat este lansat de la distanță
În cazul acestei capturi de ecran, un atacator de la distanță utilizează PsExec cu comutatorul /c pentru a rula fișierul local nc.exe pe sistemul de la distanță., Odată cu aceasta, comutatoarele-u și-p sunt utilizate pentru a specifica numele de utilizator și parola compromise, astfel încât fișierul să poată fi executat cu privilegii de nivel rădăcină. Fără știrea victimei, fișierul care este executat în tăcere într-un backdoor care va permite atacatorului să se conecteze la sistem și să primească un prompt de comandă administrativ.un lucru interesant despre atacul pe care tocmai l-am analizat este că de fapt nu aveți nevoie nici măcar de parola unui utilizator pentru ao executa. În realitate, tot ce ai nevoie este numele de utilizator și parola hash a utilizatorului., În Windows, calculele matematice sunt aplicate parolelor furnizate de utilizator pentru a transforma aceste parole într-un șir criptat de lungime fixă, numit hash. Aceste hash-uri sunt o caracteristică de securitate concepută pentru a împiedica transmiterea parolelor de text clare într-o rețea. Când are loc autentificarea, aceste hash-uri de parole sunt trimise de la o gazdă la alta. Folosind PsExec acest lucru poate fi profitat de pur și simplu furnizarea hash parola în loc de parola, se arată în Figura 5.,
Figura 5: Folosind un hash parola pentru a executa un fișier de la distanță
Acest exemplu este la fel ca cel din Figura 4, singura diferență este că o parola hash este folosit în loc de parola. Sistemul de primire nu are nicio problemă să accepte acest hash în scopuri de autentificare. Există o varietate de metode pentru obținerea hash-urilor de parole care depășesc puțin domeniul de aplicare al acestui articol. Am scris un alt articol pe această temă care poate fi vizualizat aici.,un alt truc elegant pe care PsExec îl face posibil este capacitatea de a accesa fișierele și de a crea procese cu contul încorporat al sistemului. Contul de sistem de pe o mașină Windows este cel mai puternic cont și permite accesul la aproape orice, inclusiv la unele elemente care nu sunt accesibile prin contul de administrator și conturile create de utilizator.. Figura 6 oferă un exemplu pentru accesarea aplicației regedit.,
Figura 6: accesarea registrului victimei
comanda de mai sus este rulată direct pe un sistem local, dar specifică comutatorul-s pentru a utiliza contul sistemului local. Aceasta este combinată cu opțiunea-i (interactivă) care rulează regedit în modul interactiv. Rularea acestei comenzi va lansa regedit cu acces la sistem, care oferă acces suplimentar la unele fișiere interesante. Un astfel de exemplu este fișierul SAM care conține hashes de parolă de utilizator., Având în vedere motivația corectă, un atacator cu acces la un sistem și PsExec ar putea extrage cu ușurință toate hash-urile de parole din sistem folosind această tehnică, oferindu-i informații care ar putea permite compromiterea altor sisteme sau conturi.
câteva avertismente
acreditări în clar – dacă sunteți preocupat de cine ar putea asculta activitatea dvs. de rețea, atunci PsExec nu este probabil cel mai bun instrument de utilizat., PsExec transmite toate acreditările de utilizator furnizate în clar, ceea ce înseamnă că, dacă furnizați un nume de utilizator și o parolă pentru a accesa un sistem de la distanță, oricine cu o copie a Wireshark sau Tcpdump care rulează poate intercepta acreditările.detectarea antivirusului – acest lucru nu era o problemă la fel de mare, dar acum că majoritatea aplicațiilor de scanare a virușilor fac un anumit nivel de monitorizare a sistemului și a memoriei, majoritatea vor prinde PsExec fiind utilizat pe sistemul pe care îl monitorizează., Dacă faceți un test de penetrare pe un sistem Windows și PsExec nu funcționează așa cum ar trebui să fie, atunci este posibil să fiți blocat de antivirus și, mai rău, este posibil să lăsați utilizatorul final să știe că vă jucați cu sistemul lor.
PsExec și Metasploit – când este posibil, nu mai folosesc PsExec de la sine. O versiune modificată a PsExec este acum inclusă în cadrul Metasploit. Metasploit este un cadru de testare de penetrare, care oferă destul de un pic de funcționalitate., Dacă doriți să utilizați PsExec pentru o anumită formă de evaluare a securității, atunci luând în considerare căutarea funcționalității adăugate pe care Metasploit o oferă. Am folosit de fapt, această versiune de PsExec într-un articol am scris mai devreme pe trecerea tehnicilor Hash.
concluzie
instrumentul PsExec are o mulțime de utilizări pentru o varietate de intenții ale utilizatorului. Sperăm că acest articol v-a ajutat să vă educați cu privire la unele dintre caracteristicile sale și la modul în care acestea pot fi folosite pentru a face greșit. PsExec este genul de instrument care permite unui atacator să fie creativ., Deși am acoperit doar câteva utilizări unice ale instrumentului aici, aș îndrăzni să spun că zeci sau chiar sute de vectori de atac interesanți sunt disponibili folosind setul său de caracteristici. La un moment dat, voi planifica să scriu un articol de urmărire care conține utilizări mai interesante și mai avansate pentru PsExec. Între timp, dacă aveți trucuri PsExec interesante, atunci nu ezitați să-mi scrieți direct pentru a fi incluse în articolul următor.