49
Powershell のセキュリティ @tsuda_ahr 2015/5/16 の懇親会

Powershell のセキュリティ (大都会ver)

  • Upload
    tsudaa

  • View
    209

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Powershell のセキュリティ (大都会ver)

Powershell のセキュリティ@tsuda_ahr

2015/5/16

の懇親会

Page 2: Powershell のセキュリティ (大都会ver)

自己紹介

Page 3: Powershell のセキュリティ (大都会ver)

NemCa はこんな感じ

合点がいかない!

この人のせい!!

Page 4: Powershell のセキュリティ (大都会ver)

バズったコンテンツ

Page 5: Powershell のセキュリティ (大都会ver)

そして #ハレ婚の日にこんな記事が出ていてびびる

http://internet.watch.impress.co.jp/docs/special/20150307_691658.html

Page 6: Powershell のセキュリティ (大都会ver)

インターネット怖い!ガクガクブルブル (((( ;゚Д゚))

Page 7: Powershell のセキュリティ (大都会ver)

ちなみに私のブログで参照された記事の上位…(汗

http://ooltcloud.expressweb.jp/

Page 8: Powershell のセキュリティ (大都会ver)

さて本題

Page 9: Powershell のセキュリティ (大都会ver)

約半年前、こんな会議が大都会でありました

Page 10: Powershell のセキュリティ (大都会ver)

そこで聞いた Powershell 話。

• ほとんど忘れましたけど。

Page 11: Powershell のセキュリティ (大都会ver)

簡単に言うと

• 個人PCのセキュリティが厳しくなりました。

• Windows 7 で UAC で縛り。しかし Admin 権限がないので、解除できず。

• UAC を操作するには上司の立ち合いが必要。

• IDE とか入れられないのでプログラム組めない。

• ファイルのコピーすら満足に自動化できんじゃん?

• そうだ、Windows なら Powershell があるんじゃね?

という流れだった気がする。

Page 12: Powershell のセキュリティ (大都会ver)

やってみよう

Page 13: Powershell のセキュリティ (大都会ver)

.¥test.ps1 を実行

Page 14: Powershell のセキュリティ (大都会ver)

拒否られる

Page 15: Powershell のセキュリティ (大都会ver)

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Page 16: Powershell のセキュリティ (大都会ver)

やっぱり拒否られる

Page 17: Powershell のセキュリティ (大都会ver)

要するにファイル指定で

スクリプト実行するためには

管理者権限を強いられる!

Page 18: Powershell のセキュリティ (大都会ver)

オワタ

\(^o^)/

Page 19: Powershell のセキュリティ (大都会ver)

ここまでが、忘年会議での話。

Page 20: Powershell のセキュリティ (大都会ver)

しかし、手入力する分には

実行できるよね?

Page 21: Powershell のセキュリティ (大都会ver)

そう、手入力はOKなわけです。

Page 22: Powershell のセキュリティ (大都会ver)

ということは

ファイル指定で実行しなければ

いける!

Page 23: Powershell のセキュリティ (大都会ver)

しかし毎度コマンドを

入力するのは面倒すぎる

Page 24: Powershell のセキュリティ (大都会ver)

そこで

Function の活用ですよ!

Page 25: Powershell のセキュリティ (大都会ver)

こんな風にスクリプトを function にまとめておく

function test() {

Get-Process

}

function test2($a) {

Write-Host "hello $a!"

}

test.ps1

Page 26: Powershell のセキュリティ (大都会ver)

Powershell を起動したときにコピペ!

Page 27: Powershell のセキュリティ (大都会ver)

あとは function を実行すれば繰り返しいける!

Page 28: Powershell のセキュリティ (大都会ver)

権限の範囲で

楽しい

スクリプトライフを!

Page 29: Powershell のセキュリティ (大都会ver)

・・・

Page 30: Powershell のセキュリティ (大都会ver)

そうじゃない!

Page 31: Powershell のセキュリティ (大都会ver)

やっぱりファイル単位で整理して、

ファイル単位で指定したい!

Page 32: Powershell のセキュリティ (大都会ver)

たとえばこんなスクリプトファイルがある

$a = $args[0]

Get-Process |

? { $_.CPU -ge $a } |

select Cpu, ProcessName, MainWindowTitle, Path |

sort cpu -Descending |

ogv

getHeavtProcess.ps1

ここがコマンドラインパラメーター

Page 33: Powershell のセキュリティ (大都会ver)

こうあってほしいが・・・

Page 34: Powershell のセキュリティ (大都会ver)

当然、現実はこう (汗

Page 35: Powershell のセキュリティ (大都会ver)

そこでこんなバッチファイルを作る

powershell -command "$a=gc -raw %1; $a='{'+$a+"'}'; $b=Invoke-Expression $a; $b.Invoke(%2); pause;"

psexec.bat

Page 36: Powershell のセキュリティ (大都会ver)

するとこう!コマンドプロンプト

Page 37: Powershell のセキュリティ (大都会ver)

バッチファイル経由で

Powershell Script が

起動できた!

Page 38: Powershell のセキュリティ (大都会ver)

バッチファイルでやっていること。

Powershell ①

-command ②

"

$a=gc -raw %1; ③

$a='{'+$a+'}'; ④

$b=Invoke-Expression $a;⑤

$b.Invoke(%2); ⑥

pause; ⑦

"

①Powershellを起動する

②-command オプションで Scriptを渡す。

③第一引数に指定したファイルをテキストで読み込む。

④スクリプトブロックにするので{ } で囲む。

⑤文字列をスクリプトブロックとして評価する。

⑥スクリプトブロックの実行。%2 をパラメーターとして渡す。

⑦確認待ち。

Page 39: Powershell のセキュリティ (大都会ver)

結果、生成・実行される Powershell Script

$a='{$a = $args[0]

Get-Process |

? { $_.CPU -ge $a } |

select Cpu, ProcessName, MainWindowTitle, Path |

sort cpu -Descending |

ogv}';

$b=Invoke-Expression $a;

$b.Invoke(10);

pause; いわゆる eval

Page 40: Powershell のセキュリティ (大都会ver)

セキュリティとは

一体なんだったのか!

Page 41: Powershell のセキュリティ (大都会ver)

権限の範囲で

楽しい

スクリプトライフを!

Page 42: Powershell のセキュリティ (大都会ver)

ここまでが、LT駆動 #10 (2015/1) での話。

Page 43: Powershell のセキュリティ (大都会ver)

ここから OSO 2015 懇親会ver

の懇親会

Page 44: Powershell のセキュリティ (大都会ver)

powershell -ExecutionPolicy RemoteSigned

そもそも、そんな謎な事しなくても・・・

Powershell の起動オプションを指定でいけるよ!

Page 45: Powershell のセキュリティ (大都会ver)

普通に使える!

Page 46: Powershell のセキュリティ (大都会ver)

いままでの苦労はなんだったのか

_| ̄|○

Page 47: Powershell のセキュリティ (大都会ver)

しかも、3年前にヒーロー島でその話聞いてた(汗

https://twitter.com/tsuda_ahr/status/183366319545131008

Page 48: Powershell のセキュリティ (大都会ver)

結論

みんな Powershell を使おう!

Page 49: Powershell のセキュリティ (大都会ver)

ご清聴ありがとうございました