-->

sábado, 14 de junho de 2008

Serviço ICS desligando sozinho após 9-10 minutos

Este problema aconteceu no meu servidor ICS (Internet Connection Sharing) que roda Windows 2000 SP4. Ontem eu cheguei em casa e percebi que o servidor 2K havia reiniciado. Achei que podia ter faltado energia na minha ausência, fiz o logon (deveria estar no automático, mas faz tempo que não está) e não dei muita atenção a isso. Mas um tempo depois eu percebi que não conseguia mais navegar. Olhei o servidor e havia um estranho e constante tráfego de upload, de apenas 5KB/s. Eu não estava usando nem o uTorrent nem o eMule e não entendia de onde vinha o tráfego. Fiz um rápido teste e constatei que não vinha do meu PC. Eu cheguei a pensar em malware, mas como o servidor não é usado para nada mais que ser servidor e sou a única pessoa a ter contato com ele, descartei a hipótese. "Minha irmã deve estar usando o e-mule", foi o que eu pensei na hora, mas estranhamente não havia atividade no switch.

O meu "sentido de aranha" deveria ter dado o sinal de alerta, mas não deu. E como eu estava com outro problema pendente, deixei esse para resolver depois.

Voltando ao problema de navegação, eu já sabia que não era um problema "normal" de rede porque eu monitorava o servidor normalmente (eu uso o VNC) e até o serviço DHCP estava funcionado. Então eu executei services.msc e constatei que o serviço "Compartilhamento de Conexões com a Internet" estava parado. Achei estranho, mas reiniciei o serviço, e voltei às pesquisas que estava fazendo.

Porém não passou muito tempo e a navegação parou de novo. Fui conferir e o mesmo serviço estava parado outra vez. Reiniciei-o e após algum tempo havia parado novamente. Reiniciei o servidor e o problema persistiu.

Executei eventvwr.msc e procurei por quaisquer erros ou alertas ocorrendo no momento do desligamento do ICS. Nada.

Aí eu passei a cronometrar. O serviço estava sendo interrompido a intervalos irregulares de entre 9 e 10 minutos. Fiz uma pesquisa no Google a respeito e encontrei outras pessoas com o mesmo problema, mas nenhuma solução ou mesmo uma dica relevante.

E o tráfego de 5KB/s de upload não parava nem por um momento.

Como o Windows 2000 não tem um Msconfig.exe, usei o Autoruns para procurar por possíveis intrusos. A quantidade de informação exibida por Autoruns intimida e acaba sendo fácil deixar algo passar despercebido, além do fato de que eu considerava uma invasão ao meu servidor algo pouco provável. Por isso se não fosse por um pequeno detalhe eu talvez não tivesse notado o intruso:




A presença da variável %WINDIR% na listagem chamou minha atenção. Não é indício de vírus mas é um erro de programação incomum. Mas foi a atenção que eu precisava para notar que o arquivo svchost.exe legítimo do Windows deveria estar em System32 e não em System.

Nota: O MSCONFIG não teria mostrado esse intruso, pois não olha em HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\shell

No caso, o processo estava sendo executado assim:
Explorer.exe %WINDIR%\system\svchost.exe

Matei o processo com o Process Explorer (o Gerenciador de Tarefas do Windows não me mostraria qual dos vários SVCHOST.EXE era o ilegítimo, pois não mostra o caminho) e no ato o upload de 5KB/s parou. Removi o arquivo e reiniciei o servidor. O problema sumiu. Submeti o arquivo ao Avast, que não reportou nada. Submeti o arquivo então ao Serviço VirusTotal, que acusou apenas 25% (em 13/06) de positivos, principalmente de antivirus de pouca notoriedade. Mas os 25% já não deixam qualquer dúvida.

Procurei por outros indícios da invasão no servidor e encontrei um outro arquivo de apenas 58KB e nome aleatório na raiz de C:. Submeti o arquivo ao VirusTotal e o resultado foi de 31.25%.

Pelo que pude apurar, este segundo arquivo é apenas um "downloader" e entrou primeiro no meu PC. Ele fez o download de svchost.exe e o instalou no servidor.

Horas depois do vírus ter sido removido eu percebi uma coisa estranha: Eu não conseguia acessar os compartilhamentos do servidor. Fui verificar e dois dos três compartilhamentos de rede do servidor haviam sumido. Eu até posso entender porque um malware removeria os compartilhamentos (proteger-se da "competição" seria um motivo) mas não entendo por que apenas dois deles.

Pausa para fazer um mea culpa: A raiz de C: havia sido compartilhada por mim. Eu realmente não esperava nennhuma invasão desta máquina, já que havia desligado o netbios e compartilhamentos para a placa wireless e tomado outras precauções para "esconder" o PC.

Já vi que não foi suficiente. :/

E mais: o servidor não roda nem anti-virus (teria sido inútil) nem firewall de terceiros. Um firewall extra poderia ter denunciado o intruso, mas por causa de alguns problemas de desempenho da rede que tive ao usar firewall eu deixei o servidor sem nenhum :/

Casa de ferreiro...

Mas é o primeiro problema em seis meses de operação 24H.

O desligamento do serviço ICS faz sentido. O serviço responsável pelo firewall é o mesmo do ICS e você não pode desligar um sem desligar o outro. A linha de comando para isso é "net stop sharedaccess". A intenção do malware era desligar o firewall e no meu caso isso não passa despercebido porque impede todos os outros computadores da minha rede de acessar a internet.

O engraçado é que se o malware não estivesse desligando o serviço ICS e eu estivesse usando P2P, o tráfego de 5KB/s dele teria passado despercebido, porque a banda mínima oferecida por meu provedor é de 16KB/s, chegando a mais de 80KB/s dependendo do horário. O programador foi esperto ao limitar o tráfego. Como eu não estou usando P2P eu teria eventualmente percebido o tráfego estranho por causa do meu monitoramento com o NetMeter, mas poderia levar dias.

6 comentários:

  1. Esse negócio de anti-virus é complicado. A algumas semanas por um motivo bem similar eu mandei o AVG pastar e instalei a versão free do AntiVir.

    Digamos que eu estou muito satisfeito, não lerdeou o sistema e o índice de positivos em arquivos altamente suspeitos que o AVG diz estar tudo ok é bem maior.

    ResponderExcluir
  2. Também estou com o Antivir em vez do AVG. Mas esse downloader aí que voce achou no seu servidor escondido no meu deve estar abarrotado!

    ResponderExcluir
  3. Jefferson, você executou um '.exe' do mal na sua máquina (cliente do servidor) para que o servidor fosse infectado, correto? Ou existe uma maneira da infecção ter ocorrido SEM a sua execução? (ou a execução no PC da sua irmã)

    Até onde eu sei, um vírus só vai conseguir penetrar no meu Windows se eu (ou alguém, ou algo) o executar.

    Tive um problema com conseqüências muito chatas na semana passada e estou achando que terei que rever os meus conceitos.

    ResponderExcluir
  4. Rafa,

    Eu não executei nada "do mal" nessa máquina. É um servidor e só executo nele um grupo bem definido de programas.

    Como eu estava com o drive C: compartilhado alguém que é capaz de colocar um arquivo na minha raiz tem condições de programar a execução desse arquivo no próximo boot.

    Tirando isso, existem exploits que podem permitir, mesmo se meu drive C: não estivesse compartilhado, a colocação do arquivo na raiz e sua execução, mas eu presumo que o Windows 2000 SP4 não tenha nenhuma falha dessas.

    Eu realmente não tenho como saber com certeza como o programa entrou e foi executado. Mas ninguém na minha casa o executou. Esse servidor sequer tem teclado e mouse.

    ResponderExcluir
  5. Saíu a versão nova do servidor CentOS baseado no Red Hat:

    http://distrowatch.com/4962

    Brincadeira hehehehehehe.

    ResponderExcluir
  6. Naaaaaaaaa... :)

    Eu prefiro lidar com "demônios que eu conheço" ;)

    ResponderExcluir

Siga as regras do blog ou seu comentário será ignorado.