Last Updated: 2014-08-26 01:13:25 UTC
by Rob VandenBrink (Version: 1)
This is a very broad topic, but over the last few months I've seen some really nicly protected PCI termainls. Especially since many POS environments are still running Windows XP, this is an important topic to discuss.
Things that I've seen done very well:
First of all, only allow access to the POS app - retail staff generally don't require access to email or the internet, at least not from the sales terminal. Most POS systems I've seen are running kiosk setups, which removes explorer, the start button and kills all hotkeys. I'm often able to break out of windows kiosk applications from the keyboard by using a hotkey combination that's been missed. For instance, Windows+U calls utilman.exe in XP, if you replace utilman with cmd.exe you are in. Be sure to account for hot-keys!
If you lock down the POS terminals such that a CMD prompt / start menu and so on are not accessible, then the classic "usb rubber ducky" or "teensy" keyboard as a usb key type attack - where you drop a usb key into and exposed port while making a purchase - is that much tougher. If you can't get a cmd prompt or some field to enter commands, a malicious keyboard attack of this type isn't likely to succeed.
On that same note, use GPO or your endpoint protection product to lock down USB access. Even if (or maybe especially if) a repair tech needs USB access, inserting a USB device should need a call to head office.
Use network protections:
The local router generally establishes a VPN to head office
The POS terminal should not have internet access
The POS terminal should have only limited access to head office resources (typically a small DMZ for data collection)
Similarly, only required head office resources should have access to the POS terminal
The POS terminal should not be on the same network as or have access to the rest of the store. For instance, guest wireless, security cameras, alarm systems and so on should all be in VLANs other than the POS VLAN, and none of those should have access to the POS (and vice versa)
For goodness sake, harden your store's firewall/router, and use a template (that you audit) so that you know that they are all configured correctly! Hardening guides are available for most platforms, the Center for Internet Security's hardening guide for Cisco is a solid one to use as a guide if your perimeter device doesn't have a vendor supplied document. Though if your firewall/router vendor doesn't have security guidance, maybe you should look at a different solution ...
If your POS terminal tries to connect to an IP that isn't yours, that's an IOC (Indicator of Compromise) - even a simple DNS query to a "different" server can be a giveaway. If you see unexplained traffic, it's worth investigating - whitelisting stuff like this to make the alert go away is a BAD IDEA!
Use endpoint protections to your advantage. That means AV, whitelisting and every other EP feature. Don't install an AV product and leave it at the defaults, tune it for your POS systems. While you can certainly circumvent AV using SET, Metasploit, VEIL and so on, that's a moving target. What might work today to evade one AV vendor might very well not work tomorrow. PLus you'll find that getting a generic application to evade AV is tough - most of the Metasploit evasion techniques top out at a fairly small memory footprint (4K in a lot of cases)
A distributed IPS is the way to go. With hundreds or in some cases thousands of terminals, you need an IPS local to each terminal to detect IOCs as early in the process as possible.
Secure your passwords, have a good password policy in the OS, and / or use 2 factor
Don't re-use admin passwords. If an attacker can get mimikatz on your system, or use procdump to get an lsass memory image, then (on XP), you've likely given up most of the passwords on that system. Even without that, once you get password hashes, anyone who's serious can use GPUs and crack all the local passwords within a few minutes (or a few days if they have to go with brute force).
Don't store passwords under the keyboard. In almost every POS engagement, I can lift up the keyboard and have immediate access. It's to the point that I include that photo in my reports. Granted, in most stores getting to the keyboard can be a challenge, but if you show up with a laptop bag and say "I'm with IT, Joe (or whoever the IT Director is) sent me", you'd be surprised how much help you'll get from the sales folks.
Keep on top of current POS malware, especially the IOCs for each (the recent backoff malware is a good example). This week's alert from the US CERT no the new backoff variants is a good read for instance (https://www.us-cert.gov/ncas/alerts/TA14-212A). The copious amount of discussion on the Target breach (and the associated BlackPOS malware) is another place to look.
Each of these protections in themselves can be circumvented. But the more you layer on, the better The harder you make your attacker work to penetrate your environment, the more likely they will target someone else. Your goal is to make things as difficult for the attacker as possible, to force them to make as much "noise" - ie generate as many alarms- as possible as they work their way in, to give you a chance at blocking them at one point or another
This is just a start at protecting a POS system or netowrk. This is meant as the start of a disucssion - I'd be very interested to know what else folks are doing to secure their terminals. Please use our comment form to share your approaches!
Rob VandenBrink, Metafore