Closed gcmoreira closed 2 weeks ago
Hey @ikelos, the tests are failing because the ISF in linux.zip (linux-image-3.2.0-4-amd64-dbg_3.2.57-3+deb7u2_amd64.json.xz
) doesn't contain the symbol types. So in this line the call to vmlinux.object_from_symbol()
returns a void type which then fails in TimespecVol3.new_from_timespec()
because it's the wrong type.
The ISF is circa 2018 and needs to be updated.
$ unzip -l linux.zip linux/linux-image-3.2.0-4-amd64-dbg_3.2.57-3+deb7u2_amd64.json.xz
Archive: linux.zip
Length Date Time Name
--------- ---------- ----- ----
776408 2018-07-19 03:04 linux/linux-image-3.2.0-4-amd64-dbg_3.2.57-3+deb7u2_amd64.json.xz
--------- -------
776408 1 file
Alternatively, this will be fixed once #1316 is merged. See the following using the same sample:
$ ./vol.py \
--remote-isf-url 'https://github.com/Abyss-W4tcher/volatility3-symbols/raw/master/banners/banners.json' \
-f ./linux-sample-1.bin \
linux.pslist
Volatility 3 Framework 2.11.0
Progress: 100.00 Stacking attempts finished
OFFSET (V) PID TID PPID COMM CREATION TIME File output
0x88001f994740 1 1 0 init 2014-06-24 10:22:33.016001 UTC Disabled
0x88001f994040 2 2 0 kthreadd 2014-06-24 10:22:33.016001 UTC Disabled
0x88001f9a2780 3 3 2 ksoftirqd/0 2014-06-24 10:22:33.056003 UTC Disabled
0x88001f9a67c0 5 5 2 kworker/u:0 2014-06-24 10:22:33.056003 UTC Disabled
Ok, this seems to be failing on boottime = Timespec64Concrete.new_from_timespec(wall_to_monotonic)
which expects a Timespec64Abstract, but doesn't get one seemingly. Happy to merge this once we get the test passing/figure out what's going wrong.
It looks like wall_to_monotonic
, which is made from n object_from_symbol
call, isn't returning a timespec64
(or at least not something that looks like a Timespec64Abstract
, which is what it needs)
@ikelos Alright, merge conflict resolved. It will be good to go once the ISF is fixed.
@ikelos the ISF is now fixed, I reran the tests and it passed. it's ready to go!!
In this PR we introduce the boot time support to the Volatility3 framework.
This enables other plugins to provide UTC datetime information based on the system boot time. A prime example is the
linux.pslist
plugin, which has been enhanced as part of this effort. Additionally, we have introduced a newlinux.boottime
plugin to retrieve the system boot time date, supporting also time namespaces (kernels >= 5.6). Both plugins offer support for the Timeliner.linux.pslist
Note: The task creation time is seen from the root time namespece, which is what's expected.
6.8.0-41
4.4.0-142
3.13.0-185
3.2.0-4
linux.boottime
In this first example, we will examine the boot time on a system with multiple time namespaces.
Let's start by inspecting the root time namespace.
Next, let's create a new time namespace with a different boot time, -2days:
It's time to examine a memory dump that includes the steps mentioned above.
Other kernels tests:
6.8.0-41
4.4.0-142
3.13.0-185
3.2.0-4
Timeliner