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
1つのリクエストを追って理解する - llm-dのP/D分離
akhino
1
170
実践!Cloud Run ハンズオン!! / Cloud Run handson
y0hgi
2
300
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
8
3.1k
Classmethod Company Deck
satoshi7
1
740
データエンジニアの次の戦場は "プロセスエンジニアリング"
sansantech
PRO
1
110
専門領域のAIをどう評価するか
bengo4com
2
300
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
930
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
180
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
1.1k
LambdaWebFunctionsを試してみた / exploring-lambda-web-functions
koukihosaka
1
360
Rust で関数型ドメインモデリング
takonda
0
170
Tofu-Controller lightning talk @ Containerday 2026
gionn
0
120
Featured
See All Featured
The SEO identity crisis: Don't let AI make you average
varn
0
590
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
520
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Abbi's Birthday
coloredviolet
4
10k
Writing Fast Ruby
sferik
630
63k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Navigating Weather and Climate Data
rabernat
0
560
Making the Leap to Tech Lead
cromwellryan
135
10k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
540
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
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