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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
Windows ネットワークを再確認する
murachiakira
PRO
0
300
AIエージェント時代に備える AWS Organizations とアカウント設計
kossykinto
0
240
モブプログラミング再入門 ー 基本から見直す、AI時代のチーム開発の選択肢 ー / A Re-introduction of Mob Programming
takaking22
4
620
ヘルシーSRE
tk3fftk
2
240
作りっぱなしで終わらせない! 価値を出し続ける AI エージェントのための「信頼性」設計 / Designing Reliability for AI Agents that Deliver Continuous Value
aoto
PRO
1
200
生成AIの利用とセキュリティ /gen-ai-and-security
mizutani
1
1.4k
自動テストが巻き起こした開発プロセス・チームの変化 / Impact of Automated Testing on Development Cycles and Team Dynamics
codmoninc
3
1.2k
Claude Codeの進化と各機能の活かし方
oikon48
18
8.7k
ブラックボックス観測に基づくAI支援のプロトコルのリバースエンジニアリングと再現~AIを用いたリバースエンジニアリング~ @ SECCON 14 電脳会議 / Reverse Engineering and Reproduction of an AI-Assisted Protocol Based on Black-Box Observation @ SECCON 14 DENNO-KAIGI
chibiegg
0
160
A Gentle Introduction to Transformers
keio_smilab
PRO
2
920
Shifting from MCP to Skills / ベストプラクティスの変遷を辿る
yamanoku
4
660
GitLab Duo Agent Platform + Local LLMサービングで幸せになりたい
jyoshise
0
180
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Speed Design
sergeychernyshev
33
1.6k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
100
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.4k
Balancing Empowerment & Direction
lara
5
930
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
430
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.1k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
280
Designing Powerful Visuals for Engaging Learning
tmiket
0
260
Measuring & Analyzing Core Web Vitals
bluesmoon
9
770
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
51k
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