voxxeddays.com/luxembourg/ #voxxeddaysLU
Abuse web browsers
for fun & profits
Dominique Righetto, Excellium
@righettod
voxxeddays.com/luxembourg/ #voxxeddaysLU
Warning
• This talk will not contain stuff like this
voxxeddays.com/luxembourg/ #voxxeddaysLU
Why abusing browsers?
• Today modern web browsers on Mobile or Desktop :
• Contains plenty of features through native components or plugins.
• Are used as preferred client to access new applications.
• Most of the new applications are web based (thanks Mister Cloud ).
• Security at infrastructure/network is now quite mature.
• Targeting client side and users are more “fruitful” because you
can’t standardize people behavior or mindset.
voxxeddays.com/luxembourg/ #voxxeddaysLU
Our problem
• As penetration tester, the
most important step on a
attack is dedicated to
reconnaissance and
analysis of the target entity.
• Based on the offline analysis
of the grabbed data, we can
further create attack scenarii
and customize related
content.
Reco
Grab as much information as
possible about our victims in
the most stealthy way
Quickly list all available
attack surfaces.
Perform operation on a
variable number of victims.
Support, if possible, modern
and quite old browsers.
voxxeddays.com/luxembourg/ #voxxeddaysLU
Our friend
HTML5
Cross Origin Resource Sharing.
WebSocket.
JavaScript
New native features + JQuery (branch 1.x).
Some other JavaScript libraries for specific job
like hashing or cookie management.
PIWIK
Building block for report rendering and keep
gathered data in-house.
PHP / Symfony / Composer
Handle server side operations.
Our team is composed by PHP integrist so we
can’t fight 
voxxeddays.com/luxembourg/ #voxxeddaysLU
Note about CORS and Web Socket
• Same Origin Policy (SOP for friends) is a pillar of the security
on the web because it restricts the capacity of an hidden caller
(for example Ajax) to contact arbitrary domain in a easy way
(most bypass was using JSONP type call or loading through
tags like IMG/SCRIPT/STYLE/IFRAME…).
• But thanks to HTML5…
• Web Socket is currently not restricted by the SOP.
• CORS configuration is HTTP headers based so, an attacker can easily
configure CORS on his domain to accept any call.
voxxeddays.com/luxembourg/ #voxxeddaysLU
Our enemies
• As we will use only legal
web client side
technologies and we want
to be stealth, we must take
care about:
User
Workstation
antivirus
Web proxy
Firewall
voxxeddays.com/luxembourg/ #voxxeddaysLU
Global approach
• Implements a simple web application, plugins based, in which
each plugin:
• Will be executed on client side.
• Will be in charge of grabbing a specific information.
• Information will be grouped by entity targeted and a visitor
(victim) will have a unique ID in order to track it.
• URL will be provided to victims using the following vectors:
• Phishing ( in our campaign, each time, more than 30% of the targeted
users click  ).
• Via compromising of a "water hole" site.
voxxeddays.com/luxembourg/ #voxxeddaysLU
Global approach
WUI layer
(grab infos)
Plugin X
Controller layer
(store/expose infos)
Storage layer
(database)
Victim browser context
Plugin X
Loading
Send result
voxxeddays.com/luxembourg/ #voxxeddaysLU
Interesting information
• As the final objective is to determine one or several attack
surfaces and according to browser capacities, the following
information are interesting for us:
• Browser name/version + all plugins info + OS name/version:
• Will be used to find a plugin or a browser vulnerable (ex: IE < 11 because
Microsoft do not update them anymore since February 2016).
• Will be used also to determine the type of user because, for example, often Sys
Admin user:
• Have special plugins like one for VMWARE.
• Have local admin or privileged rights 
voxxeddays.com/luxembourg/ #voxxeddaysLU
Interesting information
• Web Socket support level by Browser and Web Proxy:
• Will be used to know if we can use Web Socket to create a 2 way communication
channel because Web Socket is not limited by the Same Origin Policy.
• Site categories on which the user is allowed to browse:
• Will be used to know if we can use site like
Twitter/GitHub/Pastebin/GoogleDrive/Dropbox…for data infiltration/exfiltration.
voxxeddays.com/luxembourg/ #voxxeddaysLU
Interesting information
• File type allowed to be downloaded by the victim from the web:
• Will be used to know, using which file type, we can use as infection vector to
deliver the attack.
• Specific services running on the victim workstation like Tomcat,
MySQL, Oracle, SonarQube, WAS…
• Will be used to know if the victim is a developer because often developer:
• Have local admin or privileged rights 
• Workstation can contains interesting credentials or information.
• Have a set of exception rules about Antivirus real-time scanning.
voxxeddays.com/luxembourg/ #voxxeddaysLU
Interesting information
• Identify the name and version of the Web Proxy:
• Will be used to find vulnerability and bypass for data infiltration or exfiltration.
• CPU and GPU information of the victim workstation:
• Will be used to create a malware that only executes if it detect this type of
CPU/GPU and then escape malware sandboxes.
voxxeddays.com/luxembourg/ #voxxeddaysLU
Interesting information
• Type of Internet connection:
• Will be used to determine the download / upload capacities of the victim
infrastructure and then provides which exfiltration capacity that can be used for
data infiltration or exfiltration.
• Will also be used to determine if the victim work from home/public WIFI….Useful
to find additional attack surfaces…
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°1 - Approach
• Browser name/version + all plugins info + OS name/version:
1. On modern browsers, use the native object « navigator.plugins » to
retrieve plugins list.
2. Enhance detection using the library « PluginDetect » in order to
support old browsers:
• http://www.pinlady.net/PluginDetect/
3. Retrieve user agent and OS information using the library
« UAParser »:
• https://github.com/faisalman/ua-parser-js
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°1 - Data sample
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°2 - Approach
• Web Socket support level by Browser and Web Proxy:
1. Detect if browser support Web Socket using the native object
"window.WebSocket".
2. If browser support WS then try to send a unique message to the open
relay "echo.websocket.org":
• If we receive, in response, the message sent Web Proxy support WS.
• Otherwise  Web Proxy do not support WS.
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°2 - Data sample
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°3 - Approach
• Site categories on which the user is allowed to browse:
• During the plugin implementation:
1. A list of site, with their associated category, has been built by grabbing the
information against several Web Proxy vendors (ex: Palo Alto / Bluecoat…)
2. The list of site has been grouped by Web Proxy vendor and has been
enhanced with custom local sites and categories (ex: l’essentiel, itnations,
paperjam….).
3. For each site, the smallest image available has been searched on it and was
kept as reference test link.
4. So, the list of sites is now a list of links grouped by categories and Web Proxy
vendor.
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°3 - Approach
• Site categories on which the user is allowed to browse:
• Plugin processing:
• For each link, a HTML IMG tag is generated and added to DOM.
• A random url parameter, in order to avoid caching by the browser, is added to all
url links.
• Each HTML IMG contains a handler on the following events:
• "onload" : Set the flag indicating that the site is allowed because the image can be
loaded.
• "onerror" : Set the flag indicating that the site is NOT allowed because the image
cannot be loaded.
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°3 - Data sample
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°4 - Approach
• File type allowed to be downloaded by the victim from the web:
• During the plugin implementation:
1. A list of specific files that can be used as infection vector has been built.
2. Each file is linked to is digest using SHA-256 algorithm.
• Example of tested files format:
• Microsoft Office supporting auto start VBA macros and OLE packages.
• Windows native and .Net binaries.
• Java auto executable archive.
• Adobe Portable Data Format.
• Windows Script File.
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°4 - Approach
• File type allowed to be downloaded by the victim from the web:
• Plugin processing:
• For each file
1. Send a Ajax GET request in order to retrieve the file content.
2. Compare the computed hash of the retrieved file content against the hash associated
to the file.
3. If they match  File type allowed to be downloaded and not altered by Web Proxy.
4. Otherwise  File type not allowed to be downloaded or altered by Web Proxy.
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°4 - Data sample
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°5 - Approach
• Specific services running on the victim workstation like Tomcat,
MySQL, Oracle, SonarQube, WAS…
• Based on research performed by Lavakumar Kuppan & Manish
Saindane:
• http://www.andlabs.org/tools/jsrecon/jsrecon.html
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°5 - Approach
• Specific services running on the victim workstation like Tomcat,
MySQL, Oracle, SonarQube, WAS…
1. Test open state of dedicated ports on victim loopback IP address
using Web Socket.
2. Analyze the time taken by the WS "readyState" attribute to move from
initial state 0 to further state 1/2/3.
3. According to the delay taken, the open/closed/filtered state is
deducted. Constant Value Description
CONNECTING 0 The connection is not yet open.
OPEN 1 The connection is open and ready to communicate.
CLOSING 2 The connection is in the process of closing.
CLOSED 3 The connection is closed or couldn't be opened.
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°5 - Data sample
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°6 - Approach
• Identify the name and version of the Web Proxy:
1. Analyze request HTTP header to detect presence of headers added
by the Web Proxy like for example: X-Cache-Lookup, X-Cache, Via...
2. Capture the Web Proxy error page by returning a TCP RESET to a
specific Ajax GET request.
3. Use Cross Origin Resource Sharing to send error page captured to
storage controller.
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°6 - Approach
Browser Web Proxy Application
Request Request
TCP RSTProxy Error Page
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°6 - Data sample
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°7 - Approach
• CPU and GPU information of the victim workstation :
1. Retrieve CPU information using the library "UAParser" and the native
object "navigator.platform".
2. Retrieve number of CPU Core using the native object
"navigator.hardwareConcurrency".
3. Retrieve GPU information using HTML5 Canvas and the extension
"WEBGL_debug_renderer_info" if this one is available otherwise get
information from Canvas object instance directly.
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°7 - Data sample
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°8 - Approach
• Type of Internet connection :
1. If the site https://ipleak.net can be browsed by the victim then perform
an Ajax request on it Site allow CORS request from anyone 
2. Parse page to extract information about Internet connection.
voxxeddays.com/luxembourg/ #voxxeddaysLU
Plugin n°8 - Data sample
voxxeddays.com/luxembourg/ #voxxeddaysLU
Global attack process resume
Excellium NetworkTarget Network
Browser
(user)
Fingerprinting
Application
Malware
Factory
Information
storage
A B
C
D
E
F
Malware
C&C
voxxeddays.com/luxembourg/ #voxxeddaysLU
Which possible mitigation?
• To be honest, it’s very difficult to block extraction of the
information described into this presentation…
• However, some action can be put in place to limit the amount of
disclosed data, it’s a matter of attack surface available.
voxxeddays.com/luxembourg/ #voxxeddaysLU
Which possible mitigation?
• The following actions try to reduce the attack surface available:
• Limit, to the minimum possible according the business need, the
number of plugins installed in browsers : in 2016 Flash is still really
needed? Same question about Java runtime registration into browser?
• Keep browsers, plugins and OS up to date:
• https://browsercheck.qualys.com/?scan_type=js
• Apply the more strict as possible site filtering, if a site is not categorized
then block it by default and require to user to ask you the unlocking in
order to obtains explanation about is utility:
• For example as developer, access to https://stackoverflow.com/ is mandatory but
not http://pastebin.com/
voxxeddays.com/luxembourg/ #voxxeddaysLU
Which possible mitigation?
• Limit the number of file type allowed to be downloaded directly using
the Web Proxy (no EXE/WSH/VBS/JAR...)
• Even Jar file, use a dedicated Proxy like Nexus or Artifactory !
• Disable WebRTC and install Ghostery:
• https://www.ghostery.com/try-us/download-browser-extension/
• https://addons.mozilla.org/en-US/firefox/addon/happy-bonobo-disable-webrtc/
voxxeddays.com/luxembourg/ #voxxeddaysLU
Thanks you !!!
Question ?
If you want to see a live demo, come to me after the talk…
http://excellium-services.com - http://www.emergenc6.com

More Related Content

PDF
Introduction to Web Application Security - Blackhoodie US 2018
PDF
Defcon 22-david-wyde-client-side-http-cookie-security
PDF
Do you lose sleep at night?
PDF
Dark Fairytales from a Phisherman (Vol. II)
PPTX
Webinar - Tips and Tricks on Website Security
PDF
Html5 hacking
ODP
BSides Cleveland: Active Defense - Helping threat actors hack themselves!
PDF
Wi-Fi Hotspot Attacks
Introduction to Web Application Security - Blackhoodie US 2018
Defcon 22-david-wyde-client-side-http-cookie-security
Do you lose sleep at night?
Dark Fairytales from a Phisherman (Vol. II)
Webinar - Tips and Tricks on Website Security
Html5 hacking
BSides Cleveland: Active Defense - Helping threat actors hack themselves!
Wi-Fi Hotspot Attacks

What's hot (15)

ODP
OISF Aniversary: Active Defense - Helping threat actors hack themselves!
PDF
ZeroNights2012_BeEF_Workshop_antisnatchor
PDF
Rooting Your Internals: Inter-Protocol Exploitation, custom shellcode and BeEF
PPTX
Taking Hunting to the Next Level: Hunting in Memory
PDF
Hunting For Exploit Kits
PPTX
Analysis of HTTP Security Headers in Turkey
PPTX
BSIDES-PR Keynote Hunting for Bad Guys
PDF
Reading Group Presentation: Web Attacks on Host-Proof Encrypted Storage
PDF
Ch 10: Hacking Web Servers
PDF
Red Team Tactics for Cracking the GSuite Perimeter
PDF
Corporations - the new victims of targeted ransomware
PDF
CNIT 129: 6. Attacking Authentication
PPTX
WordPress Security: Defend yourself against digital invaders
PDF
CMS Hacking Tricks - DerbyCon 4 - 2014
PDF
Jose Selvi - FIESTA: an HTTPS side-channel party [rooted2018]
OISF Aniversary: Active Defense - Helping threat actors hack themselves!
ZeroNights2012_BeEF_Workshop_antisnatchor
Rooting Your Internals: Inter-Protocol Exploitation, custom shellcode and BeEF
Taking Hunting to the Next Level: Hunting in Memory
Hunting For Exploit Kits
Analysis of HTTP Security Headers in Turkey
BSIDES-PR Keynote Hunting for Bad Guys
Reading Group Presentation: Web Attacks on Host-Proof Encrypted Storage
Ch 10: Hacking Web Servers
Red Team Tactics for Cracking the GSuite Perimeter
Corporations - the new victims of targeted ransomware
CNIT 129: 6. Attacking Authentication
WordPress Security: Defend yourself against digital invaders
CMS Hacking Tricks - DerbyCon 4 - 2014
Jose Selvi - FIESTA: an HTTPS side-channel party [rooted2018]
Ad

Viewers also liked (14)

DOCX
ESTUDIO BIOGRÁFICO DE UN PERSONAJE IMPORTANTE DE LA ESPE
PPTX
Medidas de dispersion
DOCX
Trabajo grupal de ubv
DOCX
Lacorrupcion temadealejandro (1)
DOC
CV 2016
DOC
PPTX
Promocion de word
PPT
Proyecto ambiental fotografías
PPTX
MAPA DE GEORREFERENCIACIÓN DE LA UNIVERDIDAD DE LAS FURZAS ARMADAS -ESPE
PPTX
Georreferenciación
RTF
Pesquisa sobre a nova camisa da seleção brasileira
PPTX
Mastery journey timeline
PPTX
Distribucion de frecuencias
PPTX
Aplicaciones google jhon angamarca
ESTUDIO BIOGRÁFICO DE UN PERSONAJE IMPORTANTE DE LA ESPE
Medidas de dispersion
Trabajo grupal de ubv
Lacorrupcion temadealejandro (1)
CV 2016
Promocion de word
Proyecto ambiental fotografías
MAPA DE GEORREFERENCIACIÓN DE LA UNIVERDIDAD DE LAS FURZAS ARMADAS -ESPE
Georreferenciación
Pesquisa sobre a nova camisa da seleção brasileira
Mastery journey timeline
Distribucion de frecuencias
Aplicaciones google jhon angamarca
Ad

Similar to VoxxedDays Luxembourg - Abuse web browsers for fun & profits - Dominique Righetto (20)

PPTX
Burpsuite yara
PPTX
WordPress Security and Best Practices
PPT
Arcomem training Specifying Crawls Beginners
PDF
Krzysztof kotowicz. something wicked this way comes
ODP
New or obscure web browsers (4x3 draft 5)
 
PDF
Something wicked this way comes - CONFidence
PDF
Html5 Application Security
PDF
Mobile Hybrid Development with WordPress
PDF
GeneralMobile Hybrid Development with WordPress
PDF
Antisnatchor all you ever wanted to know about beef
PDF
Chrome extensions threat analysis and countermeasures
PPTX
Deep and Dark internet Safari, How to hire a hacker? Robbrecht van Amerongen
KEY
Towards a More Secure, Reliable, and Performant Web: Tools / Approaches to Help
PPTX
Burp Suite is a powerful and widely-used tool
PPT
Arcomem training specifying-crawls
PPTX
Browser Hacking For Fun and Profit | Null Bangalore Meetup 2019 | Divyanshu S...
PPT
Arcomem training Specifying Crawls Advanced
PDF
My Media at University of Toronto Libraries
PPTX
Web & Cloud Security in the real world
PPTX
How to stay protected against ransomware
Burpsuite yara
WordPress Security and Best Practices
Arcomem training Specifying Crawls Beginners
Krzysztof kotowicz. something wicked this way comes
New or obscure web browsers (4x3 draft 5)
 
Something wicked this way comes - CONFidence
Html5 Application Security
Mobile Hybrid Development with WordPress
GeneralMobile Hybrid Development with WordPress
Antisnatchor all you ever wanted to know about beef
Chrome extensions threat analysis and countermeasures
Deep and Dark internet Safari, How to hire a hacker? Robbrecht van Amerongen
Towards a More Secure, Reliable, and Performant Web: Tools / Approaches to Help
Burp Suite is a powerful and widely-used tool
Arcomem training specifying-crawls
Browser Hacking For Fun and Profit | Null Bangalore Meetup 2019 | Divyanshu S...
Arcomem training Specifying Crawls Advanced
My Media at University of Toronto Libraries
Web & Cloud Security in the real world
How to stay protected against ransomware

Recently uploaded (20)

PDF
IT Consulting Services to Secure Future Growth
PPTX
Streamlining Project Management in the AV Industry with D-Tools for Zoho CRM ...
PPTX
Why 2025 Is the Best Year to Hire Software Developers in India
PDF
Mobile App Backend Development with WordPress REST API: The Complete eBook
PDF
CapCut PRO for PC Crack New Download (Fully Activated 2025)
PDF
Building an Inclusive Web Accessibility Made Simple with Accessibility Analyzer
PDF
Engineering Document Management System (EDMS)
PPTX
Bandicam Screen Recorder 8.2.1 Build 2529 Crack
PDF
MAGIX Sound Forge Pro CrackSerial Key Keygen
PDF
Sanket Mhaiskar Resume - Senior Software Engineer (Backend, AI)
PPTX
HackYourBrain__UtrechtJUG__11092025.pptx
PPTX
Beige and Black Minimalist Project Deck Presentation (1).pptx
PDF
SOFTWARE ENGINEERING Software Engineering (3rd Edition) by K.K. Aggarwal & Yo...
PPTX
A Spider Diagram, also known as a Radial Diagram or Mind Map.
PPTX
UNIT II: Software design, software .pptx
PDF
Bright VPN Crack Free Download (Latest 2025)
PDF
Coding with GPT-5- What’s New in GPT 5 That Benefits Developers.pdf
PDF
Odoo Construction Management System by CandidRoot
PPTX
Folder Lock 10.1.9 Crack With Serial Key
PPTX
Human-Computer Interaction for Lecture 2
IT Consulting Services to Secure Future Growth
Streamlining Project Management in the AV Industry with D-Tools for Zoho CRM ...
Why 2025 Is the Best Year to Hire Software Developers in India
Mobile App Backend Development with WordPress REST API: The Complete eBook
CapCut PRO for PC Crack New Download (Fully Activated 2025)
Building an Inclusive Web Accessibility Made Simple with Accessibility Analyzer
Engineering Document Management System (EDMS)
Bandicam Screen Recorder 8.2.1 Build 2529 Crack
MAGIX Sound Forge Pro CrackSerial Key Keygen
Sanket Mhaiskar Resume - Senior Software Engineer (Backend, AI)
HackYourBrain__UtrechtJUG__11092025.pptx
Beige and Black Minimalist Project Deck Presentation (1).pptx
SOFTWARE ENGINEERING Software Engineering (3rd Edition) by K.K. Aggarwal & Yo...
A Spider Diagram, also known as a Radial Diagram or Mind Map.
UNIT II: Software design, software .pptx
Bright VPN Crack Free Download (Latest 2025)
Coding with GPT-5- What’s New in GPT 5 That Benefits Developers.pdf
Odoo Construction Management System by CandidRoot
Folder Lock 10.1.9 Crack With Serial Key
Human-Computer Interaction for Lecture 2

VoxxedDays Luxembourg - Abuse web browsers for fun & profits - Dominique Righetto

  • 1. voxxeddays.com/luxembourg/ #voxxeddaysLU Abuse web browsers for fun & profits Dominique Righetto, Excellium @righettod
  • 2. voxxeddays.com/luxembourg/ #voxxeddaysLU Warning • This talk will not contain stuff like this
  • 3. voxxeddays.com/luxembourg/ #voxxeddaysLU Why abusing browsers? • Today modern web browsers on Mobile or Desktop : • Contains plenty of features through native components or plugins. • Are used as preferred client to access new applications. • Most of the new applications are web based (thanks Mister Cloud ). • Security at infrastructure/network is now quite mature. • Targeting client side and users are more “fruitful” because you can’t standardize people behavior or mindset.
  • 4. voxxeddays.com/luxembourg/ #voxxeddaysLU Our problem • As penetration tester, the most important step on a attack is dedicated to reconnaissance and analysis of the target entity. • Based on the offline analysis of the grabbed data, we can further create attack scenarii and customize related content. Reco Grab as much information as possible about our victims in the most stealthy way Quickly list all available attack surfaces. Perform operation on a variable number of victims. Support, if possible, modern and quite old browsers.
  • 5. voxxeddays.com/luxembourg/ #voxxeddaysLU Our friend HTML5 Cross Origin Resource Sharing. WebSocket. JavaScript New native features + JQuery (branch 1.x). Some other JavaScript libraries for specific job like hashing or cookie management. PIWIK Building block for report rendering and keep gathered data in-house. PHP / Symfony / Composer Handle server side operations. Our team is composed by PHP integrist so we can’t fight 
  • 6. voxxeddays.com/luxembourg/ #voxxeddaysLU Note about CORS and Web Socket • Same Origin Policy (SOP for friends) is a pillar of the security on the web because it restricts the capacity of an hidden caller (for example Ajax) to contact arbitrary domain in a easy way (most bypass was using JSONP type call or loading through tags like IMG/SCRIPT/STYLE/IFRAME…). • But thanks to HTML5… • Web Socket is currently not restricted by the SOP. • CORS configuration is HTTP headers based so, an attacker can easily configure CORS on his domain to accept any call.
  • 7. voxxeddays.com/luxembourg/ #voxxeddaysLU Our enemies • As we will use only legal web client side technologies and we want to be stealth, we must take care about: User Workstation antivirus Web proxy Firewall
  • 8. voxxeddays.com/luxembourg/ #voxxeddaysLU Global approach • Implements a simple web application, plugins based, in which each plugin: • Will be executed on client side. • Will be in charge of grabbing a specific information. • Information will be grouped by entity targeted and a visitor (victim) will have a unique ID in order to track it. • URL will be provided to victims using the following vectors: • Phishing ( in our campaign, each time, more than 30% of the targeted users click  ). • Via compromising of a "water hole" site.
  • 9. voxxeddays.com/luxembourg/ #voxxeddaysLU Global approach WUI layer (grab infos) Plugin X Controller layer (store/expose infos) Storage layer (database) Victim browser context Plugin X Loading Send result
  • 10. voxxeddays.com/luxembourg/ #voxxeddaysLU Interesting information • As the final objective is to determine one or several attack surfaces and according to browser capacities, the following information are interesting for us: • Browser name/version + all plugins info + OS name/version: • Will be used to find a plugin or a browser vulnerable (ex: IE < 11 because Microsoft do not update them anymore since February 2016). • Will be used also to determine the type of user because, for example, often Sys Admin user: • Have special plugins like one for VMWARE. • Have local admin or privileged rights 
  • 11. voxxeddays.com/luxembourg/ #voxxeddaysLU Interesting information • Web Socket support level by Browser and Web Proxy: • Will be used to know if we can use Web Socket to create a 2 way communication channel because Web Socket is not limited by the Same Origin Policy. • Site categories on which the user is allowed to browse: • Will be used to know if we can use site like Twitter/GitHub/Pastebin/GoogleDrive/Dropbox…for data infiltration/exfiltration.
  • 12. voxxeddays.com/luxembourg/ #voxxeddaysLU Interesting information • File type allowed to be downloaded by the victim from the web: • Will be used to know, using which file type, we can use as infection vector to deliver the attack. • Specific services running on the victim workstation like Tomcat, MySQL, Oracle, SonarQube, WAS… • Will be used to know if the victim is a developer because often developer: • Have local admin or privileged rights  • Workstation can contains interesting credentials or information. • Have a set of exception rules about Antivirus real-time scanning.
  • 13. voxxeddays.com/luxembourg/ #voxxeddaysLU Interesting information • Identify the name and version of the Web Proxy: • Will be used to find vulnerability and bypass for data infiltration or exfiltration. • CPU and GPU information of the victim workstation: • Will be used to create a malware that only executes if it detect this type of CPU/GPU and then escape malware sandboxes.
  • 14. voxxeddays.com/luxembourg/ #voxxeddaysLU Interesting information • Type of Internet connection: • Will be used to determine the download / upload capacities of the victim infrastructure and then provides which exfiltration capacity that can be used for data infiltration or exfiltration. • Will also be used to determine if the victim work from home/public WIFI….Useful to find additional attack surfaces…
  • 15. voxxeddays.com/luxembourg/ #voxxeddaysLU Plugin n°1 - Approach • Browser name/version + all plugins info + OS name/version: 1. On modern browsers, use the native object « navigator.plugins » to retrieve plugins list. 2. Enhance detection using the library « PluginDetect » in order to support old browsers: • http://www.pinlady.net/PluginDetect/ 3. Retrieve user agent and OS information using the library « UAParser »: • https://github.com/faisalman/ua-parser-js
  • 17. voxxeddays.com/luxembourg/ #voxxeddaysLU Plugin n°2 - Approach • Web Socket support level by Browser and Web Proxy: 1. Detect if browser support Web Socket using the native object "window.WebSocket". 2. If browser support WS then try to send a unique message to the open relay "echo.websocket.org": • If we receive, in response, the message sent Web Proxy support WS. • Otherwise  Web Proxy do not support WS.
  • 19. voxxeddays.com/luxembourg/ #voxxeddaysLU Plugin n°3 - Approach • Site categories on which the user is allowed to browse: • During the plugin implementation: 1. A list of site, with their associated category, has been built by grabbing the information against several Web Proxy vendors (ex: Palo Alto / Bluecoat…) 2. The list of site has been grouped by Web Proxy vendor and has been enhanced with custom local sites and categories (ex: l’essentiel, itnations, paperjam….). 3. For each site, the smallest image available has been searched on it and was kept as reference test link. 4. So, the list of sites is now a list of links grouped by categories and Web Proxy vendor.
  • 20. voxxeddays.com/luxembourg/ #voxxeddaysLU Plugin n°3 - Approach • Site categories on which the user is allowed to browse: • Plugin processing: • For each link, a HTML IMG tag is generated and added to DOM. • A random url parameter, in order to avoid caching by the browser, is added to all url links. • Each HTML IMG contains a handler on the following events: • "onload" : Set the flag indicating that the site is allowed because the image can be loaded. • "onerror" : Set the flag indicating that the site is NOT allowed because the image cannot be loaded.
  • 22. voxxeddays.com/luxembourg/ #voxxeddaysLU Plugin n°4 - Approach • File type allowed to be downloaded by the victim from the web: • During the plugin implementation: 1. A list of specific files that can be used as infection vector has been built. 2. Each file is linked to is digest using SHA-256 algorithm. • Example of tested files format: • Microsoft Office supporting auto start VBA macros and OLE packages. • Windows native and .Net binaries. • Java auto executable archive. • Adobe Portable Data Format. • Windows Script File.
  • 23. voxxeddays.com/luxembourg/ #voxxeddaysLU Plugin n°4 - Approach • File type allowed to be downloaded by the victim from the web: • Plugin processing: • For each file 1. Send a Ajax GET request in order to retrieve the file content. 2. Compare the computed hash of the retrieved file content against the hash associated to the file. 3. If they match  File type allowed to be downloaded and not altered by Web Proxy. 4. Otherwise  File type not allowed to be downloaded or altered by Web Proxy.
  • 25. voxxeddays.com/luxembourg/ #voxxeddaysLU Plugin n°5 - Approach • Specific services running on the victim workstation like Tomcat, MySQL, Oracle, SonarQube, WAS… • Based on research performed by Lavakumar Kuppan & Manish Saindane: • http://www.andlabs.org/tools/jsrecon/jsrecon.html
  • 26. voxxeddays.com/luxembourg/ #voxxeddaysLU Plugin n°5 - Approach • Specific services running on the victim workstation like Tomcat, MySQL, Oracle, SonarQube, WAS… 1. Test open state of dedicated ports on victim loopback IP address using Web Socket. 2. Analyze the time taken by the WS "readyState" attribute to move from initial state 0 to further state 1/2/3. 3. According to the delay taken, the open/closed/filtered state is deducted. Constant Value Description CONNECTING 0 The connection is not yet open. OPEN 1 The connection is open and ready to communicate. CLOSING 2 The connection is in the process of closing. CLOSED 3 The connection is closed or couldn't be opened.
  • 28. voxxeddays.com/luxembourg/ #voxxeddaysLU Plugin n°6 - Approach • Identify the name and version of the Web Proxy: 1. Analyze request HTTP header to detect presence of headers added by the Web Proxy like for example: X-Cache-Lookup, X-Cache, Via... 2. Capture the Web Proxy error page by returning a TCP RESET to a specific Ajax GET request. 3. Use Cross Origin Resource Sharing to send error page captured to storage controller.
  • 29. voxxeddays.com/luxembourg/ #voxxeddaysLU Plugin n°6 - Approach Browser Web Proxy Application Request Request TCP RSTProxy Error Page
  • 31. voxxeddays.com/luxembourg/ #voxxeddaysLU Plugin n°7 - Approach • CPU and GPU information of the victim workstation : 1. Retrieve CPU information using the library "UAParser" and the native object "navigator.platform". 2. Retrieve number of CPU Core using the native object "navigator.hardwareConcurrency". 3. Retrieve GPU information using HTML5 Canvas and the extension "WEBGL_debug_renderer_info" if this one is available otherwise get information from Canvas object instance directly.
  • 33. voxxeddays.com/luxembourg/ #voxxeddaysLU Plugin n°8 - Approach • Type of Internet connection : 1. If the site https://ipleak.net can be browsed by the victim then perform an Ajax request on it Site allow CORS request from anyone  2. Parse page to extract information about Internet connection.
  • 35. voxxeddays.com/luxembourg/ #voxxeddaysLU Global attack process resume Excellium NetworkTarget Network Browser (user) Fingerprinting Application Malware Factory Information storage A B C D E F Malware C&C
  • 36. voxxeddays.com/luxembourg/ #voxxeddaysLU Which possible mitigation? • To be honest, it’s very difficult to block extraction of the information described into this presentation… • However, some action can be put in place to limit the amount of disclosed data, it’s a matter of attack surface available.
  • 37. voxxeddays.com/luxembourg/ #voxxeddaysLU Which possible mitigation? • The following actions try to reduce the attack surface available: • Limit, to the minimum possible according the business need, the number of plugins installed in browsers : in 2016 Flash is still really needed? Same question about Java runtime registration into browser? • Keep browsers, plugins and OS up to date: • https://browsercheck.qualys.com/?scan_type=js • Apply the more strict as possible site filtering, if a site is not categorized then block it by default and require to user to ask you the unlocking in order to obtains explanation about is utility: • For example as developer, access to https://stackoverflow.com/ is mandatory but not http://pastebin.com/
  • 38. voxxeddays.com/luxembourg/ #voxxeddaysLU Which possible mitigation? • Limit the number of file type allowed to be downloaded directly using the Web Proxy (no EXE/WSH/VBS/JAR...) • Even Jar file, use a dedicated Proxy like Nexus or Artifactory ! • Disable WebRTC and install Ghostery: • https://www.ghostery.com/try-us/download-browser-extension/ • https://addons.mozilla.org/en-US/firefox/addon/happy-bonobo-disable-webrtc/
  • 39. voxxeddays.com/luxembourg/ #voxxeddaysLU Thanks you !!! Question ? If you want to see a live demo, come to me after the talk… http://excellium-services.com - http://www.emergenc6.com