CS255 Programming Project 2



Similar documents
Project #4: MITM Attacks and Authentication

Programming Project #2. Network Security (TCP/IP and DNS) Overview. Overview. Man in the Middle. Proxy Server. Tadayoshi Kohno

Network Security (TCP/IP and DNS)

PowerChute TM Network Shutdown Security Features & Deployment

Configuration Manual

Chapter 1: How to Configure Certificate-Based Authentication

DOCUMENTUM CONTENT SERVER CERTIFICATE BASED SSL CONFIGURATION WITH CLIENTS

SSL Configuration on Weblogic Oracle FLEXCUBE Universal Banking Release [August] [2014]

Installing Digital Certificates for Server Authentication SSL on. BEA WebLogic 8.1

SSL Certificate Generation

CHAPTER 7 SSL CONFIGURATION AND TESTING

DEVELOPING CERTIFICATE-BASED PROJECTS FOR WEB SECURITY CLASSES *

Exchange Reporter Plus SSL Configuration Guide

KMIP installation Guide. DataSecure and KeySecure Version SafeNet, Inc

To install and configure SSL support on Tomcat 6, you need to follow these simple steps. For more information, read the rest of this HOW-TO.

Universal Content Management Version 10gR3. Security Providers Component Administration Guide

Enterprise Content Management System Monitor 5.1 Security Considerations Revision CENIT AG Brandner, Marc

IUCLID 5 Guidance and Support

SSL Considerations for CAS: Planning, Management, and Troubleshooting. Marvin Addison Middleware Services Virginia Tech October 13, 2010

Accessing PostgreSQL through JDBC via a Java SSL tunnel

Configuring Secure Socket Layer and Client-Certificate Authentication on SAS 9.3 Enterprise BI Server Systems That Use Oracle WebLogic 10.

Working with Portecle to update / create a Java Keystore.

How to Implement Two-Way SSL Authentication in a Web Service

Implementing Secure Sockets Layer on iseries

Security Guide vcenter Operations Manager for Horizon View 1.5 TECHNICAL WHITE PAPER

Programming Project #1

Aradial Installation Guide

Copyright 2013 EMC Corporation. All Rights Reserved.

Stealth OpenVPN and SSH Tunneling Over HTTPS

Encrypted Connections

How to Configure Web Authentication on a ProCurve Switch

Java SSL - sslecho SSL socket communication with client certificate

SafeNet KMIP and Amazon S3 Integration Guide

Preface. Limitations. Disclaimers. Technical Support. Luna SA and IBM HTTP Server/IBM Web Sphere Application Server Integration Guide

Integrating EJBCA and OpenSSO

Junio SSL WebLogic Oracle. Guía de Instalación. Junio, SSL WebLogic Oracle Guía de Instalación CONFIDENCIAL Página 1 de 19

Secure Communication Requirements

CERTIFICATE-BASED SINGLE SIGN-ON FOR EMC MY DOCUMENTUM FOR MICROSOFT OUTLOOK USING CA SITEMINDER

PrinterOn Print Delivery Station Admin Guide

Lepide Active Directory Self Service. Configuration Guide. Follow the simple steps given in this document to start working with

How to Implement Transport Layer Security in PowerCenter Web Services

LDAP User Guide PowerSchool Premier 5.1 Student Information System

SafeNet KMIP and Google Cloud Storage Integration Guide

RemotelyAnywhere Getting Started Guide

webmethods Certificate Toolkit

Sync Security and Privacy Brief

Developers Integration Lab (DIL) Certificate Installation Instructions. Version 1.4

Installation valid SSL certificate

Introduction to Mobile Access Gateway Installation

VMware vrealize Operations for Horizon Security

HTTPS Configuration for SAP Connector

Apache, SSL and Digital Signatures Using FreeBSD

Common security requirements Basic security tools. Example. Secret-key cryptography Public-key cryptography. Online shopping with Amazon

DISTRIBUTED CONTENT SSL CONFIGURATION AND TROUBLESHOOTING GUIDE

DESLock+ Basic Setup Guide Version 1.20, rev: June 9th 2014

Citrix Receiver for Mobile Devices Troubleshooting Guide

7.0 Self Service Guide

How To Set Up Dataprotect

Managing CA-Signed Certificates

Entrust Certificate Services. Java Code Signing. User Guide. Date of Issue: December Document issue: 2.0

Marriott Enrollment Server for Web User Guide V1.4

CRYPTOGRAPHY 456 ANDROID SECURE FILE TRANSFER W/ SSL

RHEV 2.2: REST API INSTALLATION

Domino and Internet. Security. IBM Collaboration Solutions. Ask the Experts 12/16/2014

Enabling SSL and Client Certificates on the SAP J2EE Engine

SSL Configuration on WebSphere Oracle FLEXCUBE Universal Banking Release [September] [2013] Part No. E

WebLogic Server 6.1: How to configure SSL for PeopleSoft Application

VMware vrealize Operations for Horizon Security

Lab Configure Basic AP Security through IOS CLI

Bridgit Conferencing Software: Security, Firewalls, Bandwidth and Scalability

PT Activity: Configure Cisco Routers for Syslog, NTP, and SSH Operations

Verify Needed Root Certificates Exist in Java Trust Store for Datawire JavaAPI

What is the Barracuda SSL VPN Server Agent?

Using RADIUS Agent for Transparent User Identification

DOCUMENTUM CONTENT SERVER CERTIFICATE BASED SSL CONFIGURATION AND TROUBLESHOOTING

Best Practice Guide (SSL Implementation) for Mobile App Development 最 佳 行 事 指 引. Jointly published by. Publication version 1.

CA Performance Center

RemotelyAnywhere. Security Considerations

Remote Access for LAPD Users Using Aventail SSL VPN

Internet Programming. Security

Secret Server Installation Windows Server 2012

Outlook Start Outlook, and click on mserver.wlu.ca. 2. From the Tools menu, choose Options

Table of Contents INTRODUCTION... 2 SYSTEM REQUIREMENTS... 3 SERVICEDESK PLUS EDITIONS... 4 INSTALL SERVICEDESK PLUS... 5

Sage Accpac CRM 5.8. Self Service Guide

Generate CSR for Third Party Certificates and Download Unchained Certificates to the WLC

QUANTIFY INSTALLATION GUIDE

Using etoken for SSL Web Authentication. SSL V3.0 Overview

Configuration Guide. BlackBerry Enterprise Service 12. Version 12.0

FileCloud Security FAQ

Security & Privacy on the WWW. Topic Outline. Information Security. Briefing for CS4173

CA Nimsoft Unified Management Portal

IBM Security QRadar Vulnerability Manager Version User Guide

SSL Tunnels. Introduction

Configuring SSL VPN on the Cisco ISA500 Security Appliance

Training module 2 Installing VMware View

BlackBerry Enterprise Service 10. Version: Configuration Guide

MassTransit 6.0 Enterprise Web Configuration for Macintosh OS 10.5 Server

Chapter 9 Monitoring System Performance

Chapter 7 Managing Users, Authentication, and Certificates

Use Enterprise SSO as the Credential Server for Protected Sites

Transcription:

CS255 Programming Project 2

Programming Project 2 Due: Wednesday March 14 th (11:59pm) Can use extension days Can work in pairs One solution per pair Test and submit on Leland machines

Overview Implement a simple Man In The Middle (MITM) attack on SSL Use Java s networking, SSL and Certificate implementations No need for low level packet manipulation Also implement a password based authentication system for the MITM server Allows hacker to issue commands to server

Overview Normal SSL SSL encrypted data routed like normal TCP/IP data over the internet Internet SSL Web Server

Proxy Server Browser connects to proxy Proxy connects to web server and forwards between the two Internet SSL Web Server

Man in the Middle Instead of forwarding encrypted data between the two hosts, our proxy will set up two DIFFERENT SSL connections between the two. Proxy<->Remote Server Sets up a normal SSL client connection to requested remote site Proxy<->Browser Sets up a SSL server connection to the browser, using its own certificate, generated as a copy of the remote host s cert If the browser accepts this fake cert, the proxy has access to the data in the clear!

What is provided? Basic Proxy Server setup Parses CONNECT request and sets up a connection between client and remote server Basic Admin Server/Client Server listens for connections on a PLAIN socket and parses out username/password/command that the client sends

Security Features Secure connection between admin client and proxy server using SSL Password based authentication for client Secure storage of password file Passwords stored hashed using public and private salt Extra Credit: Challenge / Response authentication This is IN ADDITION TO password authentication

Proxy Server Already listens for the browser CONNECT request and sets up the needed SSL connections You need to Understand the connections being made Obtain the remote server cert from the remote SSL conn Copy the relevant fields and sign the forged cert using your CA cert (from your keystore) (use IAIK) Modify the code creating the client SSL conn to use the newly forged cert

Signing Certificate Build a self signed cert for the proxy server using keytool keytool genkey keyalg RSA Store this in a JKS keystore for use by your proxy server Use it for signing your programmatically generated certs You pretend to be a CA e.g. Verisign Submit a keystore with your project

Generating Certs On the Fly Not easy to generate certs programmatically using standard Java libs Use the IAIK-JCE library iaik.x509.x509certificate

iaik.x509.x509certificate To convert from a java cert: new X509Certficate(javaCert.getEncoded()); Signing cert.sign( AlgorithmID.sha256withRSAEncryption, issuerpk ); See iaik.asn1.structures.name For extracting info (e.g. common name) from the cert s DN (cert.getsubjectdn() )

Managing Certs and SSL Sockets Use the KeyStore class for Loading certs from file (e.g. your CA cert) Storing programmatically generated certs Use SSLContext class for setting up certs to be used with an SSLServerSocket Create a cert Load into new KeyStore Init a KeyFactoryManager with new KeyStore Init SSLContext with new KeyFactoryManager and provided TrustEveryone TrustManager Use SSLContext for creating SSLSocketFactories

Admin Server Already listens for client connections and parses the data sent, using plain sockets You need to Modify the code to use SSL sockets (see the proxy server code for examples) Implement authentication for the transmitted username and password Implement the required admin commands Shutdown the proxy server to stops accepting connections and exit Stats the proxy server returns a summary of the number of connections it has processed. Add code to record these

Password Authentication Proxy server listens for SSL connections from admin client too On connection client transmits a username and password Server verifies these from its local password file, and executes command if the client is authenticated

Password File Need to store a file containing usernames, salts, and hashed passwords Use BOTH public and secret salts (AKA pepper) Should be stored encrypted/maced Similar to how keyfile is stored in project 1 Can use built in CTR mode Username Salt Password ibaker S H(Pwd S P) singuva dabo

Password File Utility You need to add a utility for creating these password files Simple method: Make a class to take a file with a list of usernames and passwords and convert it to a password file

Configuring Mozilla

Possible Problems You should be able to start up the proxy server and connect to it out of the box If you are having problems Is someone else using the port? (default 8001) Try a different port on the command line Firewall problems? Try opening the needed ports 8001/8002 (or whatever) Try running your browser on the same machine and setting the proxy as localhost We can t debug your local network setup

Grading Security comes first Design choices Correctness of the implementation Did you implement all required parts? Secondary Cosmetics Coding style Efficiency

Submitting README file Names, student IDs Describe your design choices How to run your system (e.g. create passwords) Answer to discussion question Your sources A sample of data recorded from your proxy Use /usr/class/cs255/bin/submit from a Leland machine

Stuck? Use the newsgroup (su.class.cs255) Best way to have your questions answered quickly TAs cannot: Debug your code Troubleshoot your local Java installation Troubleshoot your local network