1. 서론
- 4차 산업혁명 발전에 따라 악성코드 피해 심각해질 것으로 예측
악성코드 분류 기술
- 실행기반 동적분석 ( 분석환경 회피 기술, 은닉화, 파일리스 등의 공격 방법으로 분석에 한계 존재)
- 코드기반 정적분석 ( 코드난독화 등의 기술에 따라 분석에 한계 존재)
악성코드와 정상 파일을 분류하기 위해 머신러닝에서 사용할 수 있는 특성인자 추출 방법 제안
- API (Application Programming Interface) 활용
-> 바이너리에 포함된 API를 추출하여 aPI의 호출 빈도, 호출시간 등의 특성에 따라 정상과 악성 바이너리 학습,
코드 엔트로피의 특성을 병합하여 다양한 기계학습 알고리즘을 적용하는 방법
2. 관련 연구
2.1. 서명 탐지
- 전통적으로 악성코드의 특징들을 모아 저장 후 의심스러운 파일과 비교하여 탐지하는 방법
- 탐지 속도가 매우 빠르고, 이미 알려진 악성코드에 대해 탐지율이 매우 높은 장점 존재
- 기존 악성코드의 변종 또는 새로운 악성코드 탐지에 한계점 존재
2.2 정적분석
- 프로그램을 실행시키지 않고 분석하는 방법
- 실행파일을 소스코드로 변환해 주는 디컴파일러를 사용하여 바이너리를 소스코드와 유사하게 변환하여 분석
- 기존의 소스코드와 비슷하게 보이기에 세세한 분석이 가능하다는 장점
- Nop 삽입, 패킹, 난독화 등의 기술이 적용되면 분석에 한계 존재
2.3 동적분석
- 프로그램을 실행시켜 프로그램의 행위를 확인하는 방법
- API, 네트워크, 프로세스, 자원 접근 등의 행위를 확인하고, 이상행위를 찾아내는 분석 방법
- 세세한 코드 분석은 어렵지만 정적분석을 어렵게 하는 요소인 nop 삽입, 패킹, 난독화 등의 기술들을 우회하여 분석 가능, 빠르게 분석 가능
- 일반적으로 특성인자 추출하기 위해 샌드박스 사용
2.4 Machine Learning
알고리즘 종류 - K-NN, Decision Tree, Support Vector Machine
- K-NN : 거리 기반 분류 모델, 데이터 거리에 대한 측정을 유클리드 거리, 맨해튼 거리 등을 사용하여 가장 가까운 속성에 따라 분류하는 알고리즘
- Decision Tree: 일련의 분류 규칙을 통해 데이터를 분류, 회귀하는 모델
- SVM(Support Vector Machine): 지도학습의 일종으로 분류나 회귀 분석에 사용 가능, 특히 분류 쪽의 성능이 뛰어남. 또한 기본적으로 선형 분류 알고리즘임 그러나 본 연구에서는 선형 분류 불가능해서 비선형 커널 함수 RBF(Radial Basis Function)를 사용하여 비선형 데이터 분류
RBF: kernel trick 사용하여 벡터 내적 연산 대체
3. API의 호출 구간 특성 기반 악성코드 탐지 기술
3.1 Feature Selection Method using API Call Time Section
호출하는 API 정보 -> 동적분석으로 뽑아야 함
Cuckoo Sandbox 이용하여 Feature 정보 획득
PE파일을 Cuckoo Sandbox에 전달 -> Cuckoo Sandbox가 분석 후 분석결과 파일이 JSON 형태의 파일로 생성
-> 생성된 JSON파일로부터 프로그램 실행 시간 정보, API 호출 정보, Entropy 정보를 Python으로 파싱
-> 프로그램 실행시간 정보를 활용하여 5구간으로 나누어 각 구간에 대해 API 호출 계수함.
이를 첫 번째 특성인자로 사용
두 번째 특성인자로는 Entropy 사용
Section 별 Entropy 값 중 가장 높은 값 사용
마지막으로 전체 호출 API Call 정보 활용하여 General API, Native API 호출 비율 계산하여 각 구간별 10개씩 총 API Feature 50개, API Feature에 대한 점수, Entropy, API Ratio 총 53개의 특성을 사용해 SVM 학습에 사용함.
3.2 특성인자 선택
[API]
- Application Programming Interface
- 응용 프로그램에서 사용할 수 있도록 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
- 각 구간별로 정상파일과 악성파일이 호출하는 API 차이를 확인 가능
[Entropy]
- 정보의 무질서도를 의미
- 악성 파일의 경우 정상 파일에 비해 높은 확률로 패킹 또는 실행 압축, 난독화가 되어 있어 높은 Entropy의 값을 가지게 됨
- 정상 파일도 보안을 위해서 패킹, 실행압축과 같은 기법을 사용하는 경우가 있어서 절대적인 특성은 아니지만 부가적인 특성으로 의미가 있음
- x축: Entropy 값
- y축: 파일의 개수
- 악성 파일의 경우 7.0 이상에 50% 이상 분포
[API Ratio]
- 각 파일마다 General API와 Native API의 비율을 계산 후 그 비율의 차이를 특성으로 사용
4. 실험 및 결과분석
실험 방법)
- PE File을 Cuckoo Sandbox를 통해 생성된 JSON 파일 중 악성파일 6,000개, 정상파일 3,000개 선택 후 특성 선택하여
API의 경우 각 구간별로 순위에 있는 API가 호출되는지 확인하고 호출될 경우 순위에 따라 1위는 1.5에서 10위 0.6까지 총 5구간의 합을 사용함.
그러나, Cuckoo Sandbox가 가상환경이라 Anti VM기술이 적용되어 있거나 aPI 호출 자체를 하지 않아서 API 호출 정보가 없는 경우도 존재함. 이런 경우 정상 파일은 정상 파일 점수 평균으로 대치, 악성 파일의 경우 악성 파일 평균으로 대치.
Entropy는 자동을 계산한 Entropy 수치 자체를 그대로 사용
SVM 파라미터의 경우 gamma와 c가 존재
- gamma: 결정 경계를 얼마나 유연하게 설정할 것인지를 결정하는 파라미터
이 값을 너무 높이면 학습 데이터에 의존하게 되기에 오버 피팅 발생, 너무 낮추면 언더 피팅 발생 -> 적절한 값 설정 필요
- c: 이상치에 대한 마진값을 설정하는 파라미터
이 값을 너무 높이면 마진 오류는 적어지나 도로의 폭도 같이 좁아지고 낮으면 마진 오류는 크게 나나 도로의 폭은 넓어짐
이 두 파라미터의 최적값을 찾아서 gamma 2.25, c 1의 값을 사용함.
실험 결과 및 분석)
- 9,000개 데이터 중 80% 데이터를 모델을 학습시키는 Train에 사용, 남은 20%를 모델을 평가하는 Test에 사용함
각 특징을 조합하여 특징별 민감도, 재현율, 정확도 뽑음.
- 정확도 99.5%와 특징별 기여도가 골고루 분포함 -> 제시한 특징들이 악성파일, 정상파일 분류하는 데 유의미하다.
4. 결론
- API의 특성을 특성인자로 사용하여 SVM을 이용하여 학습시키고 분류한 결과 99.5%의 유의미한 정확도를 확인
- 더욱 다양한 머신러닝 알고리즘을 이용하고 논문에서 제안한 인자와 기존 연구된 특성인자를 혼합하여 정확도 높이는 연구가 필요
논문 선정 이유: 방학 때 하던 프로젝트도 API 호출 패턴 기반으로 악성코드를 탐지하는거였어서 비슷한 주제같아 흥미로워 선정했다.
느낀 점: 프로젝트 전에는 전혀 이해하지 못했던 내용인데 이번에 논문을 읽다보니 이해가 돼서 방학동안 공부했던 것이 결코 헛되지 않았음을 느꼈다.
'논문 분석' 카테고리의 다른 글
Testing IoT security: The case study of an ip camera (0) | 2024.11.26 |
---|---|
갤럭시 워치를 중심으로 본 스마트워치 활용 기술유출의 위험성 및 대응방안에 대한 연구 (0) | 2024.10.30 |
강화된 안전쿠키를 사용한 웹 응용의 보안에 관한 연구 (0) | 2024.05.29 |
IoT 환경에서의 네트워크 보안 프로토콜 성능 분석 (0) | 2024.05.15 |
스테가노그래피 소프트웨어 분석 연구 - 성능 비교 중심으로 (1) | 2024.05.01 |