Capture the Flag Application Security Challenge - Final

25.12.2010 12:28 | phb

Polytechnic Institute of New York University organizoval pred par tyzdnami Capture the Flag Application Security Challenge, jeho finalnu ulohu ziaden tim nevyriesil. Kedze som dnes v noci nejako nemohol spat a pracovat sa na vianoce predsa nema, rozhodol som sa, ze sa takto kusok zabavim. V nasledujucich riadkoch skusim strucne popisat sposob ako na to ...

Nejake zakladne info o sutazi: http://www.poly.edu/csaw-CTF

Zadanie final ulohy: http://www.phreedom.org/blog/2010/csaw-final-challenge/

Budeme potrebovat debugger, na tuto ulohu sa hodi aj napr. OllyDbg - http://www.ollydbg.de/

Stiahneme si zadanie, nainstalujeme modifikovany Reader, skusime otvorit prilozene pdfko. Zadame nejake hesla a co to, nic sa nedeje :) Malo by to vyzera nejako takto: http://img808.imageshack.us/img808/5884/clanok1.png

Ako teda chceme postupovat? Vieme, ze sa jedna o modifikaciu klasickeho Readera, podme skusit spravit diff voci "povodnej" verzii, to by teoreticky mala byt najrychlejsia cesta. Avsak ak si .msi balicek odbalime a porovname obsah, zistime ze niekolko kniznic sa lisi velkostou ... ak sa pozrieme na ich hlavicky zistime, ze kniznice v zadani ulohy su narozdiel od povodnych kompresnute ASPack-om. Vadi to len tomu, ze diff si tak lahko nespravime, avsak aspon sa nam zuzil okruh moznych modifikovanych suborov len na tie, ktore sa lisia.

Ak sa pozorne pozrieme na zadanie zistime, ze autor nam zanechal velmi silnu pomocku, pretoze vravi ze nam vyskoci message box ... Kto aspon kusok pozna windows API vie, ze v user32.dll su funkcie MessageBoxA, MessageBoxW atd. Tj je tu velka sanca, ze prave tieto volania budu pouzite na zobrazenie "congratulations" hlasky :)

Takze teraz v OllyDbg prejdeme cez modifikovane kniznice a hladame intermodular call na user32.MessageBox ... kedze suborov je len par, o chvilku zistime, ze v icucnv36 je krasne volanie: http://img443.imageshack.us/img443/1339/clanok2.png

Takze hlasku by sme mali, uz sa k nej len nejako dostat. Celkom efektivny sposob je prejst zase raz zoznamom intermodular callov v aktivnych moduloch aplikacie, tento krat hladame vsetky volania na kniznicu v ktorej sme nasli "Congratulations" message box. Idealne na funkciu, v ktorej sa tento message box nachadza, tento detailik zistime analyzou icucnv36 kniznice (ctrl-A v ollydbg), bude to vyzera nejako takto: http://img227.imageshack.us/img227/8210/clanok3.png

V cervenom ramceku je zvyrazneny nazov funkcie ... takze hladame cally na icucnv36.ucnv_convertEx_3_6

Takyto call sa nachadza iba v module AcroForm.api, blok kodu po analyze vyzera takto:

http://img149.imageshack.us/img149/8339/clanok4.png

Ideme teda spatne po calloch, dostavame sa do zaujimaveho bloku kodu s vela strcpy/strcmp volaniami ...
Co sa tam deje, nechavam na zvedavost citatela :). Poscrolujme az na entry point tohto bloku, dajme si tam breakpoint.

Po prekrokovani tohto bloku zistujeme, ze ak to chceme spravit "quick and dirty", staci nam zmenit niektory z jumpov okolo offsetu 20AABA37, dajme tomu napr. prave ten, co tam je

20AABA37 |. /74 6A JE SHORT AcroForm.20AABAA3;

Dajme ho na 75, teda JNE/JNZ, odkrokujme a zistujeme, ze nam uz beh programu pekne vosiel do callu, ktory potrebujeme :).

Podme teraz naspat do icucnv36, dajme si breakpoint na zaciatok bloku kodu, ktory nas zaujima, tj offset/instrukcia: 4A81D610 >/$ 81EC 08080000 SUB ESP,808.

Ak chceme dostat len okienko, potrebujeme zmenit logicku podmienku na jumpoch:

4A81D741 |. /7C 5E JL SHORT icucnv36.4A81D7A1 ;
4A81D769 |> \75 36 JNZ SHORT icucnv36.4A81D7A1 ;
4A81D78C |. /75 13 JNZ SHORT icucnv36.4A81D7A1 ;

Staci, ze logicke pomienky znegujeme, tj kde je JE bude JNE a naopak, resp. aj nop bude mat rovnaky efekt.

Vysledok vyzera nejako takto: http://img24.imageshack.us/img24/1420/csawctf.png :)

Samozrejme toto je len "quick and dirty" hack, reversovat key checking sa mi uz nechcelo, komu sa bude chciet kludne ma moze doplnit :).

    • Re: Capture the Flag Application Security Challenge - Final 30.12.2010 | 12:54
      Avatar blackhole_srnec   Používateľ

      Asi preto to nikto nespravil lebo boli lenivy ako ty :-) . Naco dekodovat kluc ked sa to da obfucknut ze.

      +++
      • Re: Capture the Flag Application Security Challenge - Final 30.12.2010 | 14:57
        Avatar phb   Používateľ

        tak nejako :D
        ______________________________
        There are no great men, only great challenges that ordinary men are forced by circumstances to meet. -- Admiral William Halsey

        ______________________________ There are no great men, only great challenges that ordinary men are forced by circumstances to meet. -- Admiral William Halsey