Thursday, July 12, 2007

Tool Testing Methodology, Memory

In my last post, I described what you'd need to do to set up a system in order to test cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 effects of a tool we'd use on a system for IR activities. I posted this as a way of filling in a gap left by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ACPO Guidelines, which says that we need to "profile" cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "forensic footprint" of our tools. That post described tools we'd need to use to discover cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 footprints within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file system and Registry. I invite you, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reader, to comment on ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r tools that may be used, as well as provide your thoughts regarding how to use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m...after all, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ACPO Guidelines also state that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 person using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se tools must be competent, and what better way to get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re than through discussion and exchange of ideas?

One thing we haven't discussed, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re doesn't seem to be a great deal of discussion of, is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 effects of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tools we use on memory. One big question that is asked is, what is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "impact" that our tools have on memory? This is important to understand, and I think one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 main drivers behind this is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 idea that when IR activities are first introduced in a court of law, claims will be made that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 responder overwrote or deleted potentially exculpatory data during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 response process. So...understanding cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 effect of our tools will make us competent in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir use, and we'll be able to address those (and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r) issues.

When a process is created (see Windows Internals, by Russinovich and Solomon for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 details, or go here), cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 EXE file is loaded into memory...cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 EXE is opened and a section object is created, followed by a process object and a thread object. So, memory pages (default size is 4K) are "consumed". Now, almost all EXEs (and I say "almost" because I haven't seen every EXE file) include an import table in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir PE header, which describes all of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 dynamic link libraries (DLLs) that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 EXE accesses. MS provides API functions via DLLs, and EXEs access cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se DLLs racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 author rewriting all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code used completely from scratch. So...if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 necessary DLL isn't already in memory, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n it has to be located and loaded...which in turn, means that more memory pages are "consumed".

So, knowing that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se memory pages are used/written to, what is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 possibility that important 'evidence' is overwritten? Well, for one thing, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory manager will not overwrite pages that are actively being used. If it did, stuff would randomly disappear and stop working. For example, your copy of a document may disappear because you loaded Solitaire and a 4K page was randomly overwritten. We wouldn't like this, would we? Of course not! So, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory manager will allocate memory pages to a process that are not currently active.

For an example of this, let's take a look at Forensic Discovery, by Dan Farmer and Wietse Venema...specifically, chapter 8, section 17:

As cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 size of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory filling process grows, it accelerates cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory decay of cached files and of terminated anonymous process memory, and eventually cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system will start to cannibalize memory from running processes, moving cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir writable pages to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 swap space. That is, that's what we expected. Unfortunately even repeat runs of this program as root only changed about 3/4 of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 main memory of various computers we tested cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 program on. Not only did it not consume all anonymous memory but it didn't have much of an affect on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kernel and file caches.

Now, keep in mind that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tests that were run were on *nix systems, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 concept is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same for Windows systems (note: previously in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chapter, tests run on Windows XP systems were described, as well).

So this illustrates my point...when a new process is loaded, memory that is actively being used does not get overwritten. If an application (Word, Excel, Notepad) is active in memory, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's a document that is open in that application, that information won't be overwritten...at worst, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 pages not currently being used will be swapped out to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 pagefile. If a Trojan is active in memory, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory pages used by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 process, as well as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 information specific to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 process and thread(s) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves will not be overwritten. The flip side of this is that what does get "consumed" are memory pages that are freed for use by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory manager; research has shown that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 contents of RAM can survive a reboot, and that even after a new process (or several processes) have been loaded and run, information about exited processes and threads still persists. So, pages used by previous processes may be overwritten, as will pages that contained information about threads, and even pages that had not been previously allocated. When we recover cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 contents of physical memory (ie, RAM) one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 useful things about our current tools is that we can locate a process, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n by walking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 page directory and table entries, locate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory pages used by that process. By extracting and assembling cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se pages, we can cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n search cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m for strings, and anything we locate as "evidence" will have context; we'll be able to associate a particular piece of information (ie, a string) with a specific process. The thing about pages that have been freed when a process has exited is that we may not be able to associate that page with a specific process; we may not be able to develop context to anything we find in that particular page.

Think of it this way...if I dump cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 contents of memory and run strings.exe against it, I will get a lot of strings...but what context will that have? I won't be able to associate any of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 strings I locate in that memory dump with a specific process, using just strings.exe. However, if I parse out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 process information, reassembling EXE files and memory used by each process, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n run strings.exe on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 results, I will have a considerable amount of context...not only will I know which process was using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 specific memory pages, but I will have timestamps associated with process and threads, etc.

Thoughts? I just made all this up, just now. ;-) Am I off base, crazy, a raving lunatic?

4 comments:

Anonymous said...

Concerning cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 admissibility of RAM-dump-evidence, I don't think that it's very different from offering evdience from a live acquisition of non-volatile media. Neicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r will exist in its acquired state after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mission. While cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory chips may become totally devoid of data, you never know whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hard drive may go south or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 machine lost. So, in eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r case, you have an image, for what its worth.

This goes to your point of tool validation. If I gacá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r RAM with an accepted, validated tool, I have a high probability that what I've gacá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365red will be admitted. Tool criteria include whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tool has acquired actually existed. Perhaps we can set up a test and load memory with known data and see whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r a tool gacá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs that data. I'll defer to you on how such a test can best be accomplished in a fornsically acceptable manner. Obviously, we should use a few tools for comparison. An issue is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 playing field is different in every test.

It's important to demonstrate that we didn't introduce (into RAM) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data offered into evidence. In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 case of index.dat records, it shouldn't be too difficult. Likewise for text from a document file. It may be more difficult to set forth what we should infer from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data. Also, we will have overwritten something, but nobody can say what it was. Exculpatory evidence? Maybe. Proving a negative is difficult at best.

Should an attempt at RAM acquisition be a routine practice? From what folks have discovered, maybe it should be part of every case. What's cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best way to do that? (I'm asking; I don't know.) Linux aside, should I boot a machine with a clone of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original drive? Put cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chips in anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r machine? The latter may be a problem with compatibility, plus I'd be nervous about what a different machine will throw in RAM. Someone needs to develop a R/O hardware device for DIMMS/SIMMS, etc.

The files/registry data created or modified are easy to measure. I guess we'd also see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 RAM data created by our tool in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 resulting dump file, although I guess it's possible that it could be faulted to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 page file. Yes? Interesting stuff!

H. Carvey said...

Tool criteria include whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tool has acquired actually existed.

I think this is an important issue, but not one that will be answered technically. The reason is that acquiring volatile data is not something that is inherently reproduceable. It's not like acquiring an image from a hard drive, where anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r examiner can do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same thing, and ideally get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same result (MD5, etc.).

It's important to demonstrate that we didn't introduce (into RAM) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data offered into evidence.

Good point...any thoughts on how to do this? ;-)

Should an attempt at RAM acquisition be a routine practice?

Not necessarily. The ACPO Guidelines, for example, mention cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 need for competence. This should be part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 responder's checklist, along with things like justification for live acquisition over post-mortem, etc.

Anonymous said...

...where anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r examiner can do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same thing, and ideally get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same result

Except, of course, in an live acquisition when we image a running drive. That situation is analogous to acquiring RAM. We're back to your point of tool reliability and competence.

any thoughts on how to do this?

To begin with, you have to consider cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 case and decide whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r you want to acquire RAM, much as you said in your last paragraph. I think some things are obvious. Assume that I use a tested tool and sterile media. I find text or index.dat records. I think I can say that I didn't put cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m in memory. However, I did write cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory associated with, for example, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 X-Ways Capture process. That, I'll admit.

Sometimes, we beat ourselves up too much! It's kind of like, "Who was at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 keyboard?" of an unprotected system, absent any reliable artifacts or evidence. If pushed, you can always respond, "It could have just as easily been Martians," if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 judge has a sense of humor. :-)

Anonymous said...

wow gold
buy wow gold
cheap wow gold
world of warcraft gold
runescape
runescape money
buy runescape money
wow gold
cheap wow gold
buy wow gold
world of warcraft gold
guild wars
guild wars gold
buy guild wars gold
maple story
maple story mesos
maplestory mesos
age of conan
age of conan gold
buy age of conan gold
aoc gold
buy aoc gold
age of conan
age of conan gold
buy age of conan gold
aoc gold
buy aoc gold
age of conan
age of conan gold
buy age of conan gold
aoc gold
buy aoc gold