ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인공지능 보안을 배우다_머신러닝을 활용한 분석 자동화
    > Culture&refinement/서평 2019. 12. 15. 14:25

    이 책에서 머신러닝을 활용한 분야는 악성코드 탐지, 백신에 엔진 추가, 네트워크 이상 탐지인데, 환경과 구축에 대한 모든 과정을 담고 있다.
    프로젝트를 통해서 따라할 수 있는 방법을 자세하게 설명하고 있는데, 나는 이 책을 읽는 목적이 구현이 아닌 개념의 이해였기 때문에 새로 알게 된 내용만 아래에 정리했다.

    1. 환경 구축 단계

    - 개발 환경(Application) : 주피터(Jupyter)
    - 개발 언어 : Python
    - 배포/패키징 환경 : 아나콘다 엔터프라이즈 (파이썬과 R프로그래밍의 배포판)

      * Jupyter : 코드, 공식, 시각화 기능을 포함한 문서를 지원하는 웹 애플리케이션으로 Python, R, Scala 등 40개가 넘는 프로그래밍 언어를 지원하는 코드 작업환경이다. 웹 상에서 코드 작성 뿐 아니라, 그래프도 바로 그릴 수 있다.

     * Anaconda Enterprise : Data Scientist Package 1500여종 다운로드 가능

    * Python에서 데이터 분석에 도움을 주는 패키지
     - 데이터 조작 
         - numpy : 고성능의 계산 컴퓨팅, 데이터 분석에 필요한 기본 패키지
         - scipy : 과학기술 계산용 함수, 알고리즘을 제공
         - matplotlib : 도면을 그리는 기능 제공
         - pandas : 고수준의 자료구조와 빠른 데이터 분석을 지원하는 도구
     - 모델링 
        - scikit-learn : 핵심 머신러닝 알고리즘 제공 (분류, 회귀, 클러스터링, 차원축소, 모델선택, 전처리)
        - tensorflow : 딥러닝 모델을 구현하도록 도와줌

    2. 현재의 악성코드 탐지 기술

    - 정적 분석 : 악성코드를 실행하지 않고, 코드의 기본 정보를 이용하여 파일 기본정보와 어셈블리 언어 수준에서 분석
    - 동적 분석 : 악성코드를 실행하면서 악성코드의 행위, 실제 실행되는 코드를 위주로 분석
    - 자동화 분석 : 샌드박스 기반으로 악성코드를 실행시켜서 정보를 얻어내는 기법
       - 행위 정보(스크린샷, 드롭된 파일, 네트워크 통신, 관련 프로세스, 호출한 API)
       - 정적 정보(프로그램 Hash, PE 헤더 정보, 의심되는 문자열, 메타 정보)

    백신은 이미 알려진 패턴을 잡아내기 쉽지만, 한번도 알려지지 않은 악성코드는 탐지해내기 쉽지 않아 인공지능 기술을 활용한 부분을 기대하고 있음

     

    3. 보안에서 활용할 수 있는 머신러닝 알고리즘

     -> 각 알고리즘과 모델이 어떤 원리인지 알아가는 것은 차차 앞으로 필요하다. 배경지식 업그레이드 차원에서 현재는 대략적인 정의만 메모해두려 한다.

    1. 분류 알고리즘
        1.1 분류
        1.2 나이브 베이즈
        1.3 의사결정 트리와 랜덤 포레스트
        1.4 서포트 벡터 머신(SVM)

    2. 군집화 알고리즘
        2.1 군집화 알고리즘
        2.2 K-means 클러스터링
        2.3 DB Scan

    3. 딥 러닝 모델

    구분 특징 활용분야 보안에서 활용할 수 있는 분야
    (저자의 아이디어)
    CNN(Convolutional Neural Network) 픽셀을 이용하여 이미지에서 자동으로 특징을 추출 자율주행, 이미지와 영상처리 악성코드 바이너리나 패킷데이터를 이미지화해서 탐지
    RNN(Recurrent Neural Network)

    시계열 데이터 분석
    네트워크 안에서 노드들이 다양한 방향으로 연결

    음성인식, 작곡, 문법학습, 행동검출, 챗봇 프로그램이 동적으로 실행되면서 나타나는 현상(호출된 API, 실행된 명령어, 프로그램 실행 흐름 등)을 이용하여 악성코드 여부 판단
    GAN(Generative Adversarial Network) 데이터 특성을 이용해 새로운 데이터를 생성 이미지(영상) 합성, 신약개발, 화소복원, 3D 모델링 탐지모델을 우회하는 새로운 모델 생성
     오토인코더 핵심 특징을 찾아주는 모델 노이즈 제거, 썸네일 이미지 생성 정상 트래픽을 학습시킨 후 비정상 데이터를 모델에 넣으면 이상 탐지

     

    4. 이상 탐지

    금융권 FDS가 대표적인 예다.
    1) 정상과 이상을 결정하는 기준이 있어야 하고 2) 정상과 이상에 대한 기준은 시간이 지나면서 변화할 수 있으며 3)악의적인 사용자가 이상 데이터를 변조할 수도 있다. 평소와 다른 패턴이 보인다고 말할 수 있지만, 이 패턴은 이상하다고 결론을 내릴 수 없다.

    지도 학습 : 학습 전에 전체 데이터를 정상과 이상으로 명확히 구분이 가능한 경우
    반지도 학습 : 정상 데이터만 명확히 구분이 가능한 경우
    비지도 학습 : 정상 데이터와 이상 데이터 모두 명확히 분류가 어려운 경우
    -> 이상 데이터일 가능성을 예측하는 방식으로, 여러번의 모델링을 거치며 결과를 해석하고 반영하여 새롭게 유입되는 데이터를 지속적으로 학습하여 모델에 반영하는 것

    이상 탐지 기술 원리 한계
    통계 기반 통계(평균과 분산)을 벗어나는 이상치를 찾는 방식 데이터가 정규분포를 띄어야 하며, 고차원 데이터의 이상치를 찾기 어려움
    근접도(Proximity) 기반 주어진 데이터가 충분히 밀집되어 있는 많은 데이터로부터 어느정도 떨어져있는지를 판단 데이터 밀집도가 충분히 높지 않은 경우 적용하기 어렵고, 모델복잡도가 높고 초기값을 필요로 함
    클러스터링 기반
    트리 기반
    주성분 분석 기반 데이터 분산을 최대화 하는 주성분을 찾는 분석기술

    데이터에 이상치가 포함되어 있을 때, 주성분을 찾아내지 못함. 정상데이터에 대한 레이블링(반지도/지도)이 확실하게 정리된 상태에서 수행해야 함

     

    파이썬에서 제공하는 이상탐지 알고리즘
        - LOF(Local Outlier Factor) : 주어진 데이터와 이웃한 데이터들이 근처의 밀집 데이터 영역으로부터 얼마나 떨어져있는지를 토대로 이상데이터를 탐지하는 비지도기반 학습방법
        - Isolation Forest : 의사결정 트리기반 이상탐지 기법, 랜덤하게 차원을 선택하여 임의의 기준으로 공간을 분할하는 방식

     

    5. 네트워크 이상탐지를 위한 저자의 경험

    1) 데이터 수집
        - 네트워크 구성, SIEM 구축, 샘플 데이터 수집

    2) 모델링
        - 데이터 분석
        - 특징 공학 : 네트워크 이상징후 탐지에 도움을 줄 수 있는 특징을 추출. 
             + IDS 로그에서 탐지된 결과를 반영하여 위험도에 따른 가중치 부여
             how? 파이썬으로 ElasticSearch DB에 담긴 내용을 가져온 후, 추출한 특징정보를 다시 새로운 DB index로 저장하는 방식
        - 모델링 : 비지도 학습기반 모델에서 '이상'이라고 판단한 데이터는 별도의 인터페이스를 통해 분석가가 의사결정을 할 수 있도록 구성
             + 백그라운드에서 탐지모델은 계속 동작하면서, Kibana를 통해 이상징후 여부를 판단할 수 있도록 함

     

    ELK Stack(Elastic Stack)

    데이터 수집, 저장, 시각화 기능을 모두 갖춘 오픈소스 도구
    Elastic Search : DB 역할
    Logstash : 데이터 수집 및 로그 파싱
    Kibana : 데이터 분석 및 시각화 플랫폼

     

    + 이 책이 얼마나 자세하게 표현하고 있는가

    SIEM 구축을 위한 환경 구축 - 네트워크 어댑터 추가 방법, 우분투 네트워크 설정, 네트워크 연결 테스트
    보안솔루션 설치 - Snort 다운로드 및 설치, 네트워크 분석 프레임워크 브로 다운로드 및 설치 방법, 웹서버 APM 설치, ELK 스택 구축, 자바환경 설치, Elastic Search/ Kibana/ Logstash / Beats 설치방법, 
    관계형 데이터베이스와 엘라스틱 서치에 대한 정의, 키바나 활용방법
    Jupyter 환경설정, 파이썬 핵심패키지 설명 등....


    이 책을 사내 도서관에서 예약 대기를 건 끝에 한 달이 지난 시점에 대여했는데, 평가기간에 연말이라 제대로 이 책을 정독할 시간이 부족했던 것이 아쉽다. 조금 더 시간이 많았다면 실제 개발환경이 익숙치 않은 보안인들이 새로운 개발환경과 도구들을 이해할 수 있도록 상세히 기재한 내용을 보면서 조금 더 나의 시야가 넓어질 수 있었을텐데.

    내가 이와 관련된 업무를 오래 전에 내려놓았고, 해당 업무의 트렌드를 이해하기 위해서 선택했기 때문에 구매해서 소장용으로 두기에는 나에겐 적합하지 않다.
    하지만 보안 업체에서 악성코드 분석이나 네트워크 이상탐지 등의 업무를 하는 사람들에겐 조금 더 똑똑하게 업무를 하기 위해 필수적으로 필요한 책이라는 생각이 든다. 


    참고 및 인용 

    인공지능 보안을 배우다

    728x90
    반응형
Designed by Tistory.