Slide 1

Slide 1 text

ホモグラフドメインを検出してみた 久米拓馬 / GMO PEPABO inc. 2023.12.14 コードとカクテル(LT)

Slide 2

Slide 2 text

2 自己紹介 ホスティング事業部 SREチーム シニアエンジニア 久米拓馬 @takumakume ● 福岡在住 ● 釣り ● Kubernetes / Cloudnative

Slide 3

Slide 3 text

#今年買ってよかったもの
 ダイニチコーヒー豆焙煎機 MR-F60A 


Slide 4

Slide 4 text

はじめに ムームードメインというドメイン取得サービスを提供している

Slide 5

Slide 5 text

はじめに ホスティングサービスにて独自ドメインでWebサイトを公開

Slide 6

Slide 6 text

はじめに ● ホモグリフ(homoglyph) ○ 同一または非常によく似た形をした文字 ○ 例えば「O(オー)」と「0(ゼロ)」 ● ホモグラフドメイン(homograph domain) ○ ホモグリフを利用して特定の組織等になりすましたドメイン ○ 例えば「AMAZON.COM」と「AMAZ0N.COM」 ホモグラフドメイン

Slide 7

Slide 7 text

はじめに ● ホモフラフドメインを使ってフィッシングサイトが作られてしまう ● 人の経験と目で怪しさを検知して調査している ● 不正なサイトを放置しているホスティング業者となり信用が落ちる 不正を目的としたドメインによる課題

Slide 8

Slide 8 text

はじめに ● ホモグラフドメインを取得すること単体で善悪を判断するものではない ● 自社のプロダクトのホモグラフドメインを悪用される前に取ることがあるだろう ● 人の目でホモグラフドメインをフィルタリングするのは大変であるという課題に対するアプ ローチにフォーカス ホモグラフドメインに対する考え方について

Slide 9

Slide 9 text

実装

Slide 10

Slide 10 text

実装 ● レーベンシュタイン距離 ● ハミング距離 要素技術

Slide 11

Slide 11 text

実装 ● Aの文字列をBに変形するのに必要な手順の最小回数 レーベンシュタイン距離 A B 距離 micr0s0ft.com microsoft.com 2 amason.com amazon.com 1

Slide 12

Slide 12 text

実装 レーベンシュタイン距離 A B 距離 割合 micr0s0ft.com microsoft.com 2 84.62% amason.com amazon.com 1 90.00% ● 距離だとどのくらい似ているか分かりにくいので、最大文字数で割る

Slide 13

Slide 13 text

● 前者は大文字にすると見た目が似ている ● 後者は似ているが、別物であると分かる ● しかし、割合としてはほぼ同じ 実装 レーベンシュタイン距離 A B 距離 割合 M1CR0Z0FT MICROSOFT 4 55.56% melon-soft microsoft 5 50.00%

Slide 14

Slide 14 text

● 例えば日本語ドメインを考えてみる ● 文字列自体には全く関連はないが、見た目が似ている 実装 レーベンシュタイン距離 A B 距離 割合 曰木ー 日本一 3 0%

Slide 15

Slide 15 text

● 同じ文字数の二つの文字列を比較したとき、同じ位置にある異なる文字の個数 ● ドメインを比較するために直接用いるのは難しい ● 画像のハッシュを比較するときに用いられることがある 実装 ハミング距離 A B 距離 1001001 1011101 2

Slide 16

Slide 16 text

● ドメイン文字列全体を1枚の画像に変換 ● 画像のハッシュを生成してハミング距離で比較してみる ● ハッシュ関数にはPerceptual Hash(パーセプチュアル ハッシュ)を使用 実装 ハミング距離 曰木ー 日本一 bec1986b63b21c3c bec1906b69b31c3c

Slide 17

Slide 17 text

● ドメイン文字列を画像にして比較してみる 実装 ハミング距離 A B ハミング距離 レーベンシュタイン 6(とても近い) 3 (0%) 32 (遠い) 4 (0%) 8(近い) 4 (55.56%) bec1986b63b21c3c bec1906b69b31c3c af93c0691f869b62 f887877868d02f87 bfc1c0372f386ac1 bfc2c03d2f3a38c1 ハミング距離が10以下だと似ていると判断できそう

Slide 18

Slide 18 text

● レーベンシュタイン距離 ○ mattn/go-lsd ● 画像ハッシュ生成、ハミング距離 ○ corona10/goimagehash ● 文字列の画像生成 ○ fogleman/gg ● 文字のフォント ○ 日本語:IPAゴシック (https://moji.or.jp/ipafont/ipa00303/) ○ その他:Monaco 実装 Golangによる実装

Slide 19

Slide 19 text

実装 Golangによる実装 https://github.com/takumakume/homein

Slide 20

Slide 20 text

● レーベンシュタイン距離を用いてドメインの類似度を出すことができ る。 ● ドメインの文字列を一度画像に変換してハッシュを生成し、ハミング 距離を用いてレーベンシュタイン距離では検知できないパターンに 対応できる。 ● Golangの既存ライブラリを組み合わせて簡単に実装できる。 まとめ 実用化に向けて試行錯誤していきます!

Slide 21

Slide 21 text

● Microsoft takes on homograph domains ○ https://globalbydesign.com/2021/08/18/microsoft-takes-on-homograph-domains/ ● ホモグラフドメインの 検知に関する研究 ○ https://meetings.jpaawg.org/wp-content/uploads/2022/11/B2-5_kojima.pdf 参照資料

Slide 22

Slide 22 text

22 Thank You! Thank You! GMOペパボに興味がある方は @takumakume までご連絡ください! カジュアル面談でもお待ちしております。