H2HC: Brasileiros dissecam exploit de kernel Linux por duas horas - Specials - Mente Binária
Se você é nosso leitor há algum tempo, já deve ter visto a @barbieauglend por aqui. O que talvez você não soubesse, é que ela se juntou com o Gustavo Scotti para dar uma palestra que ocupou dois slots na H2HC este ano. Com a sala lotada, Gustavo e Thais mostraram como escreveram um exploit confiável para uma vulnerabilidade no kernel Linux, registrada sob o CVE-2017-11176.
A palestra começou com a Thais falando sobre seu passado em análise de malware e os desafios da migração para computação ofensiva. Já o Gustavo, experiente pesquisador na área, se mostrou extremamente solícito tanto em ajudá-la com este exploit quanto com o público: "Se vocês tiverem qualquer dúvida, podem perguntar a qualquer momento. Quem for tímido pode falar comigo individualmente depois da palestra. Vou ficar por aí no evento hoje e amanhã". Ele comentou que muitas vezes as pessoas ficam "travadas" em algum lugar e precisam de ajuda para seguir seus estudos. Ajuda esta que ele oferece a quem procurá-lo.
A dupla tomou como base de estudo a publicação da vulnerabilidade num blog francês, mas rapidamente verificaram que o texto se referia a uma versão diferente do kernel da especificada no artigo. O desafio foi entender a falha e escrever o exploit corretamente, de forma confiável. Os pontos altos da palestra foram justamente como fizeram isso. Gustavo recomendou automatizar tudo o que é possível para reduzir o tempo de iteração e atentou para o fato de que, em kernel land, é necessária muita estabilidade. "A Thais conseguiu explorar a falha com sucesso mas depois de 10 minutos ao ganhar root, o kernel travava", comenta. Foi preciso corrigir os ponteiros usados nas estruturas utilizadas pelo exploit e fazer uma série de ajustes para que o exploit ficasse de fato confiável.
"Eu achei massa porque eles fizeram bypass de SMEP (Supervisor Mode Execution Prevention), que impede que código de kernel execute código em user space", comenta @Ygor Da Rocha Parreira, pesquisador da área e parte da organização do evento.
"Antigamente quando explorando um bug de kernel, como o espaço de endereçamento é compartilhado entre kernel e user space dentro do processo corrente, era mais fácil a partir dele, acessar dados e executar código em user space. O SMEP/SMAP impede isso, mas eles burlaram com ROP (Return Oriented Programming) em kernel land", adiciona.
"O objetivo da nossa palestra era, como o nome sugere, de levar o conhecimento e não só mostrar o exploit funcionando. Por isso a gente mostrou desde o básico, como decodificar memória, até como as estruturas funcionavam para que as pessoas realmente se motivassem e entendessem que é um processo que não precisa intimidar. Não é necessário saber tudo. Pode-se aprender durante a pesquisa.", falou Gustavo pra gente. Ele insiste que o contacte no Twitter para eventuais dúvidas. Valeu, Gustavo! ?
O público aplaudiu e achamos que o Gustavo e a Thais conseguiram despertar na audiência o interesse de estudar computação ofensiva e apresentar um caminho, que é o de seguir blogs, textos escritos por pesquisadores, pesquisar com falhas antigas e, como o Gustavo oferta, se tiver qualquer dúvida, pode falar com ele. ?