Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コマンドラインで分析するフィッシングデータセット(初級編)
Search
Noriaki Hayashi
April 20, 2022
Technology
0
88
コマンドラインで分析するフィッシングデータセット(初級編)
第1回 スミッシング対策技術勉強会
題目:「コマンドラインで分析するフィッシングデータセット(初級編)」
日時:2022年4月20日(水)
Noriaki Hayashi
April 20, 2022
Tweet
Share
More Decks by Noriaki Hayashi
See All by Noriaki Hayashi
「Blue Team Labs Online」入門 - みんなで挑むログ解析バトル
v_avenger
0
110
「Blue Team Labs Online」のはじめかた 痕跡分析で光る"かっこよさ"
v_avenger
0
7
アクティブディフェンス時代のヒーローはディフェンダーだ!痕跡分析で光るかっこよさと学び直しのススメ
v_avenger
0
4
【LIVE】 すぐ貢献できる!偽サイトの探索から通報まで
v_avenger
0
30
細工された製品が突然牙をむく「サプライチェーン攻撃」の脅威
v_avenger
0
17
「シリアスゲーム(Serious Game)」作りを考える
v_avenger
0
28
Other Decks in Technology
See All in Technology
事例に見るスマートファクトリーへの道筋〜工場データをAI Readyにする実践ステップ〜
hamadakoji
0
200
S3はフラットである –AWS公式SDKにも存在した、 署名付きURLにおけるパストラバーサル脆弱性– / JAWS DAYS 2026
flatt_security
0
440
us-east-1 に障害が起きた時に、 ap-northeast-1 にどんな影響があるか 説明できるようになろう!
miu_crescent
PRO
13
3.8k
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
8
7.1k
プロジェクトマネジメントをチームに宿す -ゼロからはじめるチームプロジェクトマネジメントは活動1年未満のチームの教科書です- / 20260304 Shigeki Morizane
shift_evolve
PRO
1
130
越境する組織づくり ─ 多様性を前提にしたチームビルディングとリードの実践知
kido_engineer
2
130
タスク管理も1on1も、もう「管理」じゃない ― KiroとBedrock AgentCoreで変わった"判断の仕事"
yusukeshimizu
5
1.8k
Bill One 開発エンジニア 紹介資料
sansan33
PRO
5
18k
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
4
22k
Claude Codeが爆速進化してプラグイン追従がつらいので半自動化した話 ver.2
rfdnxbro
0
430
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
1.7k
類似画像検索モデルの開発ノウハウ
lycorptech_jp
PRO
4
1k
Featured
See All Featured
Faster Mobile Websites
deanohume
310
31k
Automating Front-end Workflow
addyosmani
1370
200k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
64
53k
Unsuck your backbone
ammeep
672
58k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
75
Raft: Consensus for Rubyists
vanstee
141
7.3k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
380
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
470
Color Theory Basics | Prateek | Gurzu
gurzu
0
240
YesSQL, Process and Tooling at Scale
rocio
174
15k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
250
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