21세기소년

20100123 :: 인터넷상에서 만날 수 있는 위협들 – 1

집에서 사용하는 PC가 결국 그 운명을 맞이했습니다. 자세한 이야기는 다음으로 미루고, 오늘은 지난 번 포스팅에서 이야기한 것처럼 인터넷을 아무 생각없이 사용하면서 만나게 되는 여러 가지 위협에 대해 살짝 살펴보도록 하겠습니다. 여기서 이야기하는 사례는 모두 가상의 사례이며, ‘충분히 이럴 수 있다’는 가정하에 쓰여지긴 하였지만 실제로는 조금 과장된 면도 있을 수 있음을 미리 밝힙니다.

해킹을 당하다

개인이 PC를 사용하면서 본인의 PC를 해킹 당하는 것은 실제로 겪어본적은 없습니다. 하지만 VNC 서버를 사용하거나 하는 경우에는 멋대로 커서가 움직이거나 하는 증상을 경험했다는 사례는 제법 있는 것으로 압니다. 물론 이러한 ‘실시간 해킹’은 일반적으로는 접하기 힘듭니다만, 지난 번에 이야기했던 대로 누군가는 나의 PC에 저장된 공인인증서나 개인정보가 담긴 이력서 파일 등등을 훔쳐가려는 사람이 있을 수 있습니다. 그렇다면 어떻게 그게 가능할까요?

나의 PC가 이러한 해킹의 대상이 되었다라는 것은 원격지에 있는 누군가가 PC의 특정 기능을 사용할 수 있게 되었다는 이야기입니다. 이 경우라면 내 PC가 ‘서버’의 역할을 수행하게 되는 것입니다. 사실 서버라는 것이 대단한 것이 아닙니다. 그저 원격지에 있는 사용자에게 특정 기능을 제공하는 시스템 혹은 프로그램이 바로 서버입니다. 그럼 뭔가 대단한 프로그램을 실행해야 하지 않느냐라고 반문할 수도 있겠지만, 실제로 어떤 기능을 몰래 수행하기 위한 서버는 매우 작은 크기로도 만들 수 있습니다.

그럼 실제로 이러한 프로그램이 내 컴퓨터에서 어떤 일을 하는 지 알아보겠습니다.

  • 네트워크를 통해 해킹의 수단이 되는 악성 프로그램이 유입된다.
  • 악성 프로그램이 실행된다.
  • 악성 프로그램은 자신이 자리를 잡았음을 보스에게 알린다.
  • 보스가 원격에서 명령을 내린다. 혹은 특정 조건이 맞아 떨어져 자동으로 내장된 명령을 수행한다.
  • 못된 짓을 시작한다.

이것이 가장 간단한 악성 코드에 의한 감염 사례입니다. 매우 도식적이지만 대부분의 못돼먹은 프로그램은 이러한 형태로 동작한다고 볼 수 있습니다. 물론 이러한 동작이 항상 못된 프로그램들만 하는 것은 아니지요. 네이트원 원격접속이나 윈도우가 제공하는 원격 지원 등도 이러한 유형으로 동작합니다.

그럼 각각의 단계는 실제로 어떤 식으로 진행될 수 있는지 예를 들어 보겠습니다. 이어질 이야기는 실제 있을 법한 내용을 상상으로 구성해 본 것입니다.

예를 들어…

나는 해커입니다. 나는 돈이 필요합니다. 요즘 같은 세상에는 만만한 웹사이트 DB 뒤져서 주민등록번호 같은 거 캐 봤자, 주민 번호는 워낙 단가가 싸서 팔아도 돈이 안됩니다. 이미 십여년 전부터 수만명~수백만명 단위의 한국인 주민 번호 파일이 중국에서 싼 값에 거래되어 왔기 때문입니다. 그래서 나는 조금 위험한 생각을 하기로 했습니다. 바로 다른 사람의 은행 계좌로부터 돈을 빼내는 방법입니다.

메신저 피싱 같은 것도 생각해 봤지만, 그러려면 알바를 고용해야 합니다. 아, 이건 왠지 비용이 들어가니 좋지 않은 방법입니다. 물론 시간이 많지만 된다는 보장이 없으니 정면 돌파를 생각합니다. 네 그냥 공인인증서와 은행 로그인 아이디, 비밀번호를 훔쳐보기로 합니다. 요즘은 은행 자물쇠 카드를 사진으로 찍어 보관하는 사람도 많으니 한명만 제대로 걸리면 크게 한 건 할 수 있을 것 같습니다.

자, 그럼 이제 어떻게 각각의 정보를 훔쳐낼 수 있을지 생각해 보겠습니다.

1. 은행 로그인 아이디와 비밀 번호 그리고 공인 인증서

로그인 아이디와 비밀 번호를 십여개 가까이 만들어서 조합하여 사용하고, 이를 각 사이트마다 모두 다르게 사용하는 사람은 거의 없습니다. 이런 사람은 보안과 관련된 교육을 빡세게 받고 그런 습관이 체득된 전문가들입니다. 일반인들은 거의 사용하는 아이디가 모두 같은 경우가 대부분입니다. 아이디는 조금씩 달라도 비밀번호는 거의 대부분이 같습니다.

공인인증서 파일은 고맙게도 모든 PC마다 동일한 위치에 저장됩니다. 저는 그냥 FTP 서버만 하나 만들어 놓고, 몰래 동작하는 멋진 프로그램을 하나 작성할 계획입니다. 이 프로그램은 주로 사용자가 두드리는 키보드 키를 모두 기록했다가 제게 건네주는 역할을 하는 키로거(key logger)입니다만, 아주 간단한 기능을 하나 더해서 프로그램이 실행될 때 공인인증서가 저장되는 폴더를 통째로 압축하여 저의 서버로 올릴 수 있도록 만들 것입니다.

2. 악성 코드 배포

하늘이 나를 돕습니다. 가짜 사이트를 하나 만들어서 거기에 음악 공유 프로그램이라 하고, ActiveX를 하나 설치하게끔 합니다. 이 녀석을 실행되면 그냥 오류 메시지를 하나 뿜으면서 더 이상 동작되지 않는 것처럼만 보이게끔합니다. 그런 대신에 몰래 제가 서버에 올려놓은 다른 프로그램을 설치하고, 이를 윈도우 서비스로 등록하여 컴퓨터를 부팅할 때 마다 자동실행되게 합니다.

물론, 이 진짜 프로그램은 실행되고 나서 재밌는 일을 하게 됩니다. 바로 위에서 말한 공인인증서와 키보드 입력 내용을 싸그리 제 서버로 업로드 해 줄테니까요.  그럼 제가 할 일은 간단합니다. 제 프로그램이 서버에 올려줄 정보는 PC의 주인이 컴퓨터를 켜고부터 계속해서 두드리는 키보드의 내용들입니다. 여기서 가장 간단하게는 반복적으로 나타나는 패턴만 찾으면 됩니다. 그 패턴이 로그인 아이디와 비밀번호의 조합일 가능성은 매우 큰데다, 그 전후를 뒤져보면 인터넷 주소로 어디를 입력했는지도 알 수 있으니까요. 물론 대부분의 사용자들은 거의 모든 웹 서비스에서 동일한 아이디와 비밀번호를 사용하기 때문에 이 정도 정보면 은행 로그인까지는 전혀 문제가 없습니다.

3. 은행 보안 카드

그럼 이제 제 손에는 은행 로그인 아이디와, 비밀번호, 공인 인증서가 확보됩니다. 남은 것은 은행 보안 카드입니다. 요즘 이거 들고 다니기가 만만치 않게 귀찮기 때문에, 온갖 포털 사이트를 이 계정 정보로 다 뒤지고 다녀봅니다. 그리고선 메일이나 파일 보관함을 둘러봅니다. 적지 않은 비율로 은행 보안 카드를 디카나 폰으로 찍어서 보관해 두고 계시는 군요. 감사합니다. 이제 계좌 이체를 위한 모든 준비가 끝났습니다.

최악의 보안환경에 대처하는 우리의 자세

혼자 소설 좀 썼습니다만, 위 시나리오는 약간의 프로그래밍 지식만 있으면 충분히 할 수 있을 것 같다는 생각이 듭니다. 실제로 저런 프로그램을 만드는 일은 쉽습니다. 사실 그 외에는 모두 ‘인터넷 사용자의 습관’을 이용한 ‘꼼수’일 뿐입니다. 그만큼 우리 내 인터넷 보안 환경은 취약하기 그지 없습니다. 이는 비단 일반 사용자 뿐만 아니라 실제 웹 사이트 운영자의 보안 의식도 이 지점에서 별반 발전한 바가 없으며, 더더욱 중요한 웹을 통해 사업을 구상하고 정책을 마련하는 이들 (그것이 기업의 중역이든, 국가의 중책을 맡은 사람이든)은 어쩌면 일반 사용자들보다 못한 보안 의식을 갖고 있기 때문이라고 믿어 의심치 않습니다.

그렇다면 일반 사용자입장에서는 어떻게 인터넷을 해야 그나마 조금이라도 안심을 할 수 있을까요? 위의 시나리오에서 발견할 수 있는 취약점들을 최대한 회피하는 방법으로 인터넷을 이용하면 됩니다.

비밀번호 사용

아이디를 모든 사이트마다 다르게 만들기는 솔직히 어렵습니다. 그렇다 하더라도 비밀번호는 가능한 한 다르게 만드는 것이 좋습니다. 최소한 주민등록번호 등 민감한 정보를 건네주고 가입하는 사이트들은 가능한 비밀번호를 다르게 하는 것이 중요합니다.

그리고 또 한 가지, 해커들이 여러분의 계정을 공격할 때 사용하는 것은 고도의 복잡한 프로그래밍 테크닉이 아닙니다. 무슨 프로그램 돌려서 암호 깨고 어지럽게 숫자가 왔다 갔다 하는 것은 영화에서 보기 좋으라고 그렇게 만드는 것일 뿐이지요. 결국 비밀번호는 다음과 같은 방식을 따라 만들고 관리하는 것이 안전합니다.

  1. 비밀 번호는 가능한 길게 만듭니다. 짧으면 짧을수록 유추하기가 쉽습니다. 행여 비밀 번호의 일부를 이미 가지고 있을 수 있는 경우도 있습니다. 복잡도를 높이기 위해서는 10자리 이상으로 만드는 것이 좋으며, 숫자나 특수기호를 중간 중간에 섞어 주는 것이 좋습니다. 영문자의 경우에도 대소문자를 섞어서 쓰도록 합니다.
  2. 아이디는 가급적 여러개를 만듭니다. 비밀번호도 모든 사이트가 다 다르면 좋겠지만, 그게 어렵다면 최소 4개 이상을 만들어서 아이디-비밀번호 조합을 매번 다르게 사용합니다. 즉 다음 계정이 뚫리더라도 네이버로는 똑같은 아이디와 비밀번호로 로그인 할 수 없도록 해야 합니다.
  3. 한 번 만들어진 계정에 대해서는 주기적으로 비밀번호를 변경해 줍니다. 이는 상당히 번거로우며, 변경한 후에는 헷갈리기도 하고 손에 익지 않은 문자 배열을 타이핑하면서 오타도 많이 생길 수 있습니다. 하지만 명심하시길, 자신이 편한 만큼 해커도 편하게 로그인할 수 있습니다.
  4. 아이디나 주민번호를 잊어서 찾기 기능을 이용해 보신 적이 있으신지요? 대부분의 사이트는 본인 확인을 위한 질문을 던집니다. 절대, 정답을 기재하지 마세요. 본인 확인용 질문은 본인만 알고 있는 ‘사실’을 묻는 것이 아닙니다. 그 질문에 본인만 답할 수 있도록 해야 합니다. 따라서 당연히 자신과 상관없고,  예측이 불가능해야 안전합니다. ‘가장 존경하는 사람은?’ 등의 질문에 ‘고양이’라고 쓰는 것이 차라리 바람직합니다.
  5. 개인정보를 갖다 바친 사이트라면, 자신이 평소에 사용하는 PC가 아닌 경우 가급적 로그인하지 않습니다. 특히 PC 방과 같은 곳에서는 주의해야 합니다. 그리고 가능하면 개인 정보를 갖다 바쳐야 하는 사이트는 아예 가입을 하지 않는 것이 좋습니다. 항상 기억하세요 웹에 올리는 모든 자료는 결국에는 공개되는 자료입니다. 여차하는 사이에는 본인이 아무리 후회해도 사라지지 않는 자료들도 있습니다. 또한 공용 PC 등에서 로그인 해야 하는 경우에는 화상 키보드를 사용하여 문자 입력할 것을 권장합니다. 금융거래나 쇼핑 같은 중요 정보를 입력해야 하는 일은 최대한 피해야 합니다.

액티브엑스 설치

가장 문제가 되는 것은 개인적으로 액티브엑스 설치입니다. 액티브엑스는 그 자체로는 좋다 나쁘다를 딱 잘라 말할 수는 없습니다. 아니, 그 전에 엑티브액스가 무엇을 하는 녀석인지를 먼저 알아야 합니다.

일반적으로 웹 브라우저는 인터넷에 게재된 자료를 보는 뷰어의 역할을 합니다. 그리고 웹 환경은 착한 사이트만 있는 것은 아니지요. 그래서 웹 브라우저는 웹 문서를 표시하는 기능 이외의 기능은 철저히 제한하려 합니다. 즉 멋모르고 웹사이트에 접속하는 사용자들에게 악의적인 사이트 운영자가 나쁜 짓을 할 수 없도록 가능한 한 실행 가능한 코드들은 그 영향력을 웹 브라우저 혹은 웹 페이지 내에 제한하게 됩니다.그러다보니 웹 문서 뷰어의 이상의 기능을 필요로 하는 경우에는 별도의 프로그램을 만들어서 사용하게 되는데, 이 것을 웹 상에서 가능하게 해주는 기술이 액티브엑스입니다. 즉, 브라우저 내의 필폐공간과 사용자 시스템 사이의 다리 역할을 해서 웹 사이트가 사용자 시스템을 제어할 수 있도록 하는 기술입니다.

이 부분은 결국 ‘권한’에 관련된 내용이며, 엑티브엑스는 운영체제 입장에서는 여러분이 직접 내려 받거나 CD로 설치하여 실행하는 프로그램들과 동등한 권한을 갖게 됩니다. 예를 들자면 온라인 게임들은 대부분이 웹 사이트에서 ‘게임 실행’ 버튼을 클릭하여 게임을 실행합니다. 즉 브라우저 내의 버튼으로 브라우저 외부의 다른 프로그램을 실행하는 것이지요. 그런데, 이것이 단순한 실행 뿐만아니라 파일을 새로 내려 받아 설치할 수도 있으며, 기존 파일을 삭제하거나 수정할 수도 있고, 심지어는 레지스트리를 변경할 수도 있습니다. 즉 PC 구석구석을 제어할 수 있는 상당히 큰 권한이 웹페이지 제작자에게 돌아가는 것입니다.

그리고 사용자들이 액티브엑스를 설치하기 전에 만나는 보안 경고창은 이러한 이야기를 전혀 하지 않습니다. 그저 ‘확인되지 않은 소프트웨어 설치가 시스템에 악영향을 끼칠지도 모른다’고만 하지요. 문제는 전문가가 아닌 이상에는 이러한 ‘소프트웨어’를 확인할 방법이 전혀 없습니다. 기껏해야 개발사 명이 무언지만 표시될 뿐이고, 정말 나쁜 놈이 악의를 품고 퍼뜨리는 액티브 엑스라면 거기에 듣보잡 개발사 이름이 아닌 정부 기관이나 대형 소프트웨어 업체의 이름을 사칭하는 것도 어려운 일이 아니라는 것이지요.

사용자가 ‘설치’ 버튼을 클릭하는 그 순간 PC 전체는 위험에 거의 고스란히 노출되게 됩니다. 즉 설치가 너무 쉬워서 탈이지요. 이 때문에 윈도 비스타 이후버전 부터는 UAC라는 것을 적용합니다. 즉 현재 실행 중인 프로그램(브라우저)이 자기 권한보다 더 높은 권한이 필요한 작업을 수행하고자 할 때 사용자의 허락을 받도록 하는 것입니다. 따라서 액티브엑스 설치가 더욱 번거로워지는 것입니다. (같은 말로는 사용자의 PC가 보다 안전해 진다는 의미입니다.) 그런데, 이런 부분은 서비스 제공 업체 (혹은 만에 하나 있을지 모를 악의적인 해커)입장에서는 액티브엑스 설치를 가로막는 장애 요소가 될 뿐입니다. 덕분에 왠지 불법의 냄새가 나는 공유사이트에서부터 금융 업체에 이르기까지 별도의 안내 페이지를 만들어 ‘확인되지 않은 소프트웨어 설치가 용이하도록’ 이러한 옵션을 끄는 안내 페이지를 상세하고 친절한 스크린샷과 함께 제공합니다. 즉 자신들이 ‘믿을만 하다’는 권위를 적용하여 되려 보호해야 할 고객들을 무장 해제 시키고 있습니다.

따라서 다음의 방식을 추천합니다.

  1. 인터넷 익스플로러의 도구 > 인터넷 옵션에서 보안과 관련된 항목 중에 ‘서명되지 않은’, ‘확인되지 않은’ 과 같은 항목은 모두 자동 실행이나 설치를 막아야 합니다. 잘 모르겠다면 일단 ‘기본값 복원’이라도 합니다.
  2. 액티브 엑스는 일단 설치하지 않고 웹사이트를 사용해 봅니다. 만약 액티브엑스를 설치하지 않으면 안내 페이지로만 이동하고 서비스를 이용할 수 없다면, 비슷한 기능을 제공하는 다른 서비스를 이용하도록 합니다. 최근 네이버의 N드라이브 등의 서비스만 보아도 예전에 엑티브엑스로 떡칠했던 사이트와 똑같은 기능을 플래시로 구현하여 제공합니다. 액티브엑스를 사용하지 않는 똑같은 서비스는 찾아보면 반드시 존재합니다.
  3. 아에 보안 경고창을 띄우지 않고 몰래 설치되는 프로그램들도 존재합니다. (아마 이미 설치 승인한 액티브엑스가 몰래 함께 설치하는 경우일 것입니다.) 따라서 인터넷 익스플로러를 아예 사용하지 않을 것을 권장합니다. 훨씬 빠르고 안전한 파이어폭스, 사파리, 오페라, 구글크롬과 같은 브라우저들이 있습니다. 어렵다고요? 설마 여러분은 저 위에 프로그램 메뉴을 통해서 인터넷을 사용하시는 건가요? 웹 브라우저의 경우에는 모두 브라우저가 표시하는 웹 페이지를 이용하는 것입니다. 인터넷 익스플로러를 다른 브라우저로 바꾼다고 이용이 어려울 이유는 전혀 없습니다. 다만 액티브 엑스가 아예 동작하지 않아 일부 사이트에서는 불편함이 따를 수 있습니다만, 바꿔 말하면 그만큼 더 안전하다는 것입니다. (다시 기억하세요, 여러분이 편히 쓰면 해커도 여러분의 PC를 편히 쓰게 됩니다.)
  4. 다른 프로그램이 있는 데 웹상에서 같은 기능을 제공한다면 액티브엑스를 설치하라고 하면, 그냥 같은 기능을 하는 프로그램을 직접 설치해서 독립적으로 사용합니다.
  5. 평소에 관리자 권한으로 PC를 사용하지 않습니다. 이는 잘 모를 수 있는 부분인데, 지금 당장 ‘제어판’으로 가서 사용자를 열어 새 사용자를 한 만듭니다. 관리자 등급이 아닌 일반 사용자로 설정하고 암호도 설정합니다. 그런 다음 재부팅하여 항상 암호를 입력하고 로그인하여 PC를 사용하는 습관을 들이도록 합니다. 이렇게 해야 만에 하나 여러분이 좋지 못한 프로그램을 설치하는 실수를 저지르더라도 피해를 덜 입을 수 있습니다. 계속해서 강조하지만 ‘안전’하고 싶다면 그만큼 불편해야 합니다. 이건 진리입니다.

데이터관리

끝으로 데이터를 대하는 기본 자세에 대해서 한 말씀 드리고자 합니다. 컴퓨터에 보관되는 데이터는 모두 ‘디지털’ 이라는 특성을 가지고 있습니다. 디지털 데이터의 큰 특징은 원본과 완전히 동일한 복사본을 만들 수 있다는 뜻이며, 이는 누가 훔쳐가도 빈자리가 없기 때문에 훔쳐갔는지 조차 모른다는 뜻과 동일합니다. 따라서 ‘보안’이나 ‘개인의 민감한 정보’와 관련된 데이터는 하드 디스크가 됐든 USB가 됐든 디지털화해서 보관하면 안됩니다. 비밀 번호 여러개 만들어서 관리하기 힘들다고 이걸 텍스트 파일로 만들거나 이메일로 저장해 두는 경우가 있습니다. 이러면 안됩니다. 반드시 종이에 써서 별도로 잘 보관합시다. 특히 이메일에 보관해 두는 것 만큼 바보같은 짓도 없습니다. 그리고 은행의 보안카드 등도 마찬가지 입니다. 절대 카메라로 찍지 맙시다. 휴대폰으로 찍어서 가지고 다니는 분들도 많은데, 큰 일납니다. 핸드폰을 잃어버릴 수도 있고, 새 기종으로 바꿀 때 보통 보상 기변 등으로 기존 핸드폰을 대리점에 갖다 주지 않습니까? 그냥 새어 나가는 겁니다. 지웠다구요? 죄송하지만 요즘은 파일 복원 툴들이 너무 강력해서 말이지요. 몇 분이면 다 되살릴 수 있습니다.

사람에 초점을 맞추어야 한다

구글에서 이야기하는 비밀번호 관리 방법 중에 이런 항목이 있습니다. “앵무새를 조심하세요” 크래커(악의적인 해커)들은 영화에서나 보듯이 암호를 척척 풀어내는 프로그램을 만들어서 활용하는게 아니라, 타겟이 되는 사람의 헛점을 이용합니다. 그게 훨씬 쉽고 싸니까요. 아무리 좋은 보안 시스템을 갖추고 있다한들 시스템 관리 패스워드를 싸이월드에 올려놓고 사용하는 사람이 관리자라면 한 방에 뚫린다는 것입니다. 결국 보안이라는 분야는 기술이 아닌 사람과 사람의 습성을 다루는 분야가 되어야 합니다. 그리고 이러한 부분에 대해서는 아무도 신경을 쓰지 않으며 그저 그 성능조차 의심스러운 보안 플러그인만 덕지덕지 설치하면 안전해졌다라고 생각하는 사람들이 정책을 수립하는 나라에 우리는 살고 있습니다. 덕분에 사용자들은 더욱 더 무심하게 액티브엑스를 설치하며 자신을 마음껏 무장해제 하고 다닙니다. 이것이 우리나라의 현실입니다. 그래서 저는 방송 같은 곳에서 ‘IT 강국’이라는 말이 나올 때 마다 이제는 얼굴이 화끈거리면서 부끄럽습니다.

하고 싶은 이야기는 더 있지만 글이 너무 길어졌기에 오늘은 이만 줄이고자 합니다. 그리고 다음번에는 이러한 보안에 방해가 되는 쓰레기 같은 프로그램들의 행태에 대해서 한 번 다시 살펴 볼까 합니다. 그럼 그 때까지 행복한 나날 되세요.