보안정보

전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.

보안로그 분석 및 블랙리스팅을 위한 피처 엔지니어링(Feature Engineering)

2019.04.30

5,658


시스템 엔지니어링에서 로그란 일반적으로 시스템에 발생한 특정 자극을 텍스트의 형태로 기록한 것을 말한다. 그러나 단 한번이라도 문제의 근원을 찾기 위해 시스템 로그 속을 헤매어 본 경험이 있다면 로그의 방대한 양에 한번, 분석의 어려움에 또 한번 놀랐던 기억이 있을 것이다.
특히 가용성이나 기밀성이 보장되어야 하는 중요 정보자원을 보호하는 보안 시스템의 로그는 시스템 문제 또는 보안위반의 징후를 탐지하기 위해 상시 분석이 필요하다. 이에 로그 분석 시 직면하게 되는 방대한 양의 로그를 분석하기 어려운 문제를 극복하기 위해 보안업계에서는 로그를 텍스트로 보지 않고 데이터의 형태로 변환하여 빠르고 정확하게 분석하고자 하는 노력을 지속적으로 기울여왔다. 그리고 텍스트 형태의 보안 시스템 로그를 데이터로 바꿔주는 플랫폼, SIEM은 보안 전문가에게 있어 없어서는 안될 필수 툴 중 하나로 자리 잡게 되었다.
더욱이 최근에는 데이터 분석을 용이하게 해주는 기능을 넘어 인공지능(AI)기술을 탑재하는 등 4차 산업혁명을 대비한 다양한 변화의 움직임을 보이고 있다. 로그를 텍스트에서 데이터로, 관점을 전환하여 다루어야 한다는 인식이 일단 업계에 성공적으로 안착하자 이제는 통계적 기법이나 머신러닝 접근법으로 그 동안 전문가의 육안과 지식, 경험으로 찾아내지 못한 인사이트를 얻어내고자 하는 것이 SIEM의 다음 목표로 부상하게 된 것이다.
 
<인공지능(AI) 기능을 탑재한 SIEM 예시 / 출처: ㈜이글루시큐리티>
그러나 정보보안과 관련된 로그 및 데이터를 분석하는데 있어 명확한 표준이 부재한 탓에, ‘이런 이런 것이 중요할 것 같다’, ‘이런 이런 것을 보면 될 것 같다’ 등 보안 전문가는 직관이나 경험에 의존해 로그나 데이터를 분석할 수 밖에 없는 것이 현실이었다. 따라서 담당자는 ‘전문가도 찾지 못한 인사이트를 찾아내겠다’는 목표를 달성하기는커녕 반복되는 단순 업무를 ‘자동화’시키는 것에 그칠 수 밖에 없었다. 위에서 언급한 ‘이런 이런 것’, 다시 말해 어떤 목적으로 어떤 데이터가 연관되는지 찾아내는 것은 자동화에 머물 것인지 아니면 인사이트를 찾아낼 것인지를 결정할 수 있는 핵심 요소로 데이터 과학 분야에서는 이를 ‘Feature’라고 칭하고 있다.
Feature는 ‘특징’이라는 뜻을 가진다. 만약 로그를 통해 침해 의도를 가진 IP주소를 분류해내고자 한다면 침해 의도를 지닌 IP주소들의 특징을 먼저 파악해야 할 것이다. 간단히 위험도가 높은 공격을 많이, 오랜 시간 지속적으로 하는 IP를 찾는 것이 목표라면 발생시킨 공격의 위험도, 공격횟수, 공격 기간을 IP블랙리스팅을 위한 IP데이터의 Feature라고 할 수 있다. Feature가 중요한 이유는 분석 이후 회귀(Regression), 분류(Classification), 군집(Clustering)과 같은 데이터에서 인사이트를 얻는 작업의 입력(Input)이 바로 각 Feature가 가지는 값이 되고 그 결과가 전적으로 어떤 Feature를 사용하였는지에 따라 달라지기 때문이다.
이렇듯 잘 정제된 Feature를 선정하는 것은, 첫 단추를 잘 꿰어야 다음 단추도 바르게 껴지는 것처럼 보안 데이터 분석의 모든 프로세스에 영향을 미치는 매우 중요한 일이라고 할 수 있다. 이에 보안 데이터를 활용하여 침해 징후를 찾아내거나 비정상적인 행위를 탐지해내기 위하여 어떻게 하면 올바른 Feature를 선별해낼 수 있는지, 그 방안에 대해 살펴보는 시간을 가져보고자 한다.
■ 먼저 데이터를 측정하기 좋도록, 전처리하는 과정이 필요하다.
2012년 미 국방성 산하 SANDIA 연구소에서 실시한 사이버 위협과 관련된 데이터 분석에 필요한 측정 항목 및 측정 방법에 대한 연구, Cyber Security Metrics[1]를 살펴보면, 사이버 보안 분야 데이터의 Feature를 어떻게 선정하면 좋을지에 대한 조언을 얻을 수 있다. 해당 논문에서 소개된 좋은 척도는 다음과 같다.
1) 의미가 명확하고 모호하지 않아야 한다. (한 가지 의미만 가진 값이어야 한다.)
2) 목적에 맞는(의사결정을 지원하는) 척도를 이용해야 한다.
3) 데이터를 수집하는데 드는 비용이 데이터의 가치를 초과하지 않도록 수집이 용이해야 한다.
4) 정량적 척도가 정성적 척도보다 낫다. (상-중-하, A~F와 같은 등급 데이터보다 완전히 숫자로 표현할 수 있는 요소가 좋다.)
5) 데이터의 전체 스토리를 표현할 수 있는 척도가 중요하며 하나의 척도로만 표현이 불가능하다면 다수의 척도로 균형을 잡아야 한다.
IP의 블랙리스팅을 위해 데이터에서 어떤 Feature들을 사용해야 되는지, 논문을 통해 한번 살펴보자. ‘반복적인 선형회귀분석을 이용한 대용량 보안로그의 블랙리스트 IP분류’[2]를 참고하여 Feature를 추출하는 과정을 조금 더 기술적으로 설명해보도록 하겠다.
■ 모든 데이터 분석은 목적을 분명히 해야 한다.
데이터 분석 과정은 대체로 오랜 시간이 소요되기 때문에 목적을 명확히 정해야 된다. 분석 과정에서 도출되는 결과를 보고 차근차근 다음 단계로 확장해 나가는 형태를 보이는 것이 중요하다. 지금 Feature를 찾아내는 목적은 보안 시스템 로그에서 IP블랙리스팅을 위한 것임을 분명히 하고, 우선 보안 시스템 로그에서 IP가 어떤 행위를 하였는지 판단하기 위해 뽑아내야 하는 IP주소의 특징에는 무엇이 있는지 살펴보도록 하겠다.
■ 일단 생각할 수 있는 모든 Feature를 추출해보자. 단, 구조화하여 빠짐과 중복 없이
우선 나눠볼 수 있는 큰 카테고리로는 어떠한 것들이 있을지 고민해보고 각각의 카테고리에 해당되는 하위 상세 Feature를 뽑아보도록 하자. 여기서 제안하는 과정은 설명을 위한 것이기 때문에 실제는 가지고 있는 로그를 보며 세부적인 사항들을 완성해야 함을 미리 알려두는 바이다.
 
<침해 탐지를 위한 IP 행위 Feature 카테고리 및 목록 / 출처: ㈜이글루시큐리티>
첫째로 IP의 정체를 식별해야 한다. 국내에서 온 IP인지, 해외에서 온 IP인지, 어느 기관 소유의 IP인지, ISP는 어디인지 등이 이 카테고리에 속한다. 공공 서비스와 같이 국내 전용 서비스라면 해외 IP가 블랙리스트일 확률이 높고 관련된 기관의 IP라면 정상 사용자일 확률이 높다. 이때 IBM의 X-Force, Abuse IP DB와 같은 서비스에서 제공하는 IP Reputation 정보가 있다면 블랙리스팅 여부를 판단하는데 큰 도움이 될 것이다.
둘째는 시간과 관련된 Feature들이다. 며칠 동안 이벤트를 발생시켰는지를 알게 되면 지속적으로 공격을 시도하는 IP인지, 새롭게 등장한 IP인지, 한번 찔러보고 더 이상의 공격 의도가 없는 IP인지를 분별해낼 수 있다. 그리고 영업일, 비영업일, 업무 시간, 비업무시간과 같이 시간적 특성에 따라 이벤트를 발생시키는 비율을 따져 볼 수 있고 보안 시스템에 탐지되는 시간 간격을 분석하여 일반 사용자와 블랙리스트의 서로 다른 패턴을 추출해 낼 수도 있다.
셋째로 이벤트 발생 범위를 들 수 있다. 경험해 본 바로는 블랙리스트의 경우, 지나치게 많은 목적지 IP로 접속을 시도하는 경향이 있다. 그리고 취약점을 찾은 이후로는 소수의 목적지 IP로 집요하게 공격을 시도하는데 여기서 넷째, 공격의 다양성으로 이어진다. 
꼭 발생시킨 이벤트의 종류가 많다고 해서 블랙리스트라고 단정 지을 수는 없다. 발생 시킨 이벤트 종류가 다양할 때는 검색 엔진과 같이 시도 때도 없이 여러 가지 이벤트를 발생시키는 경우가 있는가 하면 phpMyAdmin이 막히면 워드프레스(Word Press), 아파치 스트러츠 2(Apache Struts2)로 이어지는 어느 정도 패턴화가 된 전통적 웹 취약점 공격의 경우도 존재한다. 발생 시킨 이벤트가 다양하지는 않지만 IoT 허브, 드루팔(Drupal), 제이보스(JBoss)와 같이 비교적 최근에 발표된 취약점을 복합적으로 공격하는 IP가 더 위험할 수도 있다. 또 몇 가지 종류의 보안 시스템에 탐지되었는지를 세어보면 성격이 다른 공격을 시도하며 좌충우돌 하고 있다는 사실도 유추해볼 수 있다.
마지막으로 공격의 강도이다. 공격 발생 횟수, 전체 이벤트 중 차단 이벤트의 비율 등을 통해 공격의 강도를 파악할 수 있다.
■ 사람이 하는 데이터분석과 컴퓨터가 하는 데이터분석에서 사용하는 Feature는 다르다.
육안 또는 휴리스틱에 의한 데이터 분석에서는 최대한 많은 특징을 뽑아 비교하면 할수록 좋은 결과를 도출해낼 수 있겠지만 머신러닝에서는 원하는 목적에 높은 영향도가 있는 특징만을 선별하여 활용하는 것이 무엇보다 중요하다. 좋은 색깔을 모두 섞으면 결국 검은색이 되어버리고 마는 것과 같다.
ㆍ Feature 선발을 위한 과학적인 방법 몇 가지
이용할 Feature를 선별해내는 데는 상당한 도메인 지식과 경험이 요구된다. 그렇지만 지식과 경험은 역으로 데이터를 다루기 위한 작업에 편견을 심어줄 가능성을 높이기도 하는데 이러한 편견을 제거할 수 있는, 간단하면서도 유용한 방법을 소개한다.
첫 번째로는 샘플 데이터에서 선형회귀(Linear Regression)의 가중치를 분석하는 방법이 있다. 선형회귀 분석은 머신러닝의 가장 기본적이면서도 오래된, 그러나 여전히 널리 쓰이는 기법 중 하나다. 특징 별 각각의 값에 가중치를 곱해서 서로 더한 값으로 주어진 최종 정답에 이르게 하는, 가중치를 찾아내는 방정식을 이용한다. 다만 지도학습이므로 정답 데이터가 필요하다.
사이킷-런(Scikit-learn)과 같은 머신러닝 라이브러리를 이용하면 짧은 코드로도 가중치 구하는 것이 가능해진다. 보다 자세한 설명을 위해 국내, 해외, 탐지 날짜 수, 공격 유형 수, 목적지 IP 수, 평판 점수의 Feature 샘플 데이터를 준비하였다. 데이터는 블랙랙리스트 100개(블랙리스팅 여부 1), 정상사용자 100개(블랙리스팅 여부 0), 총 200개로 각각 Training 데이터 80%, Test 데이터 20%로 구성하였다.
 
<Feature별 가중치 확인을 위한 데이터 샘플 / 출저: ㈜이글루시큐리티>
 
<선형회귀 가중치 분석 결과 / 출처: ㈜이글루시큐리티>
위 데이터로 각 Feature별 가중치를 출력해보았다. 블랙리스팅 결과에는 IP가 국내/해외 인지, 얼마나 많은 종류의 공격을 시도했는지, 이 두 가지가 가장 큰 영향을 미쳤음을 알 수 있었다.
두 번째는 상관 계수(Correlation-Coefficient) 분석이다. 상관 계수는 하나의 Feature 값이 증가할 때 상대 Feature가 함께 증가하거나, 감소하는 정도를 통해 상호간의 관계를 파악할 수 있도록 도와주는 요소이다. 비슷한 역할을 하는 Feature 즉, 중복되는 Feature는 같은 조건에서 서로 같은 방향으로 움직인다. 예를 들어 IP가 접속한 날짜 수와 시간의 수는 비슷한 변화량을 가질 것이기 때문에 덜 중요하다고 판단되는(첫 번째 방법에서 가중치의 절대값이 작은 것) Feature를 버리고 테스트를 해보면 보다 나은 결과를 도출해낼 수 있을 것이다.
 
<상관계수 분석 결과 / 출처: ㈜이글루시큐리티>
단순히 데이터 분석 결과만을 놓고 본다면, 상관계수가 가장 높게 나온 dip_cnt(목적지 IP 수)와 method_cnt(공격 유형 수)는 서로 중복되는 Feature 임을 유추해볼 수 있다.
주성분 분석(PCA; Principle Component Analysis)은 중요한 Feature를 선정해내는 또 다른 방법으로 Feature들이 통계적으로 상관관계가 없도록, 데이터셋을 회전시켜 재구성하는 기술을 가리킨다.[3]
 
<PCA 개념도 / 출처: M Scholz. Approaches to analyse and interpret biological profile data (2006)>
주성분 분석은 Feature를 완전히 재구성하여 애초에 우리가 지정한 Feature 목록을 유실하기 때문에 원래 가중치에서 어디가 어떻게 빠졌는지 알 수 없다. 그렇기 때문에 만약 이런 부분이 불만족스럽다면 가중치를 정규화하는 L1규제도 고려해볼 수 있다. L1 규제는 데이터 모델의 복잡성을 제어하는 정규화 방법으로 모든 Feature의 가중치를 0에 가깝게 만들거나 어떤 Feature는 실제 0으로 만들어 즉, 불필요한 Feature를 삭제하여 데이터의 상호 영향을 단순하게 만들어 준다.
■ 이 후 상상해 볼 수 있는 것들…
지금까지 보안로그 분석을 위한 Feature의 후보를 뽑고 그 중에서도 머신러닝에 잘 적용될 수 있는 Feature를 선별해내는 단계까지 함께 알아보았다. 그러나 가장 기본적인, Feature 후보를 도출해내는 작업부터가 보안 전문가의 직관에서 비롯되었기 때문에 앞서 살펴본 것들이 완전히 데이터 지향적인 방법이라고 하기는 어렵다. 사람의 편견이 개입되지 않은, 완전한 데이터 지향적인 방법이 되기 위해서는 Feature의 선정도 자동화가 되어야 한다. 이에 분석에 쓸 만한 수백, 수천 가지의 Feature를 자동으로 찾아내고 그 가중치를 스스로 실험하여 그 중 중요한 Feature를 추출해내도록 하는 연구가 현재 정보보안 로그 분석 분야에서 활발히 시도 되고 있다. 그리고 그 결과 Feature의 선정도 자동화가 된다면 이는 머신러닝의 성능을 획기적으로 높여주는 기폭제가 되어줄 것이라 기대하는 바이다.
[참고문헌]
[1] Mark Mateski, Cassandra M. Trevino, Cynthia K. Ve itch, JohnMichalski, J.Mark Harris, Scott Maruoka, Jason Frye. Cyber Threat Metrics. (SANDIA REPORT SAND2012-2427 2012)
[2] 전두용, 탁병철. 반복적인 선형회귀분석을 이용한 대용량 보안로그의 블랙리스트 IP 분류 (한국정보과학회 KSC 2018)
[3] Andreas C. Müller, Sarah Guido. Introduction to Machine Learning with Python: A Guide for Data Scientists(2016)​