RTFM & Aleatoriedades - Windows Server Troubleshooting
Aqui temos uma abordagem simples de identificação de causa raiz para troubleshooting em ambientes Microsoft Windows Server.
Como exemplo estou usando um problema, que a equipe Microsoft de uma multinacional, enfrentou com um produto de mercado que estava causando um alto uso de Non-Paged Pool Memory(memory leak). E que causou, durante uma rotina de madrugada, o travamento de +500 servidores...
- eu era de uma equipe multidiciplinar. responsável por virtualização, storage, backup, Unix e Linux e acabei me envolvendo pois as equipes de Segurança e Microsoft estavam apenas trocando acusações e ainda não identificado a causa raiz...
Problema
Verificado que o non-paged pool está com tamanho anormal
-
Conforme documentação da Microsoft, o Non-paged pool, pode ocupar até 75% da memória física.
- Porém não deve ser considerado como "normal" o grande uso da mesma, principalmente sem uma investigação etc...
-
O Non-paged Pool são dados na RAM do computador usados pelo kernel e pelos drivers do sistema operacional.
- Non-paged pool nunca é enviado para o disco (Page Cache)! Sempre ficará armazenado na memória física.
-
Conforme a minha vivência, leak de memória, é quando um programa que armazena dados no pool de memória não paginável do sistema faz "merda". Simples assim!
Investigação
Identificando o que está utilizando os Pools Memory no servidor Windão.
- Para o troubleshooting de Pool Memory é usada a ferramenta PoolMon que é um monitor que exibe dados que o Windão coleta sobre alocações de memória dos pools de kernel paginados e não paginados do sistema...
- Os dados são agrupados por marca de alocação de pool que evidencia as tags que identificam o software etc...
Chega de conversa! Para tanto abra o command ou power shell e navegue até a pasta em que o executável "poolmon.exe" está localizado:
- Pode-se executar a ferramenta para que seja gerado um log:
C:\Temp\Windows Kits\10\Tools\x64> poolmon -b -n C:\Temp\log_poolmon.txt
- Ou imprimir na STDOUT:
C:\Temp\Windows Kits\10\Tools\x64> poolmon -b
- “-b” executa o aplicativo e organiza os processos em ordem de consumo.
Aqui conseguimos ver que no topo da lista, temos o processo com maior consumo de RAM "5053046496" Bytes e sua Tag é "NFeS".
- a TAG é um valor único e que é dado pela fabricante do driver.
5053046496 / 1024 = 4.934.615,... / 1024 = 4.818,... / 1024 = 4,7...GB
Com a tag em mãos, deve-se usar a ferramenta findstr que procura por cadeia de caracteres! Dessa forma vamos tentar localizar o arquivo que possui a tag em seu conteúdo...
- Vamos em seguida acessar o diretório de drives no Windows:
- path: c:\windows\system32\drivers
C:\> cd c:\windows\system32\drivers
- E executar a tool para a busca da tag
C:\Windows\System32\drivers\> findstr /m /l /s NFeS *.sys
C:\Windows\System32\drivers\mfeavfk.sys
- /l: pesquisa por caracteres literais
- /m: lista apenas resultados correspondentes
- /s: pesquisa recursiva
Bingo....\o/!
- Identificamos com sucesso um aquivo que possui a tag: "mfeavfk.sys"!
Agora para tentar identificar o programa que está usando esse driver.
- Vamos usar a ferramenta sigcheck que mostra metadados como, por exemplo: o número da versão do arquivo, carimbo de data/hora e detalhes da assinatura digital etc...
C:\> sigcheck c:\Windows\System32\drivers\mfeavfk.sys
Assim identificamos que o proprietário é o Anti-vírus McAfee.
Sobre o Arquivo e Driver Identificado
-
Dados do Host afetado
- Host: Windows Server
- Versão: Windows Server Enterprise 2012 R2 x64
-
Versões do produto MCAfee:
- McAfee Agent - version: 5.6.2.209
- McAfee Endpoint Security Plataform - version: 10.6.11910
- McAfee Endpoint Security Threat Prevention - version: 10.6.11910
Informações relevantes
Dos processos iniciados e drivers utilizados pelo Virus Scan Enterprise no Windão:
-
O driver mfeavfk:
- é um filtro para verificação de arquivos de sistema e para manter um cache desses arquivos aferidos.
- é um filtro para verificação de arquivos de sistema e para manter um cache desses arquivos aferidos.
-
O arquivo mfeavfk.sys:
- é um componente de software do SYSCORE da McAfee que opera como Anti-Virus Filter Link para os produtos de segurança do McAfee.
- O VSE( VirusScan Enterprise) através do driver mfeavfk que opera a nível de kernel, juntamente com o Microsoft Filter Manager, consegue verificar o vírus em tempo real e de forma autônoma quando arquivos são abertos ou fechados.
- Basicamente é assim que a McAfee identifica um vírus manipulando arquivos etc...
- O VSE( VirusScan Enterprise) através do driver mfeavfk que opera a nível de kernel, juntamente com o Microsoft Filter Manager, consegue verificar o vírus em tempo real e de forma autônoma quando arquivos são abertos ou fechados.
- MFEAVFK é um acrônimo para = McAfee For Enterprise Anti-Virus File Link Filter Driver
- é um componente de software do SYSCORE da McAfee que opera como Anti-Virus Filter Link para os produtos de segurança do McAfee.
-
Características
- Mfeavfk.sys não é essencial para SO e por não ser nativo do sistema causa relativamente poucos problemas.
- Mfeavfk.sys está localizado na pasta C:\Windows\System32\drivers
- O tamanho do arquivo no Windão tem em média 91.672 bytes.
- O driver pode ser iniciado ou parado quando feito de forma canônica.
- O programa não está visível no task manager.
- É assinado pela Verisign.
- Não há descrição detalhada do serviço.
- mfeavfk.sys parece ser um arquivo compactado. Portanto, a classificação de segurança técnica é 0% perigosa;
- no entanto: ao pesquisar reviews da comunidade a quantidade de problemas relacionados são incontáveis... :(
Pesquisando na documentação técnica do produto, é informado pelo fabricante, que programas de backup e criptografia também usam o mesmo mecanismo:
- Por isso, conflitos e até mesmo corrompimentos de arquivos, podem ocorrer.
- Até mesmo quando um vírus, que possui mecanismo de proteção contra o driver "mfeavfk", pode gerar problemas críticos ao tentar matar o processo que faz uso do driver etc...
Continuando com a pesquisa, mas agora, tentando cruzar ocorrências do driver "mfeavfk.sys" e leaks de "Non-Paged Pool" na base de conhecimento McAfee e Internet:
- O primeiro matching foi certeiro!
- Encontrei diversos casos conhecidos pela McAfee do problema que estamos enfrentando e justamente com a mesma versão de SO e Anti-Vírus 😉
- Segue link onde o assunto é extensivamente tratado entre clientes e suporte McAfee
- Link original está quebrado! Egraçado como as fabricantes desaparecem com alguns dados ...
- Mas a WayBackMachine salvou uma cópia para a posteridade 😉
- Link original está quebrado! Egraçado como as fabricantes desaparecem com alguns dados ...
Logo em seguida, repassei essa investigação para as equipes de SegInfo e Microfofy para continuidade do troubleshooting...
Referências
https://kc.mcafee.com/corporate/index?page=content&id=KB65784
https://www.file.net/process/mfeavfk.sys.html
https://support.microsoft.com/pt-br/help/177415/how-to-use-memory-pool-monitor-poolmon-exe-to-troubleshoot-kernel-mode
https://developer.microsoft.com/pt-br/windows/hardware
https://docs.microsoft.com/en-us/sysinternals/downloads/sigcheck
https://community.mcafee.com/t5/Endpoint-Security-ENS/Nonpaged-pool-memory-leak-mfeavfk-sys-on-multiple-windows-server/td-p/617169
https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/filter-manager-concepts