SlideShare a Scribd company logo
Developed by Martin Holst Swende 2010-2011 Twitter: @mhswende [email_address]
This presentation is just a quick and steep dive into the Datafiddler. It does not cover much, but hopefully gives a bit of understanding about what the Datafiddler is capable of.  The Datafiddler operates on data stored by the Hatkit Proxy in a MongoDB database. The proxy is not covered in this presentation. Two primary views exists; the tableview and the aggregrator.  A third view, 3rd party plugins, is planned but not implemented in the UI.
Dynamic display of data in a table-based layout (1:1 mapping)
This is what data is fetched  from each document  ('row') in the database. The variable 'v1' will  contain request.time These are the column definitions. This is python code which is evaluated. They have access to the variables, and a library of 'transformations' date(millis) takes an UTC timestamp and converts it to a nice human readable format. The second column will be titled Date and contain the result of date(v1)
The v0 parameter is the object id. This column uses 'Coloring', which means that the value is not displayed, instead a color is calculated from the hash of the value.  This is particularly useful e.g when values are long but not interesting. Cookie values take a lot of screen real estate, but often it is only interesting to see when they are changed – which is shown by the color.
There are a lot of prefedined 'transformers' which can be used when defining the columns For example, the function below makes it possible to display both URL-parmeters and POST-parameters in the same column. showparams(url,form) Sorts parameters by keys. You can send in two dicts, and get the combined result. This makes it easier to show both form-data and url-data in the same column. Example variable v2: request.url variable v3: request.data column: sortparams(v2, v3) //Another version variable v1: request column: sortparams(form=v1.data,url=v1.url)
It is simple to write the kind of view you need for the particular purpose at hand. Some example scenarios: - Analysing user interaction using several accounts with different browsers:  * Color cookies * Color user-agent * Parameters * Response content type (?) - Analysing server infrastructure * Color server headers * Server header value for X-powered-by, Server etc.  * File extension * Cookie names - Searching for reflected content (e.g. for XSS) * Parameter values * True/False if parameter value is found in response body (simple python hack) - Analyzing brute-force attempt * Request parameter username * Request parameter password * Response delay * Response body size * Response code * Response body hash After you write some good column definitions for a particular purpose,  save it for next time
This is an example of how an object (request-response) is stored in the database. Each individual field can be used in database queries, more advanced functionality can be achieved using javascript which is executed inside the database. Since MongoDB does not impose a schema,  these structures were dynamically generated by the writer (Hatkit proxy) on the fly.  Dynamic properties such as headers and parameters can be used for selection just as any ’static’ property, such as response.rtt which always will be there.  This enables semantics like ”Select request.url.parameters.z from x where request.url.parameters.z exists”. … (but just to be clear: all keys/values are dynamic)
Displays aggregated data in a tree structure (1:N mapping)
Aggregation (grouping) is a feature of MongoDB. It is like a specialized Map/Reduce which can only be performed on <10 000 documents.  You provide the framework with a couple of directives, and the database will return the results, which are different kinds of sums. This enables pretty nice kind of queries which can be displayed in a tree-form.  Example: sitemap can be easily generated Example: Show all http response codes, sorted by host/path Example: Show all unique http header keys, sorted by extension Example: Show all request parameter names, grouped by host Example: Show all unique request parameter values, in grouped by host
 
 
 
Provides capabilities to use existing frameworks, libraries and applicationsfor analysing captured data
3rd party analysis  – The idea is to use plugins that use the stored traffic and ’replays’ it through other frameworks.  Status: API defined, no UI exists. Runnable through console. W3af plugin Plugin which uses the ’greppers’ in w3af to analyse each request/response pair. Requires w3af to be installed, calls relevant parts of the w3af code directly. Status: Code works, but not feature complete. Ratproxy plugin Plugin which starts ratproxy (by lcamtuf) and opens a port (X) for listening. It sets ratproxy to use port X as forward proxy, then replays all traffic through ratproxy, while capturing the output from the process.  Status:PoC performed, but not nearly finished Httprint plugin Plugin which uses httprint to fingerprint remote servers.  Status: Idea-stage, unsure if httprint is still alive
 
For ’breakers’ : Datafiddler is very useful for analyzing remote servers and applications, from a low-level infrastructure point-of-view to high-level application flow. For ’defenders’ : Hatkit proxy can be set as a reverse proxy, logging all incoming traffic. Datafiddler can be used as a tool to analyze user interaction, e.g. to detect malicious activity and perform post mortem analysis. The proxy is very lightweight on resources (using Rogan Dawes’ Owasp Proxy), and the backend (MongoDB) has great potential to scale and can handle massive amounts of data.
Hatkit proxy requirements: Java (optional** : MongoDB) (mongodb java drivers included in binary release) ** Can be used in interception-only mode, where data is not stored.  Datafiddler Requirements (only tested on Linux / Ubuntu): Python Qt4 PyQt4 bindings Python mongodb driver MongoDB (optional: w3af) (optional: ratproxy) To get up and running, grab Hatkit proxy : Src:  http://martin.swende.se/hgwebdir.cgi/hatkit_proxy/ Bin:  http://martin.swende.se/hgwebdir.cgi/hatkit_proxy/raw-file/tip/hatkit.zip And Datafiddler: Src:  http://martin.swende.se/hgwebdir.cgi/hatkit_fiddler/

More Related Content

PDF
EKAW - Linked Data Publishing
PPT
Object Relational Mapping with LINQ To SQL
PPTX
OpenStack Training in Mohali
PDF
9800-2016-poster
PPT
Lecture 6. ADO.NET Overview.
PPTX
Data base connectivity and flex grid in vb
PPTX
Java8 training - class 3
PPT
vishual basic data base Pankaj
EKAW - Linked Data Publishing
Object Relational Mapping with LINQ To SQL
OpenStack Training in Mohali
9800-2016-poster
Lecture 6. ADO.NET Overview.
Data base connectivity and flex grid in vb
Java8 training - class 3
vishual basic data base Pankaj

What's hot (20)

PPTX
Java8 training - Class 1
PPT
Potter’S Wheel
PPT
Simple Data Binding
PDF
Mongodb Introduction
PDF
FIWARE Global Summit - Real-time Processing of Historic Context Information u...
PPT
Data management with ado
PPT
Data Connection using ADO DC
PPTX
ODP
Data repositories
PPTX
MarcEdit Shelter-In-Place Webinar 5: Working with MarcEdit's Linked Data Fram...
ODP
Drupal Services 3 - Drupal Dev Days 2011, Brussels
PPTX
Asp.net server control
PPT
Ado.net
PPTX
Query Optimization in MongoDB
PPT
ASP.NET 09 - ADO.NET
PDF
Lambda expression par Christophe Huntzinger
PDF
Asp net interview_questions
PDF
Ado.Net Architecture
PDF
PDF
Apollo Server III
Java8 training - Class 1
Potter’S Wheel
Simple Data Binding
Mongodb Introduction
FIWARE Global Summit - Real-time Processing of Historic Context Information u...
Data management with ado
Data Connection using ADO DC
Data repositories
MarcEdit Shelter-In-Place Webinar 5: Working with MarcEdit's Linked Data Fram...
Drupal Services 3 - Drupal Dev Days 2011, Brussels
Asp.net server control
Ado.net
Query Optimization in MongoDB
ASP.NET 09 - ADO.NET
Lambda expression par Christophe Huntzinger
Asp net interview_questions
Ado.Net Architecture
Apollo Server III
Ad

Viewers also liked (17)

PPT
Vietnam power point
PPTX
նախագիծ
PPTX
Մխիթար Սեբաստացի
PPTX
Presentación proyecto enuy ingles
PDF
WebSockets för applikationstestare
PPT
Vietnam Power Point
PPTX
եսապատում
PPTX
Halloween
PPTX
талусни растения
PPTX
искусство,музыка,живопись,кино
PPTX
VocalPress Overview
PPTX
ամենաաղտոտ գետերը
PPTX
Republica bolivariana de venezuela1
PPT
The very hungry_caterpillar_book
PPTX
90’s cartoons
PPTX
Tranter Australia Information
PPTX
հեքիաթներ
Vietnam power point
նախագիծ
Մխիթար Սեբաստացի
Presentación proyecto enuy ingles
WebSockets för applikationstestare
Vietnam Power Point
եսապատում
Halloween
талусни растения
искусство,музыка,живопись,кино
VocalPress Overview
ամենաաղտոտ գետերը
Republica bolivariana de venezuela1
The very hungry_caterpillar_book
90’s cartoons
Tranter Australia Information
հեքիաթներ
Ad

Similar to Hatkit Project - Datafiddler (20)

ODP
SCDJWS 6. REST JAX-P
PPTX
6 10-presentation
PPTX
Quantopix analytics system (qas)
ODP
Presto
PDF
Asp net interview_questions
PPT
Semantic Web Servers
PDF
PDFArticle
PPTX
Metadata Extraction and Content Transformation
PPT
Gt ea2009
PPT
The Social Data Web
PPT
Document Databases & RavenDB
PDF
Import web resources using R Studio
PPTX
Practical OData
PDF
Beginning with wcf service
PPTX
Node js crash course session 5
PPT
REST vs WS-*: Myths Facts and Lies
PPT
53 hui homework2
PDF
Asp.net interview questions
PPT
Ruby On Rails Siddhesh
SCDJWS 6. REST JAX-P
6 10-presentation
Quantopix analytics system (qas)
Presto
Asp net interview_questions
Semantic Web Servers
PDFArticle
Metadata Extraction and Content Transformation
Gt ea2009
The Social Data Web
Document Databases & RavenDB
Import web resources using R Studio
Practical OData
Beginning with wcf service
Node js crash course session 5
REST vs WS-*: Myths Facts and Lies
53 hui homework2
Asp.net interview questions
Ruby On Rails Siddhesh

Recently uploaded (20)

PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
Cloud computing and distributed systems.
PPTX
MYSQL Presentation for SQL database connectivity
PPT
Teaching material agriculture food technology
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Approach and Philosophy of On baking technology
PPTX
Spectroscopy.pptx food analysis technology
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
Unlocking AI with Model Context Protocol (MCP)
Digital-Transformation-Roadmap-for-Companies.pptx
NewMind AI Weekly Chronicles - August'25 Week I
Cloud computing and distributed systems.
MYSQL Presentation for SQL database connectivity
Teaching material agriculture food technology
Network Security Unit 5.pdf for BCA BBA.
Reach Out and Touch Someone: Haptics and Empathic Computing
“AI and Expert System Decision Support & Business Intelligence Systems”
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Understanding_Digital_Forensics_Presentation.pptx
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Approach and Philosophy of On baking technology
Spectroscopy.pptx food analysis technology
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...

Hatkit Project - Datafiddler

  • 1. Developed by Martin Holst Swende 2010-2011 Twitter: @mhswende [email_address]
  • 2. This presentation is just a quick and steep dive into the Datafiddler. It does not cover much, but hopefully gives a bit of understanding about what the Datafiddler is capable of. The Datafiddler operates on data stored by the Hatkit Proxy in a MongoDB database. The proxy is not covered in this presentation. Two primary views exists; the tableview and the aggregrator. A third view, 3rd party plugins, is planned but not implemented in the UI.
  • 3. Dynamic display of data in a table-based layout (1:1 mapping)
  • 4. This is what data is fetched from each document ('row') in the database. The variable 'v1' will contain request.time These are the column definitions. This is python code which is evaluated. They have access to the variables, and a library of 'transformations' date(millis) takes an UTC timestamp and converts it to a nice human readable format. The second column will be titled Date and contain the result of date(v1)
  • 5. The v0 parameter is the object id. This column uses 'Coloring', which means that the value is not displayed, instead a color is calculated from the hash of the value. This is particularly useful e.g when values are long but not interesting. Cookie values take a lot of screen real estate, but often it is only interesting to see when they are changed – which is shown by the color.
  • 6. There are a lot of prefedined 'transformers' which can be used when defining the columns For example, the function below makes it possible to display both URL-parmeters and POST-parameters in the same column. showparams(url,form) Sorts parameters by keys. You can send in two dicts, and get the combined result. This makes it easier to show both form-data and url-data in the same column. Example variable v2: request.url variable v3: request.data column: sortparams(v2, v3) //Another version variable v1: request column: sortparams(form=v1.data,url=v1.url)
  • 7. It is simple to write the kind of view you need for the particular purpose at hand. Some example scenarios: - Analysing user interaction using several accounts with different browsers: * Color cookies * Color user-agent * Parameters * Response content type (?) - Analysing server infrastructure * Color server headers * Server header value for X-powered-by, Server etc. * File extension * Cookie names - Searching for reflected content (e.g. for XSS) * Parameter values * True/False if parameter value is found in response body (simple python hack) - Analyzing brute-force attempt * Request parameter username * Request parameter password * Response delay * Response body size * Response code * Response body hash After you write some good column definitions for a particular purpose, save it for next time
  • 8. This is an example of how an object (request-response) is stored in the database. Each individual field can be used in database queries, more advanced functionality can be achieved using javascript which is executed inside the database. Since MongoDB does not impose a schema, these structures were dynamically generated by the writer (Hatkit proxy) on the fly. Dynamic properties such as headers and parameters can be used for selection just as any ’static’ property, such as response.rtt which always will be there. This enables semantics like ”Select request.url.parameters.z from x where request.url.parameters.z exists”. … (but just to be clear: all keys/values are dynamic)
  • 9. Displays aggregated data in a tree structure (1:N mapping)
  • 10. Aggregation (grouping) is a feature of MongoDB. It is like a specialized Map/Reduce which can only be performed on <10 000 documents. You provide the framework with a couple of directives, and the database will return the results, which are different kinds of sums. This enables pretty nice kind of queries which can be displayed in a tree-form. Example: sitemap can be easily generated Example: Show all http response codes, sorted by host/path Example: Show all unique http header keys, sorted by extension Example: Show all request parameter names, grouped by host Example: Show all unique request parameter values, in grouped by host
  • 11.  
  • 12.  
  • 13.  
  • 14. Provides capabilities to use existing frameworks, libraries and applicationsfor analysing captured data
  • 15. 3rd party analysis – The idea is to use plugins that use the stored traffic and ’replays’ it through other frameworks. Status: API defined, no UI exists. Runnable through console. W3af plugin Plugin which uses the ’greppers’ in w3af to analyse each request/response pair. Requires w3af to be installed, calls relevant parts of the w3af code directly. Status: Code works, but not feature complete. Ratproxy plugin Plugin which starts ratproxy (by lcamtuf) and opens a port (X) for listening. It sets ratproxy to use port X as forward proxy, then replays all traffic through ratproxy, while capturing the output from the process. Status:PoC performed, but not nearly finished Httprint plugin Plugin which uses httprint to fingerprint remote servers. Status: Idea-stage, unsure if httprint is still alive
  • 16.  
  • 17. For ’breakers’ : Datafiddler is very useful for analyzing remote servers and applications, from a low-level infrastructure point-of-view to high-level application flow. For ’defenders’ : Hatkit proxy can be set as a reverse proxy, logging all incoming traffic. Datafiddler can be used as a tool to analyze user interaction, e.g. to detect malicious activity and perform post mortem analysis. The proxy is very lightweight on resources (using Rogan Dawes’ Owasp Proxy), and the backend (MongoDB) has great potential to scale and can handle massive amounts of data.
  • 18. Hatkit proxy requirements: Java (optional** : MongoDB) (mongodb java drivers included in binary release) ** Can be used in interception-only mode, where data is not stored. Datafiddler Requirements (only tested on Linux / Ubuntu): Python Qt4 PyQt4 bindings Python mongodb driver MongoDB (optional: w3af) (optional: ratproxy) To get up and running, grab Hatkit proxy : Src: http://martin.swende.se/hgwebdir.cgi/hatkit_proxy/ Bin: http://martin.swende.se/hgwebdir.cgi/hatkit_proxy/raw-file/tip/hatkit.zip And Datafiddler: Src: http://martin.swende.se/hgwebdir.cgi/hatkit_fiddler/