From fca59bea770346cf1c1f9b0e00cb48a61b44a8f3 Mon Sep 17 00:00:00 2001
From: Harald Welte <laforge@gnumonks.org>
Date: Sun, 25 Oct 2015 21:00:20 +0100
Subject: import of old now defunct presentation slides svn repo

---
 2014/simtrace-openfest2014/part-sim.tex | 410 ++++++++++++++++++++++++++++++++
 1 file changed, 410 insertions(+)
 create mode 100644 2014/simtrace-openfest2014/part-sim.tex

(limited to '2014/simtrace-openfest2014/part-sim.tex')

diff --git a/2014/simtrace-openfest2014/part-sim.tex b/2014/simtrace-openfest2014/part-sim.tex
new file mode 100644
index 0000000..a8f737a
--- /dev/null
+++ b/2014/simtrace-openfest2014/part-sim.tex
@@ -0,0 +1,410 @@
+\section{SIM Cards}
+
+\subsection{Smart Card Basics}
+
+\begin{frame}{Terminology}
+\begin{description}
+	\item[SIM] Subscriber Identity Module
+	\item[USIM] Universal Subscriber Identity Mdoule
+	\item[UICC] Universal Integrated Chip Card
+	\item[MS] GSM Mobile Station (phone, modem)
+	\item[UE] UMTS User Equipment
+	\item[ME] GSM Mobile Equipment (MS + SIM)
+	\item[OTA] Over The Air
+	\item[SAT] SIM Application Toolkit
+	\item[CAT] Card (UICC) Application Toolkit
+	\item[USAT] USIM Application Toolkit
+	\item[TAR] Toolkit Application Reference
+\end{description}
+\end{frame}
+
+\begin{frame}{Relevant Specification Bodies}
+\begin{itemize}
+	\item ISO (ISO 7816) smart cards
+	\item ETSI (Eurpoean Telecomms Standardisation Institute)
+	\begin{itemize}
+		\item Classic GSM SIM
+		\item UICC card as basis for various telecom ID purposes
+		\item Card Application Toolkit (CAT)
+	\end{itemize}
+	\item 3GPP (3rd Generation Partnership Project)
+	\begin{itemize}
+		\item USIM Application
+		\item USIM Application Toolkit (USAT)
+		\item API based applet interworking
+	\end{itemize}
+	\item Global Platform
+	\begin{itemize}
+		\item Overall spec for SIM/USIM with Java
+	\end{itemize}
+	\item Sun Microsystems (now Oracle)
+	\begin{itemize}
+		\item Java Card Virtual Machine
+		\item Java Card Runtime Environment
+	\end{itemize}
+\end{itemize}
+\end{frame}
+
+\begin{frame}{The Subscriber Identity Module (SIM)}
+\begin{itemize}
+	\item Basic idea was to store cryptographic identity of subscriber inside smart card
+	\item User can thus migrate identity from one device to another
+	\item User can furthermore use different SIM in same device (e.g. local prepaid SIM while travelling)
+	\item Original SIM card design mostly ISO 7816-4 filesystem and single command to execute A3/A8 algorithm inside card
+	\begin{itemize}
+		\item This could even be done in logic, no processor required
+	\end{itemize}
+\end{itemize}
+\end{frame}
+
+\begin{frame}{The modern SIM}
+The modern SIM is an entirely different beast
+\begin{itemize}
+	\item Cryptographic processor smart card
+	\begin{itemize}
+		\item Symmetric cryptography such as DES, 3DES, AES
+		\item Public key cryptography such as RSA, ECC
+	\end{itemize}
+	\item Java Card including a small Java VM and Java RE
+	\item Multiple application support
+	\item Ability to download applications (Applets) into card
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Smart Card Basics}
+\begin{itemize}
+	\item microprocessor with RAM, Flash and Operating System
+	\item Interface: Electrical + Logical Protocol (ISO7816-3, ISO7816-4)
+	\item File System based representation of information
+	\item Protocol describes remote operations on the file system
+	\item Few non-filesystem related commands for e.g.  authentication
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Smart Card Filesystem}
+\begin{itemize}
+\item Hierarchical file system like on PC
+\begin{description}[MF]
+	\item[MF] (master file): root directory
+	\item[DF] (dedicated file): subdirectory
+	\item[EF] (entry file): actual file
+	\begin{itemize}
+		\item transparent or record oriented
+		\item record linear fixed/variable or record cyclic
+	\end{itemize}
+\end{description}
+\item File names don't exist on card. 16bit FID (File ID) or 8bit SFID used instead
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Smart Card Filesystem Hierarchy}
+\begin{figure}[h]
+	\centering
+	\includegraphics[width=110mm]{sim-mf-df_gsm.png}
+\end{figure}
+\end{frame}
+
+
+%\begin{frame}{Smart Card Filesystem Permissions}
+%\begin{itemize}
+%	\item similar to 'permission bits' on Linux or other PC OS
+%	\item each file can define separate read/write permissions
+%	\item some cards are permanently read-only
+%	\item other files can be written to after regular PIN verification
+%	\item yet another set of files e.g. needs one of the ADM PINs
+%\end{itemize}
+%\end{frame}
+
+
+%\begin{frame}{Smart Card Logical Channels}
+%\begin{itemize}
+%	\item Initially Smart Cards had only one interface (UART)
+%	\item This means that only one application on the host side can interact with it, as there's sharde state
+%	\item logical channels introduce a concept where this connection is virtualized, and multiple separate states (including with different access privileges) can exist in parallel
+%\end{itemize}
+%\end{frame}
+
+\begin{frame}{SIM Card APDU Commands}
+Classic SIM card commands include the following
+\begin{itemize}
+	\item SELECT (change directory / open file)
+	\item READ BINARY, UPDATE BINARY (read/write transparent EF)
+	\item READ RECORD, UPDATE RECORD (read/write record EF)
+	\item ENABLE CHV, DISABLE CHV, CHANGE CHV (enable, disable or change PIN)
+	\item VERIFY CHV, UNBLOCK CHV (verify or unblock PIN)
+	\item RUN GSM ALGORITHM (A3/A8 authentication)
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Smart Card Filesystem}
+Typical operations of the phone include
+\begin{itemize}
+	\item navigating inside filesystem by SELECT on DF/EF
+	\item authenticating the user PIN
+	\item reading/updating files
+	\begin{itemize}
+		\item reading IMSI
+		\item old-school SMS and contact storage
+		\item storing session keys (Kc/KcGPRS, ...)
+		\item storing last cell on power-off
+	\end{itemize}
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Smart Card PINs}
+The level of access to the filesystem and other card features is
+determined by authentication using a shared secret, called 'PIN'.
+\begin{itemize}
+	\item Regular PIN for normal use of the card by the end user
+	\item PUK for resetting the pin after too many retries
+	\item ADM1..n PIN for access by the operator only
+\end{itemize}
+\end{frame}
+
+%\begin{frame}{Multi-Application Smart Cards}
+%\begin{itemize}
+%	\item Classic SIM cards are single application, accessing the
+%		GSM related files works by entering the known DF.GSM
+%	 	directory with its well-known FID
+%	\item Later the idea of multi-application smart cards entered
+%		the market
+%	\item A multi-application smart card contains an EF.DIR in the
+%		MF
+%	\item EF.DIR contains records with the AIDs of all applications
+%		on the card.
+%	\item AID prefix is well-known to the application, AID suffix is
+%		manufacturer specific.  Applications use prefix-match
+%	\item application specific directory can be entered by SELECT on
+%		the AID
+%\end{itemize}
+%\end{frame}
+
+%\begin{frame}{USIM Application Dedicated File (ADF.USIM)}
+%\begin{figure}[h]
+%	\centering
+%	\includegraphics[width=110mm]{usim-dir-structure.png}
+%\end{figure}
+%\end{frame}
+
+
+%\subsection{From SIM to UICC and USIM}
+
+%\begin{frame}{Evolution of the SIM}
+%\begin{itemize}
+%	\item Classic GSM SIM cards
+%	\begin{itemize}
+%		\item initial GSM / ETSI TS 11.11 for classic GSM SIM, based on ISO 7816-2/3/4
+%		\item small changes for GPRS support by introducing a few new optional files
+%		\item Class byte 0xA0 used in GSM SIM
+%	\end{itemize}
+%	\item USIM cards
+%	\begin{itemize}
+%		\item Completely new approach based on ETSI UICC spec, multi-application capable
+%		\item Selection of ADF.USIM by AID
+%		\item Many new files
+%		\item backwards compatibility achieved by placing DF.GSM
+%			in MF and linking (think of symlink/hardlink) of
+%			relevant files
+%		\item Authentication for GSM and UMTS can be completely
+%			different (algorithm, secret key used, ...)
+%	\end{itemize}
+%	\item Additional application profiles exist for GSM-R, TETRA and
+%		other ETSI related communications systems.
+%\end{itemize}
+%\end{frame}
+
+%\begin{frame}{Evolution of Specifications}
+%\begin{itemize}
+%	\item Classic SIM: ETSI TS 11.11 / 3GPP TS 51.011
+%	\item UICC Card: 3GPP TS 31.101, 31.900, ETSI TS 102 221, 102 222
+%	\item USIM application: 3GPP TS 31.102
+%	\item ISIM application for IMS (VoIP for LTE): 3GPP TS 31.103
+%\end{itemize}
+%\end{frame}
+
+%\begin{frame}{ISIM Application Dedicated File (ADF.ISIM)}
+%\begin{figure}[h]
+%	\centering
+%	\includegraphics[width=110mm]{isim-dir-struct.png}
+%\end{figure}
+%\end{frame}
+
+\subsection{SIM Application Toolkit (SAT)}
+
+\begin{frame}{SIM Application Toolkit (SAT)}
+\begin{itemize}
+	\item Ability for card to run applications that have UI on the phone
+	\begin{itemize}
+		\item Display menu items on-screen
+		\item Get user input from keypad/touch-screen
+	\end{itemize}
+	\item Original Version Described in TS 11.14 and 11.11
+\end{itemize}
+\end{frame}
+
+\begin{frame}{SAT -- Proactive SIM}
+The {\em Proactive SIM} features
+\begin{itemize}
+	\item Sending a short message
+	\item Setting up a voice call
+	\item Playback of a tone in earpiece
+	\item Providing location information from ME to SIM
+	\item Have ME execute timers on behalf of SIM
+	\item Sending DTMF to network
+	\item Running an AT command received from SIM, sending result back to SIM
+	\item Ask ME to launch browser to SIM-provided URL
+\end{itemize}
+\end{frame}
+
+\begin{frame}{SAT -- Call and SMS Control}
+\begin{itemize}
+	\item ME passes MO call setup attempts to SIM for approval
+	\item SIM can then
+	\begin{itemize}
+		\item approve or decline the MO call
+		\item modify the call details such as phone number
+		\item replace the call with USSD message
+	\end{itemize}
+	\item ME passes USSD requests similar to Call Control
+	\item Similar mechanism exists for all MO SMS
+\end{itemize}
+\end{frame}
+
+\begin{frame}{SAT -- Provide local information}
+The SIM can inquire the ME about
+\begin{itemize}
+	\item MCC / MNC / LAC / Cell ID
+	\item IMEI of ME
+	\item Network Measurement Results
+	\item BCCH channel list
+	\item Date, Time, Timezone
+	\item ME language setting
+	\item Timing Advance
+\end{itemize}
+\end{frame}
+
+\begin{frame}{SAT -- Event download}
+The SIM is notified by ME about certain events such as
+\begin{itemize}
+	\item Call Connected / Disconnected
+	\item Location Status (Location Area change)
+	\item User activity (keyboard input)
+	\item Idle screen available
+	\item Browser termination
+\end{itemize}
+\end{frame}
+
+\begin{frame}{SAT - Data download}
+\begin{itemize}
+	\item Enables Operator to exchange arbitrary data with the SIM
+	\item Could be RFM (Remote File Management)
+	\begin{itemize}
+		\item Read or modify phone book entries
+		\item Even change the IMSI of the SIM (!)
+	\end{itemize}
+	\item In case of Java Card, can be download of card applets
+	\begin{itemize}
+		\item Applets are stored permanently on SIM
+		\item Can later use SAT procedures to interact with ME
+		\item TS 03.19 specifies Java API to access SAT from Java RE
+	\end{itemize}
+\end{itemize}
+\end{frame}
+
+\begin{frame}{SAT - Data download}
+SAT Data Download can happen via
+\begin{itemize}
+	\item via SMS or Cell Broadcast
+	\begin{itemize}
+		\item Uses TS 03.40 TP-PID {\em SIM DATA Download}
+		\item ME forwards such SMS to the SIM in {\tt ENVELOPE} APDU
+		\item Response from SIM is sent back as MO-SMS or DELIVERY REPORT
+	\end{itemize}
+	\item via BIP (Bearer Independent Protocol)
+	\begin{itemize}
+		\item Dedicated CSD call between network and SIM
+		\item GPRS session between network and SIM
+	\end{itemize}
+\end{itemize}
+\end{frame}
+
+\begin{frame}{SAT - Data download}{Data download security}
+\begin{itemize}
+	\item GSM TS 03.48 specifies secure messaging for data download
+	\item Includes replay protection
+	\item Supports DES and 3DES
+	\item SMS chaining for long commands / large data
+\end{itemize}
+\end{frame}
+
+\subsection{SIM threat model}
+\begin{frame}{SIM card abuse by hostile operator}
+\begin{itemize}
+	\item Even if the phone might be considered trusted, the SIM card is owned and controlled by the operator
+	\item Using SAT features, the operator can control many aspects of the phone
+	\item Examples
+	\begin{itemize}
+		\item Remotely reading address book / stored SMS
+		\item Monitor user behavior (browser termination, idle screen, ...)
+		\item Ask phone to establish packet data session
+	\end{itemize}
+\end{itemize}
+\end{frame}
+
+\begin{frame}{SIM card re-programming by attacker}
+\begin{itemize}
+	\item If the SIM is not properly secured (auth + encryption keys, ...) a third party attacker can send SAT envelope SMS to the card and install resident Java applets
+	\item The attacker can then
+	\begin{itemize}
+		\item Obtain detailed location information and send it via SMS
+		\item Intercept/log outgoing calls
+		\item Sending copies of incoming + outgoing SMS elsewhere
+	\end{itemize}
+	\item Even using SIM card channel to exploit baseband stack is feasible
+\end{itemize}
+\end{frame}
+
+\begin{frame}{SIM card proxy / MITM by attacker}
+As soon as an attacker has temporary physical access to a phone, he can
+\begin{itemize}
+	\item Insert a proxy-SIM between real SIM and phone
+	\item Do everything a Java applet could do, but even with a securely configured SIM as he does not modify the existing SIM
+	\item Sniff current Kc and send it out e.g. via SMS or even UDP/TCP packets over GPRS
+	\item ... by only using standard interfaces that are common among all phones (as opposed to baseband software hacking which is very model-specific)
+\end{itemize}
+Most users would never notice this as they rarely check their SIM slot
+\end{frame}
+
+%%%%%%
+\subsection{SIM attacks countermeasures}
+
+\begin{frame}{Defending against SIM based attacks}
+\begin{itemize}
+	\item SIM cards are Operator issued, Ki is on the SIM
+	\begin{itemize}
+		\item SIM card can thus not be replaced, but original SIM must be used
+	\end{itemize}
+	\item Configure telephone to not store contacts or SMS on SIM
+	\item Communication between SIM and ME is not encrypted/authenticated
+	\item Solution: Proxy SIM between SIM and ME to break STK / OTA
+	\begin{itemize}
+		\item Filter all STK/OTA/Proactive commands like ENVELOPE
+		\item Indicate lack of STK support to ME (EF.Phase)
+	\end{itemize}
+\end{itemize}
+\end{frame}
+
+\begin{frame}{Proxy SIM with firewall}
+\begin{itemize}
+	\item There are no known commercial products that implement STK/OTA filtering
+	\item But there are a number of shim SIM cards that are plugged between SIM and SIM slot
+	\item Most of them are used for SIM unlocking modern phones
+	\item Some vendors produce freely (re)programmable proxy SIMs:
+\end{itemize}
+\begin{figure}[h]
+\subfigure{\includegraphics[width=40mm]{bladox-turbosim.jpg}}
+\subfigure{\includegraphics[width=25mm]{rebelsim2.jpg}}
+	   \caption{Bladox TurboSIM (AVR) and RebelSIM II (8051)}
+	   %\caption{Bladox Turbo SIM (AVR)}}
+\end{figure}
+\end{frame}
-- 
cgit v1.2.3

