# T1558.005 - Ccache Files
> [!info] Técnica Pai
> Esta é uma sub-técnica de [[t1558-steal-or-forge-kerberos-tickets|T1558 - Steal or Forge Kerberos Tickets]]. Tática: [[ta0006-credential-access|Credential Access]].
## Descrição
Adversários podem tentar roubar tickets Kerberos armazenados em arquivos de cache de credenciais (ccache). Esses arquivos são utilizados para armazenamento de curto prazo das credenciais de sessão ativa de um usuário. O arquivo ccache é criado no momento da autenticação do usuário e permite o acesso a múltiplos serviços sem que o usuário precise reinserir credenciais a cada nova requisição - um mecanismo central do protocolo [[kerberos|Kerberos]].
O arquivo de configuração `/etc/krb5.conf` e a variável de ambiente `KRB5CCNAME` são utilizados para definir o local de armazenamento das entradas ccache. No **Linux**, as credenciais são tipicamente armazenadas no diretório `/tmp` com o formato de nomeação `krb5cc_%UID%` ou `krb5.ccache`. No **macOS**, as entradas ccache são armazenadas por padrão em memória com o esquema de nomeação `API:{uuid}`. Tipicamente, os usuários interagem com o armazenamento de tickets usando `kinit` (obtém um Ticket-Granting-Ticket - TGT para o principal), `klist` (lista os tickets obtidos no cache de credenciais) e outros binários nativos.
Adversários podem coletar tickets de arquivos ccache armazenados em disco e autenticar-se como o usuário corrente **sem conhecer a senha** para realizar ataques de [[t1550-003-pass-the-ticket|Pass the Ticket]]. Essas credenciais roubadas também podem ser usadas para se passar por usuários legítimos com privilégios elevados, viabilizando [[ta0004-privilege-escalation|Privilege Escalation]] dentro do ambiente comprometido. Ferramentas como [[s0357-impacket|Impacket]] e Kekeo podem ser utilizadas por adversários para converter arquivos ccache para o formato Windows para movimentação lateral adicional ([[ta0008-lateral-movement|Lateral Movement]]).
No macOS, adversários podem usar ferramentas de código aberto ou o framework Kerberos para interagir com arquivos ccache e extrair TGTs ou Service Tickets por meio de APIs de baixo nível, frequentemente sem deixar rastros evidentes nos logs de segurança convencionais.
> [!warning] Por que isso importa
> Em ambientes corporativos Linux/macOS com integração [[active-directory|Active Directory]] ou serviços Kerberos, a presença de arquivos ccache em `/tmp` representa um vetor direto de roubo de credenciais sem necessidade de comprometer senhas em texto claro.
---
## Como Funciona
O ataque de roubo de ccache segue uma lógica simples: o adversário já tem acesso ao sistema (como usuário local ou via outro comprometimento) e busca elevar privilégios ou mover-se lateralmente sem acionar mecanismos de autenticação baseados em senha.
**Passo a passo técnico:**
1. **Localizar os arquivos ccache**: O adversário executa `ls /tmp/krb5cc_*` ou verifica `echo $KRB5CCNAME` para identificar os arquivos de cache presentes. Cada arquivo corresponde a uma sessão autenticada de um usuário diferente.
2. **Leitura do conteúdo**: Com o comando `klist -c /tmp/krb5cc_1000` (onde `1000` é o UID), o adversário obtém a lista de tickets disponíveis, incluindo o TGT e eventuais Service Tickets já obtidos.
3. **Exfiltração ou uso local**: O adversário pode copiar o arquivo ccache para uma máquina controlada por ele ou simplesmente definir `export KRB5CCNAME=/tmp/krb5cc_1000` para usar as credenciais do usuário alvo na sessão atual.
4. **Execução de comandos autenticados**: Usando [[s0357-impacket|Impacket]] (`psexec.py`, `wmiexec.py`, `smbclient.py`) com o parâmetro `-k`, o adversário autentica-se nos serviços de rede como se fosse o usuário legítimo.
5. **Conversão para Windows (opcional)**: Ferramentas como Kekeo ou `ticket_converter.py` do Impacket convertem o arquivo `.ccache` para o formato `.kirbi` (usado no Windows), permitindo Pass the Ticket em sistemas Windows dentro do mesmo domínio.
> [!tip] Diferencial de Detecção
> O uso de tickets ccache roubados é difícil de distinguir de acessos legítimos - os logs de autenticação mostram o usuário original, não o adversário. Anomalias de horário (acesso fora do expediente) ou geolocalização são sinais importantes.
---
## Attack Flow
```mermaid
graph TB
A["Acesso Inicial ao Sistema Linux/macOS"] --> B["Enumeração de Sessões Ativas"]
B --> C["Localizar Arquivos ccache em /tmp"]
C --> D{"Método de Exploração"}
D --> E["Uso Local - export KRB5CCNAME"]
D --> F["Exfiltração do Arquivo ccache"]
E --> G["Autenticação como Usuário Alvo"]
F --> H["Conversão para .kirbi - Windows"]
G --> I["Lateral Movement via SMB/WMI/SSH"]
H --> J["Pass the Ticket em Ambiente Windows"]
I --> K["Acesso a Recursos Privilegiados"]
J --> K
K --> L["Privilege Escalation / Persistência"]
```
---
## Exemplos de Uso
### Cenário 1 - Servidor Linux com AD Integration
Em ambientes Linux integrados ao [[active-directory|Active Directory]] via SSSD ou Winbind, é comum que usuários de domínio autentiquem-se com tickets Kerberos. Um adversário que compromete uma conta não privilegiada em um servidor Linux pode encontrar tickets de administradores de domínio em `/tmp` - caso esses admins tenham feito login recente na mesma máquina.
```bash
# Enumeração - lista todos os arquivos ccache presentes
ls -la /tmp/krb5cc_*
# Verificação dos tickets disponíveis no arquivo de outro usuário
klist -c /tmp/krb5cc_0
# Definir o ccache roubado como ativo na sessão atual
export KRB5CCNAME=/tmp/krb5cc_0
# Usar Impacket para listar compartilhamentos SMB como o usuário roubado
python3 smbclient.py -k -no-pass DOMINIO/
[email protected]
```
### Cenário 2 - macOS com Kerberos em Ambiente Corporativo
Em sistemas macOS integrados a domínios AD, as credenciais ccache ficam na memória do sistema. Adversários podem usar a API Kerberos nativa ou ferramentas como `KerberosRequest` para extrair TGTs e Service Tickets.
```bash
# Listar tickets no ccache padrão do macOS
klist
# Exportar ticket via ferramenta de terceiros (ex: krb5 tools)
kinit -R # Renovar TGT se ainda válido
```
### Cenário 3 - Kubernetes e Ambientes Cloud
Em clusters [[kubernetes|Kubernetes]] com autenticação Kerberos, os arquivos ccache montados como volumes ou presentes em pods comprometidos podem ser extraídos e utilizados para autenticar na API do cluster ou em serviços de infraestrutura adjacentes.
---
## Detecção
### Sigma Rule - Acesso Anômalo a Arquivos ccache
```yaml
title: Kerberos ccache File Access by Non-Owner Process
status: experimental
description: Detecta processos acessando arquivos ccache Kerberos pertencentes a outros usuários
logsource:
category: file_access
product: linux
detection:
selection:
TargetFilename|startswith: '/tmp/krb5cc_'
filter_owner:
User|contains: '%{file_uid}'
condition: selection and not filter_owner
level: high
tags:
- attack.credential_access
- attack.t1558.005
falsepositives:
- Ferramentas de backup que acessam arquivos de sistema
- Processos de monitoramento com acesso root
```
### Sigma Rule - Exfiltração de Arquivo ccache
```yaml
title: Kerberos ccache File Copy or Transfer
status: experimental
description: Detecta cópia ou transferência de arquivos ccache para fora do sistema
logsource:
category: process_creation
product: linux
detection:
selection:
CommandLine|contains:
- 'krb5cc_'
- '.ccache'
Image|endswith:
- '/cp'
- '/scp'
- '/rsync'
- '/curl'
- '/wget'
condition: selection
level: high
tags:
- attack.credential_access
- attack.exfiltration
- attack.t1558.005
```
### Eventos de Log Relevantes
| Fonte | Evento | Descrição |
|-------|--------|-----------|
| Linux auditd | `openat()` em `/tmp/krb5cc_*` | Acesso a arquivo ccache |
| Linux auditd | `read()` em arquivo ccache | Leitura do conteúdo do ticket |
| Kerberos KDC | TGS-REQ com novo IP | Uso do ticket em localização diferente |
| Active Directory | Event ID 4769 | Requisição de Service Ticket (possível abuso) |
| Active Directory | Event ID 4768 | Autenticação com TGT |
---
## Mitigação
| ID | Mitigação | Descrição |
|----|-----------|-----------|
| M1047 | [[m1047-audit\|M1047 - Audit]] | Habilitar auditd no Linux para monitorar acesso a arquivos ccache em `/tmp`. Configurar regras de auditoria para `openat()` e `read()` em caminhos `/tmp/krb5cc_*`. |
| M1043 | [[m1043-credential-access-protection\|M1043 - Credential Access Protection]] | Configurar Kerberos para usar credenciais armazenadas em keyring do kernel (KEYRING) em vez de arquivos em disco. No Linux, editar `default_ccache_name = KEYRING:persistent:%{uid}` em `/etc/krb5.conf`. |
### Controles Adicionais Recomendados
- **Usar credenciais em memória (KEYRING)**: Configurar `default_ccache_name = KEYRING:persistent:%{uid}` no `krb5.conf` para evitar arquivos em disco
- **Lifetime curto dos tickets**: Reduzir o `ticket_lifetime` no KDC para limitar a jánela de uso de tickets roubados
- **Separação de sessões**: Evitar que administradores de domínio autentiquem-se em servidores de uso geral compartilhados
- **Monitoramento de anomalias Kerberos**: Alertar para uso de tickets em múltiplas origens geográficas ou fora do horário padrão
- **Privilege Access Workstations (PAW)**: Usar estações dedicadas para acesso administrativo, reduzindo exposição de tickets privilegiados
---
## Contexto Brasil/LATAM
A técnica de roubo de ccache é particularmente relevante no contexto brasileiro por razões estruturais:
**Ambientes heterogêneos Linux+AD**: Muitas empresas brasileiras do setor financeiro, governo e telecomúnicações mantêm servidores Linux integrados ao [[active-directory|Active Directory]] para autenticação centralizada. Esses ambientes são alvos prioritários para adversários que buscam credenciais de domínio privilegiadas sem interagir diretamente com os Domain Controllers.
**Grupos de Ameaça Regionais**: Grupos de espionagem com operações documentadas na América Latina - como aqueles associados a campanhas de comprometimento de infraestrutura governamental - utilizam rotineiramente técnicas de [[t1550-003-pass-the-ticket|Pass the Ticket]] após obter acesso inicial a servidores Linux de borda. O roubo de ccache é um passo intermediário frequente nessa cadeia.
**Setor Financeiro Brasileiro**: Os maiores bancos e fintechs brasileiros operam infraestruturas massivas com milhares de servidores Linux. Em compromissos de red team no Brasil, a técnica de coleta de ccache de servidores de aplicação - onde contas de serviço privilegiadas frequentemente têm tickets Kerberos ativos - é um vetor bem documentado.
**Conformidade LGPD**: A exploração desta técnica para acesso não autorizado a sistemas que processam dados pessoais pode caracterizar violação à [[lgpd|Lei Geral de Proteção de Dados (LGPD)]], com implicações legais para as organizações que não implementarem controles adequados de detecção e prevenção.
> [!example] Caso de Referência LATAM
> Em operações de red team documentadas em grandes organizações financeiras da América Latina, servidores de aplicação Linux com integração AD são frequentemente os primeiros pivôs após comprometimento inicial via [[t1566-phishing|phishing]] de credenciais - com tickets ccache de contas de serviço sendo o principal vetor para movimento lateral.
---
## Referências
- [MITRE ATT&CK - T1558.005: Ccache Files](https://attack.mitre.org/techniques/T1558/005/)
- [Impacket - getST.py e uso de ccache](https://github.com/fortra/impacket)
- [Red Teaming Kerberos - Ccache Theft on Linux](https://www.tarlogic.com/blog/how-to-attack-kerberos/)
- [Kerberos Configuration - krb5.conf Reference](https://web.mit.edu/kerberos/krb5-latest/doc/admin/conf_files/krb5_conf.html)
- [Detecting Lateral Movement via Pass the Ticket](https://www.microsoft.com/security/blog/2020/01/06/detecting-pass-the-ticket/)
**Técnicas Relacionadas:** [[t1558-steal-or-forge-kerberos-tickets|T1558]], [[t1550-003-pass-the-ticket|T1550.003]], [[t1021-002-smb-windows-admin-shares|T1021.002]], [[ta0006-credential-access|Credential Access]], [[ta0008-lateral-movement|Lateral Movement]]
---
*Fonte: [MITRE ATT&CK - T1558.005](https://attack.mitre.org/techniques/T1558/005/)*