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
Webデバイストラッキング手法の紹介
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kurochan
January 20, 2019
Technology
13k
12
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Webデバイストラッキング手法の紹介
Kurochan
January 20, 2019
More Decks by Kurochan
See All by Kurochan
ABEMAのバグバウンティの取り組み
kurochan
1
1.2k
2026年の個人的テーマ: 「計算機を燃やせ🔥」
kurochan
1
260
つなぐ、届ける、変える- コンテンツ配信の最前線ト——ク
kurochan
0
200
サイバーエージェント流クラウドコスト削減施策「みんなで金塊堀太郎」
kurochan
4
3.4k
AWS Elemental MediaPackageと格闘🤼
kurochan
2
170
サイバーエージェントでのSlack活用事例 @ 2025
kurochan
5
310
15年入社者に聞く! これまでのCAのキャリアとこれから
kurochan
1
430
入門 電気通信事業者
kurochan
13
5.9k
AWS x さくらのクラウドのハイブリッドクラウドによる安価なフレッツ閉域網接続の実装
kurochan
10
6.5k
Other Decks in Technology
See All in Technology
渡米前の準備を制す!re:Invent 2026徹底準備術 / The Ultimate Preparation Guide for re:Invent 2026
yuj1osm
1
480
増え続けるプロダクトの品質をどう担保するか。ProductSpecとTypeScriptによる取り組み
joere
3
320
AIコーディングはじめました
miso
0
130
AIがGISを代替する日:〜すべてをAIが創る時代に、私たちがFOSS4Gに関わる意味〜
lehupa
0
190
素人でもできた!AIを使った短編小説創作入門
delhi09
PRO
0
280
構造で守らせる データ・法務・セキュリティ・開発チームとつくる AI時代のデータガバナンスとデータ基盤のリアル
legalontechnologies
PRO
3
710
リアクションエンジニア ― 小さなリアクションから、話しかけやすい組織をつくる ―
ryuguyana
1
100
Deep Data Security 機能解説
oracle4engineer
PRO
3
990
詳解 never 型 - ボトム型の性質を深掘り
nealle
0
130
reInvent2026stby LT00 "Change your life!"
shinichirokawano
1
520
Technical Project Manager の役割とやりがい、少しだけ AI
yoshiiryo1
0
540
kintoneで在庫管理システムを作るときの要件定義・設計ポイント
kai0707
0
200
Featured
See All Featured
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
650
Building Better People: How to give real-time feedback that sticks.
wjessup
371
20k
Designing for Timeless Needs
cassininazir
1
540
The Cult of Friendly URLs
andyhume
79
7.1k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
320
4 Signs Your Business is Dying
shpigford
187
23k
Designing Powerful Visuals for Engaging Learning
tmiket
1
630
The untapped power of vector embeddings
frankvandijk
2
2k
Prompt Engineering for Job Search
mfonobong
0
570
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
480
Large-scale JavaScript Application Architecture
addyosmani
516
110k
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
Transcript
WebσόΠετϥοΩϯάख๏ͷ հ @kuro_m88 ใՊֶएखͷձ ౙͷਞ 2019/01/20
ࣗݾհ • ࠇ࡚ ༏ଠ (@kuro_m88) • ใՊֶएखͷձ װࣄ • ࣄαʔόαΠυΤϯδχΞ
• झຯͰαʔόӡ༻Λ͍ͯ͠·͢
ຊ͓͢Δ͜ͱ • ݸਓతʹWebσόΠετϥοΩϯάख๏͕ͲΜͳͷ͕ ଘࡏ͢Δͷ͔ௐͯɺڵຯਂ͔ͬͨख๏ͷհ
σόΠετϥοΩϯάͱ
σόΠετϥοΩϯάΛ͍ͨ͠ཧ༝ • αʔόଆ͕ಉ͡ਓͱͷ௨৴Ͱ͋ΔࣄΛΓ͍ͨ • Ұൠʹ = • ෳσόΠεʹ·͕ͨΔ߹ΫϩεσόΠετϥοΩϯά
σόΠετϥοΩϯάͰͰ͖Δ͜ͱ (ྫ) • ηογϣϯ(ϩάΠϯ)ͷҡ࣋ • ϦεΫϕʔεೝূ • σδλϧϑΥϨϯδΫε • ߦಈλʔήςΟϯάࠂ
σόΠετϥοΩϯάͷͨΊʹඞཁ ͳ͜ͱ • ಉҰΛಛఆ/ਪఆ͢ΔͨΊͷใΛूΊͳ͚ΕͳΒͳ͍ • Fingerprintingͱݴ͏ͱը໘ղ૾GPUͷڍಈ UserAgent͕ྫͱͯ͠Α͘ڍ͛ΒΕΔ͕ɺεϚϗͷ߹ ΄ͱΜͲҰॹʹͳͬͯ͠·͏
σόΠετϥοΩϯάख๏ʹ ·ͭΘΔٞ • ݱ࣮ੈքͰԿ͔͠ΒͷαʔϏεΛఏڙ͢ΔதͰσόΠεΛτϥο Ωϯά͢ΔࡍϢʔβʹڐՄΛऔͬͨΓ(ΦϓτΠϯ)ɺڋ൱͢Δ ͜ͱ͕Ͱ͖ͨΓ(ΦϓτΞτ)͢Δ͜ͱ͕ଟ͍ • Ϣʔβͷίϯτϩʔϧ͕ޮ͔ͳ͍ํ๏ʹͳΔ͜ͱ͕ଟ͍ • ࠓճٕज़ͷͷΈ͠·͢
σόΠετϥοΩϯάٕज़6બʂ • Cookie • IP Address • HSTS Super Cookie
• TCP Timestamp • SSL Session Ticket • IP Address (࠶)
Cookie
Cookie • Web։ൃ͍ͯ͠ΔਓͳΒ͖ͬͱ͍ͬͯΔͣ# • Same Origin Policy͕͋Δ • ྫ: example.com
ͷCookieexample.jpͷαʔό͔ΒݟΒΕͳ͍ • Cookie SyncΛ͢Δ͜ͱͰτϥοΩϯάͰ͖Δൣғ͕ͻΖ͕Δ • AppleITPͱ͍͏ͷΛಋೖ͠CookieʹΑΔτϥοΩϯάʹ ੍ݶΛ͔͚͍ͯΔ • εϚϗͩͱIDFA/AdIDͱ͍͏ͷ͋Δ
• ࠂͷDSPͱSSPͷؒͳͲͰΑ͘ߦΘΕΔॲཧ Cookie Sync example.com: AAAA example.jp: BBBB example.com: AAAA
redirect example.jp, param: =AAAA example.jp: BBBB, param: AAAA example.com: AAAA example.jp: BBBB =
IP Address
IP Address • 192.168.0.1ͷΑ͏ʹॻ͖ද͞ΕΔͷ • ʮΠϯλʔωοτ্ͷॅॴ ʯͳͲͱݴΘΕΔ͜ͱ • 32bit, 2^32
≒ 43ԯ ௨Γͷදݱ͕Ͱ͖Δ • ٿਓޱ73ԯਓʹ1ׂͭͮͭΓͯΒΕͳ͍ͱ͍͏ܽΛ࣋ͭ
IP Address͚ͩͰτϥοΩϯάෆ ೳ • ʮΠϯλʔωοτ্ͷॅॴ ʯ= Ͱͳ͍ • ͱ͍͏ΑΓ •
͜ͷͨΊʹૹ৴ݩIP͕͔ͬͯಉҰૹ৴ݩͱݶΒͳ͍'
NAT • NetworkAddressTranslation • Global IPΞυϨεΛԆ໋/અ͢Δٕज़ • PrivateIPΛ༻͍ɺ(srcIP,srcPort,dstIP,dstPort,protocolNum)ͷ Έ߹ΘͤͰΞυϨεΛ1ରଟͰϚοϐϯά͢Δ •
ISP͕ߦ͏߹CareerGradeNATͱ͔LargeScaleNAT ͱݺΕΔ
ͱ͍͏͜ͱ… • Global IPͱPrivate IP͕1ରଟͰϚοϐϯά͞Ε͍ͯΔ͔Β ಛఆͰ͖ͳ͍ • Global IPͱPrivate IPͷΈ߹Θ͕ͤಘΒΕΕ
ಛఆͰ͖ΔͷͰ • ※2ஈҎ্ͷଟஈNATͷ߹ಛఆෆೳ
XHRํࣜ • JavaScriptͷXHRͰదͳൣғͷશͯͷPrivateIPʹϦΫΤετ Λૹ৴͠ɺฦ͖ͬͯͨͷͷϨεϙϯελΠϜΛಛྔͱ͢Δ • ύέοτΛେྔʹૹΔͱ߈ܸʹͳΓ͔Ͷͳ͍ εΩϟϯ͢Δ
WebRTCํࣜ • WebRTCͷRTCPeerConnectionͷicecandidateΛར༻͢Δ • WebRTC(P2P)ͷʮNAT͑ʯͷͨΊͷٕज़ • Private IP͕औಘͰ͖Δ ΓऔΓ͢ΔͨΊʹ͓ޓ͍ͷIPΞυϨε (Private/Global)
Λަ͢Δ
HSTS Super Cookie
HSTS Super Cookie • HSTSͱ͍͏ϓϩτίϧΛར༻ͨ͠ख๏ • HSTS: webαʔό͕httpͰΞΫηε͞Εͨ࣌ʹ࣍ճ͔Β httpsͰଓͯ͠΄͍͠ͱ͍͏ใΛՃ͢Δ •
HSTSΛೝࣝͨ͠ϒϥβ࣍ճҎ߱httpͰURL͕ೖྗ ͞Εͯ࠷ॳ͔ΒhttpsͰΞΫηε͢ΔΑ͏ʹͳΔ
HSTS Super Cookie • HSTSΛೝࣝͨ͠ϒϥβ࣍ճҎ߱httpͰURL͕ೖྗ͞Εͯ ࠷ॳ͔ΒhttpsͰΞΫηε͢ΔΑ͏ʹͳΔ • httpͰΞΫηεͤͨ͞ͷͷhttpsͰ௨৴͕དྷͨ => 1bitͷใྔ
• 32ݸͷαϒυϝΠϯΛ༻ҙͯ͠ɺHSTS͕༗ޮ/ແޮΛϥϯμϜʹ Γସ͑Δͱ32bitͷใྔʹͳΓɺ43ԯσόΠε͕ࣝผͰ͖Δ
HSTS Super Cookie • Super CookieΛ"هԱͤ͞Δ" HSTS ON HSTS OFF
HSTS ON a.example.com b.example.com c.example.com
HSTS Super Cookie • Super CookieΛ"ಡΈग़͢" • HTTPͰΞΫηεͤ͞Δ • HSTS͕༗ޮͳͱ͜Ζ͚ͩHTTPͷͭΓ͕
HTTPSͰϦΫΤετ͕͘Δ 1 0 1 HTTP HTTPS HTTPS ϢʔβͷID: 011 a.example.com b.example.com c.example.com
࣮ࡍͷڍಈ
TCP Timestamp
TCP Timestamp
RFC1323 • TCP Timestampʹ͍ͭͯنఆ • Timestamp1msʙ1ඵִؒͰ૿ܾ͢·Γ • OptionalͳϑΟʔϧυ • ߋ৽ִؒ໌ࣔ͞Ε͍ͯͳ͍,
࣮ґଘ
TCPͷγʔέϯε൪߸ͱͷҧ͍ʁ • TCP Timestamp ≠ TCP Sequence ' • γʔέϯε൪߸σʔλͷόΠτຖʹৼΒΕΔ(32bit)
• ߴͳωοτϫʔΫͰ࣌ؒͰΧϯλ͕1िͯ͠͠·͏ • λΠϜελϯϓ+γʔέϯε൪߸ͰύέοτͷॱংΛอূ͢Δ
TCP TimeStampΛτϥοΩϯάʹར༻͢Δ • ͋Δఔ(25msʙ10minఔ)ஔ͍ͨ2ͭͷTCPύέοτͷ • ౸ண࣌ࠁ(t1, t2) • TCPλΠϜελϯϓ(ts1, ts2)
• TCPλΠϜελϯϓͷपΛٻΊΔ freq = (ts2 - ts0) * 1000 / (t1 - t0)
TCP TimeStampΛτϥοΩϯάʹར༻ ͢Δ • TCPλΠϜελϯϓΛपͰׂΔ • σόΠεͷuptime(ىಈ࣌ؒ)͕ٻ·Δ • uptime͑͞ٻ·ΕIPΞυϨεͱֻ͚߹ΘͤΕ͕ ਪఆՄೳʹ(ͽͬͨΓಉ࣌ࠁʹىಈ͢Δ͍ͳ͍ͱԾఆ)
uptime = ts1 / freq
uptimeਪఆ͕؆୯ʹࢼͤΔπʔϧ • p0f (http://lcamtuf.coredump.cx/p0f3/) • ىಈͯ͠ΠϯλʔϑΣΠεΛࢦఆ͢Δ͚ͩ .-[ 10.0.3.10/47099 -> 10.0.3.1/22
(syn) ]- | | client = 10.0.3.10/47099 | os = Linux 3.11 and newer | dist = 0 | params = none | raw_sig = 4:64+0:0:1460:mss*20,7:mss,sok,ts,nop,ws:df,id+:0 | `---- .-[ 10.0.3.10/47099 -> 10.0.3.1/22 (uptime) ]- | | client = 10.0.3.10/47099 | uptime = 0 days 0 hrs 8 min (modulo 198 days) | raw_freq = 250.04 Hz |
͏·͍͔͘ͳͦ͞͏ͳ • Linuxͷ࣮ΛݟͨݶΓɺtimestampͷߋ৽CPUͷλΠϚʔׂΓࠐΈ͕ ϕʔεͬΆ͍(jiffies) • ͕εϦʔϓͯ͠ΔؒλΠϜελϯϓͷߋ৽͕ࢭ·Δ…ʁ • Linux v4.10͔ΒTCP Timestamp͕ίωΫγϣϯ͝ͱʹϥϯμϜʹͳͬͨ
• https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/ commit/?id=95a22caee396cef0bb2ca8fafdd82966a49367bb
SSL Session Ticket
SSL Handshake https://blogs.msdn.microsoft.com/kaushal/2013/08/02/ssl-handshake-and-https-bindings-on-iis/
SSL Session Ticket https://techblog.yahoo.co.jp/infrastructure/ssl-session-resumption/
SSL Session Ticket https://techblog.yahoo.co.jp/infrastructure/ssl-session-resumption/
SSL Session TicketΛτϥοΩϯάʹ ͏ ͨ͠νέοτΛͬͯ࠶ଓͯ͘͠ΔͷͰ ಉҰϢʔβͩͱΘ͔Δ
IP Address (࠶)
IPv6 • ͖͞΄ͲͷྫIPv4 • IPv4͔ΒҠߦதͷٕज़(ͱݴΘΕ͍ͯΔ) • 2001:240:2401:4f7f:d051:d1bf:544e:cfc0 ͜Μͳײ͡Ͱද͞ΕΔ • 128bit,
2^128 ≒ 340ݸ • ਓྨͷͷໟ1ຊ1ຊʹΞυϨεΛׂΓͯͯશ͘৺ͳ͍ εέʔϥϏϦςΟ(ͱݴΘΕ͍ͯΔ)
IPv6NAT͠ͳ͍ͷ͔ʁ • NATෆཁ (NAT as a Firewallͷ࣌ऴΘΔ…ʁ) • → 1IP
= ͷ͕͖͍࣌ͯΔ • සൟʹม͑Δͱ௨৴ཱ͕͠ͳ͘ͳΔ • !໋ͳIDͱͯ͠ػೳ͠͏Δ
IPv6ͷσϓϩΠঢ়گ • Appleͷ৹ࠪͰIPv6ରԠ͕ඞਢʹ • ຊͷܞଳΩϟϦΞIPv6σϓϩΠʹফۃతͩͬͨ • ૯লౖ͕ͬͯ2017தͷ ಋೖΛཁ • ࠓͰΘΓͱ
ීٴ͖͍ͯͯ͠Δͣ
·ͱΊ • ༷ʑͳσόΠεͷτϥοΩϯάख๏Λௐࠪ͠·ͨ͠ • ཁૉٕज़ͷత͔Β͢ΔͱҙਤͤͣτϥοΩϯάͰ͖ ͯ͠·͏ͷʹؔͯ͠ηΩϡϦςΟ্ͷཧ༝͔Βम ਖ਼͕Ճ͑ΒΕ͍ͯΔͷ͋Δ