TigerDemon
3차 - AS-REP Roasting 공격 기법 조사 본문
Kerberos : 네트워크 인증 프로토콜로 비밀 키 암호화를 사용하여 클라이언트/ 서버 응용 프로그램에 강력한 인증을 제공학 위해 설계되어있다.
특징
1. 암호화되지 않은 비밀번호는 전송하지 않는다.
2. 세션당 단일 로그인이 필요하며 로그인 시 정의된 자격 증명은 추가 로그인이 필요하지 않고 리소스 간에 전달된다.
3. 신뢰할 수 있는 제3자인 키 배포 센터(KDC)에 의존한다. KDC는 네트워크의 모든 시스템을 알고 있으며 모든 시스템에 신뢰된다.
4. 상호 인증을 수행하며 클라이언트는 서버에 대한 자신의 신원을 증명하고, 서버는 클라이언트에 대한 자신의 신원을 증명한다.

AS : 인증 서버로 Kerberos에서 클라이언트를 확인하기 위해 필요한 서버이다.
위 그림을 단계별로 설명해보겠다.
1단계: 사용자가 워크스테이션에 로그인을 하고 호스트에게 서비스를 요청한다. 워크스테이션은 인증 서버에 TGT 발급을 요청하는 메시지를 보낸다.
2단계: 인증 서버는 사용자 데이터베이스에서 사용자의 액세스 권한을 확인하고 TGT와 세션 키를 생성한다. 인증 서버는 사용자의 암호에서 파생된 키를 사용하여 결과를 암호화하고 메시지를 사용자 워크스테이션에 다시 보낸다. 워크스테이션은 비밀번호를 입력하고 들어오는 메시지를 복호화하기 위해 비밀번호를 사용한다. 복호화가 성공하면 사용자는 서비스 티켓을 요청할 수 있다.
3단계: 사용자가 서비스를 액세스하려면 워크스테이션 클라이언트 응용 프로그램이 클라이언트 이름, 영역 이름 및 타임스탬프를 포함하는 Ticket Granting Service에 요청을 보낸다. 사용자는 2단계에서 받은 세션 키로 암호화된 인증자를 보내어 자신의 신원을 증명한다.
4단계: TGS는 티켓 및 인증자를 복호화하고 요청을 확인한 후 요청된 서버를 위한 티켓을 생성한다. 티켓에는 클라이언트 이름과 선택적으로 클라이언트 IP 주소가 포함된다. 또한 영역이름과 티켓 수명이 포함된다. TGS는 티켓을 사용자 워크스테이션으로 반환한다. 반환된 메시지에는 클라이언트 암호로 암호화된 서버 세션 키 및 서비스 암호로 암호화된 서버 세션 키의 두 복사본이 포함된다.
5단계: 클라이언트 응용 프로그램은 이제 4단계에서 받은 티켓과 인증자를 포함하는 서버에 서비스 요청을 보낸다. 서비스는 세션 키를 복호화하여 요청을 인증한다. 서버는 티켓과 인증자가 일치하는 지 확인한 후 서비스에 액세스를 부여한다. 여기에는 후속 Intel AMT 장치에서 수행되는 권한 부여가 설명되어 있지 않다.
6단계: 상호 인증이 필요한 경우 서버는 서버 인증 메시지로 응답한다.
이때 2단계는 유저 인증을 담당하며 Pre-Authentication 라고 불리는데 이때 클라이언트는 Pre-Authentication 단계를 통해 도메인 컨트롤러로부터 Ticket Granting Ticket (TGT)라는 유저 인증 관련 티켓을 발급받고 나머지 4개의 커버로스 인증 단계에 쓰인다. 아래 사진은 Pre-Authentication가 다음과 같은 요청/응답으로 이루어 진다는 사진이다.

KRB_AS_REQ - Kerberos Authentication Service Request - 클라이언트는 현재 timestamp 를 자신의 해시화된 비밀번호로 암호화한 뒤, 유저 이름과 함께 도메인 컨트롤러에게 건네준다.
KRB_AS_REP - Kerberos Authentication Service Response - 도메인 컨트롤러는 자신의 NTDS.dit 을 통해 유저의 이름을 확인하고, NTDS.dit 안에 있는 유저의 해시화된 비밀번호를 이용해 KRB_AS_REQ 안의 timestamp 복호화를 시도한다. 성공하면 유저가 제대로된 유저 이름 + 비밀번호를 준 것이니, 인증을 허락하고 KRB_AS_REP 응답을 반환한다. 이 응답에는 2가지 메시지가 들어있다. 1) 유저의 해시화된 비밀번호로 암호화된 User Secret (파란색)과 2) 도메인의 KRBTGT 유저의 해시화된 비밀번호로 암호화된 TGT (빨간색) 이 있다.
AS-REPRoasting 공격 진행 방법

1. Do not require Kerberos Preauthentication 설정이 있는 유저의 이름만 알면 비밀번호를 몰라도 KRB_AS_REQ 요청을 보낼 수 있다.
2. 도메인 컨트롤러는 KRB_AS_REP 응답을 반환한다.
3. 이 KRB_AS_REP 응답에는 User Secret 이라는 메시지가 있다. 이는 유저의 해시화된 비밀번호로 암호화 되어있다.
4. 공격자는 KRB_AS_REP 를 메모리상에서 추출해 User Secret 만 따로 빼내온 뒤, 오프라인 복호화 브루트포스를 감행한다. User Secret 메시지가 복호화가 될 때까지 무작위 비밀번호를 해시화 한 뒤 복호화를 진행한다.
5. 유저의 비밀번호가 약한 비밀번호라면 브루트포스에 성공할 것이고, 이제 공격자는 유저의 평문 비밀번호를 얻게된다.
Intel® AMT SDK Implementation and Reference Guide
software.intel.com
https://www.xn--hy1b43d247a.com/credential-access/kerberos/as-rep-roasting#undefined
AS-Rep Roasting - 레드팀 플레이북
KRB_AS_REP - Kerberos Authentication Service Response - 도메인 컨트롤러는 자신의 NTDS.dit 을 통해 유저의 이름을 확인하고, NTDS.dit 안에 있는 유저의 해시화된 비밀번호를 이용해 KRB_AS_REQ 안의 timestamp 복호화
www.xn--hy1b43d247a.com
'2024-SWLUG > Active Directory' 카테고리의 다른 글
| 4차 - AS-REP Roasting 공격 실습 환경 세팅 2 (0) | 2024.02.11 |
|---|---|
| 3차 - [수정] AS-REP Roasting 공격 실습 환경 세팅 1 (0) | 2024.02.04 |
| 2차 - Active Directory 공격 실습 환경 세팅 (1) | 2024.01.28 |
| 2차 - Active Directory 공격 기법 (0) | 2024.01.28 |
| 2차-논문 분석 + 추가 정리 [Active Directory 환경에서의 침해사고 동향 분석 및 활동방안] (2) | 2024.01.28 |