15 Ways, hogy megkerülje a PowerShell végrehajtási politika
Alapértelmezésben PowerShell úgy van kialakítva, hogy megtiltsák szkriptek végrehajtását a Windows-alapú rendszerek. Ezek a beállítások megnehezítheti a rendszergazdák számára, pentesterov és a fejlesztők, és ebben a cikkben fogom megvitatni 15 módon, hogy megkerülje a végrehajtási politika nélkül rendszergazdai jogosultságokkal.
Alapértelmezésben PowerShell úgy van kialakítva, hogy megtiltsák szkriptek végrehajtását a Windows-alapú rendszerek. Ezek a beállítások megnehezítheti a rendszergazdák számára, pentesterov és a fejlesztők, és ebben a cikkben fogom megvitatni 15 módon, hogy megkerülje a végrehajtási politika nélkül rendszergazdai jogosultságokkal. Úgy vélem, hogy vannak olyan technikák, amelyek nem jegyezhető miatt a feledékenység vagy a tudatlanság az elemi, de remélem, az alábbi lista egy jó kezdet azoknak, akiknek szükségük van rá.
Mi a PowerShell végrehajtási politika?
Végrehajtási politika meghatározza, hogy milyen típusú szkriptet lehet futtatni (ha vannak) a rendszerben. Az alapértelmezett érték kitéve, mint a «Korlátozott», amely tiltja a futás olyan szkriptek. Azonban meg kell jegyezni, hogy a kiigazítás Végrehajtási politika soha nem tartozott a gazdálkodás biztonságát, és szolgált csak rendszergazdák véletlenül kárt okozhatnak a rendszerben. Éppen ezért számos technika kap körül ezeket a beállításokat, köztük a Microsoft által biztosított. További részletek a Végrehajtási politika és más biztonsági beállításokat PowerShell javasoljuk, olvassa el a blog Carlos Perez.
Miért akarja feltérképezni Végrehajtási Politika?
Úgy tűnik, hogy az egyik leggyakoribb válaszok arra a kérdésre, a címben jelzett, - automatizálási folyamatok. Vannak azonban más okok, amiért a PowerShell vált népszerű adminisztrátorok pentesterov és a hackerek. PowerShell:
- Épített ablak.
- Hívhatja a Windows API-t.
- Futhat parancsok nélkül írásban a lemezre.
- Lehet elkerüljék a víruskereső szoftver.
- Ez már jelölni „érvényes”, és többnyire fehér listák.
- Használt írásakor számos biztonsági eszközök nyílt forráskódú.
Hogyan látja a Execution Policy beállítások
Mielőtt használhatná PowerShell minden amire szüksége lehet, hogy megkerülje a tilalmat a szkripteket futtatni. Az aktuális beállítások állíthatók elő a parancsot futtatja «Get-ExectionPolicy». Ha a tilalmat be van állítva, akkor a következő üzenet jelenik meg, ha ezt a parancsot:
PS C: \> Get-ExecutionPolicy
1. ábra: Az eredmény egy olyan rendszer, ahol a tilalom futtatásához
Fontos, hogy a Végrehajtási politika lehet beállítani a különböző szinteken a rendszer. Ha látni egy listát a szintet, használd a lenti parancsot (további részleteket lásd a megfelelő oldalon a TechNet).
Get-ExecutionPolicy -list | Format-Table -AutoSize
2. ábra: Execution Policy Settings különböző rendszer szinteken
Beállítása tesztkörnyezetben
Az alábbi példákban, fogom használni a forgatókönyvet nevű runme.ps, amely tartalmazza a következő paranccsal megjeleníthető az üzenet a konzolon:
Írja-Host „A hangom az útlevelemet, ellenőrizze engem.”
Amikor futtatja a szkriptet a rendszer standard Execution Policy megjelenített beállítások a következő hibaüzenet jelenik meg:
3. ábra: A hiba jelenik meg, ha futtatni egy teszt script egy olyan környezetben, ahol a hangulat a tilalom futtatásához
Ha a jelenlegi rend lehetővé teszi a futó scriptek, hogy tegyen egy tilalmat (tesztelésre), akkor a parancs Set-ExecutionPolicy korlátozott, futás PowerShell adminisztrációs konzolban. Nos, elég ostobaság. Folytassuk közvetlenül megoldaniuk a tilalom a végrehajtási politikában.
Másolja be a script egy interaktív konzol, az alábbiak szerint. Azonban ne feledje, hogy korlátozni fogják a jogosultságokat az aktuális felhasználó. A módszer leggyakrabban használt futtatni egyszerű script, ha lehetőséged van, hogy az interaktív konzolt. Ezen túlmenően, ez a technika nem jár el a beállításokat, és nem igényel írásban a lemezre.
4. ábra: Fuss a forgatókönyvet másolásával egy interaktív konzol
2. Küldés szkript tartalmát a szabványos bemeneti folyam PowerShell
Küldjön egyszerűen a tartalmát a szkript a szabványos bemeneti folyam. Technika nem vonja maga után a beállítások módosítását, és nem igényel írásban a lemezre.
Echo Write-Host „A hangom az útlevelemet, ellenőrizze engem.” | PowerShell.exe -noprofile -
5. ábra: A kimenet a script tartalmát a szabványos bemeneti folyam
3. Reading a script fájlt, és átirányítja tartalom a szabványos bemeneti folyam PowerShell
Használja a szabványos parancs «típust» vagy PowerShell parancs «Get-Content» olvasni a tartalmát a forgatókönyvet a lemezről, és átirányítja az eredményt a standard input-patak. Technika nem vonja maga után a beállítások módosítása azonban megköveteli az írás a lemezre. Annak elkerülése érdekében, a felvételt a lemez, akkor használjon egy hálózati megosztás (hálózati megosztás).
1. példa: PowerShell parancs Get-Content
Get-Content \ runme.ps1. | PowerShell.exe -noprofile -
6. ábra: A parancs Get-Content
2. példa: A parancs típusa
TYPE \ runme.ps1. | PowerShell.exe -noprofile -
7. ábra: A parancs típusa
4. Töltse le a scriptet a hálózaton, és a Invoke Expression
A technika is használható betölteni egy script az interneten, és futás nélkül írásban a lemezre. Szintén nem a beállításokat meg kell változtatni. Láttam egy csomó módon a parancsfájlok hasonló módon, de az utóbbi időben jött át a következő példát:
8. ábra: Töltse le a script az interneten, és kezdi el használni a Invoke Expression
5. Az irányító
1. példa: teljes parancs
PowerShell -command „Write-Host" A hangom az útlevelemet, ellenőrizze engem.”
9. ábra: Fuss a script segítségével a teljes verzió a paraméter
2. példa: Rövid parancs
PowerShell -c „Write-Host" A hangom az útlevelemet, ellenőrizze engem.”
Akkor össze a fenti parancsokat a batch fájlokat és tedd őket egy startup, hogy növelje a jogosultsági szinten.
6. A EncodeCommand
A módszer hasonló az előző technika, de itt az összes szkriptet vannak kódolva a Unicode karakterlánc. Script Encoding hibák elkerülhetők alkalmazásából eredő «Command» paramétert. Technika nem vonja maga után a beállítások módosítását, és nem igényel írásban a lemezre. A következő példa veszünk Posh-SECMOD. Ugyanez az eszköz biztosítja a jó módszer, hogy csökkentse a méretét a kódolt parancsokat.
1. példa: Komplett kiviteli alak
$ Parancs = „Write-Host" A hangom az útlevelemet, ellenőrizze engem.”
$ Bájt = [System.Text.Encoding] :: Unicode.GetBytes ($ parancs)
$ EncodedCommand = [Átvált] :: ToBase64String ($ bytes)
powershell.exe -EncodedCommand $ encodedCommand
10. ábra: A teljes verzió a csapat
2. példa: Csökkentett paraméter
powershell.exe -Enc
VwByAGkAdABlAC0ASABvAHMAdAAgACcATQB5ACAAdgBvAGkAYwBlACAA
aQBzACAAbQB5ACAAcABhAHMAcwBwAG8AcgB0ACwAIAB2AGUAcgBpAGYAeQAgAG0AZQAuACcA
7. A Invoke-irányító parancs
Berendezés talált rám Obscuresec blog által használt, az interaktív konzol, vagy együtt a «Command» paramétert. A fő jellemzője ennek a módszernek, hogy lehet használni, hogy végre parancsok távoli rendszerekben, ahol tudnak futni PowerShell szkriptek. Technika nem vonja maga után a beállítások módosítását, és nem igényel írásban a lemezre.
11. ábra: A Invoke-irányító parancs
Az alábbi parancs, után létrehozott Obscuresec blog lehet használni, hogy átutalja a végrehajtási politika beállítások távoli gépről a helyi.
hivatkozhat-irányító -computername kiszolgáló01 -scriptblock | set-executionpolicy -force
8. A parancs Invoke-Expression
Csakúgy, mint az előző esetben, a technika által használt interaktív konzol vagy kombinációban paraméter «Command». A módszer nem jár el a beállításokat, és nem igényel írásban a lemezre. Az alábbiakban néhány, a leggyakoribb módja, hogy hívja meg-Expression parancsot, hogy megkerülje a végrehajtási politika.
1. példa: A teljes verzió a parancs Get-Content
Get-Content \ runme.ps1. | Hivatkozhat-Expression
12. ábra: A teljes verzió a parancs Get-Content
2. példa: Egy rövidített változata Get-Content
GC \ runme.ps1. | lEX
9. A Bypass zászló
Microsoft hozzáadott egy zászlót, hogy megkerülje a végrehajtási politika, amikor fut szkriptek fájlokból. A Microsoft azt mondja, hogy az ezzel a zászló „semmi van zárva, és nem jelenik meg semmilyen figyelmeztetés vagy üzeneteket.” Technika nem vonja maga után a beállítások módosítását, és nem igényel írásban a lemezre.
PowerShell.exe -ExecutionPolicy Bypass -File. \ Runme.ps1
13. ábra: A Bypass flag
10. korlátlan használata a zászló
A technika hasonló az előzőhöz. Bár a korlátlan Microsoft zászló kimondja, hogy „letölti a konfigurációs fájlok és fut minden szkripteket. Ha fut egy aláíratlan script az internetről letöltött, egy üzenet jelenik meg jóváhagyást kérő elindítását. " A módszer nem jár el a beállításokat, és nem igényel írásban a lemezre.
PowerShell.exe -ExecutionPolicy korlátozatlan -File. \ Runme.ps1
14. ábra: A korlátlan zászló
11. Távoli aláírású zászló
Hozzon létre egy script. Akkor írja alá a kalauz. írta Carlos Perez. Most fut a script parancs használatával az alábbi:
PowerShell.exe -ExecutionPolicy Remote aláírt -File. \ Runme.ps1
12. ExecutionPolicy tilalmat kisütés Engedélyezéskezelő
funkció letiltása-ExecutionPolicy $ executioncontext.gettype (). getfield ( "_ összefüggésben", "nem nyilvános, például"). getValue (
$ Executioncontext)). GetType (). Getfield ( "_ authorizationManager", "nem nyilvános, például").
setValue ($ CTX (új objektum System.Management.Automation.AuthorizationManager "Microsoft.PowerShell"))>
15. ábra: letiltása Engedélyezéskezelő az aktuális munkamenetben
13. telepítése Excution politika szintű folyamat
A cikk elején azt állította, hogy a végrehajtási politika lehet alkalmazni a különböző szinteken (többek között a folyamat, hogy ahol van, ellenőrzés). Ezzel a technikával a végrehajtási politika lehet állítani, hogy a status korlátlan az ülés alatt. Továbbá az eljárás nem jár változások a beállításokat, és nem igényel írásban a lemezre. Találtam ezt a technikát r007break blog.
Set-ExecutionPolicy Bypass -Scope Process
16. ábra: Beállítás az állapotot korlátlan szintű folyamat
14. beszerelése korlátlan állapota CurrentUser szinten a parancs
A technika hasonló az előzőhöz, de itt módosította a telepítési környezet a jelenlegi felhasználó módosításával egy registry kulcsot. A módszer nem jár el a beállításokat, és nem igényel írásban a lemezre. Technológia is találtak r007break blog.
Set-Executionpolicy -Scope CurrentUser -ExecutionPolicy korlátozatlan
17. ábra: Beállítás az állapotot korlátlan CurrentUser szinten
15. Telepítés korlátlan állapot CurrentUser szinten keresztül a regisztrációs
Ebben a példában megmutatom, hogyan kell tenni az állandó végrehajtási politika beállításokat az aktuális felhasználó számára a rendszerleíró adatbázis módosításával kulcs közvetlenül.
18. ábra: Beállítás az állapotot végrehajtási politika a rendszerleíró adatbázisban