CTF do INSERT #1
Ocorreu nos dias 24 e 25 o Hackingnroll, evento CTF do grupo INSERT( http://www.insert.uece.br/ ) da UECE/FFB. Fiquei interessado no evento e no grupo, pois seria uma proposta nova e interessante para o estado um grupo acadêmico sobre segurança.
O evento teve dois pontos antagonicos: por um lado foi desorganizado, ou mal gerenciado, nao sei julgar. Houveram atrasos e o formato dos desafios(uma coisa mais defcon-like) nao agradou muito. Por outro lado, a iniciativa foi incrivel. O grupo tem muito para crescer no estado(que ja tem um historico de profissionais ou hobistas de segurança renomados, ao menos no underground) e conseguir lotar um canal de IRC com pessoas que nao tem habito de usa-lo, em 2010, foi um feito. As possibilidades disto evoluir para um encontro periódico ou ate mesmo uma conferência, são imensas.
Pelo que vi, tenho esperança que o evento em sí evolua, bem como a comunidade de segurança no estado. Mas o post tem outro propósito. Como eles nao disponibilizaram um walkthrough, eu farei este trabalho. Infelizmente eu nao salvei todos os desafios, mas editarei a medida que for achando outros. Começando pelo 5 níveis de Reversing, temos:
Reversing 100 ~ Baixe o programa (compactado) compilado pra Linux e descubra qual a senha de desbloqueio!
Depois de descompactar, temos um elf:
$ file rev100
rev100: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
$ strings rev100
Revela, entre outras coisas, a senha plain, no caso: herbie_pass_strong
Reversing 200 ~ A instrução em hexadecimal 0x83e58955 equivale a qual ope? Me diga Você !
usando python e a libdisassemble da immunity ( http://www.immunitysec.com/downloads/libdisassemble2.0.tar.gz ), temos:
>>> from disassemble import * >>> data="\x83\xe5\x89\x55" >>> p=Opcode(data) >>> p.printOpcode("AT&T") 'and $0x89, %ebp'
Assim, a resposta é: and $0x89, %ebp
Reversing 300 ~ Qual a operacao que eu mais realizo?
$ objdump -d --no-show-raw-insn ./rev300 | awk '/^[ 0-9a-f]+:/{print $2}' | sort | uniq -c
A operação mais usada, com 60 ocorrencia, é: mov seguida por nop(33 ocorrencias), push e call(ambas com 31 ocorrencias).
Reversing 400 ~ A que método criptográfico se assemelha o que está presente no executável dado?
Ao executar e entrar ‘aaaa’ como texto e 1 como chave, temos ‘bbbb’ como saida. Testes posteriores mostraram se tratar de uma cifra de rolagem, se assemelhando, entao com a cifra de cesar ou rot13.
Reversing 500:”Qual instrucao em assembly esta relacionada com o seguinte trecho de codigo em C:
for( ecx = 0 ; ecx < 32 ; ecx++ ){ if ( (1 << ecx) & eax ) { ebx = ecx; break; } }
**
** **???
resposta no formato:
Checando no manual da intel, temos: bsfl %eax, %ebx
Com isso, terminam a solução dos 5 níveis de reversing. Caso o resto dos desafios sejam localizados, postarei as soluções.