Uma das telas mais importantes para a operação do SIEM, a tela de investigação oferece inúmeros recursos focados na otimizacão de buscas, tais como: seletor de linguagem de pesquisa, filtros avançados, paginação, buscas por metagroup (Conceito para buscas agregadas de metakeys específicos).
De um modo geral, esta tela interage de forma ativa com os dados existentes no cluster de eventos do cliente. Tais interações limitam-se apenas a leitura, bem como estão condicionadas às políticas de armazenamento de dados configuradas no Harpia de acordo com o contexto e necessidade de cada cliente. É importante ressaltar a existência da política de armazenamento de dados, pois a mesma tem incidência grande em questões que afetam diretamente a operacionalização e desempenho das buscas impetradas no cluster do cliente por meio da tela de investigação.
Observações:
Tais limites aplicados na política de armazenamento de dados para hot, warm e cold são questões contratuais, portanto, definidas no início de cada projeto.
O Harpia fornece duas possíveis linguagens de busca em sua base de eventos. Lucene e SQL. O usuário pode selecionar no lado esquerdo da tela a linguagem que deseja utilizar, LQS (Lucene) ou SQL.
O meta group é um recurso específico para buscas que utilizam LQS (Lucene). Consiste em um mini gerenciador de listas onde o usuário pode adicionar metakeys específicos para compor uma tela de agregação (agrupamento) de todos os eventos dentro de uma janela de tempo, agrupados por estes metakeys. A visão de cada metakey da lista é completa dentro do intervalo de tempo pré definido, bem como resulta da query informada no campo de pesquisa.
No momento da consulta, os metakeys são listados mostrando os valores encontrados com um contador de número de ocorrências, bem como um link 10+ values que indica que existem mais valores para a agregação atual, caso o usuário deseje consultar. Para cada metakey, há um botão de hide/show para ocultar ou exibir os valores por metakey.
O usuário pode melhorar ainda mais o filtro da busca clicando em algum valor encontrado e selecionando a opção Filter by this value (Filtrar por este valor), fazendo com que este novo filtro seja adicionado ao filtro inicial do campo pesquisa (se houver), e na sequência executando a consulta novamente com o filtro recém informado, ou se preferir apenas ver os eventos para o valor do metakey encontrado, selecionando a opção Show logs of this value (Mostrar eventos para este valor), fazendo com que uma tabela de eventos paginados referentes ao valor agregado no metakey seja exibida.
O filtro de campo de busca também é um recurso específico para buscas que utilizam LQS (Lucene), e permite que o usuário selecione através de qual campo de busca ele deseja realizar suas buscas. As opções são:
Ingestion timestamp (default) - Campo que representa o momento de ingestão do evento. O nome deste metakey é: harpia.timestamp
Timestamp - Campo que representa o momento de ocorrência do evento no cliente. O nome deste metakey é: timestamp
O filtro de time range é um componente do tipo datetime picker que permite que o usuário defina o range de intervalo de tempo de diversas formas possíveis.
É importante estar atento que o período de busca solicitado não deve exceder em número de dias os limites de hot + warm para o cliente em questão, caso contrário dados poderão não ser mostrados, pois estarão armazenados em cold storage.
Com os filtros anteriores definidos, podemos a query abaixo, que filtra os eventos de Windows Active Directory para o event_id (normalizado) 4628 (login usando credenciais explícitas)
device.manufacturer:windows_ad and event.code:4628
O Harpia mostrará o resultado da busca com três novos elementos na tela.
Uma tabela paginada contendo o total de resultados será mostrada com os últimos 500 resultados da busca, podendo ser atualizada buscando mais resultados através da opção Load more. Os metakeys usados na composição da query serão destacados nos eventos listados pela cor azul.
O usuário poderá clicar na opcão Explore log (Explorar log) para ter uma visão do evento no formato Json (estruturado), ou ver o evento bruto em modo RAW.
No topo da tabela há um campo de pesquisa (Search key or value) utilizado para refinar o filtro dos resultados já retornados. Há ainda um botão para exportação dos dados retornados pela busca em formato CSV.
Acima da tabela de eventos será mostrado um gráfico de linha contendo a distribuição dos eventos em função do tempo configurado no filtro de time range.
Será mostrada uma barra lateral contendo todos os metakeys encontrados nos 500 resultados trazidos pela busca. A cada nova solicitação de página através da opção Load more, novos metakeys serão incorporados na barra lateral.
Ao clicar nos metakeys listados, um modal será mostrado contendo uma tabela com o detalhamento daquele metakey, sinalizando o número de ocorrências e o percentual de incidência para cada valor, bem como um botão de ação Add + para adição de filtros pelo usuário. Este modal também contém uma paginação e um campo de pesquisa para refinamento dos resultados.
É importante frisar que todas as ações realizadas na barra lateral, bem como na exportação dos dados em tela levam em conta os 500 últimos resultados. Considere usar o recurso meta group caso deseje um universo de busca mais completo.
Ao selecionar a linguagem SQL, o Harpia interpretará as queries digitadas no campo de Search query. O padrão de consulta SQL respeita o seguinte formato (cláusulas envolvidas em [ ] são opcionais):
SELECT [DISTINCT] (* | expression) [[AS] alias] [, ...]
FROM harpia-search
[WHERE predicates]
[GROUP BY expression [, ...]
[HAVING predicates]]
[ORDER BY expression [IS [NOT] NULL] [ASC | DESC] [, ...]]
O período compreendido pela consulta é definido exclusivamente pelo filtro de Time range:
Por mais que o Harpia providencie suporte para funções de manipulação de tempo no SQL, é recomendado que sejam utilizadas apenas em queries de regras avançadas.
Consultas sem agregação apresentam respostas em formato JSON de forma similar ao Lucene, porém com a capacidade adicional de seleção de campos específicos no resultado, caso os mesmos estejam presentes nos eventos.
Exemplos de query SQL sem agregação:
SELECT destination.ip, source.ip
FROM harpia-search
SELECT destination.ip, source.ip, destination.geo.country_name
FROM harpia-search
WHERE event.action = "accept"
Consultas com agregação já apresentam uma visualização mais usual do SQL que é o formato de tabela.
Exemplos de query SQL com agregação:
SELECT destination.ip, source.ip, destination.geo.country_name as COUNTRY, COUNT(*) as Accepted_Connections
FROM harpia-search WHERE event.action = "accept" AND destination.geo.country_name IS NOT NULL
GROUP BY destination.ip, source.ip, COUNTRY
SELECT device.hostname, COUNT(DISTINCT(source.ip)) as UNIQUE_IP_COUNT
FROM harpia-search
WHERE device.hostname IS NOT NULL GROUP BY device.hostname
A partir de uma tabela de resultados é possível buscar os eventos associados a uma linha, tendo como escolha uma das colunas ou o conjunto de colunas que fazem parte do evento.
O Harpia apresenta os eventos em uma tabela devidamente paginada, trazendo por padrão 500 eventos por página. Ao realizar uma busca na tela de investigação utilizando LQS, os primeiros 500 eventos são mostrados ao usuário. A partir do load da primeira página o usuário poderá requisitar mais dados através da opções load more.
O recurso de exportação (Botão Exportar arquivo de logs / Export data file) permite que os dados carregados na tabela de investigação sejam compilados num arquivo em formato CSV (Comma Separated Values).
Dois tipos de export podem ser feitos.
Devido a complexidade e a riqueza de caracteres especiais presentes nos valores dos eventos, foi convencionado o separador de colunas a seguir: ?HS?
Utilizando um separador customizado/atípico é possível garantir que as colunas correspondam ao dado correto sem que haja quebra de colunas indevidas em razão do dado de alguma coluna conter o separador em sua composição.
Após o download do CSV gerado no SIEM, o usuário deverá informar no momento da importação do mesmo para uma planilha (Excel, WPS, LibrOffice e afins), o separador convencionado ?HS?
Um processo rápido, conforme ilustra o gif a seguir: