クリプトマイニング攻撃の手口の巧妙化 #AquaSecurity #DevSecOps #Container #Security
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本ブログは「Aqua Security」社の技術ブログで2019年7月8日に公開された「Crypto-Mining Malware Outsmarting Image Scanners」の日本語翻訳です。
クリプトマイニング攻撃の巧妙化
これまでのクリプトマイニング攻撃では、ハッカーが悪意のある活動をほとんど包み隠さず行っていました。彼らは悪意のあるコンテナを、そのすべてのスクリプトと設定ファイルと共に平文で実行しました。これにより、悪意のある意図の分析がかなり簡単でした。
このようなクリプトマイニング攻撃の 1つが以前に確認され、パブリックDocker Hubリポジトリからzoolu2という名前の悪質なコンテナイメージがpullされていました。それはShodan等といったクリプトマイニングを実行するバイナリを含む多くのイメージが含まれおり、コンテナはマイニングするためにデプロイされている状況がありました。
すべての悪意のあるペイロードを含む実行ファイルは、zoolu2/jauto等のイメージ内のtoolbinフォルダ配下に見つかり、すべてのスクリプトと設定ファイルが平文で記載されていました。そのため、イメージ分析と悪意ある意図の理解が容易でした。
上図のように、ENTRYPOINTスクリプトからクリプトマイナー自体(/toolbin/arwin)と関連スクリプトと実行しているだけです。
手口の巧妙化
我々のハニーポットを使用して、新しいタイプのマルウェアを発見しました。「新しく改良された」マルウェアは、新しいホストにShodanを感染させる一方で、クリプトマイニングするという悪意ある意図を隠そうとします。
新しいタイプのマルウェアjzulu/xautoでは、プロセスは/main配下のスクリプトから実行されます。これは/toolbinフォルダ全体がbase64エンコードされ、tar.gzファイルとして圧縮されており、スクリプト内に埋め込まれています。
すべてのファイルがスクリプトファイル内に隠されているため、これは/toolbin内のファイルを探すイメージスキャンの検出を回避するための良い方法です。
スクリプトが実行されると、toolbinフォルダを解凍し、/mainバイナリを実行します。
フォルダが解凍され、すべてのスクリプトファイルがELFバイナリファイルに変換されていることがわかります。これにより、イメージの分析がより難しくなります。
これは、スクリプトソースを分析対象から隠すために使用される、一般的な難読化の方法です。
この難読化の方法では、攻撃スクリプトを含むバイナリファイルが、gzipで圧縮され、さらにbase64文字列としてエンコードされたものが作成されます。
バイナリは次のシェルコマンドを実行して、その場でスクリプトをデコードして実行します。
echo '%s' | base64 -d | gzip -d | bash -s%s
スクリプトは.gzipで圧縮されており、base64でエンコードされています。
このシェルコマンドを実行することによって、スクリプトを平文で受け取ります。
下図が流れを示すイメージ図となります。
これは典型的な難読化の方法ですが、攻撃者が悪意のあるコンテナを展開する方法が、単純なマイニングを実行するイメージを展開することから、悪意のあるコード自体をパッケージ化して難読化するような傾向を明確に表しています。
次の防衛線:ランライムでの制御
攻撃者は近年セキュリティ上の問題からイメージがスキャンされることが多いことを知っているため、イメージ内のマルウェアスキャンを回避する試みとしてこの攻撃を設計しました。彼らがマルウェアを隠すために使用した方法は特に洗練されたものではありません、それでもほとんどのイメージスキャナはそれを検知することができません。
Aquaを含むいくつかのスキャナでカスタムスクリプトを実行することが可能であり、それらのスクリプトは理論的には圧縮バイナリをスキャン用に解凍することができますが、実際にはこれは非現実的で非常に時間がかかります。攻撃者があまり手間をかけずにパッキング方法を変更することは非常に簡単です。これは新しいマルウェアとその攻撃方法を調査することを必要とします。しかしこれを続けることは根気が必要です。
このようにパッケージ化され難読化されたマルウェアの使用を防ぐためには、ランタイムコントロールを使用する必要があります。Aquaが提供するランタイム制御の1つとして特に効果的なのは、イメージからコンテナへのDrift Preventionです。実行中のコンテナに対する変更をチェックし、それらを元のイメージと比較することによって、コンテナの不変性を強化します。マルウェアの実行時には、特権への昇格、実行可能ファイル、設定ファイル、およびイメージパラメータを変更をしようとするかも知れません。変更は不変の環境では挙動の怪しい行為とみなされ、識別された変更は自動的にブロックされ、アラートと監査イベントが発生します。
最後に
クリプトマイニング攻撃がより洗練され、イメージスキャナを凌駕しようとすると、Drift Preventionなどのランタイム制御による2番目の防御策が必要になります。シグネチャやパターンの検出を使用していないため、現在および今後のクリプトマイニング攻撃やその他の新種のマルウェアを防ぐのに非常に効果的な方法です。