Jump to content

Crackme - Level 0


Pimptech

Recommended Posts

  • Administrators
Posted

Bem maneiro. As TLS callbacks foi o compilador que colocou ou você, de propósito?

pimptech_crackme0.png.c2cddbf28f3c33355483c6bd95c8b4a2.png

PS.: Removi a senha da imagem. E o argumento também, pra não estragar pra quem tá tentando.

Em tempo, não consideraria nível 0 não. rs Pra quem tá começando, tem um trabalhinho aí. =)

Abraço e parabéns!

Posted
21 horas atrás, Fernando Mercês disse:

Bem maneiro. As TLS callbacks foi o compilador que colocou ou você, de propósito?

pimptech_crackme0.png.c2cddbf28f3c33355483c6bd95c8b4a2.png

PS.: Removi a senha da imagem. E o argumento também, pra não estragar pra quem tá tentando.

Em tempo, não consideraria nível 0 não. rs Pra quem tá começando, tem um trabalhinho aí. =)

Abraço e parabéns!

TLS Callback é coisa do MingW. 
Vou preparar mais alguns com o Build Tools do Windows, tem mais opções lá. GCC do MingW tem bastante código interno antes de chegar no OEP, contudo o código sempre começa de um determinado endereço de memória, porém não necessáriamente a main function.

Vou anexar no post o source. 

No próximo (level1) vou manter a mesma linha. 

Valeu, Fernando!

main.c

  • Administrators
Posted

Só perguntei por curiosidade mesmo. Como não vi nenhum código "user code" nelas, imaginei que fosse o compilador mesmo.

Gostei do crackme... E a galera, cadê que não responde aqui? Bóra treinar! ?

Posted

eu participaria.... se soubesse assembly, sou da baixa plataforma, mundo java, python... nao faço a menor ideia por onde começar, talvez por aquelas video aulas de C do canal rsrs

Posted
12 minutos atrás, VictorNeves disse:

eu participaria.... se soubesse assembly, sou da baixa plataforma, mundo java, python... nao faço a menor ideia por onde começar, talvez por aquelas video aulas de C do canal rsrs

Primeira aula de Engenharia Reversa já tá no ar, mano.

Dá uma olhadinha lá.. 

 

 

Abraço!

Posted
4 horas atrás, BrNaka disse:

Fala, galera.. a pergunta pode ser um pouco idiota, mas é possível resolver este crackme pelo Linux? 

Falai, BrNaka!

A pergunta não é idiota não, mano!

Até dá pra resolver o compilado, porém vc não vai conseguir executá-lo. Não sei se é possível utilizando o WINE.
Bom, compilei no linux.. Vou deixar anexado aqui nesse post.

Eu resolvi um crackme que o Fernando postou, do geyslan. Fiz um walkthrough lá no post com umas dicas do radare2, pode ser que ajude de alguma forma.

 

 

Abraço!

crackme-level0

Posted

Eu estou começando agora a mexer com engenharia reversa, aprendendo a usar o gdb e tals... consegui só isso aí da imagem por enquanto kkkk não sei se era esse o objetivo

Fui só dando breakpoints e pulando as instruções até chegar nisso... mas o certo era eu obter a senha né?

Screenshot from 2017-11-25 12-46-37.png

Posted
4 horas atrás, Rafael Seidi disse:

Eu estou começando agora a mexer com engenharia reversa, aprendendo a usar o gdb e tals... consegui só isso aí da imagem por enquanto kkkk não sei se era esse o objetivo

Fui só dando breakpoints e pulando as instruções até chegar nisso... mas o certo era eu obter a senha né?

Screenshot from 2017-11-25 12-46-37.png

Era esse objetivo mesmo! Agora tem que achar a senha haha.. 
Daria pra tu resolver esse crackme só fazendo os patchs nos lugares que vc mudou a "direção" de execução do programa.

Mas seria legal achar a senha também, descobrir como chegar ai sem fazer nenhum patch ou debugar. :)
Abraço!

Posted
19 horas atrás, Pimptech disse:

Falai, BrNaka!

A pergunta não é idiota não, mano!

Até dá pra resolver o compilado, porém vc não vai conseguir executá-lo. Não sei se é possível utilizando o WINE.
Bom, compilei no linux.. Vou deixar anexado aqui nesse post.

Eu resolvi um crackme que o Fernando postou, do geyslan. Fiz um walkthrough lá no post com umas dicas do radare2, pode ser que ajude de alguma forma.

 

 

Abraço!

crackme-level0

Vlw, Pimptech! 

Abraço!

Posted

Boa noite, galera! Eu de novo haha

Eu usei o objdump e consegui achar algumas strings no meio daquele código todo uhauha

Fiz um programinha pra converter hexa pra char e fui tentando encontrar algo kkk

Encontrei o "You reach the secret stuff", "Not invalid" e "Type the password:". 
Não consegui muita coisa, mas acho que foi um bom exercício pra entender a linguagem Assembly! :D 

Screenshot from 2017-11-25 23-37-42.png

Screenshot from 2017-11-25 23-39-15.png

Posted
5 minutos atrás, BrNaka disse:

Boa noite, galera! Eu de novo haha

Eu usei o objdump e consegui achar algumas strings no meio daquele código todo uhauha

Fiz um programinha pra converter hexa pra char e fui tentando encontrar algo kkk

Encontrei o "You reach the secret stuff", "Not invalid" e "Type the password:". 
Não consegui muita coisa, mas acho que foi um bom exercício pra entender a linguagem Assembly! :D 

Screenshot from 2017-11-25 23-37-42.png

Screenshot from 2017-11-25 23-39-15.png

É isso ai mesmo, mano.

Agora tem que achar a senha e chegar nessa string ai pelo programa ;p
Negócio é ir praticando.. Depois que conseguir esse tem o level x lá hein, tá mais dificilzinho, mas vale a pena.
Abraço!

  • 1 month later...
  • Supporter - Nibble
Posted

solucao-crackme-0.png.7b766d1e2388f1dfe579450eaaf23812.png

Depois que vi a aula do crackme_levelx consegui fazer esse sozinho sem problemas. Mas achei que tem o mesmo nível do level x kkk

Foi legal, muito bom pra gente que é iniciante, vlw!

Posted

Eu fui resolve aqui tava dando erro no scanf (baixei 3 ou 4 vezes o crackme e dava erro). Na máquina de vocês rodo normal? Eu testei no Windows 8.1.

Eu achei estranho e desisti e fui logo pro fonte e recompilei ele, vi que deu o mesmo erro (baixei o tcc rapidinho aqui hehe so pra testar). Aí dei uma lida geral no fonte e percebi que esqueceram de reserva espaço para string (onde guarda a chave digitada)! Se não foi intencional isso altera aí! aqui eu coloquei 256 bytes:

char typedkey[256];

 

crackme_level0_modificado.exe

Posted
EXCEPTION_DEBUG_INFO:
           dwFirstChance: 1
           ExceptionCode: C0000005 (EXCEPTION_ACCESS_VIOLATION)
          ExceptionFlags: 00000000
        ExceptionAddress: 767BAFAF msvcrt.767BAFAF
        NumberParameters: 2
ExceptionInformation[00]: 00000001 Write
ExceptionInformation[01]: 00400080 crackme_level0.00400080 Inaccessible Address
First chance exception on 767BAFAF (C0000005, EXCEPTION_ACCESS_VIOLATION)!

Olha a imagem aqui para você ver. Eu estou aprendendo assembly, mas se entendi bem o scanf recebe um endereço para colocar o que digitamos em 0x00400080. Essa área é protegida contra escrita. Como isso aconteceu, I don't know my friend! Só o Mercês mesmo para entender isso daí e explicar pra noix msm hehe =)

Ah, esqueci de fala, o erro ocorre de todas as formas: usando um debugger ou não. Nesse caso eu só usei o x64dbg para ter mais informações. Mas eu modifiquei o código fonte e recompilei (reservei um tamanho para o array typedkey) e deu certo.

printscreen.png

Posted

Ae galera, eu to procurando aqui algum plugin, alguma coisa para comparar dois executáveis no x64dbg, mas não achei nada até agora...

Parece que para esse IDA pro (um caríssimo debugger para engenharia reversa) tem um tal de BinDiff e um Diaphora que faz isso. Mas e pro x64dbg (debugger dos pobres hehe)?

Eu aqui para quebrar o galho to usando o diff do git, ex.:

i686-w64-mingw32-gcc main.c -S -o original.asm
i686-w64-mingw32-gcc main_modificado.c -S -o modificado.asm
git diff --no-index --word-diff original.asm modificado.asm

Obs.: se você quiser copiar o disassembly do x64dbg vai ter que copiar na mão (selecionar toda área .text) e colar em um arquivo e filtrar os dados (pelo menos não descobri outra forma na GUI que auxiliasse nisso). Ou, se você não se importa pode usar o "objdump -d arquivo.exe".

Posted
Em 09/01/2018 em 13:05, gzn disse:

Ae galera, eu to procurando aqui algum plugin, alguma coisa para comparar dois executáveis no x64dbg, mas não achei nada até agora...

Parece que para esse IDA pro (um caríssimo debugger para engenharia reversa) tem um tal de BinDiff e um Diaphora que faz isso. Mas e pro x64dbg (debugger dos pobres hehe)?

Eu aqui para quebrar o galho to usando o diff do git, ex.:


i686-w64-mingw32-gcc main.c -S -o original.asm
i686-w64-mingw32-gcc main_modificado.c -S -o modificado.asm
git diff --no-index --word-diff original.asm modificado.asm

Obs.: se você quiser copiar o disassembly do x64dbg vai ter que copiar na mão (selecionar toda área .text) e colar em um arquivo e filtrar os dados (pelo menos não descobri outra forma na GUI que auxiliasse nisso). Ou, se você não se importa pode usar o "objdump -d arquivo.exe".

Eai, @gzn

Analisei de novo, só que dessa vez no Windows 8.1. Nessa versão pra cima ele pega esse endereço estranho mesmo, pois eu programei e testei no Windows 7. Na versão 7 ele aloca um endereço válido, porém só se senha for maior do que 8 bytes que dá erro, se não me engano. Por padrão ele aloca 4 bytes e ficam alguns bytes de sobra, porém se passar dos 8 bytes ele sobrescreve um endereço de memória válido.

Dá uma olhada nesses dois plugin pro x64dbg:

Abraço!

6 horas atrás, bornman disse:

Olá amigos, alguém que conseguiu poderia explicar de forma detalhada como chegou na senha?

Abraços.

Vou fazer um tutorial em breve, mas até vai tentando. Se precisar de algum help só falar. Abraço!

Posted
7 horas atrás, Pimptech disse:

Eai, @gzn

Analisei de novo, só que dessa vez no Windows 8.1. Nessa versão pra cima ele pega esse endereço estranho mesmo, pois eu programei e testei no Windows 7. Na versão 7 ele aloca um endereço válido, porém só se senha for maior do que 8 bytes que dá erro, se não me engano. Por padrão ele aloca 4 bytes e ficam alguns bytes de sobra, porém se passar dos 8 bytes ele sobrescreve um endereço de memória válido.

Dá uma olhada nesses dois plugin pro x64dbg:

Abraço!

Vou fazer um tutorial em breve, mas até vai tentando. Se precisar de algum help só falar. Abraço!

Opa, analisei melhor o código e consegui achar a senha. O desafio foi bom hehehe

Posted
19 horas atrás, Pimptech disse:

Eai, @gzn

Analisei de novo, só que dessa vez no Windows 8.1. Nessa versão pra cima ele pega esse endereço estranho mesmo, pois eu programei e testei no Windows 7. Na versão 7 ele aloca um endereço válido, porém só se senha for maior do que 8 bytes que dá erro, se não me engano. Por padrão ele aloca 4 bytes e ficam alguns bytes de sobra, porém se passar dos 8 bytes ele sobrescreve um endereço de memória válido.

Dá uma olhada nesses dois plugin pro x64dbg:

Abraço!

Vou fazer um tutorial em breve, mas até vai tentando. Se precisar de algum help só falar. Abraço!

Obrigado pelas sugestões @Pimptech. Só só que eu dei uma lida lá na página desses projetos de plugin e não soube achar alguma funcionalidade para comparar dois binários em nível de assembly. Use case: a MS lança um patch pra um binário (exe, dll, etc), eu tenho a versão antiga desse binário e quero comparar com a nova versão (a que recebeu o patch) em nível de assembly para tentar encontrar a vulnerabilidade/erro que foi corrigida.

Eu estou começando a  aprender assembly e ER, pode parecer ousado já ir procurando estas coisas, mas já quero ir conhecendo as ferramentas mais comuns para essas tarefas.

Posted
13 horas atrás, bornman disse:

Opa, analisei melhor o código e consegui achar a senha. O desafio foi bom hehehe

Isso ai.. Parabéns.Valeu! :) 

51 minutos atrás, gzn disse:

Obrigado pelas sugestões @Pimptech. Só só que eu dei uma lida lá na página desses projetos de plugin e não soube achar alguma funcionalidade para comparar dois binários em nível de assembly. Use case: a MS lança um patch pra um binário (exe, dll, etc), eu tenho a versão antiga desse binário e quero comparar com a nova versão (a que recebeu o patch) em nível de assembly para tentar encontrar a vulnerabilidade/erro que foi corrigida.

Eu estou começando a  aprender assembly e ER, pode parecer ousado já ir procurando estas coisas, mas já quero ir conhecendo as ferramentas mais comuns para essas tarefas.

Cara o plugin é o SwissArmyKnife, tem um DIFF files. Tem uma outra ferramenta muito boa também para ER, chama radare2. Dá uma olhadinha nesse artigo e o que dá pra fazer com ele. Para visualizar essa diferença entre os binários você vai precisar comparar a seção .text (ou a seção do PE que possa executar codigo), ai você consegue isolar o mais importante primeiro.

Qualquer coisa, tamo ai! Abs!

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...