terça-feira, 28 de junho de 2011

Salvar e Sair no Firefox 4


Depois de um longo período de testes, o aguardado Firefox 4 foi lançado há poucos dias com melhorias significativas no quesito velocidade e suporte a novos padrões, além de uma interface gráfica completamente reformulada, mais moderna e minimalista. O navegador é um sucesso e já foi baixado mais de 40 milhões de vezes em pouco mais de uma semana em todo o mundo.
Mas nem só de avanços vive o Firefox 4. Uma excelente funcionalidade foi deixada para trás na última versão do navegador da Mozilla. Estamos falando da opção “Salvar e sair”, mostrada sempre que o Firefox era fechado com mais de uma guia aberta e que, como o nome sugere, salva as páginas abertas e as restaura na próxima vez que o navegador for iniciado. O recurso, na verdade, continua existindo, mas de forma automática. Basta clicar em “Restaurar sessão anterior”, na página inicial do Firefox para ter suas abas de volta.




Para quem estava acostumado com a opção no Firefox 3.6, a mudança pode ser um grande inconveniente. Felizmente há como reverter isso facilmente e sem nenhuma extensão. Basta seguir os passos abaixo.
1. Na barra de endereços, digite: “about:config” (sem aspas) e dê um Enter;
2. Leia o aviso e clique no botão “Serei cuidadoso, prometo!”;
3. Procure por “browser.showQuitWarning” (sem aspas);
4. Dê um duplo clique sobre a chave encontrada de forma que o dado do campo “Valor” seja alterado para “true” (verdadeiro);
Pronto! Não precisa nem reiniciar o Firefox. Experimente fechar o navegador com várias páginas abertas e surgirá a opção desaparecida “Salvar e sair”.
Boa sorte!

Como Trinity invadiu Matrix

Lanço a minha primeira postagem, só para matar uma curiosidade e ajudar alguns alunos da área de informática.


A certa altura do filme Matrix Reload, a personagem Trinity invade o computador da Matrix, utilizando o nmap para fazer o reconhecimento de portas e assim detectando a porta 22 (SSH) aberta. Explorando uma vulnerabilidade do ser­vidor SSH, utiliza um exploit denominado ’sshnuke’ para ganhar acesso ao servidor. 

O nmap permite mapeamento de portas utilizando diversas técnicas furtivas de reconhecimento além de identificar com boa precisão, o sistema operacional que roda no dispositivo remoto.

A vulnerabilidade explorada, como se vê na figura acima, SSHv1 CRC32, era uma vulnerabilidade real, mas o exploit (sshkuke), embora fosse fruto da imaginação do autor, é plenamente factível.

O que é o Buffer Overflow
A vulnerabilidade ssh1 crc32 foi descoberta no ano de 2001, afetava as versões SSH menor que 1.2.32, openSSH menor que 2.3 entre outras variações e era do tipo remote buffer overflow. A exploração dessa vulnerabilidade permite a injeção um código malicioso no servidor remoto para executar as mais variadas ações como por exemplo, abrir um shell para uso do atacante, eliminar regras do firewall, instalar um backdoor, matar processos, criar usuários, etc, ou no mínimo provocar uma negação de serviço.
Um buffer overflow é um ataque provocado por um erro de programação que gera uma exception no acesso à memória. Ele ocorre quando um processo tenta armazenar um dado além dos limites de um buffer de tamanho determinado, sobrescrevendo áreas de memória adjacentes a esse buffer, incluindo alguns endereços de controle fluxo ou ponteiros de memória utilizados pelo processador, o que normalmente causa um erro de “Segmentation Fault”, provocando o encerramento do programa.
Esses “endereços de controle de fluxo”, na realidade, são ponteiros para a próxima instrução a ser executada pelo processador e se cuidadosamente sobrepostos, podem provocar um desvio no fluxo de execução normal do programa para o código maléfico do atacante.
Abaixo, há um exemplo de como ocorre o ataque de buffer overflow. Basicamente, o atacante envia um dado com tamanho maior que o espaço alocado para a buffer, juntamente com um código malicioso, de tal forma que o endereço de retorno da função, contido na região chamada de EIP, seja sobreposto para apontar para o código do atacante. 



“No caso específico dessa vulnerabilidade SSH1 CRC32, um conteúdo inteiro de 32 bits é atribuído à uma variável de 16 bits da rotina “deattack.c” e pode ser explorado remotamente pelo envio de um pacote cuidadosamente montado para esse fim.” [DrWhiteHat]
Para Reproduzir o ataque pode ser utilizado um programa escrito em linguagem C, comportando-se como um servidor, escutando uma porta TCP, que quando receber um dado por essa porta, exibe-o na console e envia uma mensagem de retorno ao cliente.

A compilação e execução do programa servidor é realizado numa máquina virtual VmWare (com um sistema em Linux, Debian por exemplo) e o ataque parte da máquina hospedeira.
Para fazer o ataque é usado um script em python com o payload ou shellcode (código malicioso) gerado pelo metasploit e realiza-se uma conexão reversa do servidor para o cliente na porta 4444. (Para ver o programa demonstrativo e o exploit acesse o link da página do DrWhiteHat)


Para mais informações e aprender como realizar o ataque, consulte as referências. Especialmente a de Megumi Jr, ele era meu colega do curso de redes de computadores e de quem aprendemos esse ataque, para ver seu perfil clique Aqui.




REFERÊNCIAS

Megumi Jr – Invadindo Matrix – Entendendo o Buffer Overflow – 2008 em http://drwhitehat.wordpress.com/2008/10/17/invadindo-matrix-entendendo-o-buffer-overflow/

Mercy – Basic buffer overflow explained – 2002 em http://www.milw0rm.com/papers/97