[0x1A] STRUCTURED EXCEPTION HANDLER

COMPARTILHAR:

Whatsapp Telegram Twitter Facebook Reddit

Exploração do Structured Exception Handler (SEH), um mecanismo de tratamento de exceções do sistema operacional Windows

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

Aula 26: Sobrescrita de SEHs

O Structured Exception Handler (Tratador Estruturado de Exceções) é um mecanismo do Windows para capturar e gerenciar exceções (erros de software).

  • Estrutura na Pilha: O SEH é implementado como uma lista ligada de registros. Esses registros são anotados na pilha (Stack), localizados logo abaixo do frame da função onde o código com potencial para lançar exceções reside.
  • Conteúdo do Registro: Cada registro SEH na pilha contém dois ponteiros principais:
    • O endereço do tratador de exceção (o código a ser executado em caso de exceção).
    • O endereço do próximo SEH na lista ligada.
  • Funcionamento: Quando uma exceção é lançada, o Despachador de Exceções (código do sistema operacional) percorre essa lista de tratadores, a partir do topo da pilha, até encontrar o primeiro tratador elegível definido por um filtro.
O principal objetivo da técnica é sobrescrever os ponteiros do SEH através de um buffer overflow. Essa abordagem é usada para desviar o fluxo de execução para um código malicioso (shellcode) antes que a proteção do canário seja checada.
  • Vantagem sobre o Canary: Em um buffer overflow tradicional, sobrescrever o Canary (localizado entre o buffer e os metadados da função) leva à detecção e ao lançamento de uma exceção de segurança quando a função tenta retornar. O ataque SEH Overwrite força o lançamento de uma exceção antes que a função retorne, evitando a checagem do Canary.
  • A Estratégia POP POP RET: Para garantir que o ataque funcione independentemente do layout da pilha (superando a imprevisibilidade de endereços), o exploit não usa um endereço hardcoded para o shellcode. A técnica envolve:
    • Sobrescrever o Endereço do Tratador: O atacante preenche o campo do endereço do tratador com o endereço de uma sequência de instruções POP POP RET encontrada em uma biblioteca do sistema.
    • Sobrescrever o Próximo SEH: O campo do próximo SEH é sobrescrito com uma instrução de salto curto (JMP SHORT) que aponta para o shellcode injetado na pilha.
    • O Desvio:
      • O despachador de exceções salta para o endereço POP POP RET.
      • O POP POP desempilha 8 bytes, posicionando o topo da pilha (ESP) exatamente sobre o campo do próximo SEH (o JMP SHORT).
      • O RET (Return) retira o endereço do topo da pilha e desvia a execução para lá, que agora é a instrução JMP SHORT, saltando assim para o shellcode.
Com o tempo, o sistema operacional Windows implementou proteções para mitigar os ataques SEH Overwrite:
  • SafeSEH: Exige que os módulos da aplicação sejam compilados com uma lista de tratadores seguros, validando-os na execução.
  • SEHOP (SEH Overwrite Protection): Introduzido a partir do Windows Vista SP1. Adiciona um registro SEH sentinela (sentinel) inalcançável no final da lista. Durante a execução, o SEHOP checa se o último SEH é o sentinela. Se não for, indica que a lista foi corrompida, e a execução é encerrada. Foi contornado em 2009 sob certas condições.

Próxima aula, clique aqui.

Nome

#ann,25,#HK,30,#LTCode,134,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,27,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: [0x1A] STRUCTURED EXCEPTION HANDLER
[0x1A] STRUCTURED EXCEPTION HANDLER
Exploração do Structured Exception Handler (SEH), um mecanismo de tratamento de exceções do sistema operacional Windows
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/2024/03/structured-exception-handler.html?m=0
https://www.limontec.com/?m=0
https://www.limontec.com/
https://www.limontec.com/2024/03/structured-exception-handler.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