WP PostgreSQLに対するランサムウェア攻撃の分析 - JA

PostgreSQLに対するランサムウェア攻撃の分析

PostgreSQLに対するランサムウェア攻撃の分析

2017年、Impervaは、MySQLおよびMongoDBなどのデータベースを標的としたランサムウェア攻撃に関するレポートを発表しました。それ以来、PostgreSQLに対する同様の攻撃についても、Imperva Threat Researchにて観察を続けています。

一般的に、攻撃の流れは以下のように行われます。

  • 既知のユーザーと脆弱なパスワードに対する総当たり攻撃によってデータベースに侵入
  • すべての論理データベースと、各データベース内のすべてのテーブルのリストを収集
  • 各テーブルにおける攻撃者の行動
    • すべての列のリストを窃取
    • テーブルにてクエリを実行し、データを窃取
    • テーブルを削除(攻撃者がファイルの窃取後にとる常套手段)
  • すべてのテーブルを削除後、データベースを削除
  • すべてのデータベースを削除後、新規のデータベースおよびテーブルを作成し、身代金としてビットコインを要求するメモを挿入
  • 通常、要求書には、身代金が支払われなければデータが公開されることを示唆する脅迫文が含まれる

昨今、PostgreSQLを標的とした同種のランサムウェア攻撃がImpervaで確認されています。これに関して私たちは、いくつかの興味深い事実を発見しました。

攻撃者が標的を騙し、PostgreSQLにランサムウェア攻撃を仕掛ける方法

攻撃を分析する中で、私たちは2つの主要なポイントを確認することができました。

1.攻撃者はクエリを実行し、論理データベースサイズを取得している

PostgreSQL query example

2.攻撃者は、各テーブルのレコードのごく一部のみを取得するクエリを実行している

Example of a PostgreSQL query to get a portion of the database records

このことから、攻撃者は被害者のデータを返すつもりが元からなく、被害者から要求された場合に証拠品として提示できるようにサンプルデータを共有しただけであると考えられます。つまり、攻撃者の目的はデータベース全体を収集することではなく、被害者を騙すことなのです。

終了と制御

一連の流れを確認後、私たちは、このランサムウェア攻撃が「Hit and Run」型であると判断しました。そして、攻撃に関する指標をもう1つ発見しました。
以下は、攻撃者によって実行されたコマンドの例です。

PostgreSQL command

「backend(バックエンド)」は、端的に述べると、データベースのクライアント接続を処理するプロセスを指します。

このコマンドでは、攻撃者がステルス的な方法を試みることなく全てのバックエンドプロセスを終了させようとしていることがわかります。こういった試みは恐らく、あとで削除するためにデータベースオブジェクトのロックを解除する目的で行われます。

ランサムウェアに関する注意事項

攻撃の最終段階では、身代金を求める脅迫文が挿入された新規のテーブルおよびデータベースが作成されます。

New PostgreSQL database creation command

こちらの情報から、攻撃者が要求しているのは比較的少額のビットコインであることがわかります。多額の身代金を要求するのではなく、「すぐに勝てる」可能性が高い少額を要求することも、「Hit and Run」型の攻撃の特徴です。

さらに、脅迫文にあるビットコインアドレス(blockchain.comを使用)を確認すると、履歴に同額程度のビットコイン取引があることがわかります。

Bitcoin transactions screen

PostgreSQLへのランサムウェア攻撃を阻止するための推奨事項

  • 先述した通り、攻撃者は被害者のデータを返すつもりがありません。そのため、データベースアクティビティの監視またはネイティブ監査を有効化することにより、ランサムウェア攻撃によって窃取された情報を把握し、状況を正しく理解できるようにしましょう。
  • ログインの失敗は、攻撃の初期段階である可能性があります。こういったケースに対応するため、独自のログインプロファイリングを作成するか、リスク分析ソリューションを導入しましょう。
  • データベースをインターネットに公開せず、安全なアクセスを処理するためのVPNなどを活用しましょう。現在、65万以上のPostgreSQLがインターネットに接続されていますが、その99%はデフォルトの5432番ポートを使用しています。データベースをインターネットに公開する必要がある場合は(そうでない場合でも)、データベース構成をデフォルトの待ち受けポートから、人に知られていないポートに変更しましょう。
  • データベースをファイアウォールの内側に設置しましょう。
  • データベースのバックアップと災害復旧計画を作成しましょう。また、それらのプロセスを定期的に監視およびテストしてください。