Grsecurity and PAX [email protected]. GrSecurity and PAX Curiosidades: Começou em...

25
Grsecurity and Grsecurity and PAX PAX [email protected]. [email protected]. br br

Transcript of Grsecurity and PAX [email protected]. GrSecurity and PAX Curiosidades: Começou em...

Page 1: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

Grsecurity and Grsecurity and PAXPAX

[email protected]@rfdslabs.com.br

Page 2: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

Curiosidades:Curiosidades:Começou em Fevereiro 2001Começou em Fevereiro 2001Primeira versão para o Primeira versão para o kernel 2.4.1kernel 2.4.1Um port do Openwall 2.4.xUm port do Openwall 2.4.x

Page 3: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

Grsecurity é um completo sistema de segurança Grsecurity é um completo sistema de segurança para o Linux 2.4.x 2.6.x, possuindo como para o Linux 2.4.x 2.6.x, possuindo como

características: características:

Proteção a buffer overflow, Proteção a buffer overflow, Auditoria de kernel, Auditoria de kernel, Controle de acesso (ACL)Controle de acesso (ACL) Proteção sobre qualquer forma de Proteção sobre qualquer forma de modificar bugs de endereço de memóriasmodificar bugs de endereço de memórias Suporta múltiplos processadores e Suporta múltiplos processadores e plataformas. RISC, SPARC, INTEL, PPC.plataformas. RISC, SPARC, INTEL, PPC.

Page 4: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

Protege dos meios mais comuns Protege dos meios mais comuns de exploração na memória:de exploração na memória: Address space modificationAddress space modification RacesRaces Breaking a chroot(2) jail.Breaking a chroot(2) jail.

Page 5: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

Suporta sysctlSuporta sysctl NetfilterNetfilter Varias features de Varias features de randomizacao do OpenBSDrandomizacao do OpenBSD Implementação do TPE Implementação do TPE (Trusted Path Execution)(Trusted Path Execution)

Page 6: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

Principais características:Principais características: Proteção conta Stack overflow; Proteção conta Stack overflow; Proteção conta Heap overflow; Proteção conta Heap overflow; Proteção conta Return-into-lib; Proteção conta Return-into-lib; Proteção conta format strings; Proteção conta format strings;

Page 7: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

0x0012d00 – 0x00391000 Libraries

0x0fd6b000 – 0x0fefc000 Executable

Executable 0x08048000 -0x08049000

Libraries 0x40000000 – 0x40168000

Stack 0xbfffe0000– 0xc0000000

0xbfff2000 – 0xbfffa000 Stack

PaX with Full ASLR Without PaX

0x40000000 – 0x50000000

0x08048000 – 0x0fd6b000

0x00fefc000 – 0x18048000

0xbfffa000 – 0xc0000000

0xbff00000 – bfff2000

256MB

256MB

1MB

Page 8: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

O mais interessante do projeto PaX é a pesquisa de vários mecanismos para proteger o sistema de explorações que dêem ao atacante privilégios para ler/escrever em determinados segmentos da memória do address space.

Essas classes de falhas são as mais exploradas por atacantes que visam elevar seu nível de atuação frente ao sistema, obtendo privilégios de root (uid=0), portanto o PaX vai ajudar e muito na prevenção de tais explorações, impedindo assim execuções arbitrárias de códigos para alocação de memória não permitida no sistema.

Page 9: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

Page 10: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

Page 11: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

Estamos frisando aqui que o que iremos fazer não é analisar e corrigir bugs no sistema, mas sim torná-los o menos acessíveis possível. O PaX para isso utiliza três níveis distintos para determinadas técnicas de exploração:

• Introdução e execução de códigos arbitrários. • Execução de códigos fora da ordem original do programa.

• Execução de códigos dentro da ordem original do programa usando dados arbitrários.

Page 12: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

Uma das principais modificações que o PaX irá causar em nosso sistema é a randomização do nosso buffer de saída, o return address.

Poderíamos verificar isso com um simples código que nos retorne o valor do buffer:

Page 13: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

Page 14: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAXEm técnicas de exploração de memória como:

• Stack • Heap overflow

Sabe que para conseguir sobrescrever o return address você deve saber seu endereço na memória que este aloca.

Com o PaX implementado esse endereço se tornará arbitrário e apenas o próprio programa que alocou a memória (com as devidas permissões que podem ser setadas pelo PaX) poderá controlar seu fluxo de execução.

Page 15: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

Buffer Overflow

Page 16: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

Buffer é uma variável automática, o espaço utilizado pelos 500 bytes é reservado logo que se entra na função main(). Ao Correr o programa vulnerable com um argumento superior a 500 caracteres, os dados excedem a capacidade do buffer e "invade" a pilha do processo.

Como vimos anteriormente a pilha guarda o endereço da próxima instrução a ser executada (também conhecida como endereço de retorno).

Para explorar este buraco de segurança basta substituir o endereço de retorno da função pelo endereço do código da shell a ser executado. Este código da shell é inserido no corpo do buffer seguido de um endereço de memória. Fácil não ?

Page 17: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

Um pouco sobre as principais funções do PaX

Vamos tratar das principais funções que o PaX utiliza para proteger nosso sistema:

• RandStack • Randmmap • Randexec

Page 18: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

Page 19: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

Page 20: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

Page 21: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAXInstalando o PAX

Page 22: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAXInstalando o PAX

Page 23: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAXInstalando o PAX

Page 24: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurity and GrSecurity and PAXPAX

Page 25: Grsecurity and PAX rafaelsilva@rfdslabs.com.br. GrSecurity and PAX Curiosidades: Começou em Fevereiro 2001 Começou em Fevereiro 2001 Primeira versão para.

GrSecurityGrSecurity

Referencias: www.grsecurity.netwww.vivaolinux.com.brwww.google.com.br

DUVIDAS ?