Запрос по количеству значений в поле - PullRequest
0 голосов
/ 18 апреля 2019

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

Недавно я заметил некоторый вредоносный трафик, который было легко идентифицировать, потому что заголовок Referer дублировался и всегда совпадает с URI запроса. Вот как может выглядеть такая запись:

{
    "ip": "192.0.2.1",
    "host": "www.website.example",
    "uri": "/example/",
    "referer": [
        "https://www.website.example/example/",
        "https://www.website.example/example/"
    ]
}

В этом случае uri и referer всегда одинаковы; злоумышленник нацеливается на одну страницу и делает это не менее нескольких месяцев.

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

Есть ли способ запросить записи, которые содержат определенное количество элементов в данном поле? В этом сценарии я хотел бы запросить все записи, которые имеют два значения referer.

Если это невозможно, есть ли альтернативный способ, которым я могу сделать это эффективно? У меня нет исходных входных данных, и _source был временно отключен в течение соответствующего периода времени, поэтому я не думаю, что переиндексация возможна. Редактировать: Оказывается, у меня есть _source включен для соответствующих индексов, поэтому возможна переиндексация.

Это будет однократная операция, поэтому я открыт для хакерских решений - например, может быть возможно злоупотребить системой подсчета очков, чтобы "поднять" двойных рефереров на вершину, так как я знаю точные значения referer и uri.

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