1. 개요
최근 국내에서 대형 침해 사고가 연이어 발생하면서 사이버 보안에 대한 경각심이 사회 전반에 확산되고 있다. 이와 함께 EDR(Endpoint Detection & Response) 솔루션 도입에 대한 관심도 높아지고 있다.
AI 기술의 발전으로 사이버 공격이 자동화되고 공격 수행 속도 역시 빨라지면서, 위협 탐지 후 신속하고 정확한 초동 대응과 데이터 수집의 중요성은 더욱 커지고 있다.
그러나, 재택근무의 보편화, DR(Disaster Recovery) 필요성 증가, 클라우드 인프라 확장 등으로 인해 기존처럼 물리적으로 접근해 데이터를 수집하는 방식은 점점 어려워지고 있다.
수집 대상이 물리적으로 멀리 떨어져 있거나 VPN에 연결되어 있지 않은 경우, NAT/방화벽 뒤에 위치한 호스트라면 수집까지 많은 시간이 걸릴 수 밖에 없다.
이러한 상황에서 CrowdStrike Falcon 플랫폼이 제공하는 RTR(Real-Time Response) 기능은 별도의 네트워크 설정 변경 없이 기존에 설치된 센서를 통해 즉시 호스트에 접근할 수 있어, 빠르고 효율적인 데이터 수집을 가능하게 한다.
따라서, 본 글에서는 CrowdStrike Falcon 플랫폼의 RTR 기능을 활용해 원격 호스트에서 데이터를 수집하는 방법에 대해 알아보고자 한다.
2. CrowdStrike RTR(Real-Time Response)?

Real-Time Response(이하 RTR)는 CrowdStrike Falcon 플랫폼이 제공하는 원격 호스트 제어 기능이다. 보안 담당자는 네트워크를 통해 호스트에 직접 접근하지 않아도 원격 명령 실행, 파일 업/다운로드, 스크립트 실행 등을 수행할 수 있다.
기존 원격 관리 도구가 특정 리스닝 포트로 들어오는 인바운드 연결을 요구하는 것과 달리, RTR은 Falcon 센서가 CrowdStrike 클라우드와 유지하는 지속적인 아웃바운드 연결을 활용한다. 이 구조 덕분에 NAT(Network Address Translation) 환경, VPN 뒤에 위치한 호스트, 방화벽 정책이 적용된 호스트라도 별도의 네트워크 설정을 변경할 필요 없이 접근할 수 있다.
또한, RTR 세션은 운영체제의 사용자 인터페이스와 독립적으로 동작한다. 따라서, 사용자나 공격자에게 노출되지 않은 상태로 백그라운드 작업을 수행할 수 있다. 분석가는 화면을 띄우거나 시스템 리소스를 크게 점유하지 않고도 파일 시스템 탐색, 메모리 덤프, 데이터 수집을 진행할 수 있다.
Real-Time Response(RTR) 주요 특징
- 에이전트 기반: Falcon 센서가 설치된 호스트에서 즉시 사용 가능
- 포트 개방 불필요: HTTPS 기반 아웃바운드 통신 수행
- 다양한 OS 지원: Windows, Linux, macOS 지원
- 스크립트 실행: Bash, PowerShell 등 스크립트 실행 가능
- API 제공: RTR 자동화 및 SOAR 연동 가능
Real-Time Response(RTR) 기능 요구 사항
Falcon RTR을 사용하기 위해서는 다음과 같은 요구 사항이 존재한다.
| 요구 사항 구분 | 내용 |
|---|---|
| 시스템 요구 사항 |
+ Windows - PowerShell 3.0 버전 이상을 권장하며, 최소 2.0 버전이 필요 (PowerShell 언어 제한 모드 비활성화) - .NET Framework 4.5 버전 이상을 권장하며, 최소 3.5 버전이 필요 + Linux - Bash 3.0 버전 이상 필요 + macOS - Z Shell(zsh) 필요 |
| 정책 요구 사항 |
+ RTR 기능을 사용하기 위해서는 대응 정책(Response policies) 내 'Real Time Response' 기능 활성화 필요 - 사용자 지정 스크립트와 고위험 명령어(get, put, memdump, run 등)는 별도 활성화 필요 |
| 사용자 권한 요구 사항 |
+ RTR 기능을 사용하기 위해서는 Falcon 사용자 계정에 'Real Time Responder' 역할에 대한 권한 필요 - Administrator: 시스템 변경이나 데이터 추출을 포함한 모든 명령어(put, get, runscript, memdump, kill 등)를 실행 가능 - Active Responder: 주로 정보 수집을 위한 읽기 전용 명령어(ls, ps, netstat, reg query 등)만 실행 가능 |
3. 수집 사전 준비
RTR을 통해 원격 수집하기 전에 수집에 사용될 스크립트를 먼저 CrowdStrike Falcon에 업로드해야 한다.
호스트 데이터를 수집하는 스크립트는 여러 종류가 있지만, RTR 기반의 원격 수집에는 추가 입력 없이 자동으로 실행되는 스크립트가 적합하다. 이러한 유형의 스크립트로는 Windows 환경의 KAPE, Linux 환경의 UAC 등이 대표적이다.
수집 스크립트 업로드
CrowdStrike Falcon Console의 'Response scripts and files' 메뉴에서 호스트에 업로드할 파일들을 관리할 수 있다.
업로드 시간이 5분 이상 소요될 경우 타임아웃이 발생할 수 있으며, 운영체제별로 파일크기 제한이 존재한다. Windows와 macOS는 최대 4GB, Linux는 최대 2GB까지 업로드할 수 있다.
'File name' 필드에는 호스트에 업로드될 파일의 이름을 입력해야 한다. 이때 확장자를 포함해 작성해야 해당 확장자를 가진 파일로 업로드된다.

4. 원격 수집(with RTR)
Windows 원격 수집
Windows 환경에서 RTR을 이용한 원격 수집을 위해 KAPE(Kroll Artifact Parser and Extractor)를 사용한다. KAPE는 Windows 포렌식에서 널리 사용되는 수집 도구 중 하나로 CLI로 실행이 가능하고, 실행 과정에서 별도의 입력(수집 항목 지정, 비밀번호 입력 등)을 요구하지 않아 RTR을 통해 수집하는데 적합하다.
1) KAPE 업로드 및 압축 해제
- 수집 사전 준비 단계에서 미리 업로드한 KAPE 압축 파일을 호스트의 작업 디렉토리에 업로드 후 7-Zip 프로그램(7za.exe)을 통해 압축 해제한다.
mkdir C:\Temp\collect
cd C:\Temp\collect
put "kape.zip"
put "7za.exe"
runscript -Raw=```C:\Temp\collect\7za.exe x C:\Temp\collect\kape.zip``` -Timeout=60
2) 수집 프로그램(KAPE) 동작
- 압축 해제된 KAPE 프로그램을 동작 시킨다.
cd "KAPE"
runscript -Raw=```C:\Temp\collect\KAPE\kape.exe --tsource C: --tdest C:\Temp\collect\Output --tflush --target !BasicCollection --zip Result``` -Timeout=9999
3) 수집 결과 다운로드
- 수집 종료 후 결과 파일을 다운로드한다. 파일은 'infected'로 암호화된 압축 파일 형태로 다운로드 되며, 파일의 크기가 4GB를 넘어갈 경우 분할 후 다운로드 받아야 한다.
get "%수집 스크립트 결과 파일 명%"
Linux 원격 수집
Linux 환경에서 RTR을 이용한 원격 수집을 위해 UAC(Unix-like Artifacts Collector)를 사용한다. UAC는 Linux, AIX, Solaris 등 다양한 Unix 계열 시스템에서 포렌식 아티팩트를 수집할 수 있는 스크립트 도구로 실행 과정에서 별도의 입력(수집 항목 지정, 비밀번호 입력 등)을 요구하지 않아 RTR을 통해 수집하는데 적합하다.
Linux용 Falcon 센서는 root 권한으로 동작하기 때문에, RTR 세션에서 실행되는 모든 명령어(runscript 포함)는 기본적으로 root 권한을 가져 sudo 명령어를 사용할 필요가 없다. 오히려 sudo 명령어를 사용할 경우 비밀번호 입력을 위한 TTY(TeleTypewriter)가 없어 명령어 실행에 실패할 수 있다.
1) UAC 업로드 및 압축 해제
- 수집 사전 준비 단계에서 미리 업로드한 UAC 압축 파일을 호스트의 작업 디렉토리에 업로드 후 압축 해제한다.
mkdir /tmp/collect
cd /tmp/collect
put "uac.tar.gz"
runscript -Raw=```tar -zxf uac.tar.gz``` -Timeout=60
2) 수집 스크립트(UAC) 동작
- 압축 해제된 UAC 스크립트를 동작 시킨다. RTR 세션이 타임아웃 되는 경우 수집 프로세스가 중단될 수 있어 백그라운드에서 실행되도록 하고 출력 메시지를 별도의 파일에 리다이렉션해 진행 사항을 확인한다.
cd "uac-3.2.0"
runscript -Raw=```bash -c "./uac -p ir_triage -v /tmp/uac &" >>/tmp/uac/uac.run.log``` -Timeout=9999
runscript -Raw=```cat uac.run.log | tail -10```
3) 수집 결과 다운로드
- 수집 종료 후 결과 파일을 다운로드한다. 파일은 'infected'로 암호화된 압축 파일 형태로 다운로드 되며, 파일의 크기가 4GB를 넘어갈 경우 분할 후 다운로드 받아야 한다.
get "%수집 스크립트 결과 파일 명%"
5. 수집 제약 사항
CrowdStrike Falcon 플랫폼의 RTR 기능은 강력하지만, 클라우드 기반 아키텍처 특성상 파일 크기 제한, 세션 및 타임아웃 관리 등의 제약 사항이 존재한다. 하지만, 다른 방안들을 적용함으로써 제약 사항을 충분히 우회할 수 있다.
파일 크기 제한
메모리 덤프나 전체 디스크 이미지를 수집하는 경우 수집 결과 파일의 크기가 몇 백 GB를 넘어가는데, RTR의 'get' 명령어로 다운로드할 수 있는 단일 파일의 최대 크기는 4GB로 제한되어 있다. 따라서, 수집 결과 파일의 크기가 4GB를 넘어가는 경우 파일을 분할해야 한다.
- Windows
- 수집 과정에서 배포한 7-Zip 프로그램(7za.exe)을 활용해 파일을 분할한다.
runscript -Raw=```C:\Temp\collect\7za.exe a -v3g "%수집 스크립트 결과 파일 명%"```- Linux/macOS
- 기본적으로 'split' 명령어나 'zip' 명령어를 사용할 수 있어 해당 명령어를 활용해 파일을 분할한다.
runscript -Raw=```split -b 3000M "%수집 스크립트 결과 파일 명%"```
runscript -Raw=```zip -s 3g "%수집 스크립트 결과 파일 명%"```세션 및 타임아웃 관리
RTR의 명령어는 지정된 타임아웃을 초과하면, 센서가 실행 중인 프로그램 또는 스크립트의 프로세스를 강제 종료 시킨다. 또한, RTR 세션이 종료되면 해당 세션에서 실행시킨 프로세스는 종료된다. 따라서, 수집을 정상적으로 완료하기 위해서는 세션과 타임아웃 관리가 필수적이다.
RTR에서 타임아웃은 크게 명령어 타임아웃과 세션 타임아웃으로 구분된다.
- 명령어 타임아웃
- 명령어는 기본적으로 30~60초의 타임아웃을 가지며, 'runscript' 실행 시 '-Timeout' 파라미터를 지정해 명령어 실행 시간을 연장할 수 있다.
- 세션 타임아웃
- 사용자의 입력이 없으면 10~15분 후 RTR 세션이 종료된다.
수집 대상 호스트의 저장된 데이터 용량에 따라 수집 시간이 예측 불가능하기 때문에, 수집 프로세스를 RTR 세션과 분리해 독립적으로 실행시켜야 한다.
- Windows
- PowerShell의 'Start-Process' 명령어를 활용해 프로그램과 스크립트를 백그라운드로 동작 시킨다.
runscript -Raw=```Start-Process kape.exe -ArgumentList "--tsource C: --tdest C:\Temp\collect\Output --tflush --target !BasicCollection --zip Result" -WindowStyle Hidden```- Linux/macOS
- 'nohup' 또는 백그라운드 연산자(&)를 활용해 프로그램과 스크립트를 백그라운드로 동작 시킨다.
runscript -Raw=```nohup ./uac -p ir_triage -v /tmp/uac```
runscript -Raw=```./uac -p ir_triage -v /tmp/uac &```
