Pimptech Posted November 13, 2017 Posted November 13, 2017 Fala pessoal! Codei um crackme aqui bem simplão mesmo. Eu ia postar o source junto, mas vou postar quando alguém conseguir quebrar. Depois eu vou postar um step-by-step. Abraço! crackme_level0.exe
Administrators Fernando Mercês Posted November 14, 2017 Administrators Posted November 14, 2017 Bem maneiro. As TLS callbacks foi o compilador que colocou ou você, de propósito? 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!
Pimptech Posted November 15, 2017 Author Posted November 15, 2017 21 horas atrás, Fernando Mercês disse: Bem maneiro. As TLS callbacks foi o compilador que colocou ou você, de propósito? 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 Fernando Mercês Posted November 16, 2017 Administrators Posted November 16, 2017 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! ?
VictorNeves Posted November 17, 2017 Posted November 17, 2017 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
Pimptech Posted November 17, 2017 Author Posted November 17, 2017 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!
BrNaka Posted November 24, 2017 Posted November 24, 2017 Fala, galera.. a pergunta pode ser um pouco idiota, mas é possível resolver este crackme pelo Linux?
Pimptech Posted November 25, 2017 Author Posted November 25, 2017 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
Rafael Seidi Posted November 25, 2017 Posted November 25, 2017 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é?
Pimptech Posted November 25, 2017 Author Posted November 25, 2017 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é? 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!
BrNaka Posted November 25, 2017 Posted November 25, 2017 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!
BrNaka Posted November 26, 2017 Posted November 26, 2017 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!
Pimptech Posted November 26, 2017 Author Posted November 26, 2017 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! É 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!
BrNaka Posted November 26, 2017 Posted November 26, 2017 Vlw, man! Vou estudar mais um pouco e tentar encontrar essa senha aí e partir pro level x..hahah Grande abraço!
Supporter - Nibble Felipe Tarijon Posted January 6, 2018 Supporter - Nibble Posted January 6, 2018 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!
Administrators Fernando Mercês Posted January 7, 2018 Administrators Posted January 7, 2018 Que feedback bom @Felipe Tarijon. Prova que estamos no caminho certo. Abraços, galera!
gzn Posted January 9, 2018 Posted January 9, 2018 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
Supporter - Nibble Felipe Tarijon Posted January 9, 2018 Supporter - Nibble Posted January 9, 2018 @gzn aqui rodou normal...que erro ele dá? é erro no windbg? ou no crackme em si?
gzn Posted January 9, 2018 Posted January 9, 2018 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.
gzn Posted January 9, 2018 Posted January 9, 2018 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".
bornman Posted January 12, 2018 Posted January 12, 2018 Olá amigos, alguém que conseguiu poderia explicar de forma detalhada como chegou na senha? Abraços.
Pimptech Posted January 13, 2018 Author Posted January 13, 2018 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: https://github.com/Nukem9/SwissArmyKnife http://rammichael.com/multimate-assembler Vários outros: https://github.com/x64dbg/x64dbg/wiki/Plugins 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!
bornman Posted January 13, 2018 Posted January 13, 2018 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: https://github.com/Nukem9/SwissArmyKnife http://rammichael.com/multimate-assembler Vários outros: https://github.com/x64dbg/x64dbg/wiki/Plugins 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
gzn Posted January 14, 2018 Posted January 14, 2018 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: https://github.com/Nukem9/SwissArmyKnife http://rammichael.com/multimate-assembler Vários outros: https://github.com/x64dbg/x64dbg/wiki/Plugins 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.
Pimptech Posted January 14, 2018 Author Posted January 14, 2018 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. http://radare.today/posts/binary-diffing/ Qualquer coisa, tamo ai! Abs!
Recommended Posts
Archived
This topic is now archived and is closed to further replies.