부족한 HWP 악성코드 학습 데이터 확보
2022년 SiteLock의 Security Report에따르면 “High-severity malware” 즉 높은 위험성의 악성코드가 전년 대비 86%가 증가했다고 발표하였습니다. 이러한 높은 위험성의 악성코드는 데이터를 훔치고, 고객정보를 삭제하는 행위뿐만 아니라 브랜드 평판에 큰 타격을 주는 피해를 야기하며, 다양한 공격행위로 사용자를 위험에 처하게 할 수 있습니다[1]. 더욱이 최근 코로나19 팬데믹의 영향으로 우리 사회의 많은 부분이 비대면화 되면서 더욱 더 사이버 위협에 노출되었고, 공격자들은 이러한 기회를 빌려 수단과 방법을 가리지 않고 공격을 감행하고 있습니다.
대부분의 기업 및 기관에서는 이러한 사이버 위협에 대응하고자 안티바이러스 등 정보보안 솔루션을 적극적으로 활용하고 있지만, 대부분의 안티바이러스는 시그니처 기반 탐지 방식을 채택하고 있기 때문에 제로데이 공격이나 악성코드 변종에 대응하기에는 한계점이 있습니다. 따라서 최근에는 AI를 활용하여 악성코드를 탐지하는 연구가 활발하게 진행되고 있습니다[2].
이처럼 AI를 활용하여 사이버 위협을 효율적으로 탐지하는 데에는 먼저 AI 모델을 학습하기 위한 다수의 사이버보안 학습데이터가 필요합니다. 최근까지 여러 사이버 공격 사례가 있었고, 이를 통해 사이버 공격 데이터를 확보하려는 노력이 활발하게 이루어졌습니다. 하지만 AI 모델에 효과적으로 활용하기 위한 사이버 공격 데이터가 현실적으로 부족한 것이 사실입니다[3]. 여기에는 몇 가지 이유가 있는데 그중 하나는 나날이 새롭게 진화하는 사이버 위협에 반해 과거에 수집된 악성 행위의 종류에 한계가 있다는 점[4]과 일반적으로 사이버 공격에 피해를 입은 기관이 피해 사실을 공개하고 공유하는 것을 꺼리기 때문입니다[5]. 이렇게 제한적이고 부족한 데이터는 효과적인 AI 모델을 학습하기에 걸림돌로 작용하였습니다.
부족한 사이버 공격 데이터를 활용하여 효과적인 사이버 위협 탐지 분류 모델을 구현하기 위해서는 많은 학습데이터가 필요하며, 이를 위해 데이터 증강이라는 기술이 반드시 필요합니다. 본 포스팅에서는 AI 연구에서 유용하게 쓰이는 다양한 데이터 증강 기법에 대해 소개하고, 이러한 기법을 활용하여 HWP 문서형 악성코드를 보다 효과적으로 탐지하는 방안에 대해 소개하고자 합니다.
데이터 증강의 필요성
이상 탐지는 일반적으로 예상되는 패턴을 따르지 않는 비정상 행위를 감지하는 방법을 의미합니다. 기계 학습, AI가 널리 활용되기 전에는 보안 전문가들이 악성코드 분석 및 프로파일링을 진행하여 수기로 도출한 규칙 기반으로 악성코드를 탐지하는 것이 전통적인 방법이었습니다. 하지만 최근 폭발적으로 증가하는 악성코드를 전통적으로 대응하기에는 상당한 허들이 존재하며, 다양한 AI 아키텍처와 하드웨어의 발전으로 AI의 전성기가 찾아오면서 AI를 통한 악성코드 대응 연구가 활발하게 진행되고 있고 다양한 성과가 도출하고 있습니다[6].

그림 1 . 훈련 데이터셋 크기와 과적합의 관계
최근 다양한 학습 알고리즘의 발달로 데이터를 활용하여 더 많은 AI 모델을 구현할 수 있지만, AI 학습에 활용할 수 있는 최상의 데이터를 확보하는 것은 매우 어렵습니다[7]. 실제 부족한 학습데이터로 복잡한 AI 모델을 학습할 때에는 적은 수의 학습데이터 자체를 통으로 암기하여 일반적인 표상을 학습하지 못하게 됨으로서 테스트 오류가 증가하는 과적합(overfitting) 현상이 발생[8]하는데, 그림 1에서와 같이 학습데이터 세트의 크기가 커질수록 테스트의 오류가 줄어 과적합을 피할 수 있습니다[9]. 이처럼 학습데이터의 양을 증대시켜 과적합 문제를 해소하는 한 가지 방법으로서 데이터 증강(Data Augmentation) 기법을 들 수 있는데, 데이터 증강이란 적은 양의 데이터를 기반으로 수정, 치환, 합성 등의 다양한 알고리즘을 통해 데이터 수를 늘리는 기법을 말하며[10], 이를 통해 학습데이터에 존재하는 불균형 현상 또한 해소할 수 있습니다. Zhang[11], Yue[12], Cui[13] 등의 연구자들에 의하면, AI 기반 악성코드 판별에 있어 불균형한 학습데이터를 가장 큰 애로사항으로 꼽고 있습니다[14]. 정상 행위에 비해 수집한 악성 행위가 매우 부족하기에 학습데이터의 불균형을 초래하는데, 이러한 문제를 해결하기 위해 악성코드 데이터를 증강하여 정상 데이터와의 비율을 맞추는 등 다양한 방면으로 데이터를 증강할 수 있습니다.
학습데이터 증강 기법
데이터 증강이란 데이터의 핵심이 되는 본연의 특징은 간직한 채, 크고 작은 변형을 가해 새로운 데이터를 만드는 방법입니다. 데이터 증강의 기법에는 크게 데이터 자체의 특징을 활용한 증강과 AI를 활용한 데이터 증강이 있습니다. 먼저 데이터 자체의 특징을 활용한 증강 기법들을 소개하고, 마지막으로 AI를 활용한 데이터 증강 기법을 소개하겠습니다.
Cropping
Cropping은 데이터의 핵심 부분이 되는 일부를 다양한 방식으로 잘라(crop) 새로운 데이터를 만드는 방식입니다. 그림 2에서도 볼 수 있듯, 원본의 학 이미지의 핵심이 되는 학 부분만을 포함하도록, 무작위로 다양하게 잘라냄으로써 다양한 학습데이터를 생성하여 학습에 사용할 수 있습니다. 즉 1장의 원본 데이터를 10장으로 증강 시킨 효과를 볼 수 있는 것입니다. 이처럼 cropping 기법은 일반적으로 이미지에서 많이 쓰이나, 최근에는 테이블형 데이터에 적용하는 다양한 연구가 진행되고 있습니다[15]. 테이블형 데이터는 이미지와 다르게 컬럼간 어떤 관계가 있는지를 파악하기 어렵기 때문에 통계적 분석이나 AI 학습의 결과를 토대로 cropping을 진행합니다.

그림 2 . 학 이미지를 활용한 cropping 결과
Flipping
Flipping 기법은 단어 그대로 데이터를 뒤집는 것을 의미하는데, 그림 3은 앞에서도 보았던 학 이미지를 flipping 한 결과입니다. 하나의 데이터를 뒤집어 2개의 데이터로 만드는 방식으로, cropping과 합쳐서도 사용할 수 있습니다. 즉 cropping과 flipping을 동시에 적용하면 1장의 원본 데이터를 총 16장(필요에 따라 더 많이)으로 증강 시킬 수 있는 것입니다. 이 기법 역시 테이블형 데이터에서는 컬럼 간의 관계를 알기 어렵기 때문에, 이미지와 같이 단독으로만 사용하기는 어렵다는 단점이 있습니다.

그림 3 . 학 이미지를 활용한 flipping 결과
Cropping과 flipping 증강 기법은 일반적으로 이미지 데이터를 대상으로 많이 사용하며, 그 외에도 회전(Rotation), 색 변환(Color shift) 등 이미지의 본질을 해치지 않는 선에서 데이터 변형을 통해 데이터의 개수를 늘릴 수 있습니다. 이미지뿐만 아니라 테이블형 데이터에서도 이러한 기법을 이용하여 증강을 시도하고 있습니다만, 아직은 관련 연구가 부족한 실정입니다.
노이즈 주입
노이즈(잡음) 추가 기법이란 데이터값에 노이즈를 넣어 증강하는 방식입니다. 이 방식은 매우 오래된 증강 방법(Holmstrom & Koistinen, 1992년[16]) 중 하나지만 그만큼 적용하기가 쉬워 널리 사용되고 있습니다. 노이즈를 추가한 학습데이터를 활용하여 AI 모델을 학습하게 되면 모델이 각 클래스의 다양한 측면을 학습하도록 할 수 있을 뿐만 아니라, 좀 더 견고한 AI 모델을 학습할 수 있습니다. 이는 AI 모델의 내부에 내장된 확률적 정규화나 드롭 아웃 계층과 같은 목적으로 사용되지만, Devries & Taylor(2017)[17]가 제안한 “컷아웃”은 정규화의 예에서와 같은 목적으로 입력 데이터를 증강시켜 사용합니다. 데이터의 증가는 사전 결정된 테스트 세트에 대한 정확도로 점수를 매길 수 있는 성능과 높은 상관관계가 있습니다. 그림 4와 그림 5는 각각 이미지와 테이블 형태의 데이터에 노이즈를 주입하여 데이터를 증강한 예를 보여줍니다.

그림 4 . 이미지 노이즈 추가

그림 5 . 테이블 형태 데이터의 노이즈 추가
그림 4는 앞의 예시서도 사용한 학 이미지에 소금과 같이 하얀색 점이나 후추와 같이 검은색 점을 임의로 흩뿌리는 노이즈를 추가한 모습입니다. 이와 같은 노이즈를 소금과 후추 노이즈라고 하는데, 노이즈를 추가함으로써 원본의 이미지에 수정을 가했지만 이미지 속 학의 모습은 여전히 알아볼수 있습니다. 그림 5-A는 AI 학습을 위해 사용한 학습데이터 일부분입니다. 그림 5-A의 위쪽 테이블은 원본 데이터로 최대최소(min-max) 표준화를 한 데이터로 0~1 사이의 값을 가지는데, 이 데이터에 평균 0, 표준편차 0.03의 정규분포에 맞춘 노이즈를 주입한 결과입니다. 그림 5-B를 보면 원본 데이터의 분포와 노이즈를 추가한 데이터의 분포에 큰 차이는 없지만 데이터 분포에 다양성이 부여된 것을 확인할 수 있습니다.
데이터 혼합(MixUp)

그림 6 . 테이블 형태 데이터의 혼합
두 개, 혹은 그 이상의 데이터를 섞어서 새로운 데이터를 생성할 수도 있습니다. 이러한 혼합 기반 데이터 증강 기법은 이미지와 테이블형 데이터 모두에서 쓰이지만, 그 목적이 다릅니다. 이미지의 경우 일반적으로 AI 모델의 편향성을 줄이기 위해 데이터를 혼합하여 증강하기도 하지만, 테이블형 데이터의 경우는 많은 경우 데이터의 부족 현상을 해결하기 위해 사용합니다. 그림 6은 앞서도 소개드린 그림 5에서의 데이터를 활용하여 혼합하는 방식을 보여줍니다. 그림의 좌측에서 file3과 file10 데이터를 혼합하여 file3_10의 새로운 데이터를 생성하는데, 우측 테이블에 있는 weight 수치에 따라 가중치를 가해 혼합하였습니다. 즉, 우측 첫 번째 행의 데이터는 file3에 0.7, file10에 0.3의 가중치로 혼합한 데이터로서, “tag_id_oth”의 값은 0*0.7 + 0.000516*0.3 = 0.000155로 계산할 수 있습니다. 이처럼 두 개 이상의 데이터에 대해 다양한 가중치를 주어 혼합함으로써 새로운 데이터를 만들 수 있습니다.
위에서 소개한 네 가지 방법은 데이터만을 활용한 증강 방법의 대표적인 예입니다. 데이터 자체를 섞고, 돌리고, 지우고, 망가트리면서 본연의 성질을 해치지 않고 증강하는 방법이죠. 다음으로는 AI를 활용한 데이터 증강 방법의 하나인 GAN에 대해 간단히 소개하겠습니다.
GAN

그림 7 . GAN의 구조
GAN은 적대적 생성 신경망(Generative Adversarial Network)의 약자로서, 이름에서 유추할 수 있듯 데이터를 생성하는 생성자(Generator)와 데이터를 구별하는 판별자(Discriminator)가 적대적으로 경쟁하면서 학습됩니다[18]. 생성자가 보다 현실적인 가짜 데이터(Fake Images)를 생성하고자 하는 반면, 판별자는 생성자가 생성한 가짜 데이터(Fake Images)와 실제 데이터(input data)를 보다 잘 비교하고자 하는 것이지요(그림 7). 충분히 학습된 생성자를 활용하면 진짜 데이터와 유사한 가짜 데이터를 얻을 수 있어, 악성코드나 의학 데이터 등 데이터를 구하기 어려운 분야에서 많이 활용하는 데이터 증강 기법이 되겠습니다. Bowles, Christopher, 2018[19]에서는 실제 환자의 CT 이미지를 활용하여 부족한 데이터를 생성하여 실제 데이터와 생성된 데이터를 활용하여 AI 모델을 학습하였습니다.

그림 8 . 환자 CT 사진
그림 8에서는 비슷한 모습의 이미지가 2장씩 짝지어진 모습을 볼 수 있는데, 위쪽 이미지는 GAN을 사용하여 생성한 이미지이고, 아래쪽 이미지는 실제 이미지 중 가장 유사한 이미지입니다. 이처럼 GAN 기반의 증강 기법을 활용하면 진위 구분이 어려울 만큼 실제 데이터와 유사한 증강 데이터를 얻을 수 있습니다.
데이터 증강의 실제: 증강을 통한 악성코드 탐지 성능 향상
지금까지 다양한 증강 기법에 대해 예시와 함께 살펴보았습니다. 지금부터는 실제로 증강기법을 적용하였을 때 보다 효과적인 AI 모델을 학습할 수 있는지 한글 문서(Hangul Word Processor, HWP) 기반의 악성코드 탐지를 통해 살펴보고자 합니다. HWP 악성코드를 탐지하기 위해 선행적으로 HWP 포맷 구조와 이 구조 내에 숨겨진 악성 콘텐츠 및 스크립트 등의 특징을 이해해야 합니다. HWP는 스토리지와 스트림의 구조로 구성되는데, 스토리지는 디렉터리, 스트림은 파일의 형태로 구성되어 있습니다. 단일 한글 문서 파일은 BinData, BodyText, DocOptions, Scripts 등의 다중 스토리지 구조로서, 각 스토리지마다 각기 다른 파일스트림이 존재합니다. 특정 스토리지에 할당되지 않고 단일 스트림으로 존재하는 데이터로는 DocInfo, FileHeader, HwpSummaryInformation, prv(미리보기) 등이 있습니다. HWP 악성코드에서 악성 행위를 유발하는 스크립트는 주로 BodyText, BinData, Script 스토리지 내에 존재하며, 보다 자세히 알아보고자 한다면 저희 블로그 “(한글 문서) 꼭꼭 숨어라 악성코드 보일라“ 내용을 참고하면 되겠습니다.
표 1. HWP feature 일부분

악성 인자들이 들어갈 가능성이 있는 스토리지/스트림을 중점적으로 악성코드를 탐지하기 위해 필요한 특성(feature)을 추출했습니다(표 1). 표 1에서 첫 번째 열인 file_name은 파일의 hash 값으로 중복 파일이 생기지 않기 위해 사용하였으며, 맨 마지막의 class는 악성일 경우 1, 정상 파일일 경우 0의 값을 가집니다. 그 외의 다른 열에는 악성코드 탐지를 위해 추출한 feature들로, 각 파일(열)에서 나타나는 횟수를 세어 표기하였습니다. 예를 들어, 첫 번째 파일에서는 exe 파일이 100번, jar 파일이 2번, dll이 3번이 검출되었다는 의미입니다. 최종적으로 HWP 문서 각각에 대해 총 52개의 추출된 특성으로 전처리하여 나타냈습니다.
본 포스팅에서는 노이즈 주입과 혼합 기법의 두 가지 증강 기법을 테스트하였는데, 먼저 노이즈 주입 증강 기법을 적용하기 전 데이터를 minmax 스케일링하여 모든 값을 0과 1 사이로 만들어준 후, 학습데이터 각 특성마다의 표준 편차 값을 바탕으로 정규분포 형식을 지니는 노이즈를 주입하여 증강했습니다. 두 번째 혼합 기법은, 동일한 클래스를 가지는 두 개의 무작위 데이터를 선별하고, 정해진 가중치 값에 따라 두 데이터를 혼합(MixUp)하여 증강하였습니다. 데이터를 증강한 후에는 기존 데이터와 합치고 AI 모델 학습을 진행하였습니다. 기존 학습데이터는 총 2,750개며 일반 파일은 2,095개, 악성 데이터는 655개로 구성했고 그중 70%인 1,924개를 학습 데이터로, 나머지 826개는 검증 데이터로 사용했습니다. 실험은 데이터 증강에 따른 모델 성능을 비교하기 위해 증강을 진행하지 않은 상태에서 학습모델과(base line) 증강을 1회부터 20회까지 진행한 증강 데이터 모델을 비교하였고 분류에 대한 정확도와 오차값을 비교하였습니다.

그림 9. 증강 횟수에 따른 모델의 성능 변화[20]
두 가지 증강 기법에 대해 각기 다른 파라미터를 설정하여 총 4번의 증강을 수행하였습니다. 그림 9를 보면 2가지 종류의 그림이 있는데 왼쪽 그림은 정확도에 대한 변화를 우측 그림은 정답과의 차이에 대한 값이며 x축은 증강의 횟수를 나타냈습니다. 그리고 5가지 색깔의 라인 그래프가 존재하는데, baseline, nd_std, mixup이며 baseline은 증강이 이루어지지 않은, 즉 원본 데이터만 사용하여 모델링한 결과입니다. nd_std와 같은 경우는 노이즈를 추가하여 만든 데이터인데 세부 조정값으로는 표준편차의 1/10혹은 1/50로 조정하였습니다. mixup은 혼합데이터로 뒤에 쓰여 있는 숫자는 두 데이터 중 첫 번째 데이터의 가중치를 표시하였습니다. mixup_0.5는 두 데이터를 반, 반씩 혼합한다는 의미이고 0.9의 경우는 하나의 기본 데이터의 가중치는 0.9 혼합시킬 다른 데이터는 0.1로 혼합한 데이터입니다. 모든 데이터 증강은 baseline 모델보다 좋은 성능을 보였습니다. 그러나 증강을 4회 혹은 5회까지는 증강할수록 정확도와 오차값의 성능이 급격하게 좋아지는 모습을 볼 수 있었지만, 그 이후에는 엄청난 차이를 보이지 않는 점을 볼 수 있었습니다. 데이터를 증강하면 비교적 적은 데이터의 양으로 보다 더 효과적인 모델을 만들 수 있는 것을 확인할 수 있습니다.
끝맺음
본 포스팅에서는 부족한 학습데이터로 인해 발생하는 문제를 해결하기 위한 데이터 증강 기법들을 살펴보고, 그 효과를 노이즈 증강 기법과 혼합형 증강 기법을 활용하여 실제 학습 데이터가 부족한 HWP 악성코드 탐지에 적용하여 탐지 성능 향상으로 증명하였습니다. 실제로 데이터를 증강하지 않았을 경우 91% 정도에서 증강의 횟수가 4~5회차까지 증가할수록 모델의 성능이 향상된 것을 확인 할 수 있었습니다. 그러나 4~5회 이상 데이터를 증강할 때는 더 이상 향상되지 않는 문제점을 확인할 수 있었는데, 향후 연구에서는 4~5회 이상, 혹은 임계점 이상에서 모델 성능의 향상이 되지 않는 명확한 이유와 문제 해결을 위한 연구를 진행하고 또한 증강 데이터의 신뢰도 측정에 관한 연구가 필요해 보입니다. 추후 본 포스팅에서 더욱 발전적으로 해결해야 하거나, 아직 연구해야 할 부분에 관한 연구를 마치고 찾아뵙겠습니다.
Reference
1. https://venturebeat.com/datadecisionmakers/dangerous-malware-is-up-86-heres-how-ai-can-help/
2. https://csrc.kaist.ac.kr/blog/2022/10/17/pdf-악성코드의-효과적인-탐지-방법론/
3. Cremer, Frank, et al. “Cyber risk and cybersecurity: a systematic review of data.” (2022).
4. Biener, C., M. Eling, and J.H. Wirfs. 2015. Insurability of cyber risk: An empirical analysis.The Geneva Papers on Risk and Insurance—Issues and Practice 40 (1): 131–158. https://doi.org/10.1057/gpp.2014.19.
5. Eling, M., and W. Schnell. 2016. What do we know about cyber risk and cyber risk insurance? Journal of Risk Finance 17 (5): 474–491. https:// doi. org/ 10. 1108/ jrf- 09- 2016- 0122.
6: Jung, B., Kwon, J., Min, D., & Lee, S. (2022). Abnormal Data Augmentation Method Using Perturbation Based on Hypersphere for Semi-Supervised Anomaly Detection. Journal of the Korea Institute of Information Security & Cryptology, 32(4), 647–660.
7: https://yonsodev.tistory.com/34
8: https://velog.io/@cha-suyeon/DL-데이터-증강Data-augmentation
9. H. Cho and J. Moon, “A layered-wise data augmenting algorithm for small sampling data,” Journal of Internet Computing and Services, vol. 20, no. 6, pp. 65–72, Dec. 2019.
10. 조희찬, and 문종섭. “적은 양의 데이터에 적용 가능한 계층별 데이터 증강 알고리즘.” 인터넷정보학회논문지 20.6 (2019): 65-72.
11. ZHANG, J., QIN, Z., YIN, H., OU, L., AND HU, Y. Irmd: Malware variant detection using opcode image recognition. In 2016 IEEE 22nd International Conference on Parallel and Distributed Systems (ICPADS) (Dec 2016), pp. 1175–1180.
12. YUE, S. Imbalanced malware images classification: a cnn based approach. arXiv preprint arXiv:1708.08042 (2017).
13. CUI, Z., XUE, F., CAI, X., CAO, Y., WANG, G., AND CHEN, J. Detection of malicious code variants based on deep learning. IEEE Transactions on Industrial Informatics 14, 7 (July 2018), 3187–3196.
14. Catak, Ferhat Ozgur, et al. “Data augmentation based malware detection using convolutional neural networks.” PeerJ Computer Science 7 (2021): e346.
15: Akkaya, Y., Simsek, M., Kantarci, B., & Khan, S. (2022). On cropped versus uncropped training sets in tabular structure detection. Neurocomputing, 513, 114-126.
16. Holmstrom, Lasse, and Petri Koistinen. “Using additive noise in back-propagation training.” IEEE transactions on neural networks 3.1 (1992): 24-38.
17. IDeVries, Terrance, and Graham W. Taylor. “Improved regularization of convolutional neural networks with cutout.” arXiv preprint arXiv:1708.04552 (2017).
18: https://process-mining.tistory.com/169
19: Bowles, Christopher, et al. “Gan augmentation: Augmenting training data using generative adversarial networks.” arXiv preprint arXiv:1810.10863 (2018).
20: 손진혁, 고기혁, 조호묵. HWP 악성코드의 효율적 탐지를 위한 학습데이터 증강 방법, 한국정보과학회, 2022, to appear

손진혁 연구원은 컴퓨터공학과를 학부, 석사과정을 졸업했다. 현재 카이스트 사이버보안연구센터 AI보안 팀원으로 XAI를 활용한 인공지능의 보안 연구를 진행하고 있다.