2013 Hack The Packet 본선(2013 HTP)

 

2013 Hack The Packet 예선전(2013 HTP_prequal)

POC 옆 이벤트홀에서 진행된 Hack The Packet 대회의 첫인상은..

쌍콤하다?ㅋㅋ

대부분이 대학생 같아 보이고, 더 어린 고등학생도 있는 것 같았다..

이벤트홀 입구에 들어가자 마자 보이는 이상한 조형물들..
CameraZOOM-20131108140447039
나중에 기사보고 알았는데 이게 스카다(SCADA) 시스템!!(Choo Choo Pwn)
좀 일찍가서 둘러보고 할 시간이 었었음 좋았을텐데.. 넘 빡빡하게 도착해서 아쉬웠다.
[POC2013] 러시아 해커들이 말하는 SCADA 해킹!
[POC2013-TV] 실제 스카다 시스템, 2시간 만에 해킹당해

그리고 좀 안쪽에는 또 다른 해킹대회가..(Power of XX : 여성해킹방어대회)
CameraZOOM-20131108140529404
[POC2013] 올해 최고 여성 해커팀은…순천향대 Security First!

그리고 그외에도 몇몇 이벤트가 있는것 같았다.(Hack The Packet 옆에는 추억의 펌프?도 있었다)

Hack The Packet은 랜 케이블과 전원등의 준비로 14시 30분부터 시작됐다..

IP는 예선전 등수로 할당(난 예선전 19등으로 192.168.0.119 사용ㅋ)해주었고, 폐쇄망에서 패킷을 스니핑하면서 문제를 푸는 방식으로 진행되었다.

L1-K : 블로그가 해킹 당했다. 해킹 당한 블로그를 분석해라.
L1-E : A blog website was hacked. Analyze of it.
Hint : tistory

L2-K : 해커가 보낸 파일 찾기(부제: 포켓몬의 반란)
L2-E : Find leaked file(The revolt of Poketmon)

L3-K : 어느날 개구리는 컴퓨터가 너무 느려서 PC방 하씨를 찾아가 아이스크림을 사주며 점검을 부탁했다.
하씨는 메모장과 그림판을 이용하여 열심히 분석을 진행하다 결국은 마우스 클릭 몇 번을 통해 구글을 ddos 하는 악성코드 3마리를 찾아냈다. 과연 개구리 컴퓨터에 살고 있는 악성코드는 무엇일까?
L3-E : Find 3 ddos malwares.
* Key format : 파일이름1_파일이름2_파일이름3 (sort by filename asc)
ex) asdfd1.exe_gkgkgk2.exe_hahaha9.exe

L4-K : 진현이는 용자의 컴퓨터에 몰래 접근하여(나쁜놈) 진실을 알아냈다! 과연 진실은 무엇인가??
L4-E : jinhyun made a good job(got a true from yong-ja's computer without yong-js's agree)! what is the ture?
HINT : truecrypt

M1-K : 누군가 나의 Cookie 값을 가져갔다!!!! 찾아줘!
M1-E : Someone stealed my Cookie. Find it!
Hint : XSS Attack
*Key format : attack id_victim id

M2-K. 악성코드가 동작중인 컴퓨터의 패킷이다. 악성코드가 서버로부터 받은 명령을 찾아라
M2-E. There is a malware’s activity in this packet, what is the command from malware’s server?
HINT : Source of malware.exe is in img_style.jpg file 

M3-K : Apache 환경에서 침해사고가 발생하여 시스템 접속 KEY를 빼앗아 갔다. 수행된 명령어를 찾아라!
M3-E: System account key was stealed of apache system. What command executed for it?
Hint : Apache Struts2
Key format : md5(key)

H1-K : 정보가 유출되고 있다. 무엇인가? 
H1-E : Information leak! what?
Hint : DNS. Covert Data Storage Channel Using IP Packet Headers

H2-K : 포렌식 조사관은 비밀이 담긴 하드를 dd 명령어로 디스크 이미지를 획득하고 네트워크로 전송하였다.
H2-E : Forensic investigator collects the hard disk image which contains a secret message with the dd command and sent it on the network.

H3-K : 악성앱의 C&C IP 주소를 찾아라
H3-E : What is the C&C IP of malicious android application?

일단 쉬운 문제 먼저 풀려고 tistory를 검색해보았는데 생각처럼 쉽게 나오지 않았다..
(여기서 시간을 너무 소비한게 큰 실수었다..ㅠ)

예선과 다르게 패킷캡쳐를 하면서 문제를 풀어야 하는 상황이라 패킷이 없어서 검색이 안되는지, 있는데 필터를 잘못건것인지 판단하기가 힘들었다..

일단 풀 수 있는 문제를 먼저 푸는 걸로 작전을 바꾸고 쉽게 접근할수 있는 문제부터 검색해보기 시작했다..

제일 확실한 키워드를 아는 문제인 M3 Apache Struts2 취약점 문제를 먼저 찾아봤다.
ProcessBuilder 를 키워드로 검색해보니 금방 패킷이 나왔다.
HTP-M3-1

HTP-M3-2

살펴보니 밑에 부분에 K@E_Y:3300-69042-4240 이 있어 답이다 싶어서 입력했더니, 아니라고한다..ㅠ

이상해서 운영진에 물어보니, 문제를 잘보라고 한다.. 문제가 요구하는 답은 수행된 명령어를 찾아라! 다..ㅠ

그래서 명령어를 보니, 3개 정도 있었다..

url encoding 이 되어있어 명령을 알아보기 위해 디코딩 하려고 했으나 인터넷이 안됬다..ㅠㅠ
보통 간단한 디코딩은 인터넷으로 하는 편이라 난감했다..

PC에 설치된 Tool 중에 디코딩이 가능한 Tool을 찾느라..다행히 burp proxy으로 디코딩을 했다.
HTP-M3-4

그중에 cat 명령이 답이다 싶어 명령어 부분만 뽑아서 MD5으로 encoding 했다.
HTP-M3-5

그래도 오답ㅠㅠ

다시 운영진에게 문의해보니.. 패킷에 있는 내용 그대로 MD5 encoding 을 해보라고 한다..ㅠㅠ
그래서 redirect: 부분 전체를 해봐도 오답.. 몇번을 시도한끝에 아래와 같이 해서 성공!
HTP-M3-6

다음은 M1 XSS Attack 문제를 살펴보았다.. 기본적으로 http 에 script 를 검색해보니 너무 많이 나와서 cookie 까지 같이해서 필터해보았다.

tcp.segment_data contains "script" && tcp.segment_data contains "cookie"

HTP-M1-1

HTP-M1-2

일단 user id 1개는 찾았다. (G1A2Li) 하지만 키 형식은 attack id_victim id 다른 user id 하나를 더 찾아야 되서 다 확인해봤는데 나오지 않았다..

그래서 내가 캡쳐한 패킷에 없나보다 하고 ip.addr == 192.168.216.139 필터를 걸어서 다시 패킷캡쳐를 하고 기다렸더니..

다른 하나의 id 를 발견할 수 있었다.
HTP-M1-3

정답은 G1A2Li_H1T2P1U

L3 문제를 풀기위해 확장자가 exe 인 패킷을 찾으려고 필터를 했는데..

M2 문제가 나왔다.
HTP-M2-1

HTP-M2-2

그래서 exe 파일을 추출해서 실행해보니 Bind Error이 발생하고 BinText 으로 text 를 추출해봐도 특이한 것을 발견할수 없었다.

그렇게 한참을 헤메다가 힌트가 공개되었다.
HINT : Source of malware.exe is in img_style.jpg file

그래서 바로 img_style.jpg 파일을 찾았다.
HTP-M2-3

해당 패킷에 중간부분에 보니까 소스가 있었다..
HTP-M2-4

소스 위부분에 char *key = “HighFive”; 인것을 보고 입력했지만 역시 오답이였다.

운영진에 문의해봤더니, 해당 Key 는 정답이 아니라 정답을 풀수있는 Key중에 하나라고 했다.

그리고 문제는 명령어를 찾는 것이고 소스는 참고만 하라고 알려주었다.

그 말을 듣고 찬찬히 소스를 살펴보니, ip 와 port를 알수 있었다. (192.168.137.135, 19830)

그리고 더 밑에 부분을 보니 key와 받은 명령어를 XOR 하는 부분을 발견할수 있었다.

                char str[BUFLEN]="";
                int len;
                len=recv(ClientSocket,str,BUFLEN,0);
                printf("\t  [+] len = %d\n",len);

                if(len >52){
                        printf("\t  [-] overcount\n");
                        break;
                }
                else if(len<52){
                        for(int p =0;p<52-len;p++)
                                strcat(str," ");
                }
                int cnt =0;
                int i =0;
                for(i=0;i<52;i++){
                        result[i] = key[cnt]^str[i];
                        cnt++;
                        if(cnt == 8)
                                cnt =0;
                }

그래서 다시 ip.addr == 192.168.137.135 && tcp.port == 19830 필터를 걸어 살펴보니 꽤많은 패킷이 있었다..
HTP-M2-5

그 중에 웬지 느낌있는 패킷이 하나 눈에 들어왔다.(위에 선택된 패킷)

그래서 Hex editer 으로 HighFive를 Hex값을 변환했다.
HTP-M2-6

그리고 malzilla 으로 xor 해보았다.
HTP-M2-7

HTP-M2-8

정답은 h1ghf1ve_0n_your_way

이렇게 M문제만 3개 풀고 종료..

KakaoTalk_7bd510f60f7f7bc2

그래도 600점으로 4등!!
예선19등에서 출발해서 본선 4등이면 괜찮은듯!!

KakaoTalk_530de585201e8418
http://hackthepacket.com/entry/2013-Hack-The-Packet-QUAL

나름 즐겁고 재미있는 시간이였던 것 같다^^

 

This entry was posted in CTF and tagged , , . Bookmark the permalink.

2 Responses to 2013 Hack The Packet 본선(2013 HTP)

댓글 남기기