Najczystszy sposób na uzyskanie surowych zdarzeń z QRadar to użycie Ariel REST API. Uruchom zapytanie AQL, które wybiera UTF8(payload), poczekaj na zakończenie wyszukiwania i pobierz wyniki jako JSON. Otrzymujesz oryginalne linie logów dokładnie takie, jakie wysłały twoje źródła logów. Karta Log Activity też może eksportować wyniki wyszukiwania, ale nie w formacie, który dziś odczytuje LogTotal.
QRadar jest centrum wielu SOC-ów i prędzej czy później ktoś potrzebuje kawałka jego danych poza konsolą: partner od IR, druga opinia, szybkie sprawdzenie bez tworzenia nowej reguły. Prime Core ma 23 656 reguł detekcji dla QRadar, przypisanych do 674 technik MITRE ATT&CK. Poniżej znajdziesz, jak wyciągnąć czysty fragment surowych wydarzeń, oczyścić go i bezpłatnie zbadać w LogTotal.
Ten przewodnik obejmuje QRadar SIEM, zarówno on-premises, jak i software. Jeśli Twoja firma korzystała z QRadar SaaS, który IBM sprzedał Palo Alto Networks w 2024 roku, możesz już przejść na Cortex XSIAM.
Zanim zaczniesz
Autoryzowany token usługi. Utwórz go w sekcji Admin → Authorized Services i nadaj mu datę wygaśnięcia. Token nosi rolę użytkownika i profil bezpieczeństwa. Profil bezpieczeństwa decyduje, które źródła logów i sieci może zobaczyć. Jeśli jest węższy niż twój własny, API cicho zwraca mniej wydarzeń niż to, co pokazuje Log Activity. To najczęstszy moment „gdzie zniknęły moje zdarzenia?” przy eksportach z QRadar.
Retencja. Zdarzenia żyją tak długo, jak pozwalają na to twoje segmenty retencji (Admin → Event Retention). Jeśli potrzebne okno jest starsze, nie ma nic do eksportu.
Dostęp do sieci. API działa na porcie HTTPS konsoli. Konsola często używa certyfikatów samopodpisanych; wskaż curl odpowiedni urząd CA z –cacert zamiast wyłączać weryfikację.
Krok 1: Napisz zapytanie AQL
Wybierz payload plus kilka pól dla kontekstu:
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'
Kilka uwag z doświadczenia:
- UTF8(payload) to ważna część. Bez niego, payload wraca jako zakodowane bajty, a nie czytelny tekst logu.
- Zawęż je. Filtruj według nazwy źródła logów lub według typu z LOGSOURCETYPENAME(devicetype) ILIKE '%Linux%’, i zachowaj wąskie okno.
- START / STOP dla dokładnych okien, LAST 24 HOURS dla względnych.
- Najpierw to przetestuj in Log Activity → Advanced Search. To samo AQL, a zobaczysz liczbę zdarzeń przed eksportem.
Zdarzenia Windows zebrane przez WinCollect przychodzą jako tekstowe payloady, a nie jako EVTX. To, co eksportujesz, to ten tekst.
Krok 2: Uruchom przez Ariel API
Zapisz to jako qradar_export.sh. Rozpoczyna wyszukiwanie, czeka na nie i zapisuje jeden surowy payload na linię:
#!/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. rozpocznij wyszukiwanie (-G umieszcza zapytanie w URL, -X POST utrzymuje metodę)
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. poczekaj, aż się skończy
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. pobierz wyniki: surowe payloady, jeden na linię
curl -sS -H "SEC: $TOKEN" -H "Accept: application/json"
"$QRADAR/api/ariel/searches/$SID/results" | jq -r '.events[].payload' > web-03_qradar_1019.log
Chcesz zamiast tego ustrukturyzowane zdarzenia, z czasem i źródłem logów jako polami? Wybierz te kolumny w AQL i użyj jq -c ’.events[]’ w ostatnim kroku. Otrzymasz jeden obiekt JSON na linię.
Dla bardzo dużych zestawów wyników, pobieraj wyniki strona po stronie z nagłówkiem Range, na przykład -H „Range: items=0-49999”, a następnie następne 50 000.
Krok 3: Prześlij, oczyść i przejrzyj w LogTotal
- Prześlij. Otwórz logtotal.com i wrzuć plik.
- Oczyść. Sprawdź, zanim przejdziesz dalej.
- Przejrzyj.
Kiedy coś pójdzie źle
| Objaw | Prawdopodobna przyczyna | Fix |
|---|---|---|
| 401 z API | Token nieważny, wygasły lub brak nagłówka SEC | Sprawdź nagłówek; utwórz nowy token |
| Mniej zdarzeń niż pokazuje Log Activity | Profil bezpieczeństwa tokena widzi mniej źródeł logów | Nadaj tokenowi profil odpowiadający dochodzeniu |
| Payloady wyglądają jak zakodowane niezrozumiałości | UTF8() pominięte w zapytaniu | Wybierz UTF8(payload) |
| Status wyszukiwania przechodzi na ERROR | Składnia AQL | Najpierw przetestuj zapytanie w Advanced Search |
| Wyniki są puste | Okno poza retencją lub błędna strefa czasowa | Sprawdź retencję; sprawdź strefę czasową konsoli |
| curl narzeka na certyfikat | Certyfikat samopodpisany konsoli | Użyj –cacert z urzędem CA konsoli |
FAQ
Czy mogę uzyskać pliki EVTX z QRadar?
Nie. QRadar przechowuje zdarzenia Windows jako tekstowe payloady. Aby uzyskać prawdziwe pliki EVTX, wyeksportuj je z hosta Windows.
A co z danymi przepływu?
Przepływy są w osobnej tabeli: zapytanie FROM flows zamiast FROM events. Są to zapisy połączeń sieciowych, nie logi, i są osobną analizą.