Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
コマンドラインで分析するフィッシングデータセット(初級編)
Search
Noriaki Hayashi
April 20, 2022
Technology
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
コマンドラインで分析するフィッシングデータセット(初級編)
第1回 スミッシング対策技術勉強会
題目:「コマンドラインで分析するフィッシングデータセット(初級編)」
日時:2022年4月20日(水)
Noriaki Hayashi
April 20, 2022
More Decks by Noriaki Hayashi
See All by Noriaki Hayashi
「Blue Team Labs Online」入門 - みんなで挑むログ解析バトル
v_avenger
0
450
「Blue Team Labs Online」のはじめかた 痕跡分析で光る"かっこよさ"
v_avenger
0
52
アクティブディフェンス時代のヒーローはディフェンダーだ!痕跡分析で光るかっこよさと学び直しのススメ
v_avenger
0
24
【LIVE】 すぐ貢献できる!偽サイトの探索から通報まで
v_avenger
0
46
細工された製品が突然牙をむく「サプライチェーン攻撃」の脅威
v_avenger
0
40
「シリアスゲーム(Serious Game)」作りを考える
v_avenger
0
45
Other Decks in Technology
See All in Technology
触りたくないデータに、どう触るか AI時代のRBACアクセスガバナンス
ivry_presentationmaterials
0
280
How to Design Configuration for Rails Applications
willnet
1
850
夫婦で子育てするための育児標準化
codmoninc
PRO
0
460
S3 Filesで挑む! 八戸せんべい汁の食べ頃問題
usanchuu
0
120
トークン化預金DCJPYの取り組みと活用ユースケース
finengine
0
180
Temporal 最高!でも改めて「日付」について調べたら人類の負債すぎる件
riyaamemiya
0
190
エンタメ企業のM&Aを支えるデータ基盤 ― 統合から店舗のリアルタイム分析まで / Data Engineering Summit 2026
genda
0
200
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
800
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
120
Webの常識が通じないHTMLメールのダークモード
teamlab
PRO
0
140
AI駆動で「他アプリの音を加工できる」アプリを作った
satomasahiro2005
0
180
しろおびから始める!ログ活用の第一歩
shumei_ito
0
960
Featured
See All Featured
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
380
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Making Projects Easy
brettharned
120
6.8k
Being A Developer After 40
akosma
92
590k
Chasing Engaging Ingredients in Design
codingconduct
0
360
sira's awesome portfolio website redesign presentation
elsirapls
0
460
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
What's in a price? How to price your products and services
michaelherold
247
13k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
310
The World Runs on Bad Software
bkeepers
PRO
72
12k
Transcript
ίϚϯυϥΠϯͰੳ͢Δ ϑΟογϯάσʔληοτ <ॳڃฤ> /PSJBLJ )":"4)* ୈճ εϛογϯάରࡦٕज़ษڧձ
/PSJBLJ )":"4)* トレンドマイクロ株式会社 プリンシパルセキュリティアナリスト 高知工業高等専門学校 副業先生 #BDLHSPVOE 1998年 育英工業高等専門学校 卒業
2002年 電気通信大学 卒業 2002年 トレンドマイクロ株式会社 入社 2011年 金沢工業大学 知的創造システム専攻 修了 サイバー犯罪対策、特にオンライン詐欺を専門に調査・ 研究活動を行う 1 | © 2022 Noriaki HAYASHI
2 | © 2022 Noriaki HAYASHI ͳͥɺίϚϯυϥΠϯͳͷ͔ コマンドラインで分析するメリット 1.軽量かつ俊敏である 2.スケーラブルである
3.至る所で使える
OSEMN フレームワーク OBTAIN 様々ソースからデータの 収集を⾏う SCRUB 機械にとって可読性の⾼い フォーマットへデータを整 える EXPLORE
統計的な⼿法により有益な パターンや傾向を⾒つける MODEL 予想のためのモデル構築 INTERPRET 結果を有効に活⽤する 3 | © 2022 Noriaki HAYASHI
データセットの取得 フィッシングURL Feed(PhishStats)からデータセットを 取得します。 curl コマンドを使ってフィードデータをダウンロードする ことができます。 >_ ターミナル $
curl [オプション] URL ~$ curl https://phishstats.info/phish_score.cs v > phishstats.csv ~$ head ‒n 10 phishstats.csv 4 | © 2022 Noriaki HAYASHI 様々なプロトコルでファイル を転送する
None
データセットの取得 フィッシングURL Feed(PhishStats)からデータセットを 取得します。 curl コマンドを使ってフィードデータをダウンロードする ことができます。 >_ ターミナル $
curl [オプション] URL ~$ curl https://phishstats.info/phish_score.cs v > phishstats.csv ~$ head ‒n 10 phishstats.csv 6 | © 2022 Noriaki HAYASHI 様々なプロトコルでファイル を転送する
###################################################################################### # PhishScore | PhishStats # # Score ranges: 0-2
likely 2-4 suspicious 4-6 phishing 6-10 omg phishing! # # Ranges may be adjusted without notice. List updated every 90 minutes. Do not crawl # # too much at the risk of being blocked. # # Many Phishing websites are legitimate websites that have been hacked, so keep that # # in mind before blocking everything. Feed is provided as is, without any warrant. # # CSV: Date,Score,URL,IP # ###################################################################################### "2022-04-10 19:40:45","1.50","h++p://vl{BLOCKED}hu[.]bir{BLOCKED}alo[.]link/","2a02:{BLOCKED}:1d" データの概要確認 PhishStats CSV Feedでは30⽇間のURLを90分間隔で更新 されています。先頭9⾏には次に⽰す説明⽂が記載されてい ます。 列ごとに1列⽬に⽇付、スコア、URL、IPアドレスにて構成 されています。 7 | © 2022 Noriaki HAYASHI
不要な⾏を削除する PhishStats CSV Feedのデータ分析を⾏う際に不要な説明 ⽂の削除を⾏います。 sed または tail コマンドを使って⾏番号で範囲指定した⾏ (1から9⾏⽬)の削除を⾏います。
>_ ターミナル $ sed ʻ開始⾏番号,終了⾏ 番号dʼ ファイル ~$ sed '1,9d' phishstats.csv > phishstats_r.csv OR ~$ tail ‒n +10 phishstats.csv > phishstats_r.csv ~$ head ‒n 10 phishstats_r.csv 8 | © 2022 Noriaki HAYASHI ファイルの指定した⾏を削除 する
⽂字数や⾏数を数える 対象のデータセットは N⾏4列 で構成されています。そこ で、規模を把握するために、まず⾏数を数えましょう。 wc コマンドを使って指定ファイルの⽂字数や⾏数を数え ることができます。 >_ ターミナル
$ wc ‒l ファイル ~$ wc phishstats_r.csv 49206 98418 5106149 phishstats_r.csv ~$ wc -l phishstats_r.csv 49206 phishstats_r.csv ファイルの改⾏の数を表⽰ 9 | © 2022 Noriaki HAYASHI
URLから特徴量の抽出 URLの⽂字列には様々な意味が隠されています。例えば、 たくさんのドット(過剰なサブドメイン)または、たくさ んのスラッシュ(異常に深いパス)などの特徴量について 抽出することを⽬指します。 10 | © 2022 Noriaki
HAYASHI
探索 ステップ スクラブしたデータの探索 1.RAWデータの性質、特徴 2.統計量を計測する 3.RAWデータを可視化し洞察を得る 11 | © 2022
Noriaki HAYASHI
データを眺める テキストデータの内容を確認するコマンドは様々あります。 cat, head, tail, more … less コマンドを使えば、テキストを1画⾯ずつ表⽰するこ とができます。また、ファイル全体をメモリに読み込みま
せん。したがって⼤きなファイルの閲覧でも活躍します。 >_ ターミナル $ less ‒S ファイル名 ~$ less -S phishstats_r.csv 12 | © 2022 Noriaki HAYASHI テキストファイルを1画⾯ずつ 表⽰する
IPアドレスを抽出 対象のデータセットは N⾏4列 で構成されています。4列⽬ にIPアドレスが記載されています。 cut コマンドを使ってIPアドレスの抽出を⾏います。 出現頻度についてカウントします。その上でsortで降順に 並べ替え、headを使いワースト 10を表⽰させます。
>_ ターミナル $ cut ‒d”,” ‒f4 ~$ cat phishstats_r.csv | > cut ‒d”,” ‒f4 | > sort | > uniq ‒c | > sort ‒nr | > head ‒n 10 13 | © 2022 Noriaki HAYASHI 区切り⽂字に , を指定し 4列⽬ を表⽰
URLの構造 14 | © 2022 Noriaki HAYASHI URLは、スキーム、サブドメイン、セカンドレベルドメイ ン、トップレベルドメイン、サブディレクトリからなる5つ の要素で構成されています。
これら要素に分解して傾向を把握することが重要です。 https://blog.example.com/cmd/ スキーム サブドメイン セカンドレベル ドメイン トップレベル ドメイン サブ ディレクトリ
URLからドメインを抽出 対象のデータセットは URL で構成されています。そこで、 ドメイン情報のみ抽出を⾏います。 awk コマンドを使って「”」と「/」を区切り⽂字として指 定し、テキスト処理を⾏います。 $ awk
‒F, ʻ{print $3}ʼ 15 | © 2022 Noriaki HAYASHI 区切り⽂字に , を指定し 3列⽬ を表⽰ >_ ターミナル ~$ cat phishstats_r.csv | awk -F\" '{print $6}' | awk -F/ '{print $3}' | head -n 3 www[.]jr{BLOCKED}tc[.]top ho{BLOCKED}h24h[.]gc{BLOCKED}re[.]vn ne{BLOCKED}n2[.]a{BLOCKED}si[.]top ※コマンド結果はリダイレクトし domain.txt に出⼒しておく
重複する⾏を削除する URLからドメイン情報を抽出し domain.txt を書き出しまし た。このファイルから重複しているドメインを削除します。 uniq コマンドを使って、重複⾏の削除を⾏います。 >_ ターミナル $
uniq ⼊⼒ファイル ~$ wc -l domain.txt 49206 domain.txt ~$ cat domain.txt | uniq | wc -l 41405 ~$ cat domain.txt | uniq > uniq_domain.txt 16 | © 2022 Noriaki HAYASHI 重複している⾏を削除する
TLD ワースト10を表⽰する grep コマンドを使って、ドメイン情報からTLDを抽出しま す。uniqで重複するTLDを削除し、出現頻度についてカウ ントします。その上でsortで降順に並べ替え、headを使い ワースト 10を表⽰させます。 >_ ターミナル
$ grep 検索パターン ~$ cat uniq_domain.txt | > grep -ioE '\.[^.]+$ʼ | > sort | > uniq ‒c | > sort ‒nr | > head ‒n 10 17 | © 2022 Noriaki HAYASHI 特定の⽂字列が含まれている ⾏を抽出する
正規表現 正規表現の検索パターンチェックには、「Regulex」や 「Rubular」などのツールを使うことが有効です。 18 | © 2022 Noriaki HAYASHI アービトレーション
ID
TLD ワースト10を表⽰する grep コマンドを使って、ドメイン情報からTLDを抽出しま す。uniqで重複するTLDを削除し、出現頻度についてカウ ントします。その上でsortで降順に並べ替え、headを使い ワースト 10を表⽰させます。 >_ ターミナル
$ grep 検索パターン ~$ cat uniq_domain.txt | > grep -ioE '\.[^.]+$ʼ | > sort | > uniq ‒c | > sort ‒nr | > head ‒n 10 19 | © 2022 Noriaki HAYASHI 特定の⽂字列が含まれている ⾏を抽出する
使いこなしたいコマンド csvkit csvkitはデータをCSV形式に変換して操作するため のコマンドラインツールスイート feedgnuplot コマンドラインのデータプロッタ。Gnuplotのフロ ントエンド。データをパイピングで処理可能 jq JSON形式のデータからデータを抽出、変換、集計、 できるコマンド
split ファイルの分割を⾏うコマンド tr ⽂字の置き換えを⾏うコマンド 20 | © 2022 Noriaki HAYASHI
参考⽂献 • Janssens, Jeroen. Data Science at the Command Line.
" O'Reilly Media, Inc.", 2021., http://datascienceatthecommandline.com/ • Robert Mesibov, BASHing data, https://www.datafix.com.au/BASHing/ • Pavlo Horbonos, Linux command line utils for Data Scientist, https://towardsdatascience.com/linux-command-line-utils-for-data- scientist-efff43a10f3c • Jason Baker, 10 command-line tools for data analysis in Linux, https://opensource.com/article/17/2/command-line-tools-data- analysis-linux • 『1⽇1問、半年以内に習得シェル・ワンライナー160本ノック』 21 | © 2022 Noriaki HAYASHI