MITRE ATT&CKからセキュリティ対策を読み解く【第4回 探索と水平展開 編】
前回までに、攻撃者は、侵入 → 永続化 → 権限昇格までこぎつけました。
拠点を確保し特権を獲得した攻撃者は、攻撃の最終目標を達成するため、システム内を「探索」し、侵入先のネットワーク内を「水平展開」して手を広げていきます。
今回は、これら二つのTacticsを見ていきましょう。
目次
探索と水平展開
探索と水平展開は、ATT&CK Tactics の中で、以下のように位置づけられています。
Tactics(戦術) | 概要 |
---|---|
初期アクセス(Initial Access) | ネットワークに侵入しようとしている。 |
実行(Execution) | 悪意のあるコードを実行しようとしている。 |
永続化(Persistence) | 不正アクセスする環境を確保しようとしている。 |
権限昇格(Privilege Escalation) | より高いレベルの権限を取得しようとしている。 |
防衛回避(Defense Evasion) | 検知されないようにしようとしている。 |
認証情報アクセス(Credential Access) | アカウント名とパスワードを盗もうとしている。 |
探索(Discovery) | アクセス先の環境を理解しようとしている。 |
水平展開(Lateral Movement) | アクセス先の環境を移動しようとしている。 |
収集(Collection) | 目標に関心のあるデータを収集しようとしている。 |
コマンドアンドコントロール(C&C)(Command and Control) | 侵害されたシステムと通信して制御しようとしている。 |
盗み出し(Exfiltration) | データを盗もうとしている。 |
打撃(Impact) | システムとデータを操作、中断、または破壊しようとしている。 |
探索(TA0007)
探索は、侵入後の攻撃者が、侵入先の環境について調査する活動です。
侵入先マシンのOS、バージョン、セキュリティパッチの状況、インストールされているソフトウェア、接続されているネットワーク、ネットワークの先にある別のマシンなどを次々と探索し、環境内でどのような活動ができるか、どこに水平展開(移動)できるか、どこを見れば欲しい情報を得られるか、などについて調べます。
これらの情報は、次の行動を決定するために利用されます。
探索で使われる ATT&CK Technique
今回も、Windowsで使われる手法に絞って、主なものを紹介します。
探索では、OSに備わっているコマンドが利用されることが多いので、使われるコマンドと共に紹介します。
ATT&CK テクニック | 解説と使われるコマンド |
---|---|
システムの所有者・ユーザーの探索(T1033) |
侵入に成功したユーザーの情報を取得します。 whoami.exe、query.exe、klist.exe |
アカウント(T1087)、グループ(T1069)の探索 |
侵入先の端末ローカル、あるいはADドメイン内でのユーザーやグループの一覧を取得しようとします。 昇格済みの場合は、ドメインやメールサーバなどからアカウント情報を吸い出す可能性があります。
net.exe (net user、net localgroup、net user /domain、net group /domain) |
プロセス(T1057)、アプリケーションウィンドウ(T1010)、システムサービス(T1007)の探索 |
侵入先の端末で動作しているプロセス情報を取得します。 ユーザーが利用しているプロセス、システム全体で起動しているプロセスやサービスの情報を取得し、その中に脆弱性を持つものがないかを探索します。 通常、アプリケーションのウィンドウとそのタイトルを取得するためにはツールを使う必要がありますが、使用しない場合でも、ウィンドウタイトルから編集中のファイル名など、侵入先ユーザーが良く使うファイルを知ることができます。
tasklist.exe(/svc)、sc.exe |
ブラウザのブックマークの探索(T1217) |
ブラウザのブックマークから、社内イントラシステム、クラウドサービス、ソーシャルメディアなど、さらなる探索活動や水平展開するための情報取得を試みます。 dir.exe/tree.exe((ブラウザ毎のブックマークファイルへのアクセス) |
ソフトウェアの探索(T1518) |
侵入先システムにインストールされているソフトウェアと、そのバージョンを調査。脆弱性のあるソフトウェアや、より深く侵入するために使えるソフトウェアがないかを探ります。
dir.exe/tree.exe(%ProgramFilesDir% 以下)、 |
システム情報の探索(T1082) |
侵入先システムのOS、セキュリティパッチの適用状況などを探索します。 システムの脆弱性を見つけたり、より深く侵入が可能か、侵入がうまく行っているかどうかの確認などを目的とします。
systeminfo.exe |
レジストリの参照(T1012) |
レジストリにはシステムとその構成、インストールされているソフトウェアなどの詳細情報が含まれているため、攻撃者にとって有用な情報が含まれている可能性があります。 例えば、端末のセキュリティ設定などの情報から、設定の穴を探す、などが考えられます。
reg.exe、regedit.exe |
ファイルとディレクトリの探索(T1083) |
侵入先のファイルやディレクトリを探索し、権限昇格に使えるアカウント情報が書かれたファイルや、ソフトウェアの脆弱なバージョンのDLLがないかを探します。
dir.exe、tree.exe、 |
周辺機器の探索(T1120) |
侵入先に接続されている周辺機器を探索します。USBメモリなどがあると、後述する水平展開(T1091)に使われる可能性があります。
PowerShell.exe(Get-PnPDevice) |
システムのネットワーク接続(T1049)、システムのネットワーク構成(T1016)の探索 |
侵入先のシステムにどのようなネットワークが接続されているか、VPN接続があるか、ネットワークの先がどのような構成になっているか、などを探索します。 VPN接続のソフトウェアや設定、クラウド環境に接続するための設定などを盗み出すことが目的です。
net.exe (net use、net session)、netsh.exe、netstat.exe |
システム時間(T1124)、システムの位置情報(T1614)の探索 |
侵入先のシステム時間やタイムゾーン、位置(国や地域)などの情報を収集・探索します。 攻撃を実施する時間帯の決定や、位置による攻撃手法の選択のために使われます。
net.exe (net time ¥¥hostname)、 |
パスワードポリシーの探索(T1201) |
ドメインのパスワードポリシーを知ることで、パスワードの総当たり攻撃や辞書型攻撃を行う場合のパターンを絞り込みます。
net.exe(net accounts (/domain))、 |
ネットワーク共有の探索(T1135) |
侵入したマシンや、ネットワーク内のマシンでネットワーク共有されているフォルダを探します。 水平展開などに利用されます。
net.exe (net view \\remotesystem、net share) |
リモートシステムの探索(T1018) |
水平展開に利用できそうな、ネットワーク上に存在する他のマシンを探します。
ping.exe、tracert.exe、 |
ドメイン信頼関係の探索(T1482) |
マルチドメイン環境下で、水平展開できそうな他のドメインとの信頼関係がないかを探索します。 nltest.exe (nltest /domain_trusts) |
ネットワークの盗聴(T1040) |
ホストのネットワークインターフェイスをキャプチャし、水平展開に使えるネットワーク上のサービスを探索します。 tshark.exe、wireshark.exe(サードパーティアプリ) |
ネットワークサービスのスキャン(T1046) |
ネットワーク内の他のホストで実行されているサービス、その脆弱性などを探索するため、侵入先マシンからネットワーク内へのスキャンを行います。 nmap などの送り込まれたツール、イントラネットワーク内のIDS、UTM、ネットワークモニタなどへの侵入による。 |
水平展開(TA0008)
スピアフィッシングでユーザー端末に侵入できたとしても、そこに留まるだけでは情報へのアクセスや、その他の活動が限られてしまいます。
そのため攻撃者は、ネットワーク内の他のマシンに移動し、活動範囲を広げようとします。
これが水平展開(Lateral Movement)です。
上に挙げたような、システムのネットワーク接続(T1049)、システムのネットワーク構成の探索(T1016)、ネットワーク共有の探索(T1135)、リモートシステムの探索(T1018)などの探索活動で発見した他のマシンへの移動を試みます。
移動先でさらなる探索を行い、盗み出せる情報を見つけたり、権限昇格のための資格情報を探したりします。
水平展開で使われる ATT&CK Technique
探索の次に行われそうな水平展開ですが、こちらはOSのコマンドが利用される場合よりは、送り込まれたペイロード(※攻撃者側が持ち込んだ、あるいはそこから派生した暗号解除などをするための実行可能ファイル。
詳細は第2回「永続化」の解説参照)に含まれるスクリプトやコマンドによるものが多くなります。
ATT&CKテクニックとしては、以下の通りです。
ATT&CK テクニック | 解説 |
---|---|
汚染された共有コンテンツ(T1080) |
ペイロードやペイロードを仕込んだ正規のファイルを共有ストレージに配置し、他のマシンに読み込ませます。 ショートカットを偽装して、参照した時点でマルウェアが実行されるようにすることもあります。 |
リモートサービス(T1021) | RDP、SMB、DCOM、SSH、telnet などのサービスにより、リモートシステムに侵入します。 |
リモートサービスのエクスプロイト(T1210) | リモートサービスの持つ脆弱性を突いて、サーバに侵入します。(第3回参照) |
リモートサービスセッションのハイジャック(T1563) | システム権限に昇格したプロセスやサービスから、既存のRDPセッションを乗っ取ります。 |
内部スピアフィッシング(T1534) | 内部のユーザーに対する、内部メールや内部SNSによるスピアフィッシング。 |
リムーバブルメディアを介した複製(T1091) | 物理的なリムーバブルメディアにペイロードを書き込み、自動実行やショートカットで伝播するように仕込みます。 |
ソフトウェア展開ツール(T1072) |
SCCMなどのソフトウェア展開ツールを乗っ取り、組織内にペイロードをばらまきます。 ソフトウェア展開サーバに侵入成功後に、広く水平展開するケースです。 |
ツールの水平展開(T1570) | SMB、RDP、scp、rsync などのプロトコルやツールにより、ペイロードを他のマシンにコピーします。 |
代替認証情報(T1550) | Pass the Hash(T1550.002)、Pass the Ticket(T1550.003) 攻撃など、盗んだ認証チケットにより、認証なしで他のマシンにアクセスします。 |
これらのうち、ファイルのコピーには、cmd.exe、robocopy.exe、xcopy.exe や explorer.exeが、RDP接続にはmstsc.exeが使われる可能性がありますが、その他のテクニックについては、主にペイロードとして送り込まれたプログラムまたはスクリプトが使われます。
また、水平展開にて送り込まれるファイルについても、ペイロードやそれを加工したものになります。
探索、水平展開を検出する方法
探索の検出方法
上記の表にまとめたように、OSに既にあるコマンドが使われることが多いので、それらのコマンドの起動を監視します。(第2回「永続化」での、実行時の検知と似ています)
一般ユーザーの端末では、以下のコマンドの利用頻度は低いと考えられますので、それらの起動とコマンドラインについて、監査ログ等を設定して監視します。
システム管理者、開発者の場合は、これらのコマンドを利用する可能性があるので、ログ収集を分離、もしくはユーザーアカウントにより検出ルールを分離する必要があります。
機械学習などにより、ユーザーの行動パターン(出勤日、テレワーク、日ごろ使うコマンドやアプリ)から逸脱するコマンドの利用パターンを検出するという方法も考えられます。
- cmd.exe
- cscript.exe、wscript.exe
- msinfo32.exe
- net.exe
- nltest.exe
- ping.exe
- PowerShell.exe
- reg.exe
- regedit.exe
- sc.exe
- systeminfo.exe
- tracert.exe
- ver.exe
- wmic.exe
水平展開の検出方法
水平展開の検出方法としては、以下のようになります。
こちらは、OSコマンド利用ではなく、個別の行動パターンの検出になります。
ATT&CK テクニック | 検出 |
---|---|
汚染された共有コンテンツ(T1080) | 共有ストレージへのファイル書き込みのパターン異常(回数、時間帯、ユーザーなど)、ショートカットや隠しファイルの書き込みなどの検出。 |
リモートサービス(T1021) | リモートサービスへのログインのパターン異常の検出(回数、時間帯、ユーザーなど)。 |
リモートサービスのエクスプロイト(T1210) | サービスのログ、クラッシュログ、サービス実行環境の変更(ペイロードの設置とインジェクションの設定) |
リモートサービスセッションのハイジャック(T1563) | サービス経由から起動されるtscon.exe |
内部スピアフィッシング(T1534) | フィッシング(第1回)に準じます。 |
リムーバブルメディアを介した複製(T1091) | リムーバブルメディアへのファイルのコピー、自動実行設定、隠しファイルやショートカットなどの作成の監視 |
ソフトウェア展開ツール(T1072) | ソフトウェア管理ツールのログでの不審なファイルの展開設定、権限を持つアカウントの通常とは異なる時間帯でのログインや操作。 |
ツールの水平展開(T1570) | 汚染された共有コンテンツ(T1080)、リムーバブルメディアを介した複製(T1091)に準じます。 |
代替認証情報(T1550) |
4624/4625 (LogonType:3、Package:NTLM、TargetUser:ANONYMOUS以外、TargetDomain:正当なドメインでないログ) 4769(ステータスコード:0x1F - 無効化されたゴールデンチケットの誤用) |
これらは、取得したログに対して、検出ルールを設定して検出する方法が中心になりそうです。
さらに、水平展開先においては、永続化(第2回)や、権限昇格(第3回)、さらなる探索が行われるので、それらも共に検知することになります。
リスク低減・防御
探索のリスク低減・防御
ATT&CK では、探索と水平展開の防御手段については、ほとんど記載がなく、以下に列挙するものがそのほとんどです。
下記の中にはありませんが、上に挙げた探索活動に使われそうなOSコマンドについて、一般ユーザーが使う必要が無いのであれば、「実行を制限する」というのがまずは対策の第一として考えられます。
- 「ネットワーク共有の一覧取得(T1135)」を防ぐため、Windowsグループ・ポリシーの「Do Not Allow Anonymous Enumeration of SAM Accounts and Shares」セキュリティ設定を有効にして、ネットワーク共有を列挙できるユーザーを制限します
- 「盗聴(T1040)」を防ぐため、トラフィックを暗号化。いわゆるゼロトラストの考え方にも含まれるものです。
- 「ネットワーク構成の探索(T1016)」を防ぐため、イントラ内を侵入検知システム(IDS)で監視します。また、ユーザー端末や、サーバで余計なサービス(通常は利用されない共有など)が動いていないか調べ、不要なものは停止します(これは水平展開の防御にもつながります)。
- 「アカウント名探索(T1087)」を防ぐため、グループ・ポリシーにより、「資格情報ユーザーインターフェイス」を制限します。
- ドメイン信頼関係を必要最小限の設定とし、「ドメイン信頼関係の探索(T1482)」により見つかるドメインを減らします。
- エンドユーザー端末間での「共有フォルダによる水平展開(T1080、T1570など)」を防ぐため、エンドユーザー端末のフォルダの共有を制限します。
- 「共有フォルダ(T1080)」による水平展開、「リムーバブルメディアを介した複製(T1091)」を防ぐため、共有フォルダへのアクセス権を最小限に管理し、一般ユーザーによるリムーバブルメディアの利用を制限します。また、AppLocker などで、端末でのアプリケーションの利用を制限します。
- 「リモートサービス(T1021)」、「リモートサービスのエクスプロイト(T1210)」、「ソフトウェア展開ツール(T1072)」による水平展開を防ぐため、サービスの提供を必要最小限にする、脆弱性について常にチェックしセキュリティパッチを適切に当てる、サービスが動作する権限を必要最小限とする、サービスを管理するためのアカウントを限定し認証を強化する、サービスを管理するためのネットワークセグメントを分離する、などを実施します。
- 「代替認証情報(T1550)」の漏洩や流用を防ぐため、アカウントを細分化し、一つのアカウントで多くのマシンやサービスの管理行わないようにします。たとえ同じ人物が行う場合でも、異なるマシンやサービスを管理する場合は、それぞれ異なるアカウントで行うようにします。Windowsのセキュリティパッチを確実に当て、認証関連の脆弱性をつぶしておきます。また、「Pass the Ticket(T1550.003)」を防ぐため、定期的に組み込みアカウントKRBTGTのパスワードを二回リセットし、既発行のGolden Ticketを無効にします。
これらの防御・リスク低減の方法は、基本的に「きちんと管理しましょう」という内容で、設定と維持も含めて、組織内のドメイン管理者の負担になってしまうのが悩みどころです。
まとめ
探索・水平展開が、前回扱った権限昇格を伴って行われると、攻撃者は非常に広い範囲に拡散して行動できてしまいます。
一つの管理者アカウントで、ネットワーク中のあらゆる設定が可能な状況にあると、そのアカウントがフィッシングにより侵入された場合、組織内のあらゆるところに攻撃者は侵入・攻撃できてしまいます。
いくつかの管理アカウントを使い分けていても、一人の管理者がそのアカウント情報を暗号化されていないファイルに保存したりしていると、攻撃者がそのファイルにアクセスできた時点で、やはり他のマシンに侵入できてしまうことになります。
たとえそのファイルが暗号化されていたとしても、パスワードが8文字程度の脆弱なものであれば、最近のGPUを搭載したPCでは、短時間で解凍できてしまう可能性もあります。
と考えると、手間はかかるものの、必要な対策を日ごろか、継続的に、地道に行うことが、もっとも有効な防御手段なのかもしれません。