I just read the email quickly.
The checksum is being computed before writting on disk. There is no reason
to read the file to compute the checksum.
buffer = readmem(pa, size)
chksum += checksum(buffer, size)
write(buffer, size)
On Wed, Jan 9, 2013 at 11:49 AM, Luka Milkovic <milkovic.luka(a)gmail.com>wrote:
Hi George,
On Wed, Jan 9, 2013 at 6:29 PM, George M. Garner Jr.
<ggarner_online(a)gmgsystemsinc.com> wrote:
Moonsols Community Edition appears to support a "/s" option which will
generate a cryptographic checksum which may be compared to the actual
checksum of the output file. While it is true, as you say, that
cryptographic checksums will not detect tampering which occurred prior to
the checksum's creation, adding the "/s" option should detect all of the
kernel mode attacks which you document. It will force you to attack
along
the read path (NtMapViewOfSection, MmMapIoSpace
and MmMapMemoryDumpMdl)
or
else to fake both the content and the checksum. I
am assuming that
Matthieu
is generating the checksum before writing the
data to disk and not from
the
output file after it has been written. +1 for
Matthieu (maybe).
Unfortunately, that's not the case:(
The reason is that the checksum is calculated on the buffer *after* it
has been written to the file (basically the next call after
ZwWriteFile).
When Dementia is used, checksum of the dump created by win32dd equals
to the one printed out in the console.
Matthieu, what do you think about making the checksum before writing
the buffer to dump?
Cheers,
Luka
_______________________________________________
Vol-users mailing list
Vol-users(a)volatilityfoundation.org
http://lists.volatilityfoundation.org/mailman/listinfo/vol-users