Blind Elephant: Web Application Fingerprinting & Vulnerability - - PowerPoint PPT Presentation

blind elephant
SMART_READER_LITE
LIVE PREVIEW

Blind Elephant: Web Application Fingerprinting & Vulnerability - - PowerPoint PPT Presentation

Blind Elephant: Web Application Fingerprinting & Vulnerability Inferencing Patrick Thomas Qualys 7/28/10 Outline Web Apps & Security Existing Fingerprinting Approaches Static File Approach Observations From A Net Survey


slide-1
SLIDE 1

Blind Elephant:

Web Application Fingerprinting & Vulnerability Inferencing

Patrick Thomas Qualys 7/28/10

slide-2
SLIDE 2

Outline

  • Web Apps & Security
  • Existing Fingerprinting Approaches
  • Static File Approach
  • Observations From A Net Survey
  • Q & A

BLACKHAT USA 2010

2

slide-3
SLIDE 3

Well-Known Web Applications

  • Every conceivable use…
  • Content Management/Blogging
  • Forums
  • Email
  • E-Commerce
  • DB Admin
  • Backup and File Storage Admin
  • Device/System/VM Admin
  • Version Control UI
  • Intranet/Collaboration

BLACKHAT USA 2010

3

slide-4
SLIDE 4

Well-Known Web Applications

BLACKHAT USA 2010

4

slide-5
SLIDE 5

Special Challenges Securing Web Apps

  • Remotely accessible by nature
  • Lots of attack surface exposed (direct and indirect)
  • Easy to set up and admin  Fly under IT radar

5

BLACKHAT USA 2010

slide-6
SLIDE 6

Special Challenges Securing Web Apps

  • Fast release cycle (often open-source)
  • Exploits are (often) simpler to create & comprehend

“wget http://example.com/wp-login.php?action=rp&key[]=” “wget –header “Cookie: tinybrowser_lang=../../../../../../../ZOMGSECRETS\r\n” http://example.com/plugins/editors/tinymce/jscripts/tiny_mce/pl ugins/tinybrowser/folders.php

  • (…and of course everything the WAF vendors are saying)

6

BLACKHAT USA 2010

slide-7
SLIDE 7

WAS Is Overkill For Well-Known Apps

  • Known app + known-vulnerability list = traditional

vulnerability management

  • Knowing the version is good enough to infer

vulnerabilities

  • It‟s not nearly as sexy, but it works
  • Discovering the app and version  Fingerprinting

7

BLACKHAT USA 2010

slide-8
SLIDE 8

Existing Fingerprinting Approaches

  • Labor intensive to add/update signatures
  • Manually locate version in files or build regexes for headers
  • If selected strings go away, human effort to notice and update
  • Decent hardening pretty much nukes them
  • Built-in options to remove identifiers (eg, meta generator)
  • Remove standard files
  • Easy to lie to

Fingerprinters like this:

  • Sedusa (in nmap), Wappalyzer, BackendInfo, Plecost,

etc, etc…

BLACKHAT USA 2010

8

slide-9
SLIDE 9

More Advanced Tools

  • Typically improve in one area
  • Resistant to hardening
  • Less labor intensive
  • Have their own downsides
  • Less specific results
  • Some request massive amounts of data (> 20 megs!)
  • Some are less generic (Plecost = Wordpress Only)

Fingerprinters like this:

  • Sucuri, WAFP, WhatWeb, BackEndInfo (sortof),

BLACKHAT USA 2010

9

slide-10
SLIDE 10

Goals for a (WebApp) Fingerprinter

  • Very Generic
  • Fast
  • Low resource usage
  • Accurate (Low FP/FN)
  • Resistant to hardening/banner removal
  • Super easy to support new versions/apps

10

BLACKHAT USA 2010

slide-11
SLIDE 11

The Blind Men and the Elephant

11

BLACKHAT USA 2010

slide-12
SLIDE 12

Collect and Eliminate Possibilities

12

Tree or Elephant Spear or Elephant Vine or Elephant Fan or Elephant

BLACKHAT USA 2010

slide-13
SLIDE 13

Intersect the Possibilities and…

13

BLACKHAT USA 2010

slide-14
SLIDE 14

Web App Versions Paths Table Versions Table What versions will a path give me info on? If I want to confirm

  • r rule out a

version/versions, what‟s a path that will do that?

(eg, Joomla-*.zip) 1.0.2 1.0.3 1.0.4 2.0.1 3.1.6 3.2.10

Preparing the Data

BLACKHAT USA 2010

14

slide-15
SLIDE 15

/templates/subSilver/admin/index_frameset.tpl 74057e1687fa4edfd1ba0207e073e100 ['2.0'] fc9388927f44fd90698936837070b525 ['2.0.1'] 7ec0529fd736950a3dd0c7b66f7b5f2c ['2.0.2', … 264974c35d7a66d32ddfa118b1bc359d ['2.0.18', … /install/schemas/schema_data.sql b1fdcba066491e22d7b2b84ace8c94e0 ['3.0.6-RC3'] 10d66666d443fb0eb5970c4c5cadc844 ['3.0.6'] 1129aeae10003398b500d11cc9b26acd ['3.0.5-RC1'] 8db031ced0c0377ded71ebed82e14408 ['3.0.6-RC1'] 560143ba7cbcaa48b58d17a28970be04 ['3.0.2'] ad0ca453932b8cce946345a998403401 ['3.0.4'] 59065f5fed0d801ab04a1eef7ca4fad4 ['3.0.4-RC1'] 89e85ef960aef6f461cbe71907890057 ['2.2b'] e060676be3191f2a7bd95df62711e28d ['3.0.6-RC2'] ce2b47359e50e2a83fea2f3bbec9a8b1 ['3.0.5'] efb06c117f2681bedcc704ea10223394 ['3.0.3'] 045634305e36af4fea75f3a95c415f49 ['3.0.6-RC4'] 3.0.3,3.0.4,3.0.4-RC1 ('/styles/prosilver/template/ucp_pm_viewmessage.html', '314fe5725db… ('/styles/subsilver2/template/viewforum_body.html', 'f4002089f99384bf4… ('/adm/style/acp_styles.html', '39e7ad0dbeda3f8d7731e844eba62622') ('/styles/subsilver2/template/mcp_warn_user.html', '6fce7b9564afb5aa6d.. ('/styles/prosilver/template/mcp_warn_user.html', 'c56f962be418102b8… ('/styles/subsilver2/template/index_body.html', '64c9a99b3b53f4… ('/styles/prosilver/theme/content.css', '5f264fed8971c7d00e7092f48f379… …. 2.0.20,2.0.21 ('/language/lang_english/email/user_activate_passwd.tpl', '4375947c68… ('/templates/subSilver/confirm_body.tpl', „1ead54515b2b537… ('/templates/subSilver/admin/board_config_body.tpl', 'f8519d018f9850d… ('/language/lang_english/email/group_request.tpl', '6192f8bbb9e4596ad… ('/install/schemas/mssql_schema.sql', '045c0fcfaa4f89d771b07b66a74…. ('/contrib/README.html', '61f46292c72f73935bcc2b74403d8b74„)

VersionsTable PathsTable HashesTable File Hash  Version Hash  Version Hash  Version File Hash  Version Hash  Version Hash  Version Version, Version, Version File  Hash File  Hash File  Hash Version File  Hash File  Hash

wordpress-0.71-gold/*/*.* wordpress-0.72-beta-1/*/*.* wordpress-0.72-RC1/*/*.* wordpress-1.0.1-miles/*/*.* wordpress-1.0.1-RC1/*/*.* wordpress-1.0.2/*/*.* wordpress-1.0.2-blakey/*/*.* wordpress-1.0-platinum/*/*.* wordpress-1.0-RC1/*/*.* wordpress-1.2.1/*/*.* wordpress-1.2.2/*/*.* wordpress-1.2-beta/*/*.* wordpress-1.2-delta/*/*.* wordpress-1.2-mingus/*/*.* wordpress-1.2-RC1/*/*.* wordpress-1.2-RC2/*/*.* … wordpress-2.9/*/*.* wordpress-2.9.1/*/*.* wordpress-2.9.1-beta1/*/*.* wordpress-2.9.1-beta1-IIS/*/*.* wordpress-2.9.1-IIS/*/*.* wordpress-2.9.1-RC1/*/*.* wordpress-2.9.1-RC1-IIS/*/*.* wordpress-2.9-beta-1/*/*.* wordpress-2.9-beta-1-IIS/*/*.* wordpress-2.9-beta-2/*/*.* wordpress-2.9-beta-2-IIS/*/*.* wordpress-2.9-IIS/*/*.* wordpress-2.9-RC1/*/*.* wordpress-2.9-RC1-IIS/*/*.* wordpress-1.5-strayhorn/*/*.* wordpress-2.0.7-RC2/*/*.* wordpress-2.2.1/*/*.* wordpress-2.5.1/*/*.* …

slide-16
SLIDE 16

How Many Files?

Wordpress ~83k files in 166 versions phpBB ~17k files in 32 versions MediaWiki ~68k files in 68 versions Joomla ~109k files in 33 versions MovableType ~164k files in 95 versions Drupal ~33k files in 114 versions … and many more

Wordpress Plugins ~103k files in 1200 versions Drupal Plugins ~76K files in 983 versions

16

BLACKHAT USA 2010

slide-17
SLIDE 17

'/htaccess.txt', 14 hashes/31 versions, fitness=15.0 '/language/en-GB/en-GB.ini', 14 hashes/20 versions, fitness=14.64 '/language/en-GB/en-GB.com_content.ini', 13 hashes/20 versions, fitness=13.64 '/configuration.php-dist', 10 hashes/28 versions, fitness=10.90 '/includes/js/joomla.javascript.js', 8 hashes/28 versions, fitness=8.90

'/media/system/js/validate.js', 8 hashes/20 versions, fitness=8.64 '/media/system/js/caption.js', 8 hashes/20 versions, fitness=8.64 '/language/en-GB/en-GB.mod_feed.ini', 8 hashes/20 versions, fitness=8.64 '/media/system/js/openid.js', 8 hashes/20 versions, fitness=8.64 '/language/en-GB/en-GB.com_contact.ini', 8 hashes/20 versions, fitness=8.64 '/language/en-GB/en-GB.mod_breadcrumbs.ini', 7 hashes/20 versions, fitness=7.64 '/media/system/js/combobox.js', 7 hashes/20 versions, fitness=7.64 '/language/en-GB/en-GB.mod_search.ini', 7 hashes/20 versions, fitness=7.64 '/templates/rhuk_milkyway/css/template.css', 7 hashes/20 versions, fitness=7.64 '/media/system/js/switcher.js', 7 hashes/20 versions, fitness=7.64

Best Candidates to Identify the Version Paths Table

Fingerprinting

17

BLACKHAT USA 2010

Fitness Heuristic

slide-18
SLIDE 18

Candidate Files: Wordpress

/readme.html /wp-includes/js/tinymce/tiny_mce.js /wp-includes/js/autosave.js /wp-includes/js/swfupload/handlers.js /wp-includes/js/tinymce/themes/advanced/about.htm /wp-includes/js/tinymce/themes/advanced/link.htm /wp-includes/js/tinymce/themes/advanced/source_editor.htm /wp-includes/js/tinymce/plugins/inlinepopups/editor_plugin.js /wp-includes/js/tinymce/themes/advanced/image.htm /wp-includes/js/tinymce/themes/advanced/color_picker.htm …

BLACKHAT USA 2010

18

slide-19
SLIDE 19

Candidate Files: Mediawiki

/RELEASE-NOTES /skins/common/wikibits.js /install-utils.inc /skins/monobook/main.css /docs/hooks.txt /HISTORY /UPGRADE /skins/monobook/rtl.css /math/texutil.ml /INSTALL …

BLACKHAT USA 2010

19

Fully data-driven approach finds useful info in obscure and counterintuitive files

slide-20
SLIDE 20

'/htaccess.txt' '/language/en-GB/en-GB.ini' '/language/en-GB/en-GB.com_content.ini' '/configuration.php-dist', '/includes/js/joomla.javascript.js' '/media/system/js/validate.js' '/media/system/js/caption.js' '/language/en-GB/en-GB.mod_feed.ini' '/media/system/js/openid.js' '/language/en-GB/en-GB.com_contact.ini' '/language/en-GB/en- GB.mod_breadcrumbs.ini' '/media/system/js/combobox.js' '/language/en-GB/en-GB.mod_search.ini' '/templates/rhuk_milkyw/css/template.css' '/media/system/js/switcher.js'

Best Candidates 3.0.4-RC4, 3.0.4

200 OK 200 OK 200 OK 404 403 2.0.1, 2.0.2… 3.0.4-RC4, 3.0.4 2.5.1, 2.3.16… 3.0.4-RC4, 3.0.4 3.0.4-RC4, 3.0.4, 3.5 3.0.4-RC4, 3.0.4, 3.5.1

Fingerprinting

20

BLACKHAT USA 2010

slide-21
SLIDE 21

Versions Table 3.0.0, 3.0.1 3.0.2, 3.0.3, 3.0.4-RC1, 3.0.4-RC2 ? ? ? (confirm or rule out versions) Darn, Not Enough Data

3.0.2? 3.0.0 or 3.0.1? 3.0.3? 3.0.4? 3.0.5 or 3.0.6?

Winnowing

21

BLACKHAT USA 2010

slide-22
SLIDE 22

{'path': „/includes/js/dtree/img/frontpage.gif“‟, 'versions': 29} {'path': '/images/banners/osmbanner2.png', 'versions': 33} {'path': '/media/system/js/mootools.js', 'versions': 18} {'path': „/includes/js/wz_tooltip.js ', 'versions': 29}

Indicator Files Versions Table

App Discovery / App Guessing

Want a small set

  • f files with at

least one present in every release

22

BLACKHAT USA 2010

slide-23
SLIDE 23

{'path': „/includes/js/dtree/img/frontpage.gif“‟, 'versions': 29} {'path': '/images/banners/osmbanner2.png', 'versions': 33} {'path': '/media/system/js/mootools.js', 'versions': 18} {'path': „/includes/js/wz_tooltip.js ', 'versions': 29}

Indicator Files It’s some version

  • f Joomla

404 200 OK

App Discovery / App Guessing

23

BLACKHAT USA 2010

slide-24
SLIDE 24

Supporting a New App

  • Gather every version you can find, dump them in a

directory

  • [Optional] Supply a regex to exclude directories/files from

fingerprinting

  • (eg .php files, protected admin directory, .htaccess, etc)
  • Use BlindElephant to build the datafiles
  • Fingerprint!
  • …Profit?

24

BLACKHAT USA 2010

slide-25
SLIDE 25

Does it work?

$./BlindElephant.py http://laws.qualys.com movabletype Loaded movabletype with 96 versions, 2229 differentiating paths, and 209 version groups. Starting BlindElephant fingerprint for version of movabletype at http://laws.qualys.com

Hit http://laws.qualys.com/mt-static/mt.js Possible versions based on result: 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22- en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en-COM Hit http://laws.qualys.com/mt-static/js/tc/client.js Possible versions based on result: 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22- en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en-COM Hit http://laws.qualys.com/mt-static/css/main.css Possible versions based on result: 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22- en-COM, 4.23-en, 4.23-en, 4.23-en-COM Hit http://laws.qualys.com/tools/run-periodic-tasks File produced no match. Error: Error code: 404 (Not Found)

25

BLACKHAT USA 2010

slide-26
SLIDE 26

Does it work?

Hit http://laws.qualys.com/mt-static/js/tc/tagcomplete.js Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en- COM Hit http://laws.qualys.com/mt-static/js/edit.js Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en- COM Hit http://laws.qualys.com/mt-static/js/tc/mixer/display.js Possible versions based on result: 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22- en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en-COM Hit http://laws.qualys.com/mt-static/js/archetype_editor.js Possible versions based on result: 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en- COM, 4.24-en, 4.24-en, 4.24-en-COM

26

BLACKHAT USA 2010

slide-27
SLIDE 27

Does it work?

Hit http://laws.qualys.com/mt-static/js/tc/mixer.js Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en- COM Hit http://laws.qualys.com/mt-static/js/tc/tableselect.js Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en- COM Hit http://laws.qualys.com/mt-static/js/tc/focus.js Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en- COM Hit http://laws.qualys.com/mt-static/js/tc.js Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en- COM

27

BLACKHAT USA 2010

slide-28
SLIDE 28

This is what matters!

2.0.1, 2.0.2… 3.0.4-RC4, 3.0.4 2.5.1, 2.3.16… 3.0.4-RC4, 3.0.4 3.0.4-RC4, 3.0.4, 3.5 3.0.4-RC4, 3.0.4, 3.5.1

Interlude

28

BLACKHAT USA 2010

slide-29
SLIDE 29

Does it work?

Hit http://laws.qualys.com/mt-static/css/simple.css Possible versions based on result: 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22- en-COM, 4.23-en, 4.23-en, 4.23-en-COM Hit http://laws.qualys.com/mt-static/mt_ja.js Possible versions based on result: 4.2-en, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23- en-COM, 4.23-en-OS, 4.24-en, 4.24-en, 4.24-en-COM Hit http://laws.qualys.com/mt-static/js/tc/gestalt.js Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en- COM Fingerprinting resulted in: 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en-COM Best Guess: 4.23-en-COM

29

BLACKHAT USA 2010

slide-30
SLIDE 30

Lets Pick on the Security Bloggers Network

$./BlindElephant.py http://www.andrewhay.ca/ wordpress Loaded wordpress with 159 versions, 599 differentiating paths, and 226 version groups. Starting BlindElephant fingerprint for version of wordpress at http://www.andrewhay.ca

Fingerprinting resulted in: 3.0-RC1 3.0-RC1-IIS Best Guess: 3.0-RC1

30

BLACKHAT USA 2010

slide-31
SLIDE 31

BTW: It Does Plugins Too

$ ./BlindElephant.py -s -p guess http://example.com drupal Possible plugins: ['admin_menu', 'cck', 'date', 'google_analytics', 'imce', 'imce_swfupload', 'pathauto', 'print', 'spamicide', 'tagadelic', 'token', 'views„] $./BlindElephant.py -s -p imce http://example.com drupal <snip> Fingerprinting resulted in: 6.x-1.3

31

BLACKHAT USA 2010

slide-32
SLIDE 32

New Toy! Lets Play

  • App ID & Fingerprinting on 1,084,152 hosts
  • ~34k targeted scans for bug shakeout and calibration
  • Shodan = Really, really useful (kinda expensive though)
  • Is John here? I owe him a beer.
  • Slightly biased sample (skews to default installs, s‟okay though)
  • ~50k and ~1M host random sample of 87M .com domains
  • Stats on accuracy and net-wide webapp population are from these

32

BLACKHAT USA 2010

slide-33
SLIDE 33

The Question That Started This All

What % of (active) sites on the net are running a well-known webapp?

  • Not counting Parked/ad-only, down, or blank/40x
  • Only examined the root of the domain
  • Sample set is from a list of 87M .coms

33

BLACKHAT USA 2010

slide-34
SLIDE 34

The Question That Started This All

What % of active sites on the net are running a well-known webapp?

23% Parked + 5.8% Ads only + 7.9% No Content/40x + 13.1% Down ~49.7% of the web is junk*

*That’s all? Hush you.

34

BLACKHAT USA 2010

slide-35
SLIDE 35

The Question That Started This All

What % of active sites on the net are running a well-known webapp?

4.4% of domains had a supported app ÷ .503 percent of domains are “active”

~8.8%

35

BLACKHAT USA 2010

slide-36
SLIDE 36

It Only Goes Up

  • 8.8% is definitely a lower bound
  • Support for more apps
  • Could test /blog, /wiki, /forum and subdomains
  • Improvements in app guessing (was tuned for false negatives)
  • What % of web applications are a “well-known” webapp?
  • I don‟t know… I‟d like to find out though

36

BLACKHAT USA 2010

slide-37
SLIDE 37

On To the Results…

37 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 v1.0 v1.5 v2.0

Version Distribution: SomeApp

BLACKHAT USA 2010

slide-38
SLIDE 38

Graphing Sets of Possibilities

  • Host1 Possible Versions: v1.0, v1.5, v2.0
  • .33 to three version columns
  • Host2 Possible Versions: v1.5, v2.0
  • .5 to two version columns
  • Host3 Possible Versions: v1.5
  • 1.0 to v1.5

38

BLACKHAT USA 2010

slide-39
SLIDE 39

Graphing Sets of Possibilities

39

0.5 1 1.5 2 v1.0 v1.5 v2.0 “Weighted” # of Apps Running Each Release Releases

Version Distribution: Some App (6/18/10)

Host1 Host2 Host3

BLACKHAT USA 2010

slide-40
SLIDE 40

Drupal

C O N F I D E N T I A L

40 100 200 300 400 500 600 700 4.5.2 4.5.5 4.6.0 4.6.3 4.6.6 4.6.9 4.6.x-dev 4.7.2 4.7.5 4.7.8 4.7.11 5.1 5.4 5.7 5.10 5.13 5.16 5.19 5.22 6.1 6.4 6.7 6.10 6.13 6.16 7.0-alpha1 7.0-alpha5 # Hosts

Version Distribution: Drupal (June 18, 2010)

Affected by A Critical Vulnerability: 70%

slide-41
SLIDE 41

Joomla

C O N F I D E N T I A L

41 1000 2000 3000 4000 5000 6000 7000 1.0.4 1.0.6 1.0.8 1.0.9 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.5.0 1.5.1 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.5.10 1.5.11 1.5.12 1.5.14 1.5.15 1.5.17 1.5.18 1.6 1.6.0 # Hosts

Version Distribution: Joomla (June 18 2010)

Affected by A “High” Vulnerability: 92%

slide-42
SLIDE 42

Liferay

C O N F I D E N T I A L

42 2 4 6 8 10 12 14 16 4.3.0 4.4.1 4.4.2 5.1.2 5.2.1 5.2.3 # Hosts

Version Distribution: Liferay (June 18, 2010)

slide-43
SLIDE 43

Mediawiki

C O N F I D E N T I A L

43 20 40 60 80 100 120 140 160 180 200 1.3.11 1.3.13 1.3.18 1.5.5 1.5.8 1.6.10 1.6.12 1.7.3 1.8.4 1.9.3 1.10.1 1.10.3 1.11.0 1.11.2 1.12.1 1.12.3 1.13.0 1.13.2 1.13.4 1.14.0 1.15.0 1.15.2 1.15.4 1.16.0beta2 # Hosts

Version Distribution: Mediawiki (June 18, 2010)

Affected by a Serious Vulnerability: 95%

slide-44
SLIDE 44

Moodle

C O N F I D E N T I A L

44 2 4 6 8 10 12 14 16 18 1.5.4 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.8 1.8.3 1.8.4 1.8.6 1.8.8 1.8.11 1.9 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 # Hosts

Version Distribution: Moodle (June 18, 2010)

Affected by a Major Vulnerability: 74%

slide-45
SLIDE 45

Movabletype

C O N F I D E N T I A L

45 10 20 30 40 50 60 70 80 3.31 3.33 3.35-en 3.37-en 4.0-en 4.1-en-CS 4.2-en 4.3-en-OS 4.12-en-OS 4.13-en-OS 4.21-en 4.21-en-OS 4.22-en-COM 4.23-en 4.23-en-OS 4.24-en-COM 4.25-en-COM 4.26-en 4.31-en 4.32-en 4.33-en 4.121-en 4.131-en-CS 4.261-en-OS 5.01-en-OS # Hosts

Version Distribution: MovableType (June 18, 2010)

Affected by a Critical Vulnerability: 91%

slide-46
SLIDE 46

phpBB

C O N F I D E N T I A L

46 5 10 15 20 25 30 2.0.4 2.0.5 2.0.6 2.0.7 2.0.9 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.17 2.0.18 2.0.19 2.0.20 2.0.21 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 # Hosts

Version Distribution: phpBB (June 18, 2010)

Affected by a Severe Vulnerability: 100%

slide-47
SLIDE 47

phpNuke

C O N F I D E N T I A L

47 10 20 30 40 50 60 70 80 90 6.0 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 # Hosts

Version Distribution: PHPNuke (June 18, 2010)

slide-48
SLIDE 48

phpMyAdmin

C O N F I D E N T I A L

48 10 20 30 40 50 60 70 80 90 100 2.2.4 2.6.1PL3 2.6.3PL1 2.7.0PL2 2.8.1 2.9.0 2.9.0.2 2.9.1.1 2.10.0.1 2.10.1 2.10.3 2.11.1 2.11.1.2 2.11.2.1 2.11.3 2.11.5 2.11.5.2 2.11.7 2.11.8 2.11.9 2.11.9.2 2.11.9.4 2.11.9.6 3.0.0 3.0.1.1 3.1.1 3.1.3 3.1.3.2 3.1.5 3.2.0.1 3.2.2 3.2.3 3.2.5 3.3.1RC1 3.3.3 # Hosts

Version Distribution: phpMyAdmin (June 18, 2010)

Affected by a Serious Vulnerability: 85%

slide-49
SLIDE 49

SPIP

C O N F I D E N T I A L

49 5 10 15 20 25 30 35 40 45 1.4.1 1.4.2 1.5b1 1.6 1.7.2 1.8 1.8.1 1.8.2 1.8.2.b 1.8.3 1.9.0 1.9.1i 1.9.1.rev7385 1.9.1.rev7502 1.9.2f 1.9.2g 1.9.2h 1.9.2i 2.0.0 2.0.1 2.0.2 2.0.3 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.0.10 2.0.11 2.1.0 # Hosts

Version Distribution: SPIP (June 18, 2010)

Affected by a Critical Vulnerability: 65%

slide-50
SLIDE 50

Wordpress

C O N F I D E N T I A L

50 1000 2000 3000 4000 5000 6000 1.5.1 1.5.1.2 1.5.2 2.0 2.0.4 2.0.6 2.0.8 2.0.10 2.1 2.1.2 2.2 2.2.2 2.3 2.3.2 2.5 2.6 2.6.2 2.6.5 2.7.1 2.8.1 2.8.3 2.8.5 2.9 2.9.2 3.0-beta1-IIS 3.0-beta2-IIS 3.0-RC1-IIS 3.0-RC2-IIS # Hosts

Version Distribution: Wordpress (June 18, 2010)

Affected by a Critical Vulnerability: 4% Affected by a Medium Vulnerability: 21.5%

slide-51
SLIDE 51

Lost: a Clue

51

BLACKHAT USA 2010

slide-52
SLIDE 52

Lost: A Clue

52

BLACKHAT USA 2010

He‟s only 6 years and 60 releases behind…

slide-53
SLIDE 53

Sorry Guys…

BLACKHAT USA 2010

53

slide-54
SLIDE 54

Sorry Guys…

BLACKHAT USA 2010

54

slide-55
SLIDE 55

Sorry Guys…

BLACKHAT USA 2010

55

slide-56
SLIDE 56

Sorry Guys…

BLACKHAT USA 2010

56

Wha-whaaaaaa

slide-57
SLIDE 57

Observations

  • Webapps actually doing pretty well update-wise
  • …but not quite good enough
  • Huge spike at version provided by package managers

and hosting services

  • If you‟re trusting either to keep you up to date, you‟re probably

behind

  • Improperly removed webapps abound
  • Switch from CMS A to CMS B, but leave A lying around
  • Net-visible test/QA sites

57

BLACKHAT USA 2010

slide-58
SLIDE 58

Precision

58

5000 10000 15000 20000 25000 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Fingerprint Precision

(# Versions Resulting from a Fingerprint (1 is best)

BLACKHAT USA 2010

slide-59
SLIDE 59

Precision

59

5000 10000 15000 20000 25000 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Fingerprint Precision

(# Versions Resulting from a Fingerprint (1 is best) Average Versions Produced: 3.06 versions

BLACKHAT USA 2010

slide-60
SLIDE 60

Speed

60

1000 2000 3000 4000 5000 6000 7000 8000 9000 5 10 15 20 25 30 35 40 45 # Hosts Time To Fingerprint (seconds)

Fingerprinting Time

(Quicker is better)

BLACKHAT USA 2010

slide-61
SLIDE 61

Speed

61

1000 2000 3000 4000 5000 6000 7000 8000 9000 5 10 15 20 25 30 35 40 45 # Hosts Time To Fingerprint (seconds)

Fingerprinting Time

(Quicker is better) Average Time to Fingerprint: 6.4 seconds

BLACKHAT USA 2010

slide-62
SLIDE 62

BlindElephant Scorecard

  • Very Generic

 Same code for all apps & plugins

  • Fast

 1-10 sec, based on host (Avg 6.4)

  • Low resources

 Avg 354.2 Kb to fingerprint

  • Accurate

Avg 3.06 versions & ID 98.0% of sites

  • Resistant to hardening/banner removal

 Yes

  • Easy to support new versions/apps

 ~2 hours to support all available versions of a new app (1 if they‟re packed nicely)

62

BLACKHAT USA 2010

slide-63
SLIDE 63

Sources Of Error

  • WebApp Incompletely Removed
  • Partial/Manual Upgrades
  • We tend to catch these though
  • Changed App Root
  • Static hosting on alternate domain (eg, Wikipedia)
  • Forked Project (osCommerce, phpNuke)
  • Fails completely if static files are trivially modified
  • But guess what? People don‟t do it (yet)

63

BLACKHAT USA 2010

slide-64
SLIDE 64

Release the Kra… Elephant

64

http://blindelephant.sourceforge.net/

BLACKHAT USA 2010

slide-65
SLIDE 65

To Do

  • Web App Developers
  • Help us create fingerprint files to recognize your app!
  • But also think about default deployments that resist

fingerprinting

  • Site Administrators
  • Fingerprint yourself – know what the attackers know
  • Harden to resist fingerprinting
  • Just… stay up to date
  • Everyone Else
  • Try it out
  • Report bugs, contribute signatures, implement a pet feature…

65

BLACKHAT USA 2010

slide-66
SLIDE 66

Questions?

pst@coffeetocode.net pthomas@qualys.com @coffeetocode http://coffeetocode.net

BLACKHAT USA 2010

66

slide-67
SLIDE 67

BLACKHAT USA 2010

67

slide-68
SLIDE 68

Theory of Fingerprinting

  • Find some characteristic(s) that is…
  • …always the same for a particular individual

(implementation/version/person)

  • …always different from other members of the population
  • If there‟s one piece of info that fulfills both, great
  • If not, take several that pin it down
  • Tons of interesting reading in information theory and entropy
  • OS & HTTP Server Fingerprinting: Lots of protocol-aware

checks that rely on subtle differences in implementation

68

BLACKHAT USA 2010

slide-69
SLIDE 69

Beyond Hashing

  • Nearest neighbor search
  • Rolling hashes
  • Version trajectory
  • Error tolerant hashing…

69

BLACK HAT 2010