엔지니어링

Dorothy와 Elastic Security로 Okta 통합 가시성 및 탐지 테스트

조직 내 이해 관계자가 요청할 때 로깅 및 경보 기능이 예상대로 작동하고 있다고 자신 있게 보여줄 수 있는 보안 팀은 거의 없습니다. 조직은 자격 증명 및 액세스 관리, 사용자 생산성, 파일 저장 공간과 같은 사용 사례를 지원하기 위해 클라우드 서비스에 더 많이 의존하고 분산되게 되었습니다. 한편 공격자들은 클라우드 환경에까지 운영 능력을 확장하고 있는 실정입니다. 보안 팀이 공격으로부터 조직의 데이터를 보호하기 위해서는 이러한 시스템을 모니터링하여 침해 여부를 파악할 수 있어야 합니다.

Dorothy는 보안 팀이 Okta 싱글 사인온(SSO) 환경에 대한 통합 가시성, 모니터링 및 탐지 기능을 테스트하는 데 도움이 되는 무료 개방형 도구입니다. Dorothy를 사용하여 테스트를 실행하는 방법과 Elastic Security무료 개방형 탐지 규칙을 사용하여 관련성이 높고 의심스러운 행동을 경고하는 방법을 보여드리겠습니다.

Okta SSO란?

잘 모르시는 분들을 위해 소개해 드리자면 Okta SSO는 사용자가 단일 사용자 계정을 사용하여 조직 내 다양한 시스템과 애플리케이션을 인증할 수 있게 해주는 클라우드 기반 자격 증명 관리 솔루션입니다. 최종 사용자에게 열 개 이상의 사용자 이름과 비밀번호 대신 하나만 기억해도 된다고 하면 비밀번호 보안이 취약해질 위험이 줄어들고 시스템 관리자가 강력한 비밀번호 정책을 시행할 수 있게 됩니다. 또한 공격자의 진입 장벽을 높일 수 있는 MFA(멀티 팩터 인증) 정책도 Okta에서 구성할 수 있습니다. 많은 공격자들은 공격 대상의 네트워크나 사용자 계정에 MFA가 적용된 것을 발견하면 이를 건너뛰고 더 쉬운 공격 대상을 찾습니다.

SSO 솔루션은 편리한 사용자 경험을 제공하고 조직의 사이버 보안 위험을 줄일 수 있지만, 많은 시스템과 애플리케이션에 일종의 마스터 키를 제공하는 이러한 중앙 집중식 시스템은 공격자에게 매력적인 공격 대상이 될 수 있습니다. 보안 팀이 Okta 환경에서 정상적인 동작이 어떤 모습인지 이해하여 의심스러운 활동을 보다 쉽게 파악할 수 있도록 하는 것이 중요합니다.

Dorothy 소개

Dorothy는 25개 이상의 모듈을 통해 공격자들이 Okta 환경에서 활동하는 동안 취할 수 있는 행동과 보안 팀이 모니터링, 탐지 및 경고해야 하는 행동을 시뮬레이션합니다. 모든 모듈은 지속성, 방어 회피, 탐색, 임팩트와 같은 관련 MITRE ATT&CK® 전술에 매핑됩니다.

1-Dorothy-blog-listing-modules.png

그림 1 - Dorothy 시작 및 모듈 나열

Dorothy는 방어자가 보안 통합 가시성과 제어 기능을 테스트하는 것을 돕기 위해 만들어졌으며 Okta 환경에서 초기 액세스를 확보하거나 권한을 상승하기 위한 모듈은 제공하지 않습니다. Dorothy를 사용하여 작업을 실행하려면 하나 이상의 관리자 역할이 할당된 사용자에 연결된 유효한 Okta API 토큰이 있어야 합니다.

메뉴와 모듈 간 탐색을 위해 상황별 도움말이 포함된 사용자 친화적인 셸 인터페이스가 제공되므로 사용자는 안내를 받으며 시뮬레이션된 침입자 시나리오를 진행할 수 있습니다. 다른 기능으로는 개별 Okta 환경으로의 연결을 관리하는 구성 프로파일, Dorothy를 사용하여 실행된 작업에 대한 감사 트레일을 제공하기 위해 Elasticsearch로 이벤트를 색인하는 옵션이 있는 세부 로깅이 있습니다.

Dorothy를 사용하여 Okta 환경에서 작업 실행

이 섹션에서는 Okta 환경에서 Dorothy의 일부 모듈을 실행하는 방법을 설명합니다. 아래 그림 2는 Elastic Security 사용자의 일반적인 워크플로우를 보여줍니다. 이 데모가 끝나면 Dorothy의 GitHub 리포지토리로 이동하여 프로젝트 wiki에 있는 ‘시작하기’ 단계를 쉽게 따라 하실 수 있을 것입니다.

2-Dorothy-blog-example_workflow.png

그림 2 - Dorothy를 사용하여 Okta 환경에서 작업을 실행하는 예제 워크플로우

whoami?

공격자의 입장이 되어 Okta 환경에서 활동하는 동안 어떤 행동을 취할 수 있는지 생각해 보겠습니다. 초기 기반을 확보한 공격자로서 가장 먼저 할 질문은 공격자 자신이 확보한 API 토큰에 해당하는 사용자에 대한 것입니다. Dorothy의 whoami 명령을 통해 공격자의 행동을 시뮬레이션하여 관련 사용자의 로그인 ID, 마지막 로그인 시간, 마지막 비밀번호 변경을 살펴보겠습니다.

이제 공격자가 제어할 수 있는 사용자 계정을 더 잘 이해하게 되었으니 다음 단계를 진행하기 전에 Dorothy의 모듈을 나열하고 도움말 메뉴를 확인해 보겠습니다.

그림 3 - Dorothy의 whoami 및 list-modules 명령 실행

탐색

Dorothy에는 공격자가 Okta 환경에 대해 얻을 수 있는 지식을 시뮬레이션하는 데 사용할 수 있는 탐색 모듈이 몇 가지 있습니다. 공격자들은 초기 액세스를 확보한 후 환경에 대한 세부 정보를 얻기 위해 시간을 할애하는 경우가 많습니다. 이는 다음 단계를 계획하기 전에 방향을 설정하는 데 필수적인 세부 정보입니다.

다음 정보를 수집하여 Okta 환경에 대한 지식을 확보해 보겠습니다.

  • 사용자 - 이름, 로그인 ID, 이메일 주소, 비밀번호 복구 질문, 각 사용자 상태 목록은 장악하거나, 변경하거나, 탐지를 피하기 위해 그대로 남겨둘 계정을 선택할 때 유용합니다.
  • 정책 - Okta 정책은 비밀번호 복잡성, MFA 요건, 사용자에게 허락된 디바이스 등 보안 요소를 제어하는 데 사용됩니다. 이 지식은 공격 대상의 보안 구성 요소 일부를 약화시키기로 결정한 경우 유용합니다.
  • 영역 - 네트워크 영역은 Okta 환경의 보안 경계를 정의하는 데 사용될 수 있습니다. 정책과 마찬가지로 이 정보는 환경이 어떻게 구성되었는지 파악하고 트래픽이 허용 또는 차단되는 방식을 변경하기 전에 정보에 기반한 의사 결정을 내리는 데 도움이 됩니다.

마지막으로 find-admins 모듈을 실행하여 각 Okta 사용자의 역할을 열거하고 하나 이상의 관리자 역할이 할당된 사용자를 파악합니다.

그림 4 - Dorothy의 ‘탐색’ 모듈을 실행하여 Okta 환경에 대한 지식 확보

정보 수집 작업에 도움이 되는 다른 탐색 모듈에는 사용자 이름과 비밀번호만을 사용하여 인증하는 사용자를 찾기 위한 find-users-without-mfa 모듈과 하나 이상의 관리자 역할이 할당된 사용자 그룹을 식별하기 위한 find-admin-groups 모듈이 있습니다.

지속성

대상 환경에 대한 액세스를 확보하고 나면 공격자는 지속성을 확립할 기회를 찾습니다. 지속성 메커니즘은 공격자가 초기 기반을 잃은 경우에도 액세스를 유지하는 데 도움이 됩니다. 일반적으로 보안 팀이 공격자의 존재를 탐지하고 공격자가 사용하고 있는 손상된 사용자 계정을 비활성화하거나 네트워크 경계에서 공격자의 통신을 차단하는 경우 공격자는 액세스를 상실하게 됩니다.

하나 이상의 지속성 메커니즘을 갖추고 있는 경우 공격자의 경로 중 하나가 차단되거나 중단되더라도 미션을 계속 수행할 수 있습니다. 이 예제에서는 Dorothy의 create-usercreate-admin-user 모듈을 사용하여 Okta 사용자를 생성하고 생성한 사용자에게 관리자 역할을 할당하겠습니다. 그런 다음 다른 Okta 사용자에 대한 복구 질문을 만들어 해당 사용자의 비밀번호를 재설정하고 다른 지속성 방법으로 해당 계정을 장악해 보겠습니다.

그림 5 - Okta 사용자 계정을 생성 및 변경하여 지속성 확립

Dorothy에는 사용자의 등록된 인증 팩터를 제거하기 위한 reset-factors 모듈과 사용자의 비밀번호를 재설정하는 일회성 링크를 생성하기 위한 reset-password 모듈과 같이 공격자가 취할 단계를 이해하는 데 도움이 되는 다른 지속성 모듈이 있습니다.

방어 회피

공격자는 미션을 진행하면서 탐지를 피하고자 방어 회피 기법을 실행하려고 시도합니다. 예를 들어 공격자는 보안 팀이 자신의 악의적인 행동을 보지 못하도록 보안 로깅을 비활성화하려고 시도합니다.

현재, 환경에 대한 지식을 습득하고 몇 가지 형태의 지속성 메커니즘을 구성한 상태입니다. 그럼 Dorothy의 change-policy-statechange-zone-state 모듈을 실행하여 ‘대상’의 보안 제어 기능을 약화시켜 보겠습니다.

그림 6 - Okta 정책 및 네트워크 영역 개체 비활성화

다른 방어 회피 테마의 모듈로 애플리케이션 및 개별 정책 규칙과 같은 다른 Okta 개체를 활성화, 비활성화 또는 변경할 수 있습니다.

가상의 공격 시나리오는 여기까지 보여드리겠지만, Dorothy의 다른 기능이 궁금하시다면 GitHub 리포지토리를 방문해 보시기 바랍니다.

Elastic Security로 의심스러운 행동 탐지

이 섹션에서는 Okta의 시스템 로그가 어떻게 무료 탐지 규칙을 지원하여 의심스러운 행동을 모니터링하고 보안 팀에 경고하는지 살펴보겠습니다.

Okta의 시스템 로그는 조직의 환경에서 관찰된 활동에 대한 감사 트레일을 제공합니다. 여기에는 사용자의 로그인 또는 비밀번호 변경, 관리자의 구성 변경 등의 활동이 포함됩니다. 이러한 데이터 소스는 보안 모니터링, 조사, 규정 준수 및 대응 활동에 매우 유용합니다.

Fleet으로 Okta 시스템 로그 수집

Fleet은 Okta, AWS, Azure, Google Cloud Platform, Google Workspace 등 인기 있는 서비스 및 플랫폼을 통합하고 이를 관리할 수 있도록 Kibana에서 웹 기반 UI를 제공합니다. Fleet으로 Okta를 통합하면 Okta의 시스템 로그 이벤트를 손쉽게 수집하고 정규화할 수 있습니다.

7-Dorothy-blog-reviewing-fleet.png

그림 7 - Kibana에서 Fleet의 Okta 통합 검토

Beats를 이미 사용하고 있는 팀에서는 Okta Filebeat 모듈도 사용할 수 있습니다.

Elastic Security의 무료 탐지 규칙으로 의심스러운 행동 탐지

Elastic Security 보호 팀은 엔드포인트, 클라우드 및 네트워크 플랫폼을 위한 탐지 및 방지 기능을 개발하기 위해 공격 기술을 연구합니다. Elastic의 탐지 규칙은 무료이며 광범위한 보안 커뮤니티와 함께 개방형으로 개발되었습니다.

Okta 규칙은 Elastic Common Schema(ECS)로 정규화된 색인된 시스템 로그 이벤트를 사용하며 관련성이 높은 의심스러운 행동을 보안 팀에 경고합니다.

아래 그림 8은 공격자가 Okta 환경에서 활동하면서 취할 수 있는 행동을 Dorothy를 사용하여 시뮬레이션한 후 Elastic Security에 생성된 여러 경고를 보여줍니다.

8-Dorothy-blog-reviewing-alerts.png

그림 8 - Elastic Security에서 열려 있는 경고 검토

성가신 오탐은 어떻게 해야 할까요? Elastic Security의 규칙에 예외 사항을 추가하여 루틴 및 예상 동작을 필터링하는 것은 간단합니다. 이 기능에는 예외 사항과 일치하는 모든 경고를 닫는 옵션이 포함되어 있으므로 시간을 절약할 수 있습니다.

9-Dorothy-blog-adding_exception.png

그림 9 - Elastic Security에서 Okta 규칙에 예외 사항 추가

Dorothy로 클라우드 보호 범위 측정

Okta 및 다른 자격 증명 관리 솔루션은 빈번하게 공격 대상이 되지만 모니터링은 전혀 또는 거의 이루어지지 않고 있습니다. Elastic에서는 보안 팀이 공격자들이 Okta 환경 내에서 어떻게 활동하는지 이해하고 무료 개방형 탐지 규칙으로 통합 가시성과 효율성을 테스트할 수 있도록 Dorothy를 만들었습니다.

프로젝트 wiki를 방문하면 Dorothy를 시작하는 방법을 알아보실 수 있습니다. Elastic Security 사용자가 아니시라면 지금 무료 클라우드 체험판에 등록하고 무료 탐지 규칙을 확인해 보세요.