
Windows Analysis and Research Toolkit
⚠️ Partes deste projeto foram codificadas com assistência de IA ("vibe coding"), então pode conter alguns bugs. O driver de kernel (KWinSys) só deve ser instalado em uma VM de teste para fins de pesquisa.

| Componente | Função |
|---|---|
| NtWarden | Aplicativo GUI (ImGui + DirectX 11) |
| WinSys |
Análise de segurança por processo, acessível pelo menu de contexto do processo.
Requisitos: Visual Studio 2022, Windows SDK 10.0.26100.0+, WDK (para KWinSys)
NtWarden.sln
├── NtWarden/ # Aplicativo GUI
├── WinSys/ # Biblioteca principal (lib estática)
├── KWinSys/ # Driver de kernel
└── WinSysServer/ # Servidor remoto
NtWarden.sln no Visual Studiox64/Release/KWinSys precisa de assinatura de teste ou de uma assinatura válida.
# Habilitar assinatura de teste (requer reinicialização)
bcdedit /set testsigning on
# Em VMs, também pode ser necessário
bcdedit /set nointegritychecks on
Execute o NtWarden como Administrador. Alternar para a aba Modo Kernel instalará e iniciará automaticamente o driver, caso ele ainda não esteja carregado. Você também pode gerenciá-lo manualmente pelo menu Driver.
O WinSysServer executa na máquina alvo (geralmente uma VM) e disponibiliza dados do sistema via TCP. Conecte-se a partir do NtWarden via Remoto > Conectar.
| Arquivo | Caminho | Necessário para |
|---|---|---|
WinSysServer.exe | x64/Release/WinSysServer.exe | Sempre |
KWinSys.sys | x64/Release/KWinSys/KWinSys.sys | Apenas recursos de kernel |
Itens de modo usuário (processos, serviços, rede) funcionam sem o driver. As abas de kernel precisam do KWinSys carregado no alvo.
# Instalar driver automaticamente + iniciar servidor (executar elevado)
WinSysServer.exe --install # porta padrão 50002
WinSysServer.exe --install --port 9000 # porta personalizada
# Ou instale o driver manualmente primeiro
sc create KWinSys type= kernel binPath= "C:\path\to\KWinSys.sys"
sc start KWinSys
WinSysServer.exe [--port <port>] # padrão: 50002
Protocolo binário personalizado sobre TCP. Cabeçalho de 12 bytes (MessageType, DataSize, Status). Sem autenticação — use apenas em ambientes isolados de laboratório/VM.
MIT — consulte LICENSE.
| Biblioteca estática para enumeração de processos, serviços e rede |
| KWinSys | Driver de kernel para callbacks, SSDT, módulos do kernel, etc. |
| WinSysServer | Servidor TCP headless para inspeção remota |
| Aba | O que faz |
|---|
| Processos | Lista de processos com exibição em árvore, handles, threads, regiões de memória, módulos |
| Desempenho | Gráficos em tempo real de CPU, RAM, GPU e uso de rede — pode ser sobreposto a outras tarefas |
| Serviços | Enumeração de serviços com status, tipo de inicialização, caminho do binário |
| Rede > Conexões | Conexões TCP/UDP com processo proprietário e endpoints remotos |
| Rede > Certificados Raiz | Repositório de CAs raiz confiáveis com assunto, emissor, impressão digital |
| Rede > NDIS | Informações do adaptador de rede — driver, MAC, velocidade, tipo de mídia |
| ETW | Sessões de rastreamento ativas e providers registrados |
| IPC | Endpoints RPC e named pipes |
| Gerenciador de Objetos | Navegue pelo namespace de objetos do kernel — diretórios, symlinks, dispositivos |
| Registry | Navegador do registro com enumeração de chaves/valores |
| Símbolos | Status do carregamento de símbolos em modo usuário |
| Logger | Intercepta logs de depuração do driver de kernel e logs da GUI em modo usuário em um só lugar |
| Aba | O que faz |
|---|
| Objetos de Processo | Enumeração de EPROCESS, detecção de processos ocultos por referência cruzada |
| Módulos | Drivers de kernel carregados com base, tamanho, caminho (junto com verificação LolDrivers) |
| Callbacks | Callbacks do kernel (processo/thread/imagem/registry/objeto/energia) + verificações de integridade |
| SSDT | Entradas da SSDT com proprietário e detecção de hooks |
| Símbolos | Resolução de símbolos do kernel e carregamento de PDB |
| Pool do Kernel | Grandes alocações de pool, estatísticas de tags de pool |
| Memória R/W | Leitura/escrita de memória do kernel por endereço |
| Timers | Contadores de interrupção e DPC por CPU |
| Filtro | Drivers minifilter com altitude e informações de instância |
| Tabelas de Descritores | Entradas GDT/IDT |
| IRP Dispatch | Tabela de dispatch de IRP para qualquer driver — endereços de handlers, módulo proprietário |
| WFP | Drivers e filtros de callout WFP |
| Status DSE | Estado da Imposição de Assinatura de Driver |
| Política de CI | Política de Integridade de Código e nível de imposição |
| Integridade do Kernel | Verifica o .text do kernel contra a imagem no disco |
| Hooks de Hypervisor | Detecção de hooks EPT por análise de temporização |
| Seção | O que verifica |
|---|
| Memória Sem Mapeamento | Regiões executáveis privadas não apoiadas por nenhum arquivo (indicador de shellcode) |
| Hollowing | Divergência entre ImageBase no PEB e ImageBase no cabeçalho PE |
| Module Stomping | Seções .text em memória comparadas com os originais em disco |
| Syscalls Diretos | Instruções syscall (0F 05) encontradas fora da ntdll |
| Stubs de Syscall | Integridade dos stubs da ntdll — bytes em memória vs cópia limpa em disco |
| Hooks de Usuário | Hooks inline (patches JMP/CALL) em ntdll, kernel32, etc. (requer capstone para desmontar os bytes analisados) |
| Tokens | Elevação, nível de integridade, impersonação, privilégios suspeitos |
| Objetos de Depuração | Objetos e portas de depuração no processo |
| Hypervisor | Verificação do vendor da CPUID + anomalias de temporização RDTSC/CPUID |
| Job Objects | Associação a jobs, limites, restrições de interface |
| Status CFG | Estado de imposição de CFG/XFG e flags de mitigação |