보안/악성코드

[논문]"머신러닝 기반 악성 URL 탐지 기법" 정리

haerim9.9 2025. 4. 1. 22:11

전통적인 정보보호체계 : 시그니처 패턴 기반의 알려진 악성 URL 탐지

-> 알려지지 않은 악성 URL 탐지 불가

 

악성 URL 데이터를 동적 학습해 효율적으로 악성 URL 탐지하는 기법 제안

  1. 머신러닝 기반 특징 선택 알고리즘 사용 -> 악성코드 분류
  2. 가중 유클리드 거리(Weighted Euclidean Distance, WED)를 활용 -> 사전처리 진행
  3. 난독화 요소 제거 -> 정확도 개선

악성코드 : 악의적인 목적을 위해 작성된 코드

악성코드 은닉사이트 / 악성 URL(Uniform Resource Locator) : 악성코드를 사용자의 PC 감염시킬 수 있는 사이트

-> 이러한 공격은 웹 사이트 방문, 이메일 확인 시에 발생. 악성코드 실행 후 공격.

 

악성코드 은닉 여부를 탐지하기 위한 정적 분석 기법에 관한 연구가 진행됨.  그러나 순차 알고리즘에 의존, 분산 컴퓨팅 지원X -> 막대한 런타임 오버헤드 발생. -> 비효율적, 모델의 탐지율 낮음.

*런타임 오버헤드(Runtime Overhead) : 프로그램이 실행되는 동안 발생하는 추가 비용

*오버헤드(Overhead) : 어떤 작업을 수행하는 데 추가적으로 드는 비용

 

머신러닝 기반 탐지 기법의 기여점

  • 공유 데이터를 Native API 시퀀스(Native Application Programming Interface Sequence) 길이에 따라 소형 데이터로 축소함. -> 동기화 오버헤드 줄임, 높은 병렬 처리 달성.
  • 특징 벡터 평균치에 따라 난독화 요소를 효율적으로 제거. -> 난독화 지연 문제 해결.
  • 종래 방법 대비 2.82% 향상된 89.17%의 높은 정확도 달성.

*API(Application Programming Interface) : 운영체제가 소프트웨어에게 제공하는 기능, 일반적으로 DLL이라는 확장자를 가진 파일에 함수 형태로 들어있음.

*동적 링크 라이브러리(DLL, Dynamic Link Library) : 여러 프로그램에서 동시에 사용할 수 있는 코드와 데이터를 포함하는 동적 라이브러리.

*네이티브 API(Native API) : 운영체제 커널이나 시스템 레벨에서 제공하는 API, OS에 최적화된 형태로 작성됨.

*Native API 시퀀스(Native API Sequence) : 운영체제 내부에서 네이티브 API가 호출되는 흐름.

(글에서 말하는 네이티브 시퀀스 길이 = 프로그램이 실행될 때 연속적으로 호출하는 네이티브 API의 개수)

*특징 벡터(feature vector) : 데이터의 특징을 숫자로 표현한 벡터 형태의 값. 머신러닝 모델이 데이터를 학습하고 분류할 수 있도록 입력으로 사용됨.

 


블랙리스트 기반 악성 URL 분석 엔진에 대한 선행 연구 분석

*블랙리스트 기반 방식 : 알고 있는 정보를 악성 목록에 추가하는 방식.

  • PhishNet : 피싱 방지 시스템. 악성 URL로부터 특징 추출, 블랙리스트의 항목과 비슷한 요소끼리 분류, 악성 URL 특징이 보이면 차단.
  • AutoBLG : 분석할 URL을 줄이면서 웹페이지 검색 공간을 확대하는 탐지 방법.

 

블랙리스트 기반 탐지 기법의 한계 : 미리 목록화된 정보만을 차단. -> 난독화된 악성 URL 탐지 어려움. / 신·변종 악성 URL에 대한 공격 대응 어려움. / 수동으로 업데이트해야 함. -> 탐지 기준 등으로 정확성이 달라짐.

 

이러한 문제를 해결하기 위해 등장한 것이 머신러닝 모델이다.

 

머신러닝 모델 : 악성 URL의 특징 정보 추출해 학습. 입력된 URL을 정상 또는 악성으로 예측해 분류.

  • BigSpa : 데이터 병렬 알고리즘 사용, 악성 실행 파일을 정적으로 탐지. 각 절차마다정적 분선 엔진을 통해 호출 그래프 도출. 
  • HomDroid : 정적 기반 함수 호출 그래프 추출, 그래프 간 동질성 분석. -> 은닉된 악성코드 탐지. 5개의 모델을 이용해 악성 코드의 특징 벡터 추출.

*호출 그래프 : 악성코드를 그룹화하여 정적 분석을 수행한 함수.

 

머신러닝 탐지 기법의 한계 : 함수 호출 그래프는 상황 및 흐름에 민감함. -> 통화 그래프로 인한 탐지 정확도가 열화됨. / 정적 분석 기법의 병렬화 어려움. -> 분산 컴퓨팅 불가능. / 동적 로드 및 암호화에 취약.

*통화 그래프(Call Graph) : 프로그램이 실행될 때 함수가 어떤 함수를 호출하는지를 나타내는 유향 그래프(Directed Graph)

 


Sturcture of Malicious URL Detection Framework / 출처 : 머신러닝 기반 악성 URL 탐지 기법 논문

 

프레임워크가 크게 네 개의 기능적 모듈로 구성됨. 각 모듈이 단계적으로 동작.

 

1. 계층 검출(Layer Detection) : 수집 단계. 악성 URL 유사도 기반 분류를 통해 난독화 흔적을 찾음.

최적의 Native API 시퀀스를 통해 악성코드 분류.
최적의 Native API 시퀀스 길이 찾기 : 특징 선택 알고리즘 사용. -> 14개의 특징으로 분류.

양성과 악성 데이터에서 중복되는 Native API 시퀀스 특징의 가중치 줄임. 악성 데이터에서만 발견되는 특징 가중치 탐지율 높임.
동기화 오버헤드 개선 : 공유 데이터를 Native API 시퀀스 길이에 따라 소형 데이터로 축소.

 


2. 사전처리(Preprocessing) : 탐지 단계. PE(Portable Executable) 헤더, 동적, 정적 정보를바탕으로 감지한 패턴을 통해 구문 오류 검사, 악성 여부 판단.

PE 헤더 특성 분석 기술로 사전 처리 진행.
PE 파일에 난독화가 이루어지는 시점에 생성되는 헤더 파일의 특정 값으로 정상 파일과 악성 파일 구분.

선정된 10개 특징 벡터의 각 악성과 정상 파일별 평균치 계산. 가중 유클리드 거리를 통해 악성 파일 유무 판단.

d(a,b) = a와 b 사이의 거리
CV_{F} = 임의의 프로그램 F에 대한 특징 벡터
CV_{L} = 임의의 프로그램 L에 대한 특징 벡터
ϒ = 가시화를 위한 상수
i = 특징 벡터 원소의 개수
W_{i} = i에 대한 파라미터 가중치 값
CV_{F,i} = i에 해당하는 임의의 프로그램 F의 특징 벡터 값
CV_{L,i} = i에 해당하는 임의의 프로그램 L의 특징 벡터 값

특징 벡터 평균치의 가중 유클리드 거리 / 출처 : 머신러닝 기반 악성 URL 탐지 기법 논문

위 수식을 이용해 임의의 프로그램 F와 악성/정상 프로그램의 특징 벡터 평균치 사이의 거리를 계산해 더 가까운 값 탐지.
특징 벡터 평균치에 따라 난독화 요소 효율적으로 제거. -> 난독화 지연 문제 해결, 높은 정확도로 악성 파일 탐지.



3. 난독화 제거(Remove Obfuscation) : base64 디코딩, cmdlet을 재정의. 정규식 사용, 난독화 요소 제거.

난독화 제거는 은닉된 난독화 기술과 악성 URL 및 도메인 흔적을 알아내기 위함. 공격자가 탐지 회피를 위해 사용한 전략 파악 가능.

"-enc", "-Enc", "-EncodedCommand"같은 옵션 사용. -> base64로 인코딩된 스크립트를 디코딩해서 일반 스크립트를 가져옴.
난독화된 문자열에서 보이는 공통 패턴인 난독화 기호(공백, 문자 분할 등) 찾아 제거.

base64로 인코딩X 경우. -> cmdlet 재정의. -> Invoke-Expression cmdlet을 사용해 인코딩된 스크립트 실행, 런타임에 스크립트의 디코딩된 텍스트 가져옴. 후에 난독화 기호 찾아 제거.

 

 

4. 코드 실행(Script Execution) : 실행 단계. 결과를 기반으로 스크립트를 작동.

 

 

*프레임워크(Framework) : 목적에 필요한 것을 고민할 필요 없이 이용할 수 있도록, 일괄로 가져다 쓰도록 만들어 놓은 구조화된 가이드 또는 환경.

*커맨드 렛(cmdlet) : 파워쉘의 파이프라인 의미 체계에 참여하는 명령. 파이프라인 및 처리 자동화 스크립트에서 사용됨.

*Invoke-Expression : 문자열로 된 코드나 명령어를 실행할 수 있도록 돕는 기능.

*파이프라인(Pipline) : 여러 개의 프로세스를 연결해서 순차적으로 실행하는 방식.

*정규식(정규표현식) : 문자열에서 특정한 패턴을 찾거나 변형할 때 사용하는 문법 규칙.

*가중치 : 딥러닝에서 가중치는, 각 입력 신호가 결과 출력에 미치는 중요도를 조절하는 매개변수.

*특징 선택(Feature Selection) : 모델을 구성하기 위한 특징을 선택하는 과정.

*런타임(runtime) : 프로그램이 실제로 실행되는 시간.

 


악성 URL 탐지 프레임워크 평가 방법 : 속도, 정확도

 

정확도의 평가지표

  1. 정밀도 : 측정값과 예측값 사이의 유사성에 대한 척도. 여러 번 측정 후, 측정의 재현성을 나타냄.
  2. 재현율 : 전체 항목 중 실제 올바르게 검색된 항목들의 비율.
    정밀도와 재현율은 보완적인 지표라, 극단적인 수치 조작이 가능함. -> 정밀도와 재현율을 결합한 F1 점수를 활용해 평가.
  3. AUC 점수 : ROC에 기반한 이진 분류의 성능 측정에서 중요하게 사용되는 지표. AUC 점수는 ROC 곡선의 밑면적을 구한 것, 1에 가까울수록 좋은 수치.

*ROC 곡선 : 특이성과 재현율의 상관관계를 시각화한 곡선.

 

평가 결과

1. 속도 : 수집한 샘플 데이터의 분류 처리 속도와 런타임 오버헤드로 측정.
악성 URL 탐지 기법 = 11.02초 / HomDroid = 13.38초

 

2. 정확도 - 정밀도/재현율

(TP+FP) = 예측을 양성으로 한 모든 데이터

FP = 예측과 실제 값이 양성으로 일치한 데이터의 비율

A(Accuracy) = 정밀도

 

(TP+FN) = 실제 값이 양성인 모든 데이터

TP = 예측과 실제 값이 양성으로 일치한 데이터의 비율

R(Recall rate) = 재현율

A = 정밀도R = 재현율F1 = 정밀도와 재현율의 조화평균

 

F1 : 정밀도와 재현율이 편향되지 않은 수치를 나타낼 때 높은 값을 가짐.
정밀도는 결정 임계값이 증가할수록 점점 증가, 재현율은 점차 감소. F1 점수는 정밀도와 재현율의 오차가 작을수록 증가. F1 점수의 최적 결정 임계값 = 0.4

 

*결정 임계값(Decision Threshold) : 머신러닝 모델이 예측 결과를 특정 클래스로 분류하는 기준값. (예시로 정상vs악성)

 

3. 정확도 - AUC 점수

ROC 곡선에 기반한 AUC 값은 1에 수렴할수록 좋음.

제안한 기법의 AUC 값 = 0.8917 / HomDroid AUC 값 = 0.8635

 

 

'보안 > 악성코드' 카테고리의 다른 글

[3장]동적 분석  (0) 2025.04.08
[2장]정적 분석  (0) 2025.04.01
[1장]악성코드 분석 소개  (0) 2025.03.25