Top Coder RAW novel - Chapter (20)
탑 코더-20화(20/303)
# 20
갑질을 이기는 기술
────────────────위이잉.
위이이이잉.
수백대의 서버가 기계음을 토하는 서버 실.
한 남자가 불안한 눈빛으로 주변을 살폈다.
“개새끼들 어디 한 번 x되봐라.”
관리자 권한으로 서버에 접속한 남자는 키보드 위에 손을 올리고, 명령어를 날렸다.
bash∼root#top
서버의 자원 이용 상황을 볼 수 있는 명령어였다. cpu, memory 같은 자원들의 사용률이 모니터에 나타났다.
“내가 이 서버 실에서만 몇 년을 근무 했는데, 정규직 전환도 안 시켜 주고 그냥 나가라? 그렇게는 못하지.”
남자는 불안한 눈빛으로 연신 주변을 살폈다. 그러면서도 손목에 찬 시계를 확인하는 걸 잊지 않았다.
18:56:47.
18:56:48.
시간을 확인한 남자는 top 명령어를 종료시켰다. 그리고 시간이 58분이 되었을 때.
다시 top 명령어를 날렸다.
그러자 방금 전 화면과는 사뭇 다른 반응이 모니터에 나타났다. 자원 사용률이 나오는 것이 아니라 검은 바탕으로 변해버렸다. 남자가 화면을 보며 중얼거렸다.
“얼마 안 남았다······.”
깜박.
깜박.
검은색 바탕에 하얀 커서가 깜박거렸다. 다른 이가 본다면 서버가 멈췄다고 의심 할 수도 있는 상황.
남자는 손톱을 물어뜯으며 초조히 모니터를 지켜보았다.
깜박.
깜박.
그렇게 커서가 수십 회 더 깜박이고.
화면이 다시 원래대로 돌아왔다.
“끝났다.”
남자는 재빨리 모니터를 끄고, 몸을 돌렸다. 그때 가녀린 여자 손이 남자의 팔목을 움켜잡았다.
“라온정보통신 장인호씨?
놀란 남자가 두 눈을 부릅떴다.
“방금 무슨 짓을 하신 겁니까?”
잠시 당황하던 장인호는 이내 목소리를 높였다.
“무, 무슨 짓이라니요. 서버 상태 확인해 본겁니다.”
옆에 있던 승호가 지긋이 장인호를 노려보았다.
“그게 아닐 텐데.”
“그, 그게 아니면 뭐. 제가 뭐, 뭘 합니까. 말이 되는 소리를 해야지.”
송보나가 차갑게 쏘아붙였다.
“잠시 비켜보세요.”
송보나가 서버와 연결된 키보드에 손을 얹었다.
타닥.
타다닥.
이내 명령어를 완성하고 엔터키를 눌렀다.
bash∼root#history
명령어를 치자 서버에서 이전에 실행되었던 명령어들이 주르륵 화면에 나타났다.
18:56:11 cd /home/sunjin
18:56:25 pwd.
18:56:31 top.
18:57:58 top.
18:58:01 top.
가장 최근에 실행된 명령어는 top.
시스템의 자원을 확인하는 명령어였다. 당황한 송보나가 중얼 거렸다.
“이, 이럴 리가 없는데······.”
장인호가 의기양양해 하며 목청을 높였다.
“그것 보세요. 제가 뭐라고 했습니까. 이거 완전 생사람 잡네. 안 그래도 x 같아서 때려 치려고 했는데 시발.”
회사에 쌓인 게 많은 듯 거친 말을 서슴지 않았다.
“그, 그럼 시스템 로그를 한 번.”
장인호의 거친 반응에 송보나가 살짝 손을 떨었다.
bash∼root#cd /var/loh
not found directory.
결국 오타를 내고, 명령어 실행에 실패 했다. 그 모습을 뒤에서 지켜보던 승호가 나섰다.
“비켜보세요. 제가 확인해 볼 테니까.”
장인호가 승호를 보며 으르렁 거렸다.
“지금 뭐하자는 겁니까? 혹시 지금 절 의심하는 겁니까? 시발 몇 년 동안 개고생하며 일했더니 사람을 이따위로 취급해. 당장 명예훼손으로 고발 할 테니까. 고소장 받을 준비나 해.”
잔뜩 성난 표정으로 승호를 위협했다. 송보나는 초조한 눈빛으로 승호를 보았다. 승호는 모니터에서 시선을 떼지 않은 채 말했다.
“그건 그쪽이 준비해야 할 것 같습니다.”
이내 빠르게 키보드를 두드렸다. 이전 명령어를 보는 건 이미 송보나가 확인했다. 승호는 시스템 로그를 위주로 살폈다. 자신이 방화벽에서 트래픽을 살폈을 때는 분명 이 서버에서 데이터가 흘러나갔다. 장인호는 승호의 정신을 분산시키기 위해 한층 더 목청을 높였다.
“뭐, 그쪽이 준비해? 이 새끼가 보자보자 하니까 못하는 말이 없네.”
말을 하던 장인호가 대뜸 승호의 어깨에 손을 올렸다.
“안 그래도 너 오늘 잘 걸렸다. 따라 나와. 내가 아주 끝장을 볼 라니까.”
승호는 동요하지 않고, 모니터에 시선을 집중했다.
18:57:48.101Z START RequestId: 90c2d110-f65a-49e9-94ba-b89a135e0130 Version: $LATEST
18:57:48.161Z
90c2d110-f65a-49e9-94ba-b89a135e0130{“errorMessage”
:
“Invalid time value”
,
“errorType”
:
“RangeError”
,
“stackTrace”
:[“Date.toISOString ()”
,
“createValue (/var/task/index.js:95:58)”
,
“/var/task/index.js:29:36”
,
“Array.forEach ()”
,
“exports.handler (/var/task/index.js:18:19)”]}18:58:01.121Z Unpacking avd221d-ck12331k1m Starting······.
18:58:03.121Z Unpacking avd221d-ck12331k1m Complete.
모니터를 보던 승호가 침착하게 로그의 한 지점을 가리켰다.
“여기 18시 58분에 이상 패키지가 설치 됐습니다. 공교롭게도 장인호씨가 서버 앞에 있던 시간과 동일하고요. 더군다나 서버에 프로그램을 설치하는 건 관리자의 승인이 필요한 일인데. 승인 받으셨습니까?”
승호의 반격에 장인호의 얼굴이 벌겋게 달아올랐다.
“지, 지금 무슨 말을 하는······.”
“avd221d-ck12331k1m. 이 패키지가 설치된 시간이 장인호씨가 top 명령어를 친 시간과 동일합니다. 아니면 증거를 더 찾아볼까요? 이 패키지를 다운 받아서 살펴보면 바로 답이 나올 것 같은데.”
장인호의 눈빛에 불안감이 스며 들었다. 눈동자가 사정없이 떨리고 있었다.
“아, 아니 그건 내가 아니라.”
그 사이 기운을 차린 송보나가 핸드폰을 들어 전화를 걸었다.
“여기 102번 랙 쪽인데 빨리 보안 요원 오라고 하세요.”
장인호가 털썩 자리에 주저앉았다. 승호는 다시 모니터로 시선을 돌렸다. 전화를 마친 송보나가 승호에게 말했다.
“보안요원 요청했어요. 이제 저희도 그만 돌아가요.”
“아마 이 사람도 누군가가 시키는 대로 했을 겁니다.”
“그러니까, 이제부터 어떻게 된 경위인지 알아봐야죠.”
“굳이 이 사람에게 물어 볼 것 있나요. 거짓말을 하면 또 어쩌고요.”
“그러면 지금 방법이 있다는 말인가요?”
“모든 통신은 기본적으로 요청과 응답으로 이루어집니다. 디도스 공격의 경우에는 의도적으로 응답을 받지 않도록 합니다.”
“그 정도는 저도 알고 있어요. 서버는 응답을 대기 할 테고, 대기하는 만큼 서버 쪽의 부하가 더 커질 테니까요.”
“그런데 이 경우는 다릅니다. 상대방이 응답을 받을 수 있는 경로가 생긴 겁니다. 어쩌면 주범이라 할 수 있는 놈에게 우리의 메시지를 보낼 수도, 잘하면 그의 위치를 찾아 낼 수도 있다는 말이 되겠군요.”
열심히 키보드를 두드리던 승호가 두 손을 멈추었다. 송보나가 잔뜩 흥분해 소리쳤다.
“그러면 당장 잡아야지 뭐하고 있는 거예요!”
“무엇을 위해서.”
“네?”
“선진 데이터시스템은 지금까지 자사의 이익을 위해 시내 소프트를 이용해 왔습니다. 검색 솔루션을 납품하는 과정에서도, 보안 솔루션을 납품하는 과정에서도.”
주저앉아 있던 장인호가 자포자기 한 심정으로 중얼 거렸다.
“이야, 잘 아네. 너도 지금 이라도 손 떼는 게 좋을 거다. ‘갑 질’하는 놈들은 지들이 하는 행동이 ‘갑 질’이라는 인식도 없거든. 단물만 빼 먹히고, 팽 당하는 거야. 결국 내 꼴 난다.”
승호는 신경 쓰지 않고 말을 이어갔다.
“송 대리님이 결정하시기 힘들면 윗분들에게 연락해 보세요. 디도스 공격자까지 잡으면 무엇을 줄 수 있는지.”
당황한 송보나가 어찌할 바를 몰라했다. 승호가 빠르게 말을 이었다.
“최대한 빨리 가져오셔야 할 겁니다.”
승호가 몸을 돌렸다. 서버와 연결된 모니터에는 700이라는 숫자가 표시 되어 있었다.
“이건 상대방 서버가 응답을 기다리는 타임아웃 시간입니다.”
700.
699.
698.
“즉 이 시간이 끝나면 상대 서버는 자동으로 연결을 끊어버린 다는 뜻이죠. 그렇게 되면 연결은 끊어지고, 제가 보내는 응답도 받을 수 없게 됩니다.”
690.
689.
688
“그 상황이 되면 저도 더 이상 할 수 있는 건 없습니다. 그 전에 ‘무엇’을 제게 가져오세요. 그러면 메일로만 받았던 그 놈의 정체를 알 수 있을 테니까요.”