Ataques Polimorficos



Documentos relacionados
Rodrigo Rubira Branco

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Assinaturas de Ataques. Técnicas de Evasão. Rodrigo Rubira Branco

NOVO SISTEMA DE CORREIO ELETRONICO PARA OS DOMINIOS ic.uff.br & dcc.ic.uff.br

Aula 14: Instruções e Seus Tipos

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo.

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Consulta de endereço através do Cep

Armazenamento de Dados. Prof. Antonio Almeida de Barros Junior

Guia de Preenchimento da Proposta de Adesão ao Plano de Saúde Claro Dental

Manipulando Strings no VBA (Replace, Mid e InStr)

Organização de Computadores 1

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

Configuração de assinatura de

O modelo do computador

2 Formalidades referentes ao trabalho

Manipulando Strings no VBA (Replace, Mid e InStr)

Validando dados de páginas WEB

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

Active Directory - Criação de seu primeiro domínio Windows 2003

Manual de Utilização. Site Manager. Tecnologia ao serviço do Mundo Rural

Slides_Java_1 !"$ % & $ ' ' Output: Run java. Compile javac. Name of program. Must be the same as name of file. Java source code.

1. Domínio dos Atributos

Click the + sign to add new server details. Clique no sinal de "+" para adicionar novos detalhes do servidor. Enter a friendly name for your BI Server

COMO DESTACAR RESULTADOS COM A FERRAMENTA FORTAMAÇÃO CONDICIONAL DO EXCEL

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Aulas de PHP Criptografia com Cifra de César. Paulo Marcos Trentin

Gatilhos (Triggers) Prof. Márcio Bueno Elaborado por Maria Lígia B. Perkusich

( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO DISPOSITIVOS MOVEIS ANDROID STUDIO

Prof. Esp. Adriano Carvalho

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Programação de Computadores - I. Profª Beatriz Profº Israel

How to write Shellcodes por Luiz Fernando Camargo

Crash recovery é similar ao instance recovery, onde o primeiro referencia ambientes de instância exclusiva e o segundo ambientes parallel server.

EXEMPLO DE COMO FAZER UMA MALA DIRETA

Algoritmos e Programação Estruturada


ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO DELPHI FORMULÁRIO COM ABAS E BUSCAS DE REGISTROS

Capítulo 14. ARQUIVOS DE SAÍDA, DE ENTRADA E INTERNOS

Aceder à plataforma do concurso Accessing the call for applications platform. Submeter documentos Upload documents. Apagar documentos Delete documents

Computadores de Programação (MAB353)

ScriptPro Script PNR Básico

RevISTa: Publicação técnico-científica do IST-Rio. nº 05 Data: Dezembro / 2012 ISSN

Autor: Tiago Lone Nível: Básico Criação: 19/12/2005 Última versão: 18/12/2006. PdP. Pesquisa e Desenvolvimento de Produtos

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

Programação ao nível da máquina. Operações lógicas e aritméticas

A declaração de uma variável vel define o seu tipo. O tipo do dado define como ele será: Armazenado na memória. Manipulado pela ULA.

CONSTRUÇÃO DE UMA UCP HIPOTÉTICA M++ INTRODUÇÃO

Algoritmos e Linguagem de Programação de Computadores I

Especificação do 3º Trabalho

Strings. COM10615-Tópicos Especiais em Programação I edmar.kampke@ufes.br 2014-II

TRABALHO BIBLIOTECA MD5

[RÓTULO:] MNEMÔNICO [OPERANDOS] [;COMENTÁRIO]

Organização e Arquitetura de Computadores I

Persistência de Dados

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

INTRODUÇÃO: 1 - Conectando na sua conta

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

Parte I. Demoiselle Mail

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

DESENVOLVIMENTO DE SOFTWARE

Lógica de Programação

Este software resolve todos esses problemas.adobe reader é um software free, para ler os arquivos pdf..

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

Usando o simulador MIPS

Arquitetura de Computadores. Tipos de Instruções

Display de Cristal Líquido

MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

Introdução ao EES Engineering Equation Solver

Arquitetura de Computadores. Assembly Miscelâneas. Mário O. de Menezes.

Python: Comandos Básicos. Claudio Esperança

Comandos Sequenciais if else, e Switch

Capítulo 4. Programação em ASP

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Android e Bancos de Dados

3 Classes e instanciação de objectos (em Java)

Fundamentos de Sistemas Operacionais. Sistema de Arquivos. Prof. Edwar Saliba Júnior Março de Unidade Sistemas de Arquivos

Sistemas Embarcados:

Guia para Instalação e Atualização Automáticas do VirusScan em Windows3.1x, Windows95 e WindowsNT

Inserindo Dados no Banco de Dados Paradox.

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Entradas Digitais. PdP. Autores: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 27/12/2005 Última versão: 18/12/2006

Introdução a POO. Introdução a Linguagem C++ e POO

Aqui pode escolher o Sistema operativo, e o software. Para falar, faça download do Cliente 2.

Ambientação JAVA. Versão 0.1 MICHEL CORDEIRO ANALISTA DE NEGÓCIO (NTI 2014) 1 UNIVERSIDADE CEUMA 08/01/2014

Computadores de Programação (MAB353)

Guia de usuário do portal de acesso SSH

7. Instruções lógicas, de deslocamento e de rotação

Conceitos de Entrada e Saída

Terceiro Milênio Informática

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

Transcrição:

Ataques Polimorficos Rodrigo Rubira Branco rodrigo@firewalls.com.br bsdaemon@bsdaemon.org

- Resumo: Ha alguns anos, uma nova ideia foi inserida no mundo dos virus: Codigos polimorficos. Esta ideia consistia em codigos que possuiam condicoes de se auto-modificar, gerando um novo codigo quando era executado. Fazendo isto, era possivel passar por assinaturas de virus que possuiam simples pattner match. No mundo dos ataques (mais especificamente nos shellcodes) esta ideia voltou a mente apos artigo de Rix na phrack. Iremos verificar como isto funciona.

DIFERENCIAIS "Iremos demonstrar como os ataques polimorficos funcionam, e como um projeto de automatizacao torna isto ainda mais facil. Veremos um exemplo de codigo polimorfico passando por detectores de intrusos."

Funcionamento -------------------- call decryptor -------------------- shellcode -------------------- decryptor -------------------- jmp shellcode --------------------

Funcionamento O decoder fica responsavel por reverter o processo utilizado na codificacao do shellcode. Este processo pode ser, por exemplo: - ADD - SUB - XOR - SHIFT - Encryption (like DES)

Decoder Quando efetuamos um call, o endereco da proxima atencao (no nosso caso, o endereco do nosso shellcode) sera colocado na stack. Entao, o decoder pode facilmente pegar este endereco do shellcode, fazendo um pop para um registrador qualquer. Entao, tudo que sobra a fazer sera manipular os bytes do shellcode e entao dar um jump para este.

Finalizando ou only need to concatenate the shellcode at the end of your decoder. Change the mov sizeof(shellcode), %cx bytes. Off-course you need to avoid any zerobytes in the decryptor opcode because the system will understand it like a string terminator. Precisamos apenas concatenar o shellcode no final de nosso decoder, modificando tambem o parametro Also the set of these instructions: utilizado para repetir o procedimento de decoder com o tamanho de nosso shellcode. Precisamos prever zero- bytes e outros caracteres especiais para evitar problemas.

Dificuldades ou only need to concatenate - Evitar the shellcode BADChars at the end (\r of your \t \0) decoder. Change the mov sizeof(shellcode), %cx bytes. Off-course you need to avoid any zerobytes in the decryptor - Generar codigos opcode alphanumericos because the system will understand para it os like decoders a string terminator. - Eliminar constantes em decoders Also the set of these instructions: - Desenvolver novos decoders - Manter decoders para multiplas plataformas - Inserir instrucoes do nothing - Otimizar o tamanho do decoder

SCMorphism A intencao nao esta apenas em codificar o shellcode original com um valor randomico e colocar o decoder na frente do mesmo. A ferramenta tambem pode utilizar um decoder randomicamente gerado. ou only need to concatenate the shellcode at the end of your decoder. Change the mov sizeof(shellcode), %cx bytes. Off-course you need to avoid any zerobytes in the decryptor opcode because the system will understand it like a string terminator. SCMorphism possui os seguintes decoders: Xor/Add/Sub/Shuffle/Bit Shift {LEFT Right} Also the set of these instructions: Existe a possibilidade de se inserir quaisquer combinacoes destes decoders em double-pattern decoders (e mais recentemente, em N- pattern decoders) Decoders sao divididos em partes (e codigos do nothing sao usados), seguindo-se a ideia da ferramenta s-poly de Zillion@safemode.org

SCMorphism Usage: -f <shellcode file> <var name> <shellcode lenght>--> If it is.c ord. pl specify VAR Name and shellcode lenght -t <type: 0 add, 1 sub, 2 xor, 3 byte shift>. If not specified, using random values -n <number>. Value used in the xor, add or sub operation -e --> Execute the generated shellcode -s --> Stdout form: -s <file name> to a file, if not gived use console -b <badchar1,badchar2,badcharn> --> Exclude this char from shellcode (\n \r and \0 are always excluded) -c <archfile>,<osfile>,<typefile> -o --> Optimize option. Be careful, it removes "do nothing" instructions and can be detected by IDS (the decoder are static in this case)-m --> Open Menu to choose shellcode to use. Used if you dont have the shellcode -v --> Version and greetz information -h

SCMorphism Gracas as instrucoes do nothing e aos decoders randomicos, fica impossivel escrever assinaturas IDS para a ferramenta (ou teriamos ou only need to concatenate the shellcode at the end of your decoder. Change the mov sizeof(shellcode), %cx bytes. Off-course you need to avoid any zerobytes in de the decryptor falsos opcode positivos). because the system will understand it like a string milhares terminator. Quando voce chama uma funcao de codificacao, esta ira utilizar um Also the set of these instructions: numero randomico para ser usado (que pode ser escolhido pelo usuario). Badchars podem ser escolhidos pelo usuario (e a ferramenta ja implementa os mais importantes).

SCMorphism A ferramenta possui diversas instrucoes do nothing e um algoritmo para escolher instrucoes validas para serem utilizadas. ou only need to concatenate the shellcode at the end of your decoder. Change the mov sizeof(shellcode), %cx bytes. Off-course you need to avoid any zerobytes in the decryptor opcode because the system will understand it like a string terminator. Tambem possui Also the integracao set of these instructions: total com a ferramenta ADMMutate em termos de se utilizar da estrutura de NOPs oferecida (principalmente como parte de se utilizar a ferramenta para outras plataformas diferentes de intel)

REFERENCIAS http://cs.southwesternadventist.edu/ http://rosec.org http://m00.void.ru http://www.infosecwriters.com/text_resources/pdf/basics_of_she http://www.securityfocus.com/infocus/1768 http://www.priv8security.com http://www.intel.com/design/pentium4/documentation.htm#pap http://www.phrack.org http://www.bsdaemon.org http://www.firewalls.com.br

FIM! Sera mesmo? Duvidas?!? Rodrigo Rubira Branco rodrigo@firewalls.com.br bsdaemon@bsdaemon.org