Evidence of USB Transfer Cable

Recently my local RadioShack had a huge "Going Out of Business" sale. So I grabbed a few things I that looked interesting. Among those items was a RadioShack USB Transfer Cable for Windows and Mac. 02604052_00I had heard of these but never really had a need for one one. The 80% discount convinced me that I now had a "need". It occurred to me that this would be an interesting method of exfiltration. So after a quick Google search turned up nothing about anyone else documenting what these do from a forensic standpoint, I figured I would type something up. Admittedly, I didn't look too hard so if someone else has blazed this trail already someone let me know. Much of this information also applies to forensic evidence of any USB device being inserted for the first time and used.

For those unfamiliar with USB transfer cables, there are a few out there. Unlike Windows Easy Transfer cables which use native Windows functionality to move profiles, this cable uses the Go!EasySuite software to transfer files.Screen Shot 2015-02-28 at 7.41.59 AM The setup is pretty simple.
1. Plug usb cable into Computer A and Computer B. It doesn't matter which side.
2. Run the Go!Suite Software on both computers.
3. Use the GUI to copy files back and forth.
Pretty easy peasy stuff but let's dig a little deeper...

When a user plugs in this USB cable into a Windows machine for the first time:
If you have never loaded a USB device to the machine, one of the first things you will see is the USB driver being added in the following location:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\PnpLockdownFiles\%SystemPath%\system32\drivers\USBSTOR.SYS: 0x00000001

You are also going to see the device class get updated on the Control Set that booted the system (typically ControlSet001).

HKLM\SYSTEM\ControlSet001\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}
007\DriverFlags: 0x00000001
HKLM\SYSTEM\ControlSet001\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}
007\InfPath: "usbstor.inf"
HKLM\SYSTEM\ControlSet001\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}
007\InfSection: "USBSTOR_BULK"
HKLM\SYSTEM\ControlSet001\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}
007\InfSectionExt: ".NT"
HKLM\SYSTEM\ControlSet001\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}
007\ProviderName: "Microsoft"
HKLM\SYSTEM\ControlSet001\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}
007\DriverDateData:  00 80 8C A3 C5 94 C6 01
HKLM\SYSTEM\ControlSet001\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}
007\DriverDate: "6-21-2006"
HKLM\SYSTEM\ControlSet001\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}
007\DriverVersion: "6.1.7601.17514"
HKLM\SYSTEM\ControlSet001\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}
007\MatchingDeviceId: "usb\class_08&subclass_06&prot_50"
HKLM\SYSTEM\ControlSet001\Control\Class\{36FC9E60-C465-11CF-8056-444553540000}
007\DriverDesc: "USB Mass Storage Device"

Next, if you have never installed a CD-ROM device you are going to see something like this.

HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}
001\InfPath: "cdrom.inf"
HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}
001\InfSection: "cdrom_install"
HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}
001\ProviderName: "Microsoft"
HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}
001\DriverDateData:  00 80 8C A3 C5 94 C6 01
HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}
001\DriverDate: "6-21-2006"
HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}
001\DriverVersion: "6.1.7601.17514"
HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}
001\MatchingDeviceId: "gencdrom"
HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}
001\DriverDesc: "CD-ROM Drive"

Now that Windows knows about generic CD-ROM devices, let's install a "Easy Suite" CD-ROM device:

HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{53f56308-b6bf-11d0-94f2-00a0c91efb8b}\##?#USBSTOR#CdRom&Ven_&Prod_Easy_Suite&Rev_2.00#7&1ca94d81&0&94F85364742E0061&0#{53f56308-b6bf-11d0-94f2-00a0c91efb8b}\DeviceInstance: "USBSTOR\CdRom&Ven_&Prod_Easy_Suite&Rev_2.00&1ca94d81&0&94F85364742E0061&0"
HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{53f56308-b6bf-11d0-94f2-00a0c91efb8b}\##?#USBSTOR#CdRom&Ven_&Prod_Easy_Suite&Rev_2.00#7&1ca94d81&0&94F85364742E0061&0#{53f56308-b6bf-11d0-94f2-00a0c91efb8b}\#\SymbolicLink: "\?\USBSTOR#CdRom&Ven_&Prod_Easy_Suite&Rev_2.00#7&1ca94d81&0&94F85364742E0061&0#{53f56308-b6bf-11d0-94f2-00a0c91efb8b}"
HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{53f56308-b6bf-11d0-94f2-00a0c91efb8b}\##?#USBSTOR#CdRom&Ven_&Prod_Easy_Suite&Rev_2.00#7&1ca94d81&0&94F85364742E0061&0#{53f56308-b6bf-11d0-94f2-00a0c91efb8b}\#\Control\Linked: 0x00000001
HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{53f56308-b6bf-11d0-94f2-00a0c91efb8b}\##?#USBSTOR#CdRom&Ven_&Prod_Easy_Suite&Rev_2.00#7&1ca94d81&0&94F85364742E0061&0#{53f56308-b6bf-11d0-94f2-00a0c91efb8b}\Control\ReferenceCount: 0x00000001
HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\##?#USBSTOR#CdRom&Ven_&Prod_Easy_Suite&Rev_2.00#7&1ca94d81&0&94F85364742E0061&0#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\DeviceInstance: "USBSTOR\CdRom&Ven_&Prod_Easy_Suite&Rev_2.00&1ca94d81&0&94F85364742E0061&0"
HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\##?#USBSTOR#CdRom&Ven_&Prod_Easy_Suite&Rev_2.00#7&1ca94d81&0&94F85364742E0061&0#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\#\SymbolicLink: "\?\USBSTOR#CdRom&Ven_&Prod_Easy_Suite&Rev_2.00#7&1ca94d81&0&94F85364742E0061&0#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}"
HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\##?#USBSTOR#CdRom&Ven_&Prod_Easy_Suite&Rev_2.00#7&1ca94d81&0&94F85364742E0061&0#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\#\Control\Linked: 0x00000001
HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\##?#USBSTOR#CdRom&Ven_&Prod_Easy_Suite&Rev_2.00#7&1ca94d81&0&94F85364742E0061&0#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\Control\ReferenceCount: 0x00000001

For me, this is one of the most interesting parts about this cable. When you plug it in, Windows detects that you have installed a CD-ROM drive with a CD in it. Emulating a CD-ROM is not an uncommon practice. Hell, it's not even all that hard to do. Companies like IronKey make secure USB drives with emulated CD-ROMs. The emulated CD contains the software used to unlock the encrypted USB drive. With this particular device, the emulated CD contains the software used to transfer files to and fro.

Now that we have explained to Windows what a a "Easy Suite" CD-ROM device looks like, we are going to document this specific instance of device.

HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{a5dcbf10-6530-11d2-901f-00c04fb951ed}\##?#USB#VID_0EA0&PID_2210#6&103465e1&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed}\DeviceInstance: "USB\VID_0EA0&PID_2210&103465e1&0&2"
HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{a5dcbf10-6530-11d2-901f-00c04fb951ed}\##?#USB#VID_0EA0&PID_2210#6&103465e1&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed}\#\SymbolicLink: "\?\USB#VID_0EA0&PID_2210#6&103465e1&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed}"
HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{a5dcbf10-6530-11d2-901f-00c04fb951ed}\##?#USB#VID_0EA0&PID_2210#6&103465e1&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed}\#\Control\Linked: 0x00000001
HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{a5dcbf10-6530-11d2-901f-00c04fb951ed}\##?#USB#VID_0EA0&PID_2210#6&103465e1&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed}\Control\ReferenceCount: 0x00000001

Make special note of USB\VID_0EA0&PID_2210\6&103465e1&0&2 because under HKLM\SYSTEM\ControlSet001\Enum\USB a key is made for it:

VID_0EA0&PID_2210&103465e1&0&2\LocationInformation: "Port_#0002.Hub_#0002"
VID_0EA0&PID_2210&103465e1&0&2\Capabilities: 0x000000C4
VID_0EA0&PID_2210&103465e1&0&2\HardwareID:  55 00 53 00 42 00 5C 00 56 00 49 ...
VID_0EA0&PID_2210&103465e1&0&2\CompatibleIDs:  55 00 53 00 42 00 5C 00 43 00 6C 00 ...
VID_0EA0&PID_2210&103465e1&0&2\ContainerID: "{5e1ad350-a56d-11e4-b416-3c15c2c04e57}"
VID_0EA0&PID_2210&103465e1&0&2\ConfigFlags: 0x00000000
VID_0EA0&PID_2210&103465e1&0&2\ClassGUID: "{36fc9e60-c465-11cf-8056-444553540000}"
VID_0EA0&PID_2210&103465e1&0&2\Driver: "{36fc9e60-c465-11cf-8056-444553540000}
007"
VID_0EA0&PID_2210&103465e1&0&2\Class: "USB"
VID_0EA0&PID_2210&103465e1&0&2\Mfg: "@usbstor.inf,%generic.mfg%;Compatible USB storage device"
VID_0EA0&PID_2210&103465e1&0&2\Service: "USBSTOR"
VID_0EA0&PID_2210&103465e1&0&2\DeviceDesc: "@usbstor.inf,%genericbulkonly.devicedesc%;USB Mass Storage Device"
VID_0EA0&PID_2210&103465e1&0&2\ParentIdPrefix: "7&1ca94d81&0"
VID_0EA0&PID_2210&103465e1&0&2\Control\ActiveService: "USBSTOR"

Next up, HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\cdfs gets updated.
FUN FACT:
The name of each Services subkey is the name of the service, which is also the root of the name of the file from which the service is loaded.

HKLM\SYSTEM\ControlSet001\services\cdfs\Enum
: "Root\LEGACY_CDFS
000"
HKLM\SYSTEM\ControlSet001\services\cdfs\Enum\Count: 0x00000001
HKLM\SYSTEM\ControlSet001\services\cdfs\Enum\NextInstance: 0x00000001
HKLM\SYSTEM\ControlSet001\services\cdrom\Enum: "USBSTOR\CdRom&Ven_&Prod_Easy_Suite&Rev_2.00&1ca94d81&0&94F85364742E0061&0"
HKLM\SYSTEM\ControlSet001\services\USBSTOR\Enum
: "USB\VID_0EA0&PID_2210&103465e1&0&2"
HKLM\SYSTEM\ControlSet001\services\USBSTOR\Enum\Count: 0x00000001
HKLM\SYSTEM\ControlSet001\services\USBSTOR\Enum\NextInstance: 0x00000001

Reader, I know what you are thinking. "Jon, doesn't a mount point get established around this time?"
Of course it does!

HKLM\SYSTEM\MountedDevices\??\Volume{5e1ad351-a56d-11e4-b416-3c15c2c04e57}:  5C 00 3F 00 3F 00 ...
HKLM\SYSTEM\MountedDevices\DosDevices\E::  5C 00 3F 00 3F 00 ...

Here we can see that this device was mounted to the E: drive.
Next, error logging is turned on for setupapi.dev.log:

HKLM\SYSTEM\Setup\SetupapiLogStatus\setupapi.dev.log: 0x00001000

After the HKLM\SYSTEM\ControlSet001 is fully populated with it's changes, you will see the keys get replicated to HKLM\SYSTEM\CurrentControlSet.
Enough about the System Registry hive. Let's talk NTUSER.DAT. So now that we have installed this "CD-ROM" device, of course it wanted to autorun. 1 According to Microsoft: "AutoRun is a feature of the Windows operating system. It automates the procedures for installing and configuring products designed for Windows-based platforms that are distributed on CD-ROMs. When users insert an AutoRun-enabled compact disc into their CD-ROM drive, AutoRun automatically runs an application on the CD-ROM that installs, configures, or runs the selected product." Most environments have their system's configured to at least prompt before automatically running a CD. The autorun can be seen in the NTUSER.DAT file of the logged on user under Software\Microsoft\Windows\CurrentVersion\Explorer\:

AutoplayHandlers\EventHandlersDefaultSelection\AutorunINFLegacyArrival\: "MSAutoRun"
AutoplayHandlers\UserChosenExecuteHandlers\AutorunINFLegacyArrival\: "MSPromptEachTime"
CD Burning\Drives\Volume{5e1ad351-a56d-11e4-b416-3c15c2c04e57}\Drive Type: 0x00000007
CD Burning\Drives\Volume{5e1ad351-a56d-11e4-b416-3c15c2c04e57}\IsImapiDataBurnSupported: 0x00000000
CD Burning\StagingInfo\NextStagingPathIndex: 0x00000002
CD Burning\StagingInfo\Volume{5e1ad351-a56d-11e4-b416-3c15c2c04e57}\StagingPath: "C:\Users\User\AppData\Local\Microsoft\Windows\Burn\Burn1"
CD Burning\StagingInfo\Volume{5e1ad351-a56d-11e4-b416-3c15c2c04e57}\Active: 0x00000001
CD Burning\StagingInfo\Volume{5e1ad351-a56d-11e4-b416-3c15c2c04e57}\DriveNumber: 0x00000004
MountPoints2\CPC\Volume\{5e1ad351-a56d-11e4-b416-3c15c2c04e57}\Generation: 0x00000002
MountPoints2\{5e1ad351-a56d-11e4-b416-3c15c2c04e57}\ISOVersion\SetWorkingDirectoryFromTarget: ""
MountPoints2\{5e1ad351-a56d-11e4-b416-3c15c2c04e57}\ISOVersion\: "5.0.890.53"
MountPoints2\{5e1ad351-a56d-11e4-b416-3c15c2c04e57}\shell\: "AutoRun"
MountPoints2\{5e1ad351-a56d-11e4-b416-3c15c2c04e57}\shell\Autoplay\MUIVerb: "@shell32.dll,-8507"
MountPoints2\{5e1ad351-a56d-11e4-b416-3c15c2c04e57}\shell\Autoplay\DropTarget\CLSID: "{F26A669A-BCBB-4E37-ABF9-7325DA15F931}"
MountPoints2\{5e1ad351-a56d-11e4-b416-3c15c2c04e57}\shell\AutoRun\: "Install or run program from your media"
MountPoints2\{5e1ad351-a56d-11e4-b416-3c15c2c04e57}\shell\AutoRun\SetWorkingDirectoryFromTarget: ""
MountPoints2\{5e1ad351-a56d-11e4-b416-3c15c2c04e57}\shell\AutoRun\command\: "E:\EasySuite.exe"
MountPoints2\{5e1ad351-a56d-11e4-b416-3c15c2c04e57}\_Autorun\DefaultIcon\: "E:\EasySuite.exe"

Most of this information comes from the autorun.inf file located at the root of the "CD".

[autorun]
ISOVersion=5.0.890.53
open=EasySuite.exe
icon=EasySuite.exe

Ok. So up until now all of this happened automatically without the user doing anything except plugging the device in. Let's look at Evidence of Execution. Here is the UserAssist related to the software:

UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count\P:\Hfref\Hfre\NccQngn\Ybpny\Grzc\RPAK\RnflFhvgr.rkr:  00 00 00 00 00 00 00 00 00 00 00 00 82 1A 00 00 00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00

Busted out my ROT13 decoder ring...
P:\Hfref\Hfre\NccQngn\Ybpny\Grzc\RPAK\RnflFhvgr.rkr
C:\Users\User\AppData\Local\Temp\ECNX\EasySuite.exe
Wait a damn minute. I thought this software was located on an emulated cd located on the E:?
For some reason, EasySuite.exe wants to spread out when executed.
If you drag it from the "CD" on the E: to the desktop, when executed it drops the following files in the working dir:

ECN001.DLL
ECN010.DLL
ECN011.DLL
ECN030.DLL
ProdLic.DLL

Obviously, when you run it from the read-only "CD" the software can't drop these files in the same dir as the exe SO it drops all of the files in C:\Users\User\AppData\Local\Temp or %TEMP%.

C:\Users\User\AppData\Local\Temp\ECNX\EasySuite.exe
C:\Users\User\AppData\Local\Temp\ECNX\ECN001.DLL
C:\Users\User\AppData\Local\Temp\ECNX\ECN010.DLL
C:\Users\User\AppData\Local\Temp\ECNX\ECN011.DLL
C:\Users\User\AppData\Local\Temp\ECNX\ECN030.DLL
C:\Users\User\AppData\Local\Temp\ECNX\ProdLic.DLL

Other files are dropped upon execution as well:

C:\Users\User\AppData\Local\Temp\ECNX\ProfileClone\ExcelOutlookProfile.dll
C:\Users\User\AppData\Local\Temp\ECNX\ProfileClone\FileProfileClone.dll
C:\Users\User\AppData\Local\Temp\ECNX\ProfileClone\IEOEMP_ProfileClone.dll
C:\Users\User\AppData\Local\Temp\ECNX\ProfileClone\IMProfile.dll
C:\Users\User\AppData\Local\Temp\ECNX\ProfileClone\SystemProfileInfo.dll
C:\Users\User\AppData\Local\Temp\ECNX\ProfileClone\WordPointProfile.dll
C:\Users\User\AppData\Roaming\EasyMover\EasyMoverSettings.xml
C:\Users\User\AppData\Roaming\EasySuite.3.436.80\ECN010.DLL
C:\Users\User\AppData\Roaming\EasySuite.3.101.22\ECN011.DLL
C:\Users\User\AppData\Roaming\EasySuite.7.436.71\ECN030.DLL

We can also see evidence of EasySuite settings in the NTUSER.DAT SOFTWARE hive:

Software\OTi108\EasySuite\LastFolderAccessHex:"43003A005C00550073006500720073005C0055007300650072005C0044006F00630075006D0065006E0074007300"
Software\OTi108\EasySuite\ReadOnlyFlag: 0x00000000
Software\OTi108\EasySuite\AdvanceFunctionModules\ModulesPath010: "C:\Users\User\AppData\Roaming\EasySuite.3.436.80\ECN010.DLL"
Software\OTi108\EasySuite\AdvanceFunctionModules\ModulesPath011: "C:\Users\User\AppData\Roaming\EasySuite.3.101.22\ECN011.DLL"
Software\OTi108\EasySuite\AdvanceFunctionModules\ModulesPath030: "C:\Users\User\AppData\Roaming\EasySuite.7.436.71\ECN030.DLL"
Software\OTi\OutlookSync\URTI\EnabelSynchronize: "Y"
Software\OTi\ThunderBird\FolderSync\ExportSyncFunction: (NULL!)

OTi = Ours Technology inc. (The publisher)
2108 =
I discovered another curious artifact that gets created when you insert this cable:

C:\Users\User\AppData\Local\Microsoft\Windows\Burn\Burn1

This folder is designed to be a temp folder for files waiting to be burned to optical media. You can tell that it was created through a Windows Explorer API call because a desktop.ini file is created in the folder as well. Not 100% sure why this gets created at this time but I am 85% sure it doesn't really matter. :)

Let's look at the GUI of this beast:
One of the first things I noticed was this software was not using the standard Windows Explorer dialogs for displaying files and folders. As such it displays system files that a normally masked by Explorer. 3

To put this through it's paces, I plugged the cable into both side of my Mac Book and associated one end with a Windows 7 VM and the other with a Windows 8 VM.
The first thing I checked was to see if just any user could run the software.
6
It internally checks the administrative rights of the account running the software. It does not prompt to elevate.
The second thing I looked for was whether or not it would copy locked files.
I tried to copy the NTUSER.DAT of the User that was logged in on the Win8 machine.
5
So that didn't work. But what about non-locked files that I would need to UAC permission for?
In Windows Explorer, I attempted to copy the NTUSER.DAT from an inactive account and I got this prompt when I attempted to view the folder.
7
But this software is not bound by such restrictions...
4
This proves, once again, that UAC is more of an annoyance to users trying to work than an actual security feature. The remote host does not approve/confirm/see what files are being transferred to the other system. Plugging the cable in and running the software is implied consent access all files on the system.
Next I ran the software then right-clicked on the E: drive and ejected the CD just to see what would happen. As I suspected, turns out it is 100% functional without the "CD" being present. You don't even need a visible GUI. I used psexec to launch the software in session 0 and it still works. Since it will run as SYSTEM, a user doesn't need to be logged on for it to work. That got me thinking about possible applications for this type of device. What if we drop the software on a machine and let it autorun early in the boot process? We could bypass a lot of security restrictions. I could see applications for good and evil for a persistent physical backdoor. Okay mostly evil.

I am still interested in how the two sides of this cable communicate. I will probably take a deeper look at it in the near future.