クライアントのデータ保護キャンペーンの一環として、Impervaでは、データベースを攻撃するさまざまな方法について話しています。 StickyDBの研究プロジェクトを初めて使用する場合は、過去の記事、
パートIおよび
パートII をお読みください。 これは、攻撃者にデータベースを攻撃するよう誘惑するチャニポットネットワーク(図1)のデバイスを記述し、その方法を学習し、保護を改善します。
図 1. StickyDBのネットワーク環境最近、PostgreSQLサーバーの1つに対する攻撃中に興味深い手法を発見しました。 データベースに入った後、攻撃者はダウンロードされたイメージの組み込みバイナリからペイロードを作成し、ペイロードをディスクに保存し、それらを起動し続けました。 最近よくあるように、攻撃者はMoneroをマイニングするためにサーバーリソースを押収しました。 これで十分ではないかのように、
攻撃ベクトルはスカーレット・ヨハンソンの写真でした 。 それでは大丈夫です 仕組みを見てみましょう!
リモートコード実行とDAM保護バイパス
他の一般的なデータベースと同様に、PostgreSQLにはOSとの対話を容易にする
メタスプロイモジュールがあります。 ここでは標準的な方法が使用されます-実行時に
lo_export関数を使用してバイナリをディスクに
フラッシュすることによりペイロードを作成します。 モジュールの小さな変更の1つは、直接呼び出しの代わりに
pg_procディレクトリのエントリとして
lo_export関数を導入したこと
です 。 これは、
lo_exportなどの特権操作を厳密に監視する一部のデータベース監査監視システム(DAM)による検出を回避するために行われます。 したがって、
obj6440002537は本質的に
lo_exportの間接呼び出し
です (図2)。
図 2.間接呼び出しlo_exportによる回避の手法OK、データベースは制御されています。 そして、あなたのGPUは何ですか?
攻撃者は、1つの単純な関数
fun6440002537
でローカルシステムコマンドを実行できるように
fun6440002537
。 このSQL関数は、
tmp406001440
(
sqlmapprojectに基づくバイナリファイル)の小さなエクスポート関数であるC言語関数
sys_eval
を呼び出すためのラッパーです。これは通常、シェルコマンドを呼び出すためのプロキシとして使用されます。
それでは、次の攻撃ステップは何ですか? 少し知性。 ハッカーは、
lshw -c videoコマンドを実行してGPUに関する情報を取得し、次に
cat / proc / cpuinfoを実行してプロセッサに関する情報を取得します(図3-4)。 一見奇妙に思えますが、最終的な目標がお好みの暗号通貨をもっと取得することである場合、そのようなチェックは理にかなっていますよね?
図 3. GPU情報を表示する
図 4. CPU情報を表示するこれまでに、攻撃者はデータベースにアクセスし、リモートコード実行チャネルをインストールし、DAMソリューションをバイパスして、システムの詳細について学習しました。 これですべての準備が整いました...スカーレット・ヨハンソンの写真をアップロードしますか?! 待って、何?
スカーレット・ヨハンソンの写真を装ったマルウェア
攻撃者はますます創造性を発揮していると言わざるを得ません。
この場合、攻撃者は悪意のあるコードの新しいサンプルをダウンロードすることを望んだため、通常の無料の写真ホスティング
imagehousing.comに置きました 。 ただし、ペイロードはバイナリ形式である必要があります。 単にバイナリの名前を.PNG形式に変更した場合、ファイルは、表示できない無効な画像として写真ホスティングにアップロードするときにテストに合格しません。 ファイルの名前を変更する代わりに、
攻撃者は悪意のあるバイナリコードを美しいスカーレットヨハンソンの実際の写真に追加しました (図5)。 したがって、ダウンロードは成功します。画像は表示可能で、良性のようで、ペイロードはまだそこにあります。
図 5.ペイロード。 開くと、普通の画像のように見えます。 心配しないでください-ここで写真はきれいです、それは確かです!バイナリコードを参照してください。 彼は彼女の左肘の下にいます! :)
imagehousing.comに問題について報告しました-画像は削除されました。
写真のアップロードから暗号マイニングへ
そのため、
wgetコマンドを使用すると、ペイロードを
含む画像(
art-981754.png )を簡単にダウンロードできました。 写真から実行可能ファイルを抽出するには、
dd (データ複製)コマンドを使用します。 次に、実行許可が設定されます。実際には、作成された
x4060014400ファイルに対する完全な許可(
chmod 777 )が設定されます。 最後のステップは、この新しく抽出されたペイロードを実行することです。
図 6:SQLツールを使用して画像をダウンロードし、バイナリを抽出して実行する方法x4060014400ファイルは、
s4060014400という別のバイナリを作成します。 そのタスクは、プール
https://monero.crypto-pool.fr/、IP 163.172.226.218(図7)でMonero(XMR)をマイニングすることです。 これまでに、このMoneroアドレスに90,000ドルを超える312.5を超えるXMRが転送されました。
4BBgotjSkvBjgx8SG6hmmhEP3RoeHNei9mz2iqwhws8wefvwuvi6keplwdfnx6guiq5451fv2soxod7rhzqhqtvbdtfl8xs
図 7. Moneroのマイニングを開始するSQLステートメントもちろん、仕事が終わったら、トラックをカバーする必要があります。
図 8.トレースのクリーニング攻撃者の観点から、ミッションは完了しました!
アンチウイルスはこれらの悪意のある写真に反応しますか?
GoogleのVirusTotalを使用して、この攻撃で60近いウイルス対策が3つの異なる形式の暗号マイナーにどのように応答するかをテストしました。 結果:
- URL: 1つのアンチウイルスが反応しました(図9)
- 画像ファイル:隠された暗号マイナーについて警告された3つのアンチウイルス (図10)
- 抽出された暗号マイナー:18個のアンチウイルスによって検出されました(図11)
図 9. 1つのアンチウイルスが悪意のあるURLに応答しました
図 10. 3つのアンチウイルスが悪意のあるイメージに反応しました
図 11. 18のアンチウイルスが暗号マイナーを発見しましたバイナリを通常のファイル(画像、ドキュメント)に追加するトリックは非常に古い方法ですが、それでもほとんどのウイルス対策をバイパスできます。 これは本当に衝撃的な事実です。
このようなミュータントファイルの作成は、1行で簡単に行えます。
Linux: cat myExecutableFile >> myImageFile.png
Windows: myExecutableFile.exe >> myImageFile.pngと入力します攻撃者はどのようにしてPostgreSQLデータベースを見つけるのですか?
攻撃者が既にローカルネットワーク内にいる場合、
Nmapなどの検出ツールを使用して、ドメイン上のPostgreSQLインスタンスを見つけることができます。 しかし、より単純な目標を見つけることはできますか? 外部の世界に開かれたPostgreSQLデータベースはどうですか? これは推奨されないことが知られていますが、そのようなデータベースは存在しますか? ええと...実際、はい、
それらの少なくとも710,000は 、AWSでまとめ
てホストされています(図12)。 そしてそれらを
初段から初歩的に見つけてください。 そのため、攻撃者は簡単にリストを取得し、デフォルトの
postgresユーザーのパスワードブルートフォースを実行し、ログインして、説明されている方法のいくつかを適用できます。
図 パブリックIPアドレスを持つ12.710千のPostgreSQLインスタンス。 イラスト:shodan.ioこのシリーズの次の記事では、他の攻撃について説明します。 最後の記事は保護に専念しますが、この脅威を回避する方法に関する簡単なヒントを以下に示します。
- lo_exportへの直接呼び出し、またはpg_procのエントリを介した間接呼び出しに注意してください 。
- Cのバイナリにアクセスする関数に注意してください(図2を参照)。
- ファイアウォールを使用して、データベースからインターネットへの送信ネットワークトラフィックをブロックします。
- データベースにパブリックIPアドレスが割り当てられていないことを確認してください。 その場合は、データベースと対話するホスト(アプリケーションサーバーまたはDBAクライアント)のみにアクセスを制限してください。