10월 초, 약 일주일동안 말레이시아에 갔었습니다.
Hack In The Box 혹은 HITB로 잘 알려져있는 행사에 참여하기 위해서..
원래 처음의 목적은 HITB의 전체적인 행사(발표, 대회, 이벤트 등)도 살펴보고 말레이시아 구경도 해볼겸 해서 계획을 짜나갔습니다.
행사 참여와 관련된 이야기는 뒤에서 하도록 하고, 다시 처음으로 돌아가면,
함께가는 멤버는 저를 포함해서 두명이었습니다(bang1575라는 친구랑..ㅎㅎ).
항공권 예매도 하고, 관광, 문화 등의 정보도 미리 살펴보면서 크게 부담없이 준비했구요.
대회는 신청을 해야 참여할 수 있었기 때문에 팀명은 성적에 상관없이 우리나라도 알릴겸 KOREA로 했습니다.
물론, CTF 멤버 수도 말레이시아에 함께가는 인원 한명을 포함해서 총 두명이었구요.
일반적으로 팀당 3명이긴 하지만, 억지로 인원 수를 채우는것 보다는 두명이서 제대로 하는게 더 괜찮다고 생각되서 그렇게 했습니다.
첫째날
이런저런 준비를 한 다음 인천 국제공항에 도착했습니다. 비수기라 그런지 사람도 많이 없었고, 탑승한 비행기 또한 마찬가지였습니다.
기내에 사람이 너무 없어서 중간의 4자리를 모두 차지한 아저씨 한분과 그 앞의 외국인 한분이 아예 4개의 좌석을 침대삼아
누워서 자고있기도 했습니다. 저는, 비지니스석도 여유가 있을거라 생각하고 중간에 가서 은근슬적 앉아야겠다는 생각을 했는데
깜박잊고 가보지 못했네요.ㅎㅎ 그래도 친구와 저는 앞뒤에서 1인당 2자리를 차지하며 여유있게 앉을 수 있었습니다.
8시간 정도 지났을까, 밤이 깊어질때 즈음 말레이시아에 도착했는데, 시차는 1시간 밖에 차이가 나질 않기 때문에 괜찮았습니다.
그런데 어떻게 하다보니 묵을 호텔을 예약하거나 따로 정해놓지 않은 상태여서 먼저 가있는 분들(AllKill 팀)이
계신 숙소로 무작정 출발했습니다. 택시기사분이 엄청 친절하셔서 출발부터 기분좋았구요.
아, 미리 말하자면 말레이시아 대부분의 사람들이 기본적으로 영어를 조금씩 하기 때문에 어느정도 의사소통은 가능했습니다.
네, 당연히 발음은 알아듣기 힘듭니다..ㅠ.ㅠ 발음상으로 우리나라에 콩글리쉬가 있다면 거긴 말레이쉬정도 되겠네요.ㅎㅎ
호텔로 가는동안 택시기사분과 많은 이야기를 했는데, 관상같은걸 봐주시는게 제일 신기했습니다. 생일을 먼저 물어봤구요. ㅋ
올해에 어떠한 큰 문제에 직면했을텐데, 어쩌고저쩌고, 결국 내년엔 잘 해결될 것이다. 라는 등의 이야기를 들었는데요.
참고로 제 생일(8/31)이 말레이시아의 독립 기념일(8/31)과 일치해서 평가나 결론이 좋았던게 아니었을까 생각도 했습니다. :-D
아무튼 이야기를 나누고있는 동안 녹초가 된 몸으로 호텔에 도착했는데, 무슨 이유에서인지 두통이 너무 심했는데요,
일단 씻고나서 다른 팀 분들과 함께 바로 술을 마셨는데, 술이 약이었나봅니다. 두통이 싹 가시는..ㅎㅎ
적당히 놀다가, 술에 적셔진 피곤한 육신이 달콤한 잠을 잘 수 있도록 침대에 몸을 포개었습니다. XD
둘째날
일어나자마자 다른팀 분들과함께 아침겸 점심을 먹기위해 호텔에 있는 식당으로 내려갔습니다.
아, 말로만 듣던 먹기힘든(?) 말레이시아 음식을 정식으로 접해보는 그 첫 번째 순간이었습니다.
저는 밥과 닭이 같이 나오는 요리를 시키고 다른 대부분의 분들은 뷔페를 드셨는데,
어찌된것인지 다른분들의 식사가 다 끝날때까지 제 요리가 나올 생각을 하지않고 있었습니다.
주방을 보니 요리사도 몇명 없고 뭔가 엉성했구요. 저는 계속 웨이터, 웨이트리스들에게 눈길을 주면서 속으로,
'그래 얼마나 대단한게 나오려나 보자', 하고 단단히 기대를 하고 있었습니다.
상당히 긴 시간뒤에 음식이 나왔고, 명성이 자자(?)한 말레이시아 음식치고는 꽤 먹을만해 보였습니다.
밥과 함께 닭의 겉살을 조금씩 조금씩 포크로 뜯어가며 먹고있는데, 속을 보고 깜짝 놀랐습니다.
속에있는 살점들이 제대로 익지를 않아서 투명한 빛깔로 버티고 서있는데, 무슨 소고기 요리도 아니고 닭을 덜익히다니..ㅠ.ㅠ
상상속의 음식, well-done도 아니고 medium도 아닌 레어(rare) 닭을 접하는 순간이었습니다.
결국 반도 못먹고 식사를 마치고 나왔습니다. 저는 말레이시아 사람도, 야생동물도 아니니까요. :-(
그렇게 식사를 마치자마자 가장 급한 문제인 호텔을 잡기위해서 인터넷을 찾아보고 난 다음 이곳저곳을 떠돌았습니다.
기온도 높은데 거기다가 습도까지 장난 아니여서 불쾌지수도 높아지고 호텔은 가는곳마다 방이 없다고 하고..
어디 여행가기 전에는 반드시 미리 예약을 해두어야겠다는 다짐을 몇번이나 거듭 반복했습니다.. ㅠ.ㅠ
하루종일 돌아다닌 끝에, 결국 할 수 없이 호텔은 포기하고 만일을 대비해서 조사해온 게스트 하우스로 발길을 돌렸습니다.
지금에야 드는 생각이지만 게스트하우스가 가격도 정말 싼편이고, 여러 사람들(한국인 등)과도 자연스레 어울릴 수 있어서
어떻게 보면 여행자들에겐 호텔보다 더 좋은점이 많습니다. 여행을 목적으로 왔다면 밖에서 보내는 시간이 대부분일텐데 궂이 호텔을
잡아서 방을 놀릴 필요없이 시설도 괜찮고 다른 여행자들과도 자연스레 어울릴 수 있는 게스트 하우스가 더 좋겠다는 생각이 들었습니다.
아무튼 저녁 10시 쯤 게스트하우스에 도착해서 급한대로 다음날 필요한 준비사항들에 대하여 늦게나마 하나씩 점검했습니다.
우선 명령어를 막아두었을 때를 대비해서 저수준 입출력으로 키 값을 읽고 쓰는 기능을 수행하는 쉘코드를 대충 만들어놓고,
익스플로잇의 프레임은 예전에 쓰던걸 쓰도록 하고, 마지막으로 몇 가지 빠진게 없나 더 살펴본 뒤에 그냥 바로 잤습니다.
현재 환경도 열악하고 호텔을 찾는다고 하루종일 고온다습의 기후속에서 이리저리 돌아다닌것 때문에 진이 빠져서..ㅎㅎ
셋째날 - 1 (HITB 대회 시작일)
HITB 컨퍼런스와 대회 장소는 Crown Plaza 호텔이었는데, 정작 몇층에서 하는지, 몇시에 하는지는 아무런 정보가 없었습니다.
그래서 이전에 참여했던 분들에게 이전 행사와 관련된 대강의 정보를 듣고, 한 10시면 되겠지.. 라고 생각하며 택시를 타고 그 시각 쯤 도착했습니다.
가서보니 오우, 저희팀이 가장 빨리 도착했고 대회는 11시 30분에서 12시 정도에 시작한다고 합니다.
나중에 여러가지를 생각해본 결과 추론한 사실이, 원래 시작시간은 10시인데 다들 늦게온 관계로 변경된 된 것 같습니다. 아마도..
대회 도중 물어봤더니 첫째날 둘째날 모두 오전 10시에 시작해서 오후 6시에 끝나는게 예정이었다고도 했구요.
HITB는 처음 참석한 행사이고 해서 저희 팀 자리를 살펴보고, 두명이서 방향을 못잡고 서있었더니 운영 테이블 같이 보이는 곳에서
한명이 다가와서는 선뜻 말을 건네어줍니다. 기본적인 대화.. '한국팀인가', '이번이 처음인가'와 같은것 등등..
그렇게 조금 이야기 한 뒤에 대회 시작 전 까지는 서버 컴퓨터를 만질 수 없다고 해서 HITB 행사장 전체를 구경하고 다녔습니다.
가장 먼저 행사 참여를 표시하기 위해서 팔찌 비슷한것을 받았는데, CTF 참가팀들은 회색, 컨퍼런스 참가자들은 빨간색 입니다.
대회 시작전부터 컨퍼런스의 몇몇 섹션이 진행중이기는 했지만, 입장은 제한되었습니다. 오직 빨강 팔찌만 가능한듯 보였습니다.
그리고 HITB는 데프콘과 같이 다른 특별한, 다양한 이벤트들은 잘 보이지 않았습니다. 거의 컨퍼런스와 CTF로 구성듯 합니다.
기다리는동안 같은 팀원인 친구가 배고픔을 호소하여 샌드위치와 음료를 사서 고온다습한 밖에서 우적우적 먹고있었습니다.
안에는 앉을때가 없어서..ㅠ.ㅠ
그렇게 기다리다보니 CLGT로 보이는 베트남 사람들이 보였고, 한두팀씩 오기 시작하여 몇몇 팀과는 미리 인사를 나누었습니다.
일본팀인 sutegoma2는 한번씩 본 사람들이었고, 미국팀인 Army Strong은 사람들이 참 유쾌했습니다.ㅎㅎ
대회가 끝나고 물어보니 실제 미국 군 내에서 보안 업무를 하고 있다고 했고,
워싱턴에서 말레이까지 20시간이나 걸리면서 날아왔다고 합니다. ㅎㅎ
한국 사람들이 데프콘 가는것보다 더 걸리더군요.. 비행기 안의서의 시간은 생각만해도 끔찍합니다. ㅋ
그렇게 인사를 하고나서 얼마 뒤, 운영측에서 대회의 기본적인 룰 등을 설명하기 위하여 각 팀의 리더들을 모았는데,
네, 제가 나갔습니다. 2명도 팀이라는 사실이 조금 웃기긴 하지만..ㅋㅋ
말레이인들의 발음은 역시 화려했습니다. 일부가 말하는건 알아듣기가 힘들었구요..ㅠ.ㅠ 물론, 무슨말인지 대충 다 파악하긴 했지만요.
아무튼, 미리 HITB 사이트( http://conference.hackinthebox.org/ )에서 읽었던 CTF 룰과, 리더들을 불러놓고 말했던 설명,
그리고 기존 데프콘 등에서 알고있던 CTF의 규칙들 까지. 머릿속에 모두 종합해서 대회를 풀어나갈 생각으로 자리에 앉아서 세팅을 시작했습니다.
더미허브를 차마 구하지 못해서 스위치로 라인을 공유했고, 스니핑은 각 팀마다 주어지는 문제 서버 컴퓨터에서 했습니다.
각각의 팀에 주어지는 문제 서버는, windows xp에 vmware를 깔아두고 그 위에 리눅스를 설치하는 방식으로 구성되었습니다.
운영체제는 젠투(Gentoo) 리눅스 이구요.
대회가 끝나고 생각해보니 문제는 리눅스 6개, 윈도우 6개, 패킷분석 1개, 트리비아 1개가 있었네요.
우선 리눅스 6문제가 먼저 공개되었는데, 한번씩 주욱 살펴보니 처음에는 어떻게 풀어나가야 할지 막막했습니다.
시작 직후라 약간의 평정심도 어긋나고 이것저것 적응할게 많아서 더 그랬던것 같기도 했지만..
하지만 마음을 가다듬고 다시 천천히 훑어보니 대체적으로 그렇게 어렵지는 않은것 같이 보였습니다.
대부분 시간만 약간 투자하면 풀만했고, 문제들이 그리 진부하지도 않은것 같아서 흥미롭기도 했구요.
이것저것 살펴보다가 비교적 쉬워보이는 5번 문제를 풀었는데, 다시보니 전체 팀들중에서 가장 처음으로 해결했더군요. ㅎㅎ
곧바로 breakthrough를 얻고, 지속적으로 키를 인증 서버에 등록하기 위한 스크립트를 짜다가 잘 안되서 좀 삽질을 했는데,
대회 중반에 물어보고 알게된 사실이, 각 문제의 키 값은 그렇게 자주 바뀌지 않는다고 합니다.
다시말해 키 값은 천천~히 바뀌고, 따라서 궂이 대회 시간중에 스크립트에 그렇게 열을 올릴 필요가 없었던..ㅠ.ㅠ
아무튼 중간에 잘 안되서 스크립트는 친구에게 맡겨두고 다시 문제를 살펴봤습니다.
그런데 대회 시작부터 스치던 생각이, 대회 시스템 상의 취약성과 설정 상의 취약성 두 가지였습니다.
CTF는 한국 특유의 대회 방식과는 다르게 DDoS와 같은 대회 참가와 운영 등을 위한 서비스 자체를 거부시켜버리는 공격이 아니라면
거의 모든 해킹 기술이 허용되기 때문에 실제적인 상황에서의 취약성 적용 가능여부도 고려해보는게 유리합니다.
우선 시스템 상의 취약성은 시작과 동시에 확인해보았고, 나머지 대회 운영 시 설정 상의 취약성이 남아있었는데,
대회가 시작할때도, 초기에 원격에서 ssh 접근을 위하여 root 패스워드를 묻고난 뒤에도, 문제를 풀고있는 도중에도
계속 멤돌앗던 생각이 패스워드 설정상의 문제점이었습니다. 우선 한 문제를 가장 먼저 풀었으니 어느정도 여유가 있고 해서
우리 팀 서버상의 /etc/shadow를 긁어서 john the ripper로 password crack을 돌려보았습니다.
그런 결과, 역시나, 루트를 비롯하여 모든 데몬의 패스워드까지 알아낼 수 있었고, 이렇게 찾아낸 패스워드를
다른 팀에 적용했다고 가정한 다음, 성공 혹은 실패했을 시의 여러가지 케이스들과 그에 반응할 수 있는 간략한 처리 절차들을
잠시동안 생각해본 뒤에, 랜덤하게 한팀을 선택해서 찾아낸 패스워드를 통하여 서버로 접속해 봤습니다.
결과는 성공!!, 일단 키 값을 비롯한 전체 팀의 모든 문제 데몬들을 긁어와서 고스란히 저장해 두었습니다.
물론, 데이터를 단순히 읽어들이는 작업 이외에는 다른팀들을 방해하는 어떠한 명령도 실행하지 않았구요(패스워드 변경조차).
이건 대회가 끝나고 운영진과 한 이야기인데, 어떤식으로 공략했는지 물어보길래 시도했던 방법을 알려주었고,
그쪽에서는 남들이 전혀 생각하지 못한 방법으로 대회를 풀어나갔다고 스마트하다며 추켜세워주었습니다.
즉, 제가 사용했던 방법을 숨기거나 하지는 않았고 CTF 운영진의 관점에서도 규칙을 어긴건 아니었습니다. :-)
아무튼 나중에 AllKill팀에서 저희가 방해를 한 줄 알고 약간의 오해를 했었는데, 저희는 그 팀의 이상 징후를 보거나 서버가 리붓될 당시에
AllKill팀이 드디어 접근 방식을 눈치채고 뭔가 shutdown도 하고 이것저것 하는가보구나.. 라고 생각했었습니다. ㅎㅎ
그 때 당시 AllKill팀이 하루동안 임시 숙소도 제공해주는 등 감사한 마음이 많았기 때문에 방해는 생각도 하지 않았구요.
오히려 저는 어느정도 순위상의 굳히기를 한 다음 다른 한국팀들을 도와줄 생각을 하고 있었습니다.
만약 방해를 했다면 다른 팀을.. :-)
다시 이야기로 돌아가서, 중반을 넘어설때 까지 아직 아무도 문제를 풀지 못하고 있었습니다.
저희는 조금만 분석하면 추가적인 몇몇 문제들이 그리 어렵지 않게 풀릴 것 같았지만,
다른 팀에 직접적으로 접근할 수 있다는 더 강한 사실이 있었기 때문에 대회 내내 그것과 관련된 작업에만 몰두해야 했습니다.
다음 편에서 첫째날의 두번째 이야기가 이어집니다.
buyers can be known as being a good gent's UGG Outlet watch Moreover these are considered as cheap uggs a mark of sophisticated style Many boots explore cheap ugg boots canada and so horrible by means of widespread style UGG Canada so as a number those individuals especially regarded as boycotting it within the system market place ugg boots outlet it can never be an excuse for the man to love it Where else can you enjoy such a cool and unique UGGs chemical reaction in complete safety