AWS - KMS Enum

htARTE (HackTricks AWS Red Team 전문가)를 통해 AWS 해킹을 제로부터 전문가까지 배우세요!

HackTricks를 지원하는 다른 방법:

KMS - Key Management Service

AWS Key Management Service (AWS KMS)는 사용자가 고객 마스터 키(CMKs)를 생성하고 관리하는 과정을 간소화하는 관리형 서비스로 제공됩니다. 이러한 CMKs는 사용자 데이터의 암호화에 중요합니다. AWS KMS의 주목할만한 기능 중 하나는 CMKs가 주로 하드웨어 보안 모듈(HSMs)로 보호된다는 것으로, 암호화 키의 보호를 강화합니다.

KMS는 대칭 암호화를 사용합니다. 이는 정보를 암호화하여 저장하는 데 사용됩니다(예: S3 내부). 정보를 전송 중에 암호화해야 하는 경우 TLS와 같은 것을 사용해야 합니다.

KMS는 지역별 서비스입니다.

Amazon의 관리자는 귀하의 키에 액세스할 수 없습니다. 그들은 귀하의 키를 복구할 수 없으며 귀하의 키를 암호화하는 데 도움을 주지 않습니다. AWS는 단순히 운영 체제와 해당 응용 프로그램을 관리하며, 우리에게는 암호화 키를 관리하고 해당 키가 사용되는 방식을 관리하는 것이 답입니다.

고객 마스터 키(CMK): 최대 4KB 크기의 데이터를 암호화할 수 있습니다. 일반적으로 DEK(Data Encryption Keys)를 생성, 암호화 및 복호화하는 데 사용됩니다. 그런 다음 DEK가 데이터를 암호화하는 데 사용됩니다.

고객 마스터 키(CMK)는 AWS KMS에서 마스터 키의 논리적 표현입니다. 마스터 키의 식별자 및 다른 메타데이터뿐만 아니라 생성 날짜, 설명 및 키 상태를 포함하여 CMK에는 데이터를 암호화 및 복호화하는 데 사용되는 키 자료가 포함됩니다. CMK를 생성할 때 기본적으로 AWS KMS는 해당 CMK의 키 자료를 생성합니다. 그러나 키 자료 없이 CMK를 생성하고 나중에 자체 키 자료를 해당 CMK로 가져올 수도 있습니다.

마스터 키에는 2가지 유형이 있습니다:

  • AWS 관리 CMKs: 데이터를 암호화하는 데 다른 서비스에서 사용됩니다. 해당 서비스에서 처음으로 암호화를 구현할 때 생성됩니다. 3년마다 회전하며 변경할 수 없습니다.

  • 고객 관리 CMKs: 유연성, 회전, 구성 가능한 액세스 및 키 정책. 키를 활성화하거나 비활성화할 수 있습니다.

Key Policies

이는 KMS에서 키를 사용하고 액세스할 수 있는 사용자를 정의합니다.

기본적으로:

  • KMS 키를 소유한 AWS 계정에 KMS 키에 대한 완전한 액세스 권한을 부여합니다.

다른 AWS 리소스 정책과 달리 AWS KMS 키 정책은 계정 또는 해당 사용자에게 자동으로 권한을 부여하지 않습니다. 계정 관리자에게 권한을 부여하려면 이러한 권한을 제공하는 명시적 명령문이 포함된 키 정책이 있어야 합니다.

  • 계정("AWS": "arn:aws:iam::111122223333:root")에 허용하지 않으면 IAM 권한이 작동하지 않습니다.

  • IAM 정책을 사용하여 KMS 키에 액세스 권한을 부여할 수 있도록 합니다.

이 권한이 없으면 KMS 키에 액세스 권한을 부여하는 IAM 정책은 효과가 없습니다. 그러나 KMS 키에 액세스를 거부하는 IAM 정책은 여전히 효과적입니다.

  • 키가 관리하기 어려워지는 위험을 줄이기 위해 계정 관리자, 삭제할 수 없는 계정 루트 사용자를 포함한 액세스 제어 권한을 부여합니다.

기본 정책 예시:

{
"Sid": "Enable IAM policies",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:*",
"Resource": "*"
}

계정이 허용된 경우 ("arn:aws:iam::111122223333:root") 계정의 주체는 KMS 키를 사용하려면 IAM 권한이 필요합니다. 그러나 예를 들어 역할의 ARN이 Key Policy에서 특별히 허용된 경우 해당 역할은 IAM 권한이 필요하지 않습니다.

정책 세부 정보

정책의 속성:

  • JSON 기반 문서

  • Resource --> 영향을 받는 리소스 ("*"일 수 있음)

  • Action --> kms:Encrypt, kms:Decrypt, kms:CreateGrant ... (권한)

  • Effect --> 허용/거부

  • Principal --> 영향을 받는 arn

  • Conditions (선택 사항) --> 권한 부여 조건

그랜트:

  • 권한을 다른 AWS 주체에게 위임할 수 있습니다. AWS 계정 내에서 AWS KMS API를 사용하여 생성해야 합니다. CMK 식별자, 수령 주체 및 필요한 작업 수준 (Decrypt, Encrypt, GenerateDataKey...)을 지정할 수 있습니다.

  • 그랜트가 생성되면 GrantToken 및 GratID가 발급됩니다.

액세스:

  • 키 정책을 통해 -- 이 존재하는 경우 IAM 정책보다 우선합니다.

  • IAM 정책을 통해

  • 그랜트를 통해

키 관리자

기본적으로 키 관리자는:

  • KMS를 관리할 수 있지만 데이터를 암호화하거나 복호화할 수는 없습니다.

  • 키 관리자 목록에는 IAM 사용자 및 역할 만 추가할 수 있습니다 (그룹은 제외).

  • 외부 CMK를 사용하는 경우 키 관리자는 키 자료를 가져오는 권한이 있습니다.

CMK 회전

  • 동일한 키를 그대로 두면 해당 키로 암호화된 데이터가 더 많아지며, 해당 키가 침해당하면 데이터의 폭발 영역이 위험에 노출됩니다. 또한 키가 활성화된 상태로 두는 기간이 길수록 침해 가능성이 높아집니다.

  • KMS는 고객 키를 매년 365일마다 회전하며 (원하는 경우 수동으로 수행할 수 있음) AWS가 관리하는 키는 매 3년마다 회전하며 이 시간은 변경할 수 없습니다.

  • 이전 키는 회전 이전에 암호화된 데이터를 복호화하기 위해 보관됩니다.

  • 침해가 발생하면 키를 회전해도 위협이 제거되지 않습니다. 그러나 새 데이터는 새 키로 암호화됩니다.

  • CMK비활성 또는 삭제 대기 상태인 경우 KMS는 CMK가 다시 활성화되거나 삭제가 취소될 때까지 키 회전을 수행하지 않습니다.

수동 회전

  • 새 CMK를 생성해야 하며, 그런 다음 새 CMK-ID가 생성되므로 어플리케이션을 업데이트하여 새 CMK-ID를 참조해야 합니다.

  • 이 프로세스를 쉽게 수행하려면 키-ID를 참조하는 별칭을 사용한 다음 별칭이 참조하는 키를 업데이트하면 됩니다.

  • 이전 키를 보관하여 이전에 해당 키로 암호화된 이전 파일을 복호화해야 합니다.

온프레미스 키 인프라에서 키를 가져올 수 있습니다.

기타 관련 KMS 정보

KMS는 월별로 모든 서비스로부터 수신된 암호화/복호화 요청 수에 따라 가격이 책정됩니다.

KMS는 CloudTrail과의 완전한 감사 및 규정 준수 통합을 제공합니다. 여기서 KMS에서 수행된 모든 변경 사항을 감사할 수 있습니다.

KMS 정책을 사용하면 다음을 수행할 수 있습니다:

  • 데이터 키를 생성할 수 있는 사용자 및 이러한 키를 사용할 수 있는 서비스를 제한

  • 시스템 액세스를 암호화 전용, 복호화 전용 또는 둘 다로 제한

  • 키에 대한 시스템 액세스를 지역 간에 활성화할 수 있도록 정의 (KMS를 호스팅하는 지역에서 장애가 발생하면 다른 지역의 시스템 가용성에 영향을 줄 수 있으므로 권장되지 않음).

지역 간에 키를 동기화하거나 이동/복사할 수 없습니다. 지역 간 액세스를 허용하기 위한 규칙만 정의할 수 있습니다.

열거

aws kms list-keys
aws kms list-key-policies --key-id <id>
aws kms list-grants --key-id <id>
aws kms describe-key --key-id <id>
aws kms get-key-policy --key-id <id> --policy-name <name> # Default policy name is "default"
aws kms describe-custom-key-stores

권한 상승

pageAWS - KMS Privesc

사후 공격

pageAWS - KMS Post Exploitation

지속성

pageAWS - KMS Persistence

참고 자료

htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 AWS 해킹을 전문가로 배우세요!

HackTricks를 지원하는 다른 방법:

最終更新