사후(포스트) 악용 도구는 위협 행위자가 네트워크 내부에서 횡적으로 이동하고 권한을 상승시켜 데이터를 탈취하고 악성코드를 유포하며 백도어를 만드는 등 다양한 행위를 수행하는 데 사용됩니다. 레드팀과 윤리적 해커 역시 이러한 도구를 사용하며, 실제로 공격자의 노력을 시뮬레이션하는 것은 시스템, 애플리케이션, 파일을 보호하기 위한 효과적인 통제를 구현하는 데 핵심적인 역할을 합니다.
최근까지도 가장 널리 사용되던 사후(포스트) 악용 프레임워크 중 하나는 PowerShell Empire (PSEmpire)였습니다. 이 도구는 공격자가 PowerShell과 Python 에이전트를 사용해 키로거부터 mimikatz까지 악성 항목을 Windows, Linux, macOS 환경에 배포하는 동시에 탐지를 회피할 수 있게 해주었습니다. 하지만 2019년에는 Empire GitHub 프로젝트 페이지에서 PowerShell Empire에 대한 지원이 더 이상 제공되지 않는다고 게시했습니다. 이는 악성 PowerShell 사용을 탐지하는 데 있어 엔드포인트 탐지 및 대응(endpoint detection and response, EDR) 도구가 더 효과적으로 발전했기 때문일 가능성이 큽니다.
이에 따라 많은 공격자와 사이버보안 전문가들 역시 차세대 오픈 소스 C2 프레임워크로 전환하고 있습니다. 이 글에서는 이러한 사후 착취(post exploitation) 도구 중 하나인 Covenant C2를 살펴봅니다.
Covenant C2 소개
Covenant C2는 웹 애플리케이션과 이를 지원하는 네트워크 환경을 쉽게 악용할 수 있도록 해주는 명령 및 제어( C&C) 프레임워크입니다. 이 고도로 확장 가능한 오픈 소스 프레임워크는 GitHub 에서 제공됩니다. C2 프레임워크 경험이 거의 없는 사람도 수 분 안에 구현할 수 있으며, 직관적인 웹 기반 인터페이스(그림 1 참조)를 제공해 신규 에이전트, 데이터 소스 및 통합 기능을 손쉽게 추가하고 데이터와 자격 증명을 추출할 수 있습니다.
그림 1. Covenant 대시보드(출처: GitHub)
아키텍처
Covenant는 프레임워크와의 통합을 개발자가 쉽게 구축할 수 있도록 하는 C#로 작성된 고도로 확장 가능한 아키텍처를 기반으로 합니다. 인증을 지원하는 다중 사용자 프로필을 제공하며, SQLLite 및 PostgreSQL과 같은 가볍고 신뢰할 수 있는 데이터베이스를 활용합니다. 멀티 플랫폼 지원에는 Windows, macOS, 그리고 Kali와 같은 Linux 배포판이 포함됩니다.
Covenant Server는 명령 및 제어(command-and-control) 기능을 실행하여 사용자가 서로 협력해 작업할 수 있도록 합니다. 이는 grunts — 고대 전쟁에서 포병 사격의 맹렬한 소모전(전차/대포의 희생양)으로 활용되었던 병사들과 비슷하게 행동하는 에이전트 — 를 활용합니다. 이 grunts는 할당된 작업을 수행하면서 감지를 피하는 과정에서 Covenant 서버와 통신합니다.
Covenant 구현하기
Covenant 서버는 몇 분 안에 바로 가동할 수 있습니다. Windows에서는 유일한 전제 조건이 .NET Core SDK 입니다. Covenant ASP .NET Core 애플리케이션을 빌드하고 시작하려면 아래 명령을 실행하기만 하면 됩니다:
git clone --recurse-submodules https://github.com/cobbr/Covenant
cd Covenant/Covenant
dotnet build
dotnet run
또는 Docker container를 사용할 수 있습니다.
그런 다음 포트 7443을 사용하여 localhost로 접속하면, 원하는 브라우저로 Covenant UI를 사용하기 시작할 수 있습니다.
Covenant 사용
첫 번째 작업은 here에 설명된 대로 리스너를 설정하는 것입니다. 그런 다음 원격 머신에 grunts를 배포할 페이로드를 생성하여, 해당 머신들이 Covenant 서버와 통신을 설정하도록 합니다.
그런 다음 Covenant UI에서 아래 페이지를 사용하여 작업을 생성하고 실행하며 검토할 수 있습니다.
Grunts 페이지
Grunts 페이지를 사용해 grunts를 검토하고 작업을 실행하게 하세요.
그림 2. Grunt 상세 페이지 (출처: GitHub)
예: mimikatz 배포하기
예를 들어, 아래 비디오는 Grunt를 사용해 mimikatz를 배포하는 방법을 보여줍니다:
그림 3. grunt를 사용해 mimikatz를 배포
브라우저 인터페이스를 사용하면 실행된 작업의 출력을 확인할 수 있습니다.
그림 4. grunt가 수행한 작업의 출력 검토
작업 페이지
작업 페이지에서는 Grunts에 할당할 수 있는 사용 가능한 모든 작업을 정렬하고 검색할 수 있는 목록을 제공합니다.
그림 5. 작업 페이지
작업(테스킹) 페이지
작업(테스킹) 페이지에는 grunts에 할당한 작업과 해당 상태가 표시됩니다.
그림 6. 작업 페이지
데이터 페이지
작업의 목적은 데이터를 수집하는 것이며, 해당 내용은 Data Page에 요약됩니다. Indicators 탭은 활동에 대한 감사 추적(audit trail)을 제공하며, 이를 블루 팀에 전달해 보안 활동을 강화할 수 있습니다.
그림 7. Data page
결론
Covenant C2는 오픈 소스 C2(명령 및 제어) 포스트 익스플로잇(post-exploitation) 프로젝트가 PowerShell Empire에서 배턴을 이어받아 레드 팀을 강화하는 방법을 보여주는 훌륭한 사례입니다. 이 도구에는 협업 기반의 윤리적 해킹 활동에 이상적인 많은 인상적인 기능이 포함되어 있습니다. 시작하는 데 도움이 되는 훌륭한 자료가 Covenant GitHub 에 많이 있습니다. Covenant 프레임워크가 처음이라면, 이제 살펴볼 시간입니다.
공유하기
더 알아보기
저자 소개
Joe Dibley
보안 연구원
Netwrix의 보안 연구원이며 Netwrix Security Research Team의 일원입니다. Joe는 Active Directory, Windows 및 다양한 엔터프라이즈 소프트웨어 플랫폼과 기술 분야의 전문가로, 새로운 보안 위험, 복잡한 공격 기법, 그리고 이에 대한 대응(완화)과 탐지 방법을 연구합니다.