| Passos para recuperação de um compromisso de segurança |
|
|
Este documento sugere passos para responder a um compromisso de segurança nos Sistemas Operativos UNIX ou NT.
Note que todas as acções desencadeadas nesta actividade devem estar de acordo com as políticas e procedimentos da sua organização.
Dependendo de como a sua organização está estruturada, pode ser importante notificar as chefias para facilitar a coordenação interna do esforço de recuperação da intrusão. Deve também estar atento à possibilidade das intrusões poderem captar a atenção da comunicação social.
Antes de começar a recuperação a sua organização deve decidir se é ou não uma opção dar início a uma investigação legal.
As equipas de resposta a incidentes de segurança (CSIRTs e/ou CERTs) tem normalmente uma predominância técnica na abordagem das situações, e, assim sendo, não prestam apoio ou orientações legais.
Se estiver interessado em perseguir a via legal, sugere-se que consulte as chefias e assessoria juridica para determinar se alguma lei foi infringida, e, com essa base, pode tentar o contacto com as autoridades no sentido de averiguar da possibilidade de iniciar uma investigação.
Pode ser necessário notificar outras entidades, como por exemplo, outras assistências técnicas dos sistemas afectados, ou as respectivas comunidades utilizadoras.
É muito importante documentar todos os passos realizados na recuperação, pelas seguintes razões:
Para voltar a obter controlo dos sistemas precisará de desligá-los da rede, incluindo ligações dial-up ou de consola. Após esta acção pode escolher operar o sistema em single-user no caso de um sistema Unix, ou como administrador local no NT. Para isso no entanto pode perder informações úteis sobre o estado do sistema porque os processos existentes serão removidos por acção da reinicialização do sistema.
Se não desligar os sistemas comprometidos da rede, corre o risco do intruso poder desfazer as acções que se vão tomando no sentido da recuperação.
Antes de analisar a intrusão é recomendável que seja realizada uma cópia total do sistema. Essa cópia pode ser necessária no futuro para recuperação de dados ou para realização de investigações adicionais.
Se tiver disponíveis discos sobressalentes dos mesmos modelos (e capacidades) aos instalados nos sistemas comprometidos, pode usar o comando “dd” fornecido com os sistemas UNIX, para fazer uma cópia exacta dos discos presentes nos sistemas comprometidos.
Por exemplo, num sistema Linux com dois discos SCSI, o comando seguinte faria uma réplica do disco “/dev/sda” para o disco “/dev/sdb”.
# dd if=/dev/sda of=/dev/sdb
Por favor consulte a página de manual do commando “dd” para mais informações.
Há várias formas de fazer cópias idênticas de discos. No caso de sistemas NT, não está disponível um comando como o “dd”, mas existem outras ferramentas disponíveis no mercado capazes do mesmo efeito.
Após a criação das cópias, os suportes físicos devem ser etiquetados e armazenados em local seguro. Para além desta cópia extraordinária, e se os sistemas comprometidos dispuserem de backups regulares, é aconselhável assegurar que os backups realizados nesse âmbito não serão reescritos.
Os resultados dados por sistemas com a segurança comprometida não são de confiança. Em concreto a procura de modificações usando ferramentas do próprio sistema comprometido, não é de confiança. Existem root-kits que após instalados modificam o sistema para esconder a intrusão, dando resultados falsificados aos comandos típicos de procura de intrusão, como por exemplo, no caso Unix, os comandos “ls”, “lsmod” e outros.
Devido a este problema, sugere-se que os computadores comprometidos sejam re-arrancados (boot) com um sistema operativo que se saiba não ter sido comprometido. A actividade de análise deve partir de um sistema operativo que se saiba não estar comprometido. Uma possibilidade para atingir este objectivo é instalar um disco adicional no sistema com um sistema operativo limpo, e realizar a análise arrancando o sistema a partir desse disco.
Alguns dos binários que são tipicamente substituídos por Cavalos de Tróia em sistemas Unix são: telnet, in.telnetd, login, su, ftp, ls, ps, netstat, ifconfig, find, du, df, libc, sync, inetd e syslogd. É conveniente verificar também qualquer executável referido em /etc/inetd.conf , ou noutras configurações de arranque do sistema, programas de sistema e rede críticos, bem como bibliotecas partilhadas.
Em sistemas NT, os Cavalos de Tróia normalmente introduzem vírus ou “sistemas de administração remota” como por exemplo o Back Orifice and NetBus. Já aconteceram casos em que o ficheiro de sistema que trata a conectividade Internet foi substituído por um Cavalo de Tróia.
A comparação dos ficheiros executáveis e das configurações no sistema comprometido, contra as versões dadas como boas, não deve basear-se em datas de alteração ou tamanhos, mas sim na comparação do conteúdo dos ficheiros, ou então na comparação de sínteses tipo MD5.
Sugere-se que a inspecção a sistemas Unix inclua:
Sugere-se que a inspecção de sistemas NT inclua:
Frequentemente os dados são modificados pelo intruso, pelo que é recomendável verificar a sua integridade.
Os intrusos tem o hábito de instalar ferramentas feitas à medida para monitorização e acesso do/ao sistema comprometido. As classes de ficheiros normalmente encontradas nestes casos são:
Saídas das ferramentas usadas pelo intruso – as ferramentas usadas pelo intruso podem ter produzido saídas (output), interessantes para determinar as suas actividades, bem como outros sites envolvidos.
A procura por ferramentas utilizadas por intrusos deve ter em atenção ao seguinte:
Ficheiros inesperados do tipo texto abaixo do directório /dev. Algumas ferramentas deixam informação nesse local.
Ficheiros os directórios escondidos
Ficheiros ou directórios que possam facilmente ser confundidos com nomes legitimos, como por exemplo “...” em sistemas UNIX, ou EXPLORE.EXE ou UMGR32.EXE em sistemas Windows.
A revisão dos históricos pode ajudar a formar uma ideia de como o sistema foi comprometido, o que aconteceu enquanto durante essa situação, e que acessos externos houve. Os históricos tem que ser analisados com espirito crítico porque podem ter sido manipulados pelo intruso.
Como os logs podem conter grandes volumes de informação, não é raro haver a necessidade de sintetizar essa informação, e, nesta análise recomenda-se os seguintes critérios:
Os logs dos sistemas NT podem ser consultados através do Event-Viewer. Outras aplicações podem escrever os logs para outras localizações. O ISS por exemplo escreve os logs para o directório c:winntsystem32logfiles. Abaixo encontra-se uma lista dos logs comuns a sistemas UNIX, uma descrição da sua função, e o que procurar nesses ficheiros. Dependendo da configuração do sistema, pode haver algumas diferenças.
Quando ocorre uma intrusão é frequente a instalação de um programa de monitorização da rede para captura de informação das contas (login e password). Para sistemas NT é mais usual a instalação de programas de administração remota para os mesmos efeitos.
O primeiro passo para determinar se um sniffer está instalado, é verificar se algum processo tem uma interface de rede em modo promiscuo. Neste modo de funcionamento, a interface de rede passa todos os pacotes de rede para o sistema operativo, mesmo que não sejam endereçados a si.
Existem algumas ferramentas para fazer esta investigação:
Note-se que existem utilizações legitimas para o funcionamento das interfaces de rede em modo promiscuo, e portanto não é possível afirmar-se que o intruso está a fazer sniffing apenas sabendo-se que as interfaces estão em modo promiscuo.
Deve-se também considerar que os logs dos sniffers tendem a crescer rapidamente, e que isso pode portanto traduzir-se no volume ocupado das partições. Infelizmente as ferramentas que permitem aferir o volume, como o “df”, podem ter sido substituídas por versões falsificadas pelo que se deve ter o cuidado de fazer a verificação com uma versão limpa do Sistema Operativo.
Se um sniffer foi instalado no seu sistema, é aconselhável analisar os logs no sentido de detectar se outros sistemas estão em risco. Em principio todos os endereços de destino registados nos logs do sniffer estão em risco, e mais ainda se a sessão envolver a entrada no sistema remoto.
É conveniente verificar sinais de intrusão noutros sistemas da mesma rede, ou em sistemas que tenham configuradas relações de confiança com o sistema comprometido. Essas relações de confiança podem passar, por exemplo, por entradas automáticas via SSH.
Sugere-se que os sistemas sejam verificados contra as seguintes listas de verificações:
É habitual haver uma cadeia de sistemas comprometidos, com um elemento padrão de exploração de uma vulnerabilidade descoberta recentemente. Se forem descobertos sistemas a montante ou a jusante do sistema comprometido, que sejam suspeitos de estar envolvidos no incidente, recomenda-se que sejam essas ocorrências reportadas aos CSIRTs correspondentes. É bem possível que esses sistemas também estejam comprometidos, e que os responsáveis não tenham ainda conhecimento da situação.
Os intrusos usam frequentemente contas comprometidas para lançar ataques a outros locais. Se encontrar evidência dum compromisso de segurança ou de actividades de intrusão, deve contactar os sites envolvidos, no sentido de informar a descoberta, e de alertar para que a actividade detectada pode indiciar que outros sistemas estejam comprometidos. Nesse contacto devem ser indicados os detalhes úteis como por exemplo das datas/horas, não esquecendo o fuso horário, e o método de intrusão.
Para obter os contactos do CERT.PT, consultar a página http://www.cert.pt.
Para obter contactos de outras equipas de segurança na Europa, poderá consultar a lista de CSIRTs no sítio: http://www.ti.terena.nl/.
Para obter contactos de outras equipas de segurança, poderá consultar a lista do Forum of Incident Response and Security Teams (FIRST) em http://www.first.org/team-info/.
Para obter os contactos de um domínio abaixo de .PT, deve utilizar-se o servidor WHOIS, disponível em whois.dns.pt, ou então consultar as páginas em www.dns.pt.
Para obter os contactos para um domínio em .COM, .EDU, ou .ORG, sugere-se o seguinte sítio: http://www.internic.net/whois.html
Para obter contactos das regiões da Asia-Pacifico e Austrália, sugerem-se os seguintes sítios:
Não se recomenda o envio de emails para endereços no sistema suspeito de estar comprometido, como por exemplo “root”, “admin”, ou “postmaster”, pois esses emails poderão ser interceptados pelo intruso.
Note-se que se o sistema estiver comprometido, a única forma de voltar a obter confiança nele é através de uma reinstalação de raiz, a partir dos suportes de distribuição livres da possibilidade de adulteração, como por exemplo CD-ROMs. Simplesmente resolver a vulnerabilidade de origem da intrusão e outros problemas relacionados, e depois manter atenção redobrada no sistema durante algum tempo, não é suficiente porque não se teria a certeza de que todas as backdoors e outras situações teriam sido resolvidas. É pouco fiável verificar-se a integridade do sistema utilizando-se um sistema comprometido. Mesmo fazendo-se um boot de um sistema operativo limpo para verificar a integridade do sistema comprometido, é muito plausível escapar a essa análise algum pormenor importante, que depois permita a recaída do sistema.
Neste passo não se recomenda ainda que sejam recuperados os dados dos backups.
O sistema terá uma utilização prevista à qual está associada um conjunto de serviços. Outros serviços que tenham sido instalados automaticamente devem ser desligados, e, se possível, desinstalados. Apenas os serviços necessários ao funcionamento previsto do servidor devem estar ligados. Se for possível, deve adoptar-se a atitude conservadora de desligar inicialmente todos os serviços, e ligar um a um, à medida das necessidades.
Aconselha-se também que sejam verificadas as configurações no sentido de detectar e resolver fragilidades de configurações, como por exemplo, utilizadores sem password, acessos sem controlo, falta de logging, etc.
Este passo consiste em aplicar remendos de segurança aos serviços instalados. Sem este passo, o sistema pode estar à partida vulnerável a problemas de segurança que foram sendo descobertos e resolvidos.
É também aconselhável que regularmente seja verificado se novos remendos de segurança foram sendo libertados, e se devem ou não ser instalados. Para este efeito recomenda-se a consulta dos sites dos fabricantes, mais os seguintes:
Existe o potencial da reposição a partir dos backups reintroduzir as vulnerabilidades de segurança. Para minimizar este risco deve haver o cuidado para não esmagar os executáveis, configurações e bibliotecas instalados e refinados com os preceitos referidos anteriormente.
No caso da percepção de risco ser muito alta relativamente a recuperar dados dos backups, recomenda-se a seguinte abordagem:
Depois dos problemas de segurança terem sido resolvidos, é aconselhável que sejam mudadas as passwords de todas as contas nos sistemas afectados. As passwords não devem ser fáceis de adivinhar por entidades não autorizadas.
A ligação seguinte contém uma listagem de ferramentas de segurança que podem ajudar na tarefa de robustecer a instalação - http://www.cert.org/tech_tips/security_tools.html (em Inglês)
Verificar que o logging está activado para os serviços configurados. Nesta fase é conveniente que o nível de logging seja alto, dentro das limitações do sistema em espaço, CPU e outras. Para maior segurança da integridade dos logs, pode considerar-se a opção de enviar os logs para outro servidor, ou então de os enviar para dispositivos que não suporte o apagamento (cd-rom, impressoras de contínuo, ou outros.)
É recomendável a configuração de firewall para que se melhor se controle o acesso aos sistemas.
Após se completarem os passos descritos atrás, o sistema pode voltar a ser ligado à Internet.
É aconselhável que cada site tenha adoptado uma política de segurança, e, se possível, alinhada com o que é proposto no RFC2196.
Se tal política não existir na forma escrita, o conhecimento arrecadado com a recuperação de uma intrusão, e nomeadamente o seu custo, poderá ser a base motivadora para a elaboração de um documento desta natureza.
Se a política de segurança já existir, e lhe forem introduzidas mudanças, é aconselhável que as alterações sejam devidamente propagadas às entidades afectadas por essa política.
---------------------------------
Adaptação do título original “Steps for Recovering from a UNIX or NT System Compromise”, disponível em http://www.cert.org/tech_tips/win-UNIX-system_compromise.html
O CERT.PT tem como missão contribuir para o esforço de cibersegurança nacional nomeadamente no tratamento e coordenação da resposta a incidentes, na produção de alertas e recomendações de segurança e na promoção de uma cultura de segurança em Portugal.
Av. do Brasil 101
1700-066 Lisboa
Portugal
Tel: +351 218440177 (9h30-12h30, 14h00-17h30; GMT)
Fax: +351 218472167
email:
pgp: 342A 17BA DF71 E193 6871 0357 8BDE A247 C523 AAE7