Dissertação

{en_GB=ROP chain generation: a semantic approach} {} EVALUATED

{pt=Vulnerabilidades de corrupção de memória ainda existem no sofware dos dias de hoje. Embora a implementação de mitigações, como o DEP evitem a injeção de código, e ASLR, que randomiza o endereço base das regiões de memória, tenham tornado a sua exploitation mais desafiante, esta é ainda assim possível. ROP (Programação Orientada a Retorno) é a técnica de exploitation usada em todos os exploits hoje em dia, pois não requer injeção de código e pode, portanto, ultrapassar a maioria das mitigações existentes, incluindo o DEP. O ROP é baseado na reutilização de pequenos bocados de código chamados gadgets que estão já presentes na aplicação e terminam numa instrução 'ret'. Quando encadeados permitem criar uma rop-chain para obter execução do código no sistema que corre a aplicação vulnerável. No entanto, o desenvolvimento de rop-chains à mão pode por vezes ser um processo difícil e lento, devido a restrições na payload (por exemplo, payload sem null bytes, ou apenas com caracteres ASCII), uma quantidade baixa de gadgets valiosos disponíveis no binário, etc... Como tal existem ferramentas que tentam fazer isso automaticamente, mas em aplicações mais pequenas, com menos gadgets, muitas vezes falham. Nesta tese, propomos avaliar as melhores ferramentas existentes para geração de rop-chains e desenvolver uma nova solução que transforma o assembly numa representação intermédia comum (IR), extrai e classifica os gadgets e, fazendo pesquisas semânticas com o uso de um SMT solver, permitirá construir uma rop-chain baseada numa receita de exploitation predefinida ou uma fornecida pelo utilizador. , en=Memory corruption vulnerabilities are still present in software today. While exploit mitigation techniques like DEP prevent code injection, and ASLR, which randomizes the base address of memory regions, have made their exploitation very challenging, it is still feasible. Return Oriented Programming (ROP) is the exploitation technique of choice for most modern exploits, because it requires no code injection and can therefore bypass most existing security protections including DEP, and has even been shown powerful in bypassing ASLR. ROP is based on reusing small pieces of code already present in the application that terminate in a 'ret' instruction and chaining them together in what is called a rop-chain to achieve code execution. However, the development of rop-chains by hand can sometimes be a difficult and slow process, due to restrictions in the payload (e.g. no zero bytes; only ASCII characters), a low amount of valuable gadgets available in the binary, etc... and so there are tools that attempt to do this automatically. Most of these tools are capable of extracting gadgets and building a rop-chain for easier to exploit binaries, but fall short on harder examples. In this thesis we propose to evaluate the best existing rop-chain generation tools and develop a new solution that improves on them. This solution, will work by lifting all supported assembly languages to a common intermediate representation, extracting and classifying the gadgets and then, using semantic searches with an SMT solver, try to find gadgets that fulfill predetermined or user supplied exploitation recipe steps.}
{pt=Segurança, Exploração de Binários, Return Oriented Programming, rop-chain, en=Security, Binary Exploitation, Return Oriented Programming, rop-chain}

Junho 19, 2019, 10:30

Orientação

ORIENTADOR

Pedro Miguel dos Santos Alves Madeira Adão

Departamento de Engenharia Informática (DEI)

Professor Auxiliar