$\require{mediawiki-texvc}$

연합인증

연합인증 가입 기관의 연구자들은 소속기관의 인증정보(ID와 암호)를 이용해 다른 대학, 연구기관, 서비스 공급자의 다양한 온라인 자원과 연구 데이터를 이용할 수 있습니다.

이는 여행자가 자국에서 발행 받은 여권으로 세계 각국을 자유롭게 여행할 수 있는 것과 같습니다.

연합인증으로 이용이 가능한 서비스는 NTIS, DataON, Edison, Kafe, Webinar 등이 있습니다.

한번의 인증절차만으로 연합인증 가입 서비스에 추가 로그인 없이 이용이 가능합니다.

다만, 연합인증을 위해서는 최초 1회만 인증 절차가 필요합니다. (회원이 아닐 경우 회원 가입이 필요합니다.)

연합인증 절차는 다음과 같습니다.

최초이용시에는
ScienceON에 로그인 → 연합인증 서비스 접속 → 로그인 (본인 확인 또는 회원가입) → 서비스 이용

그 이후에는
ScienceON 로그인 → 연합인증 서비스 접속 → 서비스 이용

연합인증을 활용하시면 KISTI가 제공하는 다양한 서비스를 편리하게 이용하실 수 있습니다.

악성코드 패밀리 분류를 위한 API 특징 기반 앙상블 모델 학습
API Feature Based Ensemble Model for Malware Family Classification 원문보기

情報保護學會論文誌 = Journal of the Korea Institute of Information Security and Cryptology, v.29 no.3, 2019년, pp.531 - 539  

이현종 (단국대학교) ,  어성율 (단국대학교) ,  황두성 (단국대학교)

초록
AI-Helper 아이콘AI-Helper

본 논문에서는 악성코드 패밀리 분류를 위한 훈련 데이터의 특징을 제안하고, 앙상블 모델을 이용한 다중 분류 성능을 분석한다. 악성코드 실행 파일로부터 API와 DLL 데이터를 추출하여 훈련 데이터를 구성하며, 의사 결정 트리기반 Random Forest와 XGBoost 알고리즘으로 모델을 학습한다. 악성코드에서 빈번히 사용되는 API와 DLL 정보를 분석하며, 고차원의 훈련 데이터 특징을 저차원의 특징 표현으로 변환시켜, 악성코드 탐지와 패밀리 분류를 위한 API, API-DLL, DLL-CM 특징을 제안한다. 제안된 특징 선택 방법은 데이터 차원 축소와 빠른 학습의 장점을 제공한다. 성능 비교에서 악성코드 탐지율은 Random Forest가 93.0%, 악성코드 패밀리 분류 정확도는 XGBoost가 92.0%, 그리고 정상코드를 포함하는 테스트 오탐률은 Random Forest와 XGBoost가 3.5%이다.

Abstract AI-Helper 아이콘AI-Helper

This paper proposes the training features for malware family analysis and analyzes the multi-classification performance of ensemble models. We construct training data by extracting API and DLL information from malware executables and use Random Forest and XGBoost algorithms which are based on decisi...

주제어

표/그림 (14)

AI 본문요약
AI-Helper 아이콘 AI-Helper

* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.

제안 방법

  • Konrad Rieck 외 4명은 수집한 10,072개의 악성코드를 안티 바이러스 Avira AntiVir[10]에 의해 14개 클래스로 분류하여 다중 분류 문제를 구성 했다. CWSandbox[11] 가상 환경을 구축해 수집된 데이터에 대해 동적 분석을 수행했다. 악성 프로 그램이 실행되면 API 후킹을 이용해 호출되는 API 와 입력된 파라미터를 기록했다[12].
  • 악성 프로 그램이 실행되면 API 후킹을 이용해 호출되는 API 와 입력된 파라미터를 기록했다[12]. 기록된 보고서 로부터 사용된 API와 파라미터의 빈도 값으로 특징 벡터를 구성하고 SVM(Support Vector Machine) 학습 알고리즘으로 모델을 학습시켰다. 패밀리 분류 평가에서 0.
  • 고차원의 희소 행렬 형태의 데이터 학습은 과적합(overfitting) 현상으로 인해 높은 학습 성능을 보장할 수 없다. 따라서 빈도 분석을 통해 낮은 빈도의 DLL과 API 특징을 제거하는 특징 축소 기법을 제안한다.
  • TP(True Positive)는 정상코드를 올바르게 분류한 데이터 수, FN(False Negative) 은 정상코드를 악성코드로 분류한 데이터 수, FP(False Positive)는 악성코드를 정상코드로 분류한 데이터 수, TN(True Negative)은 악성코드를 올바르게 분류한 데이터 수를 의미한다. 모델 평가의 성능 척도로서 분류 정확도 ACC(accuracy) 와 오탐률 FPR(false positive rate)을 비교한다. 분류 정확도는 전체 데이터에서 정확히 분류된 데이터의 비율을 나타내며 모델의 일반적인 분류 성능을 측정할 수 있다(식 1).
  • 수집된 데이터 중 PE 헤더가 없는 악성코드를 제외하고 총 9개 클래스의 다중 분류 문제를 구성했다. 바이트 기반 특징 3개, 어셈블리 기반 특징 4개, PE 기반 특징 4개를 추출해 종류별 특징 벡터를 구성했다. 큰 차원의 특징을 축소시키기 위해 Random Forest[15]로 특징 벡터를 축소시켰다.
  • 본 논문에서는 악성코드 패밀리와 정상코드로 다중 분류 학습 문제를 구성하고 3가지의 API 관련 특징을 추출해 악성코드 탐지 모델을 학습한다. 2장 에서는 악성코드 탐지 모델 관련 연구를 소개한다.
  • 본 논문에서는 악성코드와 정상코드 분석을 통해서 빈번히 사용되는 DLL과 API 목록을 선정해 API, API-DLL, DLL-CM 특징의 차원을 축소했다. 준비된 특징 벡터로 의사 결정 트리 모델과 앙상블 모델을 학습시키고 일반화 성능을 비교했다.
  • 큰 차원의 특징을 축소시키기 위해 Random Forest[15]로 특징 벡터를 축소시켰다. 분류 성능 비교를 위해 Bayesian, Random Forest, SVM, 의사 결정 트리(decision tree), k-nearest neighbor, AdaBoost를 평가했다. 실험에서 특징 추출의 효과를 입증하였으며, 특징 선택 후 분류 실험에서 Random Forest가 약 0.
  • 반면 에, 어셈블리 분석은 API의 호출 빈도를 계산해 특징 벡터를 연속형 데이터(continuous data)로 표현한다. 사용된 디스어셈블리 툴은 Radare2[20]이며, 어셈블리 코드를 분석해 API 정보를 추출하였다.
  • 사전 모델 평가로부터 학습 알고리즘의 파라미터를 결정했다. 의사 결정 트리 모델은 트리 깊이를 15로 하고 두 앙상블 모델의 트리 수는 50개, 트리의 깊이는 15, 특징 반영 비율은 50.
  • 악성코드 패밀리와 정상코드를 같이 분류하는 문제에서 모델과 특징에 따른 분류 정확도와 오탐률을 비교했다. 분류 결과에 대한 교차 행렬 분석을 통해 클래스 불균형 문제를 확인했다.
  • Mansour Ahmadi 외 3명은 Malware Challenge 데이터 셋[16]에 XGBoost[17] 탐지 모델 학습을 적용하였다. 악성코드 학습 데이터에서 정적 분석을 통해 바이트 기반 특징 5개와 디스어셈 블리 기반 특징 8개를 선택하여 13개 특징과 조합에 따른 분류 성능을 평가했다. 실험은 교차검증 (cross-validation)으로 진행되었다.
  • IDA(Interactive Disassembler) Pro[18] 도구를 이용해 준비된 데이터의 어셈블리 코드를 생성했다. 어셈블리코드에서 호출된 API를 추출했으며 분류 성능을 위해 정상과 악성 클래스에 관련된 API를 선정해 특징으로 사용했다. 선정된 API 특징의 n-gram 구조를 생성하고 파라미터 n=1,2,.
  • 의사 결정 트리(DT), XGBoost(XGB), Random forest(RF) 학습 알고리즘과 추출된 특징에 따라 분류 정확도와 학습 시간을 비교했다. Table 7은 정상과 악성을 구분하는 이진 분류 문제에 대한 정확도 성능 비교이며 Table 8은 악성코드 패밀리를 구분하는 다중 분류 문제의 정확도 성능 비교이다.
  • 정상코드와 악성코드를 분류하는 이진 분류 실험과 악성코드 패밀리를 분류하는 다중 분류 실험을 진행했다. 두 실험에서 모두 0.
  • 준비된 악성코드 데이터로부터 API, API-DLL, DLL-CM 특징을 추출했다. Table 6은 특징의 차원 비교이다.
  • 본 논문에서는 악성코드와 정상코드 분석을 통해서 빈번히 사용되는 DLL과 API 목록을 선정해 API, API-DLL, DLL-CM 특징의 차원을 축소했다. 준비된 특징 벡터로 의사 결정 트리 모델과 앙상블 모델을 학습시키고 일반화 성능을 비교했다.
  • 악성코드에선 새로운 프로세스를 생성하거나 네트워크 리소스를 사용하기 위해 윈도우에서 제공하는 DLL이 사용된다. 학습에 사용될 API를 선정하기 위해 수집된 악성코드 데이터 집합 에서 빈번히 사용되는 DLL을 분석했다. 사용된 DLL의 전체 개수는 1,276개이며 사용 빈도가 0.

대상 데이터

  • 고려된 데이터 중 44,373개의 “generic” 키워드가 포함된 Kaspersky 진단명은 여러 패밀리에 속해있는 복합성 악성코드이므로, 패밀리별 학습을 위해 학습 데이터 집합에서 제외시켰다. 10,000개의 정상코드를 포함시켜 구성된 훈련 데이터는 총 38,266개이며 Table 2와 같다.
  • 102,963개 데이터 중 Kaspersky가 정상 프로그램이라고 판단한 30,324개의 데이터는 제외시켰다. 데이터가 많이 수집된 패밀리 5개를 선정했다. 고려된 데이터 중 44,373개의 “generic” 키워드가 포함된 Kaspersky 진단명은 여러 패밀리에 속해있는 복합성 악성코드이므로, 패밀리별 학습을 위해 학습 데이터 집합에서 제외시켰다.
  • 멀웨어스닷컴[19]으로부터 102,963개 악성코드와 정상코드 데이터를 확보했다. 다중 분류 문제의 클래스를 정의하기 위해 안티 바이러스 소프트웨어 Kaspersky[14]의 분류를 사용했다.
  • 학습에 사용될 API를 선정하기 위해 수집된 악성코드 데이터 집합 에서 빈번히 사용되는 DLL을 분석했다. 사용된 DLL의 전체 개수는 1,276개이며 사용 빈도가 0.25% 이상인 DLL을 선택해 Table 4와 같이 DLL 목록을 구성했다. 목록을 구성하는 DLL에서 사용된 API 종류는 총 4,040 종류로 나타났다.
  • 영상의 행은 현재 호출된 DLL 이며, 열은 다음에 호출된 DLL을 나타낸다. 선정된 16개의 DLL을 특징 구성에 사용해 영상의 크기는 256(16x16)이다. 영상의 픽셀 값이 클수록 호출의 전후 관계의 빈도가 높다.
  • 악성코드 패밀리 분류를 위한 다중 분류 문제의 정의는 패밀리 클래스는 Kaspersky[14] 기준을 적용했다. 수집된 데이터 중 PE 헤더가 없는 악성코드를 제외하고 총 9개 클래스의 다중 분류 문제를 구성했다. 바이트 기반 특징 3개, 어셈블리 기반 특징 4개, PE 기반 특징 4개를 추출해 종류별 특징 벡터를 구성했다.
  • 예를 들면, 악성코 드에서 윈도우 프로세스를 생성하기 위해서 "CreateProcess" 같은 API 함수를 호출하거나 네트워크 소켓 통신을 하기 위해 "WSAStartup" 함수를 호출한다. 필터링 목록 구성을 위해 악성코드에서 자주 사용되는 API 목록을 분석하여 총 49,158종류의 API가 사용되었다. 전체 사용 빈도가 0.

데이터처리

  • 악성코드 패밀리와 정상코드를 같이 분류하는 문제에서 모델과 특징에 따른 분류 정확도와 오탐률을 비교했다. 분류 결과에 대한 교차 행렬 분석을 통해 클래스 불균형 문제를 확인했다. 성능을 개선시키기 위해서 패밀리 별 데이터 확보와 샘플링 과정이 필요하다.
  • 악성코드 학습 데이터에서 정적 분석을 통해 바이트 기반 특징 5개와 디스어셈 블리 기반 특징 8개를 선택하여 13개 특징과 조합에 따른 분류 성능을 평가했다. 실험은 교차검증 (cross-validation)으로 진행되었다. 대부분 선택된 훈련 특징에서 0.
  • 0%로 설정했다. 평가 방법은 5-식 교차 평가를 사용했다.

이론/모형

  • Veeramani R 외 1명은 300개의 정상 프로그램과 210개의 악성 프로그램을 수집해 분류 문제를 구성했다. IDA(Interactive Disassembler) Pro[18] 도구를 이용해 준비된 데이터의 어셈블리 코드를 생성했다. 어셈블리코드에서 호출된 API를 추출했으며 분류 성능을 위해 정상과 악성 클래스에 관련된 API를 선정해 특징으로 사용했다.
  • XGBoost는 다수의 회귀 트리로 구성된다. 기울기 하강(gradient descent) 최적화 알고리즘을 이용해 학습된다[17]. 임의 데이터를 초기화 후 이 데이터들을 특징으로 분류하는 함수를 구성시킨다.
  • 멀웨어스닷컴[19]으로부터 102,963개 악성코드와 정상코드 데이터를 확보했다. 다중 분류 문제의 클래스를 정의하기 위해 안티 바이러스 소프트웨어 Kaspersky[14]의 분류를 사용했다. 102,963개 데이터 중 Kaspersky가 정상 프로그램이라고 판단한 30,324개의 데이터는 제외시켰다.
  • Bowen Sun 외 4명은 VirusShare[13]로부터 65,536 개의 악성코드를 확보했다. 악성코드 패밀리 분류를 위한 다중 분류 문제의 정의는 패밀리 클래스는 Kaspersky[14] 기준을 적용했다. 수집된 데이터 중 PE 헤더가 없는 악성코드를 제외하고 총 9개 클래스의 다중 분류 문제를 구성했다.
  • 악성코드 학습을 위해 의사 결정 트리 알고리즘과 트리 기반 앙상블 알고리즘인 XGBoost와 Random Forest를 사용한다. 의사 결정 트리 알고 리즘은 학습 데이터로부터 클래스를 분류할 수 있는 속성을 반복적으로 찾아 최대 깊이만큼 트리를 구성한다.
  • 의사 결정 트리 알고 리즘은 학습 데이터로부터 클래스를 분류할 수 있는 속성을 반복적으로 찾아 최대 깊이만큼 트리를 구성한다. 최적의 분류를 수행할 수 있는 속성을 결정하기 위해 정보 획득(information gain) 방법인 엔트로피를 이용한다. 테스트 데이터는 구성된 트리 노드의 분류 규칙에 따라 터미널 노드로 맵핑된다.
  • 바이트 기반 특징 3개, 어셈블리 기반 특징 4개, PE 기반 특징 4개를 추출해 종류별 특징 벡터를 구성했다. 큰 차원의 특징을 축소시키기 위해 Random Forest[15]로 특징 벡터를 축소시켰다. 분류 성능 비교를 위해 Bayesian, Random Forest, SVM, 의사 결정 트리(decision tree), k-nearest neighbor, AdaBoost를 평가했다.
본문요약 정보가 도움이 되었나요?

질의응답

핵심어 질문 논문에서 추출한 답변
서명 탐지란 무엇인가? 기존 악성코드 탐지 방법은 서명 탐지(signature detection)[2], 이상 탐지(anomaly detection)[3]로 분류된다. 서명 탐지는 악성코드의 행위 규칙 또는 해쉬 값을 이용한 서명(signature)을 데이터베이스에 저장하고 비교 분석을 통해 악성코드를 탐지하는 방법이다. 기존 악성코드에서 파생된 신변종 악성코드는 해쉬 값이 달라 서명 탐지가 불가능하다[4].
악성코드 탐지 모델에 적용된 학습 과정은 무엇인가? 악성코드 탐지 모델의 학습 과정은 데이터 전처리(data preprocessing), 특징 추출(feature extraction), 모델 학습(model learning), 모델 평가(model evaluation) 단계를 적용한다(Fig 1). API 기반 악성코드 분류 모델의 학습 과정을 단계에 따라 기술한다.
이상 탐지의 한계점은 무엇인가? 이상 탐지는 정상코드의 분석을 통해 사용되는 API 규칙을 도출하고, 도출된 규칙을 만족하지 않는 경우 악성코드로 판단한다. 그러나 신종 악성코드에 대해서 사용되는 API 규칙의 범위를 정의하기 어렵고 오탐률(false positive rate)이 높다[4]. 기존 탐지 방법의 신변종 탐지와 오탐률 문제점을 극복하기 위해 기계 학습을 이용한 악성코드 탐지 기술이 활발히 연구되고 있다[5, 6, 7, 8].
질의응답 정보가 도움이 되었나요?

참고문헌 (21)

  1. Symantec, "Symantec internet security threat report," ISTR-23-2018, Symantec, 2018. 

  2. P. Vinod, R. Jaipur, V. Laxmi and M. Gaur, "Survey on malware detection methods," Proceedings of the 3rd Hacker's workshop on computer and internet security, pp. 74-79, Mar. 2009. 

  3. N. Idika, and A.P. Mathur, "A survey of malware detection techniques," Purdue University, Feb. 2007. 

  4. A. Patcha and J.M Park, "An overview of anomaly detection techniques : Existing solutions and latest technological trends," Computer networks, vol. 51, no. 12, pp. 3448-3470, Aug. 2007. 

  5. K. Rieck, T. Holz, C. Willems, P. Dussel and P. Laskov, "Learning and classification of malware behavior," Proceeding of the International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment, pp. 108-125, 2008. 

  6. B. Sun, Q. Li, Y. Quo, Q. Wen, X. Lin and W. Liu, "Malware family classification method based on static feature extraction," Proceeding of the 3rd IEEE International Conference on Computer and Communications(ICCC), pp. 507-513, Dec. 2017. 

  7. M. Ahmadi, D. Ulyanov, S. Semenov, M. Trofimov and G. Giacinto, "Novel feature extraction, selection and fusion for effective malware family classification," Proceedings of the 6th ACM conference on data and application security and privacy, pp. 183-194, Mar. 2016. 

  8. R. Veeramani, and N. Rai. "Windows API based malware detection and framework analysis," Proceeding of the International conference on networks and cyber security, Vol. 25. Jan. 2012. 

  9. M. Sikorski and A. Honig, Practical Malware Analysis: the hands-on guide to dissecting malicious software, No Starch Press, Feb. 2012. 

  10. Avira, "avira antivirus for windows" https://www.avira.com/en/free-antivirus-windows, Jan. 2019. 

  11. C. Willems, T. Holz, F. Freiling, "Toward Automated Dynamic Malware Analysis Using CWSandbox," IEEE Security and Privacy, vol. 5, no. 2, pp. 32-39, Apr. 2007. 

  12. G. Hunt, D. Brubacker, "Detours: Binary interception of Win32 functions," Proceedings of the 3rd USENIX Windows NT Symposium, pp. 135-143, Jul. 1999. 

  13. VirusShare, "virus share" https://virusshare.com/, Jan. 2019. 

  14. Kaspersky, "kaspersky lab" http://www.kaspersky.com/, Jan. 2019. 

  15. L. Breiman, "Random forests," Machine learning, vol. 45, no. 1, pp. 5-32, Oct. 2001. 

  16. R. Ronen, M. Radu, C. Feuerstein, E. Yom-Tov and M. Ahmadi, "Microsoft Malware Classification Challenge," arXiv preprint arXiv:1802.10135, Feb. 2018. 

  17. T. Chen, and C. Guestrin, "XGBoost: A scalable tree boosting system," Proceedings of the 22nd acm sigkdd international conference on knowledge discovery and data mining, pp. 785-794, Aug. 2016. 

  18. C. Eagle, The IDA pro book, 2md Ed., No Starch Press, Jul. 2011. 

  19. Malwares.com, "malware.com" https://malwares.com, Jan. 2019. 

  20. Radare2, "radare2" https://rada.re/r/, Jan. 2019. 

  21. Windows API Index, "Windows API Index" https://docs.microsoft.com/en-us/windows/desktop/apiindex/windows-api-list, Jan. 2019. 

저자의 다른 논문 :

관련 콘텐츠

오픈액세스(OA) 유형

FREE

Free Access. 출판사/학술단체 등이 허락한 무료 공개 사이트를 통해 자유로운 이용이 가능한 논문

저작권 관리 안내
섹션별 컨텐츠 바로가기

AI-Helper ※ AI-Helper는 오픈소스 모델을 사용합니다.

AI-Helper 아이콘
AI-Helper
안녕하세요, AI-Helper입니다. 좌측 "선택된 텍스트"에서 텍스트를 선택하여 요약, 번역, 용어설명을 실행하세요.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.

선택된 텍스트

맨위로