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)

댓글 없음:

댓글 쓰기