[0x18] Proteções de memória

COMPARTILHAR:

Whatsapp Telegram Twitter Facebook Reddit

Quais as proteções de memória existente nos sistemas operacionais modernos?

  

Este tutorial faz parte do GUIA COMPLETO do professional em Segurança Ofensiva de Software, saiba mais.

Aula 24: Proteções

Os ataques de exploração de vulnerabilidades, especialmente os que envolvem corrupção de memória como buffer overflows, motivaram o desenvolvimento de uma série de mecanismos de segurança no nível do sistema operacional e do compilador. Estas proteções de memória são barreiras essenciais que dificultam a execução de código malicioso e o desvio do fluxo de execução de um programa.

Aula 24.1: Canários

Os Cookies (também conhecidos como Canários) são um mecanismo criado para proteger contra ataques de transbordamento de buffer de pilha (stack buffer overflow).

  • Origem do Nome: O termo "Canário" tem origem histórica, referindo-se aos pássaros utilizados em minas para alertar sobre a baixa concentração de oxigénio — um alerta precoce de perigo.
  • Funcionamento: É um marcador aleatório inserido na pilha, posicionado estrategicamente entre um buffer local (como uma variável string) e o endereço de retorno da função. Se ocorrer um transbordamento no buffer, o atacante terá de sobrescrever o cookie antes de atingir o endereço de retorno.
  • Verificação: Uma instrução de checagem é inserida no epílogo (o final) da função. Antes de usar o endereço de retorno, a função verifica se o valor do cookie foi alterado. Se o valor for diferente do original, o sistema detecta o ataque e aborta o processo.

Figura 1: Exemplo de COOKIE
  • Implementação: Pode ser inserido em tempo de compilação (método mais comum, como no GCC com a flag -fstack-protector e no Visual Studio com /GS) ou em tempo de execução por meio de "funções empacotadoras" (wrappers), sendo esta última opção usada para proteger sistemas legados sem a necessidade de recompilação, embora acarrete um overhead de desempenho.
  • Bypass: Técnicas avançadas, como a exploração de Tratadores de Exceções Estruturadas (SEH) no Windows, permitiam que o atacante desviasse o fluxo do programa para código malicioso antes que a checagem do cookie fosse realizada.

Aula 24.2: SafeSEH e SEHOP

SafeSEH (Safe Structured Exception Handling) e SEHOP (Structured Exception Handling Overwrite Protection) são proteções específicas do ambiente Windows, desenvolvidas para mitigar a exploração de uma vulnerabilidade na forma como o sistema lida com exceções estruturadas.

  • Motivação: Os ponteiros para os tratadores de exceção ficavam na pilha e podiam ser sobrescritos antes da checagem do cookie.
  • Objetivo: Estas proteções asseguram a integridade da cadeia de tratadores de exceção na pilha, impedindo que um atacante a corrompa para desviar a execução para o seu código.

Aula 24.3: ASLR

Address Space Layout Randomization (ASLR), e seu análogo Rebase, é uma técnica fundamental para combater ataques de reutilização de código.

  • Funcionamento: Embaralha (randomiza) os endereços de memória de áreas-chave do processo, como a pilha, o heap e as bibliotecas dinâmicas (DLLs ou bibliotecas compartilhadas), a cada inicialização do programa ou do sistema.
  • Objetivo: Ao tornar os endereços imprevisíveis, o ASLR impede que um atacante saiba para onde desviar o fluxo de execução (ex: um endereço de uma função útil em ROP), o que tornaria a maioria dos ataques de reutilização de código ineficazes.
  • Implementação: Está implementado no Linux (kernel 2.6.12+), com a randomização ocorrendo durante a carga do processo, e no Windows (Vista/Server 2008+), com a randomização feita durante a inicialização do sistema operacional.
  • Bypass: Pode ser contornado se um binário ou biblioteca não for compilado com a flag de suporte a ASLR (ex: /DYNAMICBASE), fixando seus endereços. Outros bypasses incluem o uso de heap spraying, vazamento de endereços de memória ou técnicas de força bruta.

Aula 24.4: Pilha Não-Executável (nx-stack)

A proteção nx-stack (Non-Executable Stack) impede que um atacante execute instruções na área de memória da pilha (stack) de um processo.

  • Funcionamento: Marca a região da pilha como não-executável, prevenindo a execução de shellcode injetado na pilha.
  • Implementação: É uma proteção fundamental implementada desde 1996 nos principais sistemas operacionais, incluindo Linux, OpenBSD, Mac OS X, Solaris e Windows.

Aula 24.5: DEP

Prevenção de Execução de Dados (DEP), também conhecida pelo princípio Write xor Execute (W^X), é uma proteção implementada no hardware (pelo bit NX/XD) e no sistema operacional.

  • Funcionamento: Impede que o código seja executado a partir de páginas de memória marcadas como dados, como as regiões de pilha (stack) e heap.
  • Objetivo: É uma medida primária contra a injeção de código, complementando a nx-stack ao estender a proteção a outras áreas de dados do processo.
  • Implementação: Está presente em sistemas como Linux (kernel 2.6.8+) e Windows (XP SP2+), sendo ativada em binários compilados com flags específicas (ex: /NXCOMPACT no Visual Studio).
  • Bypass: A DEP pode ser contornada por técnicas de reutilização de código, como Return-Oriented Programming (ROP) ou ret2libc, que utilizam trechos de código legítimo do próprio programa ou das suas bibliotecas para executar ações maliciosas.

Aula 24.6: Filtros de dados

Os Filtros de Dados atuam na sanitização e validação da entrada (input) de um programa, sendo uma linha de defesa crucial contra vulnerabilidades que se originam de dados não confiáveis.

  • Objetivo: Garantir que o dado introduzido por um utilizador ou por outra fonte externa seja seguro, restringindo a sua forma e conteúdo ao que é estritamente esperado.
  • Exemplos de Restrições:
    • Tamanho: Limitar o comprimento de uma string para evitar buffer overflows (ex: máximo de 256 bytes).
    • Tipo de Caracteres (whitelist): Permitir apenas um conjunto restrito de caracteres (ex: nome de arquivo só pode ter letras, números e hifens: a-z, A-Z, 0-9, -).
    • Caracteres "Badchars": Remover ou codificar caracteres que têm um significado especial e perigoso no contexto de um ataque, como o Byte Nulo (0x00), que é usado para terminar strings e pode parar a execução de um shellcode.
  • Bypass: A técnica de bridge building é um exemplo de como atacantes tentam codificar blocos de instruções ou instruções individuais para evitar a detecção por filtros que procuram por badchars no código injetado.

Aula 24.7: Assinaturas

O conceito de Assinaturas é amplamente utilizado por sistemas de deteção de intrusão, antivírus e outros softwares de segurança para identificar a presença de código malicioso conhecido.

  • Funcionamento: Uma assinatura é uma sequência de bytes única de um malware ou de um binário de ataque conhecido. O sistema de segurança compara o binário (ou partes dele) com uma base de dados de assinaturas (muitas vezes otimizada com tabelas hash para agilidade).
  • Aplicação: Usado por Antivírus, Sistemas de Prevenção de Intrusão (IPS), entre outros.
  • Bypass: Os atacantes utilizam diversas técnicas para alterar o código malicioso sem mudar a sua funcionalidade, fugindo assim à deteção baseada em assinaturas:
    • Encoders/Ofuscação de Código: Codificam o shellcode para que a sequência de bytes não corresponda à assinatura original.
    • Inserção de Lixo (Junk Code): Adicionam instruções inócuas para modificar o padrão de bytes do programa.
    • Troca de Instruções/Registos: Substituem instruções equivalentes (ex: usar PUSH/POP em vez de MOV) ou trocam registos e variáveis entre operações para criar um binário funcionalmente idêntico, mas com uma assinatura de bytes diferente.
Próxima aula, clique aqui.

Nome

#ann,25,#HK,30,#LTCode,132,Artigo - Diversos,158,Artigo - Games,201,Artigo - Tecnologia,635,autor-thomaz,7,blueteam,15,Coluna - Alternative World,24,Coluna - Fail,12,Coluna - Tec Line,14,Criptomoeda,71,Curiosidades - Diversos,49,Curiosidades - Tecnologia,50,en,2,estudo,8,HN,12,IA,9,logica,14,Pentest,25,Programar C,29,Programar POO,6,Programar Python,6,Programar Shell,25,Programar verilog,12,qradar,4,Raspberry Pi,15,Redes,3,Review,4,root,134,Shorty Awards,1,Smartphones - Reviews,33,Teoria,10,Top Nostalgia,2,VPN,19,WhatsApp,46,
ltr
item
Limon Tec: [0x18] Proteções de memória
[0x18] Proteções de memória
Quais as proteções de memória existente nos sistemas operacionais modernos?
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikJMn5LIEfrtHPEivASNGrjkvEXwlg4pIfsUmJSG3iiHB7Qq2GaWwJER5C7ACwPdzjN3mOJMzZdm6Bafmml93aqYJZ_yJFwmxuidt2RVhJnGRLXV2v545RJExEEpfLRP6o2trej48bX-8CaV9ryot9es4nMq4iCNEvPxcVUu2M8uAvqxo4gECtD5lHKw/w640-h421/limontec_seguranca_ofensiva_software.png
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikJMn5LIEfrtHPEivASNGrjkvEXwlg4pIfsUmJSG3iiHB7Qq2GaWwJER5C7ACwPdzjN3mOJMzZdm6Bafmml93aqYJZ_yJFwmxuidt2RVhJnGRLXV2v545RJExEEpfLRP6o2trej48bX-8CaV9ryot9es4nMq4iCNEvPxcVUu2M8uAvqxo4gECtD5lHKw/s72-w640-c-h421/limontec_seguranca_ofensiva_software.png
Limon Tec
https://www.limontec.com/2025/10/protecoes-de-memoria.html
https://www.limontec.com/
https://www.limontec.com/
https://www.limontec.com/2025/10/protecoes-de-memoria.html
false
2157924926610706248
UTF-8
Carregar todos posts Não encontramos nenhum post VER TUDO Ler mais Responder Cancelar resposta Deletar Por Home PÁGINAS POSTS Ver tudo RECOMENDADO PARA VOCÊ LABEL ARQUIVO SEARCH TODOS POSTS Não encontramos nenhum post relacionado a sua requisição VOLTAR PÁGINA INICIAL Domingo Segunda Terça Quarta Quinta Sexta Sábado Dom Seg Ter Qua Qui Sex Sab Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro Jan Fev Mar Abr Maio Jun Jul Ago Set Out Nov Dez apenas agora 1 minuto atrás $$1$$ minutes ago 1 hora atrás $$1$$ hours ago Ontem $$1$$ days ago $$1$$ weeks ago mais de 5 semanas atrás Seguidores Seguir ESTE CONTEÚDO ESTÁ BLOQUEADO PASSO 1: Compartilhe com seus amigos PASSO 2: Clique no link compartilhado Copiar Todo Código Selecionar Todo Código Todos códigos foram copiados para seu clipboard Não é possível copiar códigos / textos, por favor aperte [CTRL]+[C] (ou CMD+C no Mac) para copiar Tabela de conteúdo