Top Coder RAW novel - Chapter (18)
탑 코더-18화(18/303)
# 18
갑질을 이기는 기술
────────────────서현석이 옆 자리에 앉아 있는 기술보안1팀 팀장 조민수 에게 물었다.
“우리는 왜 바나나 큐의 보안 취약점을 발견하지 못했을까?”
“중이 제 머리 못 깎는다는 말도 있지 않습니까.”
“보안 업체 불러서 점검도 한 번 받지 않았어?”
“위에서 비용을 줄이라는 말에 진짜 실력 있는 업체를 못 불렀습니다. 그저 통상적인 점검 수준 이었어요.”
서현석은 입맛이 씁쓸해져 앞에 놓여 있는 주스를 들이켰다.
“자네라면 저렇게 할 수 있겠나?”
조민수가 고개를 저었다.
“···저렇게 까지는 자신이 없습니다.”
“그건 나도 마찬 가지야. 저 정도 실력이면 시장에 이미 알려졌을 텐데 어디서 나타났지?”
“글쎄요······.”
“더구나 엔드로이드 앱 난독화 시켰을 때 다시 리버스 하려면 걸리는 시간을 1년으로 계산했었는데 그걸 4시간에 복호화 시켜 버린 것도 놀라울 따름이고······.”
“이걸 리버스 할 비용이면 이 앱의 가치를 뛰어넘는다고 생각했었죠.”
“그걸 4시간 만에 해냈다는 저 말 사실이겠지?”
조민수가 고개를 끄덕였다.
“못했으면 채팅 내용을 원문으로 복호화 하는 키를 찾을 수 없었을 테니까요.”
“이거 완전 탈탈 털렸어. 엔드로이드 앱 만이 아니라, PC 바나나톡을 포함한 서버에서부터 전반적인 서비스 전체 까지 보안 점검을 실시해야겠어. 만약 저 앱이나 코드가 시중에 풀리기라도 했어봐.”
조민수가 마른 침을 삼켰다.
“끔찍합니다.”
“우리는 1년이라 계산한 기간을 단 4시간 만에 해냈다······.”
“아마 레인보우 테이블을 이용한 것 같습니다.”
“해쉬 값을 미리 저장해 놓고 암호화 키를 찾아내는 방식?”
“네. 그러다 운이 좋아서 4시간 걸린 거라면 설명이 되지 않을까요?”
“다음 빌드 때는 AES-258로 난독 화를 해야겠어.”
“그러면 암호키의 길이가 늘어나 JVM에서 복호 화하는 시간이 오래 걸립니다. 자칫 앱의 성능이 떨어질 지도 모르는데요.”
“해커들에게 고객들의 채팅이 털리는 것 보다야 낫겠지.”
“아마 성능이 지금보다 30%이상 저하 될 겁니다.”
서현석이 입맛을 다시며 승호를 보았다.
“알았어. 그 건은 천천히 고민해 보지.”
“차라리 저 사람이 말하는 난독화 솔루션 도입을 검토해 보는 건 어떻습니까?”
“바나나후킹 앱에 적용했다는 솔루션?”
“네. 애들한테 맡겨 놨는데 아직도 복호화를 못하고 있어요.”
“기존 업체인 디 가드에서 나온 난독화 솔루션 가격이 앱 하나에 백 만원 쯤 했었나?”
“10개 이상 도입하면 80만원으로 줄여준다고 했습니다. 다만 앱 버전이 올라갈 때 마다 일정 비용을 지불해야 합니다. 엔드로이드 프레임워크 버전이 올라가면 첫 구매 비용을 다시 지불해야 하고요.”
서현석이 미간을 찌푸렸다.
“비용이 크진 않네.”
“현재 운용중인 앱이 26개. 전부 적용한다고 치면 2200만원 가량. 거기에 꾸준히 업데이트를 한다고 치면 고정비가 꽤나 나가는 겁니다.”
“기술 회사에서 코드 난독화도 제대로 못해서 타 회사의 솔루션울 도입해야 한다니. 그게 더 내 자존심을 건든단 말이지.”
조민수가 애써 변명을 늘어놓았다.
“보안은 또 다른 영역이니까요.”
“알았어. 회의 끝나고 다시 생각해 보자.”
둘의 대화가 끝나갈 때 쯤, 승호의 발표도 마무리를 향해 가고 있었다.
“다들 아시겠지만 이렇게 코드 난독 화를 풀고 나면 거의 끝났습니다. 암호화된 채팅을 다시 복호화 하는 키는 코드 상에서 찾으면 되니까요.”
잠시 숨을 고른 승호가 말을 이었다.
“마지막으로 느낀 점을 말씀 드리면 암호화 시스템에는 많은 공을 들이신 것 같은데 암호 키 관리 프로세스에서는 약간 보완하실 점이 있는 것 같습니다. 이상입니다.”
숭호의 말이 끝나자 서현석이 먼저 박수를 쳤다. 그러자 옆에 있던 다른 개발자들도 하나둘씩 손뼉을 마주쳤다.
“다른 질문 사항 있으시면 편하게 해주세요.”
이번에도 서현석이 가장 먼저 입을 열었다.
“바나나톡 앱의 코드를 복호 화 하는 키는 어떻게 찾아내신 겁니까? 혹시 레인보우 테이블을 사용하셨나요?”
드르륵.
드르르륵.
답변을 하려던 승호가 핸드폰울 집어 들었다.
“아, 잠시 만요.”
김신우 과장.
그에게서 온 전화였다.
“네. 네? 지금 바로 말씀이십니까?”
승호가 시계를 확인해 보았다. 어느덧 5시를 넘어가고 있었다.
“자문료를 지급해 주신다고요? 해결하면 1······.”
말을 하던 승호가 주변 눈치를 살폈다. 이내 빠르게 말을 이었다.
“아, 알겠습니다. 그렇게 하죠.”
전화를 끊은 승호가 서현석을 보며 말했다.
“맞습니다. 이미 해시키들이 저장되어 있는 레인보우 테이블을 이용했습니다. 거기에서 운이 좋아 빠르게, 키를 찾아낼 수 있었고요.”
사실이 아니었다. 핸드폰에 손을 대면 0과1의 세상이 보인다. 거기에서 키를 찾아낸 것이었다. 그러나 굳이 사실대로 말하지는 않았다.
“일단 취약점에 대한 설명은 이게 끝입니다. 질의응답은 다음에 다시 시간을 가지도록 해야 할 것 같습니다. 급한 일이 생겨서요.”
전화를 끊은 승호가 최기훈과 황호근을 따로 불러냈다.
“방금 선진에서 연락이 왔습니다. 자문료 천만 원. 해결하면 당장 1억을 지급하겠다고 하네요.”
“뭐, 뭐?”
“대단히 급박해 보였습니다. 무슨 큰일이 생긴 게 분명해 보였어요. 아마 본격적으로 해킹이 시작된 것 같습니다. 해킹 하는 놈들이 예고장에 있는 날짜를 지키면서 할리는 없을 테니까.”
최기훈이 미간을 찌푸리며 말했다.
“그래. 그럼 가보자. 이렇게 전화를 한 걸 보니 계약서도 준비해 뒀겠지. 사장님은 일단 여기 계약 마무리 하시고 회사로 돌아가세요. 선진에는 저희 둘이 다녀오겠습니다.
“아, 알았다.”
승호가 황호근을 보며 밝게 웃어보였다.
“이건 해결하면 바로 1억 지급해 준다고 합니다. 거기에 바나나톡에서 받을 돈, 선진과 코드 난독화 솔루션 계약까지 하게 되면 당분간 회사 운영 걱정은 하지 않으셔도 될 거예요. 그러니 걱정 말고 돌아가 계세요.”
오늘따라 승호의 모습이 그렇게 믿음직스러워 보일 수가 없었다.
***
다시 도착한 선진 데이터시스템 본사.
요 며칠 자주 드나들어서 인지 친근하게 느껴졌다. 익숙하게 안내데스크를 찾아가 방문 증을 신청하려는 순간.
누군가 손을 들었다.
“여기예요!”
익숙한 얼굴이었다. 겨우 이름을 기억해낸 승호가 말했다.
“아, 송 대리님 맞나요?”
“네. 일이 급해서 직접 나왔습니다. 사태가 심각해요. 전 사내에 보안 조치 레드가 떨어졌습니다.”
“레, 레드요?”
마음이 급한 송보나의 몸이 출입구 쪽으로 움직였다.
“여기 출입증부터 받으세요. 이건 데이터 센터까지 출입 할 수 있는 카드 입니다. 자세한건 이동하면서 설명 드릴게요.”
승호가 출입증을 받아들었다. 그런데 출입증이 하나 밖에 없었다.
“어, 제가 분명 2명이서 간다고 했는데요.”
송보나가 난처한 기색으로 말을 이었다.
“회사 기밀이 빠져나간 흔적이 발견됐어요. 꼭 필요한 인원에 대해서만 출입증이 발급됩니다. 이번만 양해 부탁드려요. 그리고 죄송한 이야기지만 옆에 분은 들어가셔도 크게 하실 일이 없잖아요?”
최기훈을 약간 무시하는 말투.
그게 승호의 신경을 거슬리게 만들었다.
“팀장님은 제가 일하는 데 꼭 필요한 분입니다. 그런 말은 큰 실례를 범하는 것 같습니다만.”
승호의 거절에 송보나의 목소리가 높아졌다.
“여기서 이렇게 실랑이 할 시간이 없어요. 지금 선진 전자의 기술이 빠져나갔을 지도 모릅니다. 국가핵심기술로 국정원의 보호를 받고 있는 내용이라고요!”
송보나의 외침에 최기훈이 나섰다.
“그, 그래. 승호야 너라도 빨리 들어 가봐. 진짜 큰일이 벌어진 것 같다. 나는 회사로 돌아가도 되고.”
그러나 승호는 양보하지 않았다.
“그러면 출입증을 한 장 더 발급해 오시면 해결 되겠군요.”
최기훈이 시큰 거리는 코끝을 슥 문질렀다. 승호의 고집이 싫지만은 않았다.
“진짜 이러실 거예요!”
“급한 건 제가 아닌 것 같은데, 절 돌려보내시던지. 함께 들여보내시던지. 선택하세요.”
승호는 그 말을 끝으로 입을 꾹 다물었다. 송보나는 어이가 없는지 콧김을 씩씩거리며 내뱉었다. 최기훈은 입맛만 다시며 승호를 보았다.
자신이 필요하다고 하는 저 말이.
가슴을 울컥 거리게 만들었다.
“알겠어요. 대신 무조건 해결해야 합니다. 승호씨 부르는 게 저희로써도 큰 모험을 감행한 거예요.”
승호는 살짝 고개를 끄덕였다.
‘그건 당신들 입장인 것 같습니다.’
굳이 말로 꺼내지는 않았다.
결국 출입증을 한 장 더 받았다. 그리고 5층에 위치한 데이터 센터에 도착했다. 센터 내부는 불 난 호떡집처럼 어수선 했다.
“다 차단해. 방화벽 내리라고!”
“유실된 데이터 확인했어? 뭐하는 거야! 데이터베이스 회사들 전부 연락해서 디버깅 부터 시작하란 말 못 들었어!”
“이 새끼들아! 그게 얼마짜린 줄 알아? 네 놈들 연봉 전부를 합쳐도 모자라다는 걸 알아야지!”
호통을 치는 사람이 있었고.
“방화벽 내립니다. 공지사항 완성되면 말해주세요. 거기로 포트 포워딩해서 다시 올리겠습니다.”
“아웃바운드 패킷은 확인 중에 있습니다. 로그가 워낙 많아서 확인하는데 시간이 걸릴 것 같습니다.”
“L4 스위치에서 서버 절체 시작 합니다. 각 서비스 담당자들 정상작동 여부 확인해 주세요.”
실제로 움직이는 사람들이 있었다.
그 혼란스러운 장소의 한편에 회의실이 마련되어 있었다. 송보나는 승호를 그 회의실로 안내했다. 회의실로 들어서자마자 사람들의 시선이 일제히 승호에게 쏠렸다. 앉아 있던 김신우 과장이 손을 흔들었다. 송보나가 살짝 고개를 끄덕였다. 정보보안 부서의 부장인 한서준이 최기훈을 보며 말했다.
“김 과장, 자네가 말한 사람이 저 분이야?”
“네. 맞습니다.”
“보안 쪽 전문가라고?”
최기훈이 손가락으로 자신을 가리켰다.
“저, 저요?”
“지금 장난 할 상황이 아닙니다.”
다행히 김신우가 상황 정리를 해주었다.
“저 분이 아니라 그 뒤에 따라 들어온 분입니다.”
한서준이 시선을 움직였다.
“한서준입니다. 현재 상황이 서로 앉아서 소개를 하고 대화를 나눌 만큼 한가하지 못한 점 양해 부탁드립니다.”
한서준은 말을 하면서도 자리에서 일어나지 않았다.
“시내 소프트 강승호입니다.”
“그러면 인사는 여기까지 하고 바로 일 이야기로 들어가도록 하죠. 송 대리 상황 설명은 해드렸어?”
“네. 올라오면서 간략하게 말 했습니다.”
“다시 한 번 말씀드리지만 상황이 대단히 위급합니다. 사건 개요 올려봐.”
한서준의 말에 전면에 설치된 스크린으로 PPT 한 장이 떠올랐다. 승호가 전면에 설치된 스크린으로 시선을 옮겼다.
-보안 조치 레드 현황.
-사건 발생 일시 : 03/11 16:21
-사건 내역 : DDos 이후 선진 전자 홈페이지 서버 관리자 권한 탈취. ‘갑’급 데이터 유출 흔적.
-조치 내역 : 서버 절체 및 교체. 계정 변경. 서버 로그 분석 중.
-특이사항 : 전 서버 악성코드 감염 여부 확인 중사태가 심각하게 흘러가고 있었다.