입문자입니다! 혹시 내용이 틀렸거나, 추가로 설명해주실 부분이 있다면 댓글 부탁드립니다!!
문제
링크: https://cyberground.team/scenarios/6
Rudolph's Betrayal: Targeting Santa's Secret Gift List
On Christmas Eve, anomalies were detected in the North Pole Santa HQ's security system. Trusted Rudolph has been caught secretly communicating with a C2 server,
cyberground.team
난이도: Easy
MITRE ATT&CK Tactics: Defense Evasion, Discovery, Collection, Execution, Command and Control
시라니오 상세 설명:
크리스마스 이브, 북극 산타 본부의 보안 시스템에서 이상 징후가 감지되었습니다.
믿었던 루돌프가 C2 서버와 몰래 통신하며 산타의 기밀 정보를 유출하려는 정황이 포착되었습니다.
당신은 북극 보안팀의 분석가로서, Sysmon 로그를 분석하여 루돌프의 악행을 낱낱이 밝혀내야 합니다!
시간 범위: 2025년 12월 3일 - 2025년 12월 6일
Open Log Analysis Console

문제에서 제시된 시간 범위 설정한다.
42,074hits...라고 한다.
문제 1: C2 서버의 DNS 조회 결과로 반환된 IP 주소 2개는 무엇인가요?
1. event_id를 22로 필터링
Sysmon Event ID 설명에 따르면 이벤트 ID 22: DNSEvent(DNS 쿼리)는 결과의 성공 여부, 캐시 여부에 관계없이 프로세스가 DNS 쿼리를 실행할 때 생성된다고 한다.
따라서 event_id를 22로 필터링하여, DNS관련 이벤트만 볼 수 있게 한다.
이벤트 ID 22: DNSEvent(DNS 쿼리)
이 이벤트는 결과의 성공 여부, 캐시 여부에 관계없이 프로세스가 DNS 쿼리를 실행할 때 생성됩니다. 이 이벤트에 대한 원격 분석은 Windows 8.1에 추가되었으므로 Windows 7 및 이전 버전에서는 사용할 수 없습니다.



199 hits로 줄었다!
2. DNS를 통신 채널로 사용할 수 있는 프로세스 필터링
다음 프로세스들은 사용자가 직접 실행하거나, 스크립트·파일에 의해 실행된다.
따라서 DNS를 통신 채널로 사용할 수 있다.
| 프로세스 | 속성 |
| powershell.exe | 스크립트 실행, 원격 명령 수신 |
| cmd.exe | 배치/명령 기반 실행 |
| rundll32.exe | DLL 코드 로드·실행 |
| mshta.exe | HTA/스크립트 실행 |
| python.exe | 스크립트 기반 통신 |

필터링 결과 powershell.exe 프로세스로 DNS 질의를 한 로그가 하나 확인된다.
"event_data.QueryName.keyword": [
"caldera.thecapelabs.com"
],
"event_data.QueryResults.keyword": [
"::ffff:104.21.30.119;::ffff:172.67.172.228;"
],
이때의 event_data.QueryResults 필드의 값은 ::ffff:104.21.30.119;::ffff:172.67.172.228; 이다.
해당 주소는 event_data.QueryResults 필드에 기록된 DNS 질의 응답 결과로, caldera.thecapelabs.com에 대한 *A 레코드(IPv4) 응답이 *IPv4-mapped IPv6 형식으로 반환된 것이다.
3. DNS 조회 결과로 나온 IP가 실제로 외부와 통신을 시도했는지 확인
Sysmon Event ID 3은 TCP/UDP 연결을 기록하므로,
event_id: 3 and event_data.DestinationIp 104.21.30.119 or 172.67.172.228를 필터링하여, 해당 IP가 외부와 통신을 시도했는지 확인할 수 있다.
이벤트 ID 3: 네트워크 연결
네트워크 연결 이벤트는 컴퓨터의 TCP/UDP 연결을 기록합니다. 기본적으로 사용하지 않도록 설정되어 있습니다. 각 연결은 ProcessId 및 ProcessGuid 필드를 통해 프로세스에 연결됩니다. 이벤트에는 원본 및 대상 호스트 이름 IP 주소, 포트 번호 및 IPv6 상태도 포함됩니다.

4. 제출

문제 2: 공격자가 시스템에서 실행 중인 프로세스 목록을 수집하기 위해 사용한 명령어와, 그 결과를 저장한 파일명은 무엇인가요?
1. event_id: 1 필터링
프로세스 만들기 이벤트는 새로 만든 프로세스에 대한 확장 정보를 제공합니다. 전체 명령줄은 프로세스 실행에 대한 컨텍스트를 제공합니다. ProcessGUID 필드는 이벤트 상관 관계를 더 쉽게 만들기 위해 도메인 전체에서 이 프로세스에 대한 고유한 값입니다. 해시는 HashType 필드에 알고리즘이 있는 파일의 전체 해시입니다.

2. powershell.exe 필터링
문제 1에서 공격자는 C2 서버를 통해 powershell.exe 프로세스를 실행하고 있으므로, 목록을 수집하기 위한 명령어도 powershell.exe를 통해 수행할 것이다.

3. event_data.CommandLinepowershell.exe 필드값 확인
powershell에서 프로세스 목록을 확인하는 명령어인 "tasklist", "Get-Process", "wmic process"을 필터링할 수도 있지만, 여기는 세 개밖에 없으므로 다 분석해보겠다! (다음 문제 스포라 뒤 첫 명령은 다음 문제에서 설명)
1)
powershell.exe -ExecutionPolicy Bypass -C "tasklist /m >> $env:APPDATA\vmtool.log;cat $env:APPDATA\vmtool.log"
| 구성 | 설명 |
| powershell.exe | PowerShell 인터프리터 실행 |
| -ExecutionPolicy Bypass | 현재 실행 인스턴스에서 실행 정책 무시 |
| -C | 뒤따르는 문자열을 PowerShell 명령으로 실행 |
| tasklist | 실행 중인 프로세스 목록 출력 |
| /m | 조회 옵션, 각 프로세스에 로드된 모듈(DLL) 정보 포함 |
| >> | 출력 리다이렉션, 출력 결과를 파일에 추가(Append) 방식으로 기록 |
| $env:APPDATA\vmtool.log | 저장 경로, 사용자 AppData 디렉터리 내 로그 파일 |
| ; | 명령 구분, 앞·뒤 명령을 순차적으로 실행 |
| cat | 파일 내용 출력 |
| $env:APPDATA\vmtool.log | 출력 대상 앞서 생성·갱신된 로그 파일 |
2)
powershell.exe -ExecutionPolicy Bypass -C Clear-History;Clear
| 구성 | 설명 |
| Clear-History | 현재 PowerShell 세션의 명령 실행 기록 삭제 |
| Clear | 콘솔 화면 출력 내용 제거 (Clear-Host 별칭) |
4. 제출

문제 3: 공격자가 사용자의 클립보드 내용을 수집하기 위해 사용한 Powershell cmdlet은 무엇인가요?
1. 명령어 해석
powershell.exe -ExecutionPolicy Bypass -C "Get-Clipboard -raw"
| 구성 | 설명 |
| powershell.exe | PowerShell 인터프리터 실행 |
| -ExecutionPolicy Bypass | 현재 실행 인스턴스에서 실행 정책 무시 |
| -C | 뒤의 문자열을 명령으로 실행 |
| Get-Clipboard | 시스템 클립보드 내용 조회 |
| -raw | 가공 없이 원본 그대로 출력 |
2. 제출

문제 4: 악성 파일의 SHA256 해시값은 무엇인가요?
1. 부모 프로세스 확인
powershell.exe를 실행시킨 부모 프로세스는 rudolf.exe이다.
해당 파일이 악성 파일이다.

2. event_data.Image: rudolf.exe 필터링
해당 프로세스가 실행된 로그를 필터링하고, 해당 파일릐 해시값을 확인한다.

3. 제출

NEW
1. DNS? 필드별 설명
| 필드 | 설명 |
| @timestamp | 로그가 수집되어 저장된 시각 |
| channel | 이벤트가 기록된 Windows 이벤트 로그 채널 |
| computer_name | 이벤트가 발생한 시스템의 호스트 이름 |
| event_id | Sysmon이 정의한 이벤트 유형 식별 번호 |
| task | Sysmon 이벤트의 작업 분류명 |
| opcode | 이벤트 동작 유형을 나타내는 코드 |
| version | Sysmon 이벤트 스키마 버전 |
| provider_name | 이벤트를 생성한 로그 공급자 이름 |
| provider_guid | 로그 공급자를 식별하는 GUID |
| record_id | 해당 로그 채널 내 이벤트의 순번 |
| _index | 로그가 저장된 인덱스 이름 |
| _id | 로그 문서의 고유 식별자 |
| _score | 검색 결과 점수 값 |
| event_data.Image | 이벤트를 발생시킨 프로세스 실행 파일 경로 |
| event_data.Image.keyword | event_data.Image의 정확 일치 검색용 필드 |
| event_data.ProcessId | 이벤트를 발생시킨 프로세스의 운영체제 프로세스 ID |
| event_data.ProcessId.keyword | 프로세스 ID의 키워드 필드 |
| event_data.ProcessGuid | Sysmon이 부여한 프로세스 고유 식별자 |
| event_data.ProcessGuid.keyword | 프로세스 GUID의 키워드 필드 |
| event_data.User | 이벤트 발생 프로세스를 실행한 사용자 계정 |
| event_data.User.keyword | 사용자 계정의 정확 일치 검색용 필드 |
| event_data.UtcTime | 이벤트가 실제로 발생한 시각(UTC) |
| event_data.UtcTime.keyword | 발생 시각의 키워드 필드 |
| event_data.QueryName | DNS 질의 대상 이름 |
| event_data.QueryName.keyword | DNS 질의 대상의 정확 일치 검색용 필드 |
| event_data.QueryResults | DNS 질의에 대한 응답 결과 데이터 |
| event_data.QueryResults.keyword | DNS 응답 결과의 정확 일치 검색용 필드 |
| event_data.QueryStatus | DNS 질의 처리 결과 상태 코드 |
| event_data.QueryStatus.keyword | 질의 상태 코드의 키워드 필드 |
| event_data.RuleName | 이벤트를 발생시킨 Sysmon 규칙 이름 |
| event_data.RuleName.keyword | 규칙 이름의 키워드 필드 |
| user.domain | 사용자 계정이 속한 도메인 |
| user.domain.keyword | 사용자 도메인의 키워드 필드 |
| user.name | 사용자 계정 이름 |
| user.name.keyword | 사용자 이름의 키워드 필드 |
| user.identifier | 사용자 계정의 보안 식별자(SID) |
| user.identifier.keyword | SID의 키워드 필드 |
| user.type | 사용자 계정 유형 |
| user.type.keyword | 사용자 유형의 키워드 필드 |
| process.pid | 이벤트 기록 시점의 프로세스 ID |
| process.thread.id | 이벤트 발생 시점의 스레드 ID |
2. DNS를 통신 채널로 사용할 수 있는 프로세스
-> 보충 설명
3. DNS 레코드
| type # | 레코드 | DNS | 설명 | Sysmon 로그에서 보이는 형태 |
| 1 | A | 도메인 → IP | IPv4 주소 반환 | ::ffff:x.x.x.x 또는 x.x.x.x |
| 5 | CNAME | 도메인 → 도메인 | 별칭(alias) | type: 5 example.cdn.net; |
| 12 | PTR | IP → 도메인 | Reverse DNS | type: 12 host.example.com; |
| 16 | TXT | 도메인 → 텍스트 | 데이터 전달 | type: 16 "data..." |
| 28 | AAAA | 도메인 → IPv6 | IPv6 주소 | type: 28 2001:db8::1 |
4. IPv4-mapped IPv6 형식
::ffff:x.x.x.x 형식은 IPv4 주소를 IPv6 환경에서 표현하기 위한 표준 표현 방식이다.
5. event_data.Hashes
Sysmon Event ID 1의 event_data.Hashes는 새로 실행된 프로세스의 실행 파일에 대해 Sysmon이 계산한 해시 값을 기록한 필드이다.
야호 성공!

'Wargame > CyberGround' 카테고리의 다른 글
| [CyberGround] 가장 신뢰했던 업데이트, 월스트리트를 향한 비수가 되다 (0) | 2026.02.21 |
|---|---|
| [CyberGround] 도서관 PC의 은밀한 손님 (2) | 2026.02.14 |
| [CyberGround] 반도체 심장을 노리는 그림자, '닉탈롭스'의 침투 (1) | 2026.02.14 |
| [CyberGround] 천재 개발자의 배신, '프로젝트 키메라'가 어둠 속으로 사라지다 (0) | 2025.12.28 |