ASEC(AhnLab SEcurity intelligence Center)は、Andariel 攻撃グループが侵入プロセスで不正なファイルを利用し、RID Hijacking 攻撃を実行することを確認した。
RID Hijacking は、一般ユーザーやゲストアカウントのように制限された権限を持つアカウントの RID(相対識別子)値を、管理者のように高い権限を持つアカウントの RID 値に改ざんする攻撃手法である。韓国インターネット振興院が公開した「TTPs #11:Operation An Octopus – 中央集中型管理ソリューションを狙う攻撃戦略の分析」でも、Andariel 攻撃グループが OS 内にバックドアアカウントを作成するときに RID Hijacking 手法を使用すると言及した。RID Hijacking 攻撃は非表示アカウントを作成し、そのアカウントの RID 値を変更するため、被害を受けた企業がその振る舞いを検知することが難しい。
本ブログでは、RID Hijacking 攻撃のプロセスとセキュリティインシデントにおいて利用された手法について説明する。
1. RID Hijacking の概念
RID Hijacking は、一般ユーザーまたはゲストアカウントなどの権限が低いアカウントの RID 値を、上位権限(管理者)を持っているアカウントの RID 値に改ざんする攻撃手法である。攻撃者は RID 値を改ざんすることにより、そのアカウントが管理者権限を持っているかのようにシステムを欺くことができる。RID Hijacking を実行する際、攻撃者はさまざまなアカウントを利用することがあり、タイプは以下の通りである。
- システム内に存在する一般ユーザーアカウントを利用
- Guest アカウントを有効化
- 新規アカウントの作成
RID Hijacking は、主に SAM(Security Account Manager)データベースの操作によって行われる。攻撃者は、管理者アカウントを作成、またはパスワードを入手することをしなくても、管理者権限に権限昇格が行えるようになる。
2. RID Hijacking の攻撃プロセス
セキュリティインシデントの事例において確認された RID Hijacking 攻撃のプロセスは以下の通りである。
2.1 SYSTEM 権限昇格
SAM レジストリは、Windows 内の認証や権限付与を管理し、ユーザーアカウント情報を保存しているため、一般の管理者権限ではアクセスができず、SYSTEM 権限がないとアクセスおよび変更ができない。
攻撃者は、侵入したシステムの SYSTEM 権限を取得するために権限昇格ツールである PsExec、JuicyPotato などを使用する。今回の事例において、攻撃者は PsExec を利用してリモートコマンドで不正なファイルを実行しており、その不正なファイルは SYSTEM 権限で動作した。
2.2 ローカルユーザーアカウントの作成
攻撃者は、システムに存在するユーザーアカウントを利用するか、新規アカウントを作成する。今回の事例において、攻撃者はアカウントを作成し RID Hijacking 攻撃を実行した。
攻撃者は、「net user」コマンドを利用してアカウントを作成した。アカウントを作成するとき、アカウント名の末尾に $ を付けると、そのアカウントは非表示属性で作成され、この場合「net user」コマンドではアカウントが確認できず、SAM レジストリで確認が可能となる。
その後、攻撃者は作成したアカウントを「net localgroup」コマンドで Remote Desktop Users グループ、および Administrators グループに追加する。Remote Desktop Users グループにアカウントが追加されると、RDP を利用してそのアカウントでアクセスすることができる。
2.3 レジストリ値の変更による RID の変更
RID Hijacking 攻撃は、SAM レジストリにあるアカウントの RID 値を変更し、Windows OS に変更された RID を認知させる手法である。したがって、攻撃者は RID 値を変更するために SAM レジストリの値を変更する。
Windows OS においてユーザーアカウントに関連するレジストリキーは「HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users」パスに保存されており、ユーザーアカウントの RID は各アカウントの Key 下の「F」値のオフセット 0x30 – 0x33 領域に、リトルエンディアン形式で 4bytes が記録されている。攻撃者は、当該オフセットの値を Hijacking する対象の RID に変更する。
RID 値の変更が完了すると、Windows OS では攻撃者が作成したアカウントをターゲットアカウントの権限として認知し、権限昇格が可能になる。
3. 攻撃者が活用した不正なファイル
Andariel 攻撃グループは、RID Hijacking 攻撃を実行するために、自ら作成した不正なファイルとオープンソースツールを活用した。これらの不正なファイルは、「RID Hijacking の攻撃プロセス」において説明した攻撃プロセスを含んでいるが、一部で機能の違いが確認された。
| Andariel 攻撃グループの不正なファイル | オープンソースツール CreateHiddenAccount | |
| ファイル区分 | 攻撃者が自ら作成 | オープンソース |
| 権限 | システム権限で実行 | 管理者権限で実行 |
| 動作プロセス | 1. アカウントの作成およびグループの追加(リモートデスクトップユーザー) 2. 作成したアカウントおよびターゲットアカウントの RID 参照 3. 作成したアカウントのレジストリ F キーにアクセスおよび ターゲットアカウントの RID 値に変更 4. レジストリ抽出 5. 作成したアカウント削除 6. レジストリ追加 |
1. アカウントの作成およびグループの追加(管理者) 2. regini を利用して SAM レジストリにアクセス 3. 作成したアカウントおよびターゲットアカウントの RID 参照 4. 作成したアカウント削除 5. reg ファイルを作成し、既存ユーザーの レジストリ値をコピー 6. レジストリ追加 7. アカウント有効化 |
| ターゲットアカウント | 被害企業の環境に合わせてハードコーディング | 引数値で指定 |
3.1 SAM レジストリアクセス権限の変更
RID Hijacking は、SAM レジストリキーへのアクセスを必要とするため、SYSTEM 権限が必要である。Andariel 攻撃グループが作成したサンプルは、システム権限がない場合、正常に機能を遂行することができない。オープンソースツールである CreateHiddenAccount は、管理者権限でもすべての機能が動作する。このツールの動作プロセスを分析した結果、Windows の基本プログラムである regini を使用して権限を付与することが確認された。
regini は Microsoft が提供する CLI ツールで、テキストファイルを通じて Windows レジストリを編集できるツールである。テキストファイル内でレジストリキーのパス、および権限を指定すると、レジストリキーの作成、変更、削除、権限変更などを実行できる。CreateHiddenAccount で確認された ini ファイルは、RID Hijacking 攻撃のために必要な SAM レジストリのアクセス権限を変更した。このとき、SAM レジストリのパスにデフォルト権限の17(システム権限)以外に1(管理者権限)オプションを追加して、管理者権限で SAM レジストリキーを変更できるようにした。
3.2 レジストリを追加する振る舞い
Andariel 攻撃グループが使用した不正なファイルは、非表示のアカウントを作成するためにアカウント名に「$」を含めるほかにも、露出を最小にするためのさらなる振る舞いを実行する。まず、RID Hijacking が完了したあと、「reg export」コマンドを利用してアカウント関連のレジストリキーを抽出する。
| 振る舞い | コマンド |
| ユーザー名と RID をマッピングする役割を遂行する キーの抽出 |
reg export hklm\sam\sam\domains\account\ users\names\<アカウント名> names.reg |
| ユーザーアカウントのすべての詳細情報および設定が 含まれたレジストリキーの抽出 |
reg export hklm\sam\sam\domains\account\ users\<アカウントの RID Hex 値> users.reg |
その後、攻撃者アカウントを削除し、抽出した REG ファイルを利用してレジストリキーを再度追加する。このプロセスを経ると、システム内のアカウントリストを確認するコマンド、およびツールでは、そのアカウントが表示されない。ただし、システムを再起動するとコンピューターの管理の「ローカルユーザーとグループ」は、他の方法とは異なりアカウントが再び照会され、アカウントの有無を確認できるようになる。
上記の方法を利用して作成されたアカウントを完全に隠すことはできない。しかし、攻撃者のこのような振る舞いはユーザーに対するアカウントの露出を最小にし、持続性を維持するための意図であると解釈できる。
| 区分 | 区分詳細 | アカウント確認可否 | |
| レジストリ 再登録前 |
レジストリ 再登録後 |
||
| コントロールパネル | ユーザーアカウント | O | X |
| コンピューターの管理 | ローカルユーザーとグループ | O | X |
| コマンドプロンプト(cmd) | net user コマンド | X | X |
| PowerShell | Get-LocalUser コマンド | O | O |
| WMIC | useraccount コマンド | O | O |
| レジストリエディタ | HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Windows |
X | X |
| HKEY_LOCAL_MACHINE\SAM\SAM\ Domains\Account\Users |
O | O | |
IOC 関連情報
MD5
b500a8ffd4907a1dfda985683f1de1df
Categories: APT