본문 바로가기

Wargame/CyberGround

[CyberGround] 배신한 루돌프: 산타의 비밀 선물 리스트를 노린다

입문자입니다! 혹시 내용이 틀렸거나, 추가로 설명해주실 부분이 있다면 댓글 부탁드립니다!!

 

문제

링크: 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 필터링

 

더보기

이벤트 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이 계산한 해시 값을 기록한 필드이다.

 


야호 성공!