메뉴 건너뛰기

close

이 글은 10.26 선거관리위원회 사이트 디도스 공격에 대한 기술적 이해를 돕기 위한 것입니다. 복잡한 기술에 관한 내용을 최대한 쉽게 알려드리기 위해 '가상' 상황을 설정해 이야기를 풀어가니, '오해' 없길 바랍니다. - 기자 주

연락책인 팀장 A가 말 잘 듣는 IT 엔지니어 둘을 불러 들였다. 이유는 밝힐 수 없지만 선관위를 공격해야 할 필요가 생겼기 때문이다. 선거 날 아침 출근 시간에 선관위의 투표소 안내 서비스를 무력화시킴으로써 젊은 유권자들의 투표율을 떨어뜨리려는 것이었다.

IT에 관해 잘 알지 못하는 팀장이 성공 가능성을 체크하고 싶어 물었다.

"내일 아침 선관위 서버를 해킹해야 한다. 가능하겠나?"

예상치 못한 요구에 엔지니어 B가 되물었다.

"뭘 어떻게 해킹하라는 말씀이십니까?"

"출근 시간에 투표소 안내를 못 보게 하라는 거야. 거 있잖아? 좀비 피신가 뭔가로 막 공격해서 서비스 안 되게 하는 거 말이야."

해킹 전문 엔지니어인 해커 C가 끼어들었다.

"그건 디도스죠. 해킹하고는 조금 다릅니다. 많은 피시가 동시에 접속을 시도해서 서버를 다운시키는 겁니다."

엔지니어 B도 거들고 나섰다.

"팀장님은 뭘 좀 알고 일 시키세요. 임무가 정확한 것 맞습니까?"

"용어야 어떻든 선관위 서버만 죽이면 돼. 할 수 있겠지?"

엔지니어가 고개를 가로 저으며 대답했다.

"국가 기관을 공격하는 게 그리 쉬운 일이 아닙니다. 끝까지 추적 당하기 때문에 위험하기도 하구요."

"그건 내가 책임질 테니까 걱정 말고. 디도스 공격으로 서버를 죽일 수 있는지만 대답해."

"디도스 공격하면 못 죽일 곳은 없지요. 좀비 숫자만 많으면 우리나라 전체 인터넷을 마비시키는 것도 별로 어렵지 않습니다. 사실 작정하고 달려들면 디도스는 아무도 못 막습니다."

"그럼 내일 아침에 선관위 사이트 공격할 수 있게 준비해봐."

팀장이 지시를 했지만 엔지니어는 순순히 답을 하지 않았다.

"그렇다고 디도스 공격을 하루 만에 뚝딱 해치울 수는 없습니다. 먼저 디도스 명령 내려 줄 업체를 찾아야 합니다. 그런 업체들은 주로 중국에 있는데 선 입금도 해 줘야 되고요. 그쪽에서 좀비 피시를 준비시킬 시간도 필요합니다. 최소한 네트워크 경로와 타깃 서버 구성을 파악한 후에야 효과적인 공격이 가능합니다. 게다가…."

"급하면 유디피(UDP) 공격을 해도 되잖습니까?"

해커 C가 아무 생각 없이 말을 끊자 엔지니어가 그를 노려보며 말했다.

"말도 안 되는 소리하지 마. 국가 기관에 UDP 공격했다가 백본이 다운되기라도 하면 어떡하려고? 우리나라 경찰뿐만 아니라 중국공안까지 나서서 탈탈 털 텐데?"

무슨 소린지 하나도 알 수 없어 팀장이 투덜거렸다.

"UDP 공격은 어떻게 하는 건데? 백본은 또 뭐야?"

"백본은 인터넷 기간망을 말합니다. KT, LG, SK같은 대형 네트워크 전문 업체들이 깔아 놓은 대용량 네트워크입니다."

해커가 설명하자 엔지니어도 거들었다.

"UDP 공격은 초당 10기가비트 이상의 데이터를 한 서버에 날려 보내는 겁니다. 수십기가에서 백기가 이상도 쏩니다. 이 정도면 선관위 같은 사이트뿐만 아니라 백본을 유지하는 KT같은 곳까지 마비될 수 있기 때문에 업체들이 기를 쓰고 막고 있지요. 때문에 UDP 공격은 대형 네트워크 업체 선에서 처리합니다."

보내는 쪽이 받는 쪽을 고려하지 않고 일방적으로 데이터를 보낼 수 있는 UDP 통신 방식의 허점을 악용한 디도스 기법이다. 초당 100메가비트 네트워크 속도를 가진 PC 100대면 10기가비트(10,000메가비트)의 공격을 할 수 있다. 많은 좀비를 모은다면 한국 인터넷 전체를 마비시킬 수도 있지만 좀비를 만들고 유지하는데 비용이 들기 때문에 주로 게임 사이트같이 돈이 걸린 곳을 총공격하는데 쓰인다. 공격이 들어오면 KT, SK 수준에서 라우터 같은 네트워크 장비를 다수 활용하여 실시간으로 공격을 우회시킨다. UDP 공격은 네트워크 용량을 가득 채워서 서비스를 불가능하게 만드는 대역폭 공격의 일종이다.
▲ UDP 공격 보내는 쪽이 받는 쪽을 고려하지 않고 일방적으로 데이터를 보낼 수 있는 UDP 통신 방식의 허점을 악용한 디도스 기법이다. 초당 100메가비트 네트워크 속도를 가진 PC 100대면 10기가비트(10,000메가비트)의 공격을 할 수 있다. 많은 좀비를 모은다면 한국 인터넷 전체를 마비시킬 수도 있지만 좀비를 만들고 유지하는데 비용이 들기 때문에 주로 게임 사이트같이 돈이 걸린 곳을 총공격하는데 쓰인다. 공격이 들어오면 KT, SK 수준에서 라우터 같은 네트워크 장비를 다수 활용하여 실시간으로 공격을 우회시킨다. UDP 공격은 네트워크 용량을 가득 채워서 서비스를 불가능하게 만드는 대역폭 공격의 일종이다.
ⓒ 김인성

관련사진보기


엔지니어가 반박하자 해커가 다시 아는 체를 했다.

"그럼 신 플러딩(홍수) 공격을 하면 되겠네요."

"그 공격도 KT 선에서 막혀. 대규모가 아니라면 디도스 감시 장비가 처리할 수도 있고."

"그래도 아직도 다들 많이 사용하고 있습니다."

"그건 소규모 도박 사이트나 음란 사이트한테 돈 뜯어 낼 때 이야기지."

"원래 그쪽 공격이 더 지독한데요?"

"어쨌든 선관위 같은 국가 기관이 아직도 이런 부분에 대비를 안 했겠냐?"

두 사람이 알아듣지도 못할 말로 서로 싸우자 팀장이 끼어들었다.

"잠깐 조용히 하고 그게 서버를 다운 시킬 수 있는지만 말해 봐."

"다운은 시킬 수 있겠지만 이것도 역시 이렇게 갑자기는 어렵습니다. 2009년 7.7 디도스 대란 이후에 대비도 잘 되어 있거든요."

네트워크상에서 데이터를 주고 받기 위해 서로를 확인하는 접속요구-답변-응답의 절차가 진행된다. 하지만 좀비는 접속요구(SYN)만 보낸다. 서버는 답변을 한 후 응답을 기다리느라 대기하게 되는데 좀비들이 계속 엄청난 새 접속요구만 보냄으로써 결국 서버가 더 이상 접속을 받아들일 수 없도록 만든다. 이 공격도 라우터를 활용하여 대역폭을 늘리고 공격을 우회시켜 처리할 수 있으며 일부가 넘어 오더라도 디도스 방어 장비로 처리가 가능하다. 신 플러딩 공격은 대역폭은 남아 돌지만 더 이상 접속 시켜 줄 자원이 없게 만드는 자원 고갈 공격의 일종이다.
▲ 신 플러딩(SYN Flooding) 공격 네트워크상에서 데이터를 주고 받기 위해 서로를 확인하는 접속요구-답변-응답의 절차가 진행된다. 하지만 좀비는 접속요구(SYN)만 보낸다. 서버는 답변을 한 후 응답을 기다리느라 대기하게 되는데 좀비들이 계속 엄청난 새 접속요구만 보냄으로써 결국 서버가 더 이상 접속을 받아들일 수 없도록 만든다. 이 공격도 라우터를 활용하여 대역폭을 늘리고 공격을 우회시켜 처리할 수 있으며 일부가 넘어 오더라도 디도스 방어 장비로 처리가 가능하다. 신 플러딩 공격은 대역폭은 남아 돌지만 더 이상 접속 시켜 줄 자원이 없게 만드는 자원 고갈 공격의 일종이다.
ⓒ 김인성

관련사진보기


"안 된다는 소리만 하지 말고 이런 장비를 통과할 수 있는 방법을 말해 봐."

팀장이 짜증을 내기 시작하자 해커가 또 다른 방법을 들고 나왔다.

"방법은 많습니다. 예를 들어 패킷 늘리기 방법을 써도 됩니다."

엔지니어는 역시 반대하고 나섰다.

"초당 패킷 수(PPS) 증가시키는 것 말이야? 그거 하려면 최소한 좀비 1000대 이상은 필요할 텐데 갑자기 어떻게 준비하냐?"

"중국에 전화 있는 대로 돌리면 되지요."

가능성이 보이는 듯하자 팀장이 물었다.

"PPS인가 하는 걸로는 서버를 다운 시킬 수 있다는 건가?"

엔지니어는 여전히 회의적으로 나왔다.

"그렇긴 하지만 시간이 필요합니다."

"시간이야 어떻게든 줄일 수 있을 거고…… 어떻게 하는 건데?"

해커가 자신 있게 설명했다.

"이게 최신 기술인데 효과도 아주 좋습니다. 좀비들이 네트워크 감시 장비가 경계하지 않을 정도로 소량의 데이터를 꾸준히 보내게 하는 겁니다. 이런 좀비가 많으면 결과적으로 서버에 엄청난 부하가 걸리게 됩니다. 선관위 서버 바로 다운시킬 수 있습니다."

좀비들은 의심받지 않기 위해서 정상적인 접속요구-답변-응답 방법으로 서버에 접속한다. 그 후 쓰레기 값이 담긴 작은 데이터 조각(패킷)을 네트워크 감시 장비가 경계하지 않을 정도로 조금씩 전송한다. 전송 데이터 량이 작기 때문에 감시 장비를 통과할 수 있지만 서버에는 엄청난 수의 패킷이 몰리게 된다. 패킷은 크기에 상관없이 같은 처리 비용이 들기 때문에 아주 작은 패킷을 다량으로 보내면 작은 전송 량으로도 서버에 큰 부하를 줄 수 있다. PPS 증가 기법도 자원을 고갈 시키는 공격이다.
▲ PPS 증가시키기 좀비들은 의심받지 않기 위해서 정상적인 접속요구-답변-응답 방법으로 서버에 접속한다. 그 후 쓰레기 값이 담긴 작은 데이터 조각(패킷)을 네트워크 감시 장비가 경계하지 않을 정도로 조금씩 전송한다. 전송 데이터 량이 작기 때문에 감시 장비를 통과할 수 있지만 서버에는 엄청난 수의 패킷이 몰리게 된다. 패킷은 크기에 상관없이 같은 처리 비용이 들기 때문에 아주 작은 패킷을 다량으로 보내면 작은 전송 량으로도 서버에 큰 부하를 줄 수 있다. PPS 증가 기법도 자원을 고갈 시키는 공격이다.
ⓒ 김인성

관련사진보기


엔지니어는 이번에도 역시 부정적으로 나왔다.

"서버를 다운시킬 수 있긴 하지만 요즘은 이 방법도 여러 가지로 어렵습니다."

"왜?"

"PPS 증가법은 엄청난 양의 패킷을 보내는 데 이렇게 되면 결과적으로 서버뿐만 아니라 네트워크 장비에도 부하가 걸려서 인터넷 전체가 차례로 다운될 가능성이 높습니다. 그래서 요즘은 지나가는 패킷 수도 실시간으로 감시하고 있어서 금방 노출 당합니다. 공격 징후가 보이면 디도스 방어용 그린존으로 대피시키기 때문에 10분 이상 효과를 발휘하기 힘듭니다."

"그린존은 또 뭐야?"

"디도스를 방어할 목적으로 수백기가 이상의 용량을 가진 네트워크를 따로 운영합니다. 디도스가 시작되면 서버를 그린존으로 대피시킵니다. 여기서 10기가든 100기가든 일단 다 받아 준 다음에 전용 장비로 디도스 접속을 가려내서 처리하는 거죠. 돈은 들지만 효과는 확실합니다. 그린 존에 들어간 서버는 죽이기 힘듭니다."

선관위 서버는 KT의 그린존으로 대피했는데 KT가 발표한 자료에 의하면 2기가 정도의 공격을 받았다고 한다. 하지만 선관위는 자체 집계로 11기가의 공격을 받았다고 주장했는데 KT처럼 선관위도 정확한 자료를 가지고 있었기에 그런 말을 할 수 있었을 것이다. 선관위는 11기가의 공격을 뒷받침하는 근거 자료를 빠른 시일 안에 내 놓아야 한다.
▲ 그리존 데이터 선관위 서버는 KT의 그린존으로 대피했는데 KT가 발표한 자료에 의하면 2기가 정도의 공격을 받았다고 한다. 하지만 선관위는 자체 집계로 11기가의 공격을 받았다고 주장했는데 KT처럼 선관위도 정확한 자료를 가지고 있었기에 그런 말을 할 수 있었을 것이다. 선관위는 11기가의 공격을 뒷받침하는 근거 자료를 빠른 시일 안에 내 놓아야 한다.
ⓒ 김인성

관련사진보기


팀장이 물었다.

"그러니까 웬만한 공격은 백본에서 처리하고 신 플러딩 어쩌고 하는 것부터 PPS란 것까지 모두 디도스 장비가 감시하고 있는 데다가 그린존이란 엄청 넓은 방어 구역이 있어서 하루 만에 준비해서는 서버에 도달하지도 못할 거란 소리잖아?"

"……"

다들 말이 없자 팀장이 상식적인 질문을 다시 했다.

"뭐가 이리 복잡해? 그럼 이 난관을 뚫고 꼭 선관위 서버를 다운시키려면 어떻게 해야 하는 거야? 그냥 선관위 홈페이지에 좀비들이 정상 사용자처럼 엄청 달라 붙으면 되는 거 아냐? 첫 페이지 보여 달라는 좀비 접속이 한 10만개쯤 달라 붙으면 다른 사람들이 들어 올 수 없을 텐데 말이야."

"요즘은 네트워크 용량도 넉넉한데다가 웹 서버를 여러 대 준비하기 때문에 웬만하면 그 정도는 버팁니다. 선관위라면 실제 웹 페이지도 몇 페이지 안 될 텐데 그마저도 미리 데이터를 준비해 두는 캐시란 것이 있어서 단순한 웹 페이지 요청은 별로 부담되지도 않고요."

엔지니어의 답변을 들은 해커가 또 새로운 방법을 제시했다.

"그렇다면 최신 기법을 쓰도록 하죠. 캐시 무력화는 어떻습니까?"

"2009년 디도스가 그거였잖아. 그 때 이후로 디도스 장비가 다 막아 준다니까. 잘 나가는 중국 디도스 감시 장비업체들은 자기들이 직접 디도스 해킹법을 개발해서 팔고 다시 그걸 막는 하드웨어도 만들어 돈을 벌고 있다고 의심 받고 있지. 어쨌든 돈만 들이면 막을 수 있어."

논쟁은 이제 엔지니어와 해커가 서로 실력을 겨루는 것처럼 바뀌고 있었다.

"혹시 압니까? 선관위가 이런 부분에 대비가 안 되어 있을지."

"국가 기관이 그럴 리가 있냐? 설사 그렇다고 하더라도 관리업체가 바로 처리할 거야."

웹 서버는 부하를 줄이기 위해 처리를 끝낸 결과 데이터를 없애지 않고 메모리에 유지하는 캐싱 기법을 사용한다. 이 기법으로 복잡한 계산이 필요한 자료 요청이 많을 경우 상당한 성능 향상이 가능하다. 하지만 좀비는 서버에게 이 캐시를 무시하고 무조건 새로 데이터를 만들어 보내라고 요구한다. 캐시 무력화 공격을 쓰면 몇 대의 좀비로도 서버를 다운 시킬 수 있다. 이 공격 기법은 디도스 장비 등이 처리할 수 있으나 공격이 방화벽을 넘어 서버까지 도달할 가능성이 있으므로 서버 설정도 바꾸어야 한다.
▲ 캐시 무력화(CC)공격 웹 서버는 부하를 줄이기 위해 처리를 끝낸 결과 데이터를 없애지 않고 메모리에 유지하는 캐싱 기법을 사용한다. 이 기법으로 복잡한 계산이 필요한 자료 요청이 많을 경우 상당한 성능 향상이 가능하다. 하지만 좀비는 서버에게 이 캐시를 무시하고 무조건 새로 데이터를 만들어 보내라고 요구한다. 캐시 무력화 공격을 쓰면 몇 대의 좀비로도 서버를 다운 시킬 수 있다. 이 공격 기법은 디도스 장비 등이 처리할 수 있으나 공격이 방화벽을 넘어 서버까지 도달할 가능성이 있으므로 서버 설정도 바꾸어야 한다.
ⓒ 김인성

관련사진보기


"선관위 정도면 LG CNS나 KT가 직접 관여할 거니까 쉽게 죽이기 힘들 거야."

엔지니어의 말에도 불구하고 해커는 굴하지 않았다.

"아닙니다. 규모가 크다고 잘하는 건 아닙니다. 어차피 다 하청업체들이 작업하는 거니까 의외로 허접할 수도 있습니다. 한 번 해보시죠."

팀장이 다시 체크를 했다.

"그러니까 캐시 무력화로 서버를 다운 시키려면 어떤 조건이 필요한 거야?"

해커가 팀장에게 대답했다.

"일단 좀비가 많아야 합니다. 한 1000대 정도면 될 겁니다. 캐시 무력화를 시도하는 좀비들이 아주 적은 요청을 조금씩 보내야 합니다. 조금이라도 의심되면 디도스 장비가 막아 버리니까요."

엔지니어가 반론을 제기했다.

"그래 봤자 같은 요청이 반복해서 들어오면 디도스 장비들이 바로 대응하니까 빠르면 일이십 분 안에 들키고 길어도 몇 시간 안에 막혀. 요즘은 서버도 캐시 무력화 요청을 무시하도록 설정하기 때문에 별 효과도 없어. 게다가 그린존에 들어가면 이것도 끝이야."

"이래도 안 된다. 저래도 안 된다. 도대체 뭐 하자는 거야? 뾰족한 방법을 강구해야지 안 된다는 이야기만 하고 있을 때야? 그럼 박원순 홈페이지도 디도스 공격 못하겠네?"


팀장이 신경질을 냈지만 엔지니어는 아랑곳하지 않았다.


"그건 다르지요. 박원순 홈페이지는 아마 싸구려 호스팅 서비스를 받고 있을 겁니다. 어쩌면 한 달에 십만 원도 안될지도 모릅니다"


해커가 거들었다.


"요즘은 한 달에 오백 원짜리도 많습니다."


"그런 사이트는 디도스가 아니라 그냥 사용자만 조금 많아도 접속이 안 됩니다. 디도스 공격까지 할 필요가 있을지 모르지만 굳이 해야 한다면 좀비 한 두 대만 있어도 바로 죽일 수 있지요. 하지만 국가 기관은 다릅니다. 방어가 철저하기 때문에 쉽게 죽이기 어려운 데다가 끝까지 추적 당할 게 틀림없고 걸리면 피해가 장난이 아니니까 웬만하면 안 했으면 하는 거지요."


팀장은 그런 문제는 전혀 신경 쓰지 않는 눈치였다.


"어쨌든 디도스 공격은 매일 발생하잖아? 죽이겠다고 달라 붙으면 선관위 서버라고 별 수 있겠어? 책임은 내가 질 테니까 무조건 죽일 수 있는 방법을 강구하란 말이야."


팀장의 강경한 요청에 엔지니어는 어쩔 수 없이 디도스 공격을 하기로 했다.


"알겠습니다. 무조건 선관위 홈페이지를 다운시키라는 거지요? 얼마 동안이나 죽일 수 있을지 모르지만 한 번 시도는 해 보겠습니다."


"어떻게 할 건데?"


"일단 디도스가 성공하려면 지금 말한 방법을 다 동원해야 합니다. UDP 공격에 신 플러딩 그리고 캐시 무력화까지 골고루 섞어야 효과가 있습니다. 사실 정상적인 피시가 하는 일을 흉내 내는 것이 디도스니까요. 최종적으로는 말씀하신 대로 사용자가 몰려서 서비스가 안 되는 것처럼 보일 겁니다."


"이 복잡한 것을 어떻게 동시에 하나?"


"우리가 하는 건 아니죠. 돈만 주면 좀비 피시에 어떤 공격을 어떻게 할지는 그들이 알아서 합니다. 그럼 의뢰를 할까요?"


엔지니어가 팀장에게 물었다. 팀장은 속으로 겁이 나긴 했지만 겉으로는 의연하게 대답했다.


"그럼 당연하지. 시간이 없으니까 빨리 시작해."


엔지니어는 중국에 있는 디도스 공격 업자에게 전화를 걸었다.


"어이, 선관위 서버에 디도스 공격을 좀 해줘야겠는데 말이야. 선거 날인 내일 아침 6시부터 두 시간 정도 접속이 안 되게 하면 돼. 가능하겠지?"


중국 업자가 전화에 대고 신경질을 부렸다.


"이렇게 급하게 일 시키는 법이 어디 있어? 그쪽 서버들 설정도 잘 모른 채 공격하면 성공하기 어려울 거야. 부하 분산 설정이 잘 되어 있으면 죽이기도 힘들 거고."


"우리도 사정이 있어서 그런 거니까 어떻게 해봐."


"두 시간 이상을 버티려면 최소한 좀비 1000대 이상은 있어야 하는데 아침에 살아있는 좀비를 그만큼 어떻게 모으냐? 나 혼자는 안 되고 여러 군데 알아 봐야 하니까 비용이 좀 들 거야. 그래도 좋아?"


옆에서 듣고 있던 팀장이 비용은 걱정 말라는 듯 고개를 끄덕였다. 엔지니어가 전화에 대고 말했다.


"알았어. 일이나 확실히 해. 들키지 않게 조심하고."


하지만 업자는 오히려 이 쪽을 의심했다.


"우린 기본적으로 IP 세탁을 하니까 절대 걸릴 일이 없어. 네 쪽이나 조심해. 언제나 함부로 입 놀리는 친구들 이 문제니깐."




게임 아이템 거래 사이트인 아이템베이는 2년 동안이나 디도스 공격을 당함으로써 아이템 거래 분야 1위 자리를 잃고 말았다. 공격자들은 공공연하게 아이템베이에 연락해 수 억 원대의 금품을 요구했으며 실제로 돈을 건네 받았다. 경찰은 경쟁 업체가 관련된 것으로 보고 수사를 진행해 경쟁 업체의 전 임원을 검거하기도 했다. 하지만 사건이 일어난 지 3년이 지난 현재까지도 전모를 파악하지 못하고 있다. 선관위 디도스 사건은 정확한 이해 관계가 드러나지 않았고 중국 디도스 공격자들이 금품을 요구하기 위해 피해자에게 접촉하는 등의 신분 노출 행위조차 하지 않았음에도 신속하게 범인이 잡히고 범행 전모가 드러난 것은 대단히 이례적인 일이다. 따라서 경찰의 수사 진행 과정 자체에 대한 조사도 반드시 필요할 것으로 보인다.
▲ 아이템베이 디도스 사건 게임 아이템 거래 사이트인 아이템베이는 2년 동안이나 디도스 공격을 당함으로써 아이템 거래 분야 1위 자리를 잃고 말았다. 공격자들은 공공연하게 아이템베이에 연락해 수 억 원대의 금품을 요구했으며 실제로 돈을 건네 받았다. 경찰은 경쟁 업체가 관련된 것으로 보고 수사를 진행해 경쟁 업체의 전 임원을 검거하기도 했다. 하지만 사건이 일어난 지 3년이 지난 현재까지도 전모를 파악하지 못하고 있다. 선관위 디도스 사건은 정확한 이해 관계가 드러나지 않았고 중국 디도스 공격자들이 금품을 요구하기 위해 피해자에게 접촉하는 등의 신분 노출 행위조차 하지 않았음에도 신속하게 범인이 잡히고 범행 전모가 드러난 것은 대단히 이례적인 일이다. 따라서 경찰의 수사 진행 과정 자체에 대한 조사도 반드시 필요할 것으로 보인다.
ⓒ 김인성

관련사진보기


그리하여 선거 방해 공작이 시작되었다. 그 때 팀장이 생각난 듯 말했다.



"근데 딴 서비스는 그대로 두고 투표소 안내 페이지만 죽여야 하는데 그것도 가능하겠지?"


엔지니어가 놀라서 물었다.


"어떻게 디도스로 특정 페이지만 골라서 죽입니까? 그건 디도스가 아닙니다. 디도스는 사이트 전체를 다운 시키는 겁니다."


이번에도 해커가 나섰다.


"그게 디도스든 아니든 어쨌든 가능합니다. 투표소 안내는 데이터베이스(디비)를 쓸 테니까 디비 서버 아이피를 알아내 그 서버만 집중 공격하면 됩니다."


"지금 여기서 디비 서버 아이피 이야기가 왜 나와? 너 해커 맞아? 디비 서버는 외부에서 접근할 수 없게 숨겨 놓고 쓰는데 어떻게 공격한단 말이야?"


"혹시 압니까? 선관위는 디비 서버를 외부에 노출 시켜 놓았을지."


"절대 그럴 리가 없어. 아무리 무식한 시스템 엔지니어라도 그런 짓은 안 해."




다수의 웹 서버를 병렬로 연결하고 부하분산기가 적절히 사용자를 분배한다. DB서버는 외부에 보이지 않는 독립 네트워크 안에 숨어 있다. 이곳은 웹 서버만 접근 가능하다. 이 구조가 웹 서비스를 위한 일반적인 구성이며 가장 안전한 방법이기도 하다.
▲ 시스템 구성 다수의 웹 서버를 병렬로 연결하고 부하분산기가 적절히 사용자를 분배한다. DB서버는 외부에 보이지 않는 독립 네트워크 안에 숨어 있다. 이곳은 웹 서버만 접근 가능하다. 이 구조가 웹 서비스를 위한 일반적인 구성이며 가장 안전한 방법이기도 하다.
ⓒ 김인성

관련사진보기



엔지니어가 강경하게 나오자 해커 물러서 다른 방안을 강구하기 시작했다.


"혹시 선관위 사이트에서 로그인을 해야 하나요?"


팀장이 다시 물었다.


"그건 왜?"


"로그인을 한다면 사용자 정보가 디비에 있을 테니까 로그인 요청을 다량으로 보내서 사용자 정보 디비가 다운되게 할 수 있거든요."


선관위 사이트를 뒤져보며 엔지니어가 대답했다.


"선관위 홈페이지는 www.nec.go.kr이고 투표소 안내는 info.nec.go.kr인데 둘이 IP가 완전히 달라. 서로 다른 서버에 있을 가능성이 아주 높아. 근데 로그인은 www 서버에만 있고 info 서버에는 없어."


"로그인 요청을 보내면 오히려 www 서버만 죽겠네요. 그럼 혹시 info 서버에 검색 기능은 없나요? 검색 질의를 왕창 보내면 죽일 수도 있는데."


"있기는 있지만 웹 페이지를 검색해 주는 단순 기능뿐이야. 얼마 되지도 않는 웹 페이지 데이터를 찾아 주는 거라 디비와 연결되어 있지도 않겠지. 그리고 그렇게 해 봤자 info 서버 전체가 죽지 투표소 안내 기능만 죽일 순 없어."


해커가 다시 아이디어를 짜냈다.


"그럼 투표소 디비 접속 요청을 다량으로 보내면 되지 않을까요?"


"……"


엔지니어가 잠시 생각하느라 말이 없자 팀장이 대신 물었다.


"그건 어떻게 하는 거야?"


"예를 들어 <강남구 1선거구 투표소 위치를 알려 주시오> 이런 요청을 마구 보내면 투표소 안내 디비에 부하가 걸릴 것 아닙니까?"


엔지니어가 다시 반론을 제기했다.


"그래 봤자 WAS가 다 걸러 버리지. 같은 검색을 계속하면 WAS가 캐시에 저장하기 때문에 디비에 접속하지도 않고 바로 답을 주니까 부하도 안 걸려."


WAS(와스)는 웹서버와 디비서버를 중개한다. 웹 서버의 요청을 디비 서버에 전달하고 그 결과를 웹 서버에 넘겨 준다. 디비 서버에 접속과 관련된 복잡한 일을 전담하며 결과를 캐싱함으로써 디비의 부하를 줄인다. WAS가 있으면 같은 요청이 많이 들어올 경우 디비의 부하가 획기적으로 감소한다.
▲ 웹 어플리케이션 서버(WAS) WAS(와스)는 웹서버와 디비서버를 중개한다. 웹 서버의 요청을 디비 서버에 전달하고 그 결과를 웹 서버에 넘겨 준다. 디비 서버에 접속과 관련된 복잡한 일을 전담하며 결과를 캐싱함으로써 디비의 부하를 줄인다. WAS가 있으면 같은 요청이 많이 들어올 경우 디비의 부하가 획기적으로 감소한다.
ⓒ 김인성

관련사진보기



"그럼 모든 선거구 투표소 위치를 각각 질의하는 요청을 만들어 보내면 되지 않을까요?"


"어떻게 하자는 거야?"


"강남구1선거구투표소위치, 강남구2선거구투표소위치… 공릉동1선거구투표소위치, 월계동2선거구투표소 이렇게 투표소를 물어 보는 질문을 다 다르게 만들어 좀비들이 동시에 요청하도록 하는 겁니다."


"전국 투표소가 한 3000개 되나? 그 질문 전부 다 만들어도 3000종류가 안 되는데 이 정도는 WAS 서버 캐시에 담기고 끝이야. 디비는 그냥 놀고 있겠네, 죽을 수가 없어."


해커도 엔지니어의 말에 동의했다.


"디비도 캐시를 하니까 3000종류의 단순 질문이라면 WAS서버가 없더라도 그냥 디비가 직접 다 처리할 수도 있겠네요."


둘 다 포기하자 이번엔 팀장이 아이디어를 냈다.


"그럼 아무 질문이나 막 만들어 던지면 어때?"


"WAS가 올바른 질문인지 먼저 체크를 하니까 바로 거부되고 끝납니다."


"선관위 서버를 해킹해서 투표소 안내 기능만 죽이면 어떨까?"


"그건 해킹인데요. 시간이 너무 촉박합니다. 보안 허점을 찾으려고 해도 며칠은 걸립니다. 서버 접근권까지 얻으려면 더 걸리고요. 해킹한 거 안 들키게 우회까지 하려면 한 달은 더 필요하겠네요. 그렇게 해 봤자 금방 들킵니다. 해킹해서 아예 디비를 날려 버리지 않는 한 바로 복구되고 말 겁니다."


아무리 머리를 짜내도 투표소 안내 기능만 죽일 방법을 찾을 수 없었다. 결국 엔지니어가 팀장에게 마지막으로 선언했다.


"저의 모든 IT 경험을 걸고 말씀 드립니다. 현 상황에서 디도스로 선관위 투표소 안내 기능만 죽이는 것은 불가능합니다. 디도스가 아닌 변형 공격으로도 불가능합니다. 해킹을 해도 금방 들켜 복구되기 때문에 효과가 없습니다."




선관위 서버의 투표소 안내 서비스가 다운된 것은 디도스 때문이 아니다. 변형된 형태든 아니든 그 어떤 외부의 디도스 방법으로 발생한 일이 아니다. 이 사실을 위배하는 그 어떤 주장도 모두 거짓이다. 선관위 사건의 진상을 파악하기 위해서는 이 명약관화한 사실에서 출발해야 한다.
▲ 선관위 사이트 선관위 서버의 투표소 안내 서비스가 다운된 것은 디도스 때문이 아니다. 변형된 형태든 아니든 그 어떤 외부의 디도스 방법으로 발생한 일이 아니다. 이 사실을 위배하는 그 어떤 주장도 모두 거짓이다. 선관위 사건의 진상을 파악하기 위해서는 이 명약관화한 사실에서 출발해야 한다.
ⓒ 김인성

관련사진보기



팀장이 암담해하고 있자 해커가 나섰다.


"사실 가장 간단하고 확실한 방법이 있긴 합니다."


팀장은 의심스러워 하면서도 실낱 같은 기대를 버리진 못했다.


"그게 뭔가?"


해커가 분위기 파악을 못하고 웃으며 말했다.


"선관위 서버 관리자한테 전화 걸어서 디비 서버 잠시 세워달라고 부탁하면 됩니다."


"선관위가 어떤 곳인데 그런 소리를 해? 그런 부탁을 누가 들어 주겠어?"


팀장은 해커의 헛소리에 황당하다는 듯이 대꾸했지만 속으로는 꼭 그렇지만은 않을지도 모른다고 생각했다.


p.s


중앙선거관리위원회는 홈페이지 디도스 공격과 관련한 '선관위 내부자 공모설'에 대해 정면으로 반박하며 강하게 부인하고 있습니다.

덧붙이는 글 | 김인성 기자는 시스템 엔지니어이자 IT칼럼니스트로 활동하고 있으며 최근 일반인을 위해 한국 IT의 문제점을 지적한 <한국 IT 산업의 멸망>을 출간했습니다.



태그:#디도스, #선관위, #그린존, #해킹
댓글
이 기사의 좋은기사 원고료 5,000
응원글보기 원고료로 응원하기

IT와 관련된 기술적인 내용을 쉽게 풀어서 전달하고, 엔지니어 입장에서 사회 현상을 해석하는 글을 쓰고 싶습니다. 정보통신, 컴퓨터, 인터넷, 방송, 사회적 인물등이 관심분야입니다. http://minix.tistory.com


독자의견

이전댓글보기
연도별 콘텐츠 보기