ロード・トゥ・ザ・ホワイトハッカー

ホワイトハッカーはじめました

フィッシングサイトのデータセット

フィッシングサイトの見分け方

今さらではあるが、フィッシングサイトの見分け方について。

2015年にフィッシングサイトに関するデータセットが提供されている。

archive.ics.uci.edu

 

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になる?

とノイズがいろいろあって、よく理解できなかった。