인터넷을 통해 유통되는 불법 소프트웨어를 효율적으로 필터링하기 위해, 소프트웨어 분류(Software Classification) 기법이 도입되었다. 소프트웨어 분류는 새로운 소프트웨어를 이미 알려진 카테고리로 분류하는 기법이다. 소프트웨어 분류는 특징을 알 수 없는 불법 소프트웨어를 탐지하거나 분석하는데 유용한 기법하다. 소프트웨어 필터링 시스템은 의심스러운 소프트웨어를 다른 정상 소프트웨어와 비교하여, 불법 소프트웨어를 탐지?차단한다. 이때, 소프트웨어 분류 기법을 사용하여 기존 정상 소프트웨어를 서로 유사한 카테고리로 미리 분류한 후 필터링을 진행하면, 전반적으로 비교 횟수를 줄일 수 있다. 본 논문에서는 MS 윈도우 실행파일을 분류하기 위해, API 호출 빈도를 이용한 분류 기법과 문자열 정보를 이용한 분류 기법을 제안한다. API 호출 빈도를 이용한 소프트웨어 분류 기법은 추출된 API 호출 빈도 정보를 이용하고, 랜덤 포레스트 기계학습 알고리즘을 사용하여 의심스러운 프로그램을 하나의 카테고리로 분류한다. 본 논문에서 랜덤 포레스트 알고리즘을 사용한 이유는, 그 알고리즘이 분산된, 고차원 입력 데이터를 분류하는데 좋은 성능을 보이기 때문이다. 제안 기법을 검증하기 위해, 프로그램 다운로드 사이트들에서 범용적으로 많이 사용되는 9개의 카테고리를 사용하였고, 카테고리 별 55개씩 총 495개 프로그램(실행파일)을 사용하였다. 495개 프로그램을 대상으로 WEKA 기계학습 프로그램을 사용하고, 10번의 교차 검증을 수행하였다. 랜덤 포레스트를 이용한 API 분류 실험에서는 평균 97.2%(480개,97%/482개,97.4%)의 정확도를 보였다. 문자열(단어) 정보를 이용한 기법은 TF-IDF(Term Frequency - Inverse Document Frequency)를 변형한 LDF-IDF-ICF(Local Document Frequency - Inverse Document Frequency - Inverse Category Frequency) 기법을 사용하여 분류한다. 이 기법은 MS 실행파일(.exe 확장자)의 .text, .data, .rdata, .rsrc 섹션에서 문자열을 추출하고, 카테고리 별 각 문자열에 대한 LDF-IDF-ICF 점수표를 작성한다. 의미 있는 문자열 50개 이상 포함하고 있는 프로그램을 대상으로, 문자열 점수표를 사용하여 카테고리 별 점수를 측정한다. 최종적으로, 가장 높은 점수의 카테고리로 분류한다. 만약, 최고점 카테고리가 2개 이상일 경우 분류하지 않는다. 제안 기법의 효과를 검증하기 위해, 첫 번째 기법에서 사용한 495개의 프로그램을 대상으로 실험을 수행한다. 실험 결과, 495개의 프로그램들에서 평균 86.5%(413개,83.4%/443개,89.5%)가 50개 이상의 유용한 문자열을 포함하고 있었고, 495개 프로그램들을 대상으로 평균 74.8%(361개,72.9%/380개,76.8%)가 정확하게 분류됨을 보였다. 결론적으로, MS 윈도우 실행파일을 대상으로 분류하는데 있어, API 호출 빈도를 이용한 기법이 문자열 정보를 이용한 기법보다 더 좋은 성능을 나타낸다.
In order to efficiently detect and filter illegal software distributed over the Internet, a classification technique of software applications can be used. Software classification is a technique which enables assigning new software to known categories of software applications. Software classification is useful for detection and analysis of illegal software of which characteristics are not known. For the software filtering systems which detect and block an illegal program by comparing a suspicious program with all the others in app stores, therefore, software classification can reduce the number of comparisons. In this thesis, we propose two software classification techniques that effectively categorizes Microsoft Windows executable files using frequency information of application programming interfaces (APIs) and strings respectively. The first approach of the proposed techniques uses frequency information of API calls and employs random forests machine learning algorithm for classifying a suspicious Windows executable into one of several categories. Random forest models are used because they tend to perform well with discrete and high-dimensional input data. To demonstrate the feasibility of the approach, the experiments are carried out using nine categories classified by software download sites, 55 programs per each category, and ten-fold cross validation in the WEKA platform. In the experiments for random forest classification, the correct classification rate is 97.2%(480,97%/482,97.4%) on average. The second approach of the proposed techniques uses frequency information of strings (words) and employs a variant of Term Frequency ? Inverse Document Frequency (TF-IDF) algorithm. This approach extracts strings from the .text, .data, .rdata, and .rsrc sections of each Windows executable, and then computes and maintains a score table of the strings by combining Local Document Frequency (LDF), Inverse Document Frequency (IDF), and Inverse Category Frequency (ICF). For a suspicious program with more than 50 useful strings, we calculate scores of the strings in the suspicious program based on the score table of strings of each category, sums up the scores, and obtains a total score per each category. Finally, the suspicious program is classified into a specific category which represents the highest total score. For verifying the effectiveness of the second approach, the experiments are performed with the same set of the programs used in the first approach. The experimental results show that about 86.5%(413,83.4%/443,89.5%) of the 495 programs contains more than 50 useful strings and about 74.8%(361,72.9%/380,76.8%) of the 495 programs are correctly classified. And to conclude, the first approach shows better performance than the second one in terms of feature extraction and correct classification rate.
목차
Ⅰ. 서 론1.1 소프트웨어 중심 사회로 변화1.2 소프트웨어 불법 복제 증가1.3 소프트웨어 필터링 필요성1.4 연구 목적 및 범위1.5 논문의 구성Ⅱ. 관련연구2.1 소프트웨어 특징정보2.1.1 명령어 기반 특징정보2.1.2 API 기반 특징정보2.2 소프트웨어 및 악성코드 분류2.2.1 API 기계학습 기반 및 문자열 TF-IDF 기반 소프트웨어 분류2.2.2 사용한 프로그램 수 점수 기반 애플리케이션 분류2.2.3 문자열 및 API 특징정보 기반 악성코드 분류2.3 기계학습(Machine Learning)2.3.1 랜덤 포레스트(Random Forest)2.3.2 서포트 벡터 머신(SVM; Sopport Vector Machine)2.4 TF-IDFⅢ. 문자열 및 API 정보를 활용한 MS 윈도우 실행파일 분류3.1 소프트웨어 특징정보 선정3.1.1 API 특징정보3.1.2 문자열 특징정보3.2 API 및 문자열 정보를 활용한 MS 윈도우 실행파일 분류3.2.1 실행파일 수집 및 비교대상 실행파일3.2.2 패킹(실행 압축) 유/무 확인3.2.3 특징정보 추출 및 정제3.2.3.1 API 특징정보 추출3.2.3.2 문자열 특징정보 추출3.2.3.3 문자열 특징정보 정제3.2.4 윈도우 실행파일 분류를 위한 데이터/자료구조 생성3.2.4.1 API 기반 분류를 위한 기계학습을 위한 데이터 생성3.2.4.1 문자열 기반 분류를 위한 LDF-IDF-ICF 점수표 생성3.2.5 윈도우 실행파일 분류 기법3.2.5.1 API 정보와 기계학습 기반 분류 기법3.2.5.1 문자열 정보와 점수표 기반의 분류 기법Ⅳ. 실험 및 평가4.1 실험용 프로그램 수집4.2 랜덤 포레스트 기계학습을 사용한 API 분류4.2.1 API 정보 기반 제안 기법 분류율4.3 LDF-IDF-ICF 점수표를 사용한 문자열 분류4.3.1 문자열 정보 기반 제안 기법 추출율 및 분류율4.3.2 문자열 정보 기반 제안 기법 분류율4.4 제안 기법 성능평가4.5 API 특징정보 기반 새로운 프로그램 분류 실험Ⅴ. 제안 기법과 기존 기법 비교 분석5.1 API 기반 기계학습 방식과의 비교5.2 API 기반 소프트웨어 몽타주 방식과의 비교5.3 문자열 정보 기반 TF-IDF 변형 방식과의 비교5.4 비교 분석 정리Ⅵ. 결 론참고문헌