커버로스팅이 작동하는 이유를 이해하려면 먼저 커버로스의 기본 사항을 이해해야 합니다.
커버로스는 사용자 및 서비스(예: 앱, 데이터베이스 및 서버)가 Active Directory 및 기타 도메인 내에서 안전하게 인증하고 통신할 수 있도록 하는 인증 프로토콜입니다.
커버로스 인증 프로세스는 티켓팅 시스템을 사용합니다. 이 시스템의 중심에는 네트워크의 도메인 컨트롤러에서 작동하는 키 배포 센터(KDC)가 있습니다.
KDC는 본질적으로 도메인의 게이트키퍼 역할을 합니다. 네트워크에서 사용자와 서비스를 인증하고 티켓을 발행합니다. 티켓은 사용자의 ID를 증명하고 네트워크의 다른 리소스에 액세스할 수 있도록 하는 자격 증명입니다. 사용자와 서비스는 이러한 티켓을 교환하여 서로를 인증합니다.
사용자가 도메인에 로그인하면 먼저 KDC로 인증하고 티켓 부여 티켓(TGT)을 받습니다. 이 TGT를 통해 사용자는 도메인 서비스에 대한 액세스를 요청할 수 있습니다.
사용자가 서비스에 액세스하려는 경우 KDC의 티켓 부여 서비스(TGS)에 요청을 보냅니다. TGT는 사용자의 ID를 보증하기 위해 이 요청과 함께 제공됩니다.
이에 대한 응답으로 KDC는 서비스 계정 비밀번호를 사용하여 암호화된 'TGS 티켓'이라고도 하는 서비스 티켓을 발급합니다. 이는 대상 서비스만 사용자의 액세스 요청을 검증할 수 있도록 하기 위한 프로세스입니다. 사용자가 이 서비스 티켓을 대상 서비스에 제시하면 대상 서비스는 사용자를 인증하고 보안 세션을 시작합니다.
커버로스 설계에는 커버로스팅이 허용되는 몇 가지 세부 사항이 있습니다.
첫째, KDC는 사용자가 서비스에 액세스할 수 있는 권한이 있는지 여부를 확인하지 않습니다. 모든 사용자는 모든 서비스에 대한 티켓을 요청할 수 있습니다. 권한을 적용하고 권한이 없는 사용자를 차단하는 것은 개별 서비스의 몫입니다. 따라서 해커는 도메인 관리자나 기타 권한이 있는 사용자의 계정을 탈취할 필요가 없습니다. 손상된 계정은 모두 작동합니다.
둘째, 커버로스 도메인의 각 서비스는 도메인에서 서비스 실행을 담당하는 서비스 계정과 연결되어야 합니다. 서비스 계정을 통해 커버로스는 서비스를 인증하고, 서비스 티켓을 발급하고, 보안 제어를 시행할 수 있습니다. 또한 이러한 계정은 높은 권한을 갖는 경향이 있기 때문에 해커에게 표적이 될 수 있습니다.
셋째, 커버로스 티켓은 연결된 계정의 비밀번호 해시를 키로 사용하여 암호화됩니다. 커버로스팅의 경우 중요한 것은 서비스 티켓이 관련 서비스 계정의 비밀번호 해시를 사용한다는 점입니다.
계정 비밀번호는 KDC 및 관련 서비스만 해당 비밀번호를 알아야 하기 때문에 편리한 대칭 암호화 키로 설정됩니다. 그러나 티켓은 비밀번호 해시를 사용하여 암호화되기 때문에 해커는 티켓의 암호화를 해독하여 서비스 계정 비밀번호를 리버스 엔지니어링할 수 있습니다.
또한 수동으로 구성된 서비스 계정에는 '비밀번호가 만료되지 않음' 플래그가 활성화되어 있는 경우가 많습니다. 이는 오래된 네트워크에서는 서비스 계정이 오래된 보안 지침을 따르는 매우 오래된 비밀번호를 사용하기 때문에 쉽게 해독될 수 있음을 의미할 수 있습니다.