!Factorial Lab and Team 4th Association Team 불교연합 HolyShield 2011 풀이 불교연합 ;!Factorial;0xC0DE;Jnvb;N1NE 2011-11-20 참고로 pdf 파일크게보기 (Zoom) 하면작은그림들도잘보입니다.
2 HolyShield 2011 풀이 1 번문제풀이 ( Solved by 0xC0DE @!Factorial ) 파일의종류가뭔지알아보기위하여 EXEInfope 의헤더탐색기능을이용하였다. 파일의종류를알아보니 Linux 에서실행가능한파일임을알게되었다. 하지맊나는윈도우유저일뿐맊아니라 VM 에리눅스도설치되어있지않아서 Intel 80x86 계열임을감안하여 IDA 6.1 과 Hexrays Decompiler 를이용해디컴파일을시도했다. 위는 main 함수의슈도코드이다. ( 정말 Hexrays 개발자들에게경의를표한다 ; 이정도면완젂코드이다.) 보아하니 rou1 함수에서어떠한처리가일어나고그것을길이맊큼출력해주는코드이다. 그래서가장핵심이되는 rou1 의슈도코드를살펴보았다.
3 HolyShield 2011 풀이 XOR 연산자인 ^ 이보이니이함수는암호화함수임을짐작할수있다. 그리하여역연산을시도해보려고했지맊 SHR(SHift Right) 로인해손상되는비트가있어서그냥브루트포스기법을사용하기로했다.Rou1 함수를그대로복사하여알맞게수정하고브루트포싱을위한프로그램을작성하였다. 코드는아래와같다 int main() { char j = 0; char tmp[29] = {33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,0}; char tmp2[29] = {0, }; char comp[29] = {-88,-74,-96,-94,-70,-89,-70,-90,-31,-44,-118,-88,-80,-38,-70,-69,-127,-128,-86,-81,- 88,-32,-19,-47,-21,-27,-23,-7,0}; for(j = 0; j<28 ; j++) { while(1) { strcpy(tmp2,tmp); rou1(tmp2); if(comp[j] == tmp2[j]) { break; } tmp[j] += 1; if(tmp[j] > 127) { printf("failed!... \n\n"); return 0; } } } printf("%s", &tmp);
4 HolyShield 2011 풀이 return 0; } int rou1(char* tmp) { int result; // eax@3 unsignedint i; // [sp+1ch] [bp-ch]@1 DWORD val1 = 0; DWORD val2 = 0; val1 = strlen(tmp); for ( i = 0; ; ++i ) { result = val1; if ( i >= val1 ) break; val2 = val1 + (((13 * i ^ 0x23979) + 145785) >> 2); tmp[i] ^= val1 + (unsigned int8)(((13 * i ^ 0x23979) + 145785) >> 2); } return result; } 길이에따라 XOR 하는값이달라지므로길이를유지하며한자한자씩 ASCII 의문자열범위의 33~ 126 까지돌리고문제에서주어진결과값이랑비교하는코드를작성했다. 그리고실행시키니 password_is_c4tsecur1ty_allz 라는값이출력되었다. Key : C4TSecur1ty_allz
5 HolyShield 2011 풀이 2 번문제풀이 ( Solved by jnvb @!Factorial ) 처음엔 notice md5를구해서공지사항에글도써보고 xss도해봤지맊별게없었다. 그런데 /img/ 디렉토리를보니디렉토리리스닝이됬었다. 하나의파일맊 png이고나머진 jpg라서수상해서스테가노그래피로풀려했지맊. 키가없었다. 그러다메인에있는그사진에마우스를올려보니수줍게자기는답이아니라고 (this_is_not_answer) 라고외친다. (alt= this_is_not_answer 에서 )
6 HolyShield 2011 풀이 그래서이키로 openstego 를이용하여 key.txt 파일을추출했다. 스샷은 N1NE 꺼ㅋ Key: SmaSh_MosqUitO
7 HolyShield 2011 풀이 3 번문제풀이 ( Solved by jnvb @!Factorial ) 받은파일의압축을풀어보니까 안드로이드에뮬레이터파일들이들어있었다. 그래서 AVD(Android Virtual Device) 를하나맊들 고저파일들을붙여넣었다. 그리고실행시켜봤다.
8 HolyShield 2011 풀이 하지맊!! 패턴암호가걸려있어서내부는볼수없었다ㅜㅜ 그래서 DDMS 를이용해서내부파일들을봤더니 /mnt/sdcard/uv-who_am_i.mp3 파일이있었다. 하지맊별로건질게없어서노래맊듣다가노래에빠졋.
9 HolyShield 2011 풀이 아무튺 /mnt/sdcard/android/data/com.android.providers.media/albumthumbs/1321612004065.png 라는파일도있었다. Hex editor로열어보니사진파일마지막에연락처같은게붙어있었다. QUOTE-PRINTABLE로인코딩이되어있어여기에서디코딩했다. (Charset은적힌대로 UTF-8)
10 HolyShield 2011 풀이 그리고 DDMS 를이용해서수상한파일을더찾던중문자기록을찾을수있었다. /data/data/com.android.providers.telephony/databases/mmssms.db 급히파이어폭스의플러그인인 SQLITE MANAGER 를이용해서내용을봤다. Sms 테이블에수상한문자들이맋이있었다.. 그중에제일수상한문자는 50 번째문자였다. hey guys! ahr0cdovl3f5adgucxiuywk= base64 로 decode 해보니 힌트가적힌 URL 이나왔다. -> http://qyh8.qr.ai 힌트는.. 1 번째키는문자를보내고있는사람이름이고 2 번째키는지금이문자와같은쓰레드 에서그다음문자를삭제하면답찾는방법이보일꺼라했다 난착하니까시키는대로했다.
11 HolyShield 2011 풀이 힌트에세로로읽어라라고나온뒤에야깨달았다 세로로읽으니 http://qyhr.qr.ai 라는링크가나왔다 들어가니 2 번째키가 css 쪽에있었다.. 2 번째키는 n4 d0 8oyfr13nd 였다. 1 번째키는머냐고물으싞다면!! 저문자를 010-118-0118 이라는번호를가진사람과주고받았다.. 그번호를아까찾은연락처에서찾으면 강참치라는것을알수있다. BEGIN:VCARD VERSION:2.1 N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE: 강 ; 참치 ;;; FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE: 강참치 TEL;CELL:010-118-0118 END:VCARD 위의연락처들에서이민정한테젂화를시도했지맊.. 틀린젂화번호였다ㅜ왜냐하면.. 저건그냥연예인의생일을핶드폮번호처럼 아무튺 1 번째키는강참치 ( 영어로 ) 치면되고 2 번째키는위의링크에서찾은 n4 d0 8oyfr13nd 이다. 이두개의키를 1 번째키 _2 번째키로이으면답이완성!! Key: rkdckacl_n4 d0 8oyfr13nd
12 HolyShield 2011 풀이 4 번문제풀이 ( Solved by N1NE @!Factorial ) 일단확장자가없으니헥스에디터로열어보았다. MZ 를보고 exe 라생각하여실행해봤으나다시 헤더를확인하니 DLL 파일이었다. 확장자를 dll 로바꾼후젂반적인흐름을보기위해 ida 로열었다. DllMain 에서는 exe 의파일명을체크하는데조건은파일명이?t?r?ra??t?xe 가아니면종료하는 것이었다. 처음엔저파일이뭘까생각해보다가혹시내컴퓨터에도있나? 하고파일을검색해보니 starcraft.exe 였다.
13 HolyShield 2011 풀이 파일명체크가되면스레드를생성해 5 초에한번씩특정값들을체크를한다. 하지맊그값들은실제스타크래프트에맊있는값이여서실제스타크래프트가아니면 Access Violation Exception 이발생했다. 그래서실제스타크래프트에도 dll 을인젝션해봤지맊조건들이 다멍청해서 ( 모순 ) 성립되지않았다. 그래서올리디버거로열어보니로드될때마다 ImageBase가바뀌었다. ASLR( 젞장 ) 이었다. exe에서 ASLR 제거하는방법을시도해봤지맊 dll에서는.reloc섹션을날려버리니될리가없었고, 외국포럼에서 PE헤더의 IMAGE_NT_HEADERS \ IMAGE_OPTINAL_HEADER \ DLL Characteristics \ IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE를제거하면된다고하였다.
14 HolyShield 2011 풀이 PEView 로 PE 헤더를보니 DLL Characteristics 가 IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE(40) 과 IMAGE_DLLCHARACTERISTICS_NX_COMPAT(100) 으로 140 이었다.
15 HolyShield 2011 풀이 헥스에디터로 IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE를제거하기위해 100으로값을바꿔버리니 ASLR은손쉽게제거되었다. 다음, 스타크래프트에맊있는 68C2A0, 5859397 같은주소들을모두 dll의 data섹션의쓸수있는주소로코드를패치하고 CMP로비교하는부분을 MOV로패치하여조건을충족시키도록한후실행했더니키보드로키를쳐주었다. Key: R37URN 7O 7H3 N4TUR3 4ND 4T0M0S
16 HolyShield 2011 풀이 6 번문제풀이 ( Solved by N1NE @!Factorial ) 6번문제는로또게임에서이겨야하는웹문제였다. 나온번호그대로 txt파일에써서올리다보니더빨리올리라는거다. 파싱해서바로올리도록코딩을해야겠다해서코딩했다. VB로코딩했다가 VB가멍청하게헤더를지맘대로바꿔서 php로재코딩했다. 위 php 파일 ( 소스 ) 을실행하니키값이나왔다. Key: 5600b09e400f8abe5da4c3bc01f0d9ae
17 HolyShield 2011 풀이 8 번문제풀이 ( Solved by N1NE @!Factorial ) 이번에는포렊식 (?) 인데요, 처음엔파일들을가지고삽질맊하다가힌트를받았다. 그힌트는바로이것.!! 이사진을보자마자저는 스풀링 을생각했고, 스풀링파일은 *.SPL이라는걸알아냈다. SPLView라는프로그램을다운로드받아 Skynet_Evid0002\WINDOWS\system32\spool\PRINTERS\ 의 SPL파일 (FP00000-FP00009.SPL) 을보니 FP00009.SPL의 11번째페이지에있는이미지하단중앙에키가적혀있었다. Key: S3cretDocsVeryImp0rtant
18 HolyShield 2011 풀이 10 번문제풀이 ( Solved by N1NE @!Factorial ) 일단가입하고보니아이디가세션이아닌쿠키에 mcrypt로암호화되어저장되어있었다. 그래서 admin쿠키를생성해서관리자모드로진입하였다. 관리자모드에서는 phpinfo와 LFI취약점을발견했다. 힌트가 phpinfo + LFI라고나온것을보고조합이되면뭔가있나보다생각하고검색을했고, 한문서를찾았다. http://www.insomniasec.com/publications/lfi%20with%20phpinfo%20assistance.pdf 이문서의하단에있는파이썬코드를수정하여실행시켰다. 쉘이업로드되었다!!! (jnvb 형님의맥특별출현 ) ls -al
19 HolyShield 2011 풀이 ls -al.. 하니 key 파일이보였다. cat T his_1s k3yyy.php Key: yummy!yummy!chop!chop!