Top Banner
Inside .NET Smart Card Operating System 44Con, September 2012 Behrang Fouladi, SensePost [email protected]
44

Inside .NET Smart Card Operating System

Nov 12, 2014

Download

Technology

SensePost

A presentation by Behrang Fouladi at the 44con Conference held in London in September 2012
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: Inside .NET Smart Card Operating System

Inside .NET Smart Card Operating System44Con, September 2012

Behrang Fouladi, [email protected]

Page 2: Inside .NET Smart Card Operating System

What is a smart card?

VS

Page 3: Inside .NET Smart Card Operating System

What is a smart card?

Page 4: Inside .NET Smart Card Operating System

Single Application Smart Cards

Page 5: Inside .NET Smart Card Operating System

Multi-Application Smart Card

Access Control

Identification

Card Parking

Cashless Payments

Computer Access

Page 6: Inside .NET Smart Card Operating System

Did you know?

• How many of you have Orange SIM cards?• What applications are running on your SIM

card?• Any other apps working silently?

Page 7: Inside .NET Smart Card Operating System

Example: SIM Tracker Applet

• Operators goal: sending the MMS/APN settings to the new handset• Can also be used for investigation purposes

Page 8: Inside .NET Smart Card Operating System

In The News…

– Oyster card: Crypto-1 encryption algorithm attack, 2004

– Cambridge university: EMV relay attack, 2010– Sykipot malware Targeting US DoD smart cards,

2011-2012

Page 9: Inside .NET Smart Card Operating System

In The News…

Page 10: Inside .NET Smart Card Operating System

Why?

Page 11: Inside .NET Smart Card Operating System

Why?

• 8 billion smart cards by 2014• The “Internet of Things”• Chip-enabled mobile payments• Hardware backdoors• Malware is everywhere!

Page 12: Inside .NET Smart Card Operating System

Smart Card Firewall

Page 13: Inside .NET Smart Card Operating System

Multi-application Smart Card Platforms

MULTOS

.NET card

JavaCard

Page 14: Inside .NET Smart Card Operating System

.NET Smart Card

• First .NET virtual machine on the chip• Native support in Windows 7 and server 2008• Used in:– Smart card based corporate badges (Microsoft

employees badge)– Remote Access Control (USA DoD and UK MOD)

Page 15: Inside .NET Smart Card Operating System

.NET smart card overview

Page 16: Inside .NET Smart Card Operating System

.NET smart card security model

App Domain A

App Domain B

App Domain C

RSA Sig(A)RSA Sig(C)

RSA Sig(B)

Page 17: Inside .NET Smart Card Operating System

Public Key Token

Page 18: Inside .NET Smart Card Operating System

Code Access Security

Page 19: Inside .NET Smart Card Operating System

Data Access Security

Page 20: Inside .NET Smart Card Operating System

Card application development

??Deployment & Debugging ??

Communication (APDU) ??

Page 21: Inside .NET Smart Card Operating System

Card application development

.NET assembly

ConverterPlug-in

Comm. Proxy

(1) Compiles program

(2) Conversion to card binary

(3) Signed card binary

(4) .NET remoting comm.

(5) APDU comm.

Vendor’s SDK

Page 22: Inside .NET Smart Card Operating System

How secure is .NET card?

• Has EAL5+ certified Infenion chip • EAL certification is widely used by smart card

industry (EAL3 to EAL7)• .NET card OS is designed to achieve EAL4+• EAL4+ audit:– takes 6 to 9 months, costs high 10sk to low 100sk £– includes independent penetration testing and source

code review in some case • No published vulnerabilities so far

Page 23: Inside .NET Smart Card Operating System

Rev. Engineering For Vuln. Discovery

Page 24: Inside .NET Smart Card Operating System

Smart Card Vuln. research

• No Chip OS binary is available• Traditional tools (debuggers, disassemblers)

are useless• No publicly available testing tools • Secure chips have sensors, shields, encryption • ON-card bytecode/IL code verifier

Page 25: Inside .NET Smart Card Operating System

“HiveMod” Tool

Page 26: Inside .NET Smart Card Operating System

HiveMod

• Vulnerability research tool, for:– .NET card binary (Hive format) visualization– Card Binary manipulation– Card binary Re-signing

Page 27: Inside .NET Smart Card Operating System

.NET Card Binary

Compiler Header

Digital signature Header

Object counters Header

Namespaces reference table

Types reference table

Methods reference table

Fields reference table

Blob definitions

Type definitions

Method definitions

Program code (IL code)

RSA signature

Page 28: Inside .NET Smart Card Operating System

HIVE manipulation/fuzzing

Page 29: Inside .NET Smart Card Operating System

Manipulating Digital Signature Header

offset Field name size32 SHA1 hash of the full assembly 2052 Public key token 860 RSA modulus length 4 (len)64 RSA public exponent 468 RSA modulus len

Compiler Header

Digital signature Header

Object counters Header

Namespaces reference table

Types reference table

Methods reference table

Fields reference table

Blob definitions

Type definitions

Method definitions

Program code (IL code)

RSA signature

Page 30: Inside .NET Smart Card Operating System

Manipulating Digital Signature Header

PBKT=Reverse(Right(SHA1(RSA_modulus),8))

Page 31: Inside .NET Smart Card Operating System

(Bypassing .NET card app Firewall)Old school attack: Public Key Token Spoofing

Page 32: Inside .NET Smart Card Operating System

Attack DemoLet’s use the HiveMod tool to test this

vulnerability!

Page 33: Inside .NET Smart Card Operating System
Page 34: Inside .NET Smart Card Operating System

Manual testing vs. HiveMod

• Rev. engineering the SDK: ~2 months• Hex editor for binary patching : Frustrating• Modified card binary needs to be signed • Destroying at least 10 cards: ~200 Euros

Page 35: Inside .NET Smart Card Operating System

Real World Attack?

Employeecorporate cafeteria

POS terminal

Attacker’s system

(1) Attacker plants malwarein e-purse

Access control app

E-Purse app

GSM (data)

GSM (data)

(2) Payment

(3) Access control data exfiltration

(4) save to card(no G

SM access)

Page 36: Inside .NET Smart Card Operating System

Fiction or Real?

Document available on the internet

Page 37: Inside .NET Smart Card Operating System

Vendor’s Response• “An attacker needs administration key to be able to

upload his malicious application on the card, This Key is normally securely stored in a HSM or a smart card based controller”.

Page 38: Inside .NET Smart Card Operating System

Vendor’s Response

• “Knowledge of the Public Key Token of the targeted application is required”.

Page 39: Inside .NET Smart Card Operating System

Vendor’s Response

• “The targeted application must use private file-system storage for its data to be exposed. Therefore, internal (Application Domain) storage is immune to such attack”.

byte[] key={0xaf,0x09,0x45,0x12,....};

Page 40: Inside .NET Smart Card Operating System

More Vulnerabilities...

• Unauthorized memory read in InitializeArray():public static void InitializeArray(Array array,RuntimeFieldHandle fldHandle);

• Results: Partial memory dump• Destroys the card (no reliable exploitation

yet)

Page 41: Inside .NET Smart Card Operating System

More Vulnerabilities...

Page 42: Inside .NET Smart Card Operating System

Conclusions

• don’t worry!• check the apps PKTs for tampering.• Use a secure card management system• Smart card apps can be patched/updated , but

not the card’s OS!• Smart cards OS and apps and card

management software need pen tests too!

Page 43: Inside .NET Smart Card Operating System

Closing words

• HiveMod Tool would be available to Smart Card vendors and security researchers (contact [email protected])

Page 44: Inside .NET Smart Card Operating System

Questions?