Top Banner
CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner
67

CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Dec 27, 2015

Download

Documents

Erika Cox
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

CS401 Cyber SecuritySpring 2008

LibPurple/PidginPassword Plugin

Jonathan Blount Charles Tullock C. Shaun Wagner

Page 2: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Introductionto

LibPurple

Charles Tullock

Page 3: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

What is LibPurple?Open Source Library in C

Instant Messaging Routines

Account Management

LibPurple IntroductionLibPurple Introduction

Page 4: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

What is LibPurple?Protocols: AIM, ICQ, Jabber/XMPP, MSN Messenger, Yahoo!, Bonjour, Gadu-Gadu, IRC, Novell GroupWise Messenger, QQ,

Lotus Sametime, SILC, SIMPLE, MySpaceIM, Zephyr

LibPurple IntroductionLibPurple Introduction

Page 5: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

What is Pidgin?One application, multiple protocols

simultaneously

Windows and *nix

Default IM program on many *nix platforms

LibPurple IntroductionLibPurple Introduction

Page 6: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Usage of LibPurple

Adium MeeboApollo IM OpenWengoEQO PidginFinch ScatterChatInstantbird Telepathy-Haze

LibPurple IntroductionLibPurple Introduction

Page 7: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Password StoragePasswords in accounts.xml (plain text)

Developers choose no security as opposed to false security.

LibPurple IntroductionLibPurple Introduction

Page 8: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Password OptionsSecurity by obscurity

Control access to plain text file

Encrypt password behind a password

LibPurple IntroductionLibPurple Introduction

Page 9: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Password Behind a PasswordKDE Wallet

Windows: LibCrypt, Credential ManagementGnome Keyring Service

3rd Party Applications

LibPurple IntroductionLibPurple Introduction

Page 10: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Platform Independent Pluginplugin_encrypt_passwords

Encrypts all passwords stored in plain text.Removes passwords from plain text after

encryption.

LibPurple IntroductionLibPurple Introduction

Page 11: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Platform Independent Pluginplugin_encrypt_passwords

plugin_fetch_passwordsUsed to fetch passwords for all accounts

before accounts connect to messaging services.

LibPurple IntroductionLibPurple Introduction

Page 12: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Platform Independent Pluginplugin_encrypt_passwords

plugin_fetch_passwordsplugin_decrypt_passwords

Decrypt all encrypted passwords and place them in the plain text accounts file.

LibPurple IntroductionLibPurple Introduction

Page 13: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Plugin ImpactLibPurple applications are more secure

Same password for multiple systems

Indirect vulnerabilities

LibPurple IntroductionLibPurple Introduction

Page 14: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Questions?

LibPurple IntroductionLibPurple Introduction

Page 15: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

KWallet Pluginfor

LibPurple (Pidgin)

C. Shaun Wagner

Page 16: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

KWallet is a credentials management application for the K Desktop Environment

(KDE).

KWallet is the preferred method for saving passwords in KDE.

KWallet PluginKWallet Plugin

Page 17: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

KWallet Features

Password behind a password encryption

Warns users when programs access passwords

Users may easily manage encrypted data

KWallet PluginKWallet Plugin

Page 18: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Implementing KWallet

Direct API implementation

Messaging bus implementation:

DCOP for KDE3

D-BUS for KDE4

KWallet PluginKWallet Plugin

Page 19: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Goals

Save passwords in KWallet when requested

Fetch passwords from KWallet as needed

Save passwords in plain text when requested

KWallet PluginKWallet Plugin

Page 20: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Goals

Code should be as simple as possible

Code should compile using default makefile

Plugin should work in KDE3 and KDE4

KWallet PluginKWallet Plugin

Page 21: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

LibPurple and KWallet

do not integrate easily

KWallet PluginKWallet Plugin

Page 22: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Problem

LibPurple plugins must be written in C

KWallet applications must be written in C++

KWallet PluginKWallet Plugin

Page 23: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Problem

LibPurple plugins must be written in C

KWallet applications must be written in C++

Solution

Wrap required C code in extern “C”

KWallet PluginKWallet Plugin

Page 24: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Problem

KWallet plugin requries Qt headers and compilation with a C++ compiler

KWallet PluginKWallet Plugin

Page 25: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Problem

KWallet plugin requries Qt headers and compilation with a C++ compiler

Solution

Redefine compiler and header includes on the command line for make

KWallet PluginKWallet Plugin

Page 26: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Problem

LibPurple is a GTK+ application

KWallet is a Qt application

GTK+ is incompatible with Qt in many ways

KWallet PluginKWallet Plugin

Page 27: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Problem

GTK+ is incompatible with Qt in many ways

Solution

Manually translate GTK+ types to and from Qt types. Example:

Convert gchar* to char* to QString

KWallet PluginKWallet Plugin

Page 28: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Compiling

Included all Qt libraries

Converted values between GTK+ and Qt

Wrapped C code in extern “C”

Compiled with C++ compiler

KWallet PluginKWallet Plugin

Page 29: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Segmentation Fault

KWallet must have a parent Qt application

KWallet PluginKWallet Plugin

Page 30: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Segmentation Fault

KWallet must have a parent Qt application

Solution

Create an empty (and invisible) KApplication

which is the parent class for all KDE/Qt applications

KWallet PluginKWallet Plugin

Page 31: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Segmentation Fault

KWallet cannot open the default wallet

KWallet PluginKWallet Plugin

Page 32: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Segmentation Fault

KWallet cannot open the default wallet

Solution

Undocumented: The lkwalletclient library must be linked when compiling

KWallet PluginKWallet Plugin

Page 33: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Segmentation Fault

KApplication and KWallet cannot be re-instantiated inside of functions

KWallet PluginKWallet Plugin

Page 34: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Segmentation Fault

KApplication and KWallet cannot be re-instantiated inside of functions

Solution

Make both KApplication and KWallet global

KWallet PluginKWallet Plugin

Page 35: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Beta Test

Encrypt Passwords

KWallet PluginKWallet Plugin

Page 36: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Beta Test

Encrypt Passwords

Successful

All passwords were removed from the plain text file and placed in KWallet

KWallet PluginKWallet Plugin

Page 37: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Beta Test

Fetch Passwords

Successful

All passwords were fetched and attached to the accounts before the accounts

connected to the messaging services

KWallet PluginKWallet Plugin

Page 38: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Beta Test

Decrypt Passwords

KWallet PluginKWallet Plugin

Page 39: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Beta Test

Decrypt Passwords

Successful

All passwords were removed from KWallet and placed in the plain text file

KWallet PluginKWallet Plugin

Page 40: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Beta Test

KDE3 and KDE4 test

Successful

Plugin performed properly in both KDE3 and KDE4 using Pidgin 2.4

KWallet PluginKWallet Plugin

Page 41: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Note on D-BUS

D-BUS is standard application communication service in KDE4

LibPurple has D-BUS functionality in the plugin API

KWallet PluginKWallet Plugin

Page 42: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Questions?

KWallet PluginKWallet Plugin

Page 43: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Windows Pluginfor

LibPurple (Pidgin)

Jonathan Blount

Page 44: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Password Management

Credential Manager

Hard to integrate

Easily hacked

Windows PluginWindows Plugin

Page 45: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Password Management

CryptoAPI

Windows 2000

Data Protection API

Crypt32.dll library

More secure

Windows PluginWindows Plugin

Page 46: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

DPAPI

Functions

CryptProtectData

CryptUnprotectData

Windows PluginWindows Plugin

Page 47: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

DPAPI

Optional Entropy

Only a user with the same logon credentials as the encrypting user can decrypt the

data

Windows PluginWindows Plugin

Page 48: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

DPAPI

Windows PluginWindows Plugin

Page 49: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Environment

Pidgin/LibPurple on Windows using Cygwin

Written in C and makes heavy use of Glib (GTK++)

Link to Windows libraries

Windows PluginWindows Plugin

Page 50: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Environment

No external password management program

Debugging

Windows PluginWindows Plugin

Page 51: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

DLL Loading

Load external library

Create the handle to the DLL

Free the library when done

Set pointer to NULL

Windows PluginWindows Plugin

Page 52: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Encryption

Windows PluginWindows Plugin

Page 53: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Storing Binary in Text File

Convert a byte array to a string

Visual C# is one line of code

Windows PluginWindows Plugin

Page 54: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Storing Binary in Text File

Convert a byte array to a string

C is over 20 lines of code

Windows PluginWindows Plugin

Page 55: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Decryption

Windows PluginWindows Plugin

Page 56: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Fetching Passwords

Straightforward

Decrypt Passwords

Load Accounts

Windows PluginWindows Plugin

Page 57: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Beta Testing

Encrypting Passwords: Success

Fetching Passwords: Success

Decrypting Passwords: Success

Windows PluginWindows Plugin

Page 58: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Questions?

Windows PluginWindows Plugin

Page 59: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Demo

LibPurple PluginLibPurple Plugin

Page 60: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.
Page 61: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

KWallet Pluginfor

LibPurple (Pidgin)

C. Shaun Wagner

Page 62: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.
Page 63: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.
Page 64: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.
Page 65: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.

Windows Pluginfor

LibPurple (Pidgin)

Jonathan Blount

Page 66: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.
Page 67: CS401 Cyber Security Spring 2008 LibPurple/Pidgin Password Plugin Jonathan Blount Charles Tullock C. Shaun Wagner.