Ataques com Backdoors Conceito Backdoor (porta dos fundos) é um trecho de código mal-intencionado que cria uma ou mais falhas de segurança para dar acesso ao sistema operacional para pessoas não autorizadas. Esta falha de segurança criada é análoga a uma porta dos fundos por onde a pessoa mal intencionada pode entrar (invadir) o sistema. Como inserir Backdoors podem ser inseridos propositalmente pelos criadores do sistema ou podem ser obra de terceiros mal intencionados, usando para isso, um vírus, verme ou cavalo de tróia). Backdoor O termo pode ser usado de forma mais ampla para designar formas furtivas de se obter informações privilegiadas em sistemas de todo tipo. Spywares Consistem programas automáticos de computador, que recolhem informações sobre o usuário, sobre seus costumes na Internet e transmite esta informação a uma entidade externa na Internet, sem o seu conhecimento e o seu consentimento. Spywares Diferem dos Cavalos de Tróia por não terem como objetivo que o sistema do usuário seja dominado, seja manipulado, por uma entidade externa, por um cracker. Proteção A proteção mais comum contra Backdoors em computadores pessoais é o uso de firewalls e de IDS. De modo geral, Backdoors que atuam através da Internet podem ser detectados (por um IDS) ou impedidos de atuar (pelo firewall). Ou por programas Anti-Spiwares. Backdoors Criam “portas de fundo” em um sistema operacional. Backdoor em sistemas UNIX. Necessitam de acesso local à máquina. Técnica que consiste em garantir uma forma de acesso a um determinado sistema operacional de forma não-convencional. Acesso com direitos de root (superusuário). Portas ocultas através de serviços triviais. Backdoors Meio de garantir a volta ao sistema (acessos futuros), numa nova intrusão, no sentido de poupar trabalho. Vão desde aquelas que abrem uma porta através de um shell, até aquelas que surgem da instalação de rootkits capazes de automatizar o processo de uma intrusão. Backdoors Backdoor do Passwd Registrar uma conta do usuário backdoor: /etc/passwd (UNIX) /etc/shadow (distribuições Linux) A mais fácil de se fazer, mas a mais fácil de ser detectada. Backdoor Backdoor do SetUID Existe uma permissão especial em UNIX e Linux, que um determinado arquivo pode vir a ser executado por qualquer usuário com direito de root. Isto é chamado SetUID. A partir dessa possibilidade pode-se criar uma backdoor para dar direito a usuário do sistema o mesmo direito de root. Backdoor Backdoor do Inetd O /etc/inetd.conf é o arquivo por onde se pode iniciar serviços do UNIX e Linux. Assim, é possível criar um serviço especial para que possamos ter acesso aos sistema com direito de root. Backdoor Backdoor com Hora Marcada A backddoor é criada de forma agendada, aproveitando, os recursos do AT ou Crontab. Por exemplo, agendando no Crontab uma tarefa que nada mais é que o script para fazer funcionar a backdoor no tempo agendado. Backdoors Inetd e Passwd Técnicas antigas Script com requinte de engenhosidade usando-se o comando split (o uso do esquema de dividir o arquivo e jogar as informações no meio do arquivo através do comando split). Backdoors de SuitBit Backdoors baseados em SuitBit SuitBit significa acesso com SetUID e SetGID. Consistem em fazer cópia de um shell vulnerável à manipulação de SuitBit (chmod a+s na máquina vítima) e atribuir SuitBit a essa cópia. Backdoors de SuitBit Sofisticação das backdoors de SuitBit, que na sua maioria já não são simplesmente arquivos ocultos cópias de shell, são camufladas de maneira que um comando genérico possa acioná-la. São bastante populares, por poderem ser adaptados a qualquer UNIX. Backdoors de SuitBit Um exemplo é um cracker executar com senha de root, um programa para executar um shell baseado na técnica de SuidBit. Backdoor de SuidBit Uma forma de proteger o sistema contra esse tipo de backdoor, é usar a instrução “nosuid” no arquivo /etc/fstab, na respectiva linha correspondente ao /home e /tmp, que são onde os crackers geralmente tentam criar esse tipo de backdoor. Backdoor de SuidBit Substituindo Arquivo de Comando Criar um arquivo que pode substituir um arquivo de comando, não muito usado, como por exemplo, /bin/cpio ou /bin/rm. O cracker move o rm original para /bin/rm.original. Compila o código “gcc –o rm backdoor”. Atribui SuidBit. Toda vez que é executado rm sem argumentos, na realidade é executado, via chamada interna do sistema, o /bin/rm.original e, quando for passado o parâmetro “ninja”, é executada a backdoor. Exemplos de Backdoor O código, após compilado, estabelece o SuidBit e a backdoor só é gerada com a digitação da palavra-chave reconhecida. Backdoor desenvolvida em script para o shell BASH, com o uso do esquema de dividir o arquivo e colocar as informações no meio do arquivo através do comando split. Backdoors através de Ferramentas Úteis para um administrador, mas podendo serem usadas por crackers. Netcat SBD NSSL Hping2 (montador de pacotes) Netcat Netcat pode ser usada para varreduras UDP e TCP. Um recurso para um invasor em um ambiente que tenha instalado o Netcat é a possibilidade de colocá-lo no modo de “listen” (ouvindo) em uma porta com uma aplicação vinculada. Imagine que essa aplicação seja um interpretador de comando (shell) sh. Netcat Teremos uma backdoor simples em atividade, fazendo: O Netcat é ativado através de um shell na porta 55555: #> nc -l -p 55555 -e /bin/sh & Para se conectar o invasor deve fazer: #> nc ip.ip.ip.ip 55555 isto cria um socket na porta ativa 55555 de um servidor de <ip>, que tem o serviço TCP ativo fornecido pelo shell sh. Netcat Se esse procedimento for executado com senha de root, o usuário que ativou o Netcat é que terá esse direito. SBD (Variante do Netcat) Para sistemas UNIX ou Windows. Possui todos os recursos do Netcat, mas o que é notável é que suporta criptografia com “AES-CBC-128+HMAC-SHA1 encryption)”, o que permite comunicações cifradas. SBD (Variante do Netcat) Para plataformas UNIX (Linux, FreeBSD, OpenBSD, NetBSD, ... ) deve-se executar o comando make para obter as várias formas de compilação: #> make unix Para SunOS/Solaris: #> make sunos SBD (Variante do Netcat) Para Windows Win32 (NT/2000/XP) é necessário o MinGW+MSYS ou Cygwin instalado com toda a base de desenvolvimento: Para compilar para Cygwin padrão: #> make win32 Com MSYS: #> make mingw Para modo WinMain com Cygwin: #> make win32bg Sob MSYS: #> make mingwbg Para compilar para console Cygwin: #> make cygwin SBD (Variante do Netcat) O que é Pen-Test Deve-se confrontar o que denominamos como seguro em nossos sistemas computacionais e ter uma dimensão mais realista de quanto são (ou não são) realmente seguros. Pen-Test com SBD (exemplo a seguir) Backdoor para Pen-Test com SBD 1. De forma simples (sem chave) #> sbd -l -p 12345 -e /bin/sh Para se concetar à backdoor: #> sbd 192.168.200.171 12345 2. Criando uma chave “ninja”para a conexão: #> ./sbd -l -p 12345 -k ninja -e /bin/sh Para se concetar à backdoor com a chave: #> sbd -k ninja 192.168.200.171. 12345 NSSL Uma variante do Netcat com suporte a SSL. Requer OpenSSL. Suporte SSL v.3 Possibilita leitura de banners em serviços que utilizam SSL. Exemplos de backdoor com NSSL 1. Sem suporte a SSL: nssl –rcl 1111 –e /bin/bash Para se conectar à backdoor: nssl 192.168.100.171 1111 2. Com suporte a SSL: nssl –cl 2222 –e /bin/bash Para se conectar à backdoor: nssl 192.168.100.171 2222 Hping2 Similar ao Netcat, o Hping pode ser utilizada por um cracker na construção de uma backdoor. Hping2 deve ser instalada somente na máquina do administrador e não num servidor. Nem em uma DMZ. Documentação original do Hping: referência sobre como se criar uma backdoor utilizando Hping2. DMZ – Zona Desmilitarizada DMZ = Uma LAN de Isolamento Um ambiente parcialmente protegido. É uma rede local que isola uma rede corporativa do mundo exterior. Assim, isola a rede corporativa, da Internet. Possui um endereço de rede exclusivo, que difere do endereço da rede corporativa. A DMZ é a única que pode ser vista de fora. DMZ – Uma LAN parcialmente protegida Uma DMZ é criada por um roteador de perímetro (o ponto de demarcação entre uma rede desprotegida e uma rede parcialmente protegida – a Internet e a DMZ, por exemplo); Hosts de segurança (um servidor protegido que fornece serviços ao mundo exterior, tais como FTP, Web, DNS, SMTP e Proxy Web) e; Gateways de aplicativo (firewalls que inspeciona mensagens no nível dos aplicativos) Hping2 Para a construção de uma backdoor, utiliza-se a opção -9 (listen) combinada com o “|” (pipe) com uma chamada de shell, como /bin/sh. #> hping -i eth0 -9 cmd | /bin/sh Todos os pacotes que contenham “cmd” (uma string prédefinida) serão processados e os bytes seguintes ao “cmd”, também. Desta forma, uma backdoor com Hping2 pode ser furtiva o suficiente em um sistema violado. Hping2 Imagine um cenário em que um administrador costume instalar aplicativos poderosos, como o Hping2, para fins de teste e não os remova. A backdoor é um processo ativo, mas um invasor pode ocultar esse processo forjando comandos com ps e fuser. Um servidor com o Hping2 instalado pode ser facilmente manipulado remotamente por uma backdoor que não precisa criar um usuário da porta de qualquer serviço TCP ativo. Hping2 Mesmo que exista uma política de segurança de perímetro bem elaborada, ainda assim seria possível a passagem de comandos para a máquina invadida, pois seria feita através de um serviço oficialmente disponível cuja comunicação seria liberada via Firewall. Veja exemplo a seguir: Backdoor com Hping2 através de SMTP Seja uma string pré-definida concatenada a um comando: cmdls O seguinte exemplo mostra uma conexão com a backdoor através do serviço SMTP Sendmail, porta 25 de serviço TCP ativo. O “;” final indica o fim do comando para o Hping2 que irá executálo. $> telnet 192.168.1.1 25 (xpto.lammer.xxx.br) Trying... 192.168.1.1 Connected to lammer (192.168.1.1). Escape character is `^]`. 220 192.168.1.1 ESMTP Sendmail cmdls; Contramedidas para Backdoors Lembrar das backdoors mais engenhosas ! Uma backdoor simples como a do /etc/passwd pode ser instalada apenas para desviar a atenção do administrador. Este a remove e na sequência aplica um patch de correção e assume que o problema está resolvido. Técnicas de backdoor podem ser empregadas por invasores internos. Contramedidas para Backdoors Um mecanismo recomendável para qualquer servidor é a utilização de IDS de hosts, para que o administrador tenha a capacidade de avaliar o quanto seu sistema foi comprometido. Contramedidas para Backdoors Mas, invasores com conhecimentos avançados podem utilizar técnicas para ultrapassar o IDS de host, caso este tenha alguma limitação visível. Para UNIX BSD e Linux, temos o IDS de host Tripwire (Tripwire.org - Home of the Tripwire Open Source Project) http://www.tripwire.org/downloads/index.php Contramedidas para Backdoors Aplicar políticas de segurança no sistema de arquivos dos servidores. Em Linux e UNIX BSD, opções noexec, nodev e nosuid, tornarão os sistemas mais seguros. Contramedidas para Backdoors Eliminar do servidor todo recurso desnecessário. Serviços que não são usados e ferramentas propícias a invasores, como Hping, Netcat, Wget, ... Wget (GNU wget is a free software package for retrieving files using HTTP, ...) www.gnu.org/software/wget/wget.html Recomendação da Norma Internacional de Segurança BS17799 (item 9.5.5), seguida pela ABNT.