パスワードを忘れた? アカウント作成
15696790 story
Linux

検出が非常に困難な Linux のマルウェア「Symbiote」 36

ストーリー by headless
困難 部門より
一度感染すると検出が非常に困難になるという Linux のマルウェア「Symbiote」について、Intezer と BlackBerry Threat Research & Intelligence Team が共同で調査結果を発表している (Intezer のブログ記事[1][2]Ars Technica の記事The Register の記事)。

Symbiote はスタンドアロンの実行ファイルではなく共有ライブラリであり、LD_PRELOAD 環境変数を用いてすべてのプロセスの実行時に読み込ませる仕組みだ。すべてのプロセスに感染後は、ルートキットとしてマルウェア関連ファイルをすべて隠ぺい可能になるほか、Barkeley Packet Filter (BPF) をフックしてパケットキャプチャツールから自身のネットワークトラフィックを隠ぺいする。マルウェアとしての機能は認証情報の収集とバックドアで、使用ドメイン名によればブラジルの銀行に成りすましているとみられるが、実際の攻撃に関する明確な証拠は得られていないとのことだ。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • Linux であろうと Windows であろうとルートキット検出は、クリーンな環境から検査対象ドライブをマウントしてフルスキャンをかけるのが望ましいでしょう。

    仮想化等で使用ストレージ側にスナップショットを取得する機能があり、他の仮想マシンからマウントできる環境なら、本番環境を止めずにできたと思います。検査環境がストレージ上スナップショットを iSCSI でマウントできなくても、仮想環境でローカルディスク扱いにできるでしょう。

    # その手のことをやっていたのはもう 6年以上前なので記憶は少し曖昧ですが

    物理マシンなら止めて USB メモリからの起動するのが楽です。許容されるなら。Kaspersky Rescue Disk を使っていました。最新版は krd18 [kaspersky.co.jp]かな。ReFS には対応していない気がする。

    ルートキットの性能次第だけど通常はファイルアクセスができないぐらいだろうから、dd とかでディスクイメージを検査環境に転送してできるかもしれない。ファイルシステムの機能も使えるかもしれないが zfs send 的な機能を持っているものはあるんだろうか。ググると btrfs send というのはあるみたいだけど。

    当然ですが検査環境では検査できるだけで駆除は本番環境を止めないと難しいです。削除すべきファイルがわかっていれば、Linux ならスタティックリンクのコマンドでとか、いっそのことシステムコールしか使っていないプログラムを書いて、削除するくらいはできるかもですが、常識的に考えて侵入されていることがわかったら止めるべきでしょうね。

    • by Anonymous Coward on 2022年06月12日 16時05分 (#4267569)

      それでもBIOSに感染するのとかあるので、完璧では無いという辛み

      親コメント
    • by Anonymous Coward

      許容されるなら。Kaspersky Rescue Disk を使っていました。最新版はかな。

      ロシア的に最新版ではないほうが安全かもしれないですね

  • by Anonymous Coward on 2022年06月12日 11時14分 (#4267453)

    LD_PRELOAD 環境変数を用いてすべてのプロセスの実行時に読み込ませる仕組みだ。

    ライブラリやらモジュールやらって、各アプリの起動時に、必要なもの読ませれば良いじゃん。
    なんでこんなリソースの無駄遣い+脆弱性の呼び水にしかならんような仕様があるのか理解できん。

    • by Anonymous Coward on 2022年06月12日 12時38分 (#4267489)

      今思えばなんでこんな仕様にしたのか、
      己の仕事で一度としてそう思ったことのないものだけが石を投げなさい。

      親コメント
      • by Anonymous Coward

        仕事である限りは誰でも一度はあるだろうなw
        気持ちはわかるが厳しすぎ

      • by Anonymous Coward

        なんだこりゃと思ったら、嫌がらせのために自分で仕込んだ仕様だった。
        だれも嫌がらせされてることに気づきやしねえ!

        復讐のための完全犯罪とかフィクションでしか成り立たないと勉強になりました。
        虚しいからやめた方がいい。

      • by Anonymous Coward

        自覚のないバカがバンバン石を投げている絵が浮かぶ。。。

    • by Anonymous Coward

      牧歌的な時代の名残じゃね
      WindowsのPATH環境変数みたいなもんでしょ

    • by Anonymous Coward

      auditとかptraceとか他にもやりようはあるけども
      デバッグやテストで関数呼び出しをフックしたい時に、テストコードを埋め込まず手軽に実現できる。

      LD_PRELOADで全てのプロセスにライブラリをフック出来てるってことは、
      /etc/ld.so.preload辺りを書き換えられてるんだろうし、そこまで出来てるならrootも奪取済みでしょ。

      BPFの下りもだけど、脆弱性というよりroot取られてたらどうしようもねーって話題では?と思った。

      • by Anonymous Coward on 2022年06月12日 12時31分 (#4267479)

        問題は「知られない」という一点です。

        権限取られるのは0デイ脆弱性や内部犯で事実上防げません。
        痕跡を消されるのは最悪なんです。対策が遅れるから。
        カーネルはROMにして再起動時に署名確認が必要かな。やっぱり

        親コメント
        • by Anonymous Coward

          カーネル弄られてないから、署名検証でこれは検出できないぞ。

          • by Anonymous Coward

            別人だが、ロードされるdllに署名が必要ということだと思うぞ。
            そもそもこの機能をフォルト無効にした方がいいと思うけどな。
            # そうしたらしたでsetenforce 0みたいなことになるんだろうが

    • by Anonymous Coward

      某日本では有名なウィルス対策企業のLinux製品で、システム標準のlibstdc++.soを読み込むと動かない場合があって、LD_PRELOADを使って同梱されているlibstdc++を読み込ませるというのをやっていました。OSによるライブラリのバージョン違いを吸収させていたんです。
      Windowsにもほぼ同じ仕組みがありませんでした?どのOSにもライブラリの差し替えには一定の需要があるんだと思うんですよ。

      • by Anonymous Coward

        それはLD_PRELOADじゃなくても対策できるし(というかそっちが普通)、
        めんどうならスタティックリンクで配れと言いたい。

        libstdc++なんてやりがちなものを対策しないそのウィルス対策企業が悪いよ。

        • by Anonymous Coward

          > libstdc++なんてやりがちなものを対策しないそのウィルス対策企業が悪いよ。

          企業からしたら、stdc++ はGCC由来だから ライセンスがGPL。商用ソフトだとスタティックリンクは難しい。
          ユーザもそれくらい理解しとけよ、と言いたいところでしょう。

          • by Anonymous Coward

            libstdc++のライセンスはランタイム例外になってるし、
            GPLだとしたらダイナミックリンクでも事情は変わらんよ。

            要するに、あなたの言ってることはうそっぱち。

        • by Anonymous Coward

          結構昔のことなんで、今だったらsnapみたいな仮想環境になっているのかな?期待できないか…
          もうその会社とは手を切ったのでわからないですが、凄かったですよ。binディレクトリの下にログファイルを吐いたりとか、おそらくバイナリと同じ場所にログも出す仕様なんでしょうけど、バイナリごとにログファイルの場所がバラバラなんです。これは中身もかなりヤバい代物だろうと思いました。未だに時々悪評が聞こえてくるので、あまり変わってないのかも。

          • by Anonymous Coward

            標準出力にボコボコ吐き出すやつかな?

    • by Anonymous Coward

      便利なんよ。
      昔、libsegfaultでお世話になった。

    • > ライブラリやらモジュールやらって、各アプリの起動時に、必要なもの読ませれば良いじゃん。

      その必要なものを読み込ませるの使うんだよ。頭使え。同じ名前のライブラリが複数ある時に使うものを選べる。
      LD_PRELOAD 無しでどうやってライブラリの開発するんだ?
      別環境で実行できないようなライブラリのバイナリ互換性とかチェックするのに必要なんだよ。
      いやなら ld-linux 入れ換えて LD_PRELOAD を根本から無効にしても良いし SELinux とかで防御しても良い。

      そもそも root 権限取られてる状態で LD_PRELOAD だけ気にしてもしょうがいだろ。
      カーネル入れ換えられたり、カーネルモジュール入れ換えられたり、libc 入れ換えられたり、BIOS 入れ換えられたり、どこにでも何でも仕掛けられるんだから。最近なら弱々な systemd とか狙い目だぞ。

      危険性はそんなに増えないのに、利便性が増えるから存在してるんだよ。

  • by Anonymous Coward on 2022年06月12日 13時23分 (#4267516)

    セキュアじゃねー、検出手段がねぇー、
    他依存しなきゃだめ

    おらこんなLinuxやだぁ~こんなLinuxやだぁ
    Windows使って東京でベコかうだぁ

    はっ!

    • by Anonymous Coward

      apiフックして検出されないようにするなんてごく当たり前の技術だから・・・Windowsでも同じ

      • by Anonymous Coward

        それは正確ではない。
        WindowsではAPIレベルのフック程度ではこの手のウイルスの検知可能です。

        Windowsでも困難なのは、システムモジュールを正規にコールして
        メモリー上に起動できた段階で、メモリー上に起動している正規の
        モジュールを不正プログラムに差し替える行為です。

        見た目実行体のハッシュ値が正規と全く同じなので、ハッシュレベルで
        マルウェアやウイルス検査しているセキュリティ対策ソフトは全く検知
        できない。(最近のエモテットやランサムウェアはこの手の差し替え行
        為で内部ネットワーク侵入している)

        ぶっちゃけ、端末に入れるレベルのセキュリティ対策ソフトでは、この手の
        検知がほぼ検知不可なので、ネットワークスキャナーや次世代ファイアウォ
        ールで通信を監視してないと難しい。

      • by Anonymous Coward

        それでもWindowsはLD_PRELOAD相当がない点でちょっと違う。代わりに、へたするとPATH環境変数やカレントディレクトリまで探すという、別のやばさがある。

        全プロセスに仕掛けるのは難しいが、特定アプリを狙うのなら一長一短な具合だと思う。

        • by Anonymous Coward

          へたするとPATH環境変数やカレントディレクトリまで探すという、別のやばさがある。

          つってもおまかんでないなら探す順序は
          c:\windows\system32
          c:\windows\sysWow64
          アプリ等のカレントディレクトリ
          PATH環境変数
          だから大した問題ではないかな

          アプリが呼んでるライブラリと同名の悪意あるファイルをアプリディレクトリに置いてもシステムディレクトリにある同名ライブラリが優先されるのが今のWindowsの標準

          アプリ事態が元々悪事働くならそもそもこの話の外だし
          アプリのスタティックライブラリが侵されているのもこの話の外だし
          システムディレクトリが侵されているなら最早なんでもアリなわけで

          • by Anonymous Coward

            同意。カレントディレクトリとPATHは優先度がとても低いのでだいたい問題ないことを大変大雑把に「へたしたら」という表現にした。カレントディレクトリよりEXEのあるフォルダが先に検索されるので、アプリ固有のDLLだってEXEと同じフォルダに置けば問題ない。

    • by Anonymous Coward

      > ベコかうだぁ
       
      DELLのPCを買うってことですね。

  • by Anonymous Coward on 2022年06月13日 2時30分 (#4267797)

    特定の変数のみ書き込み禁止とかアクセス制限する方法ありませんよね?

    • by Anonymous Coward

      特定の変数のみ書き込み禁止とかアクセス制限する方法ありませんよね?

      Windowsのその辺の設定はレジストリ管理なんでレジストリ監視しとけばいいんじゃない?
      Powershellでスクリプト書いてタスクスケジューラで回す感じで

typodupeerror

長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds

読み込み中...