MITRE ATT&CK Evaluations (2022)の個人的な結果検証 その2 | reverse-eg-mal-memoのブログ

reverse-eg-mal-memoのブログ

サイバーセキュリティに関して、あれこれとメモするという、チラシの裏的存在。
medium(英語):https://sachiel-archangel.medium.com/

Mitre Engenuity Att&ck Evaluations 2022 のシナリオ

今回のシナリオは、「Wizard Spider」によるRyukランサムウェアによる攻撃と、「Sandworm」によるNotPetyaとみられるシステム破壊型マルウェアによる攻撃が主なシナリオです。
例年は攻撃のシナリオについても公式が解説している・・・のですが、今年は2022年5月4日時点では、それらしい記事は見つかりませんでした。
シナリオが分からないと、個別の検知も意味が分かりにくい・・・ということで、検知しているルールとその流れから、概ねのシナリオを逆算的に推測してみました。
このあたり、間違いや解釈違いもありそうなので、その点はご了承ください。
 
 

一般の人でも分かりそうなレベルの超ざっくり解説

シナリオについて、小難しいことを書いても分からない、という方もいるかもしれないので、まずは可能な限りざっくりとした説明をしてみます。
(これで分からないと言われたらどうしようか・・・。)
 

シナリオ1 Wizard Spiderによるランサムウェア攻撃

  1. マルウェア感染目的の不審なWordファイルを開いちゃったことでマルウェア感染してしまったケース。日本でも、Emotetが流行っているけど、あれと同じ感じの感染原因。
  2. パソコンの電源を切ったり再起動しても、自動的にマルウェアも起動するように細工しちゃう。
  3. マルウェア感染した端末のメールアドレスやパスワードを盗んじゃう。
  4. 会社内の他のパソコンにも感染させるため、通信をつかってログインしちゃう。
  5. 通信を使ってログインされたパソコンのパソコン名とかの環境情報も盗んじゃう。
  6. パスワードを盗むために、ADサーバから「サービスチケット」というものを取得する。これを頑張って解読すれば、ID、パスワードがわかることがあるらしい。
  7. さらに別のパソコンにも通信を使ってログインし、マルウェアに感染させちゃう。
  8. そのパソコンの情報を収集するために、色んなコマンドもつかっちゃう。コマンドはOSに標準についているものなので、マルウェアではないよ。
  9. アンチウィルスのようなサイバーセキュリティのソフトウェアを止めたり、色々なファイルに不正アクセスできるようにアクセス権を変えたり、バックアップを削除したりしちゃう。
  10. 実際にファイル暗号化して、身代金を脅迫しちゃう。
 

シナリオ2 Sandwormによるシステム破壊攻撃

  1. 管理でよく使う方法でWebサーバにログインし、「Webshell」というコマンドとかを実行できるWebページを勝手に追加しちゃう。ID、パスワードは事前にどっかから漏れていたらしい。
  2. 勝手に追加したWebページにアクセスし、色んなコマンドを実行してサーバの情報を集めちゃう。コマンドはOSに標準についているものなので、マルウェアではないよ。
  3. Webサーバにマルウェアをダウンロードし、何でもできちゃう「管理者権限」で実行しちゃう。
  4. Webサーバの電源を切ったり再起動しても、自動的にマルウェアも起動するように細工しちゃう。また、「https」という方法でWebサーバが通信を暗号化しているけど、その鍵情報を盗んじゃう。
  5. Webサーバから社内のWindowsパソコンに通信をつかってログインしちゃう。さらに、このWindowsパソコンをマルウェア感染させ、攻撃者のパソコンに接続させちゃう。
  6. マルウェア感染しちゃったパソコンのパソコン名とかの環境情報を盗んじゃう。
  7. パソコンにさらに別のマルウェアを感染させ、パスワードを色んな方法で盗んじゃう。
  8. さらに別のパソコンに通信をつかってログインしちゃう。そしてマルウェアをダウンロードさせちゃう。
  9. ダウンロードしたマルウェアを実行後、さらにさらに別のパソコンにもマルウェアを感染させちゃう。マルウェアはファイルを暗号化したりログを消したりしてパソコンのOSが壊れるような攻撃をしたあと、パソコンを再起動させちゃう。パソコンは再起動でエラーになるので、これでパソコンが使えなくなっちゃう。
 
かなりデフォルメ&想像で補っている(だって公式に書いてないもん)ところもありますが、大体こんな感じだと理解してください。
それぞれのシナリオでは、最後に本来の目的を実行している一方、途中で被害を拡大させるために情報収集や感染拡大をしているのが特徴です。
シナリオ1の流れで明確には分からなかったですが、最近のランサムウェアは「二重脅迫」を行うことも多く、攻撃者の端末と通信を確立した際に暗号化される前のファイルを送っているかもしれません。
 
 

もうちょっと専門的な用語も含めた解説

上のような流れですが、(流石に雑すぎるので)もうちょっと専門的な用語や根拠等を含めて書いておきます。
それぞれの細目は次の記事で書く予定です。
 

シナリオ1 Wizard Spiderによるランサムウェア攻撃

  1. Officeファイルによるマルウェア感染
    • 被害端末AはWinWordで.docm形式のファイルを開く。
    • AutoOpen()でマクロが実行されadb.txtをダウンロードし、cmd.exeを用いてadb.vbsを実行する。
    • adb.vbsはWin32_Process経由でpowershellを実行し、adb.dllをダウンロードし、rundll32.exeで実行する。
    • rundll32.exeは攻撃者端末(192.168.0.4)との通信を確立する。
  2. 永続化
    • RegSetValueExA() APIを利用し、レジストリの自動実行のパスにキー「blbdigital」でrundll.exeによるdllの実行を追加することで永続化する。
  3. 認証情報を対象とした情報窃盗
    • マルウェアの処理内でRtlGetVersion(), GetNativeSystemInfo(), RtlGetNtProductType(), CreateToolhelp32Snapshot()を使用する。
    • Outlook.dllをダウンロードする。
    • cmd.exeを経由してpowershellを実行し、Outlookのパスワードの捜索、Outlookからの「SenderEmailAddress」の読み込みを行う。
  4. RDPによるリモートアクセスおよびコネクトバック確立
    • 攻撃者はユーザ「bill」で、攻撃者端末(192.168.0.4)から被害端末B(10.0.0.8)にRDPでリモートログイン。
    • uxtheme.exeをダウンロードし、これを実行して攻撃者端末(192.168.0.4)へポート447で接続してコネクトバックを確立(プロトコルはHTTP)。
  5. 環境情報収集
    • 攻撃者はcmd.exeを用いて以下のコマンドで情報を収集。
    • systeminfo, sc query, net user, net user /domain, ipconfig, netstat, net /config, nltest /domain_trusts /all_trusts, whoami
  6. 追加マルウェアのダウンロードおよびケルベロス認証のサービスチケット取得
    • uxtheme.exeはrubeus.exeをダウンロードし、cmd.exeがコマンドライン"rubeus.exe kerberoast /domain:oz.local"で実行。
    • kerberoastingでの解析を攻撃者側で行う想定のシナリオだと思われる。
    • 参考:https://github.com/GhostPack/Rubeus
  7. RDPによるリモートアクセスおよびマルウェア感染
    • 攻撃者はユーザ「vfleming」で、攻撃者端末(192.168.0.4)から被害端末C(10.0.0.4)にRDP(ポート3389)でリモートログイン。
    • powershell.exeを使用してuxtheme.exeをダウンロード。
    • powershell.exeでSet-ItemPropertyを使用してUserinitレジストリキーを追加。
    • powershell.exeでadfind.exeを実行。
  8. 情報窃盗目的とみられるコマンド実行
    • cmd.exeでvssadmin.exeを実行し、Cドライブのシャドウコピーを作成。
    • cmd.exeでreg.exeを実行し、レジストリのHKLM\SYSTEMを保存。
  9. サービス停止、ファイルアクセス権変更およびバックアップ削除
    • cmd.exeでkill.batをダウンロードし、net stop, sc config, taskkillなどでサービスを停止(恐らくバッチ実行)。
    • icacls.exeでCドライブ、Zドライブの特定のフォルダに/grant Everyone:Fでアクセス権を変更。
    • cmd.exeでwindow.batをダウンロードし、vssadminとdelによってバックアップを削除(恐らくバッチ実行)。
  10. Ryukランサムウェアのダウンロードおよび実行
    • cmd.exe でマルウェアをC:\Users\Public\ryuk.exeへダウンロード。
    • ryuk.exeはAdjustTokenPrivileges() APIでSE_PRIVILEGE_ENABLEDを加えるようトークンを編集。
    • ryuk.exeはCreateToolhelp32Snapshot() APIを実行。
    • ryuk.exeはWriteProcessMemory() API と CreateRemoteThread() APIを用いてnotepad.exeにプロセスをインジェクション。
    • ryuk.exeはGetLogicalDriveStrings() APIとGetDriveType() APIを用いてデバイスを列挙。
    • ryuk.exeはFindFirstFile() APIとFindNextFile() APIを用いてファイルを列挙。
    • notepad.exeにインジェクションされたスレッドはAESとRSAを使用してファイルを暗号化。
 

シナリオ2 Sandwormによるシステム破壊攻撃

  1. Webサーバにリモートアクセス
    • 攻撃者は、攻撃者端末(192.168.0.4)から被害端末A(10.0.1.5)にSCP(ポート22)でユーザ「fherbert」を用いてログオン。
    • Webshellのペイロードを/tmp/search.phpに設置し、さらに/var/www/htmlにコピーしてポート443経由でのアクセスを可能にさせる。
  2. Webshellを用いた情報収集
    • Websellをもちいたshの利用により、以下のコマンドで被害端末Aの情報を収集。
    • whoami, uname -a, ls -lsahR, cat /etc/passwd
  3. マルウェアのダウンロード、実行およびコネクトバック確立
    • centreon_module_linux_app64を/var/www/html/centreon_module_linux_app64にダウンロード。
    • /bin/backupをroot権限で実行し、さらにこのプロセスからcentreon_module_linux_app64を実行することでroot権限を得る。
    • centreon_module_linux_app64は攻撃者端末(192.168.0.4)に対し、HTTPS(ポート8443)で接続。
  4. 永続化および秘密鍵・公開鍵へのアクセス
    • centreon_module_linux_app64はcrontabを実行する。新たなジョブ登録が目的とみられる。
    • centreon_module_linux_app64は/etc/systemd/system/syslogd.serviceに書き込みを行う。サービス登録が目的とみられる。
    • ユーザ「root」を用いて/etc/shadowと/home/fherbert/.bash_historyを読み込む。
    • centreon_module_linux_app64は/home/fherbert/.ssh/id_rsa(秘密鍵)と/home/fherbert/.ssh/id_rsa.pub(公開鍵)にアクセスする。鍵情報取得目的とみられる。
  5. SMBによるリモートアクセス、永続化およびコネクトバック確立
    • 攻撃者は攻撃者端末(192.168.0.4)から被害端末B(10.0.1.7)にSMBでユーザ「fherbert」を用いてリモートログインする。
    • 被害端末BにマルウェアをC:\Windows\wsmprovav.exeに配布する。
    • サービス形式のマルウェアをC:\Windows(ファイル名不定)に配布する。このファイルを「Windows Check AV」というサービスで登録し、実行する。
    • wsmprovav.exeはreg.exeを用いて、自動起動できるようSecurityHealthという名称で登録する。
    • rundll32.exeを利用してwsmprovav.dllを実行し、攻撃者端末(192.168.0.4)へHTTPSで接続。
  6. 環境情報収集
    • rundll32.exeによって実行されたマルウェアは、以下の方法で被害端末Bの端末情報を収集する。
    • user.Current()を実行、HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersionを検索、Cドライブのファイルリストを取得、netstat.exeを実行。
  7. 認証情報収集
    • rundll32.exeはoradump.exeを作成する(元データがマルウェア内に既に含まれているか、追加ダウンロードしたかは不明)。
    • oradump.exeはローカルのブラウザのパスワードを読み取る。
    • rundll32.exeはmslog.exeを作成する(元データがマルウェア内に既に含まれているか、追加ダウンロードしたかは不明)。
    • mslog.exeはキー入力情報を取得するためにSetWindowsHookEx() API、 GetKeyState() APIを実行。
    • mslog.txt(mslog.exeの出力結果とみられる)をRC4で暗号化し、攻撃者端末(192.168.0.4)へHTTPSで送信する。
    • dsquery.exeを実行し、oradump.exe, mslog.exe, mslog.txtを削除する。
  8. RDPによるリモートアクセスおよびマルウェアダウンロード
    • 攻撃者は攻撃者端末(192.168.0.4)から被害端末C(10.0.1.4)にRDPで接続する。
    • powershell.exeでcopyを使用してperfc.datをダウンロードする。
  9. 感染拡大およびマルウェアの実行
    • 被害端末Cはrundll32.exeによりperfc.datを実行する。(パラメータ「#1」)
    • schtask.exeにより、「powershell.exeがRestart-Computerで再起動」する処理を「Restart」タスクとして登録する。
    • rundll32.exeは、GetIpNetTable(), CredEnumerateW() APIを使用する。
    • 被害端末D(10.0.1.8)にperfc.datがコピーされ、WMIを利用してrundll32.exeにより実行する。(パラメータ「#2」)
    • 被害端末Dでは、rundll32.exeはAESでファイルを暗号化していく。
    • wevtutil.exeでイベントログが消去される。
    • fsutil.exeでUSN change journalが消去される。
    • schtask.exeにより「Restart」タスクを実行する。
    • *後半の暗号化や破壊行為が、被害端末C、Dともに行われているかははっきりとは分からず。
 
 
次の記事では、より詳細な項目とID等を記載します。