2013 Hack The Packet 예선전(2013 HTP_prequal)
POC 옆 이벤트홀에서 진행된 Hack The Packet 대회의 첫인상은..
쌍콤하다?ㅋㅋ
대부분이 대학생 같아 보이고, 더 어린 고등학생도 있는 것 같았다..
이벤트홀 입구에 들어가자 마자 보이는 이상한 조형물들..
나중에 기사보고 알았는데 이게 스카다(SCADA) 시스템!!(Choo Choo Pwn)
좀 일찍가서 둘러보고 할 시간이 었었음 좋았을텐데.. 넘 빡빡하게 도착해서 아쉬웠다.
[POC2013] 러시아 해커들이 말하는 SCADA 해킹!
[POC2013-TV] 실제 스카다 시스템, 2시간 만에 해킹당해
그리고 좀 안쪽에는 또 다른 해킹대회가..(Power of XX : 여성해킹방어대회)
[POC2013] 올해 최고 여성 해커팀은…순천향대 Security First!
그리고 그외에도 몇몇 이벤트가 있는것 같았다.(Hack The Packet 옆에는 추억의 펌프?도 있었다)
Hack The Packet은 랜 케이블과 전원등의 준비로 14시 30분부터 시작됐다..
IP는 예선전 등수로 할당(난 예선전 19등으로 192.168.0.119 사용ㅋ)해주었고, 폐쇄망에서 패킷을 스니핑하면서 문제를 푸는 방식으로 진행되었다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
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 를 키워드로 검색해보니 금방 패킷이 나왔다.
살펴보니 밑에 부분에 K@E_Y:3300-69042-4240 이 있어 답이다 싶어서 입력했더니, 아니라고한다..ㅠ
이상해서 운영진에 물어보니, 문제를 잘보라고 한다.. 문제가 요구하는 답은 수행된 명령어를 찾아라! 다..ㅠ
그래서 명령어를 보니, 3개 정도 있었다..
url encoding 이 되어있어 명령을 알아보기 위해 디코딩 하려고 했으나 인터넷이 안됬다..ㅠㅠ
보통 간단한 디코딩은 인터넷으로 하는 편이라 난감했다..
PC에 설치된 Tool 중에 디코딩이 가능한 Tool을 찾느라..다행히 burp proxy으로 디코딩을 했다.
그중에 cat 명령이 답이다 싶어 명령어 부분만 뽑아서 MD5으로 encoding 했다.
그래도 오답ㅠㅠ
다시 운영진에게 문의해보니.. 패킷에 있는 내용 그대로 MD5 encoding 을 해보라고 한다..ㅠㅠ
그래서 redirect: 부분 전체를 해봐도 오답.. 몇번을 시도한끝에 아래와 같이 해서 성공!
다음은 M1 XSS Attack 문제를 살펴보았다.. 기본적으로 http 에 script 를 검색해보니 너무 많이 나와서 cookie 까지 같이해서 필터해보았다.
1 |
tcp.segment_data contains "script" && tcp.segment_data contains "cookie" |
일단 user id 1개는 찾았다. (G1A2Li) 하지만 키 형식은 attack id_victim id 다른 user id 하나를 더 찾아야 되서 다 확인해봤는데 나오지 않았다..
그래서 내가 캡쳐한 패킷에 없나보다 하고 ip.addr == 192.168.216.139 필터를 걸어서 다시 패킷캡쳐를 하고 기다렸더니..
다른 하나의 id 를 발견할 수 있었다.
정답은 G1A2Li_H1T2P1U
L3 문제를 풀기위해 확장자가 exe 인 패킷을 찾으려고 필터를 했는데..
M2 문제가 나왔다.
그래서 exe 파일을 추출해서 실행해보니 Bind Error이 발생하고 BinText 으로 text 를 추출해봐도 특이한 것을 발견할수 없었다.
그렇게 한참을 헤메다가 힌트가 공개되었다.
HINT : Source of malware.exe is in img_style.jpg file
그래서 바로 img_style.jpg 파일을 찾았다.
해당 패킷에 중간부분에 보니까 소스가 있었다..
소스 위부분에 char *key = “HighFive”; 인것을 보고 입력했지만 역시 오답이였다.
운영진에 문의해봤더니, 해당 Key 는 정답이 아니라 정답을 풀수있는 Key중에 하나라고 했다.
그리고 문제는 명령어를 찾는 것이고 소스는 참고만 하라고 알려주었다.
그 말을 듣고 찬찬히 소스를 살펴보니, ip 와 port를 알수 있었다. (192.168.137.135, 19830)
그리고 더 밑에 부분을 보니 key와 받은 명령어를 XOR 하는 부분을 발견할수 있었다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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 필터를 걸어 살펴보니 꽤많은 패킷이 있었다..
그 중에 웬지 느낌있는 패킷이 하나 눈에 들어왔다.(위에 선택된 패킷)
그래서 Hex editer 으로 HighFive를 Hex값을 변환했다.
그리고 malzilla 으로 xor 해보았다.
정답은 h1ghf1ve_0n_your_way
이렇게 M문제만 3개 풀고 종료..
그래도 600점으로 4등!!
예선19등에서 출발해서 본선 4등이면 괜찮은듯!!
http://hackthepacket.com/entry/2013-Hack-The-Packet-QUAL
나름 즐겁고 재미있는 시간이였던 것 같다^^
2 Responses to 2013 Hack The Packet 본선(2013 HTP)