Hi Christian & Ramon,

I've tried incorporating the proxy/DNS suggestions you've mentioned,
regarding how to preserve the original pages that served malware for as
long as possible.  However, the solution isn't perfect.  Here's an
example:

If the VM visits a page where the malware is contained within a banner
ad that rotates, it's possible that when you try to view the original
page, javascript within the page might (try) to load a different ad --
making it difficult to replicate initial compromises.

Of course, one solution to this, would be to capture PCAP data, and try
to serve this PCAP data back to the browser/application.  This sounds
hard.

THE GOOD NEWS:
--------------

Fortunately, it looks like the folks at Microsoft have made life a
little easier; check out this URL about STRACE/HTTPREPLAY:
http://blogs.msdn.com/emmanubo/archive/2007/06/04/introduction-to-strac
e-httpreplay-support-tools.aspx
http://tinyurl.com/4llhar

Essentially, STRACE is a (DLL) wrapper that you can inject into _ANY_
windows application, that logs all TCP/UDP traffic to/from the
application -- one of the biggest benefits, is that it's able to log
raw HTTP data -- even data that's been wrapped in an SSL stream (before
encryption/after decryption!).

Here's the best part: HTTPREPLAY is a tool that allows you to "replay"
strace logs within IE (or any browser), in order to serve up the exact
content that was logged.

This solves a whole slew of issues that I'm sure we've all been dealing
with.  What's really cool about this approach, is that you could inject
the STRACE DLL even into live, running processes (via INJLIB.EXE) --
and it even works with Mozilla Firefox!

Anyway, it's based off the "Detours" library, which appears to be used
extensively by sysinternals utilities.

Okay, so what's the catch?

THE BAD NEWS:
-------------

I've done some initial testing with STRACE/HTTPREPLAY and Capture, and
it looks like the code doesn't (exactly) play nice.  Specifically, it
seems CaptureProcessMonitor.sys sometimes causes BSODs and some (weird)
false positives -- for example, if you have a process tree like:

   PROCESS (PID)
1) CMD.EXE (389)
2)   +- RUNELEVATE.EXE (783)
3)        +- WITHDLL.EXE (762)
4)            +- IEXPLORE.EXE (3726)

And the processes terminate in the order of: #2, #3, #1, #4, then (for
example) Capture will report WITHDLL.EXE terminated with an parent
process of (783) -- but no parent process EXE name listed (i.e.,
RUNELEVATE.EXE), because that parent process has already terminated.
So Capture seems to list the parent process PID when it can't determine
the parent process name.  In other words, when process trees terminate
in any other order than bottom to top, we start getting PIDs listed as
parent process names -- which makes it difficult to filter within the
corresponding .EXL 

Anyway, you can see some of the initial testing I've tried in this
changelog (example code):
http://www.honeyclient.org/trac/changeset/1599


First off, check out the STRACE/HTTPREPLAY libraries and let me know
what you guys think; specifically, I'm curious if you manage to get
Capture working with the libraries, or if you also run into any BSODs.
If they get more consistent, I can try to get a minidump for you in
order to debug further.

Second, you're interested in using this library, I'm curious what your
thoughts were on how it could be (easily) incorporated into the Capture
code.

Hope this helps,
-- Darien
_______________________________________________
Capture-HPC mailing list
Capture-HPC@public.honeynet.org
https://public.honeynet.org/mailman/listinfo/capture-hpc

Reply via email to