악성 url 판단 기준 정하기
악성 url 여부를 판단할 수 있는 인공지능 모델을 만들고자한다.
일단 악성 url 데이터셋을 많이 수집해야한다!
우리는 두가지 방법으로 수집하기로 했다
1) 웹사이트 이용하기. ( ex: phishtank, UCI Machine Learning Repository: Phishing Websites Data Set 등)
API를 이용해 해당 사이트에 저장되어있는 데이터베이스를 가져다 쓸 수 있을 듯.
2) 설문조사를 통해 데이터 수집
-> 받는 사람들만 많이 받고 안받는 사람들은 많이 안받아서 많이 모이지는 않았지만 최근에 스미싱에 쓰이는 url 들의 경우 전체 url이 아닌 줄여진 형태의 url을 많이 사용하기 때문에 이러한 데이터들을 수집할 수 있었다.
이제 모아진 url들을 분석해야하는데, 먼저 줄여진 url들은 어떻게 복구할 지에 대한 방법을 세워야한다.
검색해보면 긴 url을 줄여주는 서비스는 많은데, 반대읙 경우는 복구를 해야하기 때문에 정확도를 보장할 수 없고 전자보다 더 케이스가 적었다.
이러한 서비스를 제공하는 사이트들 중 Free api 를 제공하는 사이트들을 찾았다.
Free URL Un-Shortener - Unshorten URLS like goo.gl, bit.ly and many more
What is Unshorten.me Unshorten.me is a free service to Un-Shorten the URLs created by URL shortening services. Unshorten.me can un-shorten URLs created by different services like goo.gl (Google), fb.me (Facebook), t.co (Twitter), bit.ly, TinyURL, ow.ly amo
unshorten.me
이렇게 복구한 url들을 기준으로 먼저 문자 형태만 보고 특징을 뽑아보았다.
- url 단축 여부
- url의 길이 (악성 url의 경우 길이기 긴 경우가 많음. 그렇지만 정상 사이트인데도 접속 주소가 길어지는 경우도 많기 때문에 이 기준은 보류..)
- 서브 도메인 개수
- 중간에 // 로 들어가는 것이 있는지
- IP 주소가 드러나는지
- http:// 와 https:// 여부.. 사실 이것도 최근에는 https를 많이 사용하기는 하지만 아직 http로 하는 것도 많기 때문에 이게 뚜렷한 기준이 될지는 잘 모르겠음..
- 주소 중간에 '-' 의 여부
사용할 인공지능 모델 구조?
-> LSTM, GRU CNN에 기반한 단어벡터 내부에서의 공간 특징 고려하는 접근 가능.
일단은 이러한 모델구조보다는 선정한 feature 중심으로 전처리해서 분류하는 classification 문제로 푸는것으로 생각..