Bypass DEP com Return Oriented Programming (ROP) com WinDbg (CloudMe Sync 1.11.2 ) - VirtualAlloc

2 years ago
30

#ropchain #ropgadgets #windbg #bypassdep #mona #bufferoverflow #virtualalloc #assembly

Estou publicando meu segundo vídeo de ROP (Return-Oriented Programming) e neste vídeo utilizo (uma vez mais) o CloudMe Sync para testar cadeias ROP visando desabilitar o DEP (Data Execution Prevention) e assim poder escrever um shellcode em memória.

Já havia feito um vídeo anterior, com o mesmo proposito e com o mesmo software, porem utilizando uma “receita” onde ao posicionar determinados gadgets em registradores específicos e executar a instrução PUSHAD, tinha de forma automática a estrutura do VirtualAlloc em memória, pronto para sua execução.

Já neste vídeo, a ideia é posicionar de formar manual as instruções em memória, buscando os gadgets necessários e brincando algo com instruções em Assembly, a fim de montar a estrutura da chamada para a função VirtualAlloc, desabilitar assim a proteção e poder escrever algum shellcode para enfim obter um reverse shell.

Este foi um vídeo que demorei quase 2 horas para grava-lo e mais umas quantas horas mais para editá-lo. Eu tento mostrar a maneira em como eu abstrai o entendimento de um ataque ROP e como ele pode ser executado.

O som do microfone nao captou muito bem entao espero que nao tenha estragado o video.

Mais uma coisa, estou sempre aberto a bater um papo sobre o que quer que seja, seja relacionado ao video ou a temas de CTF.

Fiquem a vontade para entrar em contato.

00:00:00 Introducao... Bla bla bla
00:03:44 Intro ao Assembly x86
00:09:35 Carregar narly, listar modulos
00:10:30 Selecionar modulos para extrair os gadgets
00:11:30 Preparar comandos para extracao dos gadgets utilizando rp++
00:12:20 Execucao do RPOrganizer.exe
00:14:54 Atualizando script python com estrutura para adicionar a cadeia rop
00:17:20 Mostrando BoF em memoria, vprot atual
00:18:40 Ilustracao de um ROP Chain
00:20:12 Primeiro gadget (Ret)
00:21:15 Explicacao de como devera estar organizada a memoria para execucao do VirtualAlloc
00:22:50 Execucao com o gadget de return
00:24:55 Exibir estado da stack exibindo os marcadores
00:27:11 Salvando endereco do ESP
00:30:00 Debug do push esp; pop ebx; pop esi; ret
00:32:40 Adicionando valor negativo para evitar null bytes
00:40:10 Alinhando a memoria
00:44:47 Atualizando o endereco do VirtualAlloc
00:46:45 Incrementando endereco de ECX para saltar para o proximo marcador
00:50:06 Confirmando marcador para o endereco de retorno
00:52:45 Atualizando o endereco de retorno
00:55:30 Atualizando o lpAddress
00:57:30 Atualizando o dwSize
01:04:50 Atualizando o flAllocationType
01:06:40 Atualizando o flProtect
01:12:05 Confirmando estrutura do VirtualAlloc na stack
01:14:20 Ajustando o ESP para apontar para o endereco do VirtualAlloc
01:19:35 Executando o VirtualAlloc
01:21:00 Conferindo a protecao da memoria antes e depois da execucao do VirtualAlloc
01:22:17 Atualizando python com shellcode
01:22:52 Executando script final

Links:
-----------
https://www.exploit-db.com/exploits/46250
https://www.exploit-db.com/apps/f0534b12cd51fefd44002862918801ab-CloudMe_1112.exe
https://sec4us.com.br/cheatsheet/shellcoding
https://www.youtube.com/watch?v=ySKEF8MHcZA&t=2080s

Creditos:
-------------------
Music Promoted by Music & Gene at YouTube:
https://www.youtube.com/c/MusicGene

https://geniemindcreation.wixsite.com...

Music by MBB | https://soundcloud.com/mbbofficial
https://www.youtube.com/c/mbbmusic
https://www.instagram.com/mbb_music
Buy Music Licenses at www.mbb-music.com
---------------------

Loading comments...