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는 주로 Unix 환경을 위한 Microsoft Windows Active Directory의 오픈 소스 대안입니다. Active Directory와 유사한 관리 기능을 위해 MIT Kerberos 키 배포 센터와 완전한 LDAP 디렉토리를 결합합니다. CA 및 RA 인증서 관리를 위해 Dogtag Certificate System을 사용하며, 스마트카드를 포함한 다중 인증을 지원합니다. Unix 인증 프로세스를 위해 SSSD가 통합되어 있습니다.
/etc/krb5.conf
파일은 도메인에 등록하는 데 필요한 Kerberos 클라이언트 정보를 저장합니다. 여기에는 KDC 및 관리 서버의 위치, 기본 설정 및 매핑이 포함됩니다.
IPA 클라이언트 및 서버에 대한 시스템 전체 기본값은 /etc/ipa/default.conf
파일에 설정됩니다.
도메인 내의 호스트는 인증 프로세스를 위해 /etc/krb5.keytab
에 krb5.keytab
파일을 가져야 합니다.
다양한 환경 변수(KRB5CCNAME
, KRB5_KTNAME
, KRB5_CONFIG
, KRB5_KDC_PROFILE
, KRB5RCACHETYPE
, KRB5RCACHEDIR
, KRB5_TRACE
, KRB5_CLIENT_KTNAME
, KPROP_PORT
)는 Kerberos 인증과 관련된 특정 파일 및 설정을 가리키는 데 사용됩니다.
ipa
, kdestroy
, kinit
, klist
, kpasswd
, ksu
, kswitch
, kvno
와 같은 도구는 FreeIPA 도메인을 관리하고 Kerberos 티켓을 처리하며 비밀번호를 변경하고 서비스 티켓을 획득하는 등 여러 기능의 중심입니다.
일반적인 FreeIPA 서버 설정을 나타내는 그림이 제공됩니다.
FreeIPA의 인증은 Kerberos를 활용하여 Active Directory와 유사합니다. 도메인 리소스에 접근하려면 유효한 Kerberos 티켓이 필요하며, 이는 FreeIPA 도메인 구성에 따라 다양한 위치에 저장될 수 있습니다.
CCACHE 파일은 일반적으로 **/tmp
**에 600 권한으로 저장되며, Kerberos 자격 증명을 저장하기 위한 이진 형식으로, 사용자의 평문 비밀번호 없이 인증에 중요합니다. klist
명령을 사용하여 CCACHE 티켓을 구문 분석할 수 있으며, 유효한 CCACHE 티켓을 재사용하려면 KRB5CCNAME
을 티켓 파일의 경로로 내보내야 합니다.
대안으로, CCACHE 티켓은 Linux 키링에 저장할 수 있어 티켓 관리에 대한 더 많은 제어를 제공합니다. 티켓 저장 범위는 (KEYRING:name
, KEYRING:process:name
, KEYRING:thread:name
, KEYRING:session:name
, KEYRING:persistent:uidnumber
)로 다양하며, klist
는 사용자를 위해 이 정보를 구문 분석할 수 있습니다. 그러나 Unix 키링에서 CCACHE 티켓을 재사용하는 것은 어려울 수 있으며, Kerberos 티켓을 추출하기 위해 Tickey와 같은 도구가 제공됩니다.
Kerberos 주체와 암호화된 키를 포함하는 Keytab 파일은 유효한 티켓 부여 티켓(TGT)을 얻는 데 중요하며, 주체의 비밀번호 없이도 가능합니다. Keytab 파일에서 자격 증명을 구문 분석하고 재사용하는 것은 klist
와 KeytabParser와 같은 유틸리티를 사용하여 쉽게 수행할 수 있습니다.
Linux에서 티켓을 사용하는 방법에 대한 더 많은 정보는 다음 링크에서 확인할 수 있습니다:
Linux Active Directoryldap 및 기타 binary 도구를 통해 enumeration을 수행하거나 FreeIPA 서버의 포트 443에 있는 웹 페이지에 연결할 수 있습니다.
호스트, 사용자 및 그룹을 생성할 수 있습니다. 호스트와 사용자는 각각 “Host Groups” 및 “User Groups”라는 컨테이너로 정렬됩니다. 이는 조직 단위(OU)와 유사합니다.
기본적으로 FreeIPA에서 LDAP 서버는 익명 바인드를 허용하며, 많은 데이터가 인증되지 않은 상태에서 열람 가능합니다. 이는 인증되지 않은 모든 데이터를 열람할 수 있습니다:
더 많은 정보를 얻으려면 인증된 세션을 사용해야 합니다 (인증된 세션을 준비하는 방법은 인증 섹션을 확인하세요).
도메인에 가입된 머신에서 설치된 바이너리를 사용하여 도메인을 열거할 수 있습니다:
FreeIPA의 admin 사용자는 AD의 domain admins와 동등합니다.
IPA 서버의 root 사용자는 비밀번호 해시에 접근할 수 있습니다.
사용자의 비밀번호 해시는 “userPassword” 속성에 base64로 저장됩니다. 이 해시는 SSHA512 (구버전 FreeIPA) 또는 PBKDF2_SHA256일 수 있습니다.
시스템이 AD와 통합되어 있으면 비밀번호의 Nthash는 “ipaNTHash”에 base64로 저장됩니다.
이 해시를 크랙하려면:
• FreeIPA가 AD와 통합된 경우, ipaNTHash는 쉽게 크랙할 수 있습니다: base64를 디코드한 후 ASCII 헥스로 재인코딩 -> John The Ripper 또는 hashcat을 사용하여 빠르게 크랙할 수 있습니다.
• 구버전 FreeIPA를 사용하는 경우, SSHA512가 사용됩니다: base64를 디코드한 후 SSHA512 해시를 찾아야 합니다 -> John The Ripper 또는 hashcat을 사용하여 크랙할 수 있습니다.
• 최신 버전의 FreeIPA를 사용하는 경우, PBKDF2_SHA256이 사용됩니다: base64를 디코드한 후 PBKDF2_SHA256을 찾아야 합니다 -> 길이는 256 바이트입니다. John은 256 비트(32 바이트)로 작업할 수 있습니다 -> SHA-265가 의사 난수 함수로 사용되며, 블록 크기는 32 바이트입니다 -> PBKDF2_SHA256 해시의 처음 256 비트만 사용할 수 있습니다 -> John The Ripper 또는 hashcat을 사용하여 크랙할 수 있습니다.
해시를 추출하려면 FreeIPA 서버의 root여야 하며, 그곳에서 dbscan
도구를 사용하여 추출할 수 있습니다:
사용자 또는 호스트에 자원(호스트, 서비스, 서비스 그룹 등)에 대한 특정 권한을 부여하는 규칙입니다.
FreeIPA는 sudo-rules를 통해 sudo 권한에 대한 중앙 집중식 제어를 가능하게 합니다. 이러한 규칙은 도메인 내 호스트에서 sudo로 명령을 실행할 수 있도록 허용하거나 제한합니다. 공격자는 이러한 규칙 세트를 조사하여 적용 가능한 호스트, 사용자 및 허용된 명령을 식별할 수 있습니다.
A role는 다양한 privileges로 구성되며, 각 privilege는 permissions의 모음을 포함합니다. 이러한 역할은 사용자, 사용자 그룹, 호스트, 호스트 그룹 및 서비스에 할당될 수 있습니다. 예를 들어, 이 구조를 설명하기 위해 FreeIPA의 기본 “User Administrator” 역할을 고려해 보십시오.
역할 User Administrator
는 다음과 같은 privileges를 가지고 있습니다:
User Administrators
Group Administrators
Stage User Administrators
다음 명령어를 사용하면 역할, privileges 및 permissions를 열거할 수 있습니다:
https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e에서 도메인을 손상시키기 위해 일부 권한을 악용하는 간단한 예시를 찾을 수 있습니다.
만약 root
라는 이름의 새 사용자를 생성할 수 있다면, 당신은 그를 가장할 수 있으며 어떤 머신에도 root로 SSH 접속할 수 있습니다.
이것은 패치되었습니다.
자세한 설명은 https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b에서 확인할 수 있습니다.
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)