QRadar에서 원시 이벤트를 가져오는 가장 깔끔한 방법은 Ariel REST API입니다. UTF8(payload)을 선택하는 AQL 쿼리를 실행하고 검색이 완료될 때까지 기다린 다음 JSON 형태로 결과를 가져옵니다. 이렇게 하면 로그 소스가 보낸 원본 로그 라인을 정확히 얻을 수 있습니다. 로그 활동 탭에서도 검색 결과를 내보낼 수 있지만, 오늘날 LogTotal이 읽는 형식은 아닙니다.
QRadar는 많은 SOC의 중심에 위치하며, 결국 누군가는 콘솔 외부에서 그 데이터의 일부분이 필요하게 됩니다: IR 파트너, 두 번째 의견, 새로운 규칙을 만들지 않고 빠르게 확인하기 위해. Prime Core는 QRadar에 대해 23,656개의 탐지 규칙을 가지고 있으며, 674개의 MITRE ATT&CK 기술과 매핑됩니다. 아래는 원시 이벤트의 깔끔한 일부분을 끌어내고 이를 정리하여 LogTotal에서 무료로 조사하는 방법입니다.
이 가이드는 QRadar SIEM, 온프레미스 및 소프트웨어를 다룹니다. 회사가 2024년에 IBM이 Palo Alto Networks에 매각한 QRadar SaaS를 사용 중이라면 Cortex XSIAM으로 이동했을 수 있습니다.
시작하기 전에
승인된 서비스 토큰입니다. 아래에서 만드세요 관리자 → 승인된 서비스 만료일을 설정하세요. 이 토큰은 사용자 역할과 보안 프로파일을 갖습니다. 보안 프로파일은 보이는 로그 소스와 네트워크를 결정합니다. 그것이 나의 것보다 좁다면, API는 로그 활동이 보여주는 것보다 더 적은 이벤트를 조용히 반환합니다. 이것이 QRadar 내보내기에서 가장 흔한 ‘내 이벤트는 어디 갔나요?’ 순간입니다.
보존. 이벤트는 보존 버킷 허용 기간만큼 살아있습니다 (관리자 → 이벤트 보존). 필요한 윈도우가 그보다 오래된 경우, 내보낼 것이 없습니다.
네트워크 접근. API는 콘솔의 HTTPS 포트에서 실행됩니다. 콘솔은 종종 자체 서명된 인증서를 사용하는데, 검증을 끄는 것보다 올바른 CA와 –cacert를 지칭하세요.
1단계: AQL 쿼리 작성
컨텍스트를 위한 페이로드와 몇 가지 필드를 선택하세요:
SELECT DATEFORMAT(starttime, 'yyyy-MM-dd HH:mm:ss') AS event_time,
LOGSOURCENAME(logsourceid) AS log_source,
QIDNAME(qid) AS event_name,
UTF8(payload) AS payload
FROM events
WHERE LOGSOURCENAME(logsourceid) = 'web-03'
START '2026-10-19 00:00' STOP '2026-10-20 00:00'
경험에서 온 몇 가지 노트:
- UTF8(payload) 가 중요한 부분입니다. 그렇지 않으면, 페이로드는 인코딩된 바이트로 돌아오며, 읽을 수 있는 로그 텍스트가 아닙니다.
- 축소하세요. 로그 소스 이름 또는 유형으로 필터링하고 LOGSOURCETYPENAME(devicetype) ILIKE ‘%Linux%’와 같이 창을 빈틈없이 유지하세요.
- START / STOP 정확한 창에 대해, 지난 24시간에 대해 상대적인 것입니다.
- 먼저 테스트하세요 in 로그 활동 → 고급 검색. 이것은 동일한 AQL이며, 내보내기 전에 이벤트 수를 확인할 수 있습니다.
WinCollect를 통해 수집된 Windows 이벤트는 EVTX가 아니라 텍스트 페이로드로 도착합니다. 내보내는 것은 그 텍스트입니다.
2단계: Ariel API를 통해 실행
이를 qradar_export.sh로 저장하세요. 검색을 시작하고, 기다리고, 한 줄에 하나씩 원시 페이로드를 작성합니다:
#!/usr/bin/env bash
set -euo pipefail
QRADAR="https://qradar.example.com"
TOKEN="${QRADAR_TOKEN:?set QRADAR_TOKEN first}"
AQL="SELECT UTF8(payload) AS payload FROM events WHERE LOGSOURCENAME(logsourceid) = 'web-03' START '2026-10-19 00:00' STOP '2026-10-20 00:00'"
# 1. 검색 시작하기 (-G는 쿼리를 URL에, -X POST는 메서드를 유지)
SID=$(curl -sS -G -X POST -H "SEC: $TOKEN" -H "Accept: application/json"
--data-urlencode "query_expression=$AQL"
"$QRADAR/api/ariel/searches" | jq -r '.search_id')
# 2. 완료될 때까지 기다리기
while :; do
STATUS=$(curl -sS -H "SEC: $TOKEN" "$QRADAR/api/ariel/searches/$SID" | jq -r '.status')
[ "$STATUS" = "COMPLETED" ] && break
if [ "$STATUS" = "ERROR" ] || [ "$STATUS" = "CANCELED" ]; then echo "Search $STATUS"; exit 1; fi
sleep 5
done
# 3. 결과 가져오기: 한 줄에 하나의 원시 페이로드
curl -sS -H "SEC: $TOKEN" -H "Accept: application/json"
"$QRADAR/api/ariel/searches/$SID/results" | jq -r '.events[].payload' > web-03_qradar_1019.log
시간과 로그 소스를 필드로 갖는 구조화된 이벤트가 대신 필요하신가요? AQL에서 그 열을 선택하고 마지막 단계에서 jq -c ‘.events[]’를 사용하세요. 한 줄에 하나의 JSON 객체를 얻을 수 있습니다.
매우 큰 결과 세트의 경우, Range 헤더를 사용하여 페이지 단위로 결과를 가져오세요. 예를 들어, -H “Range: items=0-49999”, 그런 다음 다음 50,000.
3단계: LogTotal에서 업로드, 정리 및 검토
- 업로드. Open logtotal.com 파일을 드롭하세요.
- 정리. 계속하기 전에 살펴보세요.
- 검토.
문제가 발생할 때
| 증상 | 가능한 원인 | Fix |
|---|---|---|
| API로부터의 401 | 토큰이 유효하지 않거나 만료되었거나 SEC 헤더가 누락되었습니다 | 헤더를 확인하십시오; 새 토큰을 생성하십시오 |
| 로그 활동이 보여주는 것보다 적은 이벤트 | 토큰의 보안 프로파일이 더 적은 로그 소스를 봅니다 | 조사와 일치하는 프로파일을 토큰에 제공하십시오 |
| 페이로드가 인코딩된 의미 없는 문양처럼 보임 | 쿼리에서 UTF8()이 빠져 있습니다 | UTF8(payload)를 선택하십시오 |
| 검색 상태가 ERROR로 변경됨 | AQL 구문 | 먼저 고급 검색에서 쿼리를 테스트하십시오 |
| 결과가 비어 있음 | 보존 외부의 창이거나 시간대가 다릅니다 | 보존을 확인하십시오; 콘솔의 시간대를 확인하십시오 |
| curl이 인증서에 대해 불평 | 자체 서명된 콘솔 인증서 | 콘솔의 CA와 함께 –cacert를 사용하십시오 |
FAQ
QRadar에서 EVTX 파일을 가져올 수 있나요?
아니요. QRadar는 Windows 이벤트를 텍스트 페이로드로 저장합니다. 실제 EVTX 파일은 Windows 호스트에서 내보내세요.
흐름 데이터는 어떠세요?
흐름은 별도의 테이블에 있습니다: 이벤트 대신 흐름에서 쿼리합니다. 네트워크 연결 기록이지 로그가 아니며 별도의 분석입니다.