전두용 이글루시큐리티 인프라사업본부 차장

▲ 전두용 이글루시큐리티 인프라사업본부 차장

[컴퓨터월드] 시스템 엔지니어링에서 로그란 일반적으로 시스템에 발생한 특정 자극을 텍스트의 형태로 기록한 것을 말한다. 그러나 단 한번이라도 문제의 근원을 찾기 위해 시스템 로그 속을 헤매어 본 경험이 있다면 로그의 방대한 양에 한번, 분석의 어려움에 또 한번 놀랐던 기억이 있을 것이다.

특히 가용성이나 기밀성이 보장돼야 하는 중요 정보자원을 보호하는 보안 시스템의 로그는 시스템 문제 또는 보안위반의 징후를 탐지하기 위해 상시 분석이 필요하다. 로그 분석 시 직면하게 되는 방대한 양의 로그 분석과 같은 어려운 문제를 극복하기 위해 보안업계에서는 로그를 텍스트로 보지 않고 데이터의 형태로 변환하여 빠르고 정확하게 분석하고자 하는 노력을 지속적으로 기울여왔다.

그리고 텍스트 형태의 보안 시스템 로그를 데이터로 바꿔주는 플랫폼, SIEM(Security Information & Event Management)은 보안 전문가에게 없어서는 안 될 필수 툴 중 하나로 자리 잡게 됐다.

최근에는 데이터 분석을 용이하게 해주는 기능을 넘어 인공지능(AI)기술을 탑재하는 등 4차 산업혁명에 대비한 다양한 변화의 움직임을 보이고 있다. 로그를 텍스트에서 데이터로, 다른 관점에서 다뤄야 한다는 인식이 일반화 됐으며 다음으로는 통계적 기법이나 머신러닝 접근법으로 그 동안 전문가의 육안과 지식, 경험으로 찾아내지 못한 인사이트를 얻어내고자 하는 움직임이 일어나고 있다. 이러한 움직임이 바로 SIEM이다.

▲ 인공지능(AI) 기능을 탑재한 SIEM 예시(출처: 이글루시큐리티)

정보보안과 관련된 로그 및 데이터를 분석하는데 있어 명확한 표준이 없어 ‘이런 것이 중요할 것 같다’, ‘이런 것을 보면 될 것 같다’ 등 보안 전문가는 직관이나 경험에 의존해 로그나 데이터를 분석할 수밖에 없었다. 따라서 담당자는 ‘전문가도 찾지 못한 인사이트를 찾아내겠다’는 목표를 달성하기는커녕 반복되는 단순 업무를 ‘자동화’하는 데 그칠 수밖에 없었다.

위에서 언급한 ‘이런 것’, 다시 말해 어떤 목적으로 어떤 데이터가 연관되는지 찾아내는 것은 자동화에 머물 것인지 아니면 인사이트를 찾아낼 것인지를 결정할 수 있는 핵심 요소로 데이터 과학 분야에서는 이를 ‘피처(Feature)’라고 칭한다.

‘피처’는 ‘특징’이라는 뜻을 갖고 있다. 만약 로그를 통해 침해 의도를 가진 IP주소를 분류해내고자 한다면 침해 의도를 지닌 IP주소들의 특징을 먼저 파악해야 할 것이다. 간단히 위험도가 높은 공격을 많이, 오랜 시간 지속적으로 하는 IP를 찾는 것이 목표라면 발생시킨 공격의 위험도, 공격횟수, 공격 기간을 IP블랙리스팅을 위한 IP데이터의 ‘피처’라고 할 수 있다.

‘피처’가 중요한 이유는 분석 이후 회귀(Regression), 분류(Classification), 군집(Clustering)과 같은 데이터에서 인사이트를 얻는 작업의 입력(Input)이 바로 각 ‘피처’가 가지는 값이 되고 그 결과가 전적으로 어떤 ‘피처’를 사용했는지에 따라 달라지기 때문이다.

이렇듯 잘 정제된 ‘피처’를 선정하는 것은, 첫 단추를 잘 꿰어야 다음 단추도 바르게 껴지는 것처럼 보안 데이터 분석의 모든 프로세스에 영향을 미치는 매우 중요한 일이라고 할 수 있다.

여기에서는 보안 데이터를 활용해 침해 징후를 찾아내거나 비정상적인 행위를 탐지해내기 위해 어떻게 하면 올바른 ‘피처’를 선별해낼 수 있는지, 그 방안에 대해 살펴보는 시간을 가져보고자 한다.


먼저 데이터를 측정하기 좋도록, 전처리하는 과정이 필요하다

2012년 미 국방성 산하 SANDIA 연구소에서 실시한 사이버 위협과 관련된 데이터 분석에 필요한 측정 항목 및 측정 방법에 대한 연구, ‘Cyber Security Metrics’를 살펴보면, 사이버 보안 분야 데이터의 ‘피처’를 어떻게 선정하면 좋을지에 대한 조언을 얻을 수 있다. 해당 논문에서 소개된 좋은 척도는 다음과 같다.

 

1) 의미가 명확하고 모호하지 않아야 한다.(한 가지 의미만 가진 값이어야 한다.)

2) 목적에 맞는(의사결정을 지원하는) 척도를 이용해야 한다.

3) 데이터를 수집하는데 드는 비용이 데이터의 가치를 초과하지 않도록 수집이 용이해야 한다.

4) 정량적 척도가 정성적 척도보다 낫다.(상-중-하, A~F와 같은 등급 데이터보다 완전히 숫자로 표현할 수 있는 요소가 좋다.)

5) 데이터의 전체 스토리를 표현할 수 있는 척도가 중요하며 하나의 척도로만 표현이 불가능하다면 다수의 척도로 균형을 잡아야 한다.

 

IP의 블랙리스팅을 위해 데이터에서 어떤 ‘피처’들을 사용해야 되는지, 논문을 통해 한번 살펴보자. ‘반복적인 선형회귀분석을 이용한 대용량 보안로그의 블랙리스트 IP분류’를 참고해 ‘피처’를 추출하는 과정을 조금 더 기술적으로 설명해보도록 하겠다.


모든 데이터 분석은 목적을 분명히 해야 한다

데이터 분석 과정은 대체로 오랜 시간이 소요되기 때문에 목적이 명확해야 한다. 분석 과정에서 도출되는 결과를 보고 차근차근 다음 단계로 확장해 나가는 형태를 보이는 것이 중요하다. 지금 ‘피처’를 찾아내는 목적은 보안 시스템 로그에서 IP블랙리스팅을 위한 것임을 분명히 하고, 우선 보안 시스템 로그에서 IP가 어떤 행위를 하였는지 판단하기 위해 뽑아내야 하는 IP주소의 특징에는 무엇이 있는지 살펴보도록 하겠다.


일단 생각할 수 있는 모든 ‘피처’를 추출해보자. 단 구조화해 빠짐과 중복 없이

우선 나눠볼 수 있는 큰 카테고리로는 어떠한 것들이 있을지 고민해보고 각각의 카테고리에 해당되는 하위 상세 ‘피처’를 뽑아보도록 하자. 여기서 제안하는 과정은 설명을 위한 것이기 때문에 실제는 가지고 있는 로그를 보며 세부적인 사항들을 완성해야 함을 미리 알려두는 바다.

▲ 침해 탐지를 위한 IP 행위 ‘피처’ 카테고리 및 목록(출처: 이글루시큐리티)

첫째로 IP의 정체를 식별해야 한다. 국내에서 온 IP인지, 해외에서 온 IP인지, 어느 기관 소유의 IP인지, ISP는 어디인지 등이 이 카테고리에 속한다. 공공 서비스와 같이 국내 전용 서비스라면 해외 IP가 블랙리스트일 확률이 높고 관련된 기관의 IP라면 정상 사용자일 확률이 높다. 이때 IBM의 X포스(X-Force), Abuse IP DB와 같은 서비스에서 제공하는 IP 평판(Reputation) 정보가 있다면 블랙리스팅 여부를 판단하는데 큰 도움이 될 것이다.

둘째는 시간과 관련된 ‘피처’들이다. 며칠 동안 이벤트를 발생시켰는지를 알게 되면 지속적으로 공격을 시도하는 IP인지, 새롭게 등장한 IP인지, 한번 찔러보고 더 이상의 공격 의도가 없는 IP인지를 분별해낼 수 있다. 그리고 영업일, 비영업일, 업무 시간, 비업무시간과 같이 시간적 특성에 따라 이벤트를 발생시키는 비율을 따져 볼 수 있고 보안 시스템에 탐지되는 시간 간격을 분석해 일반 사용자와 블랙리스트의 서로 다른 패턴을 추출해 낼 수도 있다.

셋째로 이벤트 발생 범위를 들 수 있다. 경험해 본 바로는 블랙리스트의 경우, 지나치게 많은 목적지 IP로 접속을 시도하는 경향이 있다. 그리고 취약점을 찾은 이후로는 소수의 목적지 IP로 집요하게 공격을 시도하는데 여기서 넷째, 공격의 다양성으로 이어진다.

발생시킨 이벤트의 종류가 많다고 해서 블랙리스트라고 단정 지을 수는 없다. 발생 시킨 이벤트 종류가 다양할 때는 검색 엔진과 같이 시도 때도 없이 여러 가지 이벤트를 발생시키는 경우가 있는가 하면 phpMyAdmin이 막히면 워드프레스(Word Press), 아파치 스트러츠 2(Apache Struts2)로 이어지는 어느 정도 패턴화가 된 전통적 웹 취약점 공격의 경우도 존재한다.

발생 시킨 이벤트가 다양하지는 않지만 IoT 허브, 드루팔(Drupal), 제이보스(JBoss)와 같이 비교적 최근에 발표된 취약점을 복합적으로 공격하는 IP가 더 위험할 수도 있다. 또 몇 가지 종류의 보안 시스템에 탐지되었는지를 세어보면 성격이 다른 공격을 시도하며 좌충우돌 하고 있다는 사실도 유추해볼 수 있다.

마지막으로 공격의 강도다. 공격 발생 횟수, 전체 이벤트 중 차단 이벤트의 비율 등을 통해 공격의 강도를 파악할 수 있다.


사람이 하는 데이터분석과 컴퓨터가 하는 데이터분석에서 사용하는 ‘피처’는 다르다

육안 또는 휴리스틱에 의한 데이터 분석에서는 최대한 많은 특징을 뽑아 비교할수록 좋은 결과를 도출해낼 수 있겠지만 머신러닝에서는 원하는 목적에 높은 영향도가 있는 특징만을 선별하여 활용하는 것이 무엇보다 중요하다. 좋은 색깔을 모두 섞으면 결국 검은색이 돼버리고 마는 것과 같은 이치다.


‘피처’ 선발을 위한 과학적인 방법

이용할 ‘피처’를 선별해내는 데는 상당한 도메인 지식과 경험이 요구된다. 그렇지만 지식과 경험은 역으로 데이터를 다루기 위한 작업에 편견을 심어줄 가능성을 높이기도 하는데 이러한 편견을 제거할 수 있는, 간단하면서도 유용한 방법을 소개한다.

첫 번째로는 샘플 데이터에서 선형회귀(Linear Regression)의 가중치를 분석하는 방법이 있다. 선형회귀 분석은 머신러닝의 가장 기본적이면서도 오래된, 그러나 여전히 널리 쓰이는 기법 중 하나다. 특징 별 각각의 값에 가중치를 곱해서 서로 더한 값으로 주어진 최종 정답에 이르게 하는, 가중치를 찾아내는 방정식을 이용한다. 다만 지도학습이므로 정답 데이터가 필요하다.

사이킷-런(Scikit-learn)과 같은 머신러닝 라이브러리를 이용하면 짧은 코드로도 가중치를 구하는 것이 가능하다. 보다 자세한 설명을 위해 국내, 해외, 탐지 날짜 수, 공격 유형 수, 목적지 IP 수, 평판 점수의 ‘피처’ 샘플 데이터를 준비했다. 데이터는 블랙리스트 100개(블랙리스팅 여부 1), 정상사용자 100개(블랙리스팅 여부 0), 총 200개로 각각 트레이닝 데이터 80%, 테스트 데이터 20%로 구성했다.

▲ ‘피처’별 가중치 확인을 위한 데이터 샘플(출저: 이글루시큐리티)
▲ 선형회귀 가중치 분석 결과(출처: 이글루시큐리티)

위 데이터로 각 ‘피처’별 가중치를 출력해보았다. 블랙리스팅 결과에는 IP가 국내/해외 인지, 얼마나 많은 종류의 공격을 시도했는지, 이 두 가지가 가장 큰 영향을 미쳤음을 알 수 있었다.

두 번째는 상관 계수(Correlation-Coefficient) 분석이다. 상관 계수는 하나의 ‘피처’ 값이 증가할 때 상대 ‘피처’가 함께 증가하거나, 감소하는 정도를 통해 상호간의 관계를 파악할 수 있도록 도와주는 요소다. 비슷한 역할을 하는 ‘피처’, 즉 중복되는 ‘피처’는 같은 조건에서 서로 같은 방향으로 움직인다. 예를 들어 IP가 접속한 날짜 수와 시간의 수는 비슷한 변화량을 가질 것이기 때문에 덜 중요하다고 판단되는(첫 번째 방법에서 가중치의 절대값이 작은 것) ‘피처’를 버리고 테스트를 해보면 보다 나은 결과를 도출해낼 수 있을 것이다.

▲ 상관계수 분석 결과(출처: 이글루시큐리티)

단순히 데이터 분석 결과만을 놓고 본다면, 상관계수가 가장 높게 나온 dip_cnt(목적지 IP 수)와 method_cnt(공격 유형 수)는 서로 중복되는 ‘피처’ 임을 유추해볼 수 있다.

주성분 분석(PCA: Principle Component Analysis)은 중요한 ‘피처’를 선정해내는 또 다른 방법으로 ‘피처’들이 통계적으로 상관관계가 없도록, 데이터셋을 회전시켜 재구성하는 기술을 가리킨다.

▲ PCA 개념도(출처: M Scholz. Approaches to analyse and interpret biological profile data(2006))

주성분 분석은 ‘피처’를 완전히 재구성해 애초에 우리가 지정한 ‘피처’ 목록을 유실하기 때문에 원래 가중치에서 어디가 어떻게 빠졌는지 알 수 없다. 그렇기 때문에 만약 이런 부분이 불만족스럽다면 가중치를 정규화하는 L1규제도 고려해볼 수 있다. L1 규제는 데이터 모델의 복잡성을 제어하는 정규화 방법으로 모든 ‘피처’의 가중치를 0에 가깝게 만들거나 어떤 ‘피처’는 실제 0으로 만들어 즉, 불필요한 ‘피처’를 삭제해 데이터의 상호 영향을 단순하게 만들어 준다.


이 후 상상해 볼 수 있는 것들…

지금까지 보안로그 분석을 위한 ‘피처’의 후보를 뽑고 그 중에서도 머신러닝에 잘 적용될 수 있는 ‘피처’를 선별해내는 단계까지 알아보았다. 그러나 가장 기본적인, ‘피처’ 후보를 도출해내는 작업부터가 보안 전문가의 직관에서 비롯됐기 때문에 앞서 살펴본 것들이 완전히 데이터 지향적인 방법이라고 하기는 어렵다. 사람의 편견이 개입되지 않은, 완전한 데이터 지향적인 방법이 되기 위해서는 ‘피처’의 선정도 자동화가 돼야 한다.

분석에 쓸 만한 수백, 수천 가지의 ‘피처’를 자동으로 찾아내고 그 가중치를 스스로 실험해 그 중 중요한 ‘피처’를 추출해내도록 하는 연구가 현재 정보보안 로그 분석 분야에서 활발히 시도 되고 있다. 그리고 그 결과 ‘피처’의 선정도 자동화가 된다면 이는 머신러닝의 성능을 획기적으로 높여주는 기폭제가 되어줄 것이라 기대한다.

저작권자 © 컴퓨터월드 무단전재 및 재배포 금지