본문 바로가기

Work Log/As Cybersecurity Consultant

[악성코드] 인공면역체계 (Artificial Immune System)에 대하여


쏟아지는 악성코드들


최근에 들어서 컴퓨터들이 세상에는 엄청난 양의 악성코드들이 출연하고 있다. 악성코드를 자동으로 제작하는 프로그램도 있고, 악성코드 자신이 지속적으로 동작하기 위한 Persistence Mechanism을 연구하여 여러 변종들을 만들어내어 탐지가 되지 않도록 하거나, 자신이 동작하고 있음을 숨기는 경우도 있다.


호스트에서 사용되는 운영체제를 비롯한 다양한 어플리케이션들은 점점 복잡해지고 있고, 이러한 프로그램들의 취약점들을 분석하여 악성코드는 진화하고 있다. 게다가 호스트에 감염시키기 위한 방법들이 꾸준히 연구되어 이제는 웹서핑을 통하여 다운로드하거나 이메일을 통하여 다운로드한 문서파일만 열어보거나, 뉴스를 보기 위해 웹서핑만 하는 경우에도 악성코드에 감염이 되곤 한다.


이런 환경에서 기존의 악성코드를 탐지하고 처리하는 방식에 한계가 있으며, 높은 정확도와 탐지율을 가진 방법들이 나오지 않는다면, 개인 PC를 비롯한 다양한 목적의 컴퓨팅 호스트들은 더이상 소유자가 원하는 방식으로만 동작하지 않을 것이다.


그러면 어떤 방법이 좋을까? 사람이 가진 면역체계는 다양한 그리고 새로운 병원균들이 나타나는 환경을 상대로 매우 잘 대응을 하고 있다. 물론 100% 완전하게 사람이 병드는 것을 막아주지는 못하지만, 셀 수 없는 병원균의 수를 감안했을 때에는 꽤나 효과적으로 대응을 하고 있는 것을 알 수 있다.



관련 연구들


논문들을 찾아보니 사람의 면역 체계로부터 영감을 받아 악성코드를 탐지하는 아키텍처에 대한 연구가 생각보다 오래 전부터, 그리고 다양하게 진행이 되었다는 것을 알게 되었다. 역시 나만 그런 생각을 하는게 아니었어...


악성코드가 호스트를 공격하는 것은 병원균이 우리 인체에 침투하는 것과 유사하다. 또한 이런 병원균을 악성으로 판단하고 파괴하는 면역체계는 Anti-Malware 솔루션과 유사하다. 초기에 안티바이러스 제품을 백신이라고 부른 것도 개념적으로 아주 적절하다고 할 수 있겠다.


인간의 면역체계는 태어나면서부터 엄마로부터 물려 받는 기본적인 체계도 존재하지만, 그 이후에 자가면역을 통하여 습득하는 체계도 존재한다고 한다. 추상화한 개념으로 보자만 외부로부터 받은 체계와 본인이 구축한 체계 2가지로 볼 수가 있겠다. 그렇다면 악성코드를 탐지하는 기본적인 체계를 Anti-Malware 솔루션이 담당을 한다고 볼 수 있겠고, 그 나머지 자가면역체계에 대한 부분이 있으면 사람의 면역체계와 같은 수준의 악성코드 대응 체계를 컴퓨터도 가질 수 있지 않을까? 




사람의 면역체계는 어떻게 동작하는 것일까?


면역은 간단히 말해서 나(자기)와 나 아닌것(비자기)을 구별하는 체계입니다. 이를  T-Cell과 B-Cell이 역할을 담당합니다.

T cell 과 B cell 은 모두 골수에서 생성되지만 T cell 의 경우 흉선(Thymus), B cell 의 경우 골수(Bone marrow)에서 성숙/분화 되므로 앞글자를 따서 이름이 붙었습니다. 


이들이 어떻게 자기와 비자기를 알아내는지에 대해서 재미있게 설명한 글이 있어 인용을 합니다.
원문 출처는 다음과 같습니다.


그런데 면역세포들은 어떻게 자기와 비자기를 가려내는 것일까?

그 비밀은 세포의 주민등록증이라 할 수 있는 '클래스ⅠMHC'(major histocompatibility complex)에 있다.

사람마다 지문이 다르듯 내 몸의 세포들은 모두 '클래스ⅠMHC' 의 신분증을 가지고 있다.

그래서 면역세포들이  클래스ⅠMHC  와 같은 세포를 만나면 우리 편임을 알고 공격하지 않는다.

하지만 바이러스에 의해 세포가 감염되면 '클래스ⅠMHC' 의 틈새에서 바이러스 조각이 삐끔 고개를 내밀고 있게 되고

이를 알아본 킬러T세포의 공격을 받게 되는 것이다.

 

우리 몸의 비자기들을 죽이는 면역특공부대의 구성원은 누구?

조직적이고도 막강한 파워를 자랑하는 면역부대의 부대원들을 소개한다.

엄청난 식성을 자랑하는 매크로파지, 면역부대 사령관 헬퍼T 세포, 용감한 킬러대원 킬러T세포, 뛰어난 저격수 B세포...

 

우선 감기를 예로 들자.

감기 바이러스(이건 세포가 아닌 비자기항원이다.)가 우리 몸에 들어오면 전신의 조직에서 대기중인

대식세포 '매크로파지' 님께서 턱. 잡아서 한 입에 아웅~ 드셔주신다.

그리고는 잘근잘근 씹은 바이러스의 조각을 혈액을 타고 순찰을 돌고 있는 헬퍼T 세포에게 준다.

"사령관님 이런 녀석이 우리 집에 들어왔는데요?"(이를 항원제시 라고 한다.)

헬퍼T 세포는 이 조각을 받아들고 면밀히 살핀다.

그리고 "어? 이 나쁜 놈. 이건 우리 식구가 아닌데?"

냉정한 판단이 끝나면 공격명령인 사이토카인(cytokine)을 풍풍.. 내 품는다.

 

이 사이토카인은 잠자던 킬러T 세포를 흔들어 깨운다.

무자비한 킬러T 세포는 이때부터 바이러스에 감염된 감염세포를 죽인다.

매크로파지 또한 사이토카인에 자극받아 사기충천.. 바이러스를 먹어치운다.

 

이렇게 바이러스에 감염된 세포들은 없애지만바이러스 자체는 끊질긴 생명력을 지니고 있어 쉽게 물리치기가 어려운데'항원'인 바이러스는 '항체'의 총알에 의해서만 그 병원성을 상실한다.

그래서 저격수인 B 세포의 활동이 필요하다.

B 세포 또한 림프절 등에서 살면서 혈액을 따라 우리 몸을 구석구석 돌아다니다가바이러스를 만나면 매크로파지와 마찬가지로 씹은 조각을 헬퍼T세포에게 바쳐

공격명령을 받는다.

이 때 항체를 발사하여 바이러스들을 해치우는 것이다.

 

하나 더, 공격명령인 사이토카인은 각 세포에 맞는 전달물질이 전달되는데킬러T 세포을 활성화시키는 사이토카인은 인터루킨2

B 세포를 활성화시키는 사이토카인은 인터루킨 4,5,6,10,13매크로파지를 활성화시키는 사이토카인은 인터페론 감마 등이다.




면역체계를 모델링하면


1. 운영체제 상에서 실행 가능한 코드의 정적/동적 특성들을 수집하고,

2. 수집한 정보를 기반으로 프로파일링 하고,

3. 분류 방법에 의하여 이를 자기/비자기 (정상/악성코드)로 분류한 후

4. 비자기(악성코드)인 경우 처리하도록 하면 되겠다.

5. 그리고 한 번 처리한 악성코드에 대해서는 다시 Signature 기반의 빠른 탐지방법에 등록


고려를 해야 할 사항들은

- 정적인, 동적인 특성들을 수집하기 위한 방법

- 어떤 속성들이 특징을 잘 나타내는지

- 빠른 처리를 위하여 기존의 Signature 기반의 1차 처리 후 추가적인 분류

등등등... 이겠다.