brunch

You can make anything
by writing

C.S.Lewis

by 삼더하기일 Jul 28. 2022

수많은 악성코드, 우리 컴퓨터는 어떻게 다 대처할까?

악성파일 자동 탐지 머신러닝

PC와 스마트폰을 이용하는 사람들 중 많은 수가 악성코드로 인한 불편함을 겪은 적이 있을 겁니다. 한 번 악성코드가 컴퓨터에 침입하면 그로 인해 속도 저하, 기능 장애 등 다양한 문제를 맞이할 수 있습니다. PC가 우리 삶에서 없어서는 안 될 존재가 된 만큼 우리는 늘 컴퓨터 내에 악성코드나 악성파일이 설치되지 않도록 주의를 기울여야 합니다. 악성코드가 컴퓨터에 설치되지 않기 위해 사람들은 많은 노력을 기울이고 있습니다. 백신 프로그램을 설치하기도 하고 출처가 불명확한 장소에서의 다운로드는 최대한 지양하며 PC를 이용하기도 합니다.


악성코드(파일)를 자동으로 탐지하는 머신러닝


하지만 아쉽게도 단순히 사람의 노력만으로 PC 내에 악성코드의 침입을 방지하는 것은 매우 어려운 일입니다. 이미 이 세상에는 너무도 다양하면서도 많은 객체의 악성코드가 존재하고 있기 때문입니다. 그래서 사람이 모든 내용을 직접 확인해가며 악성코드 여부를 판별하는 것은 사실상 한계가 명확합니다. 하지만 이런 상황에도 모든 사람들의 PC가 악성코드로 인해 큰 문제를 겪고 있지는 않습니다. 그리고 그 배경에는 바로 머신러닝의 도움이 뒷받침되어 있습니다. 사람이 일일이 조심하고 확인하기 힘든 악성코드의 침입을 빅데이터 기반의 머신러닝이 도움을 주고 있기 때문입니다.


PC를 이용하다 특정 파일을 내려받으려고 시도하면 설치된 백신 프로그램이 악성코드의 위험성을 경고하는 경우를 경험해본 적이 있을 겁니다. 이는 절대 사람이 실시간으로 백신 프로그램을 설치한 PC를 체크하고 있기에 가능한 영역이 아닙니다. 믿기 어렵겠지만 악성파일(코드)이라는 수치화하기 어려워 보이는 존재를 수치화하여 데이터로 만들 수 있는 방법이 존재합니다. 악성파일이 데이터화 할 수 있는 대상이 된다는 것은 다시 악성파일이라는 존재가 머신러닝, 딥러닝을 필두로 한 인공지능 기술을 적용의 대상이 될 수 있다는 것을 의미합니다. (https://brunch.co.kr/@8d1b089f514b4d5/10)


컴퓨터가 악성코드에 대처하는 방법


직관적으로 생각했을 때 악성파일이라는 것을 수치화하여 데이터로 만들고 이를 다시 인공지능에 활용한다는 것이 이해하기 힘든 내용임은 분명한 사실입니다. 그렇기에 실제로 내 PC가 악성코드를 자동으로 탐지하기 위해 작동하는 원리는 꽤나 복잡할 수 있습니다. 빅데이터, 인공지능 시대를 살아가기 위해 한 가지 알아두면 좋은 점은 바로 컴퓨터는 텍스트, 이미지, 음성, 영상 등의 모든 입력값들을 모두 숫자로 인식하고 이를 적절히 변환하여 우리에게 출력해준다는 점입니다. 255라는 숫자는 단순히 숫자 255를 나타낼 수도 있지만 때로는 짙은 빨간색을 의미할 수도 있습니다.


이를 감안하여, PC가 악성코드의 침입을 자동으로 탐지할 수 있도록 인공지능 기술을 적용하는 원리는 크게 4가지 단계로 나누어 볼 수 있습니다. 첫 번째로 접촉이 된 파일을 작은 단위로 쪼개 읽으며, 두 번째로 작게 쪼개 읽은 파일의 일부분을 특정한 정수(숫자) 형태로 변환한 다음, 세 번째로 할당한 정수를 다시 pixel 개념의 개념으로 바꾸어 준 다음, 마지막으로 실제 머신러닝 작업을 수행하게 됩니다. 결국 이 4가지의 작업을 자동적으로 수행할 프로그램을 개발한다면 내 PC가 자동으로 악성코드를 탐지하는 것이 결코 불가능한 영역이 아니게 됩니다.


순차적인 수치 할당


나의 컴퓨터가 자동적으로 악성코드를 탐지하고 알림을 주는 세부 방법을 요약한다면 그 초반 부분은 단언컨대 순차적으로 수치를 할당하는 것이라 표현할 수 있습니다. 먼저 모든 파일은 비트 단위로 그 객체를 쪼개어 읽을 수 있습니다. 예를 들어 특정 파일을 내려받는다고 할 때, 해당 파일을 8비트의 단위로 여러 번 나누어 해당 파일을 내려받을 수 있습니다. 만약 100 바이트 크기의 파일을 내려받고 해당 파일을 8 비트로 끊어 읽어낸다면 총 100번의 데이터를 내려받은 파일로부터 생성하는 것이 가능합니다. (1 바이트 = 8 비트)


그리고 컴퓨터의 모든 입력은 숫자로 이루어져 있는 만큼 8비트만큼 받은 각각의 일부 파일들은 모두 숫자 형식으로 표현할 수 있습니다. 비록 우리가 그 숫자를 읽고 이것이 정확히 무엇을 의미하는지 이해하는 것은 불가능하지만 100번에 나누어 내려받은 그 파일들은 분명히 특정한 숫자 조합을 가지고 있습니다. 그리고 해당 숫자를 다시 우리가 표현하고 싶은 수치의 형태로 단순히 변환만 시켜주면 됩니다. 이 단계에서는 대부분 이진 분류된 숫자 형태를 우리에게 익숙한 정수 형태로 바꾸는 것을 사용합니다. (예를 들어 2진법으로 1011로 표현되는 숫자는 실제 숫자 11을 의미합니다.) 이 단계를 거치고 나면 우리는 총 100가지의 숫자를 데이터로 만들 수 있습니다.


파일의 이미지화 및 머신러닝


이렇게 내려받은 파일을 수치 형태로 변환시킨다면 다음 단계는 그 데이터를 이미지화하는 것입니다. 일반적으로 흑백의 이미지라면 1차원, 컬러 이미지라면 3차원으로 수치화할 수 있다고 이야기를 합니다. 흑백이라면 검정의 정도를 나타내는 숫자 1개, 컬러라면 RGB(빨강, 초록, 파랑)의 각각의 정도를 나타내는 숫자 3개를 조합하여 존재하는 모든 색상을 표현할 수 있기 때문입니다. 이때 자연스럽게 데이터로 수치화한 악성코드 파일을 이미지 형식으로 변환하는 것이 가능해집니다. 100개의 부분으로 파일을 나누었다면 100 pixel을 가진 악성코드의 이미지가 새롭게 생성됩니다.


이렇게 이미지 생성이 완료되면 남은 절차는 간단합니다. 바로 실제 머신러닝 및 딥러닝 기술을 적용하면 됩니다. 이미지 파일을 '악성 파일'과 '악성 파일이 아닌 것'으로 분류를 하는 업무를 인공지능에게 수행시켜야 하고 우리는 이것을 분류 모델이라고 부르곤 합니다. 물론 Malware Detection이라는 용어를 쓰며 인공지능 기술 중 이상 탐지 알고리즘의 일부를 사용해 이를 바라보는 시선도 존재합니다. 다만 분명한 것은, 어떤 알고리즘을 쓰든 현재 수준에서 내려받은 파일이 악성코드인지 아닌지 예측을 수행하는 것은 절대 불가능한 영역이 아니라는 것입니다.



생각보다 인공지능 기술은 꽤 우리 삶은 윤택하게 만들어주고 있습니다.


앞서 언급하였듯 PC를 안전하게 사용하는 것은 현대 사회를 살아감에 있어서 반드시 필요한 영역이라고 할 수 있습니다. 그리고 모든 파일을 일일이 사람이 검사하기 힘든 상황 속에서 빅데이터와 인공지능 기술은 PC를 안전하게 사용할 수 있도록 큰 도움을 우리도 모르게 주고 있었습니다. 실제로 악성코드를 검출하기 위한 인공지능 기술은 CNN이라는 딥러닝 알고리즘이 그 기초를 이루고 있습니다. 이는 상대적으로 더 익숙한 기술인 얼굴 인식, 자율주행 자동차, CCTV 감시 자동화 등에 사용되는 기술의 뿌리를 이루기도 한 알고리즘입니다. 그리고 많은 사람들은 이 기술 때문에 인간의 가치가 떨어지지는 않을까 걱정을 하곤 합니다.


해당 기술이 완벽하게 발전한다면 더 이상 운전을 하는 사람이 필요하지 않게 되며, CCTV를 감시하는 사람이 전혀 필요하지 않게 될 수도 있습니다. 그렇기에 인공지능 기술을 바라볼 때 어느 정도 부정적인 인식을 가지게 되는 것은 어쩔 수 없는 부분일 수도 있습니다. 하지만 빅데이터 기술과 인공지능 기술은 우리에게 늘 도구의 역할을 제공해주고 있습니다. 우리는 이 기술을 통해 운전과 CCTV 감시의 부담을 덜어줄 뿐 아니라 PC를 악성 코드로부터 보호받기도 하고 있습니다. 운전을 할 시간에 더 고부가가치를 생산할 수 있는 일을, 나의 PC를 자동적으로 보호하도록 만드는 이 인공지능 기술의 발전을 어떤 시선으로 바라보아야 하는지는 반드시 생각을 곱씹어보아야 할 영역입니다.


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari