Top Coder RAW novel - Chapter (31)
탑 코더-31화(31/303)
# 31
더 게이트
────────────────포트사.
코드 제로 담당 에이든 베이커가 자리에 앉아 무언가에 열중하고 있었다. 지나가던 헤나 로페즈가 물었다.
“에이든, 뭘 그리 열심히 하고 있어?”
그러나 대답이 없었다. 익숙한 상황이었기에 헤나는 고개를 숙여 모니터를 보려 했다.
“윽, 이 자식 또 며칠이나 안 씻은 거야.”
머리에서 느껴지는 코를 톡 쏘는 구린내에 헤나는 급히 뒷걸음질 쳤다. 그 사이 에이든이 기지개를 켜며 자리에서 일어났다.
“휴우, 일단 하나 해결.”
“넌 좀 씻고 다니라고 몇 번을 말 하냐.”
“개취 존중.”
“뭐, 개취?”
“개인 취향.”
“그건 개취가 아니라 기본 매너야 매너.”
에이든이 귀찮다는 듯 귀를 막으며 중얼 거렸다.
“우우우우. 에에에에.”
헤나가 미간을 짚으며 눈을 감아 버렸다.
“···내가 왜 널 포트 추천 했는지. 아직도 과거의 내가 이해가 안 된다.”
“지금 바쁘니까. 잔소리는 나중에.”
“네가 뭐가 바빠. 코드 제로는 접속자 몇 명 되지도 않는데.”
“더 게이트 예선전 중이야. 한국에서 하는 해킹 방어 대회인데 문제들이 꽤 재밌네.”
“더 게이트? 체크포인트가 아니라?”
에이든이 고개를 끄덕이며 다시 키보드 위에 손을 얹었다.
“체크포인트 급은 아닌데. 그래도 세계적인 대회라고 하더라. 여기 본선 출전하면 비행기 표에 숙식까지 제공해 준데.”
“내 말은 체크포인트도 시시해서 안 나간다는 놈이 여긴 왜 나가냐고.”
“공짜로 비행기 표에 숙식까지 준다잖아. 당연히 출전 해야지.”
에이든은 말을 하면서도 손가락을 움직였다. 모니터에 띄워진 창이 빠른 속도로 스왑 되며 움직였다.
“그래서 공짜로 표에 숙식을 제공해 줘서 간다?”
“겸사겸사. 나보다 빨리 코드 제로 1등급을 달성한 놈도 만나고.”
헤나의 두 눈이 휘둥그레 졌다.
“···뭐? 너보다 빨리 1등급을 달성했다고?”
에이든이 고개를 끄덕였다.
“아주 재밌는 놈이야. 공짜로 한국 가서 더 게이트 우승하고, ‘zerone’ 그 놈도 만나고.”
“약속은 정한거야?”
“메일은 보내 놨지.”
헤나가 체념한 표정으로 고개를 저었다.
“설마 저번처럼 또 그런 건 아니지?”
“그게 뭐가 어때서.”
“네가 뭐라고? 네가 만나고 싶다고 하면 다 만나줘야 되냐?”
말을 하던 에이든이 입을 닫고 무섭게 모니터를 노려보았다. 갑작스레 생긴 정적에 헤나가 물었다.
“장난 친 건데 삐진 거 아니지?”
“제로원 그 놈이 나타났어.”
“으, 응?”
“코드 제로에서 1등급 했다는 그 놈이 더 게이트에도 출전했다고.”
헤나의 시선이 에이든의 손가락 끝을 향했다.
-예선전 실시간 순위.
-순위 : 5.
-팀명 : zerone.
-점수 : 1030.
에이든이 헤나를 보며 말했다.
“헤나 너도 우리 팀에 명단 올려놨으니까. 어서 자리에 앉아. 이 놈들에게 질 수는 없잖아.”
“···뭐?”
“이왕 시작한 거 1등해야지. 너 체크포인트 한 번 나가보고 싶다고 했잖아. 내가 같이 나가 줄 테니까. 어서 협력해.”
막무가내인 에이든의 말에 헤나가 고개를 저었다. 항상 이런 식이었다.
“아이고, 알겠습니다. 에이든 님.”
“제로원 이번에는 절대지지 않는다!”
에이든이 전의를 불태우며 모니터를 노려보았다.
***
좀비.
직원들은 승호의 가르침을 받는 5명을 좀비라고 불렀다. 이지(理智)를 상실한 채 그저 본능에 따라 움직이는 존재.
그 본능이 인간의 원초적인 욕구가 아니라 오직.
승호의 지시라는 것이 달랐다.
“zombie.exe 언패킹 어디까지 됐어요?”
“방금 완료하고, IDA로 열어 작동 방식 추적 중입니다.”
“얼마나 걸릴 것 같아요?”
“그게 어셈블리는 아직 익숙치가 않아서······.”
그 말이 끝나자마자 승호가 자리에서 일어나 옆 자리로 건너 왔다.
MOV BYTE PTR DS:[EAX-0x05],CL
MOV ECX,0x1A ROL ECX,0x02
MOV BYTE PTR DS:[EAX-4],CL
ADD BYTE PTR DS:[EAX-3],0x41
POP EAX
······.
화면에는 IDA로 디스어셈블리화된 내용이 가득했다.
어셈블리.
곧 가장 저수준의 기계어.
CPU가 이해할 수 있는 코드.
승호는 빠르게 해당 코드를 해석해 나갔다.
“코드를 보면 2라인에서 LOOP 루틴을 돌면서, 트래시 값을 생성. 임의의 패킷을 만들어 브로드 캐스팅하고 있어요. 그 이후에 공격대상 정보를 생성하고 있고요.”
승호가 빠르게 마우스의 스크롤을 밑으로 내렸다.
그러다 탁.
왼쪽 버튼을 눌러 코드의 한 부분을 드래그 했다.
“바로 여기.”
POP XXX01X
“이게 팝 되면 다음 함수가 실행되면서 하드가 마비 될 겁니다. 어서 답 입력하고, 다음 문제 확인해보세요.”
그 말을 끝으로 승호가 다시 자신의 자리로 몸을 옮겼다. 더 게이트는 국내, 외 실력자들이 참가하는 세계적인 해킹 대회.
생각보다 실력자들이 많았다. 승호는 문제를 풀어 보니 생각보다 간단치 않다는 사실을 깨달았다.
‘어쩌면··· 우승하지 못 할지도······.’
본선은 예선 10위까지 진출 할 수 있었다. 그 안에는 무난히 들것 같았다.
그러나.
본선에서 1등을 한다는 건 생각보다 어려울 수도 있겠다는 생각이 머릿속을 어지럽혔다.
-예선전 실시간 순위.
-순위 : 1.
-팀명 : FFF.
-점수 : 1530.
FFF 라는 팀이 압도적인 점수로 1위를 기록 중이었다. 자신의 팀인 zerone은 현재 5위.
최선을 다하고 있었지만 순위가 쉽게 올라가지 않았다.
“부장님, 정답 입력 끝났습니다.”
-순위 : 5.
-팀명 : zerone.
-점수 : 1280.
점수는 올라갔지만, 순위는 그대로였다.
***
여름의 중반.
코엑스 다이아몬드 홀이 세계 각국에서 몰려온 사람들로 북적거렸다.
미국.
중국.
일본.
러시아.
영국 등등.
그 중 에이든이 팀장으로 있는 FFF팀도 있었다. 금발이 인상 적인 헤나 로페즈가 쉴 새 없이 주변을 두리번거리는 에이든에게 물었다.
“에이든 어딜 그렇게 두리번거리는 거야.”
“꼭 찾아야 하는 사람이 있어.”
“누구?”
“제로원.”
“아, 그 1등급. 그런데 그 사람이 이번에 여기 진출한 사람과 동일 인물이라는 보장이 없잖아.”
동료 브래들리가 어깨를 으쓱거렸다.
“에이든은 확신하고 있더라.”
“어휴, 저 꼴통.”
“만나서 꺾어 버리겠다고 단단히 벼르고 있던데.”
“또 사고치는 건 아닌지 몰라.”
헤나가 혀를 차며 에이든을 바라보았다.
대회는 오전 10시에 시작해 익일 아침 10시까지.
24시간 동안 진행된다.
지금 시간이 9시 30분.
남은 30분 동안 승호는 자리에 앉아 몸을 움직이며 손가락을 풀고 있었다. 그러다 낯선 외국인을 마주해야 했다.
“제로원?”
그는 다짜고짜 자신이 인터넷상에서 사용하는 닉네임을 들먹였다. 승호가 멀뚱히 남자를 쳐다보았다. 갈색 곱슬머리가 마치 포토북의 CEO를 연상케 했다.
“너 제로원 맞지?”
간단한 영어.
승호도 충분히 알아들을 수 있는 수준이었다.
“누구시죠?”
“에이든, 에이든 베이커.”
처음 듣는 이름이었다. 남자에게서는 코를 간질이는 쉰내마저 흘러나왔다. 외국인에게 암내가 많다는 소문은 낭설이 아니었다.
“포트의 코드 제로에서 1등급 받은 아이디 zerone. 바로 너지?”
에이든은 확신에 차 물었다. 주변을 둘러보는 순간 zerone이라는 팀명이 눈에 확 들어왔다. 수 분 동안 그 팀 근처에서 인물들의 면면을 살폈다. 손을 풀며 코딩 하는 그 모습에서 한 번에 알아 볼 수 있었다.
제로원 그가 확실하다.
단지 아이디 하나가 같았지만 직감이 그렇게 말하고 있었다. 승호가 얼떨떨한 표정으로 에이든을 보았다. 에이든이 엄지를 들었다. 그리고 천천히 아래로 내리며 말했다.
“오늘은 그렇게 안 될 거야.”
“···네?”
“내가 이길 거라고.”
무슨 말을 하는지 도통 이해할 수 가 없었다.
“물론 코드 제로에서의 패배는 인정 하지. 난 패배를 인정하는 용기를 가졌으니까. 후후후.”
순간 승호의 팔뚝에 오돌토돌 닭살이 돋아났다. 눈동자는 황망히 허공을 쫓았다. 이 자리에 있는 걸 보니 미친 사람 같지는 않았지만.
분명 정상이 아님은 확실했다.
“그러세요.”
“그러면 끝나고 다시 보자.”
말을 마친 남자가 자리로 돌아갔다. 황시내가 목소리를 낮추며 물었다.
“아는 사람이에요?”
“처음 봅니다.”
“그런데 저쪽은 아는 것 같던데.”
“아니에요.”
“저 사람 FFF팀 인 것 같은데. FFF팀이면 예선전 1등으로 통과한 팀이잖아요. 우릴 견제하러 온건 아닐까요?”
“그럴 수도··· 있겠네요.”
“그리고 승호··· 아니 강 부장님. 영어 실력이 원래 그렇게 좋았어요? 아까 보니까 발음이 원어민 못지않던데.”
이것도 사고 이후에 생긴 변화였다. 모든 프로그래밍 언어는 기본적으로 영어를 기반으로 만들어졌다. 그래서 인지 영어 실력도 과거와는 달랐다. 승호는 대충 얼버무렸다.
“네··· 뭐. 열심히 하다 보니까.”
황시내가 눈을 반짝이며 승호를 보았다.
“나중에 영어 과외도 해주면 안 돼요?”
승호가 표정을 굳히며 말했다.
“일단 대회 집중부터.”
“쩝······.”
황시내가 입맛을 다시며 입을 닫았다. 승호도 다시 모니터로 시선을 돌렸다. 그러나 방금 전 만났던 남자 생각이 머릿속에서 떠나가지 않았다.
‘내가 코드 제로에서 1등급인건 어떻게 알았지? 더구나 아이디가 제로원인걸 외국인이 알 수가 있나······.’
고심해 보았지만 답은 나오지 않았다.
***
본선 진행 방식은 세계적으로 유명한 CTF(Capture The Flag) 방식이었다.
– 각 라운드가 진행되는 단위는 네 시간이다.
– 매 라운드 마다 중앙 서버는 각 팀의 서버에 취약점을 가진 프로그램과 특정 파일을 설치한다.
– 공격 : 각 라운드 별 설치되는 프로그램이 가지는 취약점을 분석해 상대 서버의 특정 파일 탈취. 성공시 공격측 +1, 방어측 -1- 방어 : 취약점을 막을 수 있는 패치를 만들어 적용. 패치는 각 라운드 별 오직 한 번 적용 가능.
※주의 사항 : 적용된 패치는 다음 라운드에서 전체 공개되어 타 팀에서 다운로드 받을 수 있습니다.
중요 진행 방식을 요약하면 위와 같았다. 이미 수회씩 읽어 봤기에 승호의 머릿속에 각인되어 있었다. 사회자의 간략한 설명이 끝나고, 전면에 설치 된 거대한 스크린에 각 팀의 이름이 나타났다.
-FFF팀
[email protected]@-enter
-zerone
-split_Dev
······.
“각 팀의 점수에 변동이 있을 때 마다 여기 설치된 스크린에 나타나게 될 겁니다. 그럼 각 팀의 건승을 기원합니다.”
사회자의 말이 끝나고, 대회가 시작되었다.
원지훈이 승호에게 물었다. 말투에는 긴장감이 가득했다.
“강 부장님. 저희는 뭐부터 하면 될까요?”
“일단 첫 번째 라운드는 참관한다 생각하고, 서버 로그를 살피면서 대기해주세요.”
승호의 말에 다른 팀원들도 그저 의미 없는 마우스 질을 하며 상황을 살피는 데 주력했다.
고작 한 주.
그 사이에 전 세계에서 날아온 내로라하는 해커들과 어깨를 나란히 한다는 건 어불성설이었다.
로그를 살펴보던 황시내가 급히 승호를 찾았다.
“저희 서버에 이상 패킷이 들어오고 있어요. 부장님이 확인해 보셔야 겠는 데요.”
시작 하자마자 공격이라니.
확실히 급이 다른 실력이었다. 이대로 막는 것에 집중해야 하나?
시간을 들인다면 막을 수는 있을 것 같았다. 그러나 막기만 해서는 절대 우승 할 수 없다.
“괜찮습니다. 그대로 두세요. 우리는 패치를 만드는데 집중합니다.”
황시내가 대회 룰을 상기 시켰다.
“패치를 만들어도 지킬 파일이 없으면 게임은 끝나는 건데······.”
승호도 알고 있었다. 계속 파일을 빼앗기면 결국 마이너스 점수만 잔뜩 받은 채로 대회가 끝날지도 모른다. 그러나 상황이 여의치가 않았다.
자신이 골문을 지키면 누군가는 공격을 나서야 한다.
자신이 공격을 나서면 누군가는 골문을 지켜줘야 한다.
혼자서 공격과 방어를 모두 수행 할 수는 없었다.
그 점을 알기에 승호는 단 한 번의 패치로 승부를 볼 생각이었다. 황시내는 그런 승호의 생각은 모른 채 걱정 가득한 눈으로 승호를 보았다.
“너무 무리하지는 마세요. 우승 못해도 괜찮아요. 저희는 여기 까지 온 것만으로도 만족합니다.”
승호는 굳이 대답하지 않은 채 모니터를 노려보았다.
‘저는 참가한 것만으로는 만족 할 수 없습니다.’