Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Powershell のセキュリティ (大都会ver)
Search
tsuda.a
May 16, 2015
Programming
56
0
Share
Powershell のセキュリティ (大都会ver)
Powershell のセキュリティ
tsuda.a
May 16, 2015
More Decks by tsuda.a
See All by tsuda.a
マジカルインクリメントと指数表記
tsudaahr
0
240
バックアップしていますか?
tsudaahr
0
140
RDB以前のファイル設計の話でもしようか(ぇ
tsudaahr
0
150
NPUわからん
tsudaahr
0
200
計算量オーダーの話
tsudaahr
1
440
クラウド初学者が抱える不安について
tsudaahr
0
320
キューとは何か
tsudaahr
0
270
等幅は死んだ(ぇ
tsudaahr
0
130
いくら眺めてもエラーの理由がわからないコードについて
tsudaahr
0
210
Other Decks in Programming
See All in Programming
Vibe NLP for Applied NLP
inesmontani
PRO
0
440
PDI: Como Alavancar Sua Carreira e Seu Negócio
marcelgsantos
0
120
TiDBのアーキテクチャから学ぶ分散システム入門 〜MySQL互換のNewSQLは何を解決するのか〜 / tidb-architecture-study
dznbk
1
180
Offline should be the norm: building local-first apps with CRDTs & Kotlin Multiplatform
renaudmathieu
0
220
How Swift's Type System Guides AI Agents
koher
0
280
ルールルルルルRubyの中身の予備知識 ── RubyKaigiの前に予習しなイカ?
ydah
1
190
(Re)make Regexp in Ruby: Democratizing internals for the JIT
makenowjust
2
210
ハーネスエンジニアリングにどう向き合うか 〜ルールファイルを超えて開発プロセスを設計する〜 / How to approach harness engineering
rkaga
24
14k
AIエージェントで業務改善してみた
taku271
0
530
Server-Side Kotlin LT大会 vol.18 [Kotlin-lspの最新情報と Neovimのlsp設定例]
yasunori0418
1
160
iOS機能開発のAI環境と起きた変化
ryunakayama
0
190
Spec Driven Development | AI Summit Vilnius
danielsogl
PRO
1
110
Featured
See All Featured
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
10k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Six Lessons from altMBA
skipperchong
29
4.2k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
170
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Believing is Seeing
oripsolob
1
110
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
130
Thoughts on Productivity
jonyablonski
76
5.1k
Transcript
Powershell のセキュリティ @tsuda_ahr 2015/5/16 の懇親会
自己紹介
NemCa はこんな感じ 合点がいかない! この人のせい!!
バズったコンテンツ
そして #ハレ婚 の日にこんな記事が出ていてびびる http://internet.watch.impress.co.jp/docs/special/20150307_691658.html
インターネット怖い! ガクガクブルブル (((( ;゚Д゚))
ちなみに私のブログで参照された記事の上位…(汗
さて本題
約半年前、こんな会議が大都会でありました
そこで聞いた Powershell 話。 • ほとんど忘れましたけど。
簡単に言うと • 個人PCのセキュリティが厳しくなりました。 • Windows 7 で UAC で縛り。 しかし
Admin 権限がないので、解除できず。 • UAC を操作するには上司の立ち合いが必要。 • IDE とか入れられないのでプログラム組めない。 • ファイルのコピーすら満足に自動化できんじゃん? • そうだ、Windows なら Powershell があるんじゃね? という流れだった気がする。
やってみよう
.¥test.ps1 を実行
拒否られる
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
やっぱり拒否られる
要するにファイル指定で スクリプト実行するためには 管理者権限を強いられる!
オワタ \(^o^)/
ここまでが、忘年会議での話。
しかし、手入力する分には 実行できるよね?
そう、手入力はOKなわけです。
ということは ファイル指定で実行しなければ いける!
しかし毎度コマンドを 入力するのは面倒すぎる
そこで Function の活用ですよ!
こんな風にスクリプトを function にまとめておく function test() { Get-Process } function test2($a)
{ Write-Host "hello $a!" } test.ps1
Powershell を起動したときにコピペ!
あとは function を実行すれば繰り返しいける!
権限の範囲で 楽しい スクリプトライフを!
・・・
そうじゃない!
やっぱりファイル単位で整理して、 ファイル単位で指定したい!
たとえばこんなスクリプトファイルがある $a = $args[0] Get-Process | ? { $_.CPU -ge
$a } | select Cpu, ProcessName, MainWindowTitle, Path | sort cpu -Descending | ogv getHeavtProcess.ps1 ここがコマンドラインパラメーター
こうあってほしいが・・・
当然、現実はこう (汗
そこでこんなバッチファイルを作る powershell -command "$a=gc -raw %1; $a='{'+$a+"'}'; $b=Invoke-Expression $a; $b.Invoke(%2);
pause;" psexec.bat
するとこう! コマンドプロンプト
バッチファイル経由で Powershell Script が 起動できた!
バッチファイルでやっていること。 Powershell ① -command ② " $a=gc -raw %1; ③
$a='{'+$a+'}'; ④ $b=Invoke-Expression $a;⑤ $b.Invoke(%2); ⑥ pause; ⑦ " ①Powershellを起動する ②-command オプションで Scriptを 渡す。 ③第一引数に指定したファイルをテ キストで読み込む。 ④スクリプトブロックにするので { } で囲む。 ⑤文字列をスクリプトブロックとし て評価する。 ⑥スクリプトブロックの実行。 %2 をパラメーターとして渡す。 ⑦確認待ち。
結果、生成・実行される 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
セキュリティとは 一体なんだったのか!
権限の範囲で 楽しい スクリプトライフを!
ここまでが、LT駆動 #10 (2015/1) での話。
ここから OSO 2015 懇親会ver の懇親会
powershell -ExecutionPolicy RemoteSigned そもそも、そんな謎な事しなくても・・・ Powershell の起動オプションを指定でいけるよ!
普通に使える!
いままでの苦労はなんだったのか _| ̄|◦
しかも、3年前にヒーロー島でその話聞いてた(汗 https://twitter.com/tsuda_ahr/status/183366319545131008
結論 みんな Powershell を使おう!
ご清聴ありがとうございました