* Many artifacts around process execution
* None of them are perfect!
* Missing data:
* Parent process (Call chain)
* User that launched the process
* Limited number of last run timestamps
---
## Preparing for Process Execution
* By far the best preparation is to install Sysmon or process logging.
* This has some very small overhead but it is so worth it!
* Process execution logging gives us context as to activity on the
system.
---
## Tracking processes
* One of the critical questions we ask is `Where did this process come
from?`
* Context of where the process came from is important in establishing
initial access vector!
* We could collect all process execution from all endpoints, but:
* This will generate a large volume of events.
* Vast majority of events are not interesting.
* Often determining which process is interesting is determined by
context.
---
## Where did notepad process come from?
---
## Using Generic.System.Pstree
![](collecting_pstree.png)
---
## View process tree
![](pstree.png)
---
## Inspect the process call chain
![](powershell_pstree.png)