セキュリティ系の勉強、その他開発メモとか雑談. GithubはUnity触っていた頃ものがメイン Twitterフォローもよろしくです

PowerShell難読化をだた試しながら読む(1) Binary Pulsarさんの記事

ただ下の記事を読んで試すだけ。そのうち忘れて終わりそうな、、笑
PowerShell難読化の基礎 (1) – Binary Pulsar


はじめに

難読化されたコードは実行中に意味あるコードに変わり、コードを評価する関数で実行する。
JavaScriptPHPなどでは、eval関数。PowerShellの場合はInvoke-Expressionコマンドレットやアンパサンド記号がそれ。

Invoke-Expression

パイプで繋がるよってことと、省略形の"iex"の方が一般的に使われるよってこと。
f:id:thinline196:20180905202011p:plain

アンパサンド記号

アンパサンド記号はファイルや関数を実行する関数であるため、複雑なPowerShellスクリプトソースコードを引数に渡しても、実行できません。

f:id:thinline196:20180905202458p:plain


Invoke-Expressionの難読化

どのマシンでも同じと保証されている環境変数を利用する。COMSPECはcmd.exeまでのパスが入っている。PowerShellは大文字小文字の区別はないらしい。
f:id:thinline196:20180905203734p:plain


コードの難読化

アルファベッドをアスキーで表現する。出力は " -Join '. ' "で繋げてあげるとコピペしやすい。
f:id:thinline196:20180905204809p:plain
f:id:thinline196:20180905211435p:plain