악성코드 이해
악성코드 분석은 악성 소프트웨어의 기능, 목적, 기원과 잠재적 영향을 연구합니다.
이러한 작업은 전통적으로 매우 수동적이고 어려우며, 소프트웨어 내부와 리버스 엔지니어링에 대한 전문적 지식을 갖춘 분석가가 필요합니다.
데이터 과학과 머신 러닝은 악성코드 분석에 있어 어느 부분 자동화가 가능하다는 점을 보여주고 있지만, 이러한 방법은 데이터에서 의미 있는 속성을 추출하는 데 여전히 많이 의존합니다.
즉, 데이터에서 의미 있는 속성을, 유용한 정보를 의미있게 추출하는 것이 매우 중요하다고 볼 수 있습니다.
원시 데이터는 머신 러닝 알고리즘을 적용하기 전에 데이터 수집, 정제 및 검증을 위한 계획이 필요합니다. 학습 알고리즘에 적용할 최적의 데이터 형식 및 표현을 선택하는 데 이 원시 데이터를 전처리하는 것은 중요합니다.
속성 공학으로 데이터를 알고리즘 입력에 적합한 형식으로 변환합니다.
속성 추출(Feature Extraction)은 원시 데이터에서 속성을 추출하는 과정을 설명하기 위해 사용하는 용어입니다.
원시 데이터 : 속성을 추출하고자 하는 대상이 되는 데이터
속성 : 원시 데이터가 가지는 특징들
예시)
머신러닝 알고리즘을 이용하여 책(원시 데이터)의 장르(추리, 스릴러, 로맨스, 과학, 판타지 등)를 분류하기 위해 책 제목, 작가명 등을 이용할 수 있지만 해당 책에 사용된 단어, 형태소 등(속성)을 이용할 수도 있습니다.
악성코드 분류
악성코드 분류는 공통 속성을 기반을 서로 다른 악성코드 샘플을 함께 그룹화 합니다.
일반적인 목적의 악성코드 분석인 경우 계열(family)별로 샘플을 그룹화 합니다.
계열이란 악성코드 분석가가 사용하는 용어로 작성자 추적, 정보 상관, 새로 발견된 악성코드 변종을 식별하기 위한 용어 입니다.
같은 계열의 악성코드 샘플은 비슷한 코드, 기능, 작성자, 기능, 목적, and/or를 가집니다.
시그니처 매칭
이전에 발견된 악성코드의 속성 및 동작을 고려할 때 새로 들어온 바이너리를 이 데이터셋과 비교해 이전에 본 무언가와 일치하는지 여부를 확인합니다.
*변성 혹은 *다형성 바이러스 및 웜은 정적 및 동적 난독화 기법을 사용해 코드, 동작 속성의 특성을 변경합니다.
*다형성
일반적으로 감염을 수행하는 핵심 논리와 감염 코드를 숨기기 위해 다양한 형태의 암호화 및 암호 해독을 사용하는 다른 포괄 섹션을 포함
*변성
기존 악성코드에 코드를 삽입, 재배치, 다시 구현, 추가 및 제거한다.
각 악성코드 진화 단계에서 감염 논리가 변경되지 않기 때문에 변성 악성코드보다 다형성 악성코드를 탐지하기가 상대적으로 쉽습니다.
머신러닝을 이용한 악성코드 분류
퍼지 매칭: 두 엔티티가 동일하거나 동일 클래스에 속할 확률에 대한 신뢰도 점수를 나타낸다.
엔티티 간의 대략적인 유사도를 표현하여 악성코드를 분류하는데 정적인 시그니처 매칭 방법보다 매우 유용하다.
속성 선택 자동화: 악성코드 분류에서 머신 러닝의 핵심은 자동화된 속성 선택과 가중치이다.
일부 차원 축소 및 속성 선택 알고리즘은 전문 악성코드 분석가조차도 찾기 힘든 악성코드 샘플들의 잠재적인 속성도 발견할 수 있다.
머신 러닝은 악성 코드 분석가가 각 속성의 가치를 결정하는 점에 있어서 부담을 덜어준다. 데이터가 분류 체계에서 사용할 속성을 자동으로 찾고 감지함으로써 분석가들은 대신에 속성 공학에 집중할 수 있다.
적응성: 퍼지 매칭과 데이터 기반 속성 선택 프로세스와 함께 머신 러닝으로 구현된 악성코드 분류 시스템은 입력이 바뀌고 시간에 따라 변화하는 악성코드의 진화에 적응해 탐지할 수 있다.
머신러닝 과제
ex) 악성코드 분류, 행동 분류, 악성 탐지 등
현대 코드 실행 프로세스
일반적으로 코드 실행에는 컴파일 된 실행과 해석된 실행 두가지 유형이 있다.
컴파일 된 실행에서 작성된 코드는 일련의 변환 단계(소프트웨어 빌드 프로세스)를 거쳐서 원시 기계 명령어로 변환된다.
이 기계 명령어는 바이너리로 패키징돼 하드웨어에서 직접 실행될 수 있다.
작성된 코드(때로는 스크립트라고 함)는 중간 형식으로 변환된 후 프로그램 실행을 위해 인터프리터에 입력된다.
인터프리터는 실행 중인 하드웨어에 해석된 프로그램의 명령어를 실행하는 데 책임이 있다. 중간 형식으로 변환된 코드는 구현에 따라 다르지만 일반적으로 가상 시스템에서 실행되는 바이트코드(이진 시스템 명령어) 형식이다.
악성코드 특징 정보
메타데이터(파일의 일반적인 속성)
다이나믹 인포(Dynamic Info)
스태틱 인포(파일의 악성행위 정보)
네트워크
ATT&CK 매트릭스(악성 코드 공격의 전략·기술)
ETC(그 외 부가적인 주요 데이터)
참고
"머신 러닝을 활용한 컴퓨터 보안, 클라렌스 치오, 데이비드 프리먼, 에이콘"
"Machine Learning and Security by Clarence Chio and David Freeman(O'Reilly). Copyright 2018 Clarence Chio and Davide Freeman, 978-1491-97990-7"
"KISA, '인공지능 기반 악성코드 분석 노하우' 민간 공개" 2021.06.08
https://www.itworld.co.kr/news/196649
'Security > AI' 카테고리의 다른 글
머신러닝을 활용한 악성코드 분석 - 파이썬 스크립트 실행 프로세스 (0) | 2021.11.28 |
---|---|
머신러닝을 활용한 악성코드 분석 - 빌드 프로세스 (0) | 2021.11.19 |
Naive Bayes(나이브 베이즈) (0) | 2021.10.31 |
MinHash와 LSH(Locality Sensitive Hashing) (0) | 2021.10.29 |
머신러닝을 이용한 스팸메일 필터링(Spam mail filtering with Machine Learning) (0) | 2021.09.15 |