У меня есть стек 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.