Shatter Attack

Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: ask@t
Datum: 18.4.2007
Hodnocení/Hlasovalo: 1.88/26

V tomto clanku se dozite neco o utoku typu shatter attack na windows. Jak funguje, jak ho provest a zaklady mechanismu zprav winu.

Co potrebujete:debugger ollydebug
zakladni znalost programovani ve windows API
(pokud neumite, nevadi staci jen znalost nejakeho jazyka jez ma podobnou syntax jako c++)
hlavu
a kompilator(pro line tu mam i binarky ale u tech nevite co v nich opravdu je :->)
proces explorer(dale jen PE)
download
a kerio personal firewall verze 2.15
download

Co to je?

Na svete je spousta zakernych mallwarovych programu/skriptu. Hodne z nich se snazi zakryt svou cinnost a ziskat prava roota aby tuto cinnost mohly provadet. V tomto clanku popisu jak vyuzit zpusob mechanismu zprav pro vnoreni naseho zakerneho kodu treba do programu kerio personal firewall a taky bych chtel poukazat na zavaznou zranitelnost programu pod windows a zpusobu chovani windows jako takovych.
(pokud programujete pod windows API tak tyto 2 odstavce klidne preskocte a prejdete na nadpis exploitujeme kerio)

Mechanismus zprav

Pro ty, kteri nevi co je to mechanismus zprav windows kratke vysvetleni: Jadro windows reaguje nepretrzite na zpravy. Zprava muze byt posun mysi, stisk klavesy, ci ji muze poslat program.Windows pote zpravu zpracuji a provedou akci - posun kurzoru, zmena sys.data, preskoceni do jineho okna..... Tento mechanismus vznikl davno pred tim, nez se dostala pocitacova bezpecnost do lidskeho povedomi.
Tento system ma 2 slabiny,
:neni mozne urcit odesilatele zpravy-->vsechny zpravy maji stejnou prioritu
:se zpravami byvaji predavany ukazatele na f-ce.

Rozebrani pouzitych f-ci

K poslani zpravy slouzi f-ce sendmessage()
1.parametr je handle okna, ktery je adresatem (handle = :"nazev" okna aplikace POZOR HANDLE OKNA SE NEROVNA NADPIS OKNA)
2.parametr - druh zpravy-viz tabulka
handle okna
K zjisteni handlu okna pouzivame f-ce findwindow()(dale jen fw) a findwindowex()(dale jen fwex)
1.parametr f-ce fw = nazev tridy okna(v nasem priklade je to "notepad")
2.parametr f-ce fw nas nezajima

f-ce fwex je schopna najit potomky hlavniho okna(notepad)
1.parametr = tzv. top-level okno(notepad)
2.parametr = nezajima nas = null
3. parametr = hledame podokno s nazvem "edit"
4.parametr = null

Notepadovy priklad odeslani zpravy
ZDe odeslu zpravu wm_paste(totez co CTRL + V) do notepadu.
kod

Jestli chcete kompilovat tak predtim zmazte komentare co presahuji radku
Kdyztak tu mam binarky
Tak ted ulozte neco do schranky otevrete notepad a spustte nas program. Heureka obsah schranky se zkopiroval.

Exploitujeme Kerio

Ted si ukazeme neco praktictejsiho. Programy jez obsahuji ovladaci okno edit(nebo richedit) jsou nachylne k utoku pomoci odeslani zpravy EM_SETWORDBREAKPROC, pomoci teto zpravy muzeme zmenit f-ci pro zalamovani textu v techto oknech.
K tomu abysme spustili vlastni shellode musime ho nejdriv programu zpristupnit a pote najit v pameti abysme vedeli jakou adresu pomoci f-ce setwordbreakproc volat.
(Mozna si vzpomenete na clanky na tema cracking ktere buh vi proc odsad zmizely)
Shell code programu zpristupnime tak ze ho ulozime do ovladaciho prvku edit.
(Pomoci f-ce WM_SETTEXT a aby se nam tam ten kod vesel tak pro jistotu predtim odeslem zpravu EM_SETLIMITTEXT a kdyby byl nas prvek edit jen pro cteni tak to zrusime zpravou EM_SETREADONLY)
Tak a mame zaruceno ze shellcode se ocitne v pameti ted ho jen najit. Nejdriv si shellcode vytvorime v metasploit framework.
(Psat shellcode mne fakt nebavi tak si ho vygeneruji. Na adrese http://metasploit.com:55555/PAYLOADS?FILTER=win32) Zajimave zni nadpis Windows Executable Download and Execute.(Zkuste si ale treba neco jineho)Do pole data mam dat url takze treba
http://www.soom.cz/data/optical.exe.
Tak a mam shellcode.)
Ted potrabujem zneuzitelny program s co nejvyssimi pravy.Kerio personal firewall verze 2.1.5 je vyborny. (Nevim jak jsou na tom novejsi verze, ale asi lip) A ted primo k zneuziti. Nejdrive v PE najdem okno s prvkem edit.
screen
Pote spustime debugger a pripichnem ho k procesu okna(file-->attach) Okna s kerio firewallem jsou tam asi 3 proto jsme predem zjistili cislo procesu s PE.(v ollym je to v hexadeci v PE je v desitkove takze pomoci kalkulacky prevest)
screen
Ted nam zbyva jen zjistit na jake adrese se vnoreny shellcode vyskytuje. Udelame pracovni verzi exploitu a na jeho zacatek dame retezec co v pohode najdem
(treba nomine, pokud nebyli sunbeltaci nabozensky zalozeni tak to tam dvakrat nebude) Na konec exploitu pridam poslani zpravy WM_LBUTTONDBLCLK ktera vyvola f-ci zalamovani taxtu, coz je ta f-ce kterou jsme upravili a tak se spusti nas shellcode

binarky
Ted spustime program a pokud vse vyjde napise:
"Napis adresu shellcode z debuggeru(ex. 0x0014E360):"
Nyni musime bajit shellcode v pameti.V ollydebug(ktery je stale pripojen k oknu s prvky edit) si vyjedem memory map A adresu prvniho znaku zadame do programu souhrn S timto si pote muzete se systemem delat co chcete staci jen prohazovat shellcody.

Zaverem

Nebot je tato chyba v mechanismu windows jeji opraveni bude potrebovat pravdepodobne velke zmeny v samotnem jadru takze to bude urcite jeste dlouho fungovat.
Nicmene program muzeme udelat rezistentni tim, ze budeme striktne oddelovat cast jez pracuje s uzivatelem a cast ktera ma prava system. Uplny exploit ktery by nepotreboval nasi asistenci pres PE a olly tu radeji zverejnovat nebudu protoze kazdy kdo umi si ho bud sam napise ci najde.(Opravdu na internetu je, staci jen hledat(treba casopis hakin9 ktery mi k tomuto clanku poslouzil)) A kdo neumi tak alespon odted vi, jak to funguje a muze si s tim vyhrat.

Zdroje:Hakin9 Cislo 3/2006-Clanek Shatter Attack
Autor:Krzystof Wilkos
http://www.rootsecure.net/content/downloads/pdf/shatter_attack_redux.pdf