소개 소개: 확장 가능하고 자동화된 시뮬레이션 범위의 필요성
최신 보안 운영에서 탐지 엔지니어링은 더 이상 '설정하고 잊어버리는' 분야가 아닙니다. 모든 보안팀의 핵심 과제이자 퍼플팀 접근 방식 전체를 뒷받침하는 질문은 간단합니다. 탐지 규칙이 실제로 작동하는지 어떻게 알 수 있을까요? 끊임없이 변화하는 공격 툴킷에 대해 탐지 로직을 지속적으로 검증하는 것은 이제 기본적인 요구 사항입니다.
이 연습의 가장 큰 장애물은 언제나 실험실을 설치하는 것이었습니다. 수동으로 다중 도메인 Active Directory 포리스트를 프로비저닝하고, 특정 취약점으로 구성하고, 별도의 포함된 멀웨어 분석 환경을 배포하는 것은 복잡하고 시간이 많이 소요되는 프로세스입니다. 이러한 반복적인 설정 작업은 조직의 가장 귀중한 자원인 선임 보안 분석가의 시간을 크게 낭비하는 일입니다. 커뮤니티 토론에서는 이러한 불만을 반영하여 단일 테스트를 실행하기 전에 수동 설정으로 인해 손실되는 시간을 강조합니다.
이 블로그에서는 신속한 인프라 자동화와 통합 보안 분석 플랫폼을 결합하여 이러한 병목 현상을 제거하는 최신 솔루션에 대해 자세히 설명합니다. 이 솔루션은 두 가지 핵심 요소를 활용합니다:
- Ludus: 단일 명령으로 복잡한 멀티-VM 사이버 범위를 배포하고 구성하는 오픈 소스 자동화 오버레이입니다.
- Elastic Security: 보안 정보 이벤트 관리(SIEM), 확장 탐지 및 대응(XDR), 클라우드 보안을 통합하여 위협을 수집, 탐지, 대응하는 통합 솔루션을 제공하는 플랫폼입니다. 시뮬레이션 환경 내의 모든 동작을 관찰하는 데 필요한 "무한 가시성(" )을 제공합니다.
이 가이드의 목표는 이 통합 시스템을 구축하기 위한 명확한 단계별 청사진을 제공하는 것입니다. 느리고 수동적이며 일관성이 없는 실험실 테스트에서 Elastic Cortado가 제공하는 것 이상의 지속적이고 자동화된 확장 가능한 탐지 엔지니어링 워크플로우로 전환하는 방법을 보여드립니다.
솔루션 아키텍처: Ludus + Elastic
이 아키텍처는 최신 하이브리드 엔터프라이즈의 고충실도 시뮬레이션을 나타냅니다. Ludus 제품군은 "온프레미스" 또는 IaaS 데이터 센터 역할을 하는 반면, Elastic Cloud 배포는 "SaaS" 보안 스택을 나타냅니다. 이 모델은 Elastic Security가 보호하도록 설계된 하이브리드 및 멀티 클라우드 환경을 완벽하게 반영하여 테스트의 아키텍처를 공격 자체만큼이나 가치 있게 만듭니다.
빌드는 다음과 같은 핵심 구성 요소로 이루어져 있습니다.
| 구성 요소 | 기술 | 기능 | |
|---|---|---|---|
| 기초(인프라) | 루두스 (프록목스/앤서블) | 단일 YAML 구성에서 VM 범위를 배포합니다. | |
| 타겟 | 신원 - GOAD (윈도우 서버) 공급망 - XZbot (데비안) | 의도적인 취약점이 있는 다중 도메인 AD 포리스트(Kerberoasting, Print Nightmare). 공급망 시뮬레이션을 위해 CVE-2024-3094에 감염된 Linux 호스트. | |
| 센서 그리드(가시성) | Elastic Agent | 통합 원격 분석 수집(EDR + 로그). | |
| 뇌(분석) | Elastic Security | 상관관계 및 AI 기반 조사를 위한 SIEM/XDR 플랫폼. |
구성 요소 1: 재단(루더스)
Ludus는 서비스형 인프라(IaaS) 계층 역할을 합니다. Proxmox 8/9 또는 Debian 12/13에서 실행되도록 구축된 이 솔루션은 YAML 구성 파일을 사용하여 복잡한 가상 네트워크를 정의하고 최대 255 개의 개별 VLAN을 지원합니다. 뒤에서 Ludus는 Packer와 Ansible을 활용하여 단일 파일에서 가상 머신 템플릿을 쉽게 빌드, 구성 및 배포합니다.
Ludus 빠른 시작에서 설치 단계와 하드웨어 요구 사항을 검토하고 따르세요.
구성 요소 2: 타깃(실험실)
이 가이드는 두 개의 서로 다른 루더스 환경을 하나의 포괄적인 범위로 통합하여 더 넓은 범위의 위협을 테스트합니다:
- GOAD(게임 오브 액티브 디렉터리): 오렌지 사이버디펜스의 보안 연구원이 설계한 특수 목적의 Active Directory 연구소입니다. Kerberoasting, NTLM 릴레이 및 ADCS(Active Directory 인증서 서비스) 악용과 같은 일반적인 ID 기반 공격 경로를 시뮬레이션하는 데 필요한 특정 잘못된 구성과 취약점이 미리 구성되어 있습니다.
- XZbot 멀웨어 연구소: 고위험, 고충실도 멀웨어 환경. 이 실습에는 실제 작동하는 CVE-2024-3094 백도어가 포함되어 있습니다. 이는 정교한 소프트웨어 공급망 공격에 대한 완벽하고 현대적인 테스트 사례를 제공합니다.
중요 고지 사항
연구 목적으로라도 라이브 멀웨어를 취급하는 것은 ISP 또는 클라우드 제공업체의 서비스 이용 약관(AUP)을 위반할 수 있습니다. 인프라를 소유하고 있는지 확인하고(Ludus는 온프레미스), 업스트림 ISP가 이러한 조사를 허용하는지 확인하거나 VPN을 통해 트래픽을 라우팅하세요.
구성 요소 3: 센서 그리드(Elastic 에이전트 & Defend)
가시성을 확보하기 위해 GOAD와 XZbot 연구실 모두에 걸쳐 Ludus 제품군의 모든 가상 머신은 데이터 수집 및 보호를 위한 단일 통합 에이전트인 Elastic Agent로 계측됩니다(Elastic Defend를 통해).
이 계측 기능은 badsectorlabs/ludus_elastic_agent Ansible 역할을 통해 자동화됩니다. 이 역할은 인프라 프로비저닝 단계(Ludus/Ansible)와 보안 계측 단계(Elastic)를 프로그래밍 방식으로 연결하여 진정한 "코드형 인프라" 워크플로우를 가능하게 하는 중요한 린치핀입니다.
결정적으로, Elastic 에이전트 정책은 Elastic Defend 통합을 통해 구성됩니다. 이를 통해 에이전트는 단순한 로그 수집기에서 완전한 기능을 갖춘 엔드포인트 탐지 & 응답(EDR)/확장 탐지 & 응답(XDR) 솔루션으로 업그레이드되어 호스트 기반 탐지(머신 러닝(ML) 기반 멀웨어 및 랜섬웨어 탐지 포함) 및 탐지에 필수적인 심층 커널 수준 원격 분석 기능을 제공합니다.
참고: 이 블로그에 설명된 보라색 팀 접근 방식의 경우 정책을 감지 모드로 설정하세요.
구성 요소 4: 브레인(Elastic Cloud 호스팅/엘라스틱 서버리스)
Ludus 제품군의 모든 보안 원격 분석 및 알림은 중앙 집중식 Elastic Cloud Hosted(ECH) 또는 Elastic Serverless 배포로 스트리밍됩니다. 바로 여기에서 통합 플랫폼의 분석 능력이 빛을 발합니다. 클라우드 네이티브 플랫폼을 사용하는 것은 단순히 호스팅을 위한 것이 아니라, 공격 탐색과 AI 어시스턴트 등 Elastic의 가장 진보되고 강력한 기능을 활용할 수 있게 해주는 것입니다. Elastic Cloud 체험판을 시작하려면 여기를 클릭하세요.
아래 다이어그램은 GOAD 랩을 기반으로 한 빌드에 대한 개요를 제공합니다.
1단계: 범위 구축 및 계측
이 섹션에서는 자동 범위 구성 및 배포에 대한 기술적인 단계별 가이드를 제공합니다. 이 프로세스는 보안 계측이 인프라 자체와 함께 정의되어 모든 배포에 대해 일관되고 반복 가능한 모니터링 태세를 보장하는 명확한 "IaC(인프라-as-code" ) 모델을 따릅니다. Elastic Cloud 인스턴스와 그 구성은 범위의 전체 IaC 모델과 SIEM을 위해 Elastic Cloud 및 Elastic Stack Terraform 공급자를 통해 관리할 수 있습니다.
3.1 Elastic 에이전트 정책 구성하기(Kibana에서)
Ludus 범위 배포를 실행하기 전에, 에이전트 정책을 Elastic Cloud 인스턴스에서 생성해야 합니다. 이 정책을 통해 강력한 EDR/XDR 원격 분석이 가능합니다.
운영 흐름은 다음과 같습니다:
- Elastic Cloud(ECH) 또는 Elastic 서버리스 Kibana 인스턴스에 로그인하세요.
- 관리 > Fleet으로 이동합니다.
- 새 상담원 정책을만듭니다 (예: "ludus-range-policy"). ludus_elastic_agent 역할은 에이전트를 VM 수준 사용자 지정에서 지정한 정책 또는 전역 변수에 연결된 기본 정책에 등록합니다.
- 이 정책에 Elastic Defend 통합을 추가하세요.
- 탐지 모드에서실행되도록 Elastic Defend 통합을 구성하세요. 이렇게 하면 전체 EDR 텔레메트리 제품군이 활성화됩니다.
- 정책을 저장하고 "상담원 추가를 클릭합니다." 이렇게 하면 ludus.yml 파일에 필요한 등록 토큰 (ludus_elastic_enrollment_token의 경우)과 Fleet 서버 URL (ludus_elastic_fleet_server의 경우)이 제공됩니다.
- (선택 사항) 3~6단계를 반복하여 호스트의 기능 및 성능에 맞게 사용자 지정 정책을 생성하여 VM 수준에서 정책을 사용자 지정할 수 있습니다.
이 정책이 생성되고 토큰이 ludus.yml 파일에 붙여넣어지면 Ludus 범위 배포를 실행하면 전체 자동화된 워크플로가 실행됩니다. Ludus는 VM을 프로비저닝하고, Ansible은 Elastic 에이전트를 설치한 다음, Fleet에 등록하고 Elastic Defend 통합이 포함된 정책을 자동으로 풀다운합니다. 이를 통해 랩이 탄생하는 순간부터 커널 수준의 프로세스, 파일, 네트워크, 레지스트리 이벤트 등 풍부한 EDR 원격 분석 기능을 제공합니다.
3.2 Ludus YAML 구성(ludus.yml)
Ludus는 여기에서 GOAD 제품군을 배포하는 단계를 제공합니다. 범위에 대한 구성은 ludus.yml 구성 파일에 저장됩니다. GOAD 제품군의 경우 ad/GOAD/providers/ludus/config.yml 에서 확인할 수 있습니다.
부록의 전체 구성은 전체 GOAD 랩(VLAN 10)을 XZbot 랩(VLAN 20)과 병합하는 샘플 실행 구성을 기반으로 한 예제입니다.
설치 중에 사용자 지정 버전을 배포하려면 2단계의 goad.sh 스크립트를 실행하기 전에 ad/GOAD/providers/ludus/config.yml 파일을 업데이트하세요.
git clone https://github.com/Orange-Cyberdefense/GOAD.git
cd GOAD
sudo apt install python3.11-venv
export LUDUS_API_KEY='myapikey' # put your Ludus admin api key here nano ad/GOAD/providers/ludus/config.yml # customize the configuration here
./goad.sh -p ludus
GOAD/ludus/local > check
GOAD/ludus/local > set_lab GOAD # GOAD/GOAD-Light/NHA/SCCM
GOAD/ludus/local > install
두 가지 주요 구성 옵션을 사용하여 범위를 사용자 지정할 수 있습니다:
-
전역 변수: 구성을 단순화하고 반복을 피하기 위해, Elastic 에이전트 변수는 글로벌 Ansible.vars 블록의 최상위 수준에서 한 번 정의되며 모든 VM에서 상속됩니다.
등록 토큰에 따라 사용되는 Elastic 에이전트 정책이 결정됩니다.
# ludus.yml
---
# --- GLOBAL ANSIBLE VARS (Simplification) ---
# Define Elastic agent vars once and apply globally
global_role_vars:
ludus_elastic_fleet_server: "<your-fleet.example.com:443>" # Use 443 for cloud
ludus_elastic_enrollment_token: "<your_enrollment_token>"
ludus_elastic_agent_version: "9.2.1"
- VM 수준 변수: Elastic 에이전트 변수는 VM 수준에서 구성하여 적용되는 정책을 사용자 정의할 수 있습니다. 예를 들어 글로벌 변수를 통해 에이전트 버전과 fleet_server를 설정하고 등록 토큰을 VM 수준에서 설정하여 VM에 다른 정책을 적용하는 것과 같이 글로벌 변수와 결합할 수 있습니다.
# --- VM DEFINITIONS ---
vms:
# --- GOAD LAB (VLAN 10) ---
- name: "{{ range_id }}-GOAD-DC01"
hostname: "{{ range_id }}-DC01"
template: win2019-server-x64-template
vlan: 10
ip_last_octet: 10
ram_gb: 4
cpus: 2
windows: { sysprep: true }
ansible:
roles:
- badsectorlabs.ludus_elastic_agent
role_vars:
ludus_elastic_enrollment_token: "<your_enrollment_token>" # different token for different policies
# (Definitions for GOAD-DC02, GOAD-DC03, GOAD-SRV02, GOAD-SRV03
# would follow, all inheriting the global ansible vars)
Elastic 에이전트 배포 자동화
위의 ludus.yml 스니펫은 자동화를 보여줍니다. 각 VM 정의의 ansible.roles 섹션에 badsectorlabs.ludus_elastic_agent 역할을 추가하면, Ludus는 배포 중에 에이전트를 자동으로 설치하고 구성합니다.
이 단일 Ansible 역할은 Windows(GOAD용), Kali 및 Debian(XZbot용)을 비롯한 이기종 실험실의 모든 운영 체제와 호환됩니다.
단순화된 YAML에 표시된 것처럼 최상위 레벨의 ansible.vars 블록은 중요한 매개 변수를 역할에 전달합니다:
- 루더스_엘라스틱_플릿_서버: Elastic Cloud 배포를 위한 Fleet 서버 URL 및 포트(예: your-fleet.example.com:443).
- 루더스_엘라스틱_등록_토큰: 상담원을 등록하는 토큰입니다.
전체 예제에서는 다양한 정책을 사용할 수 있는 기능을 보여주기 위해 VM 수준에서 ludus_elastic_enrollment_token을 설정합니다. - 루더스_엘라스틱_에이전트_버전: 설치할 특정 에이전트 버전(예: 9.2.1).
참고: Kali 호스트에는 공격자 행동을 모니터링하기 위해 Elastic Defend도 배포되지만, 실제 시나리오에서는 이것이 불가능합니다.
안전 우선: 격리, OPSEC 및 라이브 멀웨어
이 섹션에는 중요한 안전 및 운영 보안(OPSEC) 경고가 포함되어 있습니다. 이 구성에는 전문적으로 관리해야 하는 사소하지 않은 중대한 위험이 수반됩니다.
4.1 위협: 이것은 시뮬레이션이 아닙니다
분명하게 언급해야 합니다: Ludus XZbot 랩 가이드와 관련 Ansible 역할은 실제 작동하는 CVE-2024-3094 백도어를 설치합니다. 이것은 양성 시뮬레이션 코드가 아닙니다. 연구소의 자체 문서에는 다음과 같이 명시되어 있습니다: "위험: 이 역할에는 (의도적으로) 멀웨어가 포함되어 있습니다."
"수동 백도어" (공격자가 적극적으로 트리거해야 한다는 의미)로 설명되지만, 개방형 인터넷 연결로 이 코드를 실행하는 가상 머신은 치명적인 책임을 지게 됩니다. 알 수 없는 공격자가 스캔하거나 악용하거나 다른 네트워크를 공격하기 위한 구심점으로 사용할 수 있습니다.
4.2 모순: 격리 대 클라우드 연결
이 아키텍처는 직접적이고 중요한 운영상의 충돌을 야기합니다:
- 요구 사항 1 (안전): 멀웨어 실험실을 공용 인터넷으로부터 격리하여 침해 또는 침입을 방지해야 합니다.
- 요구 사항 2 (기능): Elastic 에이전트는 등록 및 데이터 스트리밍을 위해 아웃바운드 인터넷 연결이 있어야 Elastic Cloud 호스팅/엘라스틱 서버리스 엔드포인트에 연결할 수 있습니다.
초보 사용자는 감염된 실험실을 세상에 노출하거나 보안 원격 분석을 수집할 수 없을 정도로 완전히 격리하여 실패할 수 있습니다.
4.3 솔루션: Ludus 테스트 모드를 통한 핀홀 이그레스
네트워크 이그레스를 세밀하게 제어할 수 있는 Ludus의 내장된 "테스트" 모드를 사용하여 충돌을 해결합니다. 이 기능은 상담원 제어, 원격 분석 및 로그 출력을 가능하게 하는 핀홀 이그레스에 사용됩니다.
# 1. Start the isolated testing session
ludus testing start # Note external DNS resolvers may also need to be added # ludus testing allow -i 1.1.1.1,8.8.8.8
# 2. Allow Elastic Fleet Server (Control Plane)
# Replace <id> with your specific deployment ID # Note the endpoint will differ based on the cloud providers
ludus testing allow -d <your-deployment-id>.fleet.us-central1.gcp.cloud.es.io
# 3. Allow Elasticsearch Ingest (Data Plane) # Note the endpoint will differ based on the cloud providers
ludus testing allow -d <your-deployment-id>.es.us-central1.gcp.cloud.es.io
이 구성은 전문가 수준의 솔루션을 제공합니다. 멀웨어는 안전하게 차단되고, Elastic 에이전트는 정책 업데이트( fleet 엔드포인트와의 통신을 통해)와 데이터 수집( ES 엔드포인트와의 통신을 통해)에 필요한 최소한의 연결만 부여받습니다.
4.4 테스트 모드에서 범위 액세스하기(WireGuard)
테스트 모드가 활성화되면 표준 라우팅이 실패합니다. 라우터가 트래픽을 차단하기 때문에 로컬 LAN에서 Kali VM으로 간단히 SSH를 할 수 없습니다. 루더스는 와이어가드를 사용하여 대역 외 관리 채널을 제공합니다.
Ludus는 라우터 VM(198.51.100.1)에서 WireGuard 인터페이스(wg0)를 구성하고 고정 클라이언트 IP(예: 198.51.100.2)를 할당합니다.
- 영구 허용 규칙: 라우터의 방화벽 구성에는 LUDUS_DEFAULTS 체인의 특정 규칙이 포함되어 있습니다. 이 규칙은 WireGuard 서브넷(198.51.100.0/24)으로부터 또는 이 서브넷으로 향하는 트래픽을 명시적으로 허용합니다.
- 우선순위: 이 규칙은 LUDUS_DEFAULTS 체인에 존재하므로 테스트 모드에서 적용되는 DROP 규칙을 재정의합니다.
연결 방법:
- 구성 생성: ludus user wireguard > ludus.conf
- 이를 로컬 WireGuard 클라이언트로 가져와서 터널을 활성화합니다.
- 터널을 통해 가상 머신의 프라이빗 IP(예: 10.10.10.11)에 직접 연결합니다.
2단계: 공격 실행
고충실도, 완전 계측이 가능한 범위가 배포되면 "레드팀" 단계를 시작할 수 있습니다. 여기에는 전용 공격자 가상 머신(예: 포함된 Kali 가상 머신 또는 remnux 분석기 가상 머신)에 로그인하여 공격을 실행하는 것이 포함됩니다. 이 활동은 Elastic Defend가 캡처할 풍부한 악성 원격 분석을 생성합니다.
이 결합된 범위는 두 가지 주요한 거시적 수준의 위협 벡터인 ID 기반 "생활 기반 공격(" )과 취약성 기반 공급망 침입에 대한 방어를 테스트할 수 있게 해줍니다.
5.1 Active Directory 시뮬레이션(GOAD)
- 초기 액세스 (자격 증명 스터핑)
- 공격자는 외부 경계를 목표로 삼습니다. 유출된 인증정보 목록을 사용하여 Essos.local 도메인에 대한 비밀번호 스터핑 공격을 실행합니다. khal.drogo 사용자에 대한 자격 증명을 성공적으로 확인했습니다.
- 샘플 도구: kerbrute 또는 smartbrute
- 결과: 낮은 권한의 도메인 사용자에 대한 유효한 자격 증명입니다.
- 권한 에스컬레이션 (인쇄 악몽)
- khal.drogo에는 제한된 권한이 있습니다. 카스텔블랙 서버에 대한 발판을 마련하기 위해 PrintNightmare(CVE-2021-34527)를 익스플로잇합니다. Windows 인쇄 스풀러 서비스의 이 취약점은 인증된 모든 사용자가 악성 인쇄 드라이버를 설치할 수 있게 합니다. 상자에 새 로컬 관리자 사용자를 추가하는 드라이버를 업로드합니다.
- 샘플 도구: CVE-2021-34527.py 익스플로잇 스크립트
- 결과: CastelBlack의 로컬 시스템 액세스.
- 자격 증명 덤프 (DCSync 준비)
- 이제 CastelBlack에서 시스템/관리자로 실행하여 컴퓨터에 캐시된 자격 증명이 있는지 검사합니다. Impacket의 secretsdump를 실행하여 SAM 데이터베이스와 LSASS 메모리에서 해시를 가져옵니다. 이전 지원 세션에서 메모리에 남아 있던 기본 제공 관리자 계정의 NTLM 해시를 발견합니다.
- 샘플 도구: 임파켓-시크릿덤프
- 결과: 도메인 관리자 또는 높은 권한 계정의 NTLM 해시입니다.
- 커버로스팅
- 유효한 도메인 자격 증명을 사용하면 내부 네트워크로 피벗할 수 있습니다. 환경의 SPN(서비스 사용자 이름)에 대한 Kerberos 서비스 티켓(TGS)을 요청합니다. MSSQLSvc 계정을 대상으로 합니다. 암호화된 티켓을 오프라인으로 가져가서 해독하여 SQL 서비스 계정의 일반 텍스트 비밀번호를 알아냅니다.
- 샘플 도구: Rubeus 또는 GetUserSPNs.py
- 결과: MSSQL 서비스 계정의 일반 텍스트 비밀번호입니다.
- MSSQL 공격
- 크랙된 SQL 자격 증명을 사용하여 Braavos SQL Server에 직접 인증합니다. 서비스 계정에 sysadmin 권한이 있으므로 xp_cmdshell 저장 프로시저를 남용합니다. 이 기능을 사용하면 SQL 쿼리에서 직접 Windows 명령 셸을 생성하여 데이터베이스 서버에서 원격 코드 실행(RCE)을 효과적으로 수행할 수 있습니다.
- 샘플 도구: mssqlclient.py
- 결과: 데이터베이스 서버의 RCE.
- 지속성 (예약된 작업)
- SQL 비밀번호가 변경되어도 액세스 권한을 잃지 않도록 하려면 지속성을 설정하세요. 손상된 SQL 서버에서 Windows 예약된 작업을 만듭니다. 이 작업은 매일 비콘 바이너리를 실행하도록 구성되며 SYSTEM으로 실행됩니다.
- 샘플 도구: schtasks.exe 또는 PowerShell
- 결과: 장기적인 지속성.
5.2 멀웨어 랩 시뮬레이션(XZbot)
- 7단계: 공급망 피벗(XZ 백도어)
- 동시에 DMZ의 Linux 인프라를 대상으로 합니다. xz-backdoor-dect VM에 사전 임베디드된 XZ 백도어(CVE-2024-3094)를 트리거합니다. 특정 암호화 키로 SSH 핸드셰이크를 조작하면 인증을 완전히 우회하고 표준 SSH 로그를 남기지 않고 루트로서 명령을 실행할 수 있습니다.
- 도구: xzbot
- 결과: 결과: 공급망 손상을 통한 Linux 인프라의 루트 액세스.
- 공격자는 루더스 연구소에서 제공하는 xzbot 클라이언트를 사용합니다.
- 공격자 VM에서 다음 명령을 실행하여 취약한 데비안 호스트에서 백도어를 트리거합니다:
xzbot --ssh-addr '10.X.X.X:22' -cmd 'setsid sh -c "echo test"' 2>& 1 - 이 작업을 수행하면 대상의 sshd 프로세스가 비정상적으로 셸을 생성하고 루트 권한으로 명령을 실행하여 최종 실행 증명을 생성합니다.
3단계: 통합 탐지 & Elastic Security를 통한 조사
"블루팀" 보상입니다. 이제 단계 2 에서 생성된 원격 분석 및 경보를 통합된 Elastic Security 플랫폼 내에서 분석할 수 있습니다.
6.1 "강력한 SIEM": 중앙 집중식 가시성 & 사전 구축 탐지
Elastic SIEM의 힘은 단순히 수동적으로 로그를 수집하는 기능에만 있는 것이 아닙니다. 그 힘은 Elastic Defend가 제공하는 심층적인 상황별 데이터에 대해 수행하는 능동적 분석에서 비롯됩니다. Defend의 완전한 엔드포인트 가시성( "" )은 기본 로그뿐만 아니라 프로세스 생성, 파일 수정, 네트워크 연결 및 레지스트리 변경과 같은 커널 수준의 원격 분석도 제공합니다.
이 풍부한 데이터는 모두 Elastic Common Schema(ECS)로 정규화된 Elastic의 방대한 사전 구축된 1500개 이상의 MITRE 매핑 탐지 규칙 라이브러리에 제공되고 있습니다. 이러한 규칙은 Elastic Security Labs 팀에서 연구, 개발 및 유지 관리하며 즉시 사용 가능한 탐지 값을 제공합니다.
루두스 제품군은 이러한 가치를 위한 완벽한 검증 플랫폼 역할을 합니다. 단계 2 에서 실행된 공격은 이론적인 것이 아니라 예상되는 특정 아티팩트에 직접 매핑됩니다 ("스모킹 건"). 이 예에서는 특정 행동을 경고하기 위해 사전 구축된 규칙과 사용자 지정 규칙의 조합을 의도적으로 함께 사용했습니다.
| 공격 단계 | MITRE ATT&CK | Elastic 탐지 규칙 | 예상 아티팩트 ("스모킹 건") |
|---|---|---|---|
| 1. 자격 증명 스터핑 | T1110(무차별 대입) | 잠재적 계정 무차별 대입(사용자 지정) | 호스트 전반에서 비정상적인 인증 성공(이벤트 4624 및 ssh 로그인). |
| 2. 인쇄 악몽 | T1068(착취) | 비정상적인 인쇄 스풀러 하위 프로세스 | 비정상적인 인쇄 스풀러 서비스(spoolsv.exe) 하위 프로세스. |
| 3. 자격 증명 덤프 | T1003.006(OS 자격 증명 덤핑) | Potential Remote Credential Access via Registry | SAM(보안 계정 관리자) 레지스트리 하이브에 비정상적으로 액세스합니다. |
| 4. 커버로스팅 | T1558.003(커베로스팅) | 의심스러운 Kerberos 인증 티켓 요청(사용자 지정) | 이벤트 ID 4769 , 0x17(RC4) 암호화가 요청되었습니다. |
| 5. MSSQL 공격 | T1505.001(SQL 저장 프로시저) | Execution via MSSQL xp_cmdshell Stored Procedure | MSSQL xp_cmdshell 저장 프로시저를 통한 실행 |
| 6. 지속성 | T1053.005(예약된 작업) | 예약된 작업이 생성되었습니다. | 이벤트 ID 4698 또는 schtasks.exe /create. |
| 7. XZ 백도어 | T1210(원격 서비스 악용) | SSH 백도어를 통한 실행 가능성 | sshd는 sh 또는 bash와 같은 비정상적인 하위 프로세스를 생성합니다. |
참고: Elastic 탐지 규칙은 공개적이고 투명합니다. (https://github.com/elastic/detection-rules)에서 직접 로직을 확인하거나, 기여하거나, 문제를 제기할 수 있습니다.
6.2 심층 분석: 이벤트 분석기로 프로세스 체인 추적하기
두 개의 실험실(GOAD와 XZbot)은 Elastic의 전문화된 조사 도구를 사용할 수 있는 완벽한 기회를 제공합니다. 이벤트 분석기의 사용자 인터페이스는 보안 분석가의 사고 방식과 일치하는 인지 모델로 JSON 로그의 복잡성을 추상화하도록 설계되었습니다: 프로세스 체인. 인터페이스는 그래픽 캔버스, 세부 패널, 타임라인 통합의 세 가지 주요 상호 작용 영역으로 구성됩니다.
무엇을 보고 있나요?
그래픽 캔버스(프로세스 트리)
중앙 보기는 방향이 지정된 비순환 그래프입니다:
- 노드(큐브): 각 큐브는 별개의 프로세스 실행을 나타냅니다. 이 시각화는 "앵커" 이벤트(파란색 후광으로 강조 표시됨)와 주변 컨텍스트를 구분합니다.
- 가장자리(선): 선은 부모와 자식 관계를 나타냅니다. 방향성은 암시적(하향식 또는 좌우)으로 실행의 흐름을 보여줍니다.
- 시각적 배지: 노드는 정적인 아이콘이 아니라 동적인 표시기입니다.
- 경고 배지: 특정 프로세스가 탐지 규칙을 트리거한 경우(예: "악성 코드 감지됨") 큐브에 색상 배지가 표시됩니다. 이를 통해 분석가는 탐지 엔진이 체인의 어느 단계에서 플래그를 지정했는지 즉시 파악할 수 있습니다.
- 사용자 컨텍스트: 시각적 신호: 프로세스가 사용자 컨텍스트를 변경하여(예: 로컬 사용자에서 시스템으로) 권한 에스컬레이션을 알리는지 여부를 나타낼 수 있습니다.
세부 정보 패널(포렌식 메타데이터)
노드를 클릭하면 일반적으로 오른쪽에서 슬라이딩되는 세부 정보 패널이 트리거됩니다. 이 패널은 "세분화된 수준에서 볼 수 있는" 의 주요 소스입니다. 확인에 중요한 필드를 노출합니다:
- 명령줄 인수: 이것은 아마도 가장 가치 있는 포렌식 아티팩트일 것입니다. 분석기는 전체 문자열을 표시하여 플래그, 스크립트 및 인코딩된 페이로드를 노출합니다(예: powershell.exe -w hidden -enc Base64).
- 프로세스 경로 및 해시: 전체 파일 경로는 마스킹을 식별하는 데 도움이 됩니다(예: C:\Windows\System32가 아닌 C:Temp에서 실행되는 svchost.exe). 위협 인텔리전스와의 상호 참조를 위해 파일 해시(MD5, SHA-1, SHA-256)가 제공됩니다.
- 서명자 정보: 바이너리의 디지털 서명에 대한 정보는 신뢰할 수 있는 Microsoft 바이너리와 서명되지 않은 맬웨어를 구별하는 데 도움이 됩니다.
- 관련 이벤트 수: 노드는 수천 개의 파일 수정으로 그래프를 복잡하게 만드는 대신 요약 통계를 표시합니다(예: "15 파일 이벤트," " 3 네트워크 연결"). 이러한 통계를 클릭하면 일반적으로 해당 특정 작업의 목록 보기 또는 타임라인으로 드릴다운됩니다.
시간 차원(시간 필터)
분석기의 중요하지만 종종 간과되는 측면은 시간 처리입니다. 공격은 "체류 시간이 길 수 있습니다." 부모 프로세스는 몇 주 전에 시작되었을 수 있지만(예: 합법적인 서비스), 악성 자식은 오늘 생성되었을 수 있습니다. 분석기에는 분석가가 쿼리 창을 확장할 수 있는 시간 슬라이더가 포함되어 있습니다. 기본적으로 알림 주변의 좁은 창을 볼 수 있지만, 이를 확장하면 "그래프가" 따뜻한 또는 차가운 데이터 계층으로 거슬러 올라가 장기 실행 중인 상위 프로세스를 찾을 수 있습니다.
어떻게 작동할까요?
이벤트 분석기의 운영 기능은 Elastic Common Schema(ECS)를 활용합니다. 이기종 보안 환경에서는 Windows 엔드포인트, Linux 서버, 네트워크 방화벽, 클라우드 서비스 제공업체 등 다양한 소스에서 로그가 생성되며, 각각 고유한 분류 체계가 있습니다. CrowdStrike 에이전트는 프로세스 ID를 TargetProcessId로 레이블을 지정할 수 있지만, Sysmon 이벤트는 ProcessId를 사용합니다. 정규화 없이는 이러한 이벤트를 하나의 체인으로 연관시키는 것은 알고리즘적으로 불가능합니다.
ECS는 엄격한 필드 계층 구조를 적용하여 이 문제를 해결합니다. 이벤트 분석기는 시각적 그래프를 구성하기 위해 특정 고충실도 ECS 필드에 의존합니다:
- 프로세스.엔티티_ID: 이것이 분석기 로직의 초석입니다. 운영 체제는 프로세스 ID(PID)를 재활용합니다. 1234 의 PID는 09:00 의 svchost.exe와 14:00 의 malware.exe에 속할 수 있습니다. 장기 기록 분석에 PID를 사용하면 시각적 그래프가 손상되는 충돌이 발생하여 관련 없는 이벤트가 연결될 수 있습니다. process.entity_id는 Elastic 에이전트(또는 ECS 호환 비트)에서 생성된 고유 문자열로, 인덱스에서 고유하게 유지되므로 PID 재사용과 관계없이 그래프가 고유한 실행 인스턴스를 나타내도록 보장합니다.
- 프로세스.부모.엔티티_ID: 이 필드는 노드 간의 디렉티드 에지를 설정합니다. 분석기는 한 이벤트의 process.entity_id가 다른 이벤트의 process.parent.entity_id와 일치하는 이벤트를 재귀적으로 쿼리하여 계보를 재구성합니다.
event.sequence: 속도가 빠른 환경에서는 이벤트 순서(예: 네트워크 연결 전 또는 후에 파일 수정이 발생했는가?)가 매우 중요합니다. ECS 타임스탬프와 시퀀스 번호를 사용하면 분석기가 시각적 노드 세부 정보 내에서 시간순으로 이벤트를 정렬할 수 있습니다.
6.3 심층 분석: 세션 뷰어로 사용자 활동 재구성하기
XZbot (Linux) 공격의 경우 세션 뷰어가 우수한 도구입니다. Linux 인프라에서 세션 활동을 모니터링하고 조사하기 위해 특별히 설계된 "" .
잠재적 실행을 통한 XZ백도어 경보가 발령되면 분석가는 관련 sshd 프로세스를 조사합니다. 세션 뷰어는 터미널" 에서 영감을 받은 가독성이 높은"형식을 제공합니다. 공격자의 세션을 재구성하여 sshd 프로세스와 비정상적인 하위 프로세스(sh)를 표시합니다.
또한 실행된 정확한 명령 (sh -c setsid sh -c "usermod -aG sudo sysadmin_backup")을 표시하고 해당 명령의 출력도 표시할 수 있습니다. 이것은 사람이 읽을 수 있는 일반 텍스트로 분석가에게 제시된 결정적인 "스모킹 건" 으로, 공격자의 TTY 세션을 사후에 효과적으로 볼 수 있게 해줍니다.
무엇을 보고 있나요?
세션 뷰어의 사용자 인터페이스는 추상적인 로그 분석과 Linux 관리자의 기본 터미널 환경 사이의 격차를 해소하기 위해 명시적으로 설계되었습니다. 멀웨어 프로세스 체인에 초점을 맞춘 이벤트 분석기와 달리 세션 뷰어는 셸 세션의 선형적 내러티브를 재구성하는 시간 순서의 트리 기반 시각화를 제공합니다.
프로세스 트리 및 타임라인
뷰의 중심 구성 요소는 계층형 목록으로 표시되는 방향성 비순환 그래프(DAG) 입니다.
- 수직 흐름: 세션 뷰어는 터미널 기록 파일의 흐름을 모방하여 프로세스를 수직으로 정렬하지만 계층 구조는 유지합니다. 자식 프로세스는 부모 프로세스를 기준으로 들여쓰기됩니다. 이를 통해 분석가는 사용자가 직접 실행한 명령(예: curl)과 스크립트 실행에 의해 생성된 프로세스(예: setup.sh 스크립트 내에서 실행되는 curl)를 즉시 구분할 수 있습니다.
- 상세 모드: 토글을 사용하면 분석가가 필터링된 보기(중요한 사용자 활동 표시)와 "상세 모드(" ) 간에 전환할 수 있습니다. 이 모드를 활성화하면 셸 시작 스크립트(.bashrc 실행), 셸 완료 헬퍼, 기본 제공 명령으로 인한 포크와 같이 일반적으로 노이즈가 많은 이벤트를 표시합니다. 이는 프로필 스크립트에 숨겨진 지속성 메커니즘을 탐지하는 데 매우 중요합니다.
시각적 배지 및 표시기
UI는 정교한 배지와 아이콘 시스템을 사용하여 분석가가 모든 노드를 드릴다운할 필요 없이 즉각적인 컨텍스트를 제공합니다. 이러한 시각적 단서는 신속한 분류를 위해 필수적입니다.
Elastic 세션 뷰어의 시각적 표시기
| 배지/아이콘 | 시각적 외관 | 의미 | 포렌식 시사점 |
|---|---|---|---|
| 경영진 사용자 변경 | 명시적 텍스트 배지 | 사용자 컨텍스트가 변경되었습니다(예: su, sudo). | 권한 에스컬레이션을 식별하는 데 중요합니다. 표준 사용자가 루트가 된 시점을 정확히 표시합니다. |
| 프로세스 알림 | 기어 아이콘 | 프로세스 이벤트가 탐지 규칙을 트리거했습니다. | 악성 바이너리 또는 의심스러운 인자(예: whoami)의 실행을 나타냅니다. |
| 파일 알림 | 페이지 아이콘 | 파일 수정으로 인해 규칙이 트리거되었습니다. | 변조, 지속성 생성(크론/시스템드) 또는 유출 스테이징을 나타냅니다. |
| 네트워크 알림 | 페이지 아이콘(보조) | 네트워크 이벤트가 규칙을 트리거했습니다. | C2 통신, 측면 이동 또는 탈출을 나타냅니다. |
| 다중 알림 | 통합 배지 | 단일 이벤트가 여러 규칙 유형을 트리거했습니다. | 악성 활동의 고신뢰도 지표(예: 프로세스가 파일을 삭제하고 실행한 경우). |
| 알림 수 | 숫자(예: (2)) | 노드와 관련된 총 알림 수입니다. | 체인의 어떤 단계가 가장 "노이즈가 많은" 탐지 로직에 우선순위를 지정하는 데 도움이 됩니다. |
터미널 출력 보기
프로세스 노드의 터미널 출력 버튼 위로 마우스를 가져가면 캡처된 출력의 크기를 나타내는 배지가 표시됩니다. 이 버튼을 클릭하면 터미널 출력 보기가 열리고 process.io.text 데이터가 렌더링됩니다. Linux 조사를 위한 "스모킹 건" 기능입니다.
- 리플레이 기능: 분석가는 사용자가 본 내용을 정확히 확인할 수 있습니다. 공격자가 cat /etc/passwd를 실행한 경우 프로세스 트리에 실행이 표시되고 터미널 출력 보기에는 공격자에게 표시된 대로 passwd 파일의 내용이 표시됩니다.
- 입력 재구성: 뷰어는 TTY 입출력을 캡처하기 때문에 명령 실행뿐만 아니라 타이핑도 캡처합니다. 이렇게 하면 자동화된 스크립트가 아닌 인간 공격자의 강력한 행동 지표인 백스페이스, 오타 및 수정(예: sdo [백스페이스] sudo 입력)이 드러날 수 있습니다.
Elastic의 이점: AI 기반 자동화된 헌팅
3 에 설명된 프로세스는 강력한 분석가 중심의 조사를 보여줍니다. 그러나 Elastic Cloud Hosted(ECH) 또는 Elastic Serverless 사용의 주요 장점은 통합 생성 AI 스택에 프로그래밍 방식으로 액세스할 수 있다는 점입니다. 이 스택은 프로세스를 수동 상관관계에서 AI 기반의 자동화된 헌팅으로 향상시킵니다.
참고: Elastic의 AI 기능은 기본 제공되는 Elastic 관리형 LLM 또는 사용 가능한 커넥터 중 하나를 사용하여 구성된 타사 LLM과 함께 작동합니다.
7.1 알림에서 공격까지: 공격 탐지와의 자동화된 상관관계
위의 표와 같이 GOAD + XZbot 실험실에서 여러 개의 개별 알림을 생성합니다. 주니어 분석가는 수많은 경보에 직면하게 될 것입니다: 잠재적 케르베로스팅, 의심스러운 인증서 요청, 잠재적 XZBackdoor와 같은 경고에 직면하여 이 복잡한 교차 도메인 공격을 수동으로 "연결(" )해야 합니다.
이것이 바로 Attack Discovery가 해결한 문제입니다. 엔터프라이즈 및 서버리스 계층에서 사용할 수 있는 이 GenAI 기능( ")은 대규모로 완전히 자동화된 위협 헌팅을 제공합니다". "AI가 모든 경보를 분석하여 숨겨진 위협을 찾아내고", Ludus 연구소의 서로 다른 신호를 하나의 고충실도 "공격" 조사로 자동 연관시킵니다.
포렌식 분석가에게 Attack Discovery의 주요 가치는 시간 단축입니다. 티어 1 및 티어 2 분석을 정의하는 "멘탈 스티칭(" )을 자동화합니다.
"멘탈 스티칭 해체하기"
공격 검색이 없는 조사 예시를 살펴보겠습니다.
- 트리거: 경고가 표시됩니다: "의심스러운 PowerShell 실행."
- 쿼리: 호스트 타임라인으로 피벗합니다.
- 스캔: 15 분 뒤로 스크롤합니다. "파일 다운로드" 이벤트가 표시됩니다.
- 가설: "사용자가 잘못된 파일을 다운로드하여 PowerShell이 시작되었을 수 있습니다."
- 확인: 파일 이름을 확인합니다. invoice.js입니다.
- 결론: "멀웨어 다운로드가 확인되었습니다."
이 프로세스는 분석가의 숙련도와 환경에 대한 친숙도에 따라 10 ~ 30 분 정도 소요됩니다. Attack Discovery는 이 전체 시퀀스를 몇 초 만에 수행합니다. PowerShell 경고를 살펴보고 관련 컨텍스트에서 파일 다운로드 이벤트를 확인한 후 발견 내용을 표시합니다: "사용자가 다운로드한 파일 'invoice.js'에서 시작된 것으로 보이는 의심스러운 PowerShell 스크립트를 실행했습니다."
이 기능에는 데이터 지속성 (기록 추적을 위해 결과가 저장됨) 및 스케줄링 & 작업 (자동으로 실행되며 응답 또는 후속 Elastic 워크플로우를 트리거할 수 있음)이 포함되어 SOC를 사후 대응적인 자세에서 사전 예방적인 자세로 전환합니다.
예
이 예제에서는 공격이 발생하면 알림이 표시되기 시작합니다. 알림을 개별적으로 분류하는 대신 공격 검색을 활용하여 분류합니다.
평균 트리거 시간을 초 단위로 압축하고 2 공격을 빠르게 식별합니다.
7.2 AI 어시스턴트를 통한 분류 가속화
Elastic Security Assistant는 생성형 AI를 사용하여 보안 위협을 찾고, 수정하고, 이해하는 데 도움을 줍니다. Elastic Security 내부에서 직접 작동합니다. 채팅 인터페이스를 통해 상호작용하여 알림을 조사하고 코드를 작성합니다.
이 예제에서는 공격 검색이 상관관계가 있는 공격을 식별하면 AI 어시스턴트를 사용하여 조사합니다. 어시스턴트는 두 가지 주요 기능을 제공합니다:
- 자연어 조사: 분석가는 다음과 같은 일반 영어 질문을 할 수 있습니다. "이 공격을 요약해 주세요", "이 프로세스에 대한 MITRE 전술은 무엇인가요?", "인쇄 스풀러란 무엇인가요?" 또는 "몇 가지 수정 제안을 제공하세요."
- 에이전트 쿼리 유효성 검사 워크플로: 이 고급 기능을 사용하면 AI가 "맞춤형으로 검증된 ES|QL 쿼리를 생성할 수 있습니다 ". 분석가가 " "XZbot 알림에 관련된 호스트의 모든 네트워크 연결을 찾아주세요(")"라고 요청하면 어시스턴트가 쿼리를 작성, 검증, 자체 수정한 후 제시하여 고급 위협 헌팅에 대한 기술 장벽을 대폭 낮춥니다.
작동 방식
어시스턴트는 Elastic Stack을 사용자가 선택한 LLM(예: GPT-5, Claude, Gemini)에 연결합니다. 검색 증강 생성(RAG)을 사용하여 사용자 환경에서 관련 데이터 로그, 알림, 내부 문서 등을 가져옵니다. 모델에 프롬프트를 보내기 전에 민감한 필드(PII 또는 호스트/IP 메타데이터)를 익명화하도록 구성하여 모델이 행동 패턴을 추론하는 동안 데이터가 비공개로 유지되도록 할 수 있습니다.
7.3 Elastic 워크플로우를 통한 지능형 자동화
위에서 설명한 공격은 복잡한 다단계 알림을 생성합니다. 수동으로 처리하는 것은 느립니다. Elastic은 오픈 소스 AIOps 및 경보 관리 플랫폼인 Keep을 인수하여 이 문제를 해결했습니다. Elastic 9.3에서는 이 기술이 기술 미리보기의 Kibana에 Elastic Workflows로 직접 통합됩니다.
워크플로란 무엇인가요?
Elastic Workflows는 Elasticsearch 플랫폼에 내장된 자동화 엔진입니다. 워크플로우를 트리거하는 요소, 워크플로우가 수행하는 단계, 워크플로우가 수행하는 작업 등 워크플로우를 YAML로 정의하면 플랫폼이 실행을 처리합니다. 워크플로에서는 환경을 쿼리하고, 보안 데이터를 변환 및 보강하고, 조건에 따라 분기하고, 외부 API를 호출하고, 이미 구성한 커넥터를 통해 Slack, Jira, PagerDuty 등과 같은 서비스와 통합할 수 있습니다. 워크플로에서는 AI 에이전트를 호출하여 복잡한 조사를 추론한 다음 에이전트가 발견한 내용을 기반으로 대응 조치를 계속할 수도 있습니다. Elastic Workflows는 보안 데이터가 이미 있는 SIEM에서 스크립트 자동화와 AI 추론을 기본적으로 결합합니다.
작동 방식: " 알림 애그리게이터 & 워크플로 엔진"
워크플로는 탐지와 수정 사이의 미들웨어 계층이 되어 세 가지 주요 메커니즘을 통해 작동합니다:
- 멀티소스 수집: 워크플로는 Elastic을 넘어 확장됩니다. 보강, 분석 또는 초기 분류를 위해 추가 데이터를 가져옵니다.
- 코드형 워크플로(YAML): 워크플로는 YAML 파일로 정의됩니다. 이를 통해 팀은 인시던트 대응 절차를 코드로 버전 관리할 수 있습니다.
- 워크플로우 엔진: Elastic(또는 외부 도구)에서 경보가 트리거되면, 워크플로우 엔진은 일련의 단계를 실행합니다:
- 강화: API(예: VirusTotal 또는 Active Directory)를 쿼리하여 컨텍스트를 추가합니다.
- 논리: if/else 문을 사용하여 심각도를 결정합니다.
- 작업: Slack 메시지를 보내거나, Jira 티켓을 만들거나, Elastic Defend 응답 작업을 트리거합니다.
알림 및 작업 흐름의 예를 살펴보세요.
- 트리거: 워크플로를 특정 규칙(예: "악성 탐지 알림")에 연결합니다.
- 단계: 작업 순서를 정의합니다.
- 분류(에이전트): AI 어시스턴트에게 알림을 전달합니다. 질문하세요: "아래의 경고를 어떻게 해결하고 대응할 수 있을까요?"
- 강화: AI 어시스턴트의 응답을 알림에 메모로 첨부합니다.
- 응답합니다: 알림 노트에 대한 링크가 있는 사례를 만듭니다.
예
이 예에서는 워크플로 - 알림 강화 & 사례 생성을 트리거하는 알림이 있습니다.
또한 워크플로 UI에서 직접 트리거하여 다양한 단계를 시연할 것입니다.
- 알림 컨텍스트는 보안 AI 도우미에 대한 입력으로 제공됩니다.
- 응답이 보안 알림에 메모로 추가됩니다.
- 알림의 메타데이터(타임스탬프, 심각도, 규칙 이름 및 알림 이유)로 케이스가 만들어집니다.
- 사례에 대한 링크가 댓글로 사례에 추가됩니다. 참고: GIF에는 표시되지 않습니다.
결론 수동 설정에서 지속적인 에뮬레이션까지
이 블로그는 확장 가능한 고급 시뮬레이션 범위를 위한 완벽한 청사진을 제공했으며, 가장 중요한 것은 안전한 시뮬레이션 범위입니다.
- 구축했습니다: 복잡한 다중 실험실 범위(GOAD + XZbot)를 Ludus를 사용하여 단일 명령으로 배포했습니다.
- 계측했습니다: 전체 범위는 자동화된 배포의 일부로 ludus_elastic_agent Ansible 역할을 사용하여 Elastic Agent 및 Defend로 원활하게 계측되었습니다.
- 보안을 확보했습니다: 멀웨어 격리와 클라우드 에이전트 연결 사이의 중요한 충돌은 Ludus의 세분화된 "OPSEC" 네트워킹 제어를 사용하여 해결했습니다.
- 검증을 마쳤습니다: Elastic의 사전 구축된 즉시 사용 가능한 탐지 규칙을 실제 알려진 악성 공격에 대해 검증함으로써 플랫폼의 강력한 SIEM 기능이 입증되었습니다.
- 저희는 조사했습니다: 전문 조사 도구인 이벤트 분석기와 세션 뷰어를 사용하여 Windows와 Linux 호스트 모두에서 정확한 공격 경로를 추적했습니다.
- 자동화했습니다: 공격 탐색이 자동으로 서로 다른 경보를 단일 공격으로 연관시키고 AI 어시스턴트가 최종 조사를 가속화하는 Elastic의 GenAI 스택의 "포스 멀티플라이어(" )가 시연되었습니다.
- 우리는 응답했습니다: Elastic Workflow의 강력한 기능은 복잡한 대응 조치와 문제 해결 흐름을 위한 두뇌와 자동화를 제공합니다.
이 아키텍처는 일회성 빌드가 아닙니다. 이는 지속적인 탐지 엔지니어링 파이프라인의 청사진입니다. "보안 운영을 현대화" 퍼플 팀이 필요에 따라 방어를 해체, 재구축, 재테스트할 수 있도록 지원하여 탐지 태세를 위협의 변화만큼 빠르게 진화하도록 보장합니다.
다음 단계로 이동하세요: 보안 팀 활성화
이 블로그의 아키텍처는 단순한 기술 연습이 아니라 지속적인 보안 검증을 위한 청사진입니다. 이 자동화된 범위를 Elastic의 통합 SIEM 및 XDR 플랫폼과 결합하면 주기적인 테스트에서 상시 준비 상태로 전환할 수 있습니다.
자체 평가판을 시작하고 이 가이드를 활용하여 실제 위협에 대해 플랫폼을 테스트 및 평가하고 보안 팀이 공격자보다 한 발 앞서 나갈 수 있도록 도구를 지원하시기 바랍니다.
다른 SIEM을 사용 중이신가요?
문제 없습니다. Elastic Serverless를 활용하고 기존 SIEM을 보강한 다음, 기본 SIEM의 기본 데이터를 사용하면서 위의 모든 인사이트를 얻을 수 있습니다. 지금 바로 Elastic 서버리스 배포를 시작하세요. Elastic AI SOC 엔진(EASE) 패키지는 이러한 AI 기반 기능을 제공하여 조직이 전체 마이그레이션 전에 기존 도구 위에 강력한 분석과 AI 계층을 신속하게 추가할 수 있도록 지원합니다.
부록
전체 범위 예시
참고: Kali VM VLAN은 세그먼트화된 네트워크 또는 원격 공격자를 시뮬레이션하기 위해 GOAD 및 XZ 백도어 호스트 외부에 있습니다. Kali VM VLAN을 10/20으로 변경하여 '침해 가정' 또는 내부 공격 시나리오를 시뮬레이션할 수 있습니다.
global_role_vars:
ludus_elastic_fleet_server: "https://<fleet_domain>:<fleet_port>" #443 by default for cloud ## Note on prem fleet server defaults to 8220
ludus_elastic_agent_version: "9.2.1"
ludus:
- vm_name: "{{ range_id }}-GOAD-DC01"
hostname: "{{ range_id }}-DC01"
template: win2019-server-x64-template
vlan: 10
ip_last_octet: 10
ram_gb: 4
cpus: 2
windows:
sysprep: true
dns_rewrites: # Any values in this array will be added to DNS for the range and return an A record for this VM's IP
- sevenkingdoms.local
- kingslanding.sevenkingdoms.local
- kingslanding
roles:
- badsectorlabs.ludus_elastic_agent
role_vars:
ludus_elastic_enrollment_token: "<goad_policy_enrollment_token>"
- vm_name: "{{ range_id }}-GOAD-DC02"
hostname: "{{ range_id }}-DC02"
template: win2019-server-x64-template
vlan: 10
ip_last_octet: 11
ram_gb: 4
cpus: 2
windows:
sysprep: true
dns_rewrites:
- winterfell.north.sevenkingdoms.local
- north.sevenkingdoms.local
- winterfell
roles:
- badsectorlabs.ludus_elastic_agent
role_vars:
ludus_elastic_enrollment_token: "<goad_policy_enrollment_token>"
- vm_name: "{{ range_id }}-GOAD-DC03"
hostname: "{{ range_id }}-DC03"
template: win2016-server-x64-template
vlan: 10
ip_last_octet: 12
ram_gb: 4
cpus: 2
windows:
sysprep: true
dns_rewrites:
- essos.local
- meereen.essos.local
- meereen
roles:
- badsectorlabs.ludus_elastic_agent
role_vars:
ludus_elastic_enrollment_token: "<goad_policy_enrollment_token>"
- vm_name: "{{ range_id }}-GOAD-SRV02"
hostname: "{{ range_id }}-SRV02"
template: win2019-server-x64-template
vlan: 10
ip_last_octet: 22
ram_gb: 4
cpus: 2
windows:
sysprep: true
dns_rewrites:
- castelblack.north.sevenkingdoms.local
- castelblack
roles:
- badsectorlabs.ludus_elastic_agent
role_vars:
ludus_elastic_enrollment_token: "<goad_policy_enrollment_token>"
- vm_name: "{{ range_id }}-GOAD-SRV03"
hostname: "{{ range_id }}-SRV03"
template: win2019-server-x64-template
vlan: 10
ip_last_octet: 23
ram_gb: 4
cpus: 2
windows:
sysprep: true
dns_rewrites:
- braavos.essos.local
- braavos
roles:
- badsectorlabs.ludus_elastic_agent
role_vars:
ludus_elastic_enrollment_token: "<your_enrollment>"
- vm_name: "{{ range_id }}-xz-backdoor-dect"
hostname: "{{ range_id }}-xz-backdoor-dect"
template: debian-12-x64-server-template
vlan: 20
ip_last_octet: 1
ram_gb: 2
cpus: 2
linux:
packages: # You can define packages to install on Linux hosts
- ca-certificates
- netcat-openbsd
- net-tools
roles:
- badsectorlabs.ludus_xz_backdoor
- badsectorlabs.ludus_elastic_agent
role_vars:
ludus_xz_backdoor_install_xzbot: true
ludus_xz_backdoor_install_backdoor: true
ludus_elastic_enrollment_token: "<linux_policy_enrollment_token>"
- vm_name: "{{ range_id }}-kali"
hostname: "{{ range_id }}-kali"
template: kali-x64-desktop-template
vlan: 50
ip_last_octet: 99
ram_gb: 8
cpus: 4
linux: true
testing:
snapshot: false # Snapshot this VM going into testing, and revert it coming out of testing. Default: true
block_internet: false # Allow internet access for Kali, default is true
roles:
- badsectorlabs.ludus_xz_backdoor
- badsectorlabs.ludus_elastic_agent
role_vars:
ludus_xz_backdoor_install_xzbot: true
ludus_elastic_enrollment_token: "<linux_policy_enrollment_token>"
이 게시물에서 설명된 기능이나 성능의 출시와 일정은 Elastic의 단독 재량에 따라 결정됩니다. 현재 제공되지 않는 기능이나 성능은 예정된 시간에 출시되지 않을 수도 있으며 아예 제공되지 않을 수도 있습니다.
