How Tracking Companies Circumvented Ad Blockers Using WebSockets
Muhammad Ahmad Bashir, Sajjad Arshad, Engin Kirda, William Robertson, Christo Wilson
Northeastern University
How Tracking Companies Circumvented Ad Blockers Using WebSockets - - PowerPoint PPT Presentation
How Tracking Companies Circumvented Ad Blockers Using WebSockets Muhammad Ahmad Bashir, Sajjad Arshad, Engin Kirda, William Robertson, Christo Wilson Northeastern University Online Tracking 2 Online Tracking Surge in online
Northeastern University
2
Surge in online advertising (internet economy)
2
Surge in online advertising (internet economy)
2
User concern over tracking
Surge in online advertising (internet economy)
2
User concern over tracking
Ad networks fight back
(Jonathan Mayer)
3
4
4
5
5
HTTP/S
5
HTTP/S
request response
5
HTTP/S
request response
Chatting App
5
HTTP/S
request response
Chatting App
anything new?
5
HTTP/S
request response
Chatting App
anything new?
Web Socket
5
HTTP/S
request response
Chatting App
anything new?
Web Socket
bidirectional
5
HTTP/S
request response
Chatting App
anything new?
Web Socket
bidirectional ws:// or wss://
6
6
6
webRequest API
6
http://cnn.com/logo.jpeg
webRequest API
6
http://cnn.com/logo.jpeg
webRequest API Rule List
Usually borrowed from EasyList
6
http://cnn.com/logo.jpeg
webRequest API Rule List
url
Usually borrowed from EasyList
6
http://cnn.com/logo.jpeg
webRequest API Rule List
url
Usually borrowed from EasyList
6
http://cnn.com/logo.jpeg
webRequest API Rule List
url
Usually borrowed from EasyList
6
http://cnn.com/logo.jpeg
webRequest API Rule List
url
webRequest API
Usually borrowed from EasyList
6
http://cnn.com/logo.jpeg
webRequest API Rule List
http://doubleclick.com/s1.js url
webRequest API
Usually borrowed from EasyList
6
http://cnn.com/logo.jpeg
webRequest API Rule List
http://doubleclick.com/s1.js url
webRequest API
url
Usually borrowed from EasyList
6
http://cnn.com/logo.jpeg
webRequest API Rule List
http://doubleclick.com/s1.js url
webRequest API
url
Usually borrowed from EasyList
6
http://cnn.com/logo.jpeg
webRequest API Rule List
http://doubleclick.com/s1.js url
webRequest API
url
Usually borrowed from EasyList
7
7
webRequest API
7
2012 2013 2014 2015 2016 2017 2018
webRequest API
7
2012 2013 2014 2015 2016 2017 2018
Original bug reported
webRequest API
7
2012 2013 2014 2015 2016 2017 2018
Original bug reported Users report unblocked ads
webRequest API
7
2012 2013 2014 2015 2016 2017 2018
Original bug reported Users report unblocked ads Patch Finalized ( Landed)
webRequest API
7
2012 2013 2014 2015 2016 2017 2018
Original bug reported Users report unblocked ads Patch Finalized ( Landed) Chrome 58 released
webRequest API
7
2012 2013 2014 2015 2016 2017 2018
* * * *
Original bug reported Users report unblocked ads Patch Finalized ( Landed) Chrome 58 released
* Represents when our crawls were done
webRequest API
8
8
100K websites sampled from Alexa
8
100K websites sampled from Alexa
Visit 15 links / website
Collected chains for all included resources
8
100K websites sampled from Alexa
Visit 15 links / website
Collected chains for all included resources
This means we know which resource included which other resource
8
100K websites sampled from Alexa
Visit 15 links / website
Collected chains for all included resources Filter all resources which end in web sockets
Filter WebSockets
This means we know which resource included which other resource
8
100K websites sampled from Alexa
Visit 15 links / website
Collected chains for all included resources Filter all resources which end in web sockets
Filter WebSockets Detect A&A WebSockets
Mark web sockets which are used by A&A domains
A&A = Advertising and Analytics e.g. DoubleClick, Criteo, Adnxs This means we know which resource included which other resource
8
100K websites sampled from Alexa
Visit 15 links / website
Collected chains for all included resources Filter all resources which end in web sockets
Filter WebSockets Detect A&A WebSockets
Mark web sockets which are used by A&A domains
A&A = Advertising and Analytics e.g. DoubleClick, Criteo, Adnxs This means we know which resource included which other resource
pub/ index.html srv.ws ads/ script.js ads/ frame.html ads/ img_a.jpg adnet/ data.ws
Example Inclusion Tree
8
100K websites sampled from Alexa
Visit 15 links / website
Collected chains for all included resources Filter all resources which end in web sockets
Filter WebSockets Detect A&A WebSockets
Mark web sockets which are used by A&A domains
A&A = Advertising and Analytics e.g. DoubleClick, Criteo, Adnxs This means we know which resource included which other resource
pub/ index.html srv.ws ads/ script.js ads/ frame.html ads/ img_a.jpg adnet/ data.ws
Example Inclusion Tree
WebSocket WebSocket
8
100K websites sampled from Alexa
Visit 15 links / website
Collected chains for all included resources Filter all resources which end in web sockets
Filter WebSockets Detect A&A WebSockets
Mark web sockets which are used by A&A domains
A&A = Advertising and Analytics e.g. DoubleClick, Criteo, Adnxs This means we know which resource included which other resource
pub/ index.html srv.ws ads/ script.js ads/ frame.html adnet/ data.ws
Example Inclusion Tree
WebSocket WebSocket
8
100K websites sampled from Alexa
Visit 15 links / website
Collected chains for all included resources Filter all resources which end in web sockets
Filter WebSockets Detect A&A WebSockets
Mark web sockets which are used by A&A domains
A&A = Advertising and Analytics e.g. DoubleClick, Criteo, Adnxs This means we know which resource included which other resource
pub/ index.html ads/ script.js ads/ frame.html adnet/ data.ws
Example Inclusion Tree
WebSocket
9
9
Crawl Dates %Websites with sockets % Sockets with A&A Initiators % Sockets with A&A Receivers #Unique A&A Initiators #Unique A&A Receivers Apr 02-05, 2017 2.1 60.6 73.7 75 16 Apr 11-16, 2017 2.4 61.3 74.6 63 18 May 07-12, 2017 1.6 60.2 69.7 19 15 Oct 12-16, 2017 2.5 63.4 63.7 23 18 Before Chrome 58
9
Crawl Dates %Websites with sockets % Sockets with A&A Initiators % Sockets with A&A Receivers #Unique A&A Initiators #Unique A&A Receivers Apr 02-05, 2017 2.1 60.6 73.7 75 16 Apr 11-16, 2017 2.4 61.3 74.6 63 18 May 07-12, 2017 1.6 60.2 69.7 19 15 Oct 12-16, 2017 2.5 63.4 63.7 23 18 Before Chrome 58 After Chrome 58
9
Crawl Dates %Websites with sockets % Sockets with A&A Initiators % Sockets with A&A Receivers #Unique A&A Initiators #Unique A&A Receivers Apr 02-05, 2017 2.1 60.6 73.7 75 16 Apr 11-16, 2017 2.4 61.3 74.6 63 18 May 07-12, 2017 1.6 60.2 69.7 19 15 Oct 12-16, 2017 2.5 63.4 63.7 23 18
Before Chrome 58 After Chrome 58
9
Crawl Dates %Websites with sockets % Sockets with A&A Initiators % Sockets with A&A Receivers #Unique A&A Initiators #Unique A&A Receivers Apr 02-05, 2017 2.1 60.6 73.7 75 16 Apr 11-16, 2017 2.4 61.3 74.6 63 18 May 07-12, 2017 1.6 60.2 69.7 19 15 Oct 12-16, 2017 2.5 63.4 63.7 23 18
Before Chrome 58 After Chrome 58
A&A = Advertising and Analytics e.g. DoubleClick, Criteo, Adnxs
9
Crawl Dates %Websites with sockets % Sockets with A&A Initiators % Sockets with A&A Receivers #Unique A&A Initiators #Unique A&A Receivers Apr 02-05, 2017 2.1 60.6 73.7 75 16 Apr 11-16, 2017 2.4 61.3 74.6 63 18 May 07-12, 2017 1.6 60.2 69.7 19 15 Oct 12-16, 2017 2.5 63.4 63.7 23 18
Before Chrome 58 After Chrome 58
A&A = Advertising and Analytics e.g. DoubleClick, Criteo, Adnxs
9
Crawl Dates %Websites with sockets % Sockets with A&A Initiators % Sockets with A&A Receivers #Unique A&A Initiators #Unique A&A Receivers Apr 02-05, 2017 2.1 60.6 73.7 75 16 Apr 11-16, 2017 2.4 61.3 74.6 63 18 May 07-12, 2017 1.6 60.2 69.7 19 15 Oct 12-16, 2017 2.5 63.4 63.7 23 18
Before Chrome 58 After Chrome 58
A&A = Advertising and Analytics e.g. DoubleClick, Criteo, Adnxs
9
Crawl Dates %Websites with sockets % Sockets with A&A Initiators % Sockets with A&A Receivers #Unique A&A Initiators #Unique A&A Receivers Apr 02-05, 2017 2.1 60.6 73.7 75 16 Apr 11-16, 2017 2.4 61.3 74.6 63 18 May 07-12, 2017 1.6 60.2 69.7 19 15 Oct 12-16, 2017 2.5 63.4 63.7 23 18
Before Chrome 58 After Chrome 58
A&A = Advertising and Analytics e.g. DoubleClick, Criteo, Adnxs
10
10
Initiator Receiver
JavaScript
10
Initiator Receiver ws/s
JavaScript
10
Initiator Receiver ws/s
JavaScript
10
A&A Initiator #A&A Receivers facebook 11 google 11 doubleclick 9 youtube 8 addthis 8 hotjar 7 googlesyndication 6 twitter 5 sharethis 4 adnxs 3
Top A&A Initiators
Initiator Receiver ws/s
JavaScript
10
A&A Initiator #A&A Receivers facebook 11 google 11 doubleclick 9 youtube 8 addthis 8 hotjar 7 googlesyndication 6 twitter 5 sharethis 4 adnxs 3
Top A&A Initiators
Initiator Receiver ws/s
JavaScript
10
A&A Initiator #A&A Receivers facebook 11 google 11 doubleclick 9 youtube 8 addthis 8 hotjar 7 googlesyndication 6 twitter 5 sharethis 4 adnxs 3 A&A Receiver #A&A Initiators realtime 27 33across 19 intercom 16 disqus 13 zopim 12 hotjar 11 feedjit 10 lockerdome 8 inspectlet 6 smartsupp 4
Top A&A Initiators Top A&A Receivers
Initiator Receiver ws/s
JavaScript
10
A&A Initiator #A&A Receivers facebook 11 google 11 doubleclick 9 youtube 8 addthis 8 hotjar 7 googlesyndication 6 twitter 5 sharethis 4 adnxs 3 A&A Receiver #A&A Initiators realtime 27 33across 19 intercom 16 disqus 13 zopim 12 hotjar 11 feedjit 10 lockerdome 8 inspectlet 6 smartsupp 4
Top A&A Initiators Top A&A Receivers
Initiator Receiver ws/s
comment board services.
JavaScript
10
A&A Initiator #A&A Receivers facebook 11 google 11 doubleclick 9 youtube 8 addthis 8 hotjar 7 googlesyndication 6 twitter 5 sharethis 4 adnxs 3 A&A Receiver #A&A Initiators realtime 27 33across 19 intercom 16 disqus 13 zopim 12 hotjar 11 feedjit 10 lockerdome 8 inspectlet 6 smartsupp 4
Top A&A Initiators Top A&A Receivers
Initiator Receiver ws/s
comment board services.
Smartsupp provide live chat services.
JavaScript
10
A&A Initiator #A&A Receivers facebook 11 google 11 doubleclick 9 youtube 8 addthis 8 hotjar 7 googlesyndication 6 twitter 5 sharethis 4 adnxs 3 A&A Receiver #A&A Initiators realtime 27 33across 19 intercom 16 disqus 13 zopim 12 hotjar 11 feedjit 10 lockerdome 8 inspectlet 6 smartsupp 4
Top A&A Initiators Top A&A Receivers
Initiator Receiver ws/s
comment board services.
Smartsupp provide live chat services.
are advertising platforms.
JavaScript
10
A&A Initiator #A&A Receivers facebook 11 google 11 doubleclick 9 youtube 8 addthis 8 hotjar 7 googlesyndication 6 twitter 5 sharethis 4 adnxs 3 A&A Receiver #A&A Initiators realtime 27 33across 19 intercom 16 disqus 13 zopim 12 hotjar 11 feedjit 10 lockerdome 8 inspectlet 6 smartsupp 4
Top A&A Initiators Top A&A Receivers
Initiator Receiver ws/s
comment board services.
Smartsupp provide live chat services.
are advertising platforms.
session replay services.
JavaScript
11
11
Cookie IP User IDs Fingerprinting Variables DOM
% Requests
20 40 60 80
WebSockets HTTP/S
11
Cookie IP User IDs Fingerprinting Variables DOM
% Requests
20 40 60 80
WebSockets HTTP/S
11
97% is 33across
Cookie IP User IDs Fingerprinting Variables DOM
% Requests
20 40 60 80
WebSockets HTTP/S
11
97% is 33across
Hotjar, LuckyOrange, TruConversion
Cookie IP User IDs Fingerprinting Variables DOM
% Requests
20 40 60 80
WebSockets HTTP/S
12
12
HTML JSON JavaScript Images
% Responses
10 20 30 40 50
WebSockets HTTP/S
12
HTML JSON JavaScript Images
% Responses
10 20 30 40 50
WebSockets HTTP/S
12
HTML JSON JavaScript Images
% Responses
10 20 30 40 50
WebSockets HTTP/S
12
Ads served from Lockerdome
HTML JSON JavaScript Images
% Responses
10 20 30 40 50
WebSockets HTTP/S
Abandoned after Chrome 58 was released.
13
Abandoned after Chrome 58 was released.
13
ahmad@ccs.neu.edu
15
<html> <body> <script src=“tracker/script.js” </script> <img src=“tracker/img.jpg”> </img> <script src=“ads/script.js”> </script> <iframe src=“frame.html”> <html> <body> <script src=“script_12.js”> </script> <img src=“img_a.jpg”> </img> </body> </html> </iframe> </body> </html> pub/ index.html tracker/ script.js tracker/ img.jpg ads/ script.js ads/ frame.html ads/ script_12.js ads/ img_a.jpg adnet/ data.ws
Source code for ads/script_12.js let ws = new WebSocket(“ws://adnet/data.ws”, …); ws.onopen = function (e) {ws.send(“…”);}
DOM Tree Inclusion Tree