Dear developers:
First of all, I want to apologize for bothering you even I knew you won't maintain this project anymore. I’ve tried my best to slove most of the problems by reading issues in https://github.com/google/rekall. However it’s archived last week, so I’m not able to view the issues anymore. So I’m sorry but I can only ask you for help.
It doesn’t matter if you have no idea either. I’d be quite grateful for your help (if possible).
I don’t know which information will be vital, so I want to describe the error information at first.
The problem now is “Process not found”. I noticed that:
1.It seems like nitro here can only backend process "svchost.exe".
2.I tried to print flink
in find_eprocess()
, there was actually a set of flink. This time the number of it was 35.
The detailed output is as below:
qp@qp:~/Desktop/sandbox/nitro$ sudo ./main.py win7x64
[sudo] password for qp:
Finding QEMU pid for domain win7x64
attach_vm PID = 2768
attach_vcpus
Detected 4 VCPUs
LibVMI Suggestion: set win_ntoskrnl=0x3c52000 in libvmi.conf for faster startup.
LibVMI Suggestion: set win_kdbg=0x1e2120 in libvmi.conf for faster startup.
LibVMI Suggestion: set win_kdvb=0xfffff80003e34120 in libvmi.conf for faster startup.
Dumping physical memory to /tmp/tmpubwjmsl1/tmpo4tx3kq1
Extracting symbols with Rekall
WARNING:root:Unable to determine file size, assuming file is volatile.
Loading symbols
set_syscall_trap True
Start listening on VCPU 0
Start listening on VCPU 1
Start listening on VCPU 2
Start listening on VCPU 3
{'event': {'cr3': '0x742c9000',
'direction': 'enter',
'rax': '0x3',
'time': '2020-10-22T10:26:51.067791',
'type': 'syscall',
'vcpu': 0},
'full_name': 'Table0!Unknown',
'name': 'Unknown',
'process': {'command_line': 'C:\Windows\System32\svchost.exe '
'-k '
'secsvcs',
'create_time': '2020-10-22 '
'10:23:58',
'iswow64': False,
'name': 'svchost.exe',
'parent_pid': 428,
'path': '\Device\HarddiskVolume2\Windows\System32\svchost.exe',
'pid': 2560}}
{'event': {'cr3': '0x742c9000',
'direction': 'exit',
'rax': '0x0',
'time': '2020-10-22T10:26:51.068313',
'type': 'syscall',
'vcpu': 0},
'full_name': 'Table0!Unknown',
'name': 'Unknown',
'process': {'command_line': 'C:\Windows\System32\svchost.exe '
'-k '
'secsvcs',
'create_time': '2020-10-22 '
'10:23:58',
'iswow64': False,
'name': 'svchost.exe',
'parent_pid': 428,
'path': '\Device\HarddiskVolume2\Windows\System32\svchost.exe',
'pid': 2560}}
……
Traceback (most recent call last):
File "./main.py", line 91, in
main()
File "./main.py", line 87, in main
runner.run()
File "./main.py", line 55, in run
syscall = self.nitro.backend.process_event(event)
File "/home/qp/Desktop/sandbox/nitro/nitro/backends/windows/backend.py", line 116, in process_event
process = self.associate_process(cr3)
File "/home/qp/Desktop/sandbox/nitro/nitro/backends/windows/backend.py", line 159, in associate_process
p = self.find_eprocess(cr3)
File "/home/qp/Desktop/sandbox/nitro/nitro/backends/windows/backend.py", line 189, in find_eprocess
raise RuntimeError('Process not found')
RuntimeError: Process not found
Cause I can only generate the profile of my own virtual machine through rekall installed on python3.6, I also tried to modify /nitro/nitro/backends/windows/get_symbols.py&backend.py
, which ended with the same error.
……
File "/home/qp/Desktop/sandbox/nitro/nitro/backends/windows/backend.py", line 189, in find_eprocess
raise RuntimeError('Process not found')
Also I have to mention that there is not any process when I use command line to analyze a memory image, in which a.json
is the profile generated by rekall(py3). And command pslist
return an empty list:
qp@qp:~/Desktop/sandbox/nitro/debug$ rekall -f win7x64.raw --profile ~/Desktop/pdbdump_5/a.json
2020-10-21 17:35:40,007:WARNING:rekall.1:Unable to determine file size, assuming file is volatile.
—
The Rekall Digital Forensic/Incident Response framework 1.7.2.rc1 (Hurricane Ridge).
"We can remember it for you wholesale!"
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License.
See http://www.rekall-forensic.com/docs/Manual/tutorial.html to get started.
—
[1] win7x64.raw 17:35:43> pslist
—> pslist()
_EPROCESS name pid ppid thread_count handle_count session_id wow64 process_create_time process_exit_time
‘’-------------- -------------------- ----- ------ ------------ ------------ ---------- ------ ------------------------ ------------------------‘’
Out<17:35:43> Plugin: pslist (WinPsList)
[1] win7x64.raw 17:35:43>
All in all, I think the problem is caused by rekall. But I couldn’t view the rekall/issues, so I have to ask you for help.
Once again, I’m quite grateful for you help if possible!