Introdução
Este documento descreve as consultas básicas de pesquisa orbital para análise de ameaças.
Pré-requisitos
Requisitos
A Cisco recomenda que você tenha conhecimento do interesse na compreensão de ameaças e malware e uma compreensão básica das tabelas Structured Query Language (SQL).
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software e hardware:
- Secure Endpoint Connector versão 7.1.5 ou posterior para Windows
- Secure Endpoint Connector versão 1.16 ou posterior para Mac
- Secure Endpoint Connector versão 1.17 ou posterior para Linux
- O usuário do Secure Endpoint deve receber a função de administrador para implantar o Orbital
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Informações de Apoio
As consultas personalizadas são aproveitadas, o que deve ajudá-lo a aprender rapidamente o poder da Orbital e da osquery para a busca de ameaças.
Orbital faz uso de tabelas de estoque osquerys, além de tabelas específicas Orbital. Os resultados retornados pela Orbital podem ser enviados para outros aplicativos, como Secure Endpoint, Secure Malware Analytics e SecureX Threat Response, e podem ser armazenados em repositórios de dados remotos (RDS), como Amazon S3, Microsoft Azure e Splunk.
Use a página Investigação Orbital para construir e executar consultas ao vivo em endpoints para coletar mais informações deles. A Orbital usa osquery, que permite consultar seus dispositivos como um banco de dados com comandos SQL básicos.
Aqui está um exemplo simples: SELECIONE column1, column2 FROM table1, table2 WHERE column2='value'.
Neste exemplo, column1 e column2 são os nomes de campo da tabela da qual você deseja escolher os dados. Para escolher todos os campos disponíveis na tabela, use esta sintaxe: SELECT * FROM table1 (SELECIONE * DA tabela 1).
Acesso
Abra o Orbital diretamente nestes locais:
América do Norte - https://orbital.amp.cisco.com
Europa - https://orbital.eu.amp.cisco.com
Pacífico Asiático - https://orbital.apjc.amp.cisco.com
Ou
No Secure Endpoint Console, escolha o sistema Host afetado e clique em Investigar em Orbital.

Há opções para usar o Catálogo Orbital (Clique em Procurar) ou Inserir as Consultas Personalizadas na seção SQL Personalizado, conforme mencionado:

Consultas Personalizadas
Note: O sistema host está na rede do laboratório e tenta-se manter o sistema/rede inabalável.
1. Itens de Inicialização
Os itens de inicialização podem ser explorados pelos invasores para manter a persistência em um sistema comprometido, o que significa que o software mal-intencionado continuará a ser executado ou será reiniciado automaticamente a cada reinicialização do sistema. No próximo exemplo, o Qakbot.exe está sendo executado no sistema host.
SELECT name, path, args, source, type, status, username
FROM startup_items;

2. Hashes Sha256 de Processos em Execução
Os hashes SHA256 não são associados de forma inerente aos processos em execução em seu estado natural. No entanto, software de segurança e ferramentas de monitoramento do sistema podem calcular o hash SHA256 de um processo em execução do arquivo executável para ajudar a verificar sua integridade e autenticidade.
SELECT
p.pid, p.name, p.path, p.cmdline, p.state, h.sha256
FROM processes p
INNER JOIN hash h
ON p.path=h.path;


se o hash associado de um arquivo for mal-intencionado, você poderá se identificar com essa consulta.
3. Processo com Conexões de Rede
Os processos com conexões de rede são programas ou serviços do sistema que estão usando ativamente a interface de rede para se comunicar com outros dispositivos em uma rede ou pela Internet.
SELECT
DISTINCT pos.pid, p.name, p.cmdline, pos.local_address, pos.local_port, pos.remote_address, pos.remote_port
FROM processes p
JOIN process_open_sockets pos USING (pid)
WHERE
pos.remote_address NOT IN ("", "0.0.0.0", "127.0.0.1", "::", "::1", “0");

4. Processo Privilegiado com Conexão de Rede Não Localhost
Executar um programa ou serviço que tenha permissões elevadas (como as de uma conta de administrador ou de sistema) e esteja se comunicando pela rede com um dispositivo ou serviço externo, ou seja, qualquer endereço IP diferente de 127.0.0.1 (localhost) ou ::1 (localhost IPv6).
SELECT DISTINCT p.name, p.cmdline, pos.pid, pos.local_address, pos.local_port, pos.remote_address, pos.remote_port
FROM processes p JOIN process_open_sockets pos USING (pid)
WHERE pos.remote_address NOT IN ("", "0.0.0.0", "127.0.0.1", "::", "::1")

Depois de ter a lista de Identificadores de pacote (PID), você pode adicioná-la de acordo nas Consultas personalizadas.
SELECT DISTINCT p.name, p.cmdline, pos.pid, pos.local_address, pos.local_port, pos.remote_address, pos.remote_port
FROM processes p JOIN process_open_sockets pos USING (pid)
WHERE pos.remote_address NOT IN ("", "0.0.0.0", "127.0.0.1", "::", "::1") and p.uid=1436
5. Monitoramento de Registro de Backup/Restauração
Rastreamento de eventos em que são feitas alterações no Registro do Windows por meio de operações de backup ou restauração. O Registro do Windows é um banco de dados hierárquico que armazena opções e definições de configuração em sistemas operacionais Microsoft Windows.
SELECT key AS reg_key, path, name, data, DATETIME(mtime, "unixepoch") as last_modified
FROM registry
WHERE key LIKE "HKEY_LOCAL_MACHINE\system\currentcontrolset\control\backuprestore\filesnottosnapshot";
SELECT data, path FROM registry
WHERE key LIKE 'HKEY_USERS\%\Control Panel\Accessibility\StickyKeys’;

SELECT username, data, split(path, '\', 1) AS sid
FROM
(SELECT data, path FROM registry
WHERE key LIKE 'HKEY_USERS\%\Control Panel\Accessibility\StickyKeys’)
JOIN users ON users.uuid = sid;

6. Pesquisa de Arquivos
Permite que os usuários localizem arquivos e pastas em seus computadores usando vários critérios, como nome do arquivo, conteúdo, propriedades ou metadados.
SELECT
f.directory, f.filename, f.uid, f.gid,
f.mode, f.device, f.size,
f.atime,
f.mtime,
f.ctime,
f.btime,
f.hard_links, f.symlink, f.file_id, h.sha256
FROM file f
LEFT JOIN hash h on f.path=h.path
WHERE
f.path LIKE (SELECT v from __vars WHERE n="file_path") AND
f.path NOT LIKE (SELECT v from __vars WHERE n=“not_file_path");
Navegue até PARÂMETROS > Caminho do arquivo e clique em %.dll ou %.exe ou %.png.

7. Monitoramento de Histórico do Powershell
Prática de controlar os comandos que foram executados em sessões do PowerShell. Monitorar o histórico do PowerShell pode ser particularmente importante por motivos de segurança e conformidade.
SELECT time, datetime, script_block_id, script_block_count, script_text, script_name, script_path
FROM orbital_powershell_events
ORDER BY datetime DESC
LIMIT 500;

8. Consulta Prefetch
Recurso de desempenho que acelera o carregamento de aplicativos. A pré-busca envolve analisar a forma como o software é carregado e executado em um sistema e, em seguida, armazenar informações sobre isso em arquivos específicos.
select datetime(last_run_time, "unixepoch", "UTC") as last_access_time,*
from prefetch
ORDER BY last_access_time DESC;
A pré-busca é um mecanismo com o qual o SQL Server pode ativar muitas solicitações de E/S em paralelo para uma junção de Loop Aninhado.
9. Inspeção de Cache do Address Resolution Protocol (ARP)
Envolve o exame do conteúdo do cache ARP em um computador ou dispositivo de rede. O cache ARP é uma tabela que armazena mapeamentos entre endereços IP e seus endereços MAC correspondentes.
SELECT address, mac, count(*) as count
FROM arp_cache GROUP BY mac,address;

O próximo exemplo mostra o endereço MAC suspeito e sua contagem do cache ARP.
SELECT address, mac, count(*) as count
FROM arp_cache GROUP BY mac,address
HAVING COUNT(mac) >= (SELECT count FROM arp_cache WHERE count>=1)
AND mac LIKE (SELECT mac FROM arp_cache WHERE mac=“52:54:00:12:35:02");
