mandiant / mandiant/capa

Use more fields to address dynamic address processes

Open
#2,361 11 comments 0 reactions 0 assignees View on GitHub
dynamic enhancement
Dominant language
Python
Stars
6.2k
Forks
726
Avg merge
11d 11h
Merged PRs (30d)
7

Description

While working on the DRAKVUF sandbox, we noticed that sometimes processes would have the same PID and PPID and would therefore be fused together in the final generated JSON sandbox report. It would be nice to have some type of way to distinguish between processes.

DRAKVUF (the monitor) gets around this by specifying more fields while reporting each api call that was made or file that was accessed. These fields include ts_from (time when the process was created), ts_to (time where process ended), as well as process name. As for the DRAKVUF sandbox, then the devs have now added a new "_SEQID_" field that's an alphanumeric value that's generated from ts_from and ts_to, so it might be nice to use one of these two ideas to distinguish between processes with the same PID and PPID.

I think this issue has come up in the past, and I think that maybe we could add an extra field (maybe call it _inner_?) that we could add to the `capa.features.address.ProcessAddress` class, and then in the case of the DRAKVUF sandbox we could put the newly added SEQID there and use it to tell which process is which. Alternatively, we could register the ts_from and ts_to into ProcessAddress and use it to tell processes apart for all sandboxes?

I am not sure how different sandboxes tackle this issue, so maybe some research is needed to try and find a common ground between all of them that we factor out into the `ProcessAddress` class. I am using the issue to get a conversation started on it.

Contributor guide

Open the contributing guide

Research direction

Start by tracing capa.features.address.ProcessAddress and the sandbox JSON process-identity handling. Compare how DRAKVUF and other sandboxes represent ts_from, ts_to, process names, or _SEQID_. Done means documenting a common discriminator and agreeing on a field or interface that prevents processes with the same PID and PPID from being fused.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
reverse-engineering
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.