View
112
Download
3
Category
Preview:
Citation preview
Grsecurity and Grsecurity and PAXPAX
rafaelsilva@rfdslabs.com.brrafaelsilva@rfdslabs.com.br
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
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.
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.
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)
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;
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
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.
GrSecurity and GrSecurity and PAXPAX
GrSecurity and GrSecurity and PAXPAX
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.
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:
GrSecurity and GrSecurity and PAXPAX
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.
GrSecurity and GrSecurity and PAXPAX
Buffer Overflow
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 ?
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
GrSecurity and GrSecurity and PAXPAX
GrSecurity and GrSecurity and PAXPAX
GrSecurity and GrSecurity and PAXPAX
GrSecurity and GrSecurity and PAXPAXInstalando o PAX
GrSecurity and GrSecurity and PAXPAXInstalando o PAX
GrSecurity and GrSecurity and PAXPAXInstalando o PAX
GrSecurity and GrSecurity and PAXPAX
GrSecurityGrSecurity
Referencias: www.grsecurity.netwww.vivaolinux.com.brwww.google.com.br
DUVIDAS ?
Recommended