Tudo o que o produto faz, em detalhe — e o passo a passo para você mesmo instalar, configurar e validar com as próprias mãos. Sem gato por lebre: o que está aqui é o que o agente executa.
O AGX Shield é uma plataforma de vigilância de endpoints: um servidor central (painel web) e agentes leves instalados nas máquinas. O princípio é simples e está em tudo que ele faz:
Isso é uma escolha de projeto deliberada. Um produto que bloqueia sozinho pode parar a operação por engano. O AGX expõe o comportamento suspeito com contexto (qual processo, qual caminho, qual assinatura, qual pai) e deixa a decisão com quem entende o ambiente.
| Componente | Requisito |
|---|---|
| Servidor | Linux com Docker e Docker Compose (testado em Debian 13). 2 vCPU / 4 GB RAM mínimo. |
| Agente | Windows 10/11. .NET Desktop Runtime 8.0. ~30 MB de disco. |
| Rede |
Agente acessa o servidor na porta 8080 (LAN ou via
túnel Cloudflare).
|
| Navegador (painel) | Qualquer navegador moderno. O painel é responsivo. |
No host Linux, dentro da pasta do projeto:
cd ~/agxshield
docker compose up -d
No primeiro acesso ao painel, um assistente de configuração (Setup Wizard) pede: nome da empresa, usuário/senha de admin, URL do painel e configura o 2FA (escaneie o QR Code no Google Authenticator). Ao final, ele gera a API Key usada pelos agentes.
Na máquina cliente, em PowerShell como administrador:
powershell -ExecutionPolicy Bypass -File "C:\AGXShield\Instaladores\instalar_agx.ps1" -ServidorUrl "http://SEU_SERVIDOR:8080"
O instalador registra o agente, salva a configuração em
config.json e inicia a vigilância. Se ele não encontrar o
servidor, avisa e pergunta se você quer prosseguir em
modo limitado — nunca instala "quebrado em silêncio".
-ServidorUrl pula a descoberta
automática por UDP e é mais confiável em redes segmentadas.
powershell -ExecutionPolicy Bypass -File "C:\AGXShield\Instaladores\desinstalar_agx.ps1"
A desinstalação pede o código 2FA como proteção
contra remoção acidental ou maliciosa. Se a instalação ficou sem o
segredo 2FA (raro), entra em modo de emergência:
digite REMOVER para confirmar.
.ps1 devem ser sempre em
ASCII puro. Acentos e travessões corrompem a
codificação e quebram o PowerShell.
Três camadas conversam entre si. Entender isso ajuda a TI a saber onde cada dado vive — e por que a limpeza funciona do jeito que funciona.
| Camada | Função |
|---|---|
| Agente (Windows) | Vigia a máquina em tempo real (7 pilares). Envia relatórios ao servidor a cada ~30s. |
| Servidor (FastAPI + Docker) | Recebe relatórios, cruza dados, gera alertas, serve o painel web. |
| Painel (web) | Alertas, Vigilância, Logs, Scanner de rede, Relatórios. Acesso por 2FA. |
Os dados ficam em armazéns diferentes — saber disso é o que evita a confusão de "limpei mas continua aparecendo":
threats_AAAA-MM-DD.json).
vigilancia.db — histórico de
URLs, conexões, processos e alertas de vigilância. É a fonte da
verdade, sobrevive a reinício.
Cada pilar observa um vetor de ataque diferente. A lógica comum: julgar pelo comportamento e contexto, não pelo nome do arquivo — porque malware se disfarça com nomes legítimos.
Detecta .sys/.inf/.dll sem
assinatura digital sendo instalados em áreas de driver. Não
importa o nome — importa a assinatura.
Rastreia o ciclo de vida de arquivos sensíveis. Pega, por exemplo, um binário sendo copiado e renomeado em etapas para se disfarçar.
Analisa a linha de comando em busca de padrões maliciosos (comando codificado em Base64, IEX, download remoto, PowerShell nascido de Office). Ignora a extensão legítima de programação do VS Code.
Detecta dispositivos USB conectados e lista executáveis/scripts no pendrive. Também identifica dispositivos que se passam por teclado (HID).
Mostra quando outra máquina da rede acessa compartilhamentos desta. Filtra loopback (a máquina conversando consigo mesma não é movimento lateral).
conhost.exe, cmd.exe e
powershell.exe reais vivem sempre no System32. Se um
deles roda de outra pasta (ex.: Downloads), ou está assinado por
terceiro, é um binário renomeado servindo de shell oculto.
A ameaça emergente: um assistente de IA dentro de um editor (VS Code, Cursor) pode escrever e executar comandos no terminal integrado — sem pendrive, sem e-mail, o código nasce dentro da máquina. Este pilar observa a shell cujo processo pai é um editor com IA, ignorando a programação normal. É o único ponto onde uma IA infiltrada apareceria executando comandos.
Detecta se há um humano operando a máquina no momento de um evento, observando mouse e teclado de forma passiva via hooks de baixo nível do Windows. Nunca registra qual tecla foi pressionada — apenas se houve atividade e quando. Por construção, é impossível virar keylogger. O sinal de presença é gravado localmente e cruzado com os demais: dados saindo da máquina sem ninguém operando é o indício clássico de exfiltração automatizada — o "momento do assalto", quando o atacante age achando que a calçada está vazia.
Nenhum sinal isolado acusa um vazamento. O valor está no cruzamento. A regra central combina três perguntas: saiu dado? (volume), de qual processo e de onde ele roda? (caminho do executável) e havia humano? (Pilar 8).
Program Files/System32 = de casa;
Temp/Downloads = suspeito). Nome é fácil de
falsificar; o caminho real de carga, não.
Princípio unificador: em cada camada, o AGX confia no atributo que o atacante não consegue forjar — o local de carga (não o nome), o MAC (não o IP), a origem real da conexão (não o que o agente declara), o gesto humano (não a assinatura do binário).
O AGX observa e reporta — não contra-ataca nem bloqueia automaticamente. É uma decisão de segurança, não de cautela: um agente que reage sozinho vira uma arma que pode ser virada contra ele (um invasor descobre o gatilho e o usa para desligar a proteção). Permanecendo passivo, o AGX tem superfície de ataque mínima. A evidência é registrada no servidor em tempo real, de modo que sobrevive mesmo que o programa malicioso tente se autodestruir na máquina de origem. Quem investiga e age, com contexto e responsabilidade, é a equipe de TI. A tecnologia organiza; o profissional interpreta.
MONITOR_HEARTBEAT) — alerta
quando um agente para de reportar (possível desligamento ou
comprometimento).
Aqui está o diferencial: você não precisa acreditar que funciona — você verifica. Faça cada teste e confira se o alerta esperado aparece no painel, na aba Alertas.
Simula um binário de console disfarçado fora do System32:
copy C:\Windows\System32\cmd.exe "$env:USERPROFILE\Downloads\conhost.exe"
& "$env:USERPROFILE\Downloads\conhost.exe"
conhost.exe rodando de Downloads, sem assinatura
embutida.
Abra o terminal integrado do VS Code (Ctrl + crase) e digite qualquer comando. Ou peça ao assistente de IA do editor para executar um comando.
New-Item -Path "C:\Windows\System32\drivers\teste_agx.sys" -ItemType File
Conecte um pendrive contendo um arquivo .exe ou
.ps1.
De OUTRA máquina da rede, acesse um compartilhamento desta:
\\IP_DA_MAQUINA_VIGIADA\C$
Get-SmbShare (só
ADMIN$, C$, IPC$ = padrão do
Windows, normal).
Desligue ou reinicie uma máquina com agente.
Em qualquer tela (Alertas, Vigilância, Relatório) use Exportar para baixar o JSON. Esse é o registro que a TI deve guardar. Os exports também podem ser reabertos offline na tela Importar Log.
docker cp agxshield-server:/agxshield/vigilancia.db ./backup_vigilancia_$(date +%Y%m%d_%H%M).db
docker exec agxshield-server python3 -c "import sys; sys.path.insert(0,'/agxshield'); from modules.vigilancia_db import limpar_tudo, definir_corte; limpar_tudo(); definir_corte('*')"
docker restart agxshield-server
docker exec agxshield-server python3 -c "
import sqlite3
c = sqlite3.connect('/agxshield/vigilancia.db')
for t in ['urls','conexoes','alertas','processos']:
print(t, c.execute(f'SELECT COUNT(*) FROM {t}').fetchone()[0])
"
| Sintoma | Causa provável / solução |
|---|---|
CPU alta na máquina (MsMpEng) |
É o Microsoft Defender em varredura/atualização agendada — comportamento normal, amplificado em VMs. Não é ameaça; mantenha o Defender ativo. |
Vários brave.exe / chrome.exe |
Normal: cada aba/extensão é um processo separado. Use o gerenciador interno do navegador (Shift + Esc) para ver o detalhe por aba. |
| "Limpei e continua aparecendo" | Confira que está usando o botão certo (RAM × SQLite). Após a correção, a limpeza atinge os dois + marca de corte. Verifique pelo comando da seção 07. |
Scanner falha: Unexpected token '<' |
Sessão do navegador expirou (servidor reiniciou). Faça login novamente. |
| Agente não acha o servidor |
Instale apontando direto com -ServidorUrl. Verifique
firewall na porta 8080.
|
| Alerta de console do VS Code |
O OpenConsole.exe assinado do VS Code é reconhecido
como emulador legítimo. Se aparecer, são logs antigos — limpe e
revalide.
|
| Upload grande NÃO gera alerta de volume | O alerta mede vazão por janela de 15s (limiar de 50 MB), não o tamanho do arquivo. Com VPN/WARP segurando a banda, o envio sai devagar e cada janela fica abaixo do limiar — não dispara, mesmo o arquivo sendo grande. Teste com a banda livre. Vazamento "lento e fino" (low-and-slow) é tratado por volume acumulado no tempo (evolução planejada). |
| Alerta mostra IP de outra interface (ex: VPN) | O AGX usa o IP real da conexão. Numa máquina com VPN ativa, a conexão sai pela perna do túnel — e o alerta mostra esse IP, corretamente. Sem VPN, mostra o IP da LAN. Sempre a verdade da conexão, não o que a máquina declara. |
| Máquina com agente aparece como "Sem agente" | Geralmente um endereço antigo que sobrou na tabela ARP após a máquina trocar de IP (DHCP/VPN). Some sozinho quando o ARP expira; a identidade por MAC reconhece que é a mesma placa. |
| Alerta de volume não dispara "sem humano" | As regras de correlação só elevam o nível quando NÃO há humano operando. Se você estava mexendo no mouse/teclado, o Pilar 8 registrou presença e o evento foi tratado como provável ação legítima. Para testar exfiltração, inicie o envio e afaste-se do teclado ~20-30s. |
docker logs agxshield-server --tail 100 | grep -i AGX
O AGX Shield é uma ferramenta corporativa de segurança. Transparência aqui é parte do produto — tanto com a empresa quanto com o funcionário.