[논문읽기] URL 주요특징을 고려한 악성URL 머신러닝 탐지모델 개발

박소정·2023년 6월 8일
0

문서읽기

목록 보기
8/9
post-thumbnail

URL 주요특징을 고려한 악성URL 머신러닝 탐지모델 개발

1. 서론

코로나 19를 상황을 이용한 악성, 피싱 URL 생성이 급증되었고, 이에 따라 악성 URL을 신속하게 탐지하고 대응 할 필요가 증가하였다.

위의 문제를 해결하기 위해 인공지능을 보안 분야와 접목하려는 기업이 많아졌다. 이처럼 인공지능 기술을 접목하여 악성 URL을 탐지할 수 있는 모델 개발이 필요하다. 본 논문에서는 악성 URL을 탐지하고 예측할 수 있도록 6종의 주요한 특징을 상세하게 제시하고, 4개의 머신러닝 알고리즘 적용을 통해 정확도와 성능을 높인 악성 URL 탐지 모델을 제안하고자 한다.


2. 관련연구

머신러닝과 딥러닝 기반의 악성 URL 탐지모델과 관련된 연구는 대부분은 검색량, 어휘적 기반, 길이, 개수와 같은 단순한 특징을 기반으로 알고리즘을 학습시켜 모델을 개발하였다.


3. 주요특징 기반 악성 URL 모델 제안

관련 연구에서 제안된 특징으로는 URL의 길이, 문자와 숫자, 특수문자 개수, 문자열 포함 여부로 단순하게 구성되었기 때문에, 악성으로 판별할 근거로 부족하다고 판단하였다.

본 논문에서는 선행연구에서 제시된 특징들 이외에도 URL Days, URL Words, URL Abonormal의 특징들을 제시하였다. 또한 정확도 및 성능 향상 검즈을 위해 4개의 머신러닝 알고리즘 적용 이후 모델의 성능을 측정하기 위해 정확도, 재현율, 정밀도, F1-Score 지표를 이용한 검증방식을 제안하였다.

3.2 데이터 전처리

머신러닝 알고리즘을 적용하기 전 데이터 세트를 생성하기 위해 전처리 및 주요특징 도출이 이루어져야 한다. 전처리로는 결측치, 틀린값, 이상치 데이터를 파악하여 수정 및 삭제를 진행하고, 주요 특징으로는 URL 구조 및 데이터 분석으로 데이터 세트를 생성했다.

주요 특징을 도출하기 위해 사전에 URL 구조를 파악하여야 한다. 데이터세트를 생성하기 위해 URL을 Protocol, Domain, Port, Path, Parameters, Fragment로 분할하여 항목을 분석했다.

일수기반 특징 추출: Python Whois 모듈을 통해 도메인의 생성일자, 갱신일자, 만료일자를 추출

  • 현재일 기준으로 기간이 어느정도 지났고 남았는지
  • 생성또는 갱신일자가 최신일 경우 악의적으로 사용할 목적으로 생성되었을 가능성이 높음
  • 만료일자는 한시적으로 URL을 사용하기 때문에 서비스 기간이 대부분 짧은 것으로 분석

단어기반 특징 추출: Netname을 추출하기 위해 총 세단계의 과정을 진행했다.

1단계: 악성 도메인에서 Python dan.resolver 모듈을 이용해 IP를 획득한다.
2단계: IP Whois 모듈을 통해 Netname을 추출하낟.
3단계: Netname 목록을 그룹화하여 비교 대상 항목 지정한다.
-> 악성 도메인을 통해 추출된 Netname 분석 시 공격자가 도메인을 등록할 때 동일한 Netname을 사용하는 것을 알 수 있었다.

  • IP Whois 모듈을 이요해 ASN도 추가로 추출하였는데, 이는 ASN도 Netname과 마찬가지로 IP 서브넷을 식별하기 위해 고유하게 부여된 번호라 조직 단위로 사용하여 악성으로 식별이 가능하기 때문.

비정상적인 특징 추출 : DNS의 SOA 레코드 질의를 통해 DNS TTL 정보를 추출하였다.

  • 정상 URL은 DDNS 사용 등으로 인해 TTL 주기가 비교적 짧다.
  • 악성 URL의 경우는 DNS 질의가 되지 않거나 TTL 주기가 대부분 86400으로 설정된 것으로 분석하였다.
  • DNS SOA 레코드 질의 데이터 중 Name Server도 주요 특징으로 포함하였다.
  • 정상 도메인에 대해 DNS 질의시 Name Server 명칭에 도메인이 포함되어 구성되어 있지만, 악성 도메인의 경우 Name Server가 도메인 명칭과 상이하였다.

DNS '권한 시작'(SOA) 레코드는 관리자의 이메일 주소, 도메인이 마지막으로 업데이트된 시간, 새로 고침 사이에 서버가 대기해야 하는 시간 등 도메인 또는 영역에 대한 중요한 정보를 저장합니다. 모든 DNS 영역에는 IETF 표준을 준수하기 위해 SOA 레코드가 필요합니다. 출처: https://www.cloudflare.com/ko-kr/learning/dns/dns-records/dns-soa-record/

길이기반 특징 추출: Domain, Path, Parameter, TLD의 문자열 길이로 추출하였다.

  • 악성 URL은 대부분 길이가 길어, 구조별 문자열 길이를 측정하였다. (Fig.8)

개수기반 특징 추출: URL 내 포함되는 특수문자 18종과 문자, 숫자로 추출하였다. (Fig.9)

  • count 함수를 이용해 특수문자 18종 중 몇 개가 존재하는지 개수로 추출하였다.
  • '.' 은 악성 URL을 접근시키기 위한 서브도메인으로 정상 URL를 이용한다.
  • SQL 인젝션 취약점 공격 시 '=', '*', ',' 등 다양한 특수문자가 사용된다.
  • 특수문자를 이처럼 과도하게 사용할 경우 악성으로 판단한다.

존재여부기반 특징 추출: HTTPS 적용 여부로 판별하였다. (Fig.10)

  • 악성 URL은 비교적 HTTPS를 거의 사용하지 않는다.
  • 이 외에도 URL 내 IP, E-mail, 파익 확장자 15종의 존재 여부 체크
  • IP, E-mail은 피싱 URL로 악용된 사례가 다수이고, 파일 확장잦의 경우는 웹쉘 또는 웹해킹 취약점으로 악용되기 떄문이다.

3.3 머신러닝 모델링

URL 주요특징 데이터를 효과적으로 이용하기 위해 트리 기반 알고리즘을 이용하였다.
트리기반 알고리즘은 분기별로 주요특징에 대한 조건식을 거쳐 악성과 정상을 구분할 수 있는 최적의 기준을 찾을 수 있기에 사용하였다.
머신 러닝 알고리즘은 Decision Tree, Random Forest, Extra Trees, Gradient Boosting을 선정하였다.

3.4 모델 성능 검증

모델 성능을 측정하기 위해 Acuuracy, Recall, Precision, F1-Score 지표를 이용하였다.

Accuracy: 실제 데이터에서 예측 데이터가 얼마나 같을지를 판단하는 지표
Precison: 예측 값이 Positive인 대상 중 예측과 실제값이 Positive로 일치한 데이터의 비율
Recall: 실제값이 Positive인 대상 중에 예측과 실제값이 Positive로 일치한 데이터의 비율
F1-Score: 정밀도와 재현율을 결합한 지표


4. 실험 결과 및 분석

4.1 실험 데이터 세트

  • 수집된 정상과 악성 URL 비중을 1:1 비율로 측정했다.

4.2 성능 측정 실험

  • 생성된 데이터 세트를 8:2 비율로 각각 학습세트와 테스트 세트로 분류하였다.
  • Random_state 값: 2
  • 4개의 머신러닝 알고리즘을 적용시켜 테스트 세트로 정확도를 측정하였다.
  • Precision, Recall, Accuracy, F1-Score 모두 95%이상 수치로 측정되었다.

5. 결론

URL의 주요 특징을 추출하여 악성으로 판단될 수 있는 특징을 통해, 기존 악성 URL 탐지 모델과 비교하여 정확도를 향상시킨 결과를 보였다.

모델에서 학습데이터에 중점을 두어 주요 특징을 구성만 하더라도 기존모델보다 뛰어난 성능을 보여줌을 증명하였다.


+우리 프로젝트에서는 악성 코드를 URL에 직접 삽입하는 방식이라, 일수 기반 특징 추출은 필요하지 않겠지만, 해당 내용이 흥미로웠다. 일수가 악성/정상을 파악할 수 있는 지표가 된다는 점을 새로 알았다.

길이기반 특징 추출, 개수기반 특징 추출, 존재여부기반 특징 추출은 우리 프로젝트 에서도 특징 추출 중 하나로 사용하기 좋아 보인다.

악성 사례: IP, Email 포함한 피싱 URl, SQL인젝션, 파파일 확장자 이용한 웹쉘 또는 웹해킹 취약점

0개의 댓글