2012년 8월 30일 목요일

사회 공학 기법과 악성코드

2007년 4월 말에 작성하여 세일즈마케팅 팀에 전달하였던 "사회 공학 기법과 악성코드" 원고입니다. 과거에도 그랬지만 현재에도 사회 공학(Social Engineering) 기법은 보안에 있어서 중요하고 위험한 공격 기법 중 하나입니다. 다른 해킹 기법들은 모두 시스템들을 대상으로 이루어집니다만 사회 공학 기법은 그 시스템들을 관리 및 감독하는 사람을 대상으로 이루어지기 때문입니다.
사회 공학 기법으로 유명한 해커로는 케빈 미트닉(Kevin Mitnick)을 들 수 있으며, 그의 자서전 "네트워크 속의 유령(Ghost in the Wires)"를 통해서도 사회 공학 기법들로 그가 어떠한 정보들을 얻었으며, 어떠한 속임수들로 사람들을 해킹했는지 비교적 자세하게 나옵니다.


출, 퇴근 시간을 이용해 그의 자서전을 절반 정도 읽은 상태입니다. 이 책을 다 읽고 나면 케빈 미트닉이 저술한 다른 2권의 사회 공학 기법 관련 서적들과 함께 블로그에 다루어 보도록 하겠습니다.

제가 작성한 "사회 공학 기법과 악성코드"는 케빈 미트닉과 같이 시스템 해킹을 위한 관점에서 사회 공학 기법을 다루지는 않았습니다. 악성코드 분석 관련 업무를 진행하면서 악성코드가 시스템 감염을 위해서 어떠한 기법들을 이용해 시스템 사용자들의 의심을 피해가는지를 주로 다루고 있습니다.

+---------------------------

우리는 최근 뉴스 또는 신문 등의 매체들을 통해서 "전화 사기"라는 신종 사기 수법에 대한 기사들을 심심치 않게 들을 수 있다. 이 "전화 사기"라는 신종 사기로 인해 많은 사람들이 금전적인 피해를 입는 사건들이 증가하고 있어 우리 사회의 커다란 사회 문제로 발전하고 있는 양상이다.


이와 같이 우리 사회의 심각한 사회 문제로 발전하고 있는 "전화 사기" 사건들의 내용을 자세히 살펴보면 공격자들은 몇 가지 공통된 내용들을 피해자들에게 언급하고 있다는 것을 알 수 있다. 그 첫 번째가 고위 공무원, 금융 관련 기관의 직원과 같이 신뢰할 수 있는 사람임을 사칭한다는 점이다. 그리고 두 번째로는 자신 또는 주위의 가까운 사람들에게 심각한 금전적인 문제가 있다는 것과 같이 쉽게 관심을 가질 수 있는 이야기를 한다는 점이다. 마지막으로 앞서 언급하였던 문제점을 해결하기 위한 거짓 방안을 피해자에게 제시함으로 피해자가 이를 행동으로 옮기도록 만든다는 점이다.
평소 정보 보안(Information Security)에 관심이 있었던 사람이라면 앞서 언급한 이 세가지 공통점이 정보 보안(Information Security)에서 언급하고 있는 사회 공학(Social Engineering) 기법과 유사한 공격 형태라는 것을 쉽게 파악 할 수가 있다. 그러나 정보 보안(Information Security)에서 언급하는 사회 공학(Social Engineering) 기법과 조금 다른 점이라면 공격자(Social Engineer)의 최종 목적이 컴퓨터 시스템의 관리자 권한 획득이나 중요한 데이터 유출인 반면에 최근에 발생하고 있는 "전화 사기"의 공격자는 피해자의 금융 정보를 이용한 금전 갈취가 최종 목적인 만큼 이에 따른 피해는 훨씬 더 심각하고 직접적이라고 볼 수 있다.
이렇게 심각한 피해를 유발하는 "전화 사기"의 근간을 이루고 있는 사회 공학(Social Engineering) 기법은 어떠한 것이며 이러한 기법의 공격자(Social Engineer)는 어떠한 방식으로 공격을 수행하는지 알아보도록 하자. 그리고 더 나아가 악성 코드(Malicious Code)에서는 사회 공학(Social Engineering) 기법을 어떠한 방식으로 사용하고 있는지 알아보도록 하자. 마지막으로는 이러한 공격에 대해서 어떠한 방식으로 대응을 하고 조치를 하여야 하는지도 함께 알아보도록 하자.

1. 사회 공학(Social Engineering) 기법

사회 공학(Social Engineering) 기법에 대해 정보 보안(Information Security)과 관련한 문서와 서적들에서는 대부분이 유사한 형태로 정의를 내리고 있다. 이 중에서도 대부분이 공통적으로 Harl의 "People Hacking"이라는 사회 공학(Social Engineering) 기법에 관하여 다룬 서적에서 다음과 같은 문구를 가장 많이 인용하고 있다.

"…The art and science of getting people to comply with your wishes."

이 문구를 번역하자면 "사람들로 하여금 당신이 원하는 바에 동의하도록 만드는 예술이자 과학." 정도라고 할 수 있다. 사실 이 정의는 조금 추상적인 개념이 적용되어 있는데 여기에다 필자가 생각하는 사회 공학(Social Engineering) 기법의 특징과 형태를 조금 더 덧붙여 구체화 시킨 정의를 내린다면 다음과 같다고 할 수 있다.

"신뢰할 수 있는 사람으로 가장하여 다른 사람들로 하여금 자신의
 목적을 위해 행동하도록 만드는 기술."

이렇게 정의를 내릴 수 있는 사회 공학(Social Engineering) 기법은 공격자(Social Engineer)가 공격 대상이 되는 개인에게 어떠한 수단으로 접근하는가에 따라서 인간 기반(Human Based)과 컴퓨터 기반(Computer Based)으로 다시 나누어지게 된다.
인간 기반(Human Based)은 공격자(Social Engineer) 스스로가 공격 대상에게 직접적인 접근이나 전화 등을 이용하여 접근하는 경우를 말한다. 그리고 컴퓨터 기반(Computer Based)은 인간 기반(Human Based)과는 조금 다르게 공격자(Social Engineer)가 공격 대상에게 악성코드, 일반적인 컴퓨터 프로그램 그리고 웹 사이트 등을 수단으로 이용하여 접근하는 경우를 이야기하게 된다. 이렇게 사회 공학(Social Engineering) 기법은 2가지 형태로 나누어 볼 수 있지만 일반적으로 사회 공학(Social Engineering) 기법을 이야기할 경우에는 대부분이 인간 기반(Human Based)의 수단을 이용하는 공격 형태를 지칭하는 경우가 일반적 이다.

다음에서는 이러한 정의와 분류를 가지는 사회 공학(Social Engineering) 기법의 공격이 공격자(Social Engineer)와 공격 대상 사이에서 어떠한 흐름으로 진행되는지 살펴 보도록 하자.

2. 사회 공학(Social Engineering) 기법의 공격 흐름

대부분의 사회 공학(Social Engineering) 기법을 이용한 공격자(Social Engineer)는 공격 대상에게 일반적으로 4가지 단계를 거쳐 공격이 이루어지고 피해가 발생하게 된다. 이러한 사회 공학(Social Engineering) 기법의 공격 흐름을 그림으로 표현한 것이 다음 [그림 1]과 같다.

[그림 2 - 사회 공학(Social Engineering) 기법의 공격 흐름]

사회 공학(Social Engineering) 기법을 사용하는 공격자(Social Engineer)는 공격 대상이 되는 특정 인물을 선정하였다면 다음과 같은 흐름으로 사회 공학(Social Engineering) 기법의 공격을 진행하게 된다.

1) 정보 수집(Information Gathering)

공격자(Social Engineer)는 제일 먼저 공격 대상과 관련된 가족 관계, 직장 생활 그리고 사회 모임 등의 개인적이거나 사회적인 활동 등과 관련된 다양한 정보들의 수집을 시도하게 된다. 공격자(Social Engineer)는 이 단계에서 수집한 다양한 정보들을 다음 단계인 관계 형성(Developing Relationship)을 위해서 사용하게 된다. 일반적으로 공격자(Social Engineer)는 공격 대상과 관련된 정보들을 수집하는 기법들은 다음과 같이 나누어 볼 수 있다.

- 직접적인 접근(Direct Approach)
공격자(Social Engineer)는 공격 대상 또는 공격 대상과 관련된 사람들에게 직접적으로 접근하여 관련된 정보들을 알아내는 방법을 이야기한다. 이 방법은 공격자(Social Engineer)가 공격 대상 또는 공격 대상과 관련된 주위 인물들을 직접 방문하여 우회적인 질문을 통하여 공격 대상의 개인적이거나 사회 활동 등과 관련된 다양한 정보들을 파악하는 방식이다.

- 어깨너머로 훔쳐보기(Shoulder Surfing)
공격자(Social Engineer)는 공격 대상의 주위에서 직접적인 관찰을 통하여 그가 기업 내에서 수행하는 업무 내역과 전화 통화 내역 등을 어깨 너머로 훔쳐보면서 공격 대상과 관련된 정보들을 수집하는 방식이다.

- 휴지통 뒤지기(Dumpster Diving)
공격자(Social Engineer)는 공격 대상이 가정 또는 직장에서 무심코 버리는 메모지, 영수증 또는 업무 중 생성한 문건 등 공격 대상과 관련된 문서들을 휴지통에서 수거하여 유용한 정보들을 수집하는 방식이다.

- 설문 조사(Mail-outs)
공격자(Social Engineer)는 공격 대상의 관심을 끌만한 사항을 설문지로 작성한 후 이 설문조사를 통하여 공격 대상의 개인적인 취미, 흥미 사항, 가족 사항과 관련된 개인 정보들과 함께 동호회 활동과 같은 사회적인 활동과 관련된 다양한 정보를 수집하는 방식이다.

- 시스템 분석(Forensic analysis)
공격 대상이 사용하는 컴퓨터 시스템에 공격자(Social Engineer)는 직접적이거나 간접적인 접근을 통하여 해당 컴퓨터 시스템에 존재하는 공격 대상의 작성한 다양한 문서들 그리고 웹 사이트 방문 기록 등 온라인 상에서의 활동과 관련된 다양한 정보들을 수집하는 방식이다.

- 인터넷(Internet)
인터넷(Internet)에 존재하는 다양한 검색 엔진(Search Engine)을 이용하여 인터넷(Internet)에 존재하는 공격 대상과 관련된 개인적인 정보 및 사회 활동과 관련된 다양한 정보들을 수집하는 방식이다.

2) 관계 형성(Developing Relationship)

1 단계인 정보 수집 단계에서 공격자(Social Engineer)는 공격 대상과 관련된 다양한 정보들을 충분히 수집하였다고 판단할 경우, 공격자(Social Engineer)는 이제 공격 대상과 직접적인 관계를 형성하기 위해 2 단계인 관계 형성(Developing Relationship) 단계로 발전하게 된다. 
앞서 이야기한 바와 같이 사회 공학(Social Engineering) 기법의 인간 기반(Human Based) 또는 컴퓨터 기반(Computer Based)의 수단 들을 공격자(Social Engineer)는 적절하게 활용하여 공격 대상에게 접근하게 된다. 이 관계 형성(Developing Relationship) 단계에서는 사회 공학(Social Engineering) 기법에서는 절대 빼놓을 수 없는 가장(假裝, Masquerade)이라는 것이 공격자(Social Engineer)에 의해 발생하게 된다.
가장(假裝, Masquerade)이라는 의미 자체에서 알 수 있듯이 공격자(Social Engineer)는 공격 대상에게 자신의 본 모습을 숨기고 다른 누군가로 위장하여 접근하게 된다. 이렇게 다른 누군가로 가장(假裝, Masquerade)하여 공격 대상에게 접근하는 것은 공격 대상이 가질 수 있는 경계심을 없애고 신뢰할 수 있는 사람이라는 신뢰감을 형성하기 위한 것이다. 이 신뢰감을 바탕으로 공격자(Social Engineer)는 자신이 가진 특수한 목적을 달성하기 위한 사항을 다음 단계인 공격(Exploitation)에서 요청하게 된다. 
이 관계 형성(Developing Relationship) 단계에서는 앞서 설명한 바와 같이 공격자(Social Engineer)는 공격 대상에게 믿을 수 있는 사람이라는 신뢰감을 심어주기 위해서 일반적으로 다음 유형의 인물들로 가장(假裝, Masquerade)하게 된다.

- 중요한 인물(Important User)
공격자(Social Engineer)는 공격 대상의 직장 상사나 정부 기관의 고위 공무원 등으로 위장한다. 공격 대상은 공격자(Social Engineer)의 이러한 가장(假裝, Masquerade)으로 인해 그가 요청하는 사항을 쉽게 거부하거나 거절하지 못하게 된다.

- 도움이 필요한 인물(Helpless User)
공격자(Social Engineer)는 공격 대상의 도움을 절대적으로 필요로 하는 인물로 위장한다. 이로 인해 공격 대상은 자신이 아니면 공격자(Social Engineer)를 도와 줄 사람이 없음으로 자신이 반듯이 도와주어야만 한다고 생각하게 된다.

- 지원 인물(Support Personnel)
공격자(Social Engineer)는 공격 대상의 기업 내, 외부의 컴퓨터 시스템 또는 관공서 등의 지원 부서 인물로 위장한다. 이러한 위장으로 인해 공격자(Social Engineer)는 공격 대상에게 현재 심각한 문제가 있음을 알리고 이를 해결하는데 자신이 도움을 줄 수 있는 인물로 묘사하게 된다.

- 역 사회 공학(Reverse Social Engineering)
앞서 설명한 방식과는 조금 다른 접근 방식인 역 사회 공학(Reverse Social Engineering)이라는 기법이 있다. 가장(假裝, Masquerade)을 이용한 기법에서 공격자(Social Engineer)는 모두 공격 대상에게 도움을 요청하는 인물들로 위장하는 것이 일반적인 유형이다. 하지만 이 역 사회 공학(Reverse Social Engineering) 기법은 공격자(Social Engineer)가 공격 대상이 모르게 미리 특정한 문제를 유발시킨 후 공격 대상이 자발적으로 공격자(Social Engineer)에게 도움을 요청하도록 만드는 기법이다. 이 기법을 통해서 공격자(Social Engineer)는 공격 대상이 가지고 있는 특정 문제를 해결함으로써 공격 대상에게 공격자(Social Engineer) 자신을 도움을 준 신뢰할 수 있는 좋은 사람으로 쉽게 판단할 수 있게 만든다.

3) 공격(Exploitation)

세 번째 단계인 공격(Exploitation)은 공격자(Social Engineer)가 수집한 다양한 정보들을 바탕으로 공격 대상과 충분한 신뢰감을 형성하였다고 판단 할 경우에 진행하게 된다. 특히 이 세 번째 단계로 넘어가기 위해서는 공격자(Social Engineer) 자신을 공격 대상이 더 이상 의심하지 않는다라는 판단이 중요하게 작용하게 된다. 
이러한 신뢰 관계가 충분히 형성이 되면 공격자(Social Engineer)는 자신의 특수한 목적을 이룰 수 있는 사항을 공격(Exploitation)이라는 단계에서 공격 대상에게 요청하게 된다. 이 단계에서 공격자(Social Engineer)는 일반적으로 다음과 같은 형태를 보임으로서 공격 대상으로 하여금 자신이 요청한 사항을 쉽게 거부하지 못하도록 한다.

- 의견 대립 회피
공격자(Social Engineer)는 공격 대상에게 자신의 특수한 목적을 위한 행동을 요청할 때 공격 대상이 지적하거나 이야기하는 사항 등에 대해서 적절한 동의를 보여 공격 대상과는 다른 의견으로 인해 대립과 충돌이 발생하지 않도록 한다. 그럼으로써 공격자(Social Engineer) 자신이 요청한 사항에 대해서 공격 대상이 거부를 하지 않고 긍정적으로 수긍할 수 있는 상황을 연출하게 된다.

- 사소한 요청에서 큰 요청으로 발전
공격자(Social Engineer)는 공격 대상에게 처음부터 자신이 가지고 있는 특수한 목적에 부합하는 사항을 요청하지 않고 공격 대상이 느끼기에 사소한 문제라고 판단되는 작은 사항부터 요청하여 동의를 구하게 된다. 그 이후 점진적으로 큰 요청 사항을 이야기하여 공격 대상이 쉽게 거절하지 못하는 상황을 연출하게 된다.

- 감정에 호소
공격자(Social Engineer)는 공격 대상에게 자신의 어려운 상황을 이야기함으로써 공격 대상이 측은지심(惻隱之心)과 같은 감정을 느끼도록 만든다. 공격 대상 스스로가 자신이 아니면 공격자(Social Engineer)의 어려운 문제를 해결 해줄 수 없다는 연민의 감정으로 인해 공격자(Social Engineer)의 요청 사항을 수락하는 상황을 연출하게 된다.

- 신속한 결정
공격자(Social Engineer)는 공격 대상에게 자신의 특수한 목적을 수행할 요청 사항을 이야기할 때 의견이 대립되거나 다른 문제가 발생 할 경우, 신속하게 공격 대상과 타협을 하거나 양보를 한다. 공격자(Social Engineer)는 절대 무리하게 요청 사항을 요구하여 공격 대상과 의견이 대립되는 어려운 상황을 연출하지는 않는다.

4) 실행(Execution)

마지막 실행(Execution) 단계에서 공격 대상은 공격자(Social Engineer)가 요청한 사항에 대해 직접적인 실행으로 옮김으로써 이로 인해 실질적인 피해가 발생하게 된다. 그리고 공격자(Social Engineer)는 요청 사항으로 인해 확보한 유형의 또는 무형의 자신을 이용하여 실질적인 목적을 수행할 수 있게 된다. 이렇게 공격자(Social Engineer)의 요청을 수락하는 공격 대상은 대부분이 다음과 같은 상황으로 기인한다.

- 책임 회피
공격 대상은 공격자(Social Engineer)의 요청 사항을 수행하지 않을 경우에 자신에게 유형의 또는 무형의 어떠한 책임이 발생하게 될 것으로 생각하게 된다. 이로 인해 공격 대상은 공격자의 요청 사항을 수락하고 실행하게 된다.

- 보상 심리
공격 대상은 공격자(Social Engineer)의 요청 사항을 수행할 경우 자신에게 유형의 또는 무형의 어떠한 대가를 받게 될 것으로 판단하게 된다. 이로 인해 공격자(Social Engineer)의 요청 사항을 긍정적으로 수락하고 적극적으로 실행하게 된다.

- 도덕적 의무감
공격 대상은 공격자(Social Engineer)의 요청 사항을 수행하지 않음으로 인해 스스로의 양심적 가책을 받을 수 있다고 판단하게 된다. 이러한 도덕적 의무감으로 인해 공격자(Social Engineer)의 요청 사항을 수락하고 도와주게 된다.

- 사소한 문제
공격 대상은 공격자(Social Engineer)의 요청 사항이 아주 사소한 문제임으로 이를 수락하고 수행하더라도 크게 심각한 문제가 발생하지 않을 것이라고 쉽게 판단하게 된다. 그로 인해 쉽게 공격자(Social Engineer)의 요청을 수락하고 실행 하게 된다.

이제까지 우리는 사회 공학(Social Engineering) 기법이 무엇이면 정보 수집(Information Gathering), 관계 형성(Developing Relationship), 공격(Exploitation) 그리고 실행(Execution)과 같은 4 단계를 통해서 공격이 어떻게 발생하게 되는 지를 알아 보았다.
그렇다면 이러한 사회 공학(Social Engineering) 기법이 악성코드(Malicious Code)에서는 어떠한 방식으로 사용되고 있는지도 한번 살펴 보도록 하자.

3. 악성코드(Malicious Code)와 사회 공학(Social Engineering) 기법

앞서 사회 공학(Social Engineering) 기법에는 접근 수단을 무엇으로 하느냐에 따라서 인간 기반(Human Based)과 컴퓨터 기반(Computer Based)으로 나누어 진다고 이야기 하였다. 이 중에서 컴퓨터 기반(Computer Based) 수단에서는 악성코드(Malicious Code)를 사용하여 공격자(Social Engineer)가 공격 대상과 관련된 정보를 수집하기 위한 목적으로 많이 사용되고 있다고 이야기 하였다. 여기에서 사용되는 악성코드(Malicious Code)는 대부분이 키 입력을 후킹(Hooking)하는 키로거(Keylogger)와 원격 제어 형태의 백도어(Backdoor)류의 트로이목마(Trojan Horse) 형태가 많이 사용되고 있다.
그러나 악성코드(Malicious Code)에서 사용하는 사회 공학(Social Engineering) 기법은 공격대상의 정보 수집을 위한 목적이 아니라 컴퓨터 시스템을 감염시키기 위한 목적으로 사회 공학(Social Engineering)이라는 수단을 많이 이용하고 있다.
그리고 웜(Worm) 형태의 악성코드(Malicious Code)에서 특히나 많이 사회 공학(Social Engineering) 기법을 사용하나 최근에 와서는 파일을 감염시키는 바이러스(Virus) 형태에서도 이러한 사회 공학(Social Engineering) 기법을 사용하는 예가 간혹 발견되기도 한다.
그렇다면 이 사회 공학(Social Engineering) 기법을 이용하여 컴퓨터 시스템을 감염시키는 악성코드의 형태에 대해서 자세히 알아 보도록 하자.

1) 매스 메일러 (Mass-Mailer)에서의 사회 공학 기법

전자 메일의 첨부 파일로 자신의 복사본을 첨부하여 급속한 확산을 시도하는 웜(Worm)의 형태인 매스 메일러(Mass-Mailer)는 사회 공학(Social Engineering)을 이용한 감염 기법과 아주 밀접한 관계를 가지고 있다. 그 이유가 매스 메일러(Mass-Mailer)의 전파 수단인 전자 메일을 읽는 주체가 바로 사람이며 그 사람으로 하여금 웜(Worm)의 복사본인 첨부 파일을 컴퓨터 시스템에서 실행하도록 유도하기 위해서는 필연적으로 사회 공학(Social Engineering) 기법을 이용할 수 밖에 없다.

[그림 3 - 젤라틴(Win32/Zhelatin.worm) 웜이 전송하는 전자 메일]

- 신뢰할 수 있는 송신자로 위장
최근에 발견되는 매스 메일러(Mass-Mailer) 대부분은 최초 감염이 되어 수행하는 작업 중 하나가 바로 해당 컴퓨터 시스템에 존재하는 전자 메일 주소 수집이다. 전자 메일 주소를 수집하는 것에는 널리 확산을 시키기 위한 목적도 있다. 하지만 개인 또는 기업 컴퓨터 시스템에 존재하는 전자 메일 주소 대부분이 평소에 알고 지내는 친분이 있는 사람 또는 업무적으로 연락하는 사람들이 대부분이다. 이러한 사람들의 전자 메일 주소를 송신자로 사용하게 된다면 수신자의 입장에서는 평소 친분이 있는 신뢰할 수 있는 사람이 보낸 전자 메일로 판단 할 수 밖에 없다. 그리고 [그림 3]의 젤라틴(Win32/Zhelatin.worm) 웜의 전자 메일과 같이 널리 알려진 기업의 기술 지원 부서에서 보낸 것처럼 송신자를 위장하여 보내는 경우도 있다.
이렇게 신뢰할 수 있는 송신자로 위장하는 것은 사회 공학(Social Engineering) 기법의 공격 흐름과 비교하자면 2단계인 관계 형성(Developing Relationship) 단계와 유사한 형태를 보인다.

- 흥미 또는 주의를 끄는 내용의 전자 메일 본문
매스 메일러(Mass-Mailer)에서 전자 메일 본문은 사용자로 하여금 감염을 위한 행동을 취하도록 수신인이 흥미를 끌만한 사회적인 이슈 또는 [그림 3]의 젤라틴(Win32/Zhelatin.worm) 웜의 전자 메일처럼 악성코드(Malicious Code)에 감염된 것으로 보이니 첨부한 보안 패치를 실행하라는 등과 같이 첨부한 파일을 실행하라는 요구 사항을 메일 본문에 담고 있다. 이러한 형태는 사회 공학(Social Engineering) 기법의 공격 흐름 중 3단계인 공격(Exploitation) 단계와 유사하다고 볼 수 있다.

- 정상 파일명으로 위장한 첨부파일
앞서 매스 메일러(Mass-Mailer)는 전자 메일에 자신의 복사본을 첨부한다고 하였다. 첨부하는 파일 형태는 전자 메일 본문의 내용과 연관 관계가 있는 파일명을 사용하는 경우가 일반적이다. [그림 3]의 전자 메일은 악성코드(Malicious Code)에 감염되었으니 전자 메일에 첨부된 보안 패치를 적용하라는 내용임으로 첨부 파일 역시 마이크로소프트(Microsoft)에서 배포하는 실제 보안 패치와 유사한 형태의 "Update-KB4895-x86.zip"이라는 파일명을 사용하고 있다. 이와 같이 메스 메일러(Mass-Mailer)에서 첨부하는 파일명은 대부분이 정상 프로그램의 설치 파일 그리고 동영상 파일 등으로 위장 경우가 일반적이다.

2) 인스턴트 메신저 웜(Instant Messenger Worm)에서의 사회 공학 기법

우리가 자주 사용하는 MSN, ICQ, AOL과 같은 프로그램들을 인스턴트 메신저(Instant Messenger)라고 부르고 있다. 이러한 프로그램을 전파의 수단으로 사용하는 악성코드(Malicious Code) 형태를 인스턴트 메신저 웜(Instant Messenger Worm)이라고 이야기하고 있다. 이러한 형태의 웜(Worm) 역시 매스 메일러(Mass-Mailer)만큼이나 사회 공학(Social Engineering) 기법을 철저하게 감염을 위한 수단으로 이용하고 있다.

[그림 4 - 야후(Yahoo) 메신저를 이용한 큐캔(Win32/Qucan.worm) 웜]

- 버디 리스트(Buddy List)의 인물들에게만 전송
인스턴트 메신저 웜(Instant Messenger Worm)은 매스 메일러(Mass-Mailer) 보다 더 쉽게 사회 공학(Social Engineering) 기법을 사용할 수가 있다. 인스턴트 메신저 웜(Instant Messenger Worm)은 실행되면 인스턴트 메신저(Instant Messenger)에 등록되어 있는 버디 리스트(Buddy List)의 인스턴트 메신저(Instant Messenger) 주소를 확보하게 된다. 확보한 인스턴트 메신저(Instant Messenger) 주소를 이용하여 상대방으로 메시지 전송 명령을 수행하게 된다. 그리고 생성한 메시지 창으로는 웜(Worm) 본체 또는 다운로드 할 수 있는 링크(Link)를 전송하게 된다. 이 때 대화 수신인이 관심을 끌만한 프로그램의 파일명 또는 웹 사이트 주소인 것처럼 위장을 하게 된다.
이러한 방식으로 인해 전자 메일을 이용하는 매스 메일러(Mass-Mailer)보다는 상대적으로 신뢰감이 높을 수 밖에 없음으로 메시지 수신인은 인스턴트 메신저 웜(Instant Messenger Worm)에 감염될 가능성이 높아지게 된다.

- 가십거리 등의 내용으로 위장
인스턴트 메신저(Instant Messenger)를 이용한 대화에서는 가십거리에서부터 업무적인 다양한 내용이 쉽게 오고 갈 수가 있다. 이러한 점으로 인스턴트 메신저 웜(Instant Messenger Worm)은 감염 수단으로 인해 인스턴트 메신저(Instant Messenger)를 감염 수단으로 쉽게 이용할 수 있다. 그리고 이러한 사항을 잘 보여주고 있는 예가 바로 [그림 4]에서처럼 큐캔(Win32/Qucan.worm) 웜이 버디 리스트(Buddy List)에 등록되어 있는 친구에게 재미 있는 것이라면서 악성코드(Malicious Code)를 다운로드 하는 링크(Link)가 있는 메시지 창이다.

3) P2P 웜(Worm)에서의 사회 공학 기법

P2P(Peer to Peer) 프로그램은 서버와 같은 시스템의 중간 경유 없이 바로 사용자들 사이를 직접적으로 연결하여 다양한 프로그램 등을 공유할 수 있도록 서비스 해주는 프로그램 형태를 이야기 한다. 이러한 프로그램으로는 우리는 이동키(eDonky), 카자(Kazaa)와 프루나(Pruna) 등을 들 수가 있는데 P2P 웜(Worm) 역시 사회 공학(Social Engineering) 기법을 이용하여 시스템을 감염 시키고자 시도한다.

[그림 5 - P2P 프로그램을 이용한 블린콤(Win32/Blinkom.worm) 웜]

- P2P 프로그램의 사용자들 사이에서만 확산
P2P(Peer to Peer) 프로그램의 특성상 P2P(Peer to Peer) 프로그램 사용자들은 해당 프로그램을 사용하는 사용자들 사이에서 자신이 원하는 프로그램을 검색하거나 해당 사용자가 공유해놓은 폴더에 존재하는 파일들을 다운로드 하는 것이 일반적이다. 이러한 P2P(Peer to Peer) 프로그램의 특성으로 인해 P2P(Peer to Peer) 웜(Worm) 역시 앞서 설명한 인스턴트 메신저 웜(Instant Messenger Worm)이나 매스 메일러(Mass-Mailer) 보다는 수동적인 형태의 감염 기법을 보이고 있다.
일반적으로 P2P(Peer to Peer) 웜(Worm)은 감염된 시스템의 프로그램 폴더 또는 레지스트리(Registry)를 검사하여 P2P(Peer to Peer) 프로그램에서 설정 해둔 P2P(Peer to Peer) 공유폴더가 있는지 확인하게 된다. P2P(Peer to Peer) 공유폴더가 설정되어 있다면 해당 폴더에 자신의 복사본들을 생성하고 경우에 따라서는 해당 P2P(Peer to Peer) 프로그램의 레지스트리(Registry)를 조작하여 사용자 모르게 새로운 P2P(Peer to Peer) 공유폴더를 생성하고 그 곳에 자신의 복사본을 생성하게 된다. 이러한 절차를 거치게 됨으로 불특정 다수가 감염의 대상이 되지 않고 해당 P2P(Peer to Peer) 프로그램의 사용자들만이 웜(Worm)의 복사본을 다운로드 하게 된다.

- MP3, 음란물 그리고 소프트웨어 크랙(Crack) 버전으로 위장
앞서 P2(Peer to Peer)P 웜(Worm)은 P2P(Peer to Peer) 프로그램의 공유 폴더에 자신의 복사본을 생성한다고 하였다. 자신의 복사본을 생성하는 단계에서 P2P(Peer to Peer) 웜(Worm)의 사회 공학(Social Engineering) 기법이 잘 들어나게 된다. P2P(Peer to Peer) 웜(Worm)이 자신의 복사본을 생성할 경우에는 [그림 5]의 블린콤(Win32/Blinkom.worm) 웜과 같이 P2P(Peer to Peer) 프로그램 사용자들의 관심을 끌만한 MP3 파일, 음란 동영상 그리고 소프트웨어 크랙(Crack) 버전의 파일명으로 위장하게 된다. 이러한 호기심을 끌만한 파일명으로 인해 많은 P2P(Peer to Peer) 프로그램 사용자들이 웜(Worm)의 복사본을 다운로드 한 후 실행하게 된다.

이상으로 우리는 매스 메일러(Mass-Mailer), 인스턴트 메신저(Instant Messenger Worm)과P2P(Peer to Peer) 웜(Worm)에서는 어떻게 사회 공학(Social Engineering)을 이용하여 자신을 전파하는지 알아보았다. 그렇다면 이렇게 악성코드(Malicious Code)에서도 사용하는 사회 공학(Social Engineering) 기법을 어떻게 막을 수 있는지 다음에서 살펴보도록 하자. 

4. 사회 공학(Social Engineering) 기법의 대응 전략

앞서 설명한 바와 같이 악성코드(Malicious Code)에서도 사용되고 있는 사회 공학(Social Engineering) 기법의 공격을 어떻게 하면 100% 완벽하게 방어를 할 수는 있는 것일까? 정답은 100% 완벽한 방어는 불가능하다 이다. 사회 공학(Social Engineering) 기법의 공격으로부터 100% 완벽한 방어가 불가능한 이유는 다름이 아니라 이 공격 기법의 대상이 바로 사람이기 때문이다. 일반적으로 정보 보안(Information Security)에서는 보안에서 가장 취약한 부분을 사람(Human being is the weakest link in a security system)이라고 이야기하고 있다. 이는 완벽에 가까운 물리적 보안(Physical Security) 및 시스템 보안(System Security) 그리고 보안 정책(Security Polices)을 모두 갖추고 있다고 하더라도 사람은 외부에서 걸려온 전화 한 통화로 인해 이 모든 것을 우회할 수 있는 방법을 외부에 제공 해 줄 수도 있기 때문이다. 그러나 100% 완벽하게 사회 공학(Social Engineering) 기법의 공격을 방어하지 못한다고 하더라도 이러한 기법을 이용한 공격의 성공을 어렵게 할 수 있는 전략들은 존재한다. 
일반적으로 사회 공학(Social Engineering) 기법을 이용한 공격에 대응할 수 있는 전략은 크게 정보 수집(Information Gathering) 단계의 대응, 공격(Exploitation) 단계의 대응 그리고 실행(Execution) 단계의 대응과 같이 총 3가지 부분으로 나누어 볼 수 있다.

1) 정보 수집(Information Gathering) 단계에서의 대응

정보 수집(Information Gathering) 단계에서의 대응 전략은 공격자(Social Engineer)가 공격 대상과 관계 형성(Developing Relationship)에 있어서 필수적인 요소인 관련 정보들을 수집하는 것을 사전에 어렵도록 하는 것이다. 그럼으로써 공격자(Social Engineer)가 사회 공학(Social Engineering) 공격 흐름의 2단계인 공격 대상과의 관계 형성(Developing Relationship)이 가능해지는 것 자체를 방해하는 것이 주된 목적이다. 

- 개인 신상 정보와 관련한 문서 관리
개인 신상 정보가 포함되어 있는 세금, 일반 요금 고지서, 신용 카드 영수증 및 송금 전표 등 개인 신상 정보와 관련된 문서들은 함부로 휴지통에 버리지 말고 문서 파쇄기를 이용해 파쇄하도록 한다. 만약 손으로 찢어 버릴 경우에는 조각난 문서들을 재조합 하지 못하도록 세밀하게 찢어 버리도록 한다. 그리고 개인 신상 정보가 있는 문서들을 함부로 방치하지 말고 다른 사람들의 손이 닿기 어려운 별도의 보관 장소를 이용하여 보관하도록 한다.
특히나 다른 사람이 휴지통에 버린 문서 등을 수거해가는 행위 자체는 법적으로는 문제가 되지 않는다. 그러나 사회 통념적으로 기업간의 이러한 행위는 산업 스파이 행위에 버금가는 도덕적 비난을 받는다.

- 온라인 상의 개인 정보 관리
특정 웹 사이트 회원 가입 또는 경품 응모 등 개인 정보를 필요로 하는 곳에 불필요하게 자세한 개인 정보를 남기지 않도록 한다. 그리고 블로그 등과 같이 외부에 알려져 있는 공간에서는 자신의 신상 정보를 지나칠 정도로 자세히 기록하지 않도록 한다.

2) 공격(Exploitation) 단계에서의 대응

공격(Exploitation) 단계에서의 대응 전략은 공격자(Social Engineer)가 자신의 특수한 목적을 수행하기 위한 사항을 요청하더라도 공격 대상이 이를 거부 함으로서 실행(Execution)되지 않도록 방해하는 것이 주된 목적이다.

- 사회 공학(Social Engineering) 기법의 공격 형태 인지
사회 공학(Social Engineering) 기법이 어떠한 것이며 이러한 공격 방법에는 어떠한 것들이 있는지 사전에 인지하도록 한다. 그리고 안철수연구소와 같이 신뢰할 수 있는 정보 보안 업체에서 제공하는 최신 보안 정보를 통해 새로운 사회 공학(Social Engineering) 기법의 공격 유형을 파악하여 동일하거나 유사한 공격 형태가 보일 경우에는 단호하게 이를 거절 할 수 있도록 한다.

- 배경 조사(Background Check)
사회 공학(Social Engineering) 기법의 공격을 받고 있는 것으로 의심될 때에는 공격자(Social Engineer)로 의심되는 사람의 신분을 그 사람이 밝힌 소속 기관 및 기업 등에 연락하여 정확한 신분을 재확인 하도록 한다. 그리고 요청한 사항이 실제로 해당 기관 및 기업에서 진행하고 있는 사항인지를 확인하도록 한다.

3) 실행(Execution) 단계에서의 대응

실행(Execution) 단계에서의 대응 전략은 공격 대상이 공격자(Social Engineer)의 특수한 목적을 위한 요청 사항을 이미 수행하였으므로 보안 사고 예방 차원에서의 접근이 아니라 사고 대응(Incident Response) 차원에서 접근하도록 하여야 한다. 이 단계에서의 주된 목적은 유출된 정보를 공격자가 특수한 목적으로 활용하지 못하도록 하여 피해를 최소화는 것이다.

- 신속한 관계 기관 신고
사회 공학(Social Engineering) 기법의 공격을 받아 공격자(Social Engineer)가 요구한 민감한 정보가 유출되었다고 판단된다면 신속하게 관계 기관에 신고를 하도록 한다. 그리고 해당 기관의 도움을 이용하여 공격자(Social Engineer)가 요청한 사항이 어떠한 것인지 파악한 후 수행한 요청 사항으로 인해 피해를 받을 수 있는 부분에 대하여 사전에 조치를 취하도록 한다. 그래서 공격자(Social Engineer)가 특수한 목적으로 그 정보들을 활용하지 못하도록 하여 피해를 최소화 하도록 한다. 

현재 한국에서 "전화 사기" 또는 피싱(Phishing) 등과 같이 사회 공학(Social Engineering) 기법의 공격 등과 관련하여 신고 및 상담을 할 수 있는 관계 기관들은 다음과 같다.

* 금융보안연구원
금융회사와 관련된 피싱(Phishing) 신고
신고메일: phishing@fsa.or.kr
피싱(Phishing) 신고 전용 전화: 02)6919-9119
웹 사이트: www.fsa.or.kr

* 금융감독원 전자민원창구 
은행, 증권, 카드, 보험 관련 분쟁, 금융범죄 등 상담 및 신고

전화: 02)1332    
웹 사이트: minwon.fss.or.kr

* 국가정보원 국가사이버안전센터 
정부, 공공, 교육 등 주요기관 관련 각종 침해사고 신고 및 상담

전화: 02)3432-0462    
웹 사이트: www.ncsc.go.kr

* 경찰청 사이버테러대응센터 
주민등록번호 도용, IP추적, Voice 피싱(Phishing), 인터넷상의 아이템사기, 사용자ID도용, 사기, 해킹/바이러스 유포 등 

전화: 02)3939-112    
웹 사이트: www.ctrc.go.kr

* 한국정보보호진흥원 
1) 인터넷 침해사고 대응지원센터 
해킹사고, 게임사이트 및 포털 사이트를 사칭하는 피싱(Phishing) 사고, 보안 취약점 등 신고

신고메일: cert@krcert.or.kr, phishing@krcert.or.kr
전화: 국번 없이 118
웹 사이트: www.krcert.or.kr

2) 개인정보 침해신고센터
주민번호, ID 등 개인정보도용, 회원탈퇴 미조치 등 인터넷상의 개인정보침해 관련 사항 신고

전화: 국번 없이 1336      
웹 사이트: www.cyberprivacy.or.kr, www.1336.or.kr

5. 맺음말

우리는 이제까지 사회 공학(Social Engineering) 기법의 공격이 어떠한 순서로 발생하게 되는지 그리고 각 단계에서 공격자(Social Engineer)는 어떠한 행동을 취하게 되는지 알아 보았다. 그리고 공격 대상은 어떠한 상황으로 인해 공격자(Social Engineer)의 특수한 목적의 요청 사항을 수락하고 실행하게 되는지도 살펴 보았다. 여기에서 더 나아가 이러한 사회 공학(Social Engineering) 기법이 악성코드(Malicious Code)에서는 어떠한 방식으로 사용되고 있는지도 알아 보았다. 
인간의 심리를 공격한다고 이야기하는 사회 공학(Social Engineering) 기법에 대한 최고의 방어는 결국 개개인이 정보 보안(Information Security)에 많은 관심을 가지고 자신의 개인 신상 정보와 관련된 사항들과 자주 사용하고 중요한 정보가 있는 컴퓨터 시스템을 잘 관리하는 것이 철두철미하게 보안 사고에 조심하는 것이 아닌가 생각된다. 1980년대와 90년대의 유명한 해커이자 사회 공학(Social Engineering) 기법의 공격에 능통한 케빈 미트닉(Kevin Mitnick)이 영국 BBC 방송국과의 인터뷰에서 밝힌 정보 보안(Information Security)에 대한 그의 견해를 마지막으로 이 글을 마무리 하고자 한다.

"The Biggest threat to the security of a company is not a computer
 virus, an unpatched hole in a key program or a badly installed
 firewall. In fact, the biggest threat could be you."

"기업 정보 보안에 있어서 가장 큰 위협은 컴퓨터 바이러스, 패치가
 적용되지 않은 중요한 프로그램이나 잘못 설정된 방화벽이 아니다. 
가장 큰 위협은 바로 당신이다."
6. 참고 문헌

1) Introduction to Computer Security - Matt Bishop (Addison Wesley, 2005)
2) Social Engineering : A Means to Violate a Computer System - Malcolm Allen (SANS, 2006) 
3) Social Engineering - Aaron Dolan (GSEC, 2004)
4) A Proactive Defense to Social Engineering - Wendy Arthurs (SANS, 2003)
5) The Threat of Social Engineering and Your Defense Against It - Radha Gulati (GSEC, 2003)
6) A Multi-Level Defense Against Social Engineering - David Gragg (GSEC, 2002)
7) Social Engineering Fundamentals, Part 1 : Hacker Tactics - Sarah Granger (Securityfocus, 2001)
8) Social Engineering Fundamentals, Part 2 : Combat Strategies - Sarah Granger (Securityfocus, 2002)

2012년 8월 26일 일요일

치열한 왕권을 향한 전투.. 왕좌의 게임 시즌2

작년 미드 볼만한 것이 없나 찾아보다 우연히 왕좌의 게임(Game of Thrones) 시즌 1을 보게 되었습니다. 그리 길지 않은 에피소드, 빠른 줄거리 전개와 함께 마법과 주술 그리고 검투술이 주를 이루는 중세 시대를 배경으로, 왕좌를 차지하기 위한 각 성주들의 암투는 정말 재미있게 보게 되었습니다.


포스터만 보면 영락 없는 주인공의 포스지만. 황당하게도 드라마에서는 그렇지 않더군요. 스포일러가 될 것 같아 더 이야기를 하지 못하겠네요.
아무튼 그 이후로 왕좌의 게임에 대해 더 찾아보니 원작이 "왕좌의 게임"이라는 소설로서 "조지 R. R. 마틴"라는 판타지 장르에서는 유명하신 작가분이 쓰실 장편 소설이더군요.


개인적으로 판타지 형태의 소설이나 영화를 그리 즐기지 않는 편인데, 이번 드라마는 원작도 원작이지만 이를 드라마로 만든 미국 HBO의 각색과 연출력이 정말 뛰어나다고 할 수 있을 것 같더군요.
2012년 4월 캐나다 몬트리올 출장시에 번화가 중심에 있는 대형 서점에 드릴 기회가 있었습니다. 거기에는 드라마의 인기 때문인지 아예 왕좌의 게임 코너를 만들어두고 원작 소설들과 함께 티셔츠 그리고 머그컵들을 전시해두고 판매하고 있더군요. 지금 생각해보면 티셔츠라도 하나 사올걸 그랬나 하는 생각이 듭니다.

그렇게 2011년에 시즌 1을 보고나서 시즌 2가 언제 나오나 기다리다 올해 봄에 시즌 2가 방송되기 시작하면서 보기 시작했습니다.


그러나, 기대보다 못 미치는 설정과 진행들 그리고 전체적인 줄거리나 진행과 관련 없는 배드씬과 잔인한 살인 장면들은 전작에 한참 미치지 못하는 수준을 보여주는 듯 해 4화 정도 보고 미루어 두었습니다. 그러다 최근 들어 다시 남은 회수를 다시 보니 작가도 넘 심해다고 생각했는지 그 이후부터는 전개가 달라졌더군요.

시즌 2에서 가장 큰 뼈대는 시즌 3에서 보여줄 본격적인 전쟁을 앞두고 이어지는 스토리로 생각되었습니다. 시즌 2 마지막회에서 와일드파이어(Wildfire)를 이용한 해상 전투 장면과 킹스 랜딩(King's Landing)에서 이루어지는 공성전으로 볼 때 시즌 3에서는 스타크(Stark) 가문을 중심으로 본격적인 전투가 이루어지지 않을까 생각되더군요.

평소에도 미드를 즐겨보신 분들이라면 길지 않은 에피소드라 천천히 한 편씩 즐겨보시는 것도 좋을 것 같습니다. 개인적으로 원작 소설들을 읽어볼까 생각 중입니다.

참고로 시즌 3는 2013년 3월에 방영 예정이라는군요. 당분간은 소설 읽으면서 드라마를 기대해봐야 겠네요/

2012년 8월 23일 목요일

알려지지 않은 악성코드 탐지 기법

2006년도 중반부터 2007년 상반기까지 약 1년간 진행했던 프로젝트의 진행 과정에서 이루어졌던 연구 내용들 중 일부를 정리해 2007년 3월 세일즈 마케팅팀에 제공했던 원고 입니다. 원고는 회사 홈페이지에도 "알려지지 않은 악성코드 탐지 기법"으로 공개 되어 있습니다.

약 1년간 진행되었던 프로젝트는 1차와 2차로 나누어 진행되었는데, 프로젝트 주제는 "알려지지 않은 또는 보고되지 않은 악성코드를 탐지하기 위한 기술들이 적용된 프로그램 개발"이었습니다.

해당 프로젝트가 진행되었던 계기는 당시 중국 법인 기술 지원 담당자의 요청에서부터 시작되었습니다. 당시 기술 지원 담당자가 중국의 보안 업체 중 지앙민(JiangMin) 보안 제품에는 보고 되지 않은 악성코드를 탐지 할 수 있는 기능이 있어, 감염이 의심되는 PC에서 악성코드로 의심되는 파일들을 자동으로 수집하는데 본사에서도 이러한 기능을 검토해달라는 요청이었습니다.

당시 연구소장님과 함께 회의에 참석했던 저는 그 자리에서 연구소장님으로부터 바로 프로젝트를 진행해보라는 말씀을 듣고 프로젝트 PM으로 약 1년가까이 진행하게 되었습니다. 사실 어떻게 악성코드로 의심되는 파일들을 자동 수집해야 할까로 많은 고민이 있었습니다. 그래서 당시 처음 시작한 것이 휴리스틱(Heuristic) 및 제너릭(Generic) 탐지 기법과 관련된 해외 논문들부터 행위 기반(Behavior Detection) 탐지 기법 등 다양한 악성코드 탐지 기법 관련 논문들과 서적들을 찾아보며 이런 저런 아이디어들로 약 2달 정도를 보내게 되었습니다.
재미있는 일화로 당시 휴일마다 도서관에서 책과 논문들을 읽으며 연습장에 떠오르는 아이디어들을 정리해 가면서 계속 생각을 하고 있던 시기였습니다. 그 때 저도 모르게 아이디어들에 대한 고민이 컸던지 꿈속에서 마저 제가 연습장에다 알고리즘들을 그려보고 있더군요....

약 2달 정도 생각을 하다 몇 가지 알고리즘들을 생각해내고 프로토타입(Prototype)을 만들어 테스트하기로 연구소장님께 보고드렸고 인턴들과 함께 개발하였습니다. 1차 프로토타입의 결과는 중상 이상의 수준으로 나쁘지 않은 결과를 보였습니다. 2차 프로토타입에서는 1차 결과에서는 발견되었던 문제점들과 새로운 알고리즘을 추가하여 다시 개발하여 그 결과 역시 괜찮은 수준으로 연구소장님께 보고드리게 되었습니다.
그래서 약 1년간 연구 및 개발하였던 그 알고리즘과 기술은 최종적으로 지금도 많은 고객들의 악성코드 감염이 의심되는 시스템을 분석하는데 쓰이는 안레포트(AhnReport)에 의심 파일 수집 기능으로 반영되었습니다.

그래서 나름 많은 고민과 생각들을 하는 과정에서 정리된 결과물이라 이제까지 썼던 원고들 중에서 가장 많이 기억나는 원고들 중 하나입니다.

+--------------------

2006년은 컴퓨터 바이러스가 제작 된지 20주년을 기념하는 한 해였다. 이 20년이라는 긴 세월 속에서 컴퓨터 바이러스는 파일 감염을 목적으로 하는 바이러스(Virus)로부터 네트워크를 통한 급속한 확산을 시도하는 웜(Worm) 그리고 데이터 유출을 위한 트로이목마(Trojan Horse)에 이르기까지 다양한 모습으로 발전하였다. 이러한 악성 코드의 위협은 해가 갈수록 증가 추세를 이루고 있으며 기술적인 면에서도 더욱더 위험성을 더해 가고 있어 컴퓨터 사용자들을 불안하게 만들고 있는 것이 사실이다. 그러나 이렇게 증가하는 악성 코드의 위협 에 맞서는 안티 바이러스(Anti-Virus) 업체 역시 새로운 악성 코드의 위협들로부터 컴퓨터 시스템을 보호하기 위해 다양한 대응 방안들을 활발하게 연구하고 있다. 이러한 다양한 대응 방안들의 기본 전제가 바로 "급속하게 확산되는 알려지지 않은 새로운 악성 코드에 어떻게 대응할 것인가?"라는 점이다. 이 명제는 결국 새로운 악성 코드를 어떻게 효과적으로 탐지할 것인가의 문제로 볼 수 있다. 이러한 문제를 해결하기 위해 안티 바이러스(Anti-Virus) 업체의 알려지지 않은 악성 코드 위협에 대응하기 위한 다양한 안티 바이러스(Anti-Virus) 탐지 기법들과 그 탐지 기법들의 특징들에 대해서 알아 보도록 하자.

1. 악성 코드의 증가와 조기 대응의 필요성

본 글의 서두에서 악성 코드는 해가 갈수록 증가하고 있다고 이야기 하였다. 이러한 사실은 아래 [그림 1]의 안철수연구소 시큐리티대응센터(ASEC, AhnLab Security Emergency response Center)에서 발행하는 ASEC Annual Report 2005 자료를 참고하면 더욱 명확하게 이해가 될 것이다.


[그림 1] 1988년부터 2005년까지 국내 발견 악성 코드 수치 (출처 - ASEC Annual Report 2005)

1988년부터 2005년도까지 년도 별 악성 코드 피해신고 건수를 나타낸 [그림 1]에서와 같이 악성 코드의 수치적인 증가는 단순하게 악성 코드 형태의 다양화를 넘어서 악성 코드에 대한 안티 바이러스(Anti-Virus) 업체의 신속한 대응 자체가 어려울 정도로 심각한 문제를 유발하고 있다. 신속한 대응이 어려워지게 된다는 것은 결국 악성 코드로부터 피해를 입는 컴퓨터 시스템의 수치가 증가하는 문제로 볼 수 있다. 
[그림 2]가 바로 신속한 대응과 컴퓨터 시스템의 피해와 상관관계를 나타낸 그래프이다. 이 그래프에서와 같이 어느 단계에서 대응이 가능해지냐에 따라서 악성 코드의 피해가 판이하게 달라지게 되는 것을 알 수 있다. 일반적으로 악성 코드 대응에서 가장 이상적인 형태의 대응을 말하는 <1>에서는 운영체제에서 발견된 취약점을 사전에 분석 한 후 조치를 취하여 실제 해당 취약점을 공격하는 악성 코드가 발견되더라도 해당 악성 코드에 의한 피해가 발생하지 않도록 조치를 취하는 단계이다

[그림 2] 단계별 악성 코드의 확산과 시간의 상관 관계

그러나 실제로는 악성 코드가 특정 운영체제나 프로그램의 어떠한 취약점을 사용할 지 판단할 수 없으며 모든 악성 코드가 특정 운영체제나 프로그램의 취약점을 이용하지는 않는다. 그리고 설령 그 판단을 할 수 있다 하더라도 해당 취약점들을 공격하는 악성 코드의 실제 제작 여부에 대해서는 전혀 예측을 할 수 없게 된다. 그러므로 실제 안티 바이러스(Anti-Virus) 업체에게 가장 많은 고민과 해결책을 요구 하는 부분이 바로 <2>이다. <2>에서는 특정 악성 코드의 확산 초기에 최단 시간에 이를 탐지하여 빠르게 스캐닝 엔진(Scanning Engine)에 반영하여 악성 코드가 확산되더라도 최신 엔진의 안티 바이러스(Anti-Virus) 소프트웨어가 설치된 컴퓨터 시스템에서는 더 이상의 피해가 발생하지 않도록 피해와 확산 억제성의 대응이 가능해지는 단계이다. 그러나 <3>와 <4>와 같이 초기 확산 시에 신속하게 대응을 진행하지 못하게 된다면 그 피해는 걷잡을 수 없을 정도로 커지게 된다. 그러므로 악성 코드 초기 확산 시에 신속한 대응이 진행되어야만 피해를 최소화할 수가 있게 된다. 
그러나 아무리 빠르게 악성 코드 샘플을 확보하고 스캐닝 엔진(Scanning Engine)을 제작하여 배포한다고 하더라도 스캐닝 엔진(Scanning Engine)이 제작되는 그 1분, 1초의 시간 사이에서도 악성 코드에 감염되어 피해를 입는 컴퓨터 시스템이 발생하기 마련이다. 그러므로 안티 바이러스(Anti-Virus) 업체에서는 알려지지 않은 새로운 악성 코드를 탐지할 수 있는 다양한 탐지 기법들을 연구하여 조금 더 효율적이고 효과적인 신속한 대응이 가능하도록 하고 있다.

2. 파일 기반의 탐지 기법 (File Base Detection Tech)

현재까지 알려진 안티 바이러스(Anti-Virus) 소프트웨어 대부분이 파일 기반(File Base)의 진단법을 사용하고 있다. 이는 대부분의 악성 코드가 특정 운영체제에서 실행되기 위해서는 해당 운영체제에서 실행이 가능한 특정한 파일 형태로 되어 있다는 점에서 기인한 것이다. 그러므로 악성 코드가 윈도우 시스템(Windows System)에서 실행되기 위해서는 윈도우 시스템에서 실행 가능한 파일 포맷인 PE(Portable Executable) 형식을 가지고 있어야 된다는 것이다.


[그림 3] PE(Portable Executable) 형식의 악성 코드 파일

이러한 PE(Portable Executable) 형식의 악성 코드를 진단하기 위해서는 안티 바이러스(Anti-Virus) 소프트웨어 역시 이러한 파일 형식을 인식하고 악성 코드로 판단을 내릴 수 있는 특정 형식의 시그니처(Signature)를 가지고 있어야 된다. 이러한 진단법이 대부분의 안티 바이러스(Anti-Virus) 소프트웨어가 사용하는 시그니처 기반(Signature Base) 또는 스트링(String - 여기서 말하는 스트링이란 일반적인 문자열이 아닌 파일의 헥사코드(Hex Code)를 의미하는 것이다.) 검사 방식이라고 이야기하는 진단법이다. 이러한 시그니처 기반(Signature Base)의 진단법은 악성 코드로 분류된 파일의 특정 부분 또는 고유한 부분을 검사의 대상으로 삼으므로 오탐(False Positive)과 미탐(False Negative)을 최소화하는 정확한 진단이 가능하다는 것과 파일 검사 시에 파일들의 특징적인 부분들만 비교 함으로 빠른 스캐닝(Scanning)을 장점으로 들 수 있다. 
그러나 이러한 시그니처 기반(Signature Base) 진단법은 악성 코드의 파일 자체가 몇 백 바이트(Byte)만 바뀌어도 진단이 되지 않는 미탐(False Negative)이 발생함으로 파일이 조금만 변경된 새로운 변형에 대해서는 대응을 할 수가 없게 된다. 그리고 기존에 알려진 악성 코드에 대해서만 대응을 할 수 있으므로 새로운 형태의 알려지지 않은 악성 코드에 대해서는 대응을 할 수 없다는 단점을 가지고 있다.

1) 휴리스틱 탐지 기법 (Heuristic Detection Tech)

이러한 시그니처 기반(Signature Base)의 진단법이 가지고 있는 한계를 극복하고자 개발한 탐지 기법 중 하나가 휴리스틱 탐지(Heuristic Detection) 기법이다. 휴리스틱 탐지(Heuristic Detection) 기법은 일반적인 악성 코드가 가지고 있는 특정 폴더에 파일 쓰기와 특정 레지스트리 부분에 키 생성과 같은 명령어(Instruction)들을 스캐닝 엔진(Scanning Engine)에서 시그니처(Signature)화하여 파일을 검사할 때 이를 사용한다. 그래서 검사 대상 파일이 휴리스틱 시그니처(Heuristic Signature - 이 것을 부스터(Booster)라고도 한다.)와 비교를 통하여 일반적으로 알려진 악성 코드와 얼마나 높은 유사도를 가지고 있는지를 판단하여 알려지지 않은 새로운 악성 코드를 탐지하는 기법이다. 
이러한 휴리스틱 탐지(Heuristic Detection) 기법은 검사 대상이 되는 파일에 대해서 휴리스틱(Heuristic) 검사 시에 스캐닝 엔진(Scanning Engine)이 어떠한 형태를 취하는가 에 따라서 아래와 같이 크게 2가지 형태로 나누어서 볼 수 있다. 

- 동적 휴리스틱 탐지 기법 (Dynamic Heuristic Detection Tech)
동적 휴리스틱 탐지(Dynamic Heuristic Detection) 기법은 검사 대상이 되는 파일을 가상화된 영역 또는 운영체제와 분리된 특정 공간에서 파일 실행(File Execution)을 통해 수집한 다양한 정보들을 휴리스틱 시그니처(Heuristic Signature)와 비교를 통하여 검사를 수행하는 기법이다. 즉 검사 대상이 되는 파일이 어떠한 형식으로든 실행이 되어야 하며 이러한 점으로 인해 런 타임 휴리스틱 탐지 (Run-Time Heuristic Detection) 기법이라고도 불리고 있다. 이러한 동적 휴리스틱 탐지(Dynamic Heuristic Detection) 기법은 이 후에 다룰 에뮬레이터(Emulator)과 샌드박스(Sandbox)에서 조금 더 자세하게 알아 보도록 하자.

- 정적 휴리스틱 탐지 기법 (Static Heuristic Detection Tech)
정적 휴리스틱 탐지(Static Heuristic Detection) 기법은 동적 휴리스틱 탐지(Dynamic Heuristic Detection) 기법과는 반대로 파일에 대해서 어떠한 형식의 파일 실행(File Execution) 없이 파일 자체를 그대로 스캐닝 엔진(Scanning Engine)에서 읽어 들여 휴리스틱 시그니처(Heuristic Signature)와 비교를 수행하는 탐지 기법이다.  

[그림 4] 정적 휴리스틱(Static Heuristic)과 동적 휴리스틱(Dynamic Heuristic)

이 외에도 네거티브 휴리스틱(Negative Heuristic - 이 것을 스토퍼(Stopper)라고도 한다.)탐지 기법도 있다. 이는 이제까지 기술한 휴리스틱 탐지(Heuristic Detection) 기법과는 반대로 악성 코드에서 전형 사용하지 않은 윈도우 팝업 창 생성과 같은 명령어(Instruction)들이 존재 할 경우에는 악성 코드로 판단하지 않는 기법이다. 즉, 휴리스틱 시그니처(Heuristic Signature)와 동일한 명령어들이 존재하지 않는 부정의 경우에만 악성 코드로 판단한다.
이러한 형태들의 휴리스틱 탐지(Heuristic Detection) 기법은 기존에 알려진 악성 코드도 탐지가 가능하며 알려지지 않은 새로운 악성 코드 역시 탐지가 가능하다는 점에서 매력적인 탐지기법이라고 할 수 있다. 그러나 이 탐지 기법은 정상 파일을 악성 코드라고 판단하게 되는 오탐(False Positive)의 발생이 가장 큰 단점으로 작용한다. 특히나 파일을 삭제하고 치료하는 안티 바이러스(Anti-Virus) 소프트웨어의 특성상 오탐(False Positive)율이 높게 된다면 컴퓨터 시스템 자체에 큰 문제를 유발할 수 있게 됨으로 이는 치명적인 문제점이라고 볼 수 있다.

2) 제너릭 탐지 기법 (Generic Detection Tech)

앞서 설명한 휴리스틱 탐지(Heuristic Detection) 기법 외에도 알려지지 않은 악성 코드를 탐지하기 위한 기법 중에는 제너릭 탐지(Generic Detection) 기법이라는 것이 있다. 이 탐지 기법은 유사한 형태의 악성 코드 집합을 탐지하기 위해 해당 집합을 이루는 악성 코드 파일들의 공통된 코드 영역(Code Section)을 진단하도록 한다. 그러므로 소스 코드(Source Code)상에서 사용자 코드(User Code)의 변화가 없거나 약간의 수정만 가하여 컴파일(Compile)만 새롭게 하여 생성한 새로운 악성 코드 변형들에 대해 탐지가 가능함으로 유사한 형태의 악성 코드 변형들이 지속적으로 제작되더라도 시그니처(Signature) 업데이트 없이 탐지가 가능하다는 장점이 있다.
이러한 제너릭 탐지(Generic Detection) 기법에서는 일반적으로 파일에 대한 OPcode(Operation Code) 명령어 비교 방식이 많이 사용되고 있다. 이 OPcode(Operation Code) 명령어 비교 방식에는 크게 와일드카드 비교(Wildcard Matching - Don't Care 비교라고도 한다)와 미스매칭(Mismatching) 방식으로 나누어진다. 먼저 와일드카드 비교(Wildcard Matching)는 유사한 형태의 악성 코드 변형들의 특정 코드 영역(Code Section)에서 사용되는 OPcode(Operation Code) 명령들이 조금씩만 다르고 동일할 경우 해당 다른 OPcode(Operation Code) 명령어 부분에 와일드카드를 적용하여 다른 OPcode(Operation Code) 명령어가 사용되어도 이를 무시하겠다는 것이다.

[그림 5] 메모장(Notepad.exe) 프로그램의 OPcode(Operation Code) 명령어들

[그림 5]를 예로 들어 메모장 프로그램을 원본 악성 코드라고 가정을 한다면 이 원본 악성 코드의 일부 OPcode(Operation Code) 명령어들은 [그림 5]의 붉은색 박스 영역의 순서대로 진행된다. 이렇게 PUSH, PUSH, PUSH, PUSH 순서로 진행되는 OPcode(Operation Code) 명령어들이 다른 악성 코드 변형들에서는 PUSH, PUSH, PUSH, MOV가 사용된다면 마지막 MOV 부분을 와일드카드(Wildcard)로 적용하여 마지막 4번째 OPcode(Operation Code) 명령은 어떠한 것이 사용되더라도 이에 구애 받지 않겠다는 것이다. 이렇게 적용하게 되면 원본 악성 코드와 변형 악성 코드의 전체 OPcode(Operation Code) 명령어 진행 순서는 유사한데 일부가 조금 틀리더라도 모두 진단하게 되는 효과를 구현할 수가 있다. 그러나 미스매칭(Mismatching) 방식은 와일드카드 비교(Wildcard Matching)와는 반대로 MMX(Multi Media eXtension) 명령어 또는 FPU(Floating Point Unit) 명령어와 같이 악성 코드에서 잘 사용되지 않는 명령어들이 [그림 5]의 해당 붉은색 박스영역과 같이 특정 부분에 사용 될 경우, 해당 파일을 악성 코드 변형으로 판단하지 않겠다는 것이다. 이런 미스매칭(Mismatching) 방식은 앞서 설명한 네거티브 휴리스틱(Negative Heuristic) 탐지 기법과 기본적인 개념은 동일하다고 볼 수 있다.
그러나 이러한 제너릭 탐지(Generic Detection) 기법은 악성 코드의 공통된 코드 영역을 진단함으로 새로운 악성 코드 변형들이 제작되더라도 탐지가 가능하다는 장점이 있지만 새로운 악성 코드 변형들이 완전히 새로운 OPcode(Operation Code) 명령어 순서로 진행된다던가 아니면 안티 디버깅(Anti-Debugging)과 암호화(Encryption) 등과 같이 실행 파일 보호 기법을 통해 OPcode(Operation Code) 명령어의 진행 순서를 뒤섞어 놓게 된다면 스캐닝 엔진(Scanning Engine)에서는 이를 탐지하지 못하게 되는 문제가 발생할 수가 있다.

이상으로 파일을 기반으로 알려지지 않은 악성 코드 탐지 기법들에 대해서 알아 보았다. 다음으로는 파일 실행을 통해서 탐지하는 동적 휴리스틱 탐지(Dynamic Heuristic Detection) 기법 설명 시에 잠시 언급한 에뮬레이터(Emulator)와 샌드박스(Sandbox)에 대해서 알아보도록 하자.

3. 에뮬레이터(Emulator)과 샌드박스(Sandbox)

앞 장에서 설명한 새로운 악성 코드 탐지기법들은 모두 실행 파일(Executable File) 자체를 대상으로 한 탐지 기법들이다. 그러나 이번 장에서 설명하는 에뮬레이터(Emulator)와 샌드박스(Sandbox)는 모두 실행 파일(Executable File) 자체에 관한 탐지 기법이 아니라 해당 실행 파일(Executable File)의 실행을 통해 수집한 정보들을 이용하여 새로운 악성 코드를 탐지하는 기법들이다. 그러므로 앞서 이야기한 바와 같이 실행 파일(Executable File)의 실행을 통하여 새로운 악성 코드를 탐지하는 동적 휴리스틱 탐지(Dynamic Heuristic Detection) 기법과도 상당히 밀접한 연관 관계를 가지고 있는 것이다.

1) 에뮬레이터(Emulator)

사전적인 의미에서 에뮬레이터(Emulator)는 대리 실행기 라는 의미를 가지고 있다. 대리 실행기 라는 의미에서와 같이 에뮬레이터(Emulator)는 실제 컴퓨터 시스템 상에서 실행 파일(Executable File)을 직접적으로 실행하는 것이 아니라 실제 컴퓨터 시스템에 가상(Virtual)의 환경이나 가상의 하드웨어(Hardware) 이미지를 생성하여 해당 가상 하드웨어(Hardware)를 통하여 간접적으로 실행하는 것을 의미한다. 이러한 의미로 인해 일부에서는 에뮬레이터(Emulator)를 이용한 탐지 기법을 코드 에뮬레이션(Code Emulation) 또는 CPU 에뮬레이션(CPU Emulation) 이라고도 이야기 한다.
이 탐지 기법은 실제 컴퓨터 상에서 스캐닝 엔진(Scanning Engine)이 검사를 수행하지만 컴퓨터 시스템 내부에 가상의 CPU와 메모리 등의 가상의 환경을 제공하여 실행 파일(Executable File)을 실행하고 정보를 수집함으로 실제 컴퓨터 시스템에서는 악성 코드로 인한 어떠한 감염 피해도 발생하지 않는다. 이러한 점으로 인해 알려지지 않은 악성 코드를 탐지하기 위한 부분에서는 상당히 강력한 방법이라고 할 수 있다. 
이러한 가상의 환경을 이용하는 에뮬레이터(Emulator)가 컴퓨터 시스템에서 구현되기 위해서는 크게 다음과 같은 4가지가 포함 되어야 한다.

- 가상 CPU 환경
실행 파일을 실제 CPU를 이용한 연산과 동일하게 처리하기 위해 일반적인 모든 명령어들뿐만이 아니라 MMX(Multi Media eXtension) 명령어와 FPU(Floating Point Unit) 명령어까지도 모두 처리 할 수가 있어야 한다.

- 가상 메모리 환경
32비트(Bit) 주소 체계에서는 최고 4 기가바이트(GB)까지 확장이 가능하지만 가상의 메모리 환경에서는 이렇게 많은 메모리는 필요하지 않다. 다만, 실행 파일(Executable File)이 실행되었을 때 변경하는 메모리 주소들에 대해 모두 기록하고 이를 추적할 수 있어야 하며 논리적인 메모리 주소와 물리적인 메모리 주소들을 모두 제공할 수 있어야 한다.

- 가상 저장 장치 환경
물리적인 저장 장치와 동일하게 실행 파일(Executable File) 실행 시 발생하는 저장 장치에 대한 파일 읽기 및 쓰기처럼 저장 장치에 대한 I/O(Input/Output)가 발생할 때 에뮬레이터(Emulator)에서는 실제 하드웨어와 동일한 환경을 제공 할 수 있어야 한다.

- 에뮬레이션 제어기(Emulation Controller)
에뮬레이션 제어기(Emulation Controller)는 에뮬레이터(Emulator)에서 가장 핵심이 되는 부분이다. 실행 파일(Executable File)이 가상 환경에서 실행 시 악성 코드로 판단 할 수 있을 정도의 충분한 정보를 수집하고 이를 제어하는 것이 바로 에뮬레이션 제어기(Emulation Controller)이기 대문이다. 그래서 에뮬레이션 제어기(Emulation Controller)에서는 실행 중인 악성 코드를 어느 시점에서 실행을 중단할 것인가와 얼마 정도의 시간을 실행에 소비할 것인가를 판단하고 제어할 수 있어야 한다. 일반적으로는 인텔 X86 CPU에서 에뮬레이션(Emulation)을 수행 하기 위해서는 최소 1,000개에서 최대 30,000개의 CPU 명령어 수행과 함께 45초 정도의 시간 소요를 기본으로 설정 한다.

이렇게 가상의 환경에서 실행 파일(Executable File)을 실행하고 수집된 실행 결과들을 통해서 악성 코드로 판단하는 에뮬레이터(Emulator)는 실제 시스템에 전혀 감염의 피해를 입히지 않고 알려지지 않은 악성 코드를 탐지할 수 있다는 점에서는 상당히 강력한 방법이라고 이야기 하였다. 하지만 에뮬레이터(Emulator)는 스캐닝 엔진(Scanning Engine)이 실행 파일(Executable File)을 검사 할 때마다 모두 가상의 환경에서 실행을 하고 분석을 해야 된다는 점에서는 컴퓨터 시스템에 대한 자원 소모가 커지게 되는 부담을 안고 있다. 이 문제로 인해 전반적인 스캐닝 엔진(Scanning Engine)의 검사 속도 저하로 이어지는 점이 가장 큰 단점이라고 할 수 있다.

2) 샌드박스(Sandbox)

에뮬레이터(Emulator)와 샌드박스(Sandbox)는 실행 파일(Executable File)의 실행을 통하여 수집된 정보를 통하여 악성이라고 판단하는 점에서는 유사한 형태라고 할 수 있다. 그러나 에뮬레이터(Emulator)와 샌드박스(Sandbox)의 가장 큰 차이점은 어떠한 형태로 실행 파일(Executable File)을 실행하고 어떠한 방식으로 악성 코드로 판단할 수 있는 정보들을 수집하는가에 가장 큰 차이점을 가지고 있다.
일반적으로 샌드박스(Sandbox)는 어플리케이션 에뮬레이터(Application Emulator)라고도 알려져 있는데 이러한 명칭에서 알 수 있듯이 샌드박스(Sandbox)는 에뮬레이터(Emulator)와는 달리 가상의 공간을 생성하는 것이 아니라 실제 컴퓨터 시스템상에서 바로 실행 파일(Executable File)을 실행하고는 정보를 수집한다는 점에서 가장 큰 차이점을 가지고 있다.

[그림 6] CWSandbox의 기본 구조

일반적인 어플리케이션 에뮬레이터(Application Emulator)로 널리 알려져 있는 CWSandbox는 [그림 6]과 같은 기본적인 구조로 되어 있다. CWSandbox의 경우 실행 파일(Executable File)이 실행되면 해당 파일의 스레드(Thread)로 모니터링 모듈인 CWMonitor.dll 파일을 인젝션(Injection) 시킨다. 인젝션(Injection) 이 후 해당 실행 파일(Executable File)이 실행되는 되는 모든 절차를 추적하여 해당 정보를 모두 CWSnadbox로 전달하게 된다.

[그림 7] CWSnadbox에서 윈도우 API 호출의 후킹(Hooking)

그리고 실행 파일(Executable File)이 실행되는 과정에서 발생하는 윈도우 API(Windows API) 호출 모두를 API 후킹(API Hooking) 기법을 이용하여 가로챈 후 CWSandbox로 전달 된 다. 전달 된 윈도우 API(Windows API) 호출은 CWSandbox를 통해 윈도우 커널 레벨(Windows Kernel Level)로 전달하는 정상적인 절차를 수행하게 되고 호출되는 윈도우 API(Windows API) 역시 호출한 해당 실행 파일(Executable File)로 바로 전달하는 것이 아니라 CWSandbox를 거쳐서 전달하게 되는 것이다. 이러한 과정을 표현한 것이 바로 [그림 7]과 같다.
그런데 여기에서 바로 어플리케이션 에뮬레이터(Application Emulator)인 샌드박스(Sandbox)의 가장 큰 특징이 나타난다. 호출 되는 윈도우 API(Windows API)가 CWSandbox를 통해 실행 파일(Executable File)로 전달 된 후 다시 그 리턴 값이 윈도우 운영체제로 바로 전달 되는 것이 아니라 CWSandbox를 통해 전혀 다른 리턴 값을 윈도우 운영체제로 전달하게 된다는 것이다. 이러한 다른 리턴 값을 전달하게 됨으로 실행 파일(Executable File)이 악성 코드여서 감염으로 인해 발생하는 악의적인 기능들이 모두 CWSandbox에 의해 걸러지게 됨으로 실질적인 컴퓨터 시스템에는 감염으로 인한 피해가 발생하지 않게 된다. 그리고 수집된 윈도우 API(Windows API) 호출과 리턴된 값과 같은 정보들을 통하여 CWSandbox는 해당 실행 파일(Executable File)이 알려지지 않은 악성 코드인지 판단을 하게 된다. 
그러나 에뮬레이터(Emulator)와 같이 가상의 공간이 아닌 실제 컴퓨터 시스템의 환경에서 실행 파일(Executable File)을 실행하는 샌드박스(Sandbox) 역시 윈도우 응용 프로그램이다. 그러므로 샌드박스(Sandbox)가 특정 악성 코드를 정상적으로 제어하지 못하게 될 경우에는 그 감염으로 인한 피해가 고스란히 실제 시스템으로 전달되게 됨으로 예측하지 못하는 문제가 발생할 가능성이 크다.

이제까지는 실행 파일(Executable File)의 실행을 통해서 알려지지 않은 악성 코드를 탐지 할 수 있는 에뮬레이터(Emulator)와 샌드박스(Sandbox)에 대해서 알아 보았다. 하지만 다음 장에서는 일반적인 윈도우 실행 파일 포맷이 아닌 전자 메일로 형태는 급속한 확산을 시도하는 알려지지 않은 매스 메일러 웜(Mass Mailer Worm)을 탐지 할 수 있는 기법에 대해서 알아 보도록 하자.

4. MIME 필터링 탐지 기법 (MIME Filtering Detection Tech)

필자가 악성 코드를 분석하고 대응을 하면서 기억에 남는 악성 코드들을 이야기하라고 한다면 그 중에 하나가 바로 베이글 웜(Win32/Bagle.worm), 넷스카이 웜(Win32/Netsky.worm) 그리고 마이둠 웜(Win32/Mydoom.worm)과 같이 전자메일에 자신의 복사본을 첨부하여 대량으로 발송하는 매스 메일러 웜(Mass Mailer Worm)이다. 이러한 매스 메일러 웜(Mass Mailer Worm)은 감염된 시스템에서 메일 주소를 수집하여 대량으로 전자메일을 발신함으로 만약 유럽에서 확산되었다면 지구 반대편인 한국까지 웜(Worm)이 첨부된 전자메일이 전달되는데 에는 서너 시간이면 충분할 정도로 급속하게 확산된다. 특히나 대량의 전자메일이 전송됨으로 기업의 전산 환경에서는 전자메일을 수신하는 메일 서버에도 엄청난 부하가 가중됨으로 정상적인 일반 메일의 전송이 느려지게 되거나 어려워 질 수도 있게 된다.

이러한 매스 메일러 웜(Mass Mailer Worm) 역시 일반적인 전자메일과 동일하게 베이스64(Base64)로 인코딩(Encoding)된 MIME(Multi-Purpose Internet Mail Extensions) 형태로 전송된다.

[그림 8] 베이스64(Base64)로 인코딩(Encoding)된 매스 메일러 웜(Mass Mailer Worm)

위 [그림 8]과 같은 형태로 되어 있는 매스 메일러 웜(Mass Mailer Worm)을 탐지하기 위해서 가장 쉽게 적용할 수 있는 부분이 바로 콘텐츠 필터링(Contents Filtering) 방식이다. 콘텐츠 필터링(Contents Filtering) 방식이란 급속하게 확산되는 매스 메일러 웜(Mass Mailer Worm)이 발견되었을 때 해당 매스 메일러 웜(Mass Mailer Worm)이 전송하는 전자메일 형태, 즉 메일 제목(Subject), 메일 본문(Body) 그리고 첨부파일(Attachment File) 명칭과 같이 특징적인 문구로 탐지하는 것이다. 앞서 설명한 파일 기반 탐지(File Base Detection) 기법으로 설명하자면 시그니처 기반(Signature Base)의 진단법과 유사한 개념으로 이해하면 될 것이다. 이 콘텐츠 필터링(Contents Filtering) 기법이 가능한 것이 매스 메일러 웜(Mass Mailer Worm) 역시 윈도우 시스템에서 실행되는 응용 프로그램의 형태임으로 자신의 복사본을 전송할 때 프로그래밍화된 고정된 형태의 전자메일 형태로 전송하기 때문이다. 그러나 이 방식은 이미 매스 메일러 웜(Mass Mailer Worm)이 확산되고 있다는 것을 알고 그 악성 코드가 어떠한 형태의 전자메일을 발송한다는 것 역시 이미 알고 있어야 됨으로 전혀 알려지지 않은 새로운 악성 코드를 탐지할 수는 없다. 다만 스캐닝 엔진(Scanning Engine)이 업데이트 되기 전인 초기 확산 단계에 적용하여 메일 서버의 부하와 매스 메일러 웜(Mass Mailer Worm)의 기업 전산망으로 유입되는 것을 조기에 효과적으로 차단할 수가 있다.

1) 첨부 파일 탐지 기법 (Attachment File Detection Tech)

전자메일을 이용하여 급속하게 확산되는 알려지지 않은 매스 메일러 웜(Mass Mailer Worm)을 탐지할 수 있는 기법 중 하나가 전자메일에 첨부된 첨부 파일 탐지(Attachment File Detection) 기법이다. 앞서 설명한 바와 같이 매스 메일러 웜(Mass Mailer Worm)이 전송하는 전자메일 역시 베이스64(Base64)로 인코딩(Encoding)된 MIME(Multi-Purpose Internet Mail Extensions) 형태로 전송된다고 하였다. 특히 매스 메일러 웜(Mass Mailer Worm)은 자신의 복사본을 첨부 파일로 사용하는데 일반적인 실행 파일(Executable File)이 전자메일에 첨부되기 위해서는 파일 형태 역시 베이스64(Base64)로 인코딩(Encoding)되어야 한다.

[그림 9] 베이스64(Base64)로 인코딩(Encoding)된 첨부 파일

최근에 발견되는 대부분의 악성 코드는 UPX, FSG 등과 같은 실행 압축(Packer)이라는 실행 파일 보호 기법을 이용하여 악성 코드 제작자가 안티 바이러스(Anti-Virus) 연구원들의 분석을 지연시키고자 하고 있다. 그런데 이러한 실행 압축(Packer)이라는 실행 파일 보호 기법이 적용된 실행 파일(Executable File)이 베이스64(Base64)로 인코딩(Encoding) 되면 재미있는 현상이 나타나게 된다. 여기서 베이스64(Base64)로 인코딩(Encoding) 된다는 것은 4개의 7 비트(Bit) 아스키(ASCII) 문자로 표현되도록 원래의 파일에서 각 3 바이트(Byte)씩을 4개의 6 비트(Bit) 단위로 나누어주게 되는 것이다.
이렇게 실행 압축(Packer)된 실행 파일(Executable File)이 베이스64(Base64)로 인코딩(Encoding)되면 실행 압축(Packer)별로 유사한 코드 형태를 가지게 된다는 것이다. 이렇게 인코딩(Encoding)된 실행 압축(Packer) 파일의 유사한 코드 부분을 휴리스틱 시그니처(Heuristic Signature)로 적용하게 되면 알려지지 않은 매스 메일러 웜(Mass Mailer Worm)이 특정 실행 압축(Packer)으로 되어 있을 경우에는 모두 탐지가 가능해지게 된다.

이상으로 급속하게 확산되는 알려지지 않은 매스 메일러 웜(Mass Mailer Worm)을 첨부 파일을 이용하여 탐지하는 기법에 대해서 알아 보았다. 다음 장에서는 이제까지 설명하였던 알려지지 않은 악성 코드 탐지 기법들과는 조금 다른 접근법을 가진 실제 컴퓨터 시스템에서 실행 파일이 실행되어 나타나는 다양한 행위를 바탕으로 알려지지 않은 악성 코드를 탐지하는 행위 기반 탐지 기법(Behavior Detection)에 대해서 알아 보도록 하자.

5. 행위 기반 탐지 기법 (Behavior Detection Tech)

최근 들어 안티 바이러스(Anti-Virus) 업계뿐만이 아니라 일반적인 보안 업체에서도 많은 주목을 받고 있는 탐지 기법 중 하나가 바로 이 행위 기반 탐지 기법(Behavior Detection)이다. 이 행위 기반 탐지 기법(Behavior Detection)은 실행 파일(Executable File)의 실행을 통해서 알려지지 않은 악성 코드를 탐지한다는 면에서는 에뮬레이터(Emulator) 또는 샌드박스(Sandbox)와 동일하지 않은가라는 의구심이 들 수가 있다. 그러나 엄밀하게 말해서 에뮬레이터(Emulator)는 실제 컴퓨터 시스템 내에서 가상의 공간을 구성하는 점과 샌드박스(Sandbox)는 실제 컴퓨터 시스템과 실행 파일(Executable File)의 중간에서 이를 가로챈다는 특징으로 인해 행위 기반 탐지 기법(Behavior Detection)과는 다르다고 할 수 있다.
행위 기반 탐지 기법(Behavior Detection)은 일반적으로 크게 하나의 컴퓨터 시스템 내에서 발생하는 행위들에 바탕을 두고 있는 시스템 기반 탐지(System Base Detection) 기법과 전체 네트워크(Network) 내에서 발생하는 행위들에 바탕을 두고 있는 네트워크 기반 탐지(Network Base Detection) 기법 이렇게 2가지로 나누어진다. 그러나 필자의 전문 분야가 실행 파일(Executable File)을 기반으로 한 악성 코드 분석임으로 여기에서는 네트워크 기반 탐지(Network Base Detection) 기법에 대해서는 다루지 않도록 하겠다.

1) 시스템 기반 탐지 기법 (System Base Detection Tech)

시스템 기반 탐지(System Base Detection) 기법은 앞서 설명한 바와 같이 하나의 컴퓨터 시스템 내에서 발생하는 다양한 행위들의 탐지를 바탕으로 하고 있다. 이 탐지 기법 역시 크게 무결성 검사(Integrity Check) 기법과 행위 차단 (Behavior Block) 기법으로 나누어지는데 이 두 기법 모두 실행 파일(Executable File)이 하나의 컴퓨터 시스템에서 실행되는 행위에 대해서 탐지를 한다는 공통점은 있으나 실행이 이루어지고 난 이후에 어떠한 방식으로 알려지지 않은 악성 코드를 탐지하는가에 따라서 구분되고 있다. 

- 무결성 검사 기법(Integrity Check)
무결성(Integrity)은 일반적인 정보 보호(Information Security)에서 이야기하는 보안의 3대 구성 요소 중 하나이다. 여기에서 말하는 무결성(Integrity)은 원본 데이터 또는 자료의 왜곡이 없이 순수한 상태를 그대로 유지하는 것을 의미한다. 이러한 의미를 가지고 있는 무결성(Integrity)은 무결성 검사(Integrity Check) 기법에서도 역시 컴퓨터 시스템이 데이터, 실행 파일(Executable File)들과 시스템 자체에 대한 어떠한 변화가 없이 유지되는 상태를 의미하는 것이다. 즉, 무결성 검사(Integrity Check) 기법은 이러한 컴퓨터 시스템의 무결성(Integrity) 상태가 지속적으로 유지되고 있는가를 주기적으로 검사를 수행 하는 것을 이야기 한다. 예를 들어 어떤 컴퓨터에서 30분전에 마지막으로 무결성 검사(Integrity Check)를 수행하여 무결성(Integrity)이 유지되는 것을 확인하였으나 지금 다시 검사를 수행하니 30분전에 존재하지 않았던 특정 실행 파일(Executable File)이 윈도우 시스템 폴더에 생성된 것을 확인하였다면 해당 실행 파일(Executable File)을 악성 코드로 의심해 볼 수가 있다는 것이다.
무결성 검사(Integrity Check)가 수행되는 방식은 최초 악성 코드에 감염되지 않은 깨끗한 컴퓨터 시스템상에 존재하는 주요 실행 파일과 폴더에 대해서 MD5(Message Digest 5)와 같은 해쉬값(Hash)을 계산하여 모두 기록을 하게 된다. 그 이후 앞서 이야기한 바와 같이 특정 시간 단위로 해당 컴퓨터 시스템에서 MD5(Message Digest 5)가 기록된 실행 파일(Executable File)과 폴더에 변경된 또는 존재하지 않던 해쉬값(Hash)이 있는지를 비교하는 작업을 수행하게 되는 것이다.
이러한 무결성 검사(Integrity Check) 기법은 주기적인 무결성 검사(Integrity Check)로 인해 컴퓨터 시스템에 감염된 알려지지 않은 악성 코드를 탐지할 수 있는 장점이 있는 반면에 이러한 장점이 오히려 단점도 된다. 이미 컴퓨터 시스템이 악성 코드에 감염이 되어 감염 피해를 받고 난 이후 임으로 조기 대응이 전혀 불가능하다는 것이다. 특히나 데이터베이스(Database)와 같이 중요한 시스템이 감염 피해를 입게 되었다면 복구에 상당히 많은 시간과 노력을 유발하게 된다.

- 행위 차단 기법 (Behavior Block)
일반적으로 행위 기반 탐지 기법(Behavior Detection)이라고 이야기하는 것은 대부분이 이 행위 차단(Behavior Block) 기법이 발전한 형태로 볼 수 있다. 그리고 에뮬레이터(Emulator) 또는 샌드박스(Sandbox)와도 다른데 이 행위 기반 탐지 기법(Behavior Detection)은 에뮬레이터(Emulator)처럼 컴퓨터 시스템 내에 가상의 공간을 구성한다던가 샌드박스(Sandbox)처럼 컴퓨터 시스템과 실행 파일(Executable File)의 중간에서 리턴값 조작 등을 하지는 않는다.
행위 차단(Behavior Block) 기법은 단순하게 컴퓨터 시스템에서 발생하는 모든 행위들을 모니터링하고만 있을 뿐이다. 그러나 이 모니터링 과정에서 악성 코드와 유사한 행위가 발생하게 되면 이 행위를 유발한 실행 파일(Executable File)이 어떠한 것인지를 추적하여 해당 실행 파일(Executable File)이 더 이상 진행을 하지 못하도록 차단시킨 이후 컴퓨터 시스템 사용자에게 조치를 할 수 있는 경고창을 발생시킨다. 만약 사용자가 해당 실행 파일(Executable File)이 정상 파일이라면 그 이후의 행위를 지속적으로 수행할 수 있도록 진행시키게 된다. 그러나 반대로 사용자가 악성 코드로 의심되는 파일일 경우에는 해당 실행 파일(Executable File)이 더 이상 시스템에서 실행되지 못하도록 강제 종료 시켜 버릴 수가 있다. 

[그림 10] 게이트키퍼(GateKeeper)의 기본 구조

그렇다면 이러한 행위 차단(Behavior Block) 기법의 대표적인 소프트웨어 중 하나인 게이트키퍼(GateKeeper)를 통해서 자세히 살펴보도록 하자. [그림 10]은 게이트키퍼(GateKeeper) 프로그램의 기본 구조를 도식화한 것이다. 
위 [그림 10]과 같이 게이트키퍼(GateKeeper)는 모니터링 엔진(Monitoring Engine)에 의해서 현재 시스템에서 실행 중인 모든 파일들에 대해서 감시를 하게 된다. 이 과정에서 새로운 실행 파일(Executable File)이 실행되면 이 모니터링 엔진(Monitoring Engine)은 해당 파일의 처음 시작부터 감시를 진행하며 해당 실행 파일(Executable File)이 어떠한 순서로 실행이 되는지를 모두 추적한 후 복귀 엔진(Undo Engine)을 통하여 로그(Log)를 모두 남기게 된다. 그리고는 해당 실행 파일(Executable File)의 추적을 통하여 생성한 로그(Log)를 비교 엔진(Matching Engine)을 통하여 해당 실행 파일(Executable File)이 악성 코드의 실행 형태와 얼마나 유사한 행위를 유발하고 있는지를 측정하게 된다. 

여기에서 만약 해당 실행 파일(Executable File)이 악성 코드로 판단되면 시스템 사용자에게 게이트키퍼(GateKeeper)는 현재 실행 중인 파일이 악성 코드로 판단된다는 경고를 유발하게 된다. 시스템 사용자는 해당 판단을 근거로 실행 차단을 선택하게 될 경우, 복귀 엔진(Undo Engine)은 자신이 기록한 해당 실행 파일(Executable File)의 로그(Log)들 분석하여 실행된 순서를 역으로 시스템에 대한 복구 작업을 수행하게 된다. 이 복구 작업을 통하여 게이트키퍼(GateKeeper)는 해당 실행 파일(Executable File)에 의해서 발생한 시스템 변화에 대해서 실행되기 전의 상태로 복구를 할 수가 있게 된다. 
이러한 형태의 행위 차단(Behavior Block) 기법은 알려지지 않은 악성 코드가 실행될 경우에는 이를 사용자에게 알려주고 차단할 수가 있다는 면을 장점으로 볼 수가 있다. 그러나 오탐(False Positive)으로 인하여 너무나도 자주 경고 창이 발생된다면 이는 오히려 시스템 사용자에게 어떠한 것이 알려지지 않은 악성 코드인지 정확한 판단을 하기가 어려워지게 된다. 그리고 이러한 경고 창으로 인하여 오히려 시스템 사용자에게 정상적인 시스템 사용이 방해될 정도의 불편함을 유발 할 수도 있게 된다. 그리고 행위 차단(Behavior Block) 기법 역시 알려지지 않은 악성 코드가 실행이 될 경우 이를 탐지해야 되는 윈도우 응용 프로그램임으로 앞서 설명한 샌드박스(Sandbox)와 동일한 문제점을 안고 있다. 즉, 행위 차단(Behavior Block) 기법이 적용된 시스템이 악성 코드의 실행을 정상적으로 컨트롤을 하지 못하게 될 경우에는 시스템이 악성 코드에 감염이 되는 치명적인 문제를 유발 할 수도 있다는 것이다. 

성숙한 보안 의식의 필요성 

우리 사회는 이제 컴퓨터 시스템이 없으면 정상적인 사회 생활을 할 수가 없을 수준에 이르렀다. 병원에서는 환자의 진료 기록과 은행에서는 고객의 신용정보 그리고 통장 관리 등 다양한 목적으로 사용되고 있는 컴퓨터 시스템을 보호하기 위해서 안티 바이러스(Anti-Virus) 업체에서는 다양한 알려지지 않은 악성코드 탐지 기법들을 연구하고 개발하고 있다고 이야기 하였다. 그러나 이러한 다양한 기법들이 개발되더라도 가장 중요한 부분은 바로 컴퓨터 시스템을 사용하고 있는 컴퓨터 사용자의 보안 의식이라고 할 수 있다. 
일반적으로 정보 보호(Information Security)에서는 보안에서 가장 취약한 부분은 컴퓨터 시스템이나 응용 프로그램이 아니라 보안 의식 없이 컴퓨터 시스템을 사용하는 컴퓨터 사용자라고 정의하고 있다. 이렇게 주용한 성숙한 보안 의식은 복잡하고 어려운 것이 아니라 자신이 자주 사용하는 컴퓨터 시스템에는 안티 바이러스(Anti-Virus) 소프트웨어를 설치하고 사용하는 운영체제의 주기적인 보안 패치(Security Patch)를 확인하고 설치하는 등 악성 코드에 감염이 될만한 요소들을 사전에 자신의 컴퓨터 시스템에서 제거를 하여 보호를 하는 것에서부터 출발한다고 할 수가 있다. 이렇게 가볍게 출발할 수 있는 성숙한 보안 의식이 바로 알려지지 않은 악성 코드를 사전에 탐지 할 수 있는 가장 훌륭한 방안이 아닐까 하는 생각을 해본다.

참고 문헌 

The Art of Computer Virus Research and Defense - Peter Szor (2005) 
Computer Viruses and Malware - John Aycock (2006) 
Heuristic Engines - Francisco Fernandez (Virus Bulletin 2001 Paper) 
Full Potential of Dynamic Binary Translation for AV Emulation Engine - Ji Yan Wu (Virus Bulletin 2006 Paper) 
Sandbox Technology inside AV Scanners - Kurt Natvig (Virus Bulletin 2001 Paper) 
Description of the CWSandbox - Carsten Willems 
Heuristic Detection of Viruses within E-mail - Alex Shipp (Virus Bulletin 2001 Paper) 
Prevalence of PE packers in e-mail traffic - Maksym Schipka (AVAR 2006 Paper) 
Behavior Oriented Detection of Malicious Code at Run-Time - Matthew Evan Wagner (F.I.T 2004 Paper) 
Behavioral Classification - Tony Lee & Jigar J. Mody (EICAR 2006 Paper) 
Anti-Malware Tools: Intrusion Detection Systems - Martin Overton (EICAR 2005 Paper) 

2012년 8월 22일 수요일

소설로 만나는 제로 데이(Zero Day)

보안 위협 분석과 관련된 일들을 하게 되면 몇 가지 친해지는 전문 용어들이 있습니다. 익스플로잇(Exploit)취약점(Vulnerability) 등 몇 가지 전문 용어들 있는데 그 중 하나가 제로 데이(Zero Day)입니다.
제로 데이는 윈도우(Windows), 리눅스(Linux)와 같은 운영체제 또는 어도비 리더(Adobe Reader), 오피스 워드(Office Word)와 같은 소프트웨어(Software)에 존재하는 보안 취약점을 해당 취약점을 제거할 수 있는 보안 패치가 나오기 전에 악용하는 공격 형태를 이야기 합니다.

하지만 오늘은 이런 소프트웨어적인 제로 데이 취약점을 이야기하는 것이 아니라 한편의 소설 제로 데이를 이야기 하고자 합니다. 소설 제로 데이는 마이크로소프트(Microsoft)의 테크니컬 펠로(Technical Fellow)인 마크 루시노비치(Mark Russinovich)가 쓴 IT 보안을 주제로 한 소설 입니다.


마크 루시노비치는 윈도우 시스템에 대해 공부를 해보신 분들은 잘 아시는 것처럼 인사이드 윈도우(Inside Windows)와 윈도우 인터널즈(Windows Internals)라는 윈도우 시스템의 바이블이라 불리는 기술 서적의 공동 저자입니다. 저 역시 윈도우 시스템에 대한 공부를 할 때 해당 서적들을 보면서 공부 했었습니다.
그런 저자의 깊이 있는 기술적 내공 만큼이나 소설 제로 데이는 악성코드와 보안 취약점 그리고 금전적인 댓가를 받고 악성코드 제작과 불법적인 해킹을 하는 악의적인 해커들 그리고 이에 맞서 싸우는 보안 전문가의 이야기가 큰 뼈대를 이루고 있습니다.
저의 경우 주로 출, 퇴근 지하철 안에서 읽었는데, 저와 비슷한 일들을 하는 소설 속 주인공의 모습에 많은 공감이 갔었습니다. 그리고 작가의 깊은 기술적인 지식으로 인해 읽는 동안 현실적으로 불가능하다는 생각보다는 오히려 평소 자주 목격하게 되는 모습들이 생각날 정도 였습니다. 한국어 버전에서는 저와 같은 부서의 오랜 동료이자 친구인 정관진 책임 연구원의 기술 감수 덕택에 더 현실적인 표현이 실린 것 같습니다.

제로 데이는 IT 보안에 대해 깊은 지식이 없으신 분들이라도 편안하고 재미있게 읽을 수 있는 한 편의 멋진 소설입니다. 이 소설로 인해 많은 분들이 드라마 유령과 같이 IT 보안에 많은 관심을 가지는 계기가 되었으면 합니다. 그리고 다음 기회에는 저와 관련 된 드라마 유령에 대한 이야기도 몇 자 정리해봐야 하겠네요...

추가적인 소식으로는 마크 루시노비치의 두 번째 IT 보안 소설이 다음 달인 9월 4일에 출간됩니다. 소설 제목부터가 범상치가 않은 "트로이 목마(Trojan Horse)"입니다. 제목에서부터 알 수 있듯이 악성코드와 관련 있으며 큰 줄거리는 사이버 전쟁(Cyber-warfare)과 관련 있는 것이 기대 됩니다. 저 역시 이번에는 원서를 읽어볼까 하는 생각이 살짝 듭니다...

2012년 8월 21일 화요일

인터넷에서 개인정보 지키기

주간 동아에 기고한 원고인데, 사용하는 PC에 원고가 있는 것을 보고 이러한 원고도 썼구나라는 기억이 나더군요. 파일 날짜를 보니 2006년 4월에 작성했는데 주간 동아에서 "‘보안’ 기본만 챙겨도 피해 걱정 ‘뚝’"이라는 제목으로 2006년 5월 23일 실었더군요.

사실 많은 분들이 PC나 IT에 대한 기술적인 지식들이 없다보니, 보안이라는 주제에 대해 어렵게 생각하시는 것 같더군요. 특히 외부 기업이나 관공서 등에서 근무하시는 일반 직원분들을 대상으로 한 보안 강연들을 할 때면 제일 많이 하시는 질문들 중 하나가 "PC 보안에 대해 무엇을 어떻게 해야 되는지 모르겠다"라는 말씀들을 하시더군요.

기업의 경우에는 보안에 대해 정책적으로 전략을 가지고 접근해야 되지만 가정에서 사용하시는 일반 PC의 경우에는 몇 가지만 지키면 안전하고 편안하게 사용하실 수가 있습니다. 2006년과 현재의 보안 위협 상황이 많이 달라졌지만 그 기본이 되는 내용은 과거나 지금이나 동일하다고 생각됩니다. 그런 부분에 대해서는 아래 원고가 조금이나마 도움이 되지 않을까 생각 되네요.

+----------------

얼마 전 어느 시사잡지에서 개인정보 유출에 관한 글을 읽은 적이 있다. 글의 요지는 인터넷이 발달할수록 개인정보는 너무나 쉽게 다른 사람이나 기업들에게 공개된다는 것이다. 또한 그 원인은 인터넷에서 정보를 수집하고 그 결과를 알려주는 검색엔진의 뛰어난 성능 때문이라는 것이다.

그 글을 읽고 대부분의 사람들이 이용하는 유명 검색 사이트에 필자와 관련 있는 단어 몇 개를 입력해봤다. 결과는 놀라웠다. 대학시절의 동아리 활동과 학교생활, 사회생활에서의 갖가지 경험 등이 모니터 화면에 한가득 나타났다. 몇 년 전에 만들어 지극히 개인적인 글들로 채운 블로그까지 검색됐다. 이렇게도 많은 개인정보가 인터넷에 존재한다는 사실에 놀라울 따름이었다. 악의적 의도로 타인의 개인정보를 검색하는 사람들에 의해 과연 어떠한 일들이 벌어질지 상상해보니 아찔해졌다.

이렇듯 수많은 개인정보가 인터넷에 떠다니게 된 이유는 무엇일까. 많은 답이 있을 수 있지만, 결론은 인터넷의 엄청난 발달, 그리고 그에 따라 점점 커져가는 의존성 때문일 것이다. 사실 인터넷을 이용해서 하는 일이 좀 많은가. 그렇다면 수많은 정보가 존재하는 인터넷은 과연 개인정보 보호 차원에서 ‘안전지대’인가.

신뢰할 만한 웹사이트 이용약관 확인 후 회원 가입

불행히도 그 대답은 긍정적이지 않다. 인터넷은 그것을 활용해 정보를 얻고자 하는 사람들의 익명성을 보장한다. 하지만 우리의 개인정보를 불법으로 취득하고자 하는 악의적인 시도는 부지기수다. 그렇다면 인터넷 공간에서 개인정보를 안전하게 지킬 수 있는 방법들에 대해 알아보자.

[첫째] 컴퓨터의 보안을 항상 철저히 유지하고 주기적으로 정비한다. 인터넷에는 악의적인 목적에서 만들어진 스파이웨어와 악성 코드가 많이 있다. 그것들은 개인의 금융정보에서부터 신상정보에 이르기까지 컴퓨터 이용자의 다양한 정보들을 유출하기 위해 제작된다. 하지만 우리는 이런 스파이웨어와 악성 코드가 언제 내 컴퓨터에 감염됐는지, 그리고 외부로 나의 어떤 정보가 유출됐는지 파악하기가 어렵다. 따라서 빈번히 사용하는 컴퓨터에 백신과 개인용 방화벽 같은 보안 소프트웨어를 설치하고 주기적으로 업데이트하면서 시스템을 자주 점검해야 한다.

[둘째] 신뢰할 만한 웹사이트에만 회원으로 가입한다. 대부분의 웹사이트들이 회원 가입 때 상세한 개인정보를 요구한다. 하지만 회원 가입을 한 해당 웹사이트가 며칠 혹은 몇 달 뒤 사라져버리면 회원의 개인정보는 고스란히 해당 웹사이트 업체로 넘어간다.

[셋째] 회원 가입 때 어떠한 개인정보를 요구하는지, 수집한 정보에 대한 자세한 규정 등이 있는지 웹사이트의 이용약관을 자세히 읽어본다. 대부분의 사람들이 이용약관을 제대로 읽지 않고 ‘동의함’을 클릭하는데, 이는 자신의 개인정보를 제공하는 대가로 해당 웹사이트의 서비스를 받겠다는 의미와 같다. 또한 웹사이트 업체가 자신의 개인정보를 어떻게 이용하는지를 전혀 확인하지 않는 것과 같다.

그러므로 이용약관을 자세히 읽어 해당 웹사이트 업체가 회원 가입 때 제공한 개인정보를 어떻게 활용하는지 확인하고, 회원 가입을 위해서 행여 불필요한 다른 개인정보까지 요구하지는 않는지 확인하도록 한다. 회원 탈퇴 시에도 이미 제공한 개인정보를 완전히 삭제하는지의 여부를 확인해야 한다.

[넷째] ID와 비밀번호를 철저히 관리한다. ID와 비밀번호는 해당 웹사이트의 서비스를 이용하는 사람이 회원으로 가입한 당사자라는 사실을 증명하기 위한 수단이다. ID와 비밀번호를 통해 자신의 개인정보를 확인하거나 수정할 수 있으므로 ID와 비밀번호는 언제나 다른 사람이 쉽게 알기 어려운 것으로 설정해야 한다. 또한 주기적으로 비밀번호를 변경해 다른 사람이 비밀번호를 알게 되더라도 이를 쉽게 이용하지 못하도록 주의한다.

[다섯째] 공용 컴퓨터를 사용할 때는 개인정보 입력에 주의한다. 개인이 사용하는 컴퓨터의 경우 보안에 많은 주의를 기울이지만, 여러 사람이 드나드는 PC방이나 도서관 등에 있는 공용 컴퓨터는 보안이 취약한 경우가 많다. 게다가 개인정보 유출을 목적으로 한 스파이웨어나 악성 코드에 감염돼 있는 경우가 많으므로, 공용 컴퓨터를 통해 개인정보를 입력할 때는 온라인으로 제공되는 보안프로그램을 실행한 뒤 이용하도록 한다. 그리고 공용 컴퓨터의 개인정보는 바로 삭제해서 다른 사람이 그 컴퓨터를 통해 나의 개인정보를 확인하거나 이용하지 못하도록 한다.

[여섯째] 인터넷으로 온라인 쇼핑이나 금융거래를 할 경우엔 네트워크 보안이 제공되는 웹사이트인지 확인한다. 이때는 인터넷 익스플로러의 주소창에서 해당 웹사이트의 주소가 ‘https://’로 시작하는지를 확인하면 된다. 이는 해당 웹사이트가 네트워크 보안을 통해서만 접속이 가능함을 나타내는 표시다. 이런 웹사이트에서는 신용카드 번호 등을 입력하면 그것이 암호화되어 안전하게 전송되므로 외부에서 개인정보를 쉽게 유출할 수 없다. 따라서 중요한 금융거래를 하거나 개인정보를 인터넷을 통해 전송할 때는 ‘https://’ 표시가 있는지부터 확인한다.

[일곱째] 수신된 스팸메일이나 송신인이 불분명한 메일은 바로 삭제하고 수신 거부 리스트에 등록한다. 스팸메일은 웹사이트를 통해 무작위로 메일 주소를 수집하거나 임의로 메일 주소를 생성해 전송된다. 이런 메일을 읽거나 ‘수신 확인’을 클릭하면 더 많은 스팸메일이 전송되는 경우가 대부분이다. 송신인이 불분명한 메일을 읽거나 첨부파일을 실행할 경우에도 개인정보를 유출하기 위한 스파이웨어나 악성 코드가 설치될 수 있다. 그러므로 이 같은 메일을 수신하게 됐을 경우엔 바로 삭제하고 수신 거부 리스트에 등록해 다시는 동일한 메일이 수신되지 않도록 해야 한다.

[여덟째] 메일 본문에 있는 링크를 통해 개인정보가 전송되지 않도록 한다. 수신한 메일 중에는 해당 웹사이트에 쉽게 접속할 수 있도록 메일 본문에 링크를 걸어두는 경우가 있다. 그러나 실제로 그 링크가 연결하는 곳은 해당 웹사이트가 아니라 가짜로 만들어진 웹사이트인 경우가 많다. 이러한 악의적인 메일이 바로 ‘피싱(phishing)’이다.

피싱 메일에 존재하는 링크와 웹사이트는 겉으로 봐서는 실제 웹사이트와 별 차이가 나지 않고, 웹사이트 주소도 비슷해 자칫 실제 웹사이트로 오해할 수 있다. 그러므로 웬만한 링크는 클릭하지 않는 것이 현명하다. 메일을 전송한 해당 웹사이트에 접속해야 할 때엔 별도의 인터넷 익스플로러를 실행한 뒤 웹사이트 주소를 직접 입력해서 접속하도록 한다.

스팸메일 바로 삭제 … 메일 본문 링크 통해 접속도 삼가야

개인정보 유출 사고들을 살펴보면 컴퓨터 보안의식의 부재가 원인인 경우가 대부분이다. 많은 사람들이 컴퓨터를 편리하게 활용하는 방법에 대해서는 교육받으면서, 정작 자신의 개인정보를 지킬 수 있는 컴퓨터 보안에 대해서는 제대로 교육받지 못하거나 관심조차 두지 않는다. 컴퓨터 보안 이야기를 꺼내면 무언가 복잡하고 전문가들만이 아는 어려운 내용이라는 선입견을 가지고 있는 것이다.

하지만 위에 소개한 방법들은 컴퓨터 보안에 대해 조금만 관심을 두어도 쉽게 실천할 수 있는 것들이다. 신뢰할 만한 컴퓨터 보안업체가 제공하는 다양한 컴퓨터 보안자료들을 정기적으로 체크한다면 누구나 개인의 신상정보나 금융 정보가 유출됨으로써 입을 수 있는 피해를 예방할 수 있다.

실용적인 내용들로 가득한 "악성코드 분석가의 비법서"

드디어 "악성코드 분석가의 비법서"를 다 읽어보게 되었습니다. 해당 서적의 출간일이 5월 22일이니 대략 3개월의 시간에 걸쳐 다 읽어 보게 된 것 같습니다. 아무래도 이래 저래 시간을 쪼개어서 읽다 보니 시간이 조금 걸린 것 같습니다만 원서를 읽는 것보다는 빨리 보게 된 것 같네요.


이 "악성코드 분석가의 비법서"는 우연하게도 원서의 공저자들과 번역서의 역자는 저와 인연이 있는 분들입니다.

원서의 공저자 중 스티븐 어드에어(Steven Adair)는 작년 워싱턴 D.C에서 열린 보안 컨퍼런스에서 처음 만나 인사하고 이런 저런 이야기들을 나누어보게 되었습니다. 첫 인상은 마른 체구의 백인이라 날카롭게 보였지만 인상과 달리 활달하고 말이 빠른 스타일이라 대화를 따라기가 쉽지 않았습니다.
그리고 공저자인 블레이크 할스타인(Blake Hartstein)은 해당 서적에 나와 있는데로 아이디펜스(iDefense)에서 근무하고 있으며, JSUNPACK라는 스크립트 분석 관련 웹 사이트도 운영하고 있습니다. 블레이크와의 인연은 대략 4년전 한국 방문을 계기로 지금까지도 가끔 연락을 하며 지내고 있습니다. 작년 초인가 결혼을 해서 지금은 행복한 신혼을 보내고 있을 것 같네요.
그리고 한국어 버전의 역자 여성구씨는 지금은 넥슨 CERT 팀장으로 계시지만, 예전에는 제가 근무하는 회사의 보안 컨설턴트로도 근무하셔서 개인적으로 친분이 있던 분입니다. 성구씨도 얼마전에 결혼하셔서 행복한 신혼을 보내고 있으시지요.

이렇게 원서의 공저자들과 번역서의 역자와 묘한 인연이 있는 이 서적을 다 읽어본 후에 든 생각은 악성코드 분석과 악성코드 감염 관련 침해 사고 대응시에 바로 활용이 가능한 실용적인 내용들이 가득한 서적입니다.
저 역시 윈도우 기반 엔지니어이다 보니 리눅스에서 활용이 가능한 악성코드 분석 관련 툴들과 스크립트들이 이렇게 많은지 몰랐습니다. 악성코드와 보안 위협 분석에 제가 사용하는 툴들이 대부분이 윈도우 기반이다 보니 리눅스 기반 툴들에 무관심했던 것이 요인이었던 것 같습니다. 그래서 덕분에 오랜만에 우분투 리눅스도 설치해 테스트 해 볼 수 있는 기회를 가졌던 점이 좋았던 것 같습니다.

악성코드 분석과 침해 사고 대응 관련 경험이 일정 수준이상의 중급 엔지니어들에게는 해당 서적에 나와 있는 툴들을 잘 활용하면 실제 필드에서 자동화와 업무 효율성을 높일 수 있을 것으로 생각 됩니다.
다만 이제 막 악성코드 분석과 침해 사고 대응 등의 보안 위협 분석을 시작하는 입문 및 초급 수준의 엔지니어들에게는 해당 서적이 오히려 독이 될 수도 있을 것 같습니다.
개인적으로는 항상 기본에 충실해야 된다고 생각하는 편이라 기본적인 운영체제와 프로그램의 구동 원리에 대한 이해가 낮은 입문 및 초급 수준의 엔지니어들에게는 보안 위협 분석을 위해 반듯이 알아야 되는 기본 지식들은 익히지 못하고 오히려 툴들에만 너무 의존하게 되어 기본기가 약해 질 수도 있다는 생각이 들었습니다.

결론적으로 정리하자면 해당 서적에 기술되어 있는 툴들과 관련 내용들은 업무에 바로 활용 가능한 내용을 담은 실용적인 서적이며, 보안 위협 분석과 관련된 업무를 하시는 중급 엔지니어들이 보신다면 많은 도움을 받으실 수 있을 것 같습니다.

2012년 8월 20일 월요일

중국 언더그라운드 해커의 변화

중국 언더그라운드 관련 두번째 원고로 대략 2006년 3월에 작성 했었던 것으로 기억 납니다. 이 원고 역시 회사 홈페이지에 "중국 언더그라운드 해커의 변화"라는 동일한 제목으로 공개되어 있습니다.

지난 번에 정리한 중국 언더그라운드 관련 원고는 전체적인 커다란 흐름에서 중국 IT 문화의 발전과 함께 언더그라운드 해킹 문화를 다루었다면, 이번 원고에서는 실질적인 해킹 그룹들의 발전 과정들을 정리한 원고 입니다.

+---------------

얼마 전 한국의 대표적인 온라인 게임인 리니지를 즐기는 사용자들의 개인 정보가 대규모로 도용되는 사건이 발생하였다. 이러한 대규모의 개인 정보 도용 사건은 악의적인 중국인 해커들에 의해 발생한 사건으로 알려져 그 충격을 더하고 있다. 게다가 개인 정보 도용은 리니지 게임 사용자들뿐 아니라 피망, 한게임 그리고 마비노기 등 한국에서 제작되어 널리 알려진 대부분의 온라인 게임으로 번져 나가고 있어 온라인 게임을 즐기는 유저들의 우려를 더해 가고 있는 실정이다.

이러한 중국발 해킹으로 국내에서도 서서히 중국 언더그라운드 해커들에 대한 관심이 증가하고 있다. 중국 언더그라운드 해커 들은 미국 또는 유럽과 달리 1990년대 중반부터 중국 특유의 정치적인 사상과 컴퓨터 시스템 그리고 컴퓨터 네트워킹에 대한 연구가 합쳐져 다른 나라에서 볼 수 없는 독특한 언더그라운드 해커 문화들을 형성하게 되었다. 이러한 고유한 문화를 가진 중국의 언더그라운드 해커들은 어떠한 변화를 겪으며 현재까지 흘러 왔는지 살펴보도록 하자.

컴퓨터 네트워크의 등장

1994년에서 1996년은 중국 컴퓨터 네트워크 산업의 토대가 이루어지기 시작한 시기이다. 그러나 컴퓨터 네트워크라는 개념자체가 전문적인 연구기관이나 연구인력에 의해서 만들어진 연구자료 등에서만 등장하고 있는 실정이었고 컴퓨터 네트워크를 사용하는 계층도 대부분 연구기관의 연구인력에 의해서였다. 이 시기에는 해커라는 단어 자체가 존재하지 않았으며 컴퓨터를 오락용 게임기로 생각하는 사람들이 대부분이었다. 그리고 소수의 컴퓨터 사용자들 역시 도스(DOS)에서 실행되는 프로그램이나 개인 컴퓨터(PC)용 게임 프로그램을 복제하여 보관하는 정도였다. 이 시기에는 해커라기 보다는 일반 프로그램의 복제판을 제작하는 사람들이 많았으며 더 많은 프로그램을 복제하여 용량이 얼마 되지 않는 하드디스크(HDD)에 보관하는 것이 큰 유행이었다. 그 중에서도 최신 유행하는 외국 프로그램을 복사하는 것이 가장 큰 인기를 끌었었다. 이 시기에 활발한 활동을 한 대부분의 사람들이 후일 중국 소프트웨어와 네트워크 개발 산업에 많은 도움을 준 인물들로 성장하게 되었다. 이러한 면에서 본다면 이들이 곧 초기 중국 언더그라운드 해커들의 기원이라고 볼 수 있다.

언더그라운드 해커의 등장과 해커 조직의 결성 

1997년에서 1999년까지가 중?언더그라운드 해커들에 있어서 많은 변화와 발전을 이룬 해라고 볼 수 있다. 그리고 현재 알려진 중국 언더그라운드의 고급 기술을 가지고 있는 해커들 대부분이 이 시기에 가장 많이 등장하였다. 이 시기의 중국 언더그라운드 해커들 사이에서 가장 발달된 기술은 특정 웹 사이트나 전자 메일 주소로 다량의 메일을 전송하는 메일폭탄(Mail Bomb)이 알려져 있었다. 그러나 이 시기 대부분의 해킹 기술은 스스로 개발한 프로그램이 아니라 외국에서 개발된 프로그램을 이용하는 수준이었다. 그리고 아직까지는 중국 언더그라운드 해커들이 스스로 개발한 해킹 프로그램은 찾아 볼 수 없었으며 미국에서와 같은 독특한 언더그라운드 해커 조직이나 고유한 해커 문화도 존재하지 않았다. 1998년에 이르러서야 중국 언더그라운드 해커들에 의해 개발된 최초의 트로이목마인 넷스파이(Win-Trojan/NetSpy)가 제작된다. 그리고 이와 함께 PP, 천행과 사조령 등 고급 해킹 기술을 가진 고급 해커들이 등장하기 시작하였으며 서서히 해커들 스스로 개발한 트로이목마나 해킹 프로그램들이 발견되기 시작하였다. 이러한 악성코드의 빠른 발전에 비해서 아직 중국 내에서는 안티 바이러스(Anti-Virus)에 대한 기술 발전은 미약한 상태였으며 자체적인 백신 개발 기술이 없는 실정이었다.

1997년을 즈음하여 지금은 해체된 중국 최초의 언더그라운드 해커 조직인 녹색병단(綠色兵單)이 굿웰(Goodwell)에 의해서 조직된다. 굿웰은 네트워크 해킹을 중심으로 최초의 해커 조직인 녹색병단(綠色兵單)을 조직하고 중국 언더그라운드에서 개인으로 활동하던 고급해커들을 흡수하는데 큰 기여를 하게 된다.

1998년 7월에서 8월, 인도네시아에서 발생한 대규모의 폭동으로 인해 인도네시아에 진출해 있는 중국 화교들이 커다란 피해를 입는 사건이 발생하게 된다. 이러한 인도네시아 화교들의 피해가 중국 내부에 알려지자 아이알씨(IRC) 채팅방에는 대규모 중국 언더그라운드 해커 모임이 열리게 된다. 이 모임에서 중국 언더그라운드 해커들은 인도네시아 정부 웹 사이트에 대한 대규모 해킹 공격을 결정하게 되고 이 공격은 이후 점점 더 많은 해커들이 참가하게 되었다. 이 해커 모임으로 인해 고급 해킹 기술을 갖춘 몇몇 고급 해커들을 중심으로 ‘중국해커긴급회의중심’이라는 조직을 결성하여 인도네시아 정부에 대한 기술적이며 체계적인 공격을 지휘하게 된다. 이 모임은 중국 언더그라운드 해커들 사이에서는 고유한 해커 문화를 만들어 나갈 수 있는 조직을 결성하는 계기가 되었으며 이 후 이 조직은 최대의 중국 언더그라운드 해커 조직이라고 알려진 홍커(紅客)를 조직하게 되는 밑바탕이 된다.

1999년 5월에 이르러 중국 최대의 언더그라운드 해커 조직과 웹 사이트가 등장하게 된다. 이들은 스스로를 ‘중국홍커(紅客)조국단결전선’ 이라고 부르며 다분히 정치적인 사상을 가지고 있는 모습을 보이게 된다. 그리고 두달 후인 7월, 이들은 자신들의 정식명칭을 ‘중국홍커(紅客)조국통일전선’으로 바꾸며 해킹 기술의 연구라는 기반 위에 애국주의적인 사상을 주된 이념으로 삼는 고유한 문화를 이루게 된다. 홍커(紅客)의 웹 사이트에는 애국주의적인 글과 모택동이 젊은 시절 남긴 사회주의 사상의 글들이 주를 이루고 있다. 홍커(紅客)는 이 후 대만에서 중국과 대만은 별개의 나라라는 양국화론이 대두 되자 대만에서 제작된 소프트웨어에 트로이목마를 설치해 배포하고 대만 정부 웹 사이트에 대한 해킹 공격을 하는 등 그들이 가진 고급 해킹 기술들을 정치와 사상적인 목적으로 이용하게 된다.

[그림] 해체되기 전 홍커(客)의 웹사이트]

언더그라운드 해커 조직의 다양화 

2000년에 이르러 중국 내 개혁과 개방 정책에 따라서 다양한 서구 문화가 중국으로 유입되며 정치적으로는 사회주의 노선을 표방하지만 경제면에서는 자본주의 시장 경제를 따라가는 변화를 맞이하게 된다. 이러한 중국 내 사회적인 변화와 함께 중국 언더그라운드 해커 조직에서도 새로운 문화를 가진 언더그라운드 해커 조직이 등장하기 시작한다.

이 시기의 해커 조직은 크게 세 가지 부류로 나누어지고 있다. 첫 번째가 홍커(紅客)로 대표되며 이들은 강한 정치적인 색채와 애국주의적인 사상을 가진 단체들이며 그들이 가지고 있는 고급 해킹 기술들을 사상적인 목적에 활용하는 부류이다. 두 번째로는 난커(蓝客)로 대표되며 홍커(紅客)와 반대로 순수하게 해킹 기술 습득을 주목적으로 하고 있다. 난커(蓝客)는 정치와 사상에는 전혀 관심을 가지지 않으며 오로지 해킹 기술 습득과 발전에만 전념하고 있다. 마지막으로는 근본적인 해커의 정신에 대해서만 다루며 정치와 컴퓨터 시스템에 대한 집착을 보이지 않는 해커 조직들이다. 그리고 이러한 전문적인 해커 조직 외에도 “중국 소년”이라고 불리는 저급한 크래커들이 등장하게 된다. 이들은 홍커(紅客)와 난커(蓝客) 같이 조직적인 체계를 갖춘 집단이 아니라 혼자서 활동을 하며 해킹에 대한 전문적인 지식이 현저하게 떨어져 언더그라운드 해커 조직에서 개발한 해킹 프로그램들을 주로 이용하였다.

2003년에 이르러 중국 언더그라운드의 대표적인 해커 조직인 홍커(紅客)는 일대 변화를 맞이하게 된다. 홍커(紅客)의 리더인 Lion이 해킹 기술 습득과 함께 해킹에 대한 흥미를 잃어버리고 홍커(紅客) 조직을 해체하게 된다. 이로 인해 홍커(紅客)는 웹사이트 폐쇄와 함께 잠정적으로 모든 활동을 중단하게 된다. 그리고 이시기를 즈음하여 중국 언더그라운드 해커 조직에서도 서서히 해킹자체에 대한 기술 연구보다는 컴퓨터 보안에 대한 연구를 추구하는 조직들이 등장하기 시작하여 중국 언더그라운드 해커 조직의 다양화를 형성하기 시작하였다.

현재 중국 언더그라운드 해커조직은 홍커(紅客)의 해체 이후 중국 최초의 언더그라운드 해커 조직인 녹색병단(綠色兵單)과 비슷한 시기인 1997년에 조직된 중국응파(中國應派)가 리더인 Chinaeagle Union이 가장 큰 해커 조직으로 알려져 있으며 현재까지도 왕성한 활동을 하고 있는 것으로 알려져 있다. 그러나 예전과 같이 시스템 해킹과 같은 악의적인 활동 보다는 컴퓨터 보안에 대한 많은 연구 활동을 하고 있는 것으로 알려져 있다. 그리고 비교적 최근에 알려진 언더그라운드 해커와 해커 조직으로는 고독검객(孤獨劍客)과 그가 소속되어 있는 HackerBase Union이다. 고독검객(孤獨劍客)은 중국 차세대 해커로 꼽힐 정도로 고급 해킹 기술을 구사하고 있는 것으로 알려져 있다. 그리고 난커(蓝客)로 알려진 Lanke Union의 리더인 빙하(氷河)가 있다. 빙하(氷河)는 Lanke Union을 조직하고 그가 가지고 있는 고급 해킹 기술들을 문서화하여 조직의 해킹 기술을 끌어 올리는데 많은 기여를 한 것으로 알려져 있다. 그리고 마지막으로 EvilOctal Security Team의 리더인 빙설봉정(氷雪封情)이 고급 해커로 알려져 있다.

기억에 대한 조작들... 토탈 리콜

개봉 전 부터 많은 관심을 가졌던 영화 토탈 리콜(Total Recall)을 드디어 오늘 저녁 보게 되었습니다. 익히 알려진 것 처럼 이 영화는 과거 아놀드 슈왈츠제네거의 주연과 유명 SF 소설 작가인 필립 .K. 딕의 소설을 원작으로 했습니다.


사실 원작 토탈 리콜에 대한 저의 기억은 아주 먼 과거로 되돌아게 됩니다. 정확하게 언제인지 기억이 나지 않아 자료를 찾아보니 1990년에 한국에서 개봉했으니 대충 20년이 넘게 시간이 흘렀더군요.


그 시절 중학생이었던 저는 영화를 보는 동안 SF 영화와 액션 영화라는 사실 말고는 그렇게 많이 몰입하기가 쉽지 않았고 줄거리 기억도 잘 나지 않더군요. 그런데 몇 주전 주말 케이블 채널에서 20년전 원작을 다시 방송해주더군요. 그래서 전부 보지는 못하고 조금만 봤습니다만 무언가 어색한 느낌들이 가득하더군요. 아마도 20년이 흐르는 동안 IT 기술의 빠른 발전이 영화 산업의 전반을 바꿔놓았기 때문에 표현적인 부분에서 어색함이 있지 않았나 생각 되네요.

그래서 원작에 대한 기대와 향수로 다시 본 리메이크작 토탈 리콜은 제가 기억하던 20년 전의 줄거리와 다르게 화성이 아니라 지구에서 사건들이 전개됩니다. 아마도 감독은 원작과는 조금 다른 줄거리와 전개 방식을 원해서 변경된 것으로 보입니다. 물론 마지막 엔딩 부분에서는 원작이나 리메이크작이나 모두 해피 엔딩을 보여줍니다.

다만 표현 부분에 있어서는 리메이크작이 원작을 뛰어넘는 모습들을 보여주는 것은 앞서 이야기한 IT 기술의 발전 때문에 어쩔 수 없는 부분이겠지요. 다만 원작에서 참신 했던 장면들이 리메이크작에서는 참신하거나 신선하다는 느낌들을 전혀 받지는 못 하고 어색하다는 느낌들이 있더군요.
그 대신 감독이 표현한 우울하고 음침한 모습의 미래에는 한글로 된 광고나 경찰 순찰차들 그리고 불상과 향불 등 아시아 문화에 대한 직, 간접적인 모습들이 넘처납니다. 아마도 감독이 생각하는 미래는 서양의 기술 문명 위에 아시아의 정신 문명이 차지한다고 생각하는 것인지도 모르겠습니다.

이렇게 리메이크된 토탈 리콜은 포스터에 적히 문구대로 블록 버스터급의 SF 액션 영화가 맞습니다. 특히 자기 부상 자동차 추격적과 액션 장면들은 나름 킬링 타임용으로는 충분한 자격을 갖추었다고는 생각 되네요..

2012년 8월 17일 금요일

중국 해커의 기원과 해커 조직의 탄생

2003년 10월 말에 작성한 중국 언더그라운드 관련 원고 입니다. 이 원고 역시 회사 홈페이지에 "중국 해커의 역사"라는 제목으로 공개되어 있습니다.

예전에는 1년에 일주일 정도 중국 법인이 있는 북경으로 출장을 갔었습니다. 출장 목적은 중국 법인에서 근무하는 기술지원 엔지니어들에 대한 악성코드 분석 초, 중급 교육이었습니다. 이런 기회들을 통해 중국 현지 직원들로부터 중국 보안 시장에 대해 많은 이야기들을 들을 수 있었습니다. 그리고 개인적으로 친분이 있었던, 물론 지금도 자주 연락하는 친구들인 중국 보안 업체인 라이징(Rising)과 지앙민(JiangMin)의 연구원들과 만나 연경 맥주와 함께 저녁을 먹으며 중국 보안 산업에 대해 많은 조언들을 들을 수 있었던 기회 였습니다.

일주일이라는 짧은 기간이지만 예전 북경에서 공부 할 때 기억도 나고, 북경에서 대학원을 다니던 대학 동기와 후배들을 만나서 이런 저런 이야기들 할 수 있었던 기억이 나네요. 그 때 대학원을 다니던 친구와 후배들은 이제는 북경 현지 한국 기업에서 근무하는 직장인들이 되었구요.

지금은 중국 북경에 악성코드 분석과 대응을 전담하는 팀이 있어서 제가 직접 출장을 가지는 않습니다. 그래서 마지막 중국 북경 출장을 갔던 때가 2008년 북경 올림픽 때였습니다. 그 때 갑자기 결정된 출장이라 호텔과 항공권 구하기 쉽지 않아 고생을 좀 했습니다만, 잠시 짬을 내서 북경 올림픽 주경기장도 방문해보고 했던 기억들이 나네요.

이제까지 썼던 중국 언더그라운드 관련 원고들을 찾아보니 2003년 10월과 2006년 3월 이렇게 총 2편을 썼더군요. 오늘은 2003년도 원고만 정리하고 다음에 2006년도 원고도 정리 할 생각입니다.

이 중국 언더그라운드 관련 원고 2편으로 인해 2007년 3월에는 중국 언더그라운드 관련 강연을 해달라는 국가사이버안전센터의 요청이 있어 역삼 센터를 방문했었고, 2009년 6월에는 침해사고대응팀협의회(CONCERT)의 비공개 세미나에 참석해 강연을 했던 기억이 나네요.

+---------------------

중국은 정부의 강력한 IT 정책에 힘 입어 장기적인 대규모 네트워크 공사와 IT 기업 설립에 많은 발전을 이루고 있다. 이러한 정보의 강력한 정책은 곧 IT 선진국에서 유학을 한 엘리트들에게 중국으로 돌아올 수 있는 계기를 마련하였고 엘리트들의 대규모 귀국은 곧 IT 벤쳐 기업의 설립과 같은 IT 열풍으로 이어 지게 되었다. 이러한 영향은 곧 중국 서민들의 생활 속에서 컴퓨터(Computer)와 인터넷(Internet)은 더 이상 이웃나라 뉴스 속에서나 들을 수 있는 이야기가 아닌 생활 속의 한 부분으로 여기게 되는 계기가 되었다.

이러한 거대한 흐름의 이면에는 컴퓨터와 네트워크를 통해 사상과 이념을 찾으려는 많은해커(Hacker)들과 단체들이 등장하게 되었다. 이들은 다른 나라에서 흔히 볼 수 있는 컴퓨터와 네트워크에 대한 지적 호기심과 사회주의 국가라는 독특한 환경을 배경으로 다양한 조직으로 갈라지게 되었다. 그리고 그들만의 사상을 위해서 컴퓨터와 인터넷을 이용한 발전을 거듭하고 있다.

1. 네트워크의 등장 (1994년 - 1996년)

1994년에서 1996년은 중국 네트워크 산업의 토대가 이루어지기 시작한 시기였다. 그리나 중국의 네트워크가 일반 대중이 이용한다기 보다는 극소수의 부류에서만 이용 되었다. 그리고 아직까지 일반 대중에게 컴퓨터는 값 비싼 가전제품이라는 인식을 벗어나지 못하고 있었다. 네트워크라는 개념자체가 전문적인 연구기관이나 연구인력에 의해서 만들어지는 연구자료에서만 등장하고 있는 실정이었고 네트워크를 사용하는 소수의 부류도 대부분 연구기관의 연구인력에 의해서였다.

이러한 시기에는 해커라는 단어 역시 인식하지 못했으며 단순히 컴퓨터를 오락용 도구로 생각하는 부류가 많았다. 그 들 대부분도 Dos에서 실행되는 프로그램이나 PC용 게임 프로그램을 복제하여 보관하는 정도의 수준이었다. 이러한 불법 복제에 대해서 저작권 침해라는 개념보다는 정식판의 또 다른 복사판으로 생각하는 경향이 많았으며 저작권 침해라는 인식자체가 거의 존재하지 않는 시기였다. 이 당시는 해커라기 보다는 단순히 일반 프로그램의 불법복제를 일삼는 부류가 많았으며 그 들이 하고자 하는 것도 더 많은 프로그램을 복사하여 용량이 얼마되지 않는 하드디스크(HDD)에 보관하는 것이었다. 그 중에서도 외국에서 최신 유행하고 있는 프로그램을 복사하는 것을 가장 큰 즐거움으로 여겼다. 이 시대에 활발한 활동을 한 대부분의 사람들이 현재의 중국 소프트웨어와 네트워크 개발 산업에 많은 도움을 준 인물들이 배출된다. 이러한 면에서 이 들이 곧 현재 중국 해커들의 기원이라고 볼 수가 있다.

이 시기에는 네트워크를 통한 접속 대부분이 모뎀을 이용하였으며 접속속도 역시 9600 Bits/s 에 못 미쳤다. 현재와 비교하여 네트워크의 초기형태에 가깝다고 볼 수가 있다. 그리고 현재 우리가 사용하는 인터넷에 대한 인식이 거의 없었으며 네트워크로 접속이 가능한 곳도 사설 BBS이거나 대학 연구소에서 개설한 BBS가 전부였다. 그러나 이 후 중국 대부분의 대도시에서 BBS를 전문적으로 운영하는 업체가 등장하게 되었으며 이 곳을 이용하는 대부분의 사람들은 소프트웨어 교환이 주된 화제이자 목적이었다.

1996년도를 기준으로 네트워크 이용 세대가 나눠지게 된다. 1996년 이전에 네트워크를 이용하는 부류를 1세대 중국 네티즌이라고 불리게 되고 그 시기 이후를 2세대 중국 네티즌으로 분류하게 된다. 1 세대 네티즌 대부분은 인터넷에 대한 개념과 이용 경험 없는 부류이며 그 들이 생각하는 네트워크는 모뎀과 전화선을 이용해 사설 BBS에 접속하는 것이 전부이다. 1996년 이 후가 되어서야 중국의 대 도시에서는 네트워크에 대한 기본 토대를 이루기 시작하며 이와 더불어 정부차원에서의 중국국제네트워크관리국이 생기게 된다. 그리고 중국 내에서 모뎀을 이용한 네트워크 접속자 수도 점차 늘어나기 시작하자 1996년에 이르러 중국전신국에서는 모뎀을 이용한 네트워크 접속을 유도하는 정책들을 발표하기 시작하였다. 이 시기에 이르러서야 중국의 일반 가정에서도 네트워크 접속이 널리 보편화 되기 시작하였다.
이러한 배경을 바탕으로 2세대 네티즌들은 기존 1세대 네티즌들이 벗어나지 못했던 공간을 벗어나게 되었다. 그 들은 1세대들이 이용하던 사설 BBS를 벗어나 인터넷이라는 다른 세계로의 접속을 서서히 시작했기 때문이다. 1995년과 1996년은 중국네트워크 성장의 첫걸음을 알리는 해이자 동시에 중국 소프트웨어 산업이 시작하는 해라고 볼 수가 있다. 이러한 발전이 곧 중국 초기 해커들의 기술적 발전을 조금씩 이루어 갈 수 있는 계기를 마련하였다.

2. 해커의 등장과 해커 단체의 탄생 (1997년 - 1999년)

1997년에서 1999년까지가 중국 해커들에 있어서 많은 변화와 발전을 이룬 해라고 볼 수 있다. 그리고 현재의 고급 해커들 대부분이 이 시기에 가장 많은 탄생하였으며 인터넷이라는 단어가 일반인들 사이에서도 서서히 인식되기 시작하였으며 인터넷은 곧 새로운 사상, 새로운 관념으로 대표되기 시작하였다.
1997년 초, 검색 사이트인 야후(Yahoo)에서 중국어로 만들어진 7개의 해킹 관련 웹 사이트를 검색할 수가 있게 되었다. 이 해킹 사이트에서 제공하는 대부분의 정보들은 외국의 해킹 관련사이트에서 볼 수 있는 기술 자료들을 단순히 중국어로 번역하거나 외국 사이트에 대한 정보를 제공하는 정도의 수준이었다. 그러나 이 시기부터 서서히 일반 대중들 사이에서도 해커라는 단어가 서서히 알려지기 시작하였다. 당시 해커들의 가장 발달된 기술은 특정 사이트나 메일 계정으로 다량의 메일을 전송하는 메일폭탄(MailBomb)이 가장 고난이도 기술로 평가되었다. 그러나 이러한 기술도 대부분 스스로 개발한 프로그램에 의한 것이 아니라 외국에서 개발된 프로그램을 이용하는 수준이었다. 중국 자체에서 개발된 해킹 프로그램을 찾아 볼 수 가 없을 뿐만 아니라 미국에서와 같은 독특한 해커 조직이나 독특한 문화는 찾아 볼 수가 없다.

1998년에 이르러서야 서서히 인터넷을 이용한 활발한 활동이 이루어지기 시작하였다. 이 시기 미국에서는 전세계 해커 대회 중 백오리피스(Back Orifice)라는 트로이목마를 발표하게 된다. 이 트로이목마는 전 세계적으로 네트워크 상에서 컴퓨터 시스템 보안이라는 문제를 일으키게 되었으며 이 후 트로이목마(Trojan Horse)라는 악성코드의 발전에 커다란 계기를 마련하게 된다. 백오리피스의 발표 후, 이와 관련된 유사한 프로그램들 역시 인터넷을 통해 중국에도 널리 알려지게 되었으며 중국의 해커들 역시 이러한 프로그램들을 사용하게 되었다. 그러나 백오리피스와 같은 악성코드가 중국 내에 미친 악영향은 비교적 적은 편이었으며 오히려 'CIH' 가 더 많은 컴퓨터 시스템에 피해를 입히게 되었다. 'CIH'로 인해 중국은 수백억에 달하는 피해를 입게 되었으며 이와 동시에 중국의 해커들에게 악성코드에 대한 많은 관심을 불러 일으키게 되었다.

1998년에 이르러서 중국 해커들에 의해 개발된 최초의 트로이목마인 넷 스파이(NetSpy)가 등장하게 된다. 넷 스파이라는 중국 최초의 트로이목마가 개발 되었으나 'CIH'의 커다란 파급효과로 인해 그러게 많은 관심을 끌지는 못했다. 그러나 PP, 천행, 사조령과 같은 고급 해킹 기술을 가진 해커들이 두각을 나타내기 시작하며 해커들 사이에서는 서서히 스스로 개발한 트로이목마나 해킹 프로그램들이 등장하기 시작하였다. 이러한 악성코드의 빠른 발전에 비해서 아직 중국 내에서는 안티바이러스(Anti-Virus)에 대한 기술 발전은 미약한 상태였으며 자체적인 백신 개발 기술이 없는 실정이었다.

1998년 7월에서 8월, 인도네시아에서 발생한 대규모의 폭동으로 인해 인도네시아에 진출해 있는 중국 화교들이 커다란 피해를 입는 사건이 발생하게 된다. 이 사건은 곧 인터넷과 일반 뉴스미디어 매체를 통해 일반인들에게 알려지게 되며 중국에서 제작된 웹 사이트(Web-Site)에는 이 폭동으로 피해를 입은 중국 화교들의 잔혹한 피해상을 그대로 전하게 된다. 이러한 피해들이 알려지자 IRC에는 유례 없는 대규모 중국 해커 집회가 열리게 된다. 이 집회에서 중국 해커들은 인도네시아 정부 웹 사이트에 대한 메일폭탄과 'Ping' 명령 등을 통한 대규모 공격을 결정하게 된다. 이 공격은 이 후 점점 더 많은 수의 사람들이 참가하게 되었으며 참가자들 중 고급 기술을 갖춘 해커들을 중심으로 '중국해커긴급회의중심'이라는 조직을 결성하여 인도네시아 정부에 대한 기술적이며 체계적인 공격을 지휘하게 된다.  이 후 해커들 사이에서는 자신들만의 해커 문화를 만들어 나갈 수 있는 단체를 결성하는 계기가 되었었으며 이 조직은 중국 최초의 해커 단체인 홍커(적색 해커)라는 조직의 뼈대를 이루게 된다.

이러한 사건이 발생한 후 해커들 사이에는 유닉스(Unix), 네트워크(Network) 등에 관련된 고급 기술에 대한 관심이 서서히 커져가기 시작하였으며 해커들 사이에서의 주된 화제거리가 되었다. 이 와 동시에 인터넷에는 해킹 기술과 관련된 수 많은 중국어 웹 사이트가 등장하게 되었으며 고급 해킹 기술을 가진 해커들이 대거 등장하게 된다.

1999년 5월, 중국 최초의 해커 단체와 그 들만의 웹 사이트가 탄생하게 된다. 이 들은 스스로를 '중국홍커조국단결전선' 이라고 부르며 강한 정치적인 색채를 띄게 된다. 그리고 2달 후, 이들은 자신들의 정식명칭을 '중국홍커조국통일전선'로 바꾸며 네트워크와 컴퓨터 시스템에 대한 기술적인 바탕 위에 애국주의적인 사상을 주된 이념으로 삼게 된다. 이 들의 웹 사이트에는 애국주의적인 글과 모택동의 젊은 시절 남긴 사회주의 사상의 글들이 주를 이루고 있다. 이들은 이 후 대만에서 중국과 대만은 별개의 나라라는 양국화론이 대두 되자 대만에서 제작된 소프트웨어에 트로이목마를 설치해 배포하는 한편 대만 정부의 웹 사이트를 공격하는 등 그들이 가진 고급 해킹 기술들을 정치와 사상적인 목적으로 이용하게 된다.

3. 해커 조직의 다변화 (2000년 - 2002년)

2000년은 중국에서 인터넷이라는 매체가 보편화가 되는 시기이다. 이 시기에는 PC 방이 전국적으로 등장하게 되며 인터넷을 이용하는 인구도 몇 년 전과 비교하여 몇 배 이상이 증가하게 된다. 그리고 일반인들 사이에서 "인터넷 이용하세요?"라는 말이 하나의 유행어가 될 정도로 인터넷은 중국인들 생활 깊숙히 파고 들게 되었다.

이러한 인터넷의 보편화와 동시에 중국 내에서는 다양한 사상을 가진 해커 단체들이 등장하게 되며 서서히 해커 조직에 대한 다변화가 이루어지기 시작한다. 이 시기에 등장하는 해커 단체는 크게 세 가지 부류로 나눌 수가 있다. 첫 번째가 홍커(적색 해커)로 대표되며 이들은 강한 정치적인 색채와 애국주의적인 사상을 가진 단체들이다. 이 들은 정치와 사상적인 목적에 해킹 기술들을 주로 이용하고 있다. 두 번째는 난커(청색 해커)로 대표되며 이들은 홍커와는 반대로 순수하게 네트워크와 컴퓨터 시스템에 대한 기술 습득을 주목적으로 하고 있다. 정치와 사상에는 전혀 관심을 가지지 않으며 자신과 자신이 속한 해킹 단체의 기술 발전에만 전념하고 있다. 마지막으로는 근본적인 해커의 정신에 대해서만 다루며 정치와 컴퓨터 시스템에 대한 집착을 보이지 않는 집단들이다. 그리고 이러한 전문적인 해킹 집단 외에도 "중국 소년"이라고 불리는 인물들이 등장하게 된다. 이 들은 홍커 혹은 난커와 같은 조직적인 체계를 갖춘 집단이 아니라 혼자서 활동을 하며 대부분이 나이 어린 청소년들이 주를 이룬다. 이 들은 앞서 말한 두 단체들에 비해 네트워크나 컴퓨터 시스템에 대한 기술적인 지식이 현저하게 떨어지며 자신들이 개발한 해킹 프로그램들을 사용하기 보다는 전문적인 해커 단체에서 개발한 프로그램들을 이용하는 경향이 강하다.

2012년 8월 16일 목요일

유해 가능 프로그램

2005년 8월 회사 사보를 담당하시는 분으로부터 유해 가능 프로그램에 대한 원고를 부탁 받고 작성했던 글입니다. 그런데 지금와서 찾아보니 사보가 블로그 형태로 바뀌면서 예전에 작성했던 원고를 찾지를 못하겠네요..

오늘 다시 정리를 하면서 읽어보니 어제 본 브레이킹 배드(Breaking Bad)라는 미국 드라마의 큰 줄거리와 원고의 서론 부분이 비슷하네요. 그 드라마는 암 말기 판정을 받은 화학 선생님이 가족의 생계를 위해 알고 있는 화학 지식으로 마약을 제조하면서 벌어지는 에피소드들을 다룬 드라마입니다.

흔히 유해 가능 프로그램은 양날의 검이라고 많이들 이야기 합니다. 좋은 목적으로 쓰면 보안 점검이나 시스템 점검 도구이지만 해킹의 목적을 위해 사용하면 악성코드와 다를 바 없는 프로그램이 되는 것이지요.

특히 침해 사고가 발생한 시스템들을 분석하다 보면 윈도우 시스템에서 패드워드를 덤프(Dump)해내는 툴, 네트워크를 스캐닝하는 중국산 툴 그리고 원격 제어를 위한 툴들과 같이 좋은 목적의 툴들을 악의적인 목적으로 변경한 유해 가능 프로그램들을 한 두개씩 발견하기도 합니다.

재미있는 에피소드로 예전 침해 사고가 발생한 시스템에서 발견한 중국 언더그라운드에서 개발한 네트워크 스캐닝 툴을 엔진에  진단 추가한 적이 있었습니다. 며칠 후 어떤 기업의 보안 담당자님으로부터 왜 보안 검사를 위해 자신이 쓰는 툴을 진단했냐는 항의가 있었습니다. 이러한 에피소드가 양날의 검이라는 표현이 적합함을 보여주는 좋은 사례이겠지요.

결국 어떠한 좋은 프로그램이라도 그 것을 용도에 맞게 잘 쓸려는 사람의 노력과 의지가 필요하다고 생각 됩니다.

+-----------------

악성코드에 관련된 이야기를 하기 전에 필자가 몇 주 전 읽은 뉴스위크의 기사 하나를 먼저 이야기 하고자 한다. 최근 미국 전역에서 문제가 되는 일명 메스라고 불리는 메스라메탐페타민이라는 마약에 대한 기사인데 미 연방 정부의 집계에 의하면 1억 2000만 명이 메스라는 마약을 시도하고 150만 명이 상용 중으로 미국 전역에 광범위하게 퍼져 있다고 한다. 메스라는 마약은 가난한자의 코카인이라고 불리는 것처럼 그 주성분은 일반 약국에서 판매하는 감기약의 주성분 중 하나인 에페드린을 사용하고 있다.
필자가 이 메스라는 마약에 대해서 이야기하는 것은 이 마약 기사를 보고 온라인의 가상 세계에서 펼쳐지는 "악성코드의 세계"와 비슷하다는 생각을 했기 때문이다. 악성코드의 분류 중에서 유해가는 프로그램이라는 형태가 있다. 유해가능 프로그램은 해당 프로그램 자체는 선의의 목적으로 개발되었으나 해킹 또는 악성코드와 같은 악의적인 목적에 사용되는 프로그램들을 통칭한다. 메스라는 마약 제조에 사용되는 에페드린이 감기약을 제조하기 위한 선의의 목적으로 사용되었으나 이를 악의적인 목적으로 마약 제조에 사용되고 있다는 점에서 필자가 말하고자 하는 유해가능 프로그램과 유사하다고 볼 수 있을 것이다.

선의의 목적으로 제작된 프로그램들을 악의적인 목적으로 사용되는 유해가능 프로그램은 구체적으로 어떠한 것인지 알아 보도록 하자. 먼저 유해가능 프로그램에 대해 연구소에서는 다음과 같이 정의하고 있다.

* 유해 가능 프로그램 (Potentially Unwanted Program) 
정상 목적으로도 사용되지만 사용자가 인지하지 못하거나 악용되어 사용자를 불편하게 하거나 해를 끼칠 수 있는 프로그램

이러한 정의를 가지는 유해 가능 프로그램은 다양한 형태와 기능을 가지는 상용 또는 무료 프로그램으로 구성되어 있지만 사용 목적 자체가 원래 제작의 취지에 벗어난다는 점이 기존에 알려진 악성코드와 다르다고 볼 수 있다. 그리고 유해 가능 프로그램 대부분은 자체적인 전파 기능과 감염 활동을 하지는 않는다. 일반적으로 유해 가능 프로그램이 설치되는 경로들을 분석해보면 드로퍼(Dropper)와 같은 다른 악성코드에 의해 설치되는 것이 대부분이며 다른 시스템에 대한 자동화 공격과 시스템 자원의 외부 유출 등에 사용되고 있다. 이러한 방법 외에도 악의적인 해커에 의해 시스템이 직접적으로 해킹을 당한 후 유해가능 프로그램을 설치하여 해킹한 시스템의 재 침입과 시스템 자원의 외부 유출을 시도하는 경우에도 사용되고 있다.

이러한 악의적인 목적에 활용되는 유해 가능 프로그램은 주로 다음과 같은 형태로 나누어 볼 수 있으며 기능적인 측면으로만 본다면 악성코드가 가지고 있는 기능 중의 하나로도 생각해 볼 수 있다.

1) 원격제어 형태
원격제어 형태는 원격지에서 시스템 관리의 목적으로 제작된 정상 프로그램이나 악의적인 목적으로 특정 시스템을 외부에서 사용자 동의 없이 마음대로 조작하는 것에 사용되고 있다.

2) 키로거 형태
키로거는 시스템 모니터링의 용도로 개발된 정상 프로그램이나 이를 악용하여 사용자가 입력하는 키보드 입력값을 중간에서 가로채어 외부에서 사용자가 현재 어떠한 키보드 입력을 하고 있는지 확인하는 프로그램이다. 이로 인해 사용자의 개인정보나 금융 정보 등이 유출될 수도 있다.

3) 파일 전송 형태
파일 전송 형태는 일반적으로 파일의 업로드 및 다운로드를 통한 시스템 관리를 주목적으로 제작된 정상 프로그램이다. 이러한 기능을 악용하여 특정 시스템을 와레즈 서버로 이용한다던가 시스템에 있는 특정 파일들을 사용자 모르게 외부로 유출하는 기능으로 사용되고 있다.

4) 시스템 유틸리티 형태
시스템 유틸리티 형태는 시스템 관리자들이 시스템 관리를 위해서 사용되는 정상 프로그램들이다. 그러나 이를 악용하여 시스템의 취약한 부분을 검색한다던가 시스템에서 실행 중인 보안 프로그램의 강제종료 등에 사용되고 있다.

이러한 다양한 형태의 유해가능 프로그램이 악의적인 목적에 활용되고 있는 가장 큰 이유는 악성코드 제작자 또는 악의적인 해커들이 일반적으로 보안 업체들은 상용 또는 무료로 배포하는 정상 프로그램은 진단하지 않는다 점을 악용한다고 볼 수 있다. 이러한 문제로 정상 프로그램이지만 그 기능에 따라서 악의적인 목적으로 많은 프로그램들이 사용되고 있는 실정이다. 그리고 보안 업체의 입장에서도 유해 가능 프로그램 대부분이 상용 또는 무료로 배포되고 있는 정상 프로그램들이라는 점에서 적절한 대응을 하는데 많은 어려움이 따르게 되는 것이다. 그 원인이 상용 프로그램의 경우에는 악의적인 목적에 사용 되었다고 하여 해당 프로그램을 진단하게 된다면 해당 프로그램 제작사와 보안 업체 간의 법적 공방 등으로 번지는 부작용을 초래할 수도 있기 때문이다. 그러므로 보안 업체의 입장에서는 적절한 대응을 하지 못한다는 점과 상용 프로그램 제작사와의 관계라는 여러가지 어려움들이 발생하게 된다.
이러한 문제로 보안 업체에서는 유해 가능 프로그램이 어떠한 것이라는 것과 제품의 별도 옵션을 통해서 사용자의 선택에 의해서만 진단이 가능하도록 하고 있다. 그리고 유해 가능 프로그램이 진단이 될 경우에는 해당 프로그램이 어떠한 기능을 가지고 있는 프로그램인지 사용자가 충분히 인지하도록 하고 사용자의 선택에 의해서만 삭제 할 수 있도록 하고 있다.

보안 업체에서 유해 가능 프로그램에 대한 대응을 잘 수행하는 것도 중요하지만 컴퓨터 사용자의 보안 의식도 이에 못지 않게 중요하다. 유해 가능 프로그램 자체가 프로그램의 사용자가 선의의 목적으로 사용하는가 아니면 악의적인 목적으로 사용하는가에 따라서 프로그램 자체의 정의가 달라 질 수 있다는 점에서 컴퓨터 사용자의 보안 의식이 특히나 중요하다고 볼 수 있다. 유해 가능 프로그램에 대한 대비를 하기 위해서는 다음과 같은 주의 사항을 참고하는 것이 좋을 법하다. 그러나 유해 가능 프로그램이라고 하여 컴퓨터 사용자가 준수해야 할 보안 수칙이 특별한 것은 아니며 일반적인 악성코드에 대한 대비를 하는 것과 비슷하다고 이해를 하면 좋을 것 같다.

1) 사용하는 시스템에 백신 및 개인용 방화벽과 같은 보안 프로그램을 설치하고 항상 최신 엔진으로 업데이트하도록 한다.

2) 사용하는 윈도우 시스템에 보안 패치를 설치하여 유해가능 프로그램이 이용할 가능성이 있는 윈도우 취약점을 없애도록 한다.

3) 사용하는 시스템의 사용자 계정에 비밀번호 설정하고 비밀번호는 다른 사람들이 쉽게 생각할 수 없는 것을 설정하도록 한다.

4) 인터넷 또는 메일에 첨부된 확인되지 않은 파일을 다운로드 하여 실행 할 경우에는 최신 엔진으로 업데이트한 백신으로 검사하도록 한다.

위 와 같은 보안 수칙은 앞서 서술한 바와 같이 유해 가능 프로그램 뿐만 아니라 악성코드 감염에 대한 대비를 할 수 있는 것이므로 개인 컴퓨터 사용자라면 반듯이 지키는 것이 좋다.

아무리 좋은 프로그램이라도 그것을 사용하는 사람이 어떠한 목적으로 해당 프로그램을 사용하는가에 따라서 독이 될 수도 있고 약이 될 수도 있다. 이러한 독을 제조하지 않는 것이 가장 중요하지만 그것이 어렵다면 독을 해독할 수 있는 약에 대한 지식을 충분히 가지고 있어야지만 피해를 입지 않고 예방 할 수 있을 것이다. 이제 글 서문에서 필지가 이야기한 메스라는 마약에서 사용되는 감기약의 주성분 중 하나인 에페드린과 유해 가능 프로그램이 어떠한 공통점이 있는지 모두들 공감할 수 있으리라 본다.
예전 대학 시절, 맹자의 성선설(性善說)과 순자의 성악설(性惡說) 중 과연 인간은 어디에 더 가까운 것인지 열띤 토론을 했던 기억을 마지막으로 본 글을 마무리 하고자 한다.

2012년 8월 15일 수요일

지산 밸리와 펜타포트의 기억들...

올해 들어서는 이래 저래 록 공연들을 많이 보러 다니고 있습니다. 결혼하기 전에는 최소 분기에 1번 정도는 갔었는데, 결혼 후 3년 동안 거의 다니지 못하다 보니 이래 저래 아쉽다는 생각이 많이 들더군요.

그래서, 올해는 관심 있는 밴드들의 공연이 있으면, 꼭 갈려고 노력 중에 있습니다. 그런 첫 번째 공연은 일본 록 밴드 One OK Rock의 내한 공연이었고, 그 다음이 브로큰 발렌타인이었습니다. 

그러다... 우연치 않게 버스커 버스커 1집 마무리 앨범을 구매한 후에 저도 모르게 자동 응모된 지산 밸리 록 페스티벌의 무료 초대 이벤트에 당첨이 되었습니다. 덕분에 무료 초대권 2장을 받게 되어 7월 29일 버스커 버스커 무대가 있는 날 지산 리조트를 찾게 되었습니다. 


날씨는 화창함을 넘어서서 햇빛이 쏟아지는 것이 거의 폭염 수준이라 모자쓰고 선크림을 잔뜩 발라도 피부가 검게 그을리는 것은 어쩔 수 없더군요. 그래도 버스커 버스커와 넬 등의 밴드의 야외 공연을 볼 수 있다는 점에서 참아야 했습니다.

직접 지산까지 서울에서부터 차를 운전을 해서 갔습니다. 이런 야외 공연을 참가 해본 경험이 없어 주차를 어떻게 할 까 하다, 지정 주차장에 주차하고 공연장까지 셔틀로 이동하자는 계획을 세웠습니다. 역시나 공연장 인근에는 불법 주차와 차량 진입 통제로 공연장 입구까지는 10분이상 그 더운 날씨에 걸어올라가야 나쁜 상황이었습니다만 셔틀 탑승자들은 바로 공연장 입구까지 갈 수 있어 아주 편한게 공연장으로 갈 수 있었습니다. 


도착하자 마자 본 공연은 저에게 무료 초대권의 행운을 안겨준 버스커 버스커의 공연이었습니다. 위 사진은 버스커 버스커가 공연 직전 사운드 세팅하는 모습입니다. 버스커 버스커에게 배정된 공연 시간이 30분이다 보니 거의 멘트 없이 앨범에 있는 곡들 연주하고 내려가더군요. 짧게나마 인사나 소감 멘트 정도는 했으면 더 좋았을 것 같은데 말이에요.

날씨가 너무 더워 공연 보기 직전에는 맥주와 핫도그 먹으면서 잠시 그늘에 쉬었습니다. 폭염인 날씨 때문인지 그늘 잔디에는 돗자리 깔아놓고 쉬는 사람들도 많고 어떠 외국인분은 잠을 자고 있더군요. 아마 공연을 즐기다 피곤해서 잠시 쉬시는 가 보더군요.


그렇게 해서 해가 서서히 지기 시작하는 시간에 넬이 무대에서 사운드 체크를 시작하기 시작했습니다. 드러머가 군대가기 직전에 한 공연이 마지막이었으니 넬 공연은 몇 년만에 다시 보게 되어 좋았습니다. 

40분간의 넬 공연을 보고 잔디에 앉아서 쉬다가 서울로 올라왔습니다. 마지막 날이라 차가 많이 막힐 것 같았지만 의외로 차가 많이 막히지 않아서 1시간 조금 넘게만에 서울로 올 수가 있었습니다.

이런 지산 밸리 록 페스티벌의 삘을 받아서 간 다음 공연은 8월 11일 토요일 날씨도 적당히 흐려서 야외 공연을 보기에 최상이었던 인천 펜타포트 록 페스티벌이었습니다.

사실 공연하게 될 밴드 라인업도 지산 밸리 록 페스티벌보다 펜타포트가 개인적으로 더 좋았습니다. 물론 지산에는 라디오헤드라는 대형 밴드가 있었던 점을 무시 할 수 없겠지만요.

펜타포트에는 탑 밴드 출시의 브로큰 발렌타인도 참여를 했었습니다. 몇 달전에 단독 공연을 봤었는데, 관객들과 재미있게 호흡하는 좋은 밴드더군요.


그리고 몇 년만에 한국 하드코어계의 자존심인 바세린 공연도 보았습니다. 바세린은 지금 새앨범을 녹음 중에 있고 올해 내로 새앨범을 발매 할 예정이라고 하더군요. 그래서인지 30분의 공연 시간 중 몇 곡은 신곡들을 들려주는 팬 서비스도 보여주더군요.


그리고 바세린 공연 후 일본 밴드 SiM의 공연을 조금 떨어진 곳에서 서서 보고 있었는데 바세린의 보컬 신우석씨가 바로 옆에서 공연을 보고 있으시더군요. 조금만 더 나이가 어렸으면 사진 같이 찍자고 했을 건데 차마 말을 못 하겠더군요..

피아 역시 오랜만에 공연을 보게 되었습니다. 피아 역시 탑밴드 시즌 2에서 좋은 모습을 보여주었고, 작년에 발매한 새 앨범도 괜찮아서 기대가 많았습니다. 그런데 피아의 무대에서는 깜짝 게스트로 가수 김장훈씨가 등장해 2곡을 불러주시더군요. 밴드 피아와 김장훈씨가 친분이 있다는 점에서 조금 놀랐습니다.


마지막으로 본 공연은 내년이 데뷔 20주년이 되는 한국 헤비메틀계의 큰 형님이신 크래쉬였습니다. 제가 크래쉬를 처음 본 것이 데뷔전인 92년 대구의 허름한 극장에서 스푼이라는 밴드와 함께 투어를 할 때였으니 저도 거의 20년된 팬이군요...


1시간 정도의 멋진 공연을 보여주고 스테이지의 마지막 공연이라 앵콜곡도 1곡 들려주고, 특히 Smoke on the water 곡을 할 때는 기타 연주 부분을 사람들이 단체로 따라 부르는 모습은 아직 크래쉬가 살아 있는 멋진 밴드구나 하는 생각이 듭니다.
그리고 낮에 우연히 돌아다니다 크래쉬의 안흥찬 형님을 봤습니다만 사진 같이 찍자는 말은 못하겠더군요. ^^;;

이렇게 7월과 8월에는 야외 공연을 보러 다니느라 얼굴이 많이 그을렸더군요. 그래서 와이프가 올해 야외 공연을 더 보러가는 것을 반대하는데, 사실 이제 갈 만한 야외 공연은 없는 것 같아 2013년 기다려야 할 것 같습니다.

물론 그 이전에 멋진 밴드 단독 공연들이 있다면 계속 갈 예정이구요...

아.. 그리고 야외 공연을 계획 중이신 분들께 팁을 드리면, 가급적이면 대중교통을 이용하시고 주차는 지정 주차장에하신 후에 셔틀을 이용하세요. 공연장 근처에는 행사 차량과 사람들 때문에 주차가 거의 불가능 합니다. 그리고 날씨가 더운 여름이다 보니 얼음 물 몇 병과 돗자리 그리고 낚시용 의자와 커다란 파라솔 또는 우산 준비하시면 편하게 공연 보실 수 있어요. 어떤 분들은 텐트와 도시락 그리고 음료들을 잔뜩 가지고 가족단위로 놀러 오시는 분들도 보기 좋더군요.