Guia

Auditar serviços do Windows

Uma auditoria não é uma lista do que há na máquina. É a diferença entre o que há na máquina e o que deveria haver - e nenhum Windows de fábrica registra a segunda metade.

Três perguntas, e o que as responde

O que mudou desde que esta máquina foi construída?

Um instantâneo feito na implantação e uma comparação com a máquina esta noite. A configuração é informada à parte do que apenas iniciou ou parou, de modo que o único tipo de inicialização que alguém mudou não fique enterrado sob quarenta serviços que por acaso estão em execução.

bws snapshot diff baseline.json --live

Por que a homologação difere da produção?

Faça um instantâneo em cada uma e compare os dois arquivos - em qualquer lugar, sem nenhuma das duas máquinas presente. Os arquivos trazem o nome da máquina e a conta que os fez.

bws snapshot diff staging.json production.json

O que há aqui que não deveria haver?

Consultas que encontram as formas que merecem um olhar: um serviço cujo executável sumiu, um sem assinatura, um em execução embora desabilitado, um que pede direitos de depuração.

file:missing, signed:no, mismatch:running

A forma noturna

# o dia em que a máquina entra em serviço
bws snapshot create C:\baselines\web01.json --note "after the build"

# toda noite, a partir de uma tarefa agendada
bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
#   0 - sem deriva de configuração
#   5 - a configuração se desviou, e drift.json diz o quê
#   3 - rodou e não conseguiu ler tudo, então a resposta é parcial

O código de saída 5 é o que faz disto uma auditoria em vez de um relatório que ninguém lê: a tarefa fica em silêncio até a máquina se desviar, e na noite em que isso acontece, alguém é avisado.

Faça a linha de base em uma sessão com privilégios elevados. Sem direitos de administrador o gerenciador lista menos entradas e recusa mais das que lista. O instantâneo registra se a conta que o fez era administradora, de modo que a comparação pode dizer isso em vez de informar como removidas entradas que ninguém removeu - mas uma linha de base sem metade da máquina continua sendo uma linha de base sem metade da máquina.

O que um instantâneo vale como prova

  • É JSON com um campo por linha, então cabe em um repositório e o git diff o lê. Um auditor que não tenha esta ferramenta ainda pode ler o arquivo, e um sistema de controle de versão já responde ao quando.
  • Guarda o que o snap-in nunca mostrou: o caminho de lançamento e os argumentos, o hash e o signatário do arquivo, as dependências nos dois sentidos, os gatilhos, os privilégios exigidos, o tipo de SID e o descritor de segurança.
  • Diz o que não conseguiu ler. Um campo sobre o qual esta sessão não tinha direitos é registrado como não lido - nunca como vazio - de modo que uma comparação posterior pode dizer not compared em vez de chamá-lo, em silêncio, de inalterado.
  • É uma descrição da máquina inteira. Arquive-o de acordo: ele é gravado com as permissões que o diretório dele já tem, e a ferramenta não restringe nada.
Como funcionam os instantâneos e as comparações