[인공지능 보안을 배우다] 나홀로 프로젝트 도전_1202

daniayo·2024년 12월 2일

일요일은.. 좀 쉬어야한다. 인간적으로.
오늘의 목표 : 4장은 확실하게 끝내고!! 5장은 중간에 끊기 살짝 애매하긴 한데.. 일단 되는대로.. 해봐야지!

4장. 악성코드 탐지와 분석

2. 악성코드 분석

모든 악성코드 분석은 프로그램 내부를 살펴보는 수준만 다를 뿐 결국 프로그램의 뚜껑을 열어보는 과정이 필요하다.

악성코드 분석 목적

악성코드 분석 기법

  • 자동화 분석 : 샌드박스 기반 악성코드 자동화 플랫폼을 이용해 자동으로 악성코드 분석
  • 정적 분석 : 악성코드를 실행하지 않고 정적인 속성, 코드 정보를 이용해 분석
  • 동적 분석 : 악성코드를 실행하면서 악성코드의 행위, 실제 실행되는 코드를 위주로 분석

일반적인 프로그램의 구조

헤더 : 운영체제와의 약속을 정의한 부분
데이터 : 실제 프로그램의 기능과 관련된 데이터가 저장되는 부분

2-1. 자동화 분석

초기 구축에 시간과 비용이 소요되지만, 구축 후에는 빠르고 효율적으로 악성코드 정보를 확인할 수 있다는 장점이 있다.
자동화 분석 플랫폼이 제공하는 기능에는

  • 정적 정보 : 프로그램 해시, PE 헤더 정보, 의심되는 문자열, 메타 정보
  • 행위 정보 : 스크린샷, 드롭된 파일, 네트워크 통신, 관련 프로세스, 호출한 API

이 있다. 분석 대상 프로그램을 자동화 분석 도구에 전달하면, 파일에 대한 정적 정보를 추출한 뒤 사전에 지정된 가상머신(윈도우, 리눅스 등) 상에서 악성코드를 실행하면서 행위 정보를 수집하는 방식으로 동작한다.
단점 : 악성코드에 대한 단서만 제공, 악성코드 모든 기능 밝히지 못함, 악성코드 기능을 5분동안 지연해도 자동화 분석 도구를 우회할 수 있음, 가상환경 탐지 기능을 가지고 있는 악성코드의 경우 가상환경 내에서는 아무런 기능도 실행하지 않음.

2-2. 정적 분석

악성코드를 실핸하지 않고 분석하는 기법
파일 기본 정보를 확인하는 방법 (기본 분석) & 어셈블리 언어 수준에서 분석하는 방법 (코드 분석)
PE(Portable Executable) : 윈도우 실행 파일의 형식

악성코드 기본 분석을 통해 파악 가능한 대표적인 정보:
악성코드 제작에 사용한 컴파일러 종류와 버전, 파일 생성/수정/접근 날짜, 악성코드 동작에 필요한 기능(import 정보), 악성코드 파일 전체에서 출력 가능한 문자열 등.
(대부분 정보는 PE 헤더 내에 담겨있다.)
정적 코드 분석은 프로그램 제어 흐름, 데이터 흐름 분석에 용이하다.
단점 : 실제 악성코드 실행 시에만 의미를 가지는 정보는 확인할 수 없음 (컴퓨터 활성 정보를 활용해 시스템 정보를 확인하는 경우), 분석한 코드가 실제로 실행된다는 보장을 할 수 없음, 안티 리버싱 기법이 적용되어 있거나 문자열이 암호화된 경우 분석이 어려워짐

2.3 동적 분석

악성코드를 실행하면서 분석하는 기법
모니터링 도구를 사용해 악성코드의 행위를 분석하는 방법 (행위 분석) & 어셈블리 언어 수준에서 분석하는 방법 (코드 분석)
행위 분석 : 악성코드가 운영체제에서 제공하는 API를 호출한 기록을 추적하는 것
단점 : 행위 분석은 악성코드와 운영체제와의 대화에 초점을 맞춘 분석으로, 악성코드 자체의 알고리즘을 정확하게 보여주지는 않는다.

3. 악성코드 탐지

백신, 안티 바이러스, 안티 악성코드 : 악성코드를 탐지하고 치료하는 시스템
백신의 핵심 기능 : 탐지 기술 & 치료 기술
탐지 기술 : 백신이 보호 중인 시스템 내에 악성코드가 존재 또는 유입되는 것을 찾아내는 기술. 백신마다 차이는 있지만, 수동검사 & 실시간 검사 기능을 제공한다.
백신 프로그램은 모든 악성코드를 사전에 예방해 감염 자체를 차단해주는 선제적 대응 수단이 아닌, 공격이 발생한 직후 해당 공격에 사용한 악성코드 분석 결과를 토대로 시스템을 보호하는 사후 대응 수단이다.

백신의 구조

백신 커널(AV 커널) : 플러그인 초기화/구동, 로우 레벨 함수 정의 등 백신의 주요 기능을 관리하고 실행하는 역할을 담당.
플러그인 엔진(바이러스 탐지 플러그인 인터페이스) : 다양한 악성코드 유형에 맞게 파일을 처리한 후 엔진 데이터베이스 내의 악성코드 정보와 비교 후 치료하는 기능 실행
가상 파일 시스템 인터페이스 : 압출 파일 또는 실행 중인 프로세스의 메모리 이미지 내의 객체를 처리하기 위한 I/O 함수를 다루는 영역. 가상 파일 시스템을 하나 만들어 둔 뒤 압축 파일이 들어오면 압축 해제 및 데이터 탐색을 해당 시스템에 위임하는 방식으로 동작
해시 : 파일 내용 중 한 바이트만 변경되어도 완전히 다른 값이 생성되는 특징을 가지고 있으며, 악성코드 탐지와 데이터베이스 관리에 가장 많이 사용되는 방식

해시 기반 탐지와 마찬가지로, 악성코드의 행위를 패턴으로 정의한 후 이와 유사한 행위를 하는 프로그램을 악성코드로 탐지해낼 수 있다.
BUT!! 유사한 기능을 하는 정상 프로그램을 악성코드로 오진할 확률이 높다.
한계 극복을 위하여, 특정 백신 제품에서는 기존 패턴 기반 기능에 더해 클라우드 시스템을 활용한 고도의 행위 기반 분석을 수행하는 경우도 있다.

기존의 방식을 고수하기에는 방어자들이 수적으로 절대적으로 불리한 위치에 있다.
인공지능 기술은 많은 데이터에서 악성코드가 가지는 고유의 패턴을 찾아내 일반화할 수 있는 강력한 힘이 있다. 기하급수적으로 증가하는 악성코드 변종은 오히려 인공지능 기술에 힘을 실어줄 뿐이다.

5장. 분류와 군집화

머신러닝 알고리즘의 목표 : 자신에게 주어진 데이터의 패턴을 찾아내어 두 영역을 구분하는 최적의 선을 찾아낸다.

5-1. 분류(Classification) 알고리즘

분류 알고리즘 : 지도 학습의 일종으로, 데이터와 카테고리와의 관계를 학습해 새롭게 관측된 데이터의 카테고리를 판별하는 방식
이진 분류(Binary Classification) : 2개의 카테고리 중 하나를 선택
다중 분류(Multi-class Classification) : 카테고리가 3개 이상일 경우

5-2. 나이브 베이즈 (Naive Bayes)

나이브 베이즈 : 대표적인 확률론적 분류 모델의 일종으로, 특징들 사이의 독립성을 가정으로 하는 베이즈 정리를 토대로 데이터를 분류하는 알고리즘
나이브 베이즈 분류 : 각 특징에 대한 확률을 구한 후, 이 값들을 베이즈 정리로 계산해 최종 결과
특징의 확률을 구하는 방법 : 가우시안(Gaussian), 다항분포, 베르누의 방식

장점

  • 학습 데이터의 양이 적은 상황에서 좋은 성능을 보여준다.
  • 적절한 전처리만 거친다면, 진보된 알고리즘에도 뒤치지 않는 성능을 보여준다.
  • 많은 특징을 사용할 때 발생하는 '차원의 저주' 문제에 영향을 받지 않는다.

단점

  • 모든 특징이 독립적이라는 전제를 가지고 있다.
    • 데이터에서 특징을 추출하다보면 종속 관계를 가지는 특징 조합이 생기거나, 상관성이 매우 높은 특징 조합이 생길 수도 있다. 하지만 이를 나이브 베이즈 알고리즘에 넣어 학습할 경우 좋지 않은 결과를 보여준다.

5-3. 의사 결정 트리와 랜덤 포레스트

의사 결정 트리 : 의사결정 규칙을 트리 구조로 나타내 전체 자료를 몇 개의 소집단으로 분류하거나 예측할 수 있는 분석 방법
ex) MBTI 성격 유형 검사
전체 데이터를 이용해 하나의 모델을 만든다.

장점

  • 해석 가능성 - 매우 직관적이고, 해석에 용이하다

단점

  • 복잡한 문제를 다루는 데는 좋은 성능을 발휘하지 못한다.
    • 해석 가능성과 성능은 반비례한다.
  • 모든 것을 연속된 질문으로 해결하는 관계로, 특징 데이터가 조금만 달라져도 완전히 다른 트리가 만들어질 수 있다.

랜덤 포레스트(Random Forest) : 앙상블 기반 알고리즘 중 하나로, 여러 개의 의사 결정 트리를 만든 후 각 트리의 결과를 다수결로 결정하는 배깅 방식으로 의사 결정 트리의 성능을 개선한 모델

전체 데이터에서 무작위로 여러 개의 하위 데이터를 추출한 후 이를 이용해 여러 개의 모델을 만든다.
학습에 사용한 데이터의 특성에 따라 다양한 모양을 가지게 된다.
앙상블 기법의 장점을 최대한 발휘하는 모델을 만들기 위해선, 각 파라미터가 의미하는 바를 정확하게 이해하고, 학습에 사용할 데이터와 학습 목적에 맞는 최적의 파라미터 값 조합을 찾아야한다.
특징 중요도(feature importance) : 분류에 가장 많이 도움이 되었던 특징을 백분율로 계산해준다. 이를 통해 어떤 특징이 분류에 도움이 되는 정보를 가장 많이 가지고 있는 지 파악할 수 있다.

장점

  • 학습 데이터에서는 큰 비중이 없는 특징이라고 하더라도, 새롭게 유입되는 데이터에서는 중요한 역할을 할 수도 있다 > 이 부분을 잘 포착한다.
  • 옵션 값 조합만 잘 찾아도 꽤 높은 정확도를 보여주는 모델을 만들 수 있다.

단점

  • 학습에 사용하는 데이터의 특성에 따라 항상 최적의 해를 보장해 주지 않는다.
  • 데이터의 양이 늘어나도 그만큼 성능이 향상된다는 보장을 해주지 못한다.

5-4. 서포트 벡터 머신 (SVM)

SVM의 목표 : 분류하려는 두 영역을 하나의 선으로 나누었을 떄, 그 선이 양쪽에 위치한 점들(서포트 벡터)과의 거리가 최대가 되도록 만드는 것이 목표
커널 트릭 : 새로운 특징을 도출해 데이터를 고차원 공간으로 사영해 구분 짓는 방법
랜덤 포레스트와 마찬가지로, SVM 알고리즘에서도 최적의 파라미터 값을 필요로 한다.

장점

  • 고차원 문제 해결에 용이하다.
  • 노이즈 데이터에 크게 영향을 받지 않는다.
  • 과적합 문제를 어느 정도 해결할 수 있다.

단점

  • 최적의 파라미터 값을 찾지 못하면, 다른 분류 알고리즘보다 현저히 낮은 결과를 마주한다.
    • 시간과 계산 비용이 크다.

오늘의 공부 끝!

profile
댜니에요

0개의 댓글