Security + Machine Learning: 머신 러닝을 보안에 적용하기

얼마전 머신 러닝을 어떻게 시큐리티에 적용할 수 있는지에 대한 아주 아주 좋은 를 공유한 적이 있다. 마이크로소프트의 Threat Intelligence를 주관하는 이 팀 (Microsoft Threat Intelligence Center )은 우리팀과 긴밀하게 우리 제품 디텍션 커버리지를 높이기 위해서 협력하고 있던 팀으로 주로 마이크로소프트 인프라스트럭쳐나 서비스에 대한 공격 시도들을 디텍션하고 막는 역할을 하고 있다.


How Azure Security Center automates the detection of cyber attack

여기서 핵심은 특히나 SQL 서버는 noise가 적어서 ML 적용에 어드벤티지가 있는 것. 다른 영역에 같은 논리를 적용하려고 하면 또 잘 안되는 문제가 있음. 이 부분의 경우에는 먼저 파일 이름들 특히 SQL 관련된 프로세스들의 전체 패쓰를 normalizing하고 거기에서 실행되는 프로세스들도 비슷한 과정을 거침. 그 이후, 프로세스 네임의 빈도들을 사용하여 하나의 디텍션 지표로 사용한다.

이러한 디텍션은 사실 머신 러닝의 힘보다는 빅데이타의 힘이라고 볼 수 있다. 수많은 엔드포인트로부터 수집된 이러한 데이타를 바탕으로 normalizing + 휴리스틱스를 수행하여 anomaly를 디텍션하게 되는 것이다. 이러한 개념의 보안은 클라우드에 기초하지 않은 모델에서는 실현 불가능한 개념들이다.

또다른 머신 러닝과 anomaly detection의 승리를 보여준 예가 바로 Dofoil 이다. 일명 스모크 로더라고도 하며 일종의 다른 위협들을 페이로드로 드랍시켜주는 일종의 인펙터에 가깝다. 마이크로소프트에서는 2018년 3월 경 클라우드를 통해서 굉장히 강력한 이상 신호를 감지하게 되고, 이를 토대로 새로운 위협을 발견하게 된다. 전체 과정은 이 블로그에 자세하게 기록되어 있다.

Dofoil블로그로부터의 머신 러닝에 대한 설명

이 설명을 잘 읽어 보면 곳곳에서 머신 러닝과 빅데이타, 클라우드의 개념이 이 위협의 디텍션을 가능하게 한다는 것을 알 수 있을 것이다.

  1. 먼저 클라우드로 들어 오는 시그널 들이다. 여러가지 빈도 (prevalence) 데이타와 어떠한 위협이 확산되는 속도에 대한 엔드포인트로부터의 시그널들을 종합하여 비정상적인 상황을 머신 러닝을 통해서 디텍션 한다.
  2. 두번째, 엔드포인트로부터 사용자의 동의를 얻어 자동으로 샘플을 수집하여 샌드백스 환경에서 구동해 보고, 더 정확한 행위 데이타를 얻어 내고, 이를 기반으로 악성/양성을 더 정확하게 구별해 낸다.

한마디로 클라우드가 없었다면 이러한 보안 위협은 발견에 시간이 걸리게 된다. 전통적인 보안 모델은 이렇게 작동했다.

  1. 사용자가 컴퓨터에서 이상을 느낀다. 팝업이 마구 잡이로 뜨거나, 컴퓨터가 느려지고 리셋된다.
  2. IT 부서에서 검사에 들어 가고, 이상한 파일들을 몇개 수집한다.
  3. 자신들이 사용하고 있는 보안 벤더들에 연락하고 샘플을 서브밋한다.
  4. 보안벤더들은 나름대로의 priority에 따라서 위협들을 분석한다. 때로는 샘플이 정확하지 않거나 사용자의 요청을 이해하지 못하여 티켓은 여러 차례 재 assign 된다.
  5. 결국 몇일이 지나서야 비슷한 서브미션들이 많다는 것을 깨닫게 되고, 부랴 부랴 시그너쳐를 업데이트 하여 릴리즈를 한다.
  6. 고객사에게 시그너쳐가 전달 되는 데에는 하루 3번의 릴리즈 스케쥴에 따라야 하므로 최대 약 8시간의 딜레이가 생기게 된다.

한마디로 클라우드에서의 위협에 대한 가시성은 보안에 있어서의 혁명이라고 볼 수 있다. EDR (Endpoint Detection and Response)이라는 개념도 사실 이러한 클라우드에서의 가시성에 기반하는 경우가 많다. EDR 벤더들도 자신들이 관장하는 클라이언트들이 많으면 많을 수록 더많은 비교 데이타를 축적할 수 있고, 그들의 머신 러닝 모델은 더 강력해 질 수 있다.

많은 경우에 보안에 머신 러닝 모델을 적용하려고 시도할 때에 이러한 행동 데이타나 가시성의 문제를 간과하고 파일 자체나 어떠한 위협의 형상 데이타 (PE 포맷이나 PE 내부의 인스트럭션들)에 집중하는 경향성이 있다. 이는 성공하기 힘든 접근 방법이다. 성공한 케이스가 있다고 해도 놀라지는 않겠지만, 형상 데이타는 사실 위협을 만드는 주체가 언제나 컨트롤할 수 있는 영역이고, 행동 데이타와 전파 패턴 등은 위협의 주체가 컨트롤하거나 가짜로 생성하기에 굉장히 어려운 부분이다. 머신 러닝의 대상은 이러한 데이타에 집중해야 한다.

이러한 취지에서 다른그림의 머신 러닝 + 보안에 대한 트레이닝을 준비하고 있다. 이런류의 실제 사례들로 mock-up 환경에서 실제로 말웨어를 detonation해서, 실제 데이타를 발생 시키고, 그 데이타를 이용해서 ML을 적용하는 트레이닝이 어떨까 한다. 어떤 데이타를 보느냐가 결국은 ML의 핵심이라는 것을 보여 주고자 한다.

아마 교육 내용은 윈도우즈 머신 중심으로 이벤트나 프로그램 행동 데이타를 뽑아 내어 머신 러닝이나 휴리스틱스로 실제 말웨어나 익스플로잇을 디텍션하는 과정이 될것으로 보인다. Azure 환경도 좋고 아니면 ElasticSearch 등의 도구를 사용해도 좋을지는 더 테스트 해봐야 할것 같다.

2019년 7월 경 한국 판교에서 트레이닝 예정입니다. 관심 있으신 분은 다음 폼에서 “Security + Big Data + Machine Learning – Machine Learning for security engineers”을 선택해서 wait list에 올려 주시면 됩니다.

댓글 남기기