FreeIPA Pentesting
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
FreeIPA é uma alternativa de código aberto ao Active Directory da Microsoft, principalmente para ambientes Unix. Ele combina um diretório LDAP completo com um Centro de Distribuição de Chaves Kerberos do MIT para gerenciamento semelhante ao Active Directory. Utilizando o Sistema de Certificados Dogtag para gerenciamento de certificados CA e RA, suporta autenticação multifatorial, incluindo cartões inteligentes. O SSSD está integrado para processos de autenticação Unix.
O arquivo em /etc/krb5.conf
é onde as informações do cliente Kerberos, necessárias para o registro no domínio, são armazenadas. Isso inclui locais de KDCs e servidores administrativos, configurações padrão e mapeamentos.
As configurações padrão para clientes e servidores IPA são definidas no arquivo localizado em /etc/ipa/default.conf
.
Hosts dentro do domínio devem ter um arquivo krb5.keytab
em /etc/krb5.keytab
para processos de autenticação.
Várias variáveis de ambiente (KRB5CCNAME
, KRB5_KTNAME
, KRB5_CONFIG
, KRB5_KDC_PROFILE
, KRB5RCACHETYPE
, KRB5RCACHEDIR
, KRB5_TRACE
, KRB5_CLIENT_KTNAME
, KPROP_PORT
) são usadas para apontar para arquivos e configurações específicas relevantes para a autenticação Kerberos.
Ferramentas como ipa
, kdestroy
, kinit
, klist
, kpasswd
, ksu
, kswitch
e kvno
são centrais para gerenciar domínios FreeIPA, lidando com tickets Kerberos, alterando senhas e adquirindo tickets de serviço, entre outras funcionalidades.
Uma ilustração é fornecida para representar uma configuração típica de servidor FreeIPA.
A autenticação no FreeIPA, aproveitando o Kerberos, espelha a do Active Directory. O acesso aos recursos do domínio requer um ticket Kerberos válido, que pode ser armazenado em vários locais dependendo da configuração do domínio FreeIPA.
Os arquivos CCACHE, armazenados tipicamente em /tmp
com permissões 600, são formatos binários para armazenar credenciais Kerberos, importantes para autenticação sem a senha em texto claro do usuário devido à sua portabilidade. A análise de um ticket CCACHE pode ser feita usando o comando klist
, e reutilizar um Ticket CCACHE válido envolve exportar KRB5CCNAME
para o caminho do arquivo do ticket.
Alternativamente, os Tickets CCACHE podem ser armazenados no keyring do Linux, oferecendo mais controle sobre o gerenciamento de tickets. O escopo do armazenamento de tickets varia (KEYRING:name
, KEYRING:process:name
, KEYRING:thread:name
, KEYRING:session:name
, KEYRING:persistent:uidnumber
), com klist
capaz de analisar essas informações para o usuário. No entanto, reutilizar um Ticket CCACHE do keyring Unix pode apresentar desafios, com ferramentas como Tickey disponíveis para extrair tickets Kerberos.
Os arquivos keytab, contendo principais Kerberos e chaves criptografadas, são críticos para obter tickets de concessão de tickets válidos (TGT) sem precisar da senha do principal. A análise e reutilização de credenciais de arquivos keytab podem ser facilmente realizadas com utilitários como klist
e scripts como KeytabParser.
Você pode encontrar mais informações sobre como usar tickets no linux no seguinte link:
Linux Active DirectoryVocê pode realizar a enumeração via ldap e outras ferramentas binárias, ou conectando-se à página da web na porta 443 do servidor FreeIPA.
É possível criar hosts, usuários e grupos. Hosts e usuários são organizados em contêineres chamados “Grupos de Hosts” e “Grupos de Usuários”, respectivamente. Estes são semelhantes às Unidades Organizacionais (OU).
Por padrão, no FreeIPA, o servidor LDAP permite vínculos anônimos, e uma grande quantidade de dados é enumerável não autenticada. Isso pode enumerar todos os dados disponíveis não autenticados:
Para obter mais informações, você precisa usar uma sessão autenticada (verifique a seção de Autenticação para aprender como preparar uma sessão autenticada).
De uma máquina unida ao domínio, você poderá usar binaries instalados para enumerar o domínio:
O usuário admin do FreeIPA é o equivalente aos administradores de domínio do AD.
O usuário root do servidor IPA tem acesso aos hashes de senha.
O hash de senha de um usuário é armazenado como base64 no atributo “userPassword”. Esse hash pode ser SSHA512 (versões antigas do FreeIPA) ou PBKDF2_SHA256.
O Nthash da senha é armazenado como base64 em “ipaNTHash” se o sistema tiver integração com AD.
Para quebrar esses hashes:
• Se o FreeIPA estiver integrado com o AD, o ipaNTHash é fácil de quebrar: Você deve decodificar base64 -> re-encodificá-lo como ASCII hex -> John The Ripper ou hashcat podem ajudá-lo a quebrá-lo rapidamente.
• Se uma versão antiga do FreeIPA for usada, então SSHA512 é utilizado: Você deve decodificar base64 -> encontrar o hash SSHA512 -> John The Ripper ou hashcat podem ajudá-lo a quebrá-lo.
• Se uma nova versão do FreeIPA for usada, então PBKDF2_SHA256 é utilizado: Você deve decodificar base64 -> encontrar PBKDF2_SHA256 -> seu tamanho é 256 bytes. John pode trabalhar com 256 bits (32 bytes) -> SHA-265 é usado como a função pseudo-aleatória, o tamanho do bloco é 32 bytes -> você pode usar apenas os primeiros 256 bits do nosso hash PBKDF2_SHA256 -> John The Ripper ou hashcat podem ajudá-lo a quebrá-lo.
Para extrair os hashes, você precisa ser root no servidor FreeIPA, onde você pode usar a ferramenta dbscan
para extraí-los:
Existem regras que concedem permissões específicas a usuários ou hosts sobre recursos (hosts, serviços, grupos de serviços...)
FreeIPA permite o controle centralizado sobre sudo permissions através de sudo-rules. Essas regras permitem ou limitam a execução de comandos com sudo em hosts dentro do domínio. Um atacante poderia potencialmente identificar os hosts aplicáveis, usuários e comandos permitidos examinando esses conjuntos de regras.
Uma função é composta por várias privilegios, cada um dos quais abrange uma coleção de permissões. Essas funções podem ser atribuídas a Usuários, Grupos de Usuários, Hosts, Grupos de Hosts e Serviços. Por exemplo, considere a função padrão “Administrador de Usuários” no FreeIPA para exemplificar essa estrutura.
A função Administrador de Usuários
tem esses privilégios:
Administradores de Usuários
Administradores de Grupos
Administradores de Usuários de Estágio
Com os seguintes comandos, é possível enumerar as funções, privilégios e permissões:
Em https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e você pode encontrar um exemplo simples de como abusar de algumas permissões para comprometer o domínio.
Se você pode criar um novo usuário com o nome root
, você pode se passar por ele e será capaz de SSH em qualquer máquina como root.
ISSO FOI CORRIGIDO.
Você pode verificar uma explicação detalhada em https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)