ESC1
이 페이지와 하위 페이지들에 있는 ADCS와 관련된 개념 및 공격 방식은 모두 SpecterOps 사의 Will Schroeder 분과 Lee Christensen 분이 2021년에 작성하신 "Ceritfied Pre-Owned" 라는 백서를 기반으로 만들어졌습니다. 더 자세하게 알아보고 싶으신 분들은 레퍼런스 섹션의 백서를 참고해주시기 바랍니다.
개념
ADCS의 인증서 양식에 CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT
라는 설정이 존재한다. 이 설정이 되어있는 취약 인증서 양식은 공격자 인증서 서명 요청을 보낼 때 자신이 원하는 유저를 주체로 특정해 보낼 수 있다. 예를 들자면,
Choi -> CA: 저 인증서 서명 요청 드립니다. 근데 SAN (Subject Alternative Name) 특성은 choi가 아니라
Administrator@choi.local
이라는 도메인 관리자로 해주세요.CA -> Choi: 네, 인증서 발급하겠습니다. 요청대로 SAN에는 도메인 관리자 유저 이름을 넣어서 발급해드릴게요.
Choi: 감사합니다. - 일반 도메인 유저에서 도메인 관리자로 권한 상승 성공.
어이가 없을 정도로 간단하고 위험한 설정이지만, 실제로 존재하는 설정이다.
전제 조건
CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT
설정 활성화Manager Approval 설정 비활성화
Authorized Signature 설정 비활성화
해당 인증서 양식에 공격자의 유저가 인증서 발급 권한 존재
CA 서버가 공격자의 유저에게 인증서 발급 권한을 허용
실습
ESC 1 정보 수집
Certipy 를 통해 정보 수집을 한 뒤, ESC1 에서 취약한 인증서 양식을 찾았다. Certipy 의 출력을 살펴본다.
많은 정보가 있지만, ESC1 을 사용하는데 있어 필요한 전제 조건들 4개를 살펴보자.
Enrollee Supplies Subject: True - CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT
설정이 활성화 되어 있다.Requires Manager Approval: False - 비활성화 되어 있다.
Authorized Signature: 0 - 비활성화 되어 있다.
Enrollment Rights -
Choi.local\Domain Users
- CA 서버와 인증서 양식에 공격자의 유저 발급 권한 존재. 공격자 뿐만 아니라 도메인 유저 전체가 이 인증서 양식을 통해 도메인 관리자 인증서를 발급 받을 수 있는 상태다.
공격
Certipy 를 이용해 원하는 타겟 유저의 이름을 SAN 으로 지정해 인증서를 발급 받는다.
2. 발급 받은 인증서는 유저 인증에 사용할 수 있다. 도메인 관리자의 NT 해시를 획득한다.
3. 도메인 관리자의 NT 해시를 이용해 인증한다.
대응 방안
ESC1의 근본적인 문제는 특정 인증서 양식에
CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT
플래그가 활성화 되어 있다는 것이다. 이를 해결한다.프로덕션 서버에서는 충분한 테스트를 거친 뒤 설정을 해제한다.
CA 서버 >
certtmpl.msc
> 인증서 양식 오른쪽 클릭 > Properties >Subject Name
탭 > Supply in Request 설정 해제Supply in Request
가 꼭 필요하다면 Properties > Issuance Requirements > CA Certificate Manager Approval 을 설정해 인증서 관리자 계정이 허락을 해야 인증서가 발급되도록 바꾼다.
레퍼런스
Last updated