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

15 Ways, hogy megkerülje a PowerShell végrehajtási politika

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

15 Ways, hogy megkerülje a PowerShell végrehajtási politika

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:

15 Ways, hogy megkerülje a PowerShell végrehajtási politika

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.

15 Ways, hogy megkerülje a PowerShell végrehajtási politika

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 -

15 Ways, hogy megkerülje a PowerShell végrehajtási politika

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 -

15 Ways, hogy megkerülje a PowerShell végrehajtási politika

6. ábra: A parancs Get-Content

2. példa: A parancs típusa

TYPE \ runme.ps1. | PowerShell.exe -noprofile -

15 Ways, hogy megkerülje a PowerShell végrehajtási politika

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:

15 Ways, hogy megkerülje a PowerShell végrehajtási politika

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.”

15 Ways, hogy megkerülje a PowerShell végrehajtási politika

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

15 Ways, hogy megkerülje a PowerShell végrehajtási politika

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.

15 Ways, hogy megkerülje a PowerShell végrehajtási politika

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

15 Ways, hogy megkerülje a PowerShell végrehajtási politika

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

15 Ways, hogy megkerülje a PowerShell végrehajtási politika

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

15 Ways, hogy megkerülje a PowerShell végrehajtási politika

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 Ways, hogy megkerülje a PowerShell végrehajtási politika

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

15 Ways, hogy megkerülje a PowerShell végrehajtási politika

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

15 Ways, hogy megkerülje a PowerShell végrehajtási politika

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.

15 Ways, hogy megkerülje a PowerShell végrehajtási politika

18. ábra: Beállítás az állapotot végrehajtási politika a rendszerleíró adatbázisban

  • 15 Ways, hogy megkerülje a PowerShell végrehajtási politika
  • 15 Ways, hogy megkerülje a PowerShell végrehajtási politika
  • 15 Ways, hogy megkerülje a PowerShell végrehajtási politika
  • 15 Ways, hogy megkerülje a PowerShell végrehajtási politika