If despite all your best efforts, a system in your organization has managed to pick up some unwanted executable code, you'll no doubt want to remove it. Assuming that the standard Add/Remove Programs approach can't remove the code, let me offer you some alternative approaches for each kind of unwanted code.

Removing Viruses
First, if it's a virus, you'll want to get rid of it with a virus-cleaning utility. If the system has virus prevention in place, but it didn't manage to catch the unwanted code, check the signature file's date. If the file is out of date, update it and run a scan. If the system doesn't have virus prevention in place, try the free online virus scanning that Trend Micro offers at http://housecall.trendmicro.com. Trend Micro's HouseCall is an ActiveX control that's downloaded to and executes in the user's browser (make sure the system's Microsoft Internet Explorer—IE— security settings allow this behavior) and scans the local system with the latest signature file from Trend Micro. If you want it to do so, the utility can remove any virus infections it finds.

If the virus-scanning utility doesn't work, you can also try Microsoft's Malicious Software Removal Tool (MSRT), available at http://www.microsoft.com/security/malwareremove/default.mspx to rid your system of the unwanted executable code. Microsoft updates the tool at least once a month with new viruses and worms to be removed.

Removing Adware and Spyware
If the unwanted executable code isn't a virus and MSRT doesn't remove it, you're probably dealing with adware or spyware. Adware and spyware exist in a gray area; antivirus utilities don't always automatically detect them. Because most adware and spyware are intended to run on client systems at all times, the applications typically configure themselves to launch when the OS launches. You can examine the various locations and methods such applications can use to launch themselves, including the following:

  • Start, Programs, Startup folder— Look for application shortcuts, which are a common way to have an application start up at the same time that a user logs on. It's relatively easy to remove adware and spyware from this location—just delete the shortcut.
  • Win.ini file—Check the win.ini file (located in the %SystemRoot% directory) for any evidence of applications configured to launch with the OS. In the win.ini file, check the \[Windows\] section for any programs listed after a Run= or Load= statement. Because file names can be hidden by padding them with enough spaces to push them out of view, make sure you check the entire line.
  • System.ini file—In the system.ini file (same location as win.ini, the %System Root% directory), be wary of any program listed on a Shell= statement in the \[Boot\] section.
  • Startup registry subkeys—Several areas in the registry can trigger a program to execute automatically at system startup. Check the following subkeys for any evidence of applications you're unsure about: In the HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion subkey, check Run, RunOnce, Run Services, and RunServicesOnce; in the HKEY_CURRENT_USER\Software\Microsoft\Windows\Current Version subkey, check Run, Run Once, and RunServices.

Note: As always, take great care when you edit the registry. An incorrectly applied change could have a severe impact on your system, including making it unbootable.

Checking Components Before Removal
The tricky part about going after programs isn't so much in finding the applications that start automatically with the OS but knowing which autostart executables are valid—part of the OS or valid third-party software—and which are unwanted. Before you start removing references to applications configured to start up automatically, you should consult two references for each application you find. The first is the Microsoft DLL Help component-lookup utility, which you can find at http://support.micro soft.com/dllhelp. Enter an executable name (e.g., mstask.exe), and the tool tells you whether it's a valid Microsoft executable.

As a second check, go to the Win-Tasks Process Library that UniBlue (formerly LiUtilities) maintains at http://www.liutilities.com/products/wintaskspro/processlibrary/ to see whether a component is part of a valid third-party application.

To make the process of removing unwanted executable code easier, you can use the System Configuration Utility (Msconfig) available on Windows XP and Windows 98 (click Start, Run and enter msconfig) to check automatic startup components. Figure 1 shows the Msconfig utility. Go to the Startup tab to see all applications configured to start up with the system or to the *.INI tabs to inspect the local .ini files.

If you run a system other than XP or Win98 or you want a more in-depth look at what components start up with your system, you can download the free Autoruns utility from Sysinternals at http://www.sysinternals.com/utilities/autoruns.html. Autoruns gives you an incredible amount of detail about the components configured to start up as your system boots or as you log on to your desktop. Figure 2 shows a sample Autoruns screen.

Finding Spyware in Browser Helper Objects
One of the most difficult locations in which spyware can hide is the IE Browser Helper Object. Browser Helper Objects are designed to provide add-on features and functionality to IE to improve a user's browsing experience. For example, many popular IE toolbars are Browser Helper Objects. However, Browser Helper Objects' level of access to users' browsing data (e.g., URLs entered, form data provided) is significant. When you combine that with the fact that Browser Helper Objects are harder to find and remove than simple startup applications, you can understand why Browser Helper Objects are a popular mechanism for spyware and malware authors for installing their software.

You can use two techniques to find Browser Helper Objects configured on your system. If you use XP with Service Pack 2 (SP2), you can use the Add-On Manager (in IE, select Tools, Manage Add-ons) to view all Browser Helper Objects currently loaded in IE and disable any of them. Figure 3 shows the IE Manage Addons dialog box. By selecting an add-on from the list and disabling it, you can effectively remove the capabilities of any application that has integrated itself into the browser.

If you don't run XP SP2, the process is a bit more manual. You need to inspect the registry subkey HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects to see what has been configured for your system. The subkeys are class IDs, which will correlate to another area in the registry. In each subkey, you might or might not have a descriptive tag for the Browser Helper Object that the class ID represents. Figure 4, shows a view of this section of the registry.

You can skip the class IDs for the Browser Helper Objects that have a descriptive tag and whose applications you recognize as valid. All other class IDs are worth investigating. Make a list of them, then look in the HKEY_CLASSES_ROOT\CLSID subtree for the unique class IDs you've identified. Figure 5, shows a suspicious class ID that I found and isolated.

Two things stand out about this Browser Helper Object. First, in the Browser Helper Object registry subkey, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects, this item didn't have a description associated with it. Second, when I look at the class ID details, I see that it calls a DLL directly from the Windows %SystemRoot% directory for my system. My cross-referencing of the DLL against the Microsoft site shows that it's not a valid part of the OS. Therefore, the Browser Helper Object is highly suspect and a likely candidate for removal. To remove the Browser Helper Object completely, remove the references from both registry subkeys (the Browser Helper Object subkey and the CLSID subkey), then delete any .dll or .exe files named in the CLSID subkey.

Instead of going through that manual effort, you might want to use the Microsoft Windows Defender antispyware application. Installing Defender on a system infected with spyware is probably the quickest and easiest method of getting rid of unwanted executable code on a user's workstation.

Removing unwanted executable code from a system in your organization isn't a pleasant task, but it isn't an impossible one either. Through careful planning, policy development, and architecture design and implementation, you can significantly decrease the chances that users will bring unwanted code into your organization. But if or when some piece of malware does make it onto one of your systems, you now have some tools for getting rid of it.