There are times a Pocket PC owner might need to use a public hotspot to check email or surf the internet. The problem is that most wireless hotspots are vulnerable to sniffer based attacks. Emails, web pages, chat sessions and more are all sent in plain text over the airwaves. Anyone with a sniffer program has the power to capture and review this information, which more often than not includes passwords and sensitive data.
While a PC owner has a plethora of options available to secure their wireless traffic, the Pocket PC owner is relatively left with few choices. There are some VPN software vendors that support Windows Mobile and these programs can be used to create a secure link between the PDA and some home office server. However, for most average users this is not a feasible solution because they have no access to a VPN server, and wouldn't know what to do with one even if it was available. So, what alternatives does the average Pocket PC user have?
This section will provide a step by step guide that you can use to securely communicate with most any online service (e.g. email, web, chat). While the requirements and steps are not plug-and-play, they are within grasp of most any well versed computer user. This particular solution is not free, but will only cost you about $100 a year. For this price you will not just get secure communications for your PDA, but you also get a web server, online email, your own domain name, and much more.
Overview of Communications
When you use Pocket IE to look at CNN.com, several things happen. First your Pocket PC has to learn the IP address of CNN.com's web site. This is accomplished by sending the desired domain name (www.cnn.com) to a domain name server, which will reply with the specific IP address where that resource can be found. Next Pocket IE will attempt to connect to the web server, and once connected, will ask the web server for the contents of the requested web page. The web page will be processed by the web server, and the results will be passed back to the PDA for viewing. Finally, Pocket IE will render the web page and display it to you on your screen.
There are two problems here. If someone is sniffer the wireless network that you are connected to, they will see the initial DNS query and the complete contents of the web page. If this page contains sensitive information, it would not belong to the attacker. Second, by connecting over an insecure wireless network, there is no way for you to be sure your wireless session isn't being hijacked. For example, the attacker could insert their own DNS query results into the airwaves and trick you into going to a fake website. Image the consequence if you were tricked into logging onto your online banking site!
Figure 1 illustrates the components to a standard web request. The blue line denotes the initial DNS request that occurs between the PDA user and the DNS server. This will provide the PDA user with the IP address of the Web Server, to which the PDA will next connect to download the requested web page. Note the vantage point of the attacker. He would have access to everything passing over the WLAN connection.
Figure 1: Regular web request over WLAN.
To stop an attacker from capturing any plaintext data, you have to encryption the communications. By doing this, the attacker will only see garbled traffic that makes no sense. You should also setup and use some sort of secure login process to ensure no man in the middle attack is executed against you and your PDA.
Fortunately, all this can be accomplished via SSH( Secure Shell) and a little port forwarding/proxying. Unfortunately, this means you will need to access to an ssh server/client, a proxy server, and a make a few changes to your Pocket PCs network connection. However, given the options, there is no other easier or cheaper method to a secure connection on a public wireless network.
There are a few requirements that need to be addressed prior to setting up the SSH tunnel. The following lists the necessary parts and their purposes.
To make this all work, you will need to find a SSH server online. I have used PHPWebHosting.com for sometime and found them to be reliable and rather inexpensive For about $10 a month I get unlimited web space, unlimited emails account, and unlimited sub-domains (within reason). Part of this package also includes the option for SSH access to the server, which is made available upon request and with a credit card.
There are other options available, but not many people will provide full SSH access to a server due to the security problems that can come with it. The provider has to have some form of control to keep their clients from rooting their box. There are numerous 0-day vulnerabilities that could be exploited via shell access to give the user root level permissions on the server. This type of risk is not something most people want to deal with.
There are only a handful of SSH clients for the Pocket PC/Windows Mobile platform. Of these, I have only found one program (PockeTTY) that provides support for a feature called 'port forwarding' or 'ssh tunneling'. You must have this option in order to create the link between your web requests and the SSH server.
PockeTTY is available from http://www.dejavusoftware.com/pocketty/. You can download a limited demo version that will disconnect the session after five minutes, or purchase the program for about $20. PockeTTY also includes support for a combination of algorithms and hashing functions that may or may not be of interest.
In the previous section, we discussed some of the threats a PDA user must consider when using a public hotspot. Simply put, there is little to no security being offered by most public wireless networks. As a result, all emails and webpages are readable by anyone with a sniffer. Fortunately, there are a few means of protection, one of which is accomplished via an SSH tunnel. In this section, we will look at the optional requirements and provides a step by step outline for setting up your own SSH tunnel.
There are many options available when performing port forwarding. You can configure your Pocket PC to use the SSH tunnel to securely check your email, chat with people, or even view web pages. However, port forwarding is limited to only one server per port. While this isn't a problem for static online services like email that always have the same IP address, it is an issue if you want to surf the internet. By design, the SSH tunnel can only connect to one remote server per port. This means you would have to reconfigure the port forwarding each time you wanted to view a new webpage.
The way around this problem is to use a proxy server. A proxy server takes a clients request, obtains the web content, and then passes the results back to the client. At no point does the client have direct access to the web server that provided the web content. This type of functionality has two main purposes. First, a proxy server can help network administrators manage and monitor their clients web usage. Since all connections have to pass through the proxy, it becomes the point of control. The second function a proxy server provides is that it masks the client from the web server. In other words, the web server only sees the proxy servers address when a page is requested. This helps to provide anonymity to the client.
In this case, the proxy server will be acting like a single request point. The proxy server's address can be used as remote server to which all the tunneled forwarded requests are made. This way the proxy server handles all the web requests and passes the data back through the SSH server to the PDA.
Most people do not have a personal proxy server. However, the internet community is full of open proxies just waiting for you to connect through them. Sites such as http://www.publicproxyservers.com/page1.html have listings of these proxies. Note however, any public proxy you find online may not be secure, or may under the control of someone looking for sensitive information. If you just want to check out the latest posting at Slashdot.org or InformIT.com, then it really doesn't matter who is watching. Just be very sure you don't attempt to perform anything involving credit cards or user names and passwords.
DNS Server Address
When most people think of a web site, it is in the format of http://www.xyz.com. This is nice for us humans because these names are generally easy to remember and often relate to the content of the site. Computers, on the other hand, do not care or understand what http://www.xyz.com means. Instead, they use numeric addresses, called IP addresses, to locate each other on a network. This is accomplished via a Domain Name Service (DNS). Generally your ISP will assign you a server, but you can also use any one of thousands of static IP addresses. Since DNS requests always pass over port 53, we can also configure this request to pass through the SSH tunnel. If the DNS request was performed outside the tunnel, it would be subject to sniffing and man-in-the-middle spoofing attacks. Since PockeTTY supports multiple port forwards, and the server is a static value, it is simple to tunnel the DNS request along with HTTP web traffic.
Configuring the SSH Tunnel/Proxy
Assuming the entire previously mentioned component are installed or available, you can now configure Pocket PC to use the SSH connection for all HTTP traffic. The following will list the steps with applicable screen shots on Windows Mobile 2003 SE.
Configure wireless network and connect to WLAN.
Click Start→ Settings→ Connections Tab and Network Cards icon.
Click on recently added and 'Connected' WLAN listing.
Select 'Work' from Connects to: menu and click OK.
Figure 2: Select Work from Connects to: menu
Select Network Adapters tab.
Verify that My network card connects to: menu has 'Work' selected and click OK.
Click Start→Settings→Connections and Connections icon.
Click Set up my proxy server.
Check This network connects to the Internet and This network uses a proxy server...
Enter '127.0.0.1' in Proxy server: text box (figure 3).
Figure 3: Connection settings
Select [Advanced] button and verify the 127.0.0.1 is added under http
Close all open windows and execute PockeTTY.
Click Session→Connect, select 'New SSH2 Connection' and hit [Configure].
Enter host name of SSH server you have available on the Internet.
Enter your user name (figure 4).
Figure 4: PockeTTY Connection Configuration
Hit [Port Forward...] button and click the [Add] button (figure 5).
Setup HTTP first with the following entries:
Local port: 80
Remote host: proxy server IP
Remote port: proxy server HTTP port
Setup DNS second with the following entries:
Local port: 53
Remote host: DNS server IP
Remote port: 53
Figure 5: PockeTTY Port Forwarding setup
Click [Done] and [Connect]. This should establish the SSH connection and setup the session (figure 6).
Figure 6: Successful connection in PockeTTY
To test, open up Pocket IE and attempt to connect to a web site. Use a program like Airscanner's Mobile Firewall (Logs) to verify that your data is all passing over port 22. You can also connect to http://whatismyip.com to ensure you are passing through the proxy server IP address.
Once all the pieces, parts, and configurations are in place, any traffic passed between the PDA and a web server will be secured. Our example does not include email, but this can be added by included two more Forwarded Ports in our PockeTTY setup (e.g. 25 and 110 for the standard POP/SMTP connection). The following illustrates clearly how an SSH server can help protect WLAN users from attackers.
Figure 7: Communications overview using SSH
In figure 7, the yellow line illustrates the SSH encrypted tunnel. The attacker can see this, but since the data is all encrypted, there is nothing of value for the attacker to use. The initial DNS request is passed through the tunnel to the SSH server, which relays it on to the DNS server (blue line). With the correct IP address in hand, the PDA sends the web page request to the proxy server (red line), which looks at the IP address and retrieves the requested information (green line). The web page is then passed back to the SSH server and onto the PDA user via the encrypted tunnel.
Figure 8: Airscanner Firewall Logs
Note that the attacker is oblivious to the many connections occurring out on the internet. Airscanner's Firewall provides a look at the ports used during a lookup of Airscanner.com. As illustrated, only remote port 22 is in use. It is also equally as important to understand that all the web traffic is still in plain text as it passes from the web server through the proxy server and back to the SSH server. While the data on the WLAN side is secure, it is still possible for someone to sniff and capture the data out on the internet. Of course, this is always a threat that must be considered by internet users, regardless of whether they are using a wireless LAN or a standard wired connection.