Аудит логов при форензике

Аудит логов при форензике

the Matrix

Анализ логов имеет большое значение в расследовании, и эта статья представляет собой небольшое введение в аудит журналов.

Файл лога может содержать такую информацию, как кто получает доступ к активам компании, как он/она получает доступ, когда и сколько раз.

Анализ логов может быть различным для разных типов атак и источников журналов.

В данной статье рассматривается аудит логов, взятых с веб-сервера.

Ниже приведен пример лога доступа к веб-серверу:

127.0.0.1 – – [31/Jan/2022:16:09:05 -0400] “GET /admin/ HTTP/1.1” 200 “-” “Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322)”
Содержание
  • Необходимость анализа логов
  • Понимание логов доступа
  • Анализ атаки на веб-приложение
  • Заключение
  • Необходимость анализа логов

    Логирование – это просто процесс хранения журналов на сервере.

    Нам необходимо анализировать логи для получения надлежащих результатов из журналов, хранящихся на сервере.

    В следующем разделе мы рассмотрим пример того, как можно проанализировать журналы, чтобы выяснить, есть ли попытки атак на сайт.

    Логи, взятые из такого места, как загруженный веб-сервер или прокси-сервер с огромным трафиком, обычно содержат большое количество записей, которые необходимо просмотреть.

    Веб-приложения являются одной из самых простых точек входа для получения доступа в организацию.

    Большинство логов, связанных с доступом к веб-приложению, хранятся на веб-серверах, серверах приложений, серверах баз данных, прокси-серверах и любых других устройствах, участвующих в обслуживании содержимого приложения.

    Помимо атак, исходящих из внешнего источника, логи играют важную роль в обеспечении понимания внутренних атак, таких как утечка служебной информации.

    Превентивные меры, такие как внедрение брандмауэра веб-приложений (WAF), не всегда возможны.

    Если компания ведет логи на всех возможных устройствах, можно провести детальный анализ действий пользователя.

    Однако следует отметить, что файлы логов имеют свои ограничения.

    Логи веб-сервера по умолчанию содержат лишь ограниченную информацию о HTTP-запросах и ответах.

    Для более подробного протоколирования необходимы дополнительные файлы журналов или изменения в конфигурации.

    Понимание логов доступа

    Как уже упоминалось ранее в статье, мы сосредоточимся на анализе журналов веб-приложений, и стоит понять, что может содержать простая запись.

    Давайте разберем запись , которую мы уже видели в начале этой статьи.

    127.0.0.1 – – [31/Jan/2021:16:09:05 -0400] “GET /admin/ HTTP/1.1” 200 “-” “Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322)”
    • 127.0.0.1: IP-адрес клиента.
    • [31/Jan/2022:16:09:05 -0400] : Время, когда сервер закончил обработку запроса.
    • GET /admin/ HTTP/1.1: Запрошенный клиентом ресурс.
    • 200: Код состояния, который сервер отправляет обратно клиенту.
    • Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322) : Заголовок HTTP-запроса User-Agent.

    Анализ атаки на веб-приложение

    Предположим, в оповещении говорится о попытке атаки SQL-инъекции на веб-приложение.

    Первое, что необходимо посмотреть, это логи доступа к веб-серверу.

    Исследуемый сервер основан на Debian, а местоположение журналов сервера apache по умолчанию в системах Debian – /var/log/apache2/access.log.

    Если анализируемые логи небольшого размера или если мы ищем определенное ключевое слово, то мы можем потратить некоторое время на просмотр журналов вручную с помощью простых инструментов, таких как grep.

    Следующая выдержка показывает, что мы пытаемся найти все запросы, которые содержат ключевое слово “union” в URL.

    cat access.log | grep ‘union’

    192.168.1.85 – – [31/Jan/2022:22:58:14 +0800] “GET /site/?id=1 union+select+1%2C2%2C3– HTTP/1.1″ 200 379 “http://192.168.1.99/site/” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36” 192.168.1.85 – – [31/Jan/2022:22:58:21 +0800] “GET /site/?id=1 union+select+1%2C2%2C3%2C4– HTTP/1.1″ 200 379 “http://192.168.1.99/site/” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36” 192.168.1.85 – – [31/Jan/2022:22:58:29 +0800] “GET /site/?id=1 union+select+1%2C2%2C3%2C4%2C5– HTTP/1.1″ 200 379 “http://192.168.1.99/site/” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36”

    Как видно из предыдущего отрывка, в логах обнаружены записи со словом union, и очевидно, что кто-то с IP-адресом 192.168.1.85 предпринял попытку SQL-инъекции.

    Чтобы проверить, выполняется ли этот запрос базой данных, необходимо изучить логи базы данных.

    В данном случае используется база данных MySQL, и чтобы проверить, выполняются ли какие-либо запросы, необходимо включить регистрацию запросов.

    Предположим, что мониторинг запросов в данном случае включен, и, таким образом, все выполненные запросы будут храниться в файле или базе данных в зависимости от конфигурации базы данных.

    В текущем сценарии эти логи хранятся в файле, они получены и сохранены в автономном режиме для исследования.

    Следующая запись из журнала MySQL показывает, что запрос , который мы нашли ранее в журналах доступа, действительно выполняется базой данных.

    $ tail -n 3 mysql-logs.log 2022-01-31T15:06:32.689985Z 23 Connect root@localhost on infosec using Socket 2022-01-31T15:06:32.690109Z 23 Query SELECT * FROM products where ID=1 union select 1,2,3,4,5– 2022-01-31T15:06:32.690579Z 23 Quit

    Этот лог не только подтверждает выполнение несанкционированного запроса к базе данных, но также подтверждает, что веб-приложение уязвимо к SQL-инъекциям.

    Аналогичным образом мы можем искать наличие других атак, используя определенные ключевые слова, которые обычно используются в веб-атаках.

    Следующая выдержка показывает, что мы ищем запросы, которые пытаются прочитать файл /etc/passwd.

    Наличие таких записей является признаком попытки атаки включения локального файла.

    Пример может выглядеть следующим образом.

    $ cat access.log | grep ‘passwd’ 192.168.1.85 – – [31/Jan/2021:22:59:54 +0800] “GET /site/?id=..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd HTTP/1.1″ 200 380 “http://192.168.1.99/site/” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36”

    Запись ..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd в журнале представляет собой URL-кодированную версию ../../../../../../etc/passwd, которая является обычной полезной нагрузкой, используемой для проверки уязвимости приложения к локальному чтению файлов.

    Ее наличие в логах доступа, безусловно, свидетельствует о попытке атаки.

    HTTP-ответ 200 в данном случае не обязательно означает, что файл был успешно прочитан.

    Это требует дальнейшего расследования.

    Заключение

    В этой статье были приведены примеры анализа журналов на примере простой веб-атаки, но анализ журналов может быть гораздо более сложным при расследовании реальных атак.

    Это связано с тем, что расследователи часто получают огромные объемы логов, и корреляция становится вынужденной необходимостью для облегчения процесса анализа.

    Кроме того, злоумышленники используют скрытные методы, и в зависимости от сложности расследуемой атаки анализ в большинстве случаев может быть довольно сложным.


    Источник

    Наши проекты:

    - Кибер новости: the Matrix
    - Хакинг: /me Hacker
    - Кодинг: Minor Code

    Report Page