EMET has a bunch of neat features to help harden bad code (usually old bad code). These include:
Structured Exception Handler Overwrite Protection
An SEH overwrite attack generally succeeds by overwriting a function pointer, as opposed to a buffer overflow attack which attempts to overwite a return pointer.
This offers some protection from "heap spraying" attacks. It's a good start, but the EMET docs admit that it's not a complete solution
Null Page allocation protection
So far this is a theoretical vulnerability in Windows, but a function pointer to virtual address 0 will execute in user space, and could possibly be made to execute with kernel priviledges. This issue has been seen in Linux and FreeBSD, but nothing (yet) in the wild to exploit this approach for Windows. If anyone has seen this attack succeed on Windows, we'd be happy to hear about it !
Dynamic DEP (Data Execution Protection)
DEP is a feature that's caused some consternation in the developer community over the last while. Some less savvy developers see that it causes a problem with their code, and simply deactivate it for their entire application at compile-time. DDEP allows DEP to be enabled at an individual process level
This is not a substitute for having good code in the first place, but if you're stuck with a 10 year old business app from a vendor that's killed the product or gone under, it's better than nothing.
As a final note, given what these tools do, Microsoft of course warns that any of these features can cause problems for applications that you apply them to. Thorough testing is certainly in order before using this toolkit.
Full details, and the download, are here ==> http://blogs.technet.com/srd/archive/2009/10/27/announcing-the-release-of-the-enhanced-mitigation-evaluation-toolkit.aspx
If anyone has any good / bad experiences with this toolkit, please drop us a comment !
The developers would like to stress that this tool set may break applications. ALWAYS TEST BEFORE DEPLOYING! - Andre L