1 of 20

머신러닝을 활용한

피싱 탐지 서비스

박미정 공서연 김하은 박준희

지도교수: 박승현 교수님

2 of 20

프로젝트 배경

포털이나 메신저 등을 이용해 서비스를 정교하게 사칭하여

이용자의 개인정보를 노리는 피싱 공격 재확산

23년 피싱 사이트 탐지, 차단 건수는 전년 대비

약 1.8배 증가 (4,206건-> 7,534건)

2023년 피싱 공격의 증가

‘2023년 보이스 피싱 피해 현황’ 에 따르면 이 같은 스미싱 피해를 포함하고 있는 ‘사칭형 피싱’ 피해 금액이 2022년 905억원에서

지난해 1154억원으로 증가

피싱 공격의 피해 규모

자료 : 금융감독원

자료 : 과학기술정보통신부

2023년 사이버 보안 위협 분석 맟 2024년 전망 발표

3 of 20

프로젝트 목적

사회공학적 피싱 공격이 갈수록 진화하고 있으며 유출된 개인정보를 통해 또 다른 피해 발생

최근 챗GPT를 화두로 한 생성형 인공지능 기술의 급속한 발전으로 인해 사용자가 보안에 대한 전문적 지식이 없더라도 손쉽게

악성코드 제작뿐 아니라 취약점 확인, 사회 공학적 등 다양한 사이버 공격에 악용될 수 있는 위험성 증가

프로젝트 필요성

악성 URL을 판별하는 머신러닝을 개발하여 악성 유무 탐지를 통해 웹 피싱 공격 및 취약점 탐지를 목표로 함

본 프로젝트는 기존에 존재하는 머신러닝 개발 -> 크롬 확장 프로그램으로 구현하여 사용자의 편의성 향상을 기대함

실시간으로 피싱 사이트 여부를 판별하고, 상세한 분석 결과를 제공하여 빠르고 정확한 대응을 지원함

프로젝트 목적 & 기대효과

4 of 20

데이터 셋

Kaggle data를 데이터 셋으로 사용

구성 : 정상 URL 4,898 악성 URL 6,157

데이터 셋

5 of 20

데이터 셋

30개의 피쳐를 URL, Content, Domain 기반으로 분류

피쳐 분류

중요도가 낮은 피쳐들이나 상관관계가 높은 피쳐 제거

중요도 분석 : 중요하지 않는 피쳐를 제거함으로써 모델이 중요한 피쳐에 더 집중 가능

상관관계 분석 : 비슷한 역할을 하는 피쳐를 제거함으로써 모델의 안전성과 성능을 개선

피쳐 셀렉션

  1. 과적합 방지 : 모델이 학습 데이터에 너무 잘 맞춰져 새로운 데이터에 대한 일반화 성능 하향 방지

  • 모델의 단순화 : 불필요한 피쳐를 제거함으로써 모델 단순화 가능

모델 학습과 예측에 필요한 계산량도 감소함으로 계산 효율성 향상, 모델의 학습 시간을 단축 가능

장점

중요도 낮거나 상관관계 높다고 피쳐들을 제거 후 모델의 성능 평가 진행

방법

6 of 20

데이터 셋

XGBoost 모델을 통해서 각 피쳐들의 중요도를 계산

Pandads, scilik-learn, matplotlib를 사용하여 각 피쳐의 중요도 시각화

중요도

다른 피쳐들에 비해 비교적 중요도가 낮은 6개의 피쳐 드랍 -> 0.9548

Web_traffic

Page_Rank

Links_pointing_to_Page

Statistical_report

Domain_registration_length

Abnormal_URL

피쳐 셀렉션

7 of 20

머신러닝

XGBoost 테스트 정확도: 0.9713 MLP 테스트 정확도: 0.9765

과적합 방지: XGBoost는 트리 기반 모델로, 과적합 방지 기법이 잘 적용되어 있음. 현재 훈련 데이터에 대해서 매우 높은 정확도를 보이지만,

교차 검증 결과를 통해 모델이 과적합 되지 않았음을 알 수 있음.

테스트 성능 차이: 교차 검증 성능과 훈련 데이터에서의 혼동 행렬 분석을 종합적으로 고려, 높은 테스트 정확도와 오탐률이 적은 XGBoost 선정

일관된 성능: 교차 검증 평균 정확도가 MLP 보다 XGBoost가 더 높아, 새로운 데이터에도 더 일관적인 성능을 보일 가능성이 큼

모델선택

8 of 20

머신러닝

정확도

정밀도

재현율

F1-score

교차 검증 평균 정확도

XGBoost

0.9710

0.9719

0.9691

0.9704

0.9713

MLP

0.9765

0.9765

0.9755

0.9760

0.9642

Random Forest

0.9493

0.9510

0.9459

0.9481

0.9476

SVM

0.9285

0.9290

0.9252

0.9269

0.9262

피처 드랍 전

정확도

피처 드랍 후

정확도

피처 드랍 전

시간

피처 드랍 후

시간

XGBoost

0.9710

0.9538

6.8823초

1.0829초

MLP

0.9765

0.9584

7.1185초

1.6214초

실제로 정상 URL이고

모델도 정상 URL로 예측한 경우

실제로 정상 URL 이지만

모델이 피싱 URL로 예측한 경우

실제로 피싱 URL이지만

모델이 정상 URL로 예측한 경우

실제로 피싱 URL이고

모델도 피싱 URL로 판별한 경우

TP

FN

FP

TN

하이퍼 파라미터 튜닝, 피처 드랍 후

XGBoost 모델의 처리 시간이 크게 단축됨

9 of 20

XGBoost 테스트 정확도: 0.9710 -> 0.9713

머신러닝 - 하이퍼 파라미터 튜닝

하이퍼 파라미터 튜닝 후 정확도, 재현율, f1 score , 혼동 행렬, 교차검증 비교

10 of 20

MLP 테스트 정확도: 0.9738 -> 0.9765

머신러닝 - 하이퍼 파라미터 튜닝

하이퍼 파라미터 튜닝 후 정확도, 재현율, f1 score , 혼동 행렬, 교차검증 비교

11 of 20

모델 업데이트

업데이트 기준 : 매월 1일 오전 2시 업데이트

기존 예측 정확도 vs 업데이트 된 모델 예측 정확도 비교

업데이트

12 of 20

url_length url 길이

port 비표준 포트 열림 유무

having_at_symbol url에 @ 포함 여부

피쳐 분류

url_length url 길이

port 비표준 포트 열림 유무

having_at_symbol url에 @ 포함 여부

double_slash_symbol url에 // 포함 여부

prefix_suffix url에 –- 포함 여부

Url 기반 피쳐

right_click 우클릭 방지 여부

popup_window 팝업 창에 텍스트 필드가

포함되어 있는지

iframe iframe 사용 여부

having_ip_address ip 사용 여부

request_url 웹 페이지 내에 포함된 외부 객체

url_of_anchor <a> 태그에서 어디로 연결되는지

links_in_tags <meta>, <script>, <link> 태그 비율

sfh <form> 태그 링크

submitting_to_email 이메일로 리다이렉션

redirect 웹 사이트 리다이렉션 횟수

on_mouseover 상태 표시줄 변조 여부

Content 기반 피쳐

google_index 구글 검색 엔진의

색인 포함 여부

age_of_domain 도메인 수명

ssl_final_state ssl 인증서 유효성, 상태

having_sub_domain 서브 도메인 포함 여부

https_token 도메인에 https 토큰 포함 여부

Domain 기반 피쳐

논문 참조: Phishing Websites Features, Mohammad, R. M., Thabtah, F., & McCluskey, L. University of Huddersfield Repository. Retrieved from https://core.ac.uk/reader/30732240.

13 of 20

피쳐 - Url 기반

url_length URL의 전체 길이:피싱 사이트의 경우 url에서 의심스러운 부분을 숨기기 위해 url 길이가 긴 경우가 많음

port 비표준 포트 열림 유무:정상적인 사이트는 불필요한 접근을 막기 위해서 필요한 포트(80번(HTTP), 443번(HTTPS) 등)만 열어놓음

having_at_symbol url에 @ 포함 여부:URL에서“@”기호를 사용하면 브라우저가“@”기호 이전의 모든 것을 무시하고,

실제 주소는“@” 기호 이후에 오는 경우가 많음

double_slash_symbol url에 // 포함 여부:URL이 “HTTP”로 시작하면, “//”는 여섯 번째 위치에 있어야 하며 URL이

“HTTPS”를 사용하는 경우, “//”는 일곱 번째 위치에 있어야 함

prefix_suffix url에 – 포함 여부:피싱 공격자들은 도메인 이름에 대시--로 구분된 접두사나 접미사를 추가하여 사용자가 합법적인 웹페이지를

다루고 있다고 느끼게 만듬

논문 참조: Phishing Websites Features, Mohammad, R. M., Thabtah, F., & McCluskey, L. University of Huddersfield Repository. Retrieved from https://core.ac.uk/reader/30732240.

14 of 20

피쳐 - Content 기반

right_click 우클릭 방지 여부: 피싱 사이트는 종종 우클릭 방지를 설정하여 사용자에게 정보를 복사하거나 페이지의 소스를 확인하는 것을 막음

popup_window 팝업 창에 텍스트 필드가 포함되어 있는지: 피싱 사이트는 종종 우클릭 방지를 설정하여 사용자에게 정보를 복사하거나 페이지의

소스를 확인하는 것을 막음

iframe iframe 사용 여부: 피싱 공격자는 iframe 태그를 사용하여 프레임 테두리가 없이 보이게 하여 현재 표시되고 있는 웹페이지에 추가 웹페이지를

표시

having_ip_address iP 사용 여부: IP 주소를 직접 사용하는 사이트는 신뢰성이 낮고 피싱 사이트일 가능성이 있음

request_url 웹 페이지 내에 포함된 외부 객체: 웹페이지 내의 외부 객체(이미지, 비디오, 소리 등)가 다른 도메인에서 로드되는지를 검사, 합법적인

웹페이지에서는 웹페이지 주소와 웹페이지에 포함된 대부분의 객체들이 동일한 도메인을 공유

논문 참조: Phishing Websites Features, Mohammad, R. M., Thabtah, F., & McCluskey, L. University of Huddersfield Repository. Retrieved from https://core.ac.uk/reader/30732240.

15 of 20

피쳐 - Content 기반

url_of_anchor <a> 태그에서 어디로 연결되는지: <a> 태그의 href 속성 값과 웹 사이트의 도메인 이름이 다른 경우, <a> 태그가 웹 페이지에 연결되어

있지 않은 경우 피싱 가능성이 있음

links_in_tags <meta>, <script>, <link> 태그 비율: 웹 페이지에 사용된 모든 태그들에 대해서 <meta>, <script>, <link> 태그의 비율을 조사

sfh <form> 태그 링크: action 속성에 공백 또는 “about:black”(비어있는 탭), 외부 도메인의 경우, 제출된 정보에 대해 어떠한 처리를 하지 않거나

다른 사이트로 연결될 위험

submitting_to_email 이메일로 리다이렉션: 피싱 공격자는 사용자의 정보를 자신의 개인 이메일로 리디렉션할 수 있음

redirect 웹 사이트 리다이렉션 횟수: 피싱 사이트 판별 시 얼마나 많은 웹사이트가 리다이렉션 되었는가 확인하는 것이 중요, 정상 사이트는 최대 한 번,

피싱 사이트는 최소 4번 리다이렉션

on_mouseover 상태 표시줄 변조 여부: 브라우저 하단에 표시되는 상태 표시줄에 가짜 URL을 사용자에게 보여줄 수 있음

논문 참조: Phishing Websites Features, Mohammad, R. M., Thabtah, F., & McCluskey, L. University of Huddersfield Repository. Retrieved from https://core.ac.uk/reader/30732240.

16 of 20

피쳐 - Domain 기반

google_index 구글 검색 엔진의 색인 포함 여부: 일반적으로 피싱 웹페이지는 짧은 기간 동안만 액세스 할 수 있으며, 결과적으로 많은 피싱 웹페이지는

구글 인덱스에서 발견되지 않을 수 있음

age_of_domain 도메인 수명: 대부분의 피싱 사이트는 짧은 시간 동안 활동하기 때문에, 남은 도메인 수명이 짧음, 도메인 수명이 6개월 미만인

사이트를 피싱으로 분류

ssl_final_state ssl 인증서 유효성, 상태: HTTPS 인증서의 신뢰도와 인증서의 연령을 검사하여 피싱 여부를 판별,, HTTPS와 함께 제공된 인증서의

신뢰도와 인증서의 연령을 확인

having_sub_domain 서브 도메인 포함 여부: 사이트 domain 이외의 외부 사이트 domain이 포함되어 있다면 피싱 의심

https_token 도메인에 https 토큰 포함 여부: 피싱 공격자들은 사용자를 속이기 위해 URL의 도메인 부분에 HTTPS 토큰을 추가

논문 참조: Phishing Websites Features, Mohammad, R. M., Thabtah, F., & McCluskey, L. University of Huddersfield Repository. Retrieved from https://core.ac.uk/reader/30732240.

17 of 20

프로젝트 설계도 & 아키텍처

18 of 20

확장 프로그램

URL을 실시간으로 분석하여 피싱 사이트로 의심될 경우 경고 메시지를 표시

사용자가 웹 사이트의 URL에 마우스 오버할 때, 해당 URL이 피싱 사이트인지 아닌지를 즉시 판별

실시간 판별

사용자는 매번 별도의 피싱 판별 웹 사이트를 방문하지 않고도 확장 프로그램을 통해 실시간으로 피싱 판별 결과를 받을 수 있어 편의성 향상

19 of 20

웹 사이트

피싱 여부: 데이터 셋을 통해 사전에 학습된 XGBoost 머신러닝 모델을 통해 피싱 사이트 유무 판단

피싱 확률: 데이터 셋을 통해 사전에 학습된 XGBoost 머신러닝 모델을 통해 판별된 피싱 사이트의 확률

IP: DNS 서버 질의를 통해 사용자가 입력한 URL의 도메인에 대한 IP 주소

Country: 웹 사이트의 국가 정보

Region: 웹 사이트의 지역 정보

ISP Name: 인터넷 서비스 제공자(ISP) 이름

VPN 사용 여부: 가상 사설망(VPN) 사용 여부

상세 정보

20 of 20

웹 사이트

https://www.catch-phishing.site/