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: %<registrador 1>,%<registrador 2> ** **por exemplo: addl %esp,%ebp**

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.