본문 바로가기

Wargame/CyberGround

[CyberGround] 천재 개발자의 배신, '프로젝트 키메라'가 어둠 속으로 사라지다

문제

링크: https://cyberground.team/scenarios/2

 

The Genius Developer’s Betrayal: Project Chimera Vanishes into Darkness

'MyAI', an AI startup at the heart of Silicon Valley, is receiving the hottest attention. They are at the forefront of 'neural interface' technology, which dire

cyberground.team

 

 

난이도: Medium

MITRE ATT&CK Tactics: Reconnaissance

 

시라니오 상세 설명: 

실리콘 밸리의 심장부에서 가장 뜨거운 주목을 받는 AI 스타트업, 'MyAI'. 이들은 인간의 뇌와 컴퓨터를 직접 연결하는 '뉴럴 인터페이스' 기술의 최전선에 서 있습니다. 그리고 그 중심에는 세상을 바꿀 혁신적인 기술, '프로젝트 키메라'가 있습니다.
하지만 화려한 스포트라이트 뒤편에는 짙은 그림자가 드리워져 있었습니다. 회사의 핵심 알고리즘을 설계한 천재 개발자 '알렉스'. 그는 자신의 헌신과 기여가 카리스마 넘치는 CEO의 업적으로 포장되는 현실에 깊은 배신감을 느끼고 있었습니다. 때마침 가족의 병원비로 인해 재정적 압박까지 심해지던 어느 날, 어둠 속에서 유혹의 손길이 닿아옵니다.
IT 업계의 배신자들을 전문적으로 포섭하는 것으로 악명 높은 정보 브로커, '미스터 Z'가 그에게 접촉한 것입니다. '프로젝트 키메라'의 설계도 원본을 넘기는 대가로, 알렉스가 평생 만져볼 수 없는 거액을 제안합니다. 결국, 오랜 고뇌 끝에 알렉스는 돌이킬 수 없는 선을 넘기로 결심합니다. 그는 평소 즐겨 사용하던 웹 브라우저 대신, IT 부서의 감시를 피할 수 있다고 생각한 파일 전송 도구를 이용해 서버에 조심스럽게 접근했습니다. 파일을 손에 넣은 그는 수많은 시스템 로그 파일처럼 보이도록 확장자를 바꾸고 평범한 이름으로 위장했지만, 파일 생성 기록까지는 미처 지우지 못했습니다.
당신은 이 회사의 유일한 보안 담당자입니다. 며칠 전, 익명의 내부 고발자로부터 "당신들 중 한 명이 늑대다. 키메라의 그림자를 자세히 들여다봐."라는 의문의 메시지를 받았습니다. 그리고 오늘, 퇴근 시간 직후 내부 파일 서버에서 '프로젝트 키메라' 관련 파일이 다운로드된 정황을 포착했습니다. 이제 당신의 손에 회사의 운명이 달렸습니다. 알렉스의 윈도우 PC에 남겨진 로그라는 디지털 발자국을 추적하여, 그가 훔친 기술의 행방을 밝혀내고 배신의 전모를 파헤쳐야 합니다.

 

시간 범위: 2025년 10월 21일 - 2025년 10월 24일

 

Open Log Analysis Console 접속

문제에서 제시된 시간 범위 설정한다.

 

문제 1: 알렉스의 PC 이름은?

1. winlog.computer_name 필드만 확인

 

2. 제출

 

 

 

문제 2: 의심 파일을 실행 시킨 프로세스의 전체 경로와 유저는?

1. winlog.event_id: 1 필터링

파일 실행 이벤트 ID는 event_id: 1이므로 필터링하여, 후보를 추려본다.

더보기

이벤트 ID 1: 프로세스 생성

프로세스 만들기 이벤트는 새로 만든 프로세스에 대한 확장 정보를 제공합니다. 전체 명령줄은 프로세스 실행에 대한 컨텍스트를 제공합니다. ProcessGUID 필드는 이벤트 상관 관계를 더 쉽게 만들기 위해 도메인 전체에서 이 프로세스에 대한 고유한 값입니다. 해시는 HashType 필드에 알고리즘이 있는 파일의 전체 해시입니다.

 

 

2. winlog.event_data.Image: powershell.exe 필터링

1) cmd.exe 필터링에서도 한 로그를 발견했지만, 

VMware Tools(vmtoolsd.exe)가 SYSTEM 권한으로 VM 기동 시 필요한 배치 파일을 cmd.exe를 통해 자동 실행한 정상 시스템 행위임을 확인하였다.

 

 

2) powershell.exe 필터링

    "winlog.event_data.ParentImage": [
      "C:\\Users\\Public\\torrent-downloader.exe"
    ],
    ...
    "winlog.event_data.CommandLine": [
      "powershell.exe -ExecutionPolicy Bypass -C \"Remove-Item -Path \\\"staged\\\" -recurse\""
    ],
    "winlog.event_data.User.keyword": [
      "DESKTOP-R9L8KCH\\admin"
    ]

powershell.exe를 실행시킨 부모 프로세스는 C:\Users\Public\torrent-downloader.exe임

이때 하필 기록 지우는 명령어이기도 함 수상띠니

 

 

3. torrent-downloader.exe가 실행된 로그 필터링

    "winlog.event_data.ParentUser": [
      "DESKTOP-R9L8KCH\\admin"
    ],
    "winlog.event_data.ParentCommandLine": [
      "\"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" "
    ],

얘의 부모 프로세스가 또 파워쉘이네?

 

 

4. 제출

 

 

 

문제 3: 의심 파일의 SHA1와 IMPHASH 값은?

1. 위 문제와 동일하게 torrent-downloader.exe가 실행된 로그 필터링하면 Hash값이 나온다.

2. 제출

 

 

문제 4: 알렉스가 유출한 데이터가 저장된 파일 경로는?

1. 다시 event id 1로 필터링

{
  "@timestamp": [
    "2025-10-22T12:03:00.086Z"
  ],
  "winlog.event_data.CommandLine": [
    "powershell.exe -ExecutionPolicy Bypass -C \"Compress-Archive -Path C:\\Windows\\system32\\staged -DestinationPath C:\\Windows\\system32\\staged.zip -Force;sleep 1; ls C:\\Windows\\system32\\staged.zip | foreach {$_.FullName} | select\""
  ],
  "winlog.event_data.Image": [
    "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
  ],

C:\Windows\system32\staged.zip 파일을 만든다.

명령어 구성 역할 설명
powershell.exe PowerShell 실행 PowerShell 인터프리터 실행
-ExecutionPolicy Bypass 정책 우회 로컬 실행 정책을 무시하고 명령 실행
-C 즉시 실행 뒤에 오는 문자열을 명령으로 실행
Compress-Archive 압축 파일·디렉터리를 ZIP으로 압축
-Path C:\Windows\system32\staged 입력 경로 압축 대상 디렉터리
-DestinationPath C:\Windows\system32\staged.zip 출력 경로 생성될 ZIP 파일 경로
-Force 강제 덮어쓰기 동일 파일 존재 시 덮어쓰기
sleep 1 지연 1초 대기하여 파일 생성 완료 보장
ls C:\Windows\system32\staged.zip 파일 확인 ZIP 파일 존재 여부 확인
foreach {$_.FullName} 경로 추출 파일의 전체 경로 출력
select 출력 정리 결과 객체를 표준 출력으로 반환

 

 

 

2. 이벤트 ID가 11이고,  생성된 파일의 이름을 필터링해서 교차검증을 수행한다.

파일 생성 및 덮어쓸 때 기록되는 이벤트 ID는 11!!

더보기

이벤트 ID 11: FileCreate
파일 생성 작업은 파일이 생성되거나 덮어쓸 때 기록됩니다. 이 이벤트는 시작 폴더와 같은 자동 시작 위치와 초기 감염 중에 맬웨어가 드롭되는 일반적인 위치인 임시 및 다운로드 디렉터리를 모니터링하는 데 유용합니다.

    "winlog.event_data.TargetFilename": [
      "C:\\Windows\\System32\\staged.zip"
    ],

TargetFilename 필드는 생성된 파일의 전체 경로이다.

 

 

3. 제출

 

 

 

문제 5: 공격자가 안티바이러스 정보 수집을 위해 사용한 도구와 실행 시간은?

1. 실행 관련 event_id 1로 필터링

더보기

이벤트 ID 1: 프로세스 생성
프로세스 만들기 이벤트는 새로 만든 프로세스에 대한 확장 정보를 제공합니다. 전체 명령줄은 프로세스 실행에 대한 컨텍스트를 제공합니다. ProcessGUID 필드는 이벤트 상관 관계를 더 쉽게 만들기 위해 도메인 전체에서 이 프로세스에 대한 고유한 값입니다. 해시는 HashType 필드에 알고리즘이 있는 파일의 전체 해시입니다.

 

 

2. *WMI를 통해 Windows 내부 정보를 조회하기 위한 수단 필터링

명령어 사용 설명
Get-WmiObject PowerShell WMI 정보를 조회하는 PowerShell 명령
Get-CimInstance PowerShell CIM/WMI 정보를 조회하는 최신 PowerShell 명령
wmic cmd, PowerShell WMI를 명령줄에서 조회하는 실행 파일

 

 

3. 안티바이러스 정보 수집 로그 필터링

명령어 설명
SecurityCenter WMI의 보안 제품 전용 네임스페이스 (root\SecurityCenter / SecurityCenter2)
AntiVirusProduct SecurityCenter 내 안티바이러스 정보 클래스

 

1) Get-WmiObject

외부 실행 파일(torrent-downloader.exe)이 관리자 권한으로 PowerShell을 통해 WMI(SecurityCenter)의  AntiVirusProduct 클래스를 조회함으로써 시스템에 설치된 안티바이러스 제품 정보를 수집한 행위를 기록한 로그

{
  "@timestamp": [
    "2025-10-22T12:00:55.980Z"
  ],
  "winlog.event_data.CommandLine": [
    "powershell.exe -ExecutionPolicy Bypass -C \"$NameSpace = Get-WmiObject -Namespace \\\"root\\\" -Class \\\"__Namespace\\\" | Select Name | Out-String -Stream | Select-String \\\"SecurityCenter\\\";$SecurityCenter = $NameSpace | Select-Object -First 1;Get-WmiObject -Namespace \\\"root\\$SecurityCenter\\\" -Class AntiVirusProduct | Select DisplayName, InstanceGuid, PathToSignedProductExe, PathToSignedReportingExe, ProductState, Timestamp | Format-List;\""
  ],
  "winlog.event_data.Image": [
    "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
  ],
명령어 구성 역할 설명
powershell.exe -ExecutionPolicy Bypass -C 실행 설정 PowerShell 실행 정책을 무시하고(Command 실행 허용) 단일 명령 블록을 실행
Get-WmiObject -Namespace "root" -Class "__Namespace" 네임스페이스 열거 WMI root 하위에 존재하는 모든 네임스페이스 목록을 조회
Select Name 필드 선택 네임스페이스 이름(Name)만 추출
Out-String -Stream 문자열 변환 결과를 문자열 스트림으로 변환
Select-String "SecurityCenter" 필터링 SecurityCenter 문자열이 포함된 네임스페이스만 선별
$SecurityCenter = … | Select-Object -First 1 변수 저장 탐지된 SecurityCenter 네임스페이스 중 첫 번째 값을 변수에 저장
Get-WmiObject -Namespace "root\$SecurityCenter" -Class AntiVirusProduct AV 정보 조회 SecurityCenter(2) 네임스페이스의 AntiVirusProduct 클래스 조회
Select DisplayName, InstanceGuid, PathToSignedProductExe, PathToSignedReportingExe, ProductState, Timestamp 핵심 정보 선택 안티바이러스 이름, GUID, 실행 파일 경로, 상태, 시간 정보만 추출
Format-List 출력 형식 결과를 리스트 형태로 정렬하여 출력

 

 

2) wmic

외부 실행 파일(torrent-downloader.exe)이 관리자 권한으로 PowerShell을 통해 wmic.exe를 호출하여 WMI SecurityCenter2 네임스페이스의 AntiVirusProduct 클래스를 조회한 안티바이러스 정보 수집 행위를 기록한 로그

{
  "@timestamp": [
    "2025-10-22T11:59:12.576Z"
  ],
  "winlog.event_data.CommandLine": [
    "powershell.exe -ExecutionPolicy Bypass -C \"wmic /NAMESPACE:\\\\root\\SecurityCenter2 PATH AntiVirusProduct GET /value\""
  ],
  "winlog.event_data.Image": [
    "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
  ],
명령어 구성 역할 설명
powershell.exe 실행 환경 PowerShell 프로세스 실행
-ExecutionPolicy Bypass 정책 우회 PowerShell 실행 정책을 무시하고 명령 실행
-C 단일 명령 실행 문자열로 전달된 명령을 실행 후 종료
wmic WMI 도구 Windows 내장 WMI 커맨드라인 유틸리티
/NAMESPACE:\\root\SecurityCenter2 조회 위치 안티바이러스 정보가 저장되는 WMI 보안 센터 네임스페이스
PATH AntiVirusProduct 조회 대상 설치된 안티바이러스 제품 정보를 나타내는 WMI 클래스
GET /value 출력 방식 모든 속성을 속성=값 형태로 출력

 

 

4. wmic.exe가 실행된 로그 필터링

해당 로그는 PowerShell을 통해 wmic.exe를 실행하여 WMI SecurityCenter2 네임스페이스의 AntiVirusProduct 클래스를 조회한 안티바이러스 정보 수집 행위가 실제로 수행되었음을 보여주는 Sysmon 프로세스 생성 이벤트

{
  "@timestamp": [
    "2025-10-22T11:59:12.678Z"
  ],
  "winlog.event_data.CommandLine": [
    "\"C:\\Windows\\System32\\Wbem\\WMIC.exe\" /NAMESPACE:\\\\root\\SecurityCenter2 PATH AntiVirusProduct GET /value"
  ],
  "winlog.event_data.Image": [
    "C:\\Windows\\System32\\wbem\\WMIC.exe"
  ],
  "winlog.event_data.ParentCommandLine": [
    "powershell.exe -ExecutionPolicy Bypass -C \"wmic /NAMESPACE:\\\\root\\SecurityCenter2 PATH AntiVirusProduct GET /value\""
  ],
  "winlog.event_data.ParentImage": [
    "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
  ],
  "winlog.event_data.UtcTime": [
    "2025-10-22 11:59:12.672"
  ],

 

명령어는 바로 위에서 설명했으므로 생략..

 

 

5. 제출

 

 

문제 6: 공격자가 수집한 파일의 확장자명을 순서대로 전부 기록하시오

1. event id: 1, image: powershell.exe으로 필터링

우선 문제4를 풀면서 공격자는 staged 디렉터리를 만들고, 압축하는 등의 과정을 파워쉘로 수행했으므로 

실행 관련 이벤트 아이디인 1, 실행 프로세스인 이미지를  powershell.exe로 필터링한다.

wav 관련 명령어를 실행한 로그의 parentiamge가 -로 되어 있어서, parentiamge: torrent-downloader.exe로 필터링하면 wav가 안 나온다. (이것땜에 좀 빙빙 돌았다...)

 

 

2. torrent-downloader.exe가 다운로드된 후 ~ zip 파일이 삭제되기 전까지의 CommandLine을 확인

명령어 구성 역할 설명
powershell.exe PowerShell 실행 Windows PowerShell 콘솔 실행
-ExecutionPolicy Bypass 실행 정책 무시 시스템의 PowerShell 실행 제한을 무시
-C Command 옵션 뒤의 문자열을 PowerShell 명령으로 실행
Get-ChildItem 파일/디렉터리 열거 지정 경로의 파일 시스템 객체 나열
C:\Users 탐색 시작 경로 모든 사용자 프로필 하위 디렉터리
-Recurse 재귀 탐색 하위 폴더를 모두 포함하여 탐색
-Include *.yml, *.wav, *.png 확장자 필터 .yml, .wav, .png 확장자 파일만 대상
-ErrorAction 'SilentlyContinue' 오류 무시 접근 거부 등 오류 발생 시 메시지 출력 없이 계속 진행
foreach {$_.FullName} 전체 경로 출력 각 파일 객체의 절대 경로만 추출
Select-Object -first 5 결과 제한 처음 발견된 5개 파일만 출력
exit 0 정상 종료 PowerShell 프로세스를 성공 코드(0)로 종료

 

 

3. 제출

 

문제 7: 알렉스가 데이터를 유출할 때 사용한 LogonId는?

1. 해당 명령어의 winlog.event_data.LogonId를 필터링

 

2. 제출

꼭 대문자로 쓰세요.. 소문자면 오류뜹니다..

 

 


NEW

1. event_id와 winlog.event_id의 차이

  event_id  winlog.event_id
로그 단계 원본 Windows 이벤트 수집·정규화된 로그
사용 환경 Event Viewer, evtx SIEM, EDR, 로그 서버
데이터 출처 Sysmon 자체 Sysmon → 수집기
Sysmon 설정 영향 X X

 

 

2. Windows 계정 표기 규칙

DOMAIN\Username

Windows 내부에서 로그온, 권한, 토큰을 식별할 때 쓰는 표준 형식이다.

JSON에서의 이스케이프(escape) 표기로 모든 역슬래쉬가 두 개이다.

 

 

3. WMI(Windows Management Instrumentation)

WMI는 Windows 운영체제가 관리 대상 리소스의 상태와 구성을 객체화하여, 관리·모니터링·자동화를 위해 표준화된 질의 방식으로 제공하는 관리 프레임워크다.

 

1) 구성요소

Namespace
 └─ Class
     └─ Instance
         ├─ Property
         └─ Method

 

구성 요소 설명 예시
Namespace 객체가 속한 관리 영역(폴더 개념) root\SecurityCenter2
Class 객체의 설계도(타입 정의) AntiVirusProduct
Instance 실제 시스템 상태를 반영한 객체 Windows Defender
Property 객체가 가진 속성(필드) displayName, productState
Method 객체가 수행할 수 있는 동작 (보통 조회 위주, 동작 메서드는 적음)

 

 

2) 자세한 설명

구분 설명
제공 주체 Windows 운영체제 WMI는 OS 커널 및 시스템 서비스가 수집·유지하는 관리 정보를, 운영체제가 공식적으로 노출하는 관리 인터페이스이다. 
목적 시스템 관리·모니터링·자동화 시스템 상태 조회, 설정 관리, 원격 관리, 관리 작업 자동화를 위해 설계된 관리 프레임워크이다. GUI 관리 도구의 내부 동작 기반이 된다.
접근 방식 WMI 쿼리(WQL), 관리 API 관리자는 WQL 질의 또는 관리 API를 통해 WMI 리포지토리에 저장된 객체(Class/Instance)를 조회하거나 제어한다.
정보 성격 관리용 시스템 메타데이터 사용자 데이터가 아니라, OS가 관리 대상을 설명하기 위해 유지하는 구조화된 정보(구성·상태·속성)이다.
사용 주체 관리 도구, 스크립트, 보안 솔루션 Windows 관리 도구, PowerShell 스크립트, 시스템 관리·보안 솔루션 등이 WMI를 통해 시스템 정보를 수집·관리한다.

 

 

4. 안티바이러스 정보

안티바이러스 정보는 Windows 시스템에 어떤 보안 제품이 설치되어 있으며, 현재 동작 상태가 어떠한지를 나타내는 보안 소프트웨어 메타데이터이다.

주로 SecurityCenter / SecurityCenter2 WMI 네임스페이스를 통해 관리된다.

 

1) AntiVirusProduct 클래스 속성

속성(Property) 의미 설명
displayName 제품 이름 설치되어 Security Center에 등록된 안티바이러스 제품의 표시 이름
instanceGuid 제품 고유 식별자 Security Center에서 해당 AV 인스턴스를 구분하기 위한 GUID
pathToSignedProductExe 제품 실행 파일 경로 디지털 서명된 주 실행 엔진의 경로
pathToSignedReportingExe 상태 보고용 실행 파일 Security Center에 상태를 보고하는 서명된 보고용 실행 파일 경로
productState 제품 동작 상태 활성/비활성, 실시간 보호 여부, 최신 상태 여부를 비트 필드로 인코딩한 값
timestamp 상태 갱신 시각 Security Center가 해당 제품 상태를 마지막으로 확인한 시점

 

 

5. 필드에 -로 처리되는 경우

해당 이벤트의 원본 데이터(Windows 커널/ETW)에서 그 필드에 대응되는 값이 존재하지 않거나, 수집 시점에 확보되지 않아 Sysmon이 값을 기록할 수 없었음을 의미한다. 그 결과 값을 추정하지 않고 -로 명시적으로 비워 둔다.