Cortex XDR 로그 내보내기 방법

Cortex XDR 로그 내보내기 방법

SOC Prime Team
SOC Prime Team linkedin icon 팔로우

XQL 쿼리 API를 사용하세요. /public_api/v1/xql/start_xql_query로 쿼리를 시작하면 실행 ID가 반환됩니다. JSON 형태로 /public_api/v1/xql/get_query_results에서 결과를 가져옵니다. 이 호출은 최대 1,000개의 결과를 인라인으로 반환하며, 그 이상의 결과는 /public_api/v1/xql/get_query_results_stream에 전달할 스트림 ID로 반환됩니다. 인증에는 두 개의 헤더가 사용됩니다: Authorization에 API 키를 입력하고, x-xdr-auth-id에 그 ID를 입력하세요.

Cortex XDR은 많은 배포에서 상세한 엔드포인트 원격 조정 및 네트워크, 아이덴티티 데이터를 수집합니다. Prime Core는 24,000개 이상의 고유한 탐지 규칙을 보유하고 있으며, 이는 676개의 MITRE ATT&CK 기법에 매핑됩니다. 아래에서는 LogTotal에서 데이터를 추출하고, 정제하고, 무료로 조사를 수행하는 방법을 설명합니다.

무료로 시작하기

시작하기 전에

API 키. Cortex XDR 설정에서 하나를 생성하세요 (표준 키 유형이 가장 간단합니다). XQL 쿼리를 실행할 수 있는 역할이 필요하며, 키와 그 ID를 기록하세요.

API URL. 키를 생성할 때 표시되며, https://api-<tenant>.xdr.<region>.paloaltonetworks.com의 형식으로 나타납니다.

라이선스 및 할당량. XQL API는 Cortex XDR Pro 라이선스가 필요합니다. 쿼리는 XQL 할당량을 소모하며, 최대 4개의 API 쿼리를 병렬로 실행할 수 있습니다.

데이터셋. 엔드포인트 원격 조정 데이터는 xdr_data에 있으며, agent_hostname, event_type, action_process_image_command_line 및 actor_process_image_name과 같은 필드를 포함합니다. 먼저 쿼리 빌더에서 쿼리를 구성하세요.

XQL API로 내보내기

XDR="https://api-<tenant>.xdr.<region>.paloaltonetworks.com"
H1="Authorization: $XDR_API_KEY"
H2="x-xdr-auth-id: $XDR_API_KEY_ID"

# 1. 쿼리를 시작합니다 (기간은 에포크 밀리초 기준)
QID=$(curl -sS -X POST "$XDR/public_api/v1/xql/start_xql_query" -H "$H1" -H "$H2" -H 'Content-Type: application/json'
-d '{"request_data": {"query": "dataset = xdr_data | filter agent_hostname = "WS-042" | fields _time, agent_hostname, event_type, action_process_image_name, action_process_image_command_line, actor_process_image_name", "timeframe": {"from": 1792368000000, "to": 1792454400000}}}'
| jq -r '.reply')

# 2. 결과를 기다립니다
while :; do
RESP=$(curl -sS -X POST "$XDR/public_api/v1/xql/get_query_results" -H "$H1" -H "$H2" -H 'Content-Type: application/json'
-d "{"request_data": {"query_id": "$QID", "pending_flag": true, "format": "json"}}")
[ "$(echo "$RESP" | jq -r '.reply.status')" != "PENDING" ] && break
sleep 5
done

# 3. 최대 1,000개의 결과는 인라인으로, 더 많은 결과는 스트림을 통해 획득
STREAM=$(echo "$RESP" | jq -r '.reply.results.stream_id // empty')
if [ -n "$STREAM" ]; then
curl -sS -X POST "$XDR/public_api/v1/xql/get_query_results_stream" -H "$H1" -H "$H2" -H 'Content-Type: application/json'
-d "{"request_data": {"stream_id": "$STREAM", "is_gzip_compressed": false}}" > xdr_ws042_1019.jsonl
else
echo "$RESP" | jq -c '.reply.results.data[]' > xdr_ws042_1019.jsonl
fi

위의 기간은 2026-10-19 00:00 UTC부터 2026-10-20 00:00 UTC까지입니다. 

LogTotal에서 업로드, 정제 및 검토

  1. 업로드. 열기 logtotal.com 그리고 파일을 드롭합니다.
  2. 정제. 
  3. 검토. 

문제가 발생할 때

증상가능한 원인Fix
401키와 키 ID가 교체되었거나 키가 만료됨Authorization에 키, x-xdr-auth-id에 ID
라이선스 오류XDR Pro 라이선스 없음XQL API는 XDR Pro가 필요함
할당량 오류XQL 할당량이 다 되었거나 4개 이상의 병렬 쿼리기다리거나 쿼리를 좁히세요
정확히 1,000개의 결과스트림이 사용되지 않음스트림 ID로 나머지를 가져오세요
쿼리 오류XQL 문법먼저 쿼리 빌더에서 테스트하세요

FAQ

사건과 경고를 내보낼 수 있나요?

네, 별도의 사건 및 경고 API를 통해 가능합니다. LogTotal의 경우, 그 뒤에 있는 원격 조정 데이터를 내보내세요.

원시 서드 파티 로그는 어떤가요?

Cortex에 수집하면, 그들은 자신의 데이터셋에 존재하며 동일한 방식으로 추출됩니다.

SOC Prime의 Detection as Code 플랫폼에 가입하세요 귀사의 비즈니스에 가장 중요한 위협에 대한 가시성을 개선하세요. 시작을 돕고 즉각적인 가치를 제공하기 위해 지금 SOC Prime 전문가와의 회의를 예약하세요.