Andrés Blanco Ezequiel Gutesman
Abusing the Windows WiFi native API to create a covert channel
1
Abusing the Windows WiFi native API to create a covert channel - - PowerPoint PPT Presentation
Abusing the Windows WiFi native API to create a covert channel Andrs Blanco Ezequiel Gutesman 1 Outline Covert Channels Attack Vectors and Scenarios IEEE 802.11 Fundamentals Covert Channel Design Implementation
1
2
Department of Defense Trusted Computer System Evaluation Criteria 3
4
5
6
9
10
11
12
13
Windows SoftAP WiFi Native API Covert Channel Supported from Windows 7 and Windows Server 2008 R2 or later Supported from Windows Vista or later Needs administrator privileges Doesn't need administrator privileges Good bandwidth Limited bandwidth Not supported on every Windows driver
To receive the Windows 7 logo, a wireless driver must implement the wireless Hosted feature.
Should work with any driver that works on Windows User can notice the SoftAP is running Hidden from user
14
Station Station Station Station
Access Point
beacon b e a c
b e a c
beacon
15
Station
probe request “Net A” probe request “Net A” probe request “Net B” probe request “Net B”
Access Point
Access Point
Access Point
16
Station Access Point
17
Victim Attacker
18 Ref: Attacking Automatic Wireless Network Selection (http://www.theta44.org/karma/aawns.pdf)
2
Frame ctl Duration
2 6
DA SA
6 6
BSS ID
2
Seq ctl Frame Body
Variable
FCS
4 MAC Header 2
Timestamp
8
Beacon Interval
2
Capab. Info
Variable
SSID
7
FH Parameter Set DS Param. Set
2
CF Parameter Set
8 = channel data 20
2
Frame ctl Duration
2 6
DA SA
6 6
BSS ID
2
Seq ctl SSID
Variable
FCS
4 MAC Header
Supported Rates
Variable
Ext. Supported Rates
Variable Frame Body = channel data 21
2
Frame ctl Duration
2 6
DA SA
6 6
BSS ID
2
Seq ctl Frame Body
Variable
FCS
4 MAC Header 2
Timestamp
8
Beacon Interval
2
Capab. Info
Variable
SSID
7
FH Parameter Set DS Param. Set
2
CF Parameter Set
8
Information Element
Variable
Robust Security Network
Variable = channel data 22
23
DWORD WINAPI WlanGetAvailableNetworkList(
__in HANDLE hClientHandle, __in const GUID *pInterfaceGuid, __in DWORD dwFlags, __reserved PVOID pReserved, __out PWLAN_AVAILABLE_NETWORK_LIST *ppAvailableNetworkList); 24
typedef struct _WLAN_AVAILABLE_NETWORK_LIST { DWORD dwNumberOfItems; DWORD dwIndex; WLAN_AVAILABLE_NETWORK Network[1]; } WLAN_AVAILABLE_NETWORK_LIST, *PWLAN_AVAILABLE_NETWORK_LIST;
25
typedef struct _WLAN_AVAILABLE_NETWORK { ... DOT11_SSID dot11Ssid; ... } WLAN_AVAILABLE_NETWORK, *PWLAN_AVAILABLE_NETWORK;
DWORD WINAPI WlanGetNetworkBssList( __in HANDLE hClientHandle, __in const GUID *pInterfaceGuid, __opt const PDOT11_SSID pDot11Ssid, __in DOT11_BSS_TYPE __in BOOL bSecurityEnabled, __reserved PVOID pReserved, __out PWLAN_BSS_LIST *ppWlanBssList);
typedef struct _WLAN_BSS_LIST { DWORD dwTotalSize; DWORD dwNumberOfItems; WLAN_BSS_ENTRY wlanBssEntries[1]; } WLAN_BSS_LIST, *PWLAN_BSS_LIST;
typedef struct _WLAN_BSS_ENTRY { DOT11_SSID dot11Ssid; ... DOT11_MAC_ADDRESS dot11Bssid; ... ULONG ulIeOffset; ULONG ulIeSize; } WLAN_BSS_ENTRY, *PWLAN_BSS_ENTRY;
29
30
DWORD WINAPI WlanScan( __in HANDLE hClientHandle, __in const GUID *pInterfaGuid, __in_opt const PDOT11_SSID pDot11Ssid, __in_opt const PWLAN_RAW_DATA pIeData, __reserved PVOID pReserved);
31
32
33
34
35 http://eprint.iacr.org/2010/332.pdf
36
37