Як експортувати журнали з Splunk для аналізу безпеки

Як експортувати журнали з Splunk для аналізу безпеки

SOC Prime Team
SOC Prime Team linkedin icon Стежити

Коротка відповідь: запустіть пошук, натисніть Експорт на панелі інструментів під пошуковим рядком та оберіть Сирі події, CSV or JSON. Для кількох тисяч подій це все, що вам потрібно. Для більших вивантажень пропустіть браузер і використовуйте CLI пошуку splunk або точку експорту REST. Обидва потоково передають результати замість того, щоб змушувати Splunk Web створювати для вас один величезний файл.

Чому взагалі експортувати з Splunk, якщо дані вже індексовані? Зазвичай тому, що хтось поза вашої системою Splunk має їх переглянути: партнер з інцидентного реагування (IR), колега з іншої команди, або ви на ноутбуці без написання SPL протягом години. Prime Core має 23,674 правил виявлення для Splunk, які відповідають 676 технікам MITRE ATT&CK. Це маса логіки виявлення, яку ви можете застосувати до невеликої частини ваших даних, коли вони вже отримані. Нижче наведено, як отримати цю частину, очистити її та безкоштовно дослідити в LogTotal.

Почати безкоштовно

Коротко

МаршрутВикористовуйте його, колиЩо вам потрібно
Splunk Web → ЕкспортРазовий, невеликий експорт, ви вже відкрили пошукДоступ до індексу для пошуку
CLI пошуку splunkВи маєте shell на пошуковій голові Splunk EnterpriseДоступ до ОС + облікові дані Splunk
REST search/jobs/exportВеликі експорти, сценарії або Splunk CloudДоступ до порту управління (8089) + токен

Перш ніж почати

Три речі визначають, який маршрут підходить для вас: де працює ваш Splunk, що ваше роль може шукати, і чи дозволено вам виводити дані.

  • Доступ до індексу. Ви можете експортувати лише те, що ваша роль може шукати. Якщо пошук не дає результатів, але ви знаєте, що дані є, перевірте дозволені індекси вашої ролі, перш ніж переписувати SPL. Введіть index= у пошуку явно; не покладайтеся на індекси за замовчуванням.
  • Splunk Cloud проти Enterprise. На платформі Splunk Cloud немає оболонки, тому маршрут CLI не підходить. REST API також не ввімкнений за замовчуванням: хтось має запитати доступ для вашої стека, і безкоштовні пробні версії взагалі не можуть його використовувати. Експорт Splunk Web працює всюди.
  • Дозвіл на експорт. Сирі журнали містять імена користувачів, імена хостів, внутрішні IP, іноді токени у URL. LogTotal очищує завантаження перед аналізом, але політика обробки даних вашої компанії все ще діє. Отримайте дозвіл спочатку. Це займає п’ять хвилин, і вам захочеться мати його у письмовому вигляді, якщо це переросте в інцидент.

Команди нижче відповідають поточній документації Splunk для Splunk Enterprise і Splunk Cloud Platform, перевіреної в жовтні 2026 року. Посилання на кожну сторінку, яку ми використовували, наведено в кінці.

Крок 1: Обмежте пошук перед експортом

Найпоширеніша помилка – експорт цілого індексу «про всяк випадок». Ви отримуєте файл, який ніхто не бажає відкривати. Визначте, на яке запитання ви відповідаєте, потім уточніть індекс, sourcetype, хост і час:

index=linux sourcetype=linux_secure host=web-03 earliest=-24h@h latest=@h

Для подій безпеки Windows, зібраних додатком Splunk для Windows у режимі XML:

index=wineventlog source="XmlWinEventLog:Security" host=dc-01 earliest=-24h@h latest=@h

Два правила зберігають експорт корисним.

Зберігайте _raw. Якщо пошук закінчується на stats, table або chart, ви експортуєте зведення, а не журнали, і Splunk Web вимикає формат Сирі події. Експортуйте події, а не результати. Якщо ви вибираєте JSON, звужте витягнуті поля, щоб файл не збільшився втричі:

... | fields _time host source sourcetype _raw

Використовуйте абсолютний час, коли це важливо. earliest=-24h означає щось інше кожну хвилину. Якщо Splunk повинен повторно виконати ваш пошук під час експорту (докладніше про це нижче), відносне вікно може повернути дещо інший набір подій. Для усього, що пов’язано з інцидентом, використовуйте точні часові мітки.

Що потрібно знати про дані Windows: Splunk не зберігає оригінальні файли .evtx. Він індексує відображений текст події, XML або класичний формат ключ=значення. Тому ви експортуєте цей текст, а не двійковий EVTX.

Крок 2a: Експорт з Splunk Web

Добре для невеликих, разових експортів, коли пошук вже на вашому екрані.

  1. Запустіть пошук і дочекайтеся завершення роботи. Експорт працюючого завдання просто дає вам часткову картину.
  2. Натисніть Експорт (стрілка завантаження) в рядку дій завдання під пошуковим рядком.
  3. Обрати формат. Сирі події дають вам оригінальні журнальні рядки саме так, як вони були індексовані, що є тим, чого ви хочете для джерел у стилі syslog, таких як linux_secure. JSON зберігають хост, джерело та тип джерела поруч з кожною подією. Це допомагає, коли експорт охоплює кілька хостів.
  4. Назвіть файл так, щоб ви його впізнали через тиждень, наприклад web-03_sshd_2026-10-19.log.
  5. Залиште Кількість результатів порожнім, щоб експортувати все, що повернув пошук. Якщо ви введете 500, ви отримаєте перші 500, і нічого вам не покаже, що їх було більше.
  6. Натисніть Експорт.

Деталь, яка плутає людей: експорт працює з артефактів пошукового завдання, а не з того, що ви бачите у браузері. Якщо Splunk не зберіг кожен результат з завданням, діалогове вікно попереджає, що він перезапустить пошук спочатку. Це нормально. Просто це займає більше часу, саме тому абсолютний діапазон часу з Кроку 1 має значення. Дуже довгі експортування можуть також досягти тайм-ауту сеансу Splunk Web. Якщо експорт триває хвилинами, перейдіть на CLI або REST.

Крок 2b: Експорт з CLI Splunk (лише Enterprise)

Якщо у вас є оболонка на пошуковій голові, це найшвидший маршрут та найпростіший у сценарії. Увійдіть спершу, щоб ваш пароль не потрапив в історію оболонки так, як це могло б статися з -auth:

$SPLUNK_HOME/bin/splunk login

$SPLUNK_HOME/bin/splunk search
  'index=linux sourcetype=linux_secure host=web-03 earliest="10/19/2026:00:00:00" latest="10/20/2026:00:00:00"'
  -preview 0 -maxout 0 -output rawdata > web-03_sshd.log

Що робить кожен прапорець:

  • -maxout 0 знімає обмеження. За замовчуванням CLI експортує 100 подій і зупиняється без попередження. Якщо у вашому файлі рівно 100 рядків, це причина, а не тихий хост.
  • -preview 0 не включає результати перегляду в файл.
  • -output rawdata записує оригінальні рядки. Використовуйте -output json, якщо ви хочете структуровані події з метаданими.

Ви можете також запустити CLI проти віддаленої пошукової голови за допомогою -uri https://<пошукова-голова>:8089, якщо порт управління доступний з вашого місця.

Два швидкі перевірки розумності перед завантаженням:

wc -l web-03_sshd.log
head -3 web-03_sshd.log

Для джерел з одним рядком, таких як linux_secure, кількість рядків має приблизно відповідати кількості подій, яку відображає Splunk Web для того ж пошуку. Перші рядки мають виглядати як журнальні рядки, а не як повідомлення помилки.

Крок 2c: Потокова передача результатів через REST API

Це маршрут для великих експортів, запланованих вивантажень і Splunk Cloud (якщо доступ до REST увімкнено для вашої стека). Кінцева точка експорту потоково передає результати, поки виконується пошук, тому немає необхідності опитувати завдання і немає результатів, які б потрібно було проходити.

Використовуйте токен автентифікації замість імені користувача і пароля. Ви створюєте його в Налаштування → Токени, якщо ваш адміністратор ввімкнув автентифікацію токенами.

export SPLUNK_TOKEN='<ваш токен>'

curl -sS
  -H "Authorization: Bearer $SPLUNK_TOKEN"
  https://sh01.example.com:8089/services/search/v2/jobs/export
  --data-urlencode search='search index=linux sourcetype=linux_secure host=web-03'
  -d earliest_time='2026-10-19T00:00:00.000+00:00'
  -d latest_time='2026-10-20T00:00:00.000+00:00'
  -d output_mode=raw
  -o web-03_sshd.log

Речі, які заплутують людей:

  • Рядок пошуку має починатися зі слова search (або генеруючої команди, наприклад | tstats). Вставте ваш запит без нього, і Splunk відхиляє його.
  • output_mode=raw дає вам оригінальні рядки, і це найшвидший режим. output_mode=json потоково передає один об’єкт JSON на рядок, із подією під ключем “result”. Якщо ви хочете лише самі події, вилучте обгортку за допомогою jq: jq -c ‘select(.result) | .result’ export.json > events.ndjson. Для завантаження в LogTotal залишайте raw.
  • Лабораторні інстанції часто використовують самопідписані сертифікати, і кожна відповідь на Stack Overflow скаже вам додати -k. У виробництві направляйте curl на ваш CA за допомогою –cacert.
  • Якщо ви POST на search/v2/jobs і читаєте з /results, сервер обмежує кількість рядків на запит, і ви повинні здійснювати сторінковість з offset. export не дозволяє, що є причиною використати його тут.

Крок 3: Завантажте, очистіть та перегляньте в LogTotal

LogTotal – це безкоштовний сервіс SOC Prime для запуску логіки виявлення на файлі без будь-якої налаштування. Він очищує те, що ви завантажуєте, і не зберігає ваші файли.

  1. Завантажте. Відкрийте logtotal.com і перетягніть файл з Кроку 2.
  2. Очистити. Перегляньте його перед тим, як продовжити. Ви краще знаєте своє середовище, ніж будь-яке правило маскування.
  3. Перегляньте. 

Коли експорт йде не так

СимптомІмовірна причинаFix
CLI файл має рівно 100 подійЗначення за замовчуванням -maxout становить 100Додайте -maxout 0
Сирі події недоступні в діалозі експортуПошук закінчується перетворюючою командою (stats, table, chart)Експортуйте події замість цього або виберіть JSON
Пошук нічого не повертає, але дані єІндекс не входить до дозволених або стандартних індексів вашої ролі, або неправильний діапазон часуДодайте index= явно; запитайте у вашого адміністратора про роль
Діалогове вікно каже, що пошук буде виконаний повторноАртефакт завдання не зберіг кожен результатОчікувана поведінка; використовуйте абсолютний діапазон часу, щоб повторний запуск повернув ті самі події
Браузерний експорт затримується або файл обрізаєтьсяТайм-аут сеансу Splunk Web на тривалому експортіПерейдіть до CLI або REST
401 Неавторизовано від curlТокен сплив, відключений або автентифікація токенами вимкненаСтворіть новий токен у Налаштування → Токени
curl зависає або отримує відмову в з’єднанні на 8089Порт управління заблокований, або REST не ввімкнено на Splunk CloudПеревірте правила фаєрволу; запитайте доступ до REST для вашої стека в Cloud
REST повертає помилку синтаксису пошукуЗапит не починається зі слова searchПрефіксуйте його словами search
Файл JSON набагато більший, ніж очікувалосяКожне витягнуте поле було експортованеДодайте | fields _time host source sourcetype _raw

FAQ

Чи можу я експортувати логи з Splunk Cloud?

Так. Експорт через Splunk Web працює так само, як і на Enterprise. Кінцева точка експорту REST працює після того, як доступ до API ввімкнено для вашої стека; безкоштовні пробні версії цього не отримують. CLI не є варіантом, оскільки на Splunk Cloud немає оболонки.

Чи можу я повернути оригінальні EVTX файли з Splunk?

Ні. Splunk зберігає відображені тексти подій, а не двійковий .evtx. Ви можете експортувати цей текст як сирі події або JSON. Для справжніх EVTX файлів експортуйте їх з самого Windows-хоста.

Сирі події або JSON: що мені вибрати для LogTotal?

Сирі. Ви отримуєте ті самі рядки, які зберігаються на хості, і LogTotal читає файли у форматі syslog такими, якими вони є. JSON обгортає кожну подію в свою структуру Splunk. Це зручно, коли вам потрібні хост та sourcetype поруч з кожною подією, але для завантаження в LogTotal raw безпечніший вибір.

Чи безпечно завантажувати експорт Splunk у онлайн-інструмент?

LogTotal очищує завантаження перед аналізом та не зберігає файли.

Скільки подій я можу експортувати?

На боці Splunk, стільки, скільки хочете: залиште “Кількість результатів” порожнім у Splunk Web, або встановіть -maxout 0 у CLI. На практиці, обмеженням є розмір завантаження на іншому кінці. Отже, варто правильно окреслити пошук на Кроці 1.

Приєднуйтесь до платформи Detection as Code від SOC Prime щоб покращити видимість загроз, найбільш актуальних для вашого бізнесу. Щоб допомогти вам розпочати та отримати негайну цінність, забронюйте зустріч зараз з експертами SOC Prime.