Я работаю над задачей, в которой моя команда по безопасности просит меня предоставить файл pcap в папке /var/log/snort. Они извлекли исходный IP-адрес из файла оповещения и им нужно провести дополнительный анализ файлов pcap (например, snort.log.xxxxxxx) для этого исходного IP-адреса.
Файл оповещения и файлы snort.log.xxxxx находятся в одной папке. Как дать им точный файл snort.log.xxxxx для анализа? Пожалуйста, дайте несколько команд или любую технику, чтобы сделать это. Я совсем новичок в этой области. Я работаю с машиной Linux (Centos 7), где snort выгружает логи.
решение1
Как вы сказали, по умолчанию Snort будет вести журнал двумя способами:
alert
файл — содержит метаданные оповещения в текстовом формате.snort.log.##########
- PCAP пакета(ов), вызвавшего(их) оповещение
Я бы сделал это следующим образом (используя только базовые команды Linux Bash):
Подход с единым оповещением
Чтобы найти записи оповещений:
Поиск alert
файла. Вы можете выполнить поиск по IP-адресу или по имени оповещения, используя grep
.
grep "PATTERN" /var/log/snort/alert
Типичная строка записи в журнале будет выглядеть так:
01/04-03:28:11.959559 [**] [1:1000001:1] Signature_Name [**] [Classification: Attempted User Privilege Gain] [Priority: 1] {TCP} 192.168.1.1:80 -> 192.168.1.128:39590
Чтобы найти соответствующий файл PCAP:
Затем, чтобы выяснить, какой файл был записан, вы можете либо посмотреть время изменения в длинном списке каталогов ( ls -l
), либо преобразовать временную метку (не забудьте добавить год и поставить пробел между датой и временем) в эпоху с помощью следующей команды:
date "+%s" -d "01/04/2018 03:28:11.959559"
Выход:
1515054491
Затем найдите файл с именем snort.log.1515054491
. Он должен содержать данные PCAP.
Если вам нужно несколько журналов для одного IP-адреса
Это подход кувалды. Если они хотят записи из обоих файлов, относящиеся только к одному IP-адресу, вот что я бы сделал:
Записи файла оповещений
Выполните команду Grep для получения IP-адреса, а затем запишите вывод в отдельный файл.
grep "192.168.1.1" /var/log/snort > /tmp/alerts_192.168.1.1.txt
Это должно отфильтровать только те строки, где указан IP-адрес, и перенаправить его в новый файл, который вы можете предоставить службе безопасности.
PCAP-файлы
Я бы проявил осторожность, делая это, поскольку каталог журнала snort может быть очень большим, а итерация по большой группе файлов может создать нагрузку на систему (особенно если это датчик с очень большим объемом трафика). Я бы рекомендовал использовать маску файла для приблизительного временного интервала для данных, которые вы ищете. Помните, что этот временной интервал должен быть в формате эпохи.
Допустим, команда хочет получить все с настоящего момента, начиная с часа назад (3600 секунд). Метка времени эпохи — 1515054491. Вычтите из этого 3600, и вы получите 1515050891.
1515050891 - Start
1515054491 - End
151505???? - File mask (close enough)
Затем я бы создал цикл for для перебора всех этих файлов и выполнил команду tcpdump для фильтрации только по указанному IP-адресу.
tcpdump -r infile -w outfile "BPF"
Варианты:
- -r — для чтения из файла (в отличие от запуска живого захвата из интерфейса)
- -w — для записи вывода в файл
- «BPF» — фильтр пакетов Беркли (в этом случае это будет «хост 192.168.1.1», чтобы указать все пакеты с этим IP-адресом.)
А теперь цикл for:
cd /var/log/snort
for file in snort.log.151505????
do
tcpdump -r $file -w /tmp/$file "host 192.168.1.1"
done
И теперь у вас должна быть копия всех ваших файлов оповещений в /tmp
папке, но только с данными, относящимися к этому конкретному IP-адресу. Если вы установили mergecap
, я бы рекомендовал объединить все это в один файл PCAP, используя следующее:
mergecap -w /tmp/snort_log_192.168.1.1.pcap /tmp/snort.log.*
Вы должны знать, что у вас есть два файла /tmp
:
- /tmp/alerts_192.168.1.1.txt
- /tmp/snort_log_192.168.1.1.pcap
Затем предоставьте эти файлы вашей службе безопасности.