フィッシングサイトのデータセット
フィッシングサイトの見分け方
今さらではあるが、フィッシングサイトの見分け方について。
2015年にフィッシングサイトに関するデータセットが提供されている。
30個の特徴量からフィッシングサイトを判定した2456件のデータとなっている。
これを機械学習させることで、他のサイトについてもフィッシングサイトの判定が可能になる。まずは、その特徴量をみることで、フィッシングサイトの見分け方のヒントになるのか確認をする。
特徴量については、以下の文書にまとめられている。
https://archive.ics.uci.edu/ml/machine-learning-databases/00327/Phishing%20Websites%20Features.docx
データについても、同様にダウンロードできる。
https://archive.ics.uci.edu/ml/machine-learning-databases/00327/Training%20Dataset.arff
ファイルはarffという形式で、特徴量が@attributeで記載され、そのデータが@data以下に表示される。
データ1番目の項目は、
@attribute having_IP_Address { -1,1 }となっている。
特徴量のドキュメントを見ると、以下のようになっている。
URLにIPアドレスを含んでいる場合、フィッシングサイトと判定している。しかし、その場合、-1 or 1なのかドキュメントに記載はない。
さらに見ていくと、データでは@attribute Request_URL { 1,-1 }となっているが、
ドキュメントを見ると、3パターンに分かれていて、どれが、どれなのやら。
最後には、フィッシングサイトの統計情報に含まれるもの、という特徴量もあり、もうそれだけでいいのでは?と思うものも。
2015年にデータが公開されているので、若干、特徴量としての考え方が古くなっているものもある。
曖昧ながら、特徴量をドキュメントに記載の順番通りにまとめたものが以下となる。
@attribute having_IP_Address { -1,1 }
の場合
と記載があるので、
前者が-1でフィッシングサイト
後者が1で正常サイト、とした。
特徴量項目 | 特徴量名称 | 選択値 | 値の詳細 | 具体例 | |
1 | URLにIPアドレスを使用している | having_IP_Address | { -1,1 } | -1:Yes(フィッシング) 1:No |
http://125.98.3.123/fake.html |
2 | URLの長さ | URL_Length | { 1,0,-1 } | 1:54文字未満 0:54-75文字 -1:それ以上(フィッシング) |
http://federmacedoadv.com.br/3f/aze/ab51e2e319e51502f416dbe46b773a5e/?cmd=_home&dispatch=11004d58f5b74f8dc1e7c2e8dd4105e811004d58f5b74f8dc1e7c2e8dd4105e8@phishing.website.html |
3 | URL省略を使用している | Shortining_Service | { 1,-1 } | 1:Yes(フィッシング) -1:No |
bit.ly/19DXSk4 |
4 | URLに@が使用されている | having_At_Symbol | { 1,-1 } | 1:Yes(フィッシング) -1:No |
www.fake@site.com |
5 | URL中の「//」の位置 | double_slash_redirecting | { -1,1 } | -1:7文字目以降にある 1:それ以外 |
http://www.legitimate.com//http://www.phishing.com |
6 | URLのドメイン名が「-」で分割されている | Prefix_Suffix | { -1,1 } | -1:Yes(フィッシング) 1:No |
http://www.Confirme-paypal.com/ |
7 | URLのドメイン部の「.」の数 | having_Sub_Domain | { -1,0,1 } | -1:1個 0:2個 1:それ以外(フィッシング) |
http://www.hud.phising.fake.ac.uk/students/ |
8 | サーバー証明書の状況 | SSLfinal_State | { -1,1,0 } | -1:信頼できるHTTPSで有効期限が1年以上 1:自己証明書 0:上記以外(フィッシング) |
|
9 | ドメインの有効期限 | Domain_registeration_length | { -1,1 } | -1:1年以下(フィッシング) 1:上記以外 |
|
10 | 外部のドメインからfaviconをロードしている | Favicon | { 1,-1 } | 1:Yes(フィッシング) -1:No |
|
11 | サーバーのポートの状況 | port | { 1,-1 } | 1:望ましい(80,443ポートのみオープン) -1:望ましくない(フィッシング?) |
|
12 | URLのドメイン部にhttpsが含まれる | HTTPS_token | { -1,1 } | -1:Yes(フィッシング) 1:No |
http://https-www-paypal-it-webapps-mpp-home.soft-hair.com/ |
13 | 全リクエストに占めるサーバー外部へのリクエストの割合 | Request_URL | { 1,-1 } | 1:22%未満 ?:22-61% -1:上記以外(フィッシング) |
|
14 | リンク先の無い<a>タグの使用の割合 | URL_of_Anchor | { -1,0,1 } | -1:31%未満 0:31-67% 1:上記以外(フィッシング) |
A. <a href=“#”> B. <a href=“#content”> C. <a href=“#skip”> D. <a href=“JavaScript ::void(0)”> |
15 | <Meta>, <Script> <Link> タグに含まれるリンクが自サーバードメイン宛ての割合 | Links_in_tags | { 1,-1,0 } | 1:17%未満 -1:17-81% 0:上記以外(フィッシング) |
|
16 | Server Form Handler (SFH)の値 | SFH | { -1,1,0 } | -1:"about: blank" Or ブランク(フィッシング) 1:その他のドメインを参照 0:上記以外 |
|
17 | メールの送信 | Submitting_to_email | { -1,1 } | -1:mail() or mailto: ファンクションを使用(フィッシング) 1:上記以外 |
|
18 | WHOISに登録されているホスト名がURLに含まれる | Abnormal_URL | { -1,1 } | -1:No(フィッシング) 1:Yes |
|
19 | Webサイトのリダイレクト回数 | Redirect | { 0,1 } | 0:1回 ?:2-3回 1:上記以外(フィッシング) |
|
20 | マウスオーバーによってステータスバーを変更している | on_mouseover | { 1,-1 } | 1:Yes(フィッシング) -1:No |
|
21 | 右クリックを禁止している | RightClick | { 1,-1 } | 1:Yes(フィッシング) -1:No |
|
22 | テキストフィールがあるポップアップウインドウを使用している | popUpWidnow | { 1,-1 } | 1:Yes(フィッシング) -1:No |
|
23 | Iframeを使用している | Iframe | { 1,-1 } | 1:Yes(フィッシング) -1:No |
|
24 | ドメインの年齢 | age_of_domain | { -1,1 } | -1:6カ月以上 1:その他(フィッシング) |
|
25 | DNSレコードの有無 | DNSRecord | { -1,1 } | 1:なし(フィッシング) 0:あり |
|
26 | Webサイトのランキング | web_traffic | { -1,0,1 } | -1:99,999位以内 0:100,000位以上 1:ランク外(フィッシング) |
|
27 | Webページのランキング | Page_Rank | { -1,1 } | -1:0.2未満(フィッシング) 1:上記以外 |
|
28 | Googleの検索対象 | Google_Index | { 1,-1 } | 1:Yes -1:No(フィッシング) |
|
29 | 外部からのリンク数 | Links_pointing_to_page | { 1,0,-1 } | 1:0個(フィッシング) 0:1-2個 -1:上記以外 |
|
30 | 統計調査に含まれるIPやドメイン | Statistical_report | { -1,1 } | -1:Yes(フィッシング) 1:No |
|
結果 | 判定結果 | Result | { -1,1 } | -1:フィッシングサイト 1:正常なサイト |
特徴量の中には、コードを読み解いたりしないといけないものもあり、その特徴量をどうやって抽出するのか気になる。
kaggleに同じデータセットを用いたものや、似たデータセットがあったりするのでそちらを見てみると参考になるのかも。
おまけ
このデータをもとにした論文とかもあるようですが、一番悩んだのが以下です。
・Table2なんてない
・PrefferedはPreferredのスペルミス?
・Preferred StatusだったらPhishingになる?
とノイズがいろいろあって、よく理解できなかった。