개요
대중적으론 악성코드보단 바이러스라는 용어를 더 일상적으로 사용하고, 정보보안을 공부한 사람이라면 악성코드란 용어를 더 친숙하게 받아들인다. 악성코드란 무엇일까. 지금까지 우리는 악성코드란 단어를 의구심 없이 받아 들일뿐 물음표를 던져본적이 없었던 것 같다. 그래서 Malware란 단어를 살펴보기 앞서 악성코드 단어를 분해해보려 한다.
정의 파악
악성(惡性)이란 악한 성질로 이 성질 파악의 주체는 사람의 목적이다. 날카로운 칼이 있다. 이 칼은 어떤 성향을 가진 사람 손에 들려져 있는가에 따라 맛있는 요리를 할 수 있지만, 누군가를 해칠 수도 있다. 어떤 용도로 사용하지 않으면 그냥 물건일 뿐이다. 누군가를 해칠 수도 있다는 가능성이 실현되는 것은 그 주체자의 의도와 행동에 따르기에 물체인 칼은 악한 성질을 가지고 있다고 판단할 수 없다.
코드(Code)란 기호를 의미하며 컴퓨터에서만 사용하는 용어는 아니다. 하지만 여기서는 컴퓨터에서 사용하는 코드를 의미한다. 컴퓨터에서 코드란 하드웨어에서 실행되는 소프트웨어의 요소 중 하나다. 프로그래밍 언어를 이용해 사람은 소스코드를 작성한다. 작성한 소스코드는 컴파일러나 인터프리터에 의해 하드웨어인 CPU가 해석할 수 있는 기계어 코드로 변환된다.
두 정의를 통해 살펴본 것 처럼 악성코드란 악한 성질을 가진 컴퓨터 코드로 볼 수 있다. 앞서 악성의 정의를 살펴본 것 처럼 컴퓨터의 관점에서 악성은 실행되지 않는 코드일 뿐이다. 불편함을 초래하거나 귀찮게하거나 놀리거나 금전적 손실을 일으키거나 컴퓨터를 못쓰게 만드는 등 사람의 입장에서 "이 소프트웨어 나쁘네" 하면 악성코드가 된다.
문제 의식
코드 정의에서 살펴봤듯이 소프트웨어가 하드웨어에서 실행되는 요소 중 하나가 코드며 소개 안한 다른 요소는 데이터다. CPU도 코드 세그먼트(CS)와 데이터 세그먼트(DS)가 따로이 운영되고, 이들이 운영되는 큰 이유인 분할 메모리 모델에서 코드 영역과 데이터 영역이 따로 구분되어 관리될 정도로 중요한 요소다. 데이터는 가공되지 않은 정보다. 데이터는 코드가 동작하는 과정에 사용된 의미를 찾을 수 있으며, 사용자가 데이터를 보고 해석하여 의미를 찾을 수 있다. 이렇게 찾게된 의미를 정보라 부른다.
그렇다면 악성코드는 있는데, 악성 데이터는 없을까? 악성 코드가 동작하기 위해 필요한 데이터는 당연히 악성 데이터다. 이 데이터가 없으면 해당 코드가 동작하지 않으니까. 사용자는 데이터만 보고 악성으로 해석하기 힘들 수 있지만 이미 악성으로 판단된 상황에서 찾은 데이터는 악성으로 해석할 수 있다. 대표적인 경우가 .pdb 파일이다.
.pdb 파일은 Program DataBase의 약자로 프로그램을 개발할 때 다양한 정보가 저장되는 데이터 파일이다. 어떤 악성 소프트웨어를 분석하는 과정에서 .pdb 파일의 경로를 만나게 되거나 운좋게 .pdb 파일을 찾게 된다면 이 파일을 분석하여 컴파일러에 관한 정보, 디버깅에 관한 정보 등 확인할 수 있으며, 이는 분석한 악성 소프트웨어 정보와 결합하여 악성 정보로써 관리된다.
결론
그렇다면 정말 악성코드로 불리는게 맞는 것일까? 현재 우리가 부르는 악성코드와 매핑되는 영단어는 Malware다. 이 단어도 합성어인데 악성을 의미하는 Malicious와 소프트웨어(software)의 조합이다. 소프트웨어는 다시 코드와 데이터와 같은 요소로 이루어져 있다고 정의했었다. 다시 말해서 악성코드와 악성 데이터를 합쳐야 멀웨어가 되는 구조를 가지게 맞다. 앞으론 멀웨어나 악성 소프트웨어로 쭉 써야할 것 같다.
기타
추가로 악성코드란 한국어 명칭이 처음 사용된 것이 언제인지 찾아봤다. 인터넷에서 찾아볼 수 있는 가장 오래된 정보로는 안철수 대표가 1999년 정보보호 심포지움에서 "컴퓨터 바이러스와 악성코드의 현황 및 대책"이란 발표인 것 같다. 아쉽게도 이 제목은 CIH 바이러스 분석 및 대책 논문의 레퍼런스에서 찾아 볼 수 있었을 뿐 발표 자료나 내용은 찾을 수 없었다. 1년이 지난 2000년 한국정보보호센터로 불리던 시절의 KISA에서 발간한 KISA-2000 정보시스템 해킹 바이러스 현황 및 대응 보고서에서 악성코드와 바이러스는 의미가 혼용되어 사용된다. 분명 그 전에 악성코드란 단어가 사용되었던 적이 있었을 것 같다. 정보보안 역사를 경험한 대선배님들과 대화할 기회가 온다면 한번은 물어봐야 할 것 같다.
레퍼런스
- CIH 바이러스 분석 및 대책 - https://caislab.kaist.ac.kr/publication/paper_files/1999/kityhwang/kiisc_cih_kbhwang.pdf
- KISA-2000 정보시스템 해킹 바이러스 현황 및 대응 - http://www.kisa.or.kr/public/library/report_View.jsp?regno=003336
'Information Security > Malware' 카테고리의 다른 글
랜섬웨어 대응방안 (5) | 2017.05.17 |
---|---|
[보고서] Mirai Botnet (0) | 2016.12.26 |
도메인 쉐도잉 (Domain Shadowing) (0) | 2015.03.17 |
Sweet Orange exploit kit (0) | 2014.09.02 |
공다팩(Gondad EK) 분석 #04 (2) | 2014.08.14 |