Top Coder RAW novel - Chapter (19)
탑 코더-19화(19/303)
# 19
갑질을 이기는 기술
────────────────
“보시다시피 공격자는 DDoS 공격으로 시선을 돌린 후 선진 전자 홈페이지 서버의 관리자 권한을 탈취 한 상태입니다. 다음 화면 띄워봐.”
그러자 화면에 전체 서버의 모니터링 결과가 나타났다. 몇 번의 클릭을 거치자 서버에서 만들어지는 로그들을 한 눈에 확인 할 수 있었다.
“로그는 이 화면에서 확인하시면 됩니다. 더 궁금하게 있으시면 송 대리에게 물어보시면 됩니다.”
한서준이 잠시 숨을 고르고 말을 이었다.
특히 선진의 핵심 기술이 유출된 정황이 의심되고 있어 현상금까지 걸고 여러 외부 전문가 분들을 초빙한 상황입니다. 만약 현재 이런 일을 벌이고 있는 주범을 잡아주신다면 1억을 결정적인 단서만 제공해 주셔도 오 천 만원을 드리겠습니다. 제가 드릴 말씀은 여기까지입니다. 송 대리, 자리로 안내해 드려. 궁금하신 점이 있으면 송 대리가 다시 설명해 드릴 겁니다.”
승호는 회의실 한편에 자리를 배정 받았다. 이미 여러 사람들이 각자의 자리에 앉아 열심히 무언가를 하고 있었다.
“로그를 확인 할 수 있는 접속 계정은 문자로 보내 드렸습니다. 이 자리에서 내부 서버로 접속. 특이사항이 발견 되면 제게 말씀 해주시면 됩니다.”
“알겠습니다.”
그 말을 끝으로 송보나가 자리로 돌아갔다. 선진에서 제공해준 건 운용 서버에 접속 할 수 있는 권한 달랑 하나.
당황한 최기훈이 물었다.
“그, 급하긴 한가보네. 접속 계정 하나 알려주고, 알아서 하라는 식이니. 일을 이런 식으로 맡기는 경우도 있나······.”
“1억을 줄 테니, 나머지는 알아서 하라 그거겠죠. 어차피 상관 없습니다. 더 이상 궁금한 점 도 없으니.”
“도대체 어떻게 하려고? 나는 어떻게 시작해야 할지 전혀 감이 안 온다.”
“먼저 공격이 들어오는 최 앞단인 방화벽에 생기는 로그부터 살펴봐야죠.”
최기훈이 눈을 동그랗게 뜨고 승호를 보았다.
“너 방화벽도 다룰 줄 알아?”
“평소 조금씩 공부해 왔습니다.”
“야 네가 지금 말하는 게 평소 조금씩 공부해서 될 수준이냐? 그거 아니잖아. 방화벽 하나만 해도 공부하려면 양이 상당하다는 것쯤은 나도 알아.”
승호가 머리를 긁적거렸다.
“사고의 영향인가 봐요. 예전에 봤던 책의 내용들이 머릿속에 떠다니고, 그 걸 어떻게 사용하면 되는지가 그려지니까요. 운이 좋았죠.”
최기훈은 눈을 동그랗게 뜨고 말을 잇지 못했다.
“그러니까 걱정하지 마세요. 이번 문제도 잘 해결 될 겁니다.”
“무, 물론 나야 널 믿지.”
“모든 범죄는 흔적을 남긴다. 프로그래밍 세상에서 흔적은 곧 로그. 로그를 뒤져 보면 흔적을 찾아 낼 수 있을 테고, 범죄를 저지른 그 놈을 잡아 낼 수 있을 거예요. 오늘 안에 1억 받아서 돌아가야죠. 잠은 집에서 자야 하니까.”
***
회의실의 분위기는 삭막하다 못해, 칼날보다 날카로웠다.
“다행히 현재까지 데이터 유실이 직접적으로 확인 되지는 않았습니다.”
“가능성은?”
“어플리케이션 서버가, DBMS접속 계정 정보를 가지고 있긴 합니다. 개발사에 확인해 본 바로는 계정 정보가 코드에 암호화 되지 않은 채로 적혀있어서······.”
한서준이 차갑게 중얼거렸다.
“계정 비밀번호는 암호화 되어 있는 거 아니었어?”
“그게······.”
김신우는 제대로 답변을 하지 못했다. 한서준의 말투가 한층 더 날카로워 졌다.
“홈페이지에 사용된 언어가 뭔데?”
“PHP 입니다.”
“그거 스크립트 언어라 까보면 그대로 보이잖아. 그걸 난독화도 안하고 그대로 올렸다고?”
김신우의 목소리가 잦아들었다.
“네······.”
한서준이 깊은 한숨을 내쉬었다.
“그래서 디비 계정은 삭제했어?”
“네. DBA에게 계정 삭제 조치 완료했다는 연락 받았습니다.”
“중요 정보 분리는?”
“그건··· 데이터 마이그레이션을 진행해야 하는 일이라 상당 시일이 소요 됩니다.”
“아직 진행 못했다는 말을 뭘 그렇게 길게 해.”
한서준의 일침에 김신우가 마른침을 삼켰다. 김신우가 다시 변명 거리를 꺼내려는 찰나.
위이잉.
위이잉.
데이터 센터 내부에 설치된 사이렌이 요란한 소리를 토했다. 한서준이 한숨을 푹 내쉬었다.
“또 야?”
디도스 공격이 다시 시작 되었다는 모니터링 시스템의 경고였다.
디도스 공격이 다시 시작 되자 데이터 센터의 소란은 가중 되었다.
“트래픽이 얼마나 되?”
“기가 단위를 넘었습니다. 이대로는 방화벽이 무력화 됩니다.”
방화벽.
네트워크 장비의 일종으로 우리가 흔히 사용하는 공유기의 최고급 버전과 비슷했다. 우리가 접속하는 대부분의 웹 사이트의 최 앞단에 방화벽이라는 장비가 존재한다.
“그러면 뒤에 서버들은 다 털린다. 차라리 전체 트래픽 차단해 버려.”
“그러면 서비스가 정지 됩니다.”
“지금 서비스 죽는 게 문제냐? 또 악성코드 전염되는 꼴 보고 싶어서 그래?”
여기저기서 네트워크 담당자들이 갑론을박을 벌였다.
“홈페이지 1번 서버 죽었습니다.”
“2번 서버도 위태, 위태 합니다.”
“서비스 정지 까지는 시간문제입니다.”
“다른 서비스들은? 선진 전자 쇼핑몰은 문제없어?”
“아직은 문제없습니다.”
“이 새끼들은 좀비 PC를 몇 대나 만든 거야. 기가급 트래픽을 이렇게 오래 쏘는 게 말이나 돼!”
“KISA 쪽으로 트래픽 돌릴까요? 더 이상 저희가 감당하다가는 방화벽 터집니다.”
KISA(인터넷진흥원).
우리나라 정보보호 관련 대부분의 업무지원을 하고 있는 기관이었다. 기업의 보안사고에 대한 지원도 하고 있었다.
“아, 진짜 어떤 새끼가 이런 짓을 벌이는 거야.”
담당자의 한숨이 깊어졌다.
같은 시각.
승호는 자리에 앉아 방화벽이 만들어내는 로그를 살피고 있었다.
‘이상하단 말이야. 로그 상에는 아무런 특이점을 찾을 수가 없는데.’
Event Lisener 181.111.33x.xxx protocol : 17 xxx.111.x11Event Lisener 181.111.33x.xxx protocol : 17 xxx.111.x11Event Lisener 181.111.33x.xxx protocol : 17 xxx.111.x11Event Lisener 181.111.33x.xxx protocol : 17 xxx.111.x11로그의 내용은 차례대로 방화벽에 걸려있는 규칙과 출발지 주소, 프로토콜, 그리고 목적지 주소를 가리키고 있었다. 로그 상으로 확인했을 때는 일반 디도스 공격과 별반 다르지 않았다.
‘아무리 봐도 악성코드를 심을 만한 트래픽은 보이질 않아.’
이해되지 않는 현상에 승호의 미간이 찌푸려졌다. 옆에 있던 최기훈이 물었다.
“잘 안 돼?”
“방화벽 로그 상에는 큰 문제가 없어요. 이상한 점은 데이터가 유출 되려면 인 바운드 트래픽에 악성코드가 심어져 들어오고, 아웃 바운드에 데이터가 나가야 하는데······.”
“악성코드가 들어온 흔적이 보이지 않는다?”
“네. 방화벽에서 부터 루트 권한을 빼앗겼다는 홈페이지 서버 로그까지 전부 훑어 봤는데, 로그 상에는 특별한 흔적이 보이지 않아요. 이럴 리가 없는데······.”
“엄청난 실력자면 그럴 수도 있지 않을까.”
최기훈의 당연한 의문에 승호가 고개를 갸웃거렸다.
“어떤 실력자라도 아무 흔적도 안 남길 수는 없어요. 새하얀 눈길에 아무런 발자국도 남기지 않고 100m를 이동하라고 하면 하실 수 있겠어요?”
“없지.”
“사실 드론에 매달려서 가면됩니다.”
최기훈이 두 눈을 동그랗게 뜨며 승호를 보았다.
“농담이지?”
“그런데 사람이 매달릴 수 있을 정도의 드론이라면 비용이 엄청날 겁니다. 효율이 안 나오는 거죠.”
“선진 전자의 핵심기술이라면 그럴 가능성도 있지 않을까? 가치가 엄청날 거잖아. 반도체, 핸드폰, 디스플레이. 수백억은 넘을 것 같은데.”
“그래서 더 문제예요. 상대가 생각보다 실력이 있거나, 최고사향의 해킹 장비를 사용하고 있다면··· 일이 생각보다 복잡해지니까요.”
최기훈이 깊은 한숨을 내쉬었다.
“선진에도 보안 전문가가 많을 텐데, 우리까지 부른걸 보면 간단한 문제라고 생각하지는 않았다.”
그때 다른 쪽 자리에 앉아 있던 송보나가 급히 김신우를 불렀다.
“과장님 메일이 또······.”
하얗게 탈색된 김신우가 마른침을 삼켰다.
“나 한 테도 왔어.”
-제목 ; 시작
-내용 : 이제 일주일 남았다. 그 전이라도 입금이 확인 되면 공격을 멈추겠다.
간단한 내용이었지만 파급력은 회의실을 침묵에 빠트리기에 충분했다. 한서준이 깊은 한숨을 내쉬었다.
“지금까지 확인 된 사항은?”
담당자들 중 한 명이 겨우 입을 열었다.
“출발지 IP를 추적해 보니 중국 쪽 ISP에서 막혔습니다. 운이 좋게 협조가 된다고 해도, 또 다른 ISP에서 막힐 가능성이 높습니다.”
“그래서 이제 어떻게 할 생각인데?”
“먼저 트래픽을 차단하고, 서버로그 분석 진행을······.”
한서준의 목소리가 낮아졌다. 짙은 분노가 느껴졌다.
“선진그룹이 해커집단에 무릎을 꿇는 게 말이 된다고 생각하나? 그렇지 않아도 하루에도 수십 번의 디도스 공격이 들어오는 판에 우리 보안은 취약하니 와서 뚫어보세요. 광고라도 할 셈이야?”
으드득 이를 갈며하는 말에 누구도 반박하지 못했다.
“서비스를 내리는 건 우리가 졌다고 광고하는 거나 마찬가지야. 알았어?”
변명을 하려던 담당자는 끝내 말을 잇지 못했다. 한서준이 이글거리는 눈빛으로 담당자를 보고 있었다. 이 상황에서 담당자가 할 수 있는 말은 한정적이었다.
“다시 확인해 보겠습니다.”
“빨리 해봐. 다들 목 날아가기 전에.”
한서준의 협박에 사무실 분위기가 차갑게 가라앉았다.
최기훈이 승호에게 속삭였다.
“분위기 진짜 장난 아니다. 보아하니 또 협박 메일이 온 모양이네.”
승호는 여전히 고개를 갸웃 거리고 있었다.
‘아무리 생각해 봐도 이해가 안 돼. 이렇게 아무런 흔적이 남지 않을 수가 있나.’
고심에 잠긴 승호에게 최기훈이 중얼거렸다.
“확실히 대기업이 다르긴 달라. 서버 대수도 그걸 관리하는 사람도 엄청나네. 이렇게 사람이 많으면 누구 한 명이 데이터 빼가도 모르겠다.”
순간 승호의 머리에서 꽤나 쓸 만한 가설이 하나 스쳐지나갔다. 자리에서 벌떡 일어나 송보나에게 다가가 귓속말을 속삭였다.
“송 대리님. 지금부터 제가 하는 말 잘 들으셔야 합니다. 먼저 해킹 관련 내부자가 있는 것 같습니다.”
송보나의 두 눈이 동그랗게 떠졌다. 꽉 쥔 두 주먹에 푸른 핏줄이 돋아났다.
“자, 잠시 만요. 그, 그거 확실한.”
“쉿. 조용히 하고 제 말을 들으셔야 해요. 만약 제가 하려는 일을 누군가 알게 된다면 범인을 찾지 못할 지도 모르니까요.”
송보나가 조심스럽게 고개를 끄덕였다.
“지금 부터 방화벽을 한 번 살펴보려 합니다. 어차피 방화벽이 모든 트래픽이 드나드는 통로니. 그 통로에서 지키고 있으면 범인을 찾아 낼 수 있을 테니까요.”
송보나도 한껏 목소리를 낮춰 대답했다.
“이해가 안 되는데, 이미 로그에서 보지 않았나요?”
“로그 수준이 아니라 트래픽을 까서 그 안에 있는 데이터 원본을 확인 해볼 생각입니다.”
“그게 무슨 말도 안 돼는··· 그 데이터들은 암호화 되어 있어 볼 수가 없어요.”
“쉿. 제가 가진 솔루션이면 됩니다. SSL로 이루어지는 트래픽도 전부 확인 할 수 있습니다. 문제는 방화벽에 제가 직접 붙어서 작업을 해야 해요.”
“서비스에 다른 영향을 미치는 건 아니겠죠?”
이번에는 승호가 고개를 끄덕였다. 송보나는 의심스런 눈길로 승호를 보았다.
‘사실일까?’
고심을 거듭했지만 잘 믿기지 않았다.
“거짓말이면 어쩌시겠어요?”
“자문료를 무료로 하죠.”
“알았어요. 이쪽으로.”
송보나가 천천히 자리에서 일어나, 네트워크 장비들이 있는 곳으로 승호룰 안내했다.
방화벽.
스위치.
라우터.
허브.
브릿지 등이 반짝 거리며 붉을 밝히고 있었다.
“정보 보안팀 송보나 대리에요. 방화벽 좀 살펴봐도 될까요?”
“조금 있다가 보시면 안 되겠습니까? 디도스 공격으로 제가 모니터링을 하고 있어야 해서.”
송보나가 승호를 보았다. 승호가 고개를 끄덕였다.
“급한 일입니다. 잠시면 되요.”
그제야 네트워크 담당자가 자리를 비켜 주었다. 승호가 두 손을 방화벽과 연결된 키보드 위에 올려두었다. 이내 0과1의 향연이 눈앞에 펼쳐졌다. 얼마 지나지 않아 승호의 눈이 반짝 거리며 이채를 발했다.
“잡았다. 요놈.”