Projects STRLCPY dismember Files
🤬
Revision indexing in progress... (search in this revision will be accurate after indexed)
.github Loading last commit info...
internal
pkg
.goreleaser.yml
LICENSE
Makefile
README.md
TODO.md
demo.gif
go.mod
go.sum
main.go
README.md

Dismember

Dismember is a command-line toolkit for Linux that can be used to explore processes and (especially) their memory. Essentially for playing with /proc.

One core feature is the ability to scan the memory of all processes for common secrets, or for custom regular expressions.

A gif showing dismember finding credentials from the memory of a browser

Using the grep command, it can match a regular expression across all memory for all (accessible) processes. This could be used to find sensitive data in memory, identify a process by something included in its memory, or to interrogate a processes' memory for interesting information.

There are many built-in patterns included via the scan command, which effectively works as a secret scanner against the memory on your machine.

Dismember can be used to search memory of all processes it has access to, so running it as root is the most effective method.

Commands are also included to list processes, explore process status and related information, draw process trees, and more...

Available Commands

CommandDescription
filesShow a list of files being accessed by a process
findFind a PID given a process name. If multiple processes match, the first one is returned.
grepSearch process memory for a given string or regex
infoShow information about a process
kernelShow information about the kernel
killKill a process using SIGKILL
listList all processes currently available on the system
resumeResume a suspended process using SIGCONT
scanSearch process memory for a set of predefined secret patterns
suspendSuspend a process using SIGSTOP (use 'dismember resume' to leave suspension)
treeShow a tree diagram of a process and all children (defaults to PID 1).

Installation

Grab a binary from the latest release and add it to your path.

Usage Examples

Search for a pattern in a process by PID

# search memory owned by process 1234
dismember grep -p 1234 'the password is .*'

Search for a pattern in a process by name

# search memory owned by processes named "nginx" for a login form submission
dismember grep -n nginx 'username=liamg&password=.*'

Search for a pattern across all processes

# find a github api token across all processes
dismember grep 'gh[pousr]_[0-9a-zA-Z]{36}'

Search for secrets in memory across all processes

# search all accessible memory for common secrets
dismember scan

FAQ

Isn't this information all just sitting in /proc? Pretty much. Dismember just reads and presents it for the most part. If you can get away with grep whatever /proc/[pid]/blah then go for it! I built this as an educational experience because I couldn't sleep one night and stayed up late reading the proc man-pages (I live an extremely rock 'n' roll lifestyle). It's not a replacement for existing tools, but perhaps it can complement them.

Do you know how horrific some of these commands seem when read out of context? Yes, I realised after running dismember kill --children 291458 and grimacing as I looked back at the command. Oops.

Please wait...
Page is in error, reload to recover