Categorygithub.com/xenophonsec/keeptrak
repositorypackage
1.0.0
Repository: https://github.com/xenophonsec/keeptrak.git
Documentation: pkg.go.dev

# README

KEEPTRAK

Track recon/OSINT commands in an organized, grepable, fasion.

No more saving and organizing terminal output manually.

Keeptrak is a case management system for hackers, bug bounty hunters, and general cyber security professionals. It runs a nested shell where you can run your usual scans and commands but in the background it saves the output and commands run in various ways. You can also store notes and evidence records with timestamps for backtracking later on.

Example Output:

  • casedirectory (folder of case files)
    • db.csv (csv file of records: LABEL, VALUE, DATA_TYPE, CONFIRMED, DATE_ADDED)
    • dump (dump of all terminal output)
    • history (list of commands that were used with timestamps)
    • notes (notes with timestamps)
    • nmap (all output by said program)
    • dnsrecon (all output by said program)
    • etc...

Features

Installation

Go v19 is the only prerequisite.

Install using go

go install github.com/xenophonsec/keeptrak@latest

Build from source

git clone https://github.com/xenophonsec/keeptrak.git
cd keeptrak
go build
# or install globally
go install

Nested Shell

Running keeptrak with no commands will launch the nested shell, which stores your command hitory and records all output.

keeptrak
Enter Case Name: mywebsite
KEEPTRAK> nmap -sV mywebsite

Pipes

You can pipe data into keeptrak and assign a case and label to track the output of whatever you run.

cat file | keeptrak CASENAME LABEL

Keeptrak will relay whatever is piped into it so you don't lose visibililty and can continue to pipe that into anything else.

cat test | keeptrak testcase test
this is my test file
it has multiple lines
I am tracking it in keeptrak
cat file | keeptrak mycase mylabel | sort | uniq
apple
box
cat

Scripting

You can use pipes to feed data into keeptrak in a script:

#!/bin/bash

TARGET=$1
nmap -sV $TARGET | keeptrak $TARGET nmap

You can also store data you found in keeptrak by passing it as arguments:

keeptrak $CASE Server $IPADDRESS "IP Address" Y

Quick Notes

You can save timestamped notes quickly using the "note: " prefix in the nested shell.

KEEPTRAK> note: The netmask is 255.255.255.0

If you want to create timestamped notes in a script you can use the following syntax:

keeptrak mycase note "this is an important note"

If you don't want to create a case folder you can simply use a period as the case name and it will crate the note in the current directory.

keeptrak . note "This is my note"

Tags

Just as a friendly recommendation, you can use tags to create more searchable notes.

  • You can use "#" syntax to create a tag system that grep can use
  • #important this is a super important note
  • cat notes | grep "#important"

Store Findings Records

You can store individual records in a case database by providing the values as arguments. This can be used for any data found in an investigation: usernames, passwords, hashes, etc...

Usage:

keeptrak CASE LABEL VALUE DATA_TYPE CONFIRMED

Example:

keeptrak myosint username happyfeet credential Y

You can even do this within the nested shell

KEEPTRAK> keeptrak myosint username happyfeet credential Y