Jump to content


 


Register a free account to unlock additional features at BleepingComputer.com
Welcome to BleepingComputer, a free community where people like yourself come together to discuss and learn how to use their computers. Using the site is easy and fun. As a guest, you can browse and view the various discussions in the forums, but can not create a new topic or reply to an existing one unless you are logged in. Other benefits of registering an account are subscribing to topics and forums, creating a blog, and having no ads shown anywhere on the site.


Click here to Register a free account now! or read our Welcome Guide to learn how to use this site.

Photo

Gdi Scan Tutorial


  • Please log in to reply
37 replies to this topic

#1 Grinler

Grinler

    Lawrence Abrams


  • Admin
  • 43,394 posts
  • ONLINE
  •  
  • Gender:Male
  • Location:USA
  • Local time:12:35 PM

Posted 27 September 2004 - 11:35 PM

GDI Scan Tutorial and how to fix the GDI+ JPEG Vulnerability


Table of Contents



What is the GDI+ JPEG Vulnerability

GDI+ is a programming interface or API that enables programs to use graphics and formatted text on a video display or printer. A vulnerability, GDI+ JPEG Vulnerability, was found in the DLL gdiplus.dll used by GDI+ that has faulty code when processing JPEG images. People who know how this code can be exploited can craft a specially designed JPEG that can exploit this bug and possibly take control of your machine. If you view an image using an application that has this vulnerability, then it is possible for the remote program to issue commands on your computer at the same security level as your user account. Therefore if your user account is an administrator of your machine, then the remote code will have administrative privileges and be able to have full access to the security of your computer.

Microsoft has released an update for this vulnerability which you can get by going to Windows Update for the operating system update and Office Update for the Microsoft office update. Be sure to do those updates immediately as this tutorial assumes you already have them and is focused on resolving issues for 3rd party applications that may be affected by the GDI+ JPEG vulnerability.


What is GDI Scan


A major problem with this vulnerability is that there are 3rd party, non-microsoft, applications that ship with this exploitable DLL. Since Microsoft's update only updates the DLL that came with the Operating System software, you still may be vulnerable from other applications that it does not upgrade. Microsoft released a GDI+ Detection Tool which will scan your computer and tell you if it found any MICROSOFT programs that may be vulnerable. Unfortunately it does not tell you WHAT programs are vulnerable and just directs you back to windows update and office update. Even worse, it does not let you know if any 3rd party software may be affected, leaving you still in the dark.

Because of this Tom Liston, the person who developed the LaBrea Tarpit honeypot software, has created a tool called GDI Scan that will scan a drive on your computer for files that are possibly vulnerable to the GDI+ JPEG exploit. When it has completed scanning the partition it will create a log that will show all possibly vulnerable DLLs found. You can then use this information to determine what programs are affected and then attempt to upgrade these programs so they are no longer vulnerable.

When you run this tool it will scan the partition you specify for any of the following files:

gdiplus.dll (known to be exploitable)
sxs.dll
wsxs.dll
mso.dll


If it finds these files it will attempt to determine if they are vulnerable to the GDI JPEG exploit. If they are, they will be listed in red in the resulting log file.

It is important to note that the previously listed DLLs can be found in more than one location on your hard drive. If they are located in multiple locations on your computer, the program will check the following locations for the DLL, in this order, and if found uses the DLL it finds first:
  1. Loads the DLL from the same directory the application is installed
  2. Loads the DLL from the current working directory you ran the program from.
  3. Windows 95/98*Grinler will load it from the c:\windows\system directory
  4. Windows NT/2000/XP/2003 will load it from c:\windows\system32
  5. Windows NT/2000/XP/2003 will load it from c:\windows\system
  6. The Windows directory (\windows)
  7. Any directories that are listed in the PATH environment variable.
It is therefore possible for the operating system to be properly patched, but for a copy of the exploitable DLL to still be found elsewhere in your computer, which still allows for the vulnerability.


How to use GDI Scan


Step 1: Download GUI version of gdiscan.exe

You can download GDI Scan from the following link:

http://isc.sans.org/gdiscan.php

Download the GUI version to a location you will remember later.


Step 2: Run gdiscan.exe


Once it is downloaded, double-click on gdiscan.exe and a screen similar to the one below will appear:

Start GDIScan
Figure 1: Start GDIScan




First select the drive, designated by the green box in Figure 1, you would like to scan. Once the drive you want to scan is selected, press the Scan button designated by the red box in Figure 1. The program will now scan the drive letter you specified for any copies of the gdiplus.dll, and associated DLLSs, and display them for you as shown in Figure 2 below.

GDIScan.exe Results
Figure 2: GDIScan.exe Results




You can then click on the Clipboard button, designated by the red box, to copy the contents of the results to your clipboard. Then paste the results into a notepad or other document that you can refer back to later.

For Windows 95/98*Grinler Users

It is important to note that this application was designed specifically for XP,2000, or NT. This does not mean, though, that you can not use it in Windows 95, 98, or ME. In order to view the results properly we will need to create an RTF (Rich Text Format) document. Run the program as described above and when it is finished scanning your partition follow these steps:
  1. Click on the Clipboard button to copy the contents of the log into memory.
  2. Click on Start, then Run, and type notepad and press the OK button.
  3. When the notepad is open, click on the Edit menu, and then select Paste. The contents of the log should now be in the notepad.
  4. Click on File and then Save As.
  5. When the Save As dialog box opens change the following:
    1. Change the Save In drop down selection box to the Desktop
    2. Change the Save As Type drop down box to All Files.
    3. Enter log.rtf into the File Name field
  6. Press the Save button
  7. Minimize your desktop and you should now see a icon on your desktop called log.rtf. Double-click on this icon and it will either open in Word, if you have it, or Wordpad if you don't. You should now see the proper formatting in the log.

How do I interpret the results

Now that we have this log, I bet you are wondering what you are supposed to do with it. Well as of right now, the only DLL that we know for sure is exploitable is the gdiplus.dll. So we focus on those listings that contain that DLL and are the proper version or lower.

If it states that it finds DLLs in directories like Windows\$NtUniinstallKB you can safely ignore them. These directories are created in case you want to uninstall various Microsoft updates. Therefore it would not be strange to see the older DLLs there.

NOTE: Previously I had stated that files found in the \Windows\WinSxS directory could be safely ignored. It has been brought to my attention that this information was actually incorrect. The \Windows\WinSxS directory is where Windows stores it's side-by-side DLLs. Side-by-side DLLs are used to allow multiple versions of the same DLL to exist in Windows at the same time. The Operating System maintains a list of which applications use which side-by-side DLL. This allows different versions of the same DLL to coexist on the same computer and have multiple applications share them. Therefore if you see outdated DLLs found here you may want to see if they can be updated via OfficeUpdate, Windows Update, or replacing it with the redistributable. As always make a backup copy first of the DLL found in the \WinSxS first. - Thanks to Donald Smith for the clarification.


Lets take an example from the log above and see how we can interpret the results:

Exploitable DLLs
Figure 3: Exploitable DLLs that were found


As you can see from the above figure, gdiscan found two exploitable copies of gdiplus.dll on my machine. One is in the FolderSizes directory and the other is in the WS_FTP Pro directory. I now know that I need to visit the web sites of these applications and see if there are any updates available. If there are, we download them, install them, and hope they fix the problem, which we can check by running gdiscan.exe again after the installation is complete. If the problem still exists, then you should contact the software manufacturer and explain the situation.

Another workaround may be to download the latest gdiplus.dll from Microsoft. This fix may cause problems with your software if the developers of that software added extra functionality into their copy of the gdiplus.dll. Therefore, please make a backup of the existing gdiplus.dll before you do this method.

You can download this file from the following link:

Platform SDK Redistributable: GDI+

When you download this file, run it and extract the files to c:\gdiplus. Then navigate to c:\gdiplus, and you will find it contains the DLL, gdiplus.dll. Simply copy this DLL over the known exploitable one from the log to replace it. Now that you have replaced that program's gdiplus.dll it should not be exploitable.


Conclusion


Now that you know how to check your system for GDI+ JPEG exploit it is advisable that you do so immediately. At the time of this writing more reports are coming out about tools and sample code to take advantage of this vulnerability. The sooner you run this tool and fix any of the exploitable copies of this DLL on your system, the safer you will be.


--
Lawrence Abrams
Bleeping Computer Advanced Internet Security Concepts
BleepingComputer.com: Computer Support & Tutorials for the beginning computer user.

BC AdBot (Login to Remove)

 


m

#2 Daisuke

Daisuke

    Cleaner on Duty


  • Members
  • 5,575 posts
  • OFFLINE
  •  
  • Gender:Male
  • Location:Romania
  • Local time:12:35 PM

Posted 28 September 2004 - 03:54 AM

Thanks Grinler for this excellent tutorial. :thumbsup:
Everyday is virus day. Do you know where your recovery CDs are ?
Did you create them yet ?

Posted Image

#3 Jacee

Jacee

    Bleeping around


  • Malware Response Team
  • 3,714 posts
  • OFFLINE
  •  
  • Gender:Female
  • Local time:09:35 AM

Posted 28 September 2004 - 11:08 AM

Thank you :thumbsup:

MS_MVP.gif
MS MVP Windows-Security 2006-2016
Member of UNITE, the Unified Network of Instructors and Trusted Eliminators

Admin PC Pitstop


#4 luci2a

luci2a

  • Members
  • 171 posts
  • OFFLINE
  •  
  • Gender:Female
  • Location:London UK
  • Local time:01:35 PM

Posted 28 September 2004 - 03:15 PM

Thank you :thumbsup:

You're the first to offer help I think!

Luci2a

#5 harrywaldron

harrywaldron

    Security Reporter


  • Members
  • 509 posts
  • OFFLINE
  •  
  • Gender:Male
  • Location:Roanoke, Virginia
  • Local time:01:35 PM

Posted 29 September 2004 - 06:24 AM

Posted Image

An awesome post by our Site Admin and this was featured at one of my favorite web sites (Internet Storm Center) as being "the best yet" on how to patch for MS04-028. :thumbsup: :flowers: :trumpet:

http://isc.sans.org//diary.php?date=2004-09-28

#6 dgtlarts

dgtlarts

  • Members
  • 3 posts
  • OFFLINE
  •  
  • Local time:12:35 PM

Posted 30 September 2004 - 05:16 PM

Scanning Drive C:...

C:\WINDOWS\system32\sxs.dll
Version: 5.2.3790.0 <-- Vulnerable version

I've read 5 or so different articles trying to get what-to-do info on this file, but am coming up empty. This is a Microsoft file (verified by right-clicking the file -> properties -> Version -> Company), but their own GDI+ detection tool declares me safe and sound. :thumbsup:

This is on a Windows 2003 Server Standard machine.

Anyone else encountering this &/or know the solution?

#7 KoanYorel

KoanYorel

    Bleepin' Conundrum


  • Staff Emeritus
  • 19,461 posts
  • OFFLINE
  •  
  • Gender:Male
  • Location:65 miles due East of the &quot;Logic Free Zone&quot;, in Md, USA
  • Local time:01:35 PM

Posted 30 September 2004 - 05:48 PM

I’ve to add to “dgtlarts” list.

I’ve just run a new GDI scan and it came up with the following vulnerable items.

I’ve XP Home with Office XP for Small Business – fully updated with SP1, SP2, and the latest GDI “Patch” according to MS Updates for both XP Home and Office. (McAfee AV and MS firewall)

Since the MS generalized fix doesn’t appear to work for these item, do I delete them or what?



C:\Program Files\Microsoft Office\PowerPoint Viewer\GDIPLUS.DLL
Version: 6.0.3260.0 <-- Vulnerable version

C:\WINDOWS\$NtUninstallKB839645$\sxs.dll
Version: 5.1.2600.1106 <-- Vulnerable version

C:\WINDOWS\I386\ASMS\1000\MSFT\WINDOWS\GDIPLUS\GDIPLUS.DLL
Version: 5.1.3097.0 <-- Vulnerable version

C:\WINDOWS\WinSxS\x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.0.0_x-ww_8d353f13\GdiPlus.dll
Version: 5.1.3097.0 <-- Vulnerable version

C:\WINDOWS\WinSxS\x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.10.0_x-ww_712befd8\GdiPlus.dll
Version: 5.1.3101.0 <-- Vulnerable version

Thanks,
~Koan
The only easy day was yesterday.

...some do, some don't; some will, some won't (WR)

#8 dgtlarts

dgtlarts

  • Members
  • 3 posts
  • OFFLINE
  •  
  • Local time:12:35 PM

Posted 30 September 2004 - 06:09 PM

You can safely ignore all the files in %SystemRoot%\$NtUninstallKBxxxxx and %SystemRoot%\WinSxS. Files in these folders are backups created by the OS should you ever decide to uninstall the patch. If they still make you nervous, you can delete them but you will loose the ability to uninstall those patches.

One of your files is part of PowerPoint. Have you gone to the microsoft office site and run OfficeUpdate? It works like Windows Update, except on your Microsoft Office software. Run it repeatedly until it tells you there are no more updates available. I can never remember the exact URL, but if you go to www.officeupdate.com it will redirect you.

Off the top of my head, I'm not familiar with ASMS, product. Sorry.

#9 KoanYorel

KoanYorel

    Bleepin' Conundrum


  • Staff Emeritus
  • 19,461 posts
  • OFFLINE
  •  
  • Gender:Male
  • Location:65 miles due East of the &quot;Logic Free Zone&quot;, in Md, USA
  • Local time:01:35 PM

Posted 30 September 2004 - 06:24 PM

Thanks for the input "dgtarts".

I'd run the scan yesterday after updating everything from MS site I could find.
I had nothing on the red list - vulnerable then.

Just out of paranoia, I ran the scan again after seeing your posting and found these other five objects.

Yes, I did pull down three updates yesterday. Everything that was listed for my OS"s,
and even one for Office 2003 - which of course I didn't need.

I don't use power point reader often; and can down load the reader again if'n I need to.
(Actually, I'll off load it to disk to use offline until MS patches Power Point (again).

And I missed the fact the others were back up files. - thanks for pointing that out!

regards,
~Koan
The only easy day was yesterday.

...some do, some don't; some will, some won't (WR)

#10 Grinler

Grinler

    Lawrence Abrams

  • Topic Starter

  • Admin
  • 43,394 posts
  • ONLINE
  •  
  • Gender:Male
  • Location:USA
  • Local time:12:35 PM

Posted 30 September 2004 - 06:55 PM

The i386 directory that you are showing looks to be a copy of the XP cd, so I probably wouldnt worry about that as its probably just an old version.

As for sxs.dll, from what I can tell there is no replacement file yet.

#11 dgtlarts

dgtlarts

  • Members
  • 3 posts
  • OFFLINE
  •  
  • Local time:12:35 PM

Posted 30 September 2004 - 07:02 PM

Thanks Grinler. Please keep us posted.

#12 KoanYorel

KoanYorel

    Bleepin' Conundrum


  • Staff Emeritus
  • 19,461 posts
  • OFFLINE
  •  
  • Gender:Male
  • Location:65 miles due East of the &quot;Logic Free Zone&quot;, in Md, USA
  • Local time:01:35 PM

Posted 30 September 2004 - 07:10 PM

Thanks Grinler,

I wasn't sure about the i386 either. I'll just chuck it.

Thanks guys, I'll nap a little quieter this p.m.

~Koan
The only easy day was yesterday.

...some do, some don't; some will, some won't (WR)

#13 Grinler

Grinler

    Lawrence Abrams

  • Topic Starter

  • Admin
  • 43,394 posts
  • ONLINE
  •  
  • Gender:Male
  • Location:USA
  • Local time:12:35 PM

Posted 30 September 2004 - 07:17 PM

Just delete the file...not the directory :thumbsup:

#14 KoanYorel

KoanYorel

    Bleepin' Conundrum


  • Staff Emeritus
  • 19,461 posts
  • OFFLINE
  •  
  • Gender:Male
  • Location:65 miles due East of the &quot;Logic Free Zone&quot;, in Md, USA
  • Local time:01:35 PM

Posted 30 September 2004 - 07:20 PM

Right, only the file.

I don't want to start that all over again... tee-hee.

~Koan
The only easy day was yesterday.

...some do, some don't; some will, some won't (WR)

#15 Guest_LorenAmelang_*

Guest_LorenAmelang_*

  • Guests
  • OFFLINE
  •  

Posted 01 October 2004 - 03:37 PM

One of the commenting users posted
-----
C:\WINDOWS\I386\ASMS\1000\MSFT\WINDOWS\GDIPLUS\GDIPLUS.DLL
Version: 5.1.3097.0 <-- Vulnerable version
-----

I have a similar entry, part of Microsoft Visual Studio 6, or possibly a more recent "Debug Symbols" download
-----
N:\WINDOWS\Debug\I386\ASMS\1000\MSFT\WINDOWS\GDIPLUS\GDIPLUS.DLL
Version: 5.1.3097.0 <-- Vulnerable version
-----

These are the debug versions of the DLLs, for use with a development system. If you look at the file sizes, they are probably larger than the standard runtime-only versions, because they contain additional debug information. They must come from Microsoft, and must match version-for-version the runtime DLLs you intend to use with your program.

Microsoft undoubtedly has created debug versions of the newly fixed DLLs for their internal use, but they obviously did not check for "obsolete" versions of their own development systems with their GDI scanner program, nor did they replace the vulnerable debug DLLs they provided. I'd be very surprised if they have updated their debug packages with the new versions.

I just hid (renamed) my "I386" DLLs, as I don't develop graphics programs. If there is no debug version found, the system uses the runtime version and you just can't see disassembled code in your debugger. Someone who does write JPEG code would need to dig much more deeply here!

I also renamed the vulnerable DLLs in the Windows SxS "side-by-side" folders. Windows File Protection complained that I was modifying system files, but let me do it.

There is a list of the "current lifecycle" programs Mirosoft checks in their <http://www.microsoft.com/technet/security/bulletin/MS04-028.mspx> bulletin. My old VS6, and unsupported things like the Visio Viewer, are not on the list.

Loren




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users