The credential manager.
The credential manager is a system for storing, sorting and retrieving all the credentials you come across in a pentest. The core is an SQLite database and an API providing the management functionality to the Neet components. User access to the credential store is via the accounts tool, which can be used to access all of the management functionality. For a quick start, the accounts usage information is shown below. A more comprehensive description of the credential manager will follow at some point when I have time to write it!
Accounts is a command-line interface to the Neet credential manager, which is used by Neet to store and retrieve credentials found during pentests. You can use this command-line tool to manually manage credentials you find or are given during a pentest, and to interact with those that Neet finds. It allows you to add, search, modify and delete credentials, as well as import and export them in various useful formats. Examples of use cases are listed at the end of this help. Usage: accounts [options] Use with no arguments will assume the behaviour of the -l (--list) option, listing all stored credentials in CSV format. -f (--file): use the specified file instead of the default, which is $HOME/.credentialManager. You can alternatively set the CREDSTORE environment variable, which should contain the full absolute path to the database file you wish to use. -t (--type): specify the type of credential you are adding or listing. Guidance on the use of this field is provided below. This field is always stored and searched in lower case. -d (--domain): specify the realm or domain of the credential you are adding or listing. This can also be used to specify SIDs or other authentication zones depending on the type of system. This is a case-sensitive field. -u (--user): specify the account name of the credential you are adding or listing. If the username is supplied in user@domain or DOMAIN\USER format, both the "user" and "domain" fields are populated correctly. This also applies to specification of usernames and domains whilst searching. This is a case-sensitive field. -p (--pass): specify the password of the credential you are adding or listing. This is a case-sensitive field. -s (--system): specify the system name or IP address for the credential you are adding or listing. This field is always stored and searched in UPPER case. -g (--tag): provide a tag for your credential. For example, WCE can have "hist01", "current" and "used" for each credential. The pwdump import makes use of tags to store this data and you can use it to select data too. Tags are always stored and searched in lower case. -r (--rid): specify the RID or numeric identifier of the credential you are adding or listing. This is a case-sensitive field to facilitate storage of database SIDs if you so wish. -P (--privilege): provide a privilege indicator for your credential. For example, you could mark certain accounts as "high" or "low", "locked" or whatever you want. This field is always stored in lower case. -x (--delete): delete the credential with the specified ID -m (--modify): modify the credential with the specified ID. You can update the existing data for the credential by specifying any of the -u -p -P -t -g -d -s -c or -r parameters, exactly as though you were adding a new credential. -l (--list): list stored credentials. You can optionally filter results by specifying -t -d -u -p -s -g -r -c and/or -P to list credentials matching those fields only. You can use the percent (%) symbol as a wildcard character when matching particular fields. The output of -l can be formatted using --output, below. -o (--output): A string representing the fields that are required when listing the credentials: i = credential ID (internal reference only, but required for deleting) t = credential type r = RID or system numeric user ID u = username p = password d = domain/realm s = system name c = comment g = tag P = privilege The --output parameter is optional - without it, -l will list all the available fields. -i (--import): import a set of credentials from STDIN. This option requires an argument which specifies the type of list being provided. The following values can be supplied: f[tupdscgrP] = This signifies a CSV format import, with the input file having only the specified fields are in the order listed, as per the --output option. Use this to import general password lists in CSV format. If you don't have all parameters in the CSV file (perhaps you just have a list of passwords), then you can specify other parameters on the command line as though you were manually adding a credential. These parameters will be applied to every credential imported in this way. The delimiter is a comma, although you can change this with the -D option. pwdump = The input is in pwdump format. native = The credentials are being provided by the output of this program in export mode: "accounts -e" or "accounts --export". It is important that no --output filters are applied to the export, although the search filters can of course have been used to restrict the number of fields which were exported. This feature is useful for transferring credentials between credential manager databases. -D (--delimiter): specify the delimiter for the output (or import). The default delimiter is a comma. -e (--export): provide the output in machine-readable format, ready to be imported to another credential manager file by accounts. -L (--long): provide the output in a long format -q (--quotes): quote each output field. Nice for preserving integrity, not so nice for quick shell scripts. -h (--help): print this help Strings representing credential types (values for 't'): gen: Generic username/password pair. smb: Windows/Samba/RDP. This is the assumed type if no other type is specified. mssql: Microsoft SQL mysql: MySQL ora: Oracle Database pgrs: PostGres vnc: vncenc: Encrypted VNC passwords ssh: tnet: Telnet snmp: hsrp: vrrp: web: Web application ntlm: Windows LM/NTLM Hashes (as dumped from the SAM) mscache: MS Cache mscache2: MS Cache2 md5: MD5 hash md5s: Salted MD5 hash sha1: SHA hash sha1s: Salted SHA hash sha256: SHA256 hash sha256s: Salted SHA256 hash des: DES Unix password You are free to make up your own 'type' identifiers, but bear in mind that the Neet modules can only make use of those of which they are aware, and that you may need to remember them when searching through your credential store. You don't have to add all possible fields when adding credentials. You MUST put in either a password or username, but that is the only entry that is required to create a new credential record. Bear in mind that the more fields you add, the more selective you can be afterwards when you're searching through hundreds or thousands of credentials. However, it is possible to add further information to a credential later on, using the --modify option. EXAMPLES ======== 0. View all credentials in the store, in shell-script-friendly CSV format accounts 1. Add a credential for a Windows domain. Note the use of quotes around shell metacharacters: accounts -t smb -u superman -p 'sup3rS3kr!t' -d root -s ukrootdomdc01 -c 'Domain Admin!' 2. Add some infrastructure passwords accounts -t hsrp -p bobbydazzler -s gateway03 -c "Found this using tcpdump" accounts -t snmp -p bobbydazzler -s ukrouter01 -c "Same as HSRP string!" 3. Add an Oracle database credential for the oratest SID accounts -t ora -u dbsnmp -p cirCus -d oratest -s DBSRV04 -c "Got a really good brute-forcer" 4. List all passwords regardless of which types of systems they were found on. This may include duplicate entries. accounts -l -o p 5. List all Windows domains, usernames and passwords in that order. Make the output exclamation-point delimited with quotes around the data values. accounts -l -t smb -o dup -q -D\! 6. List all data on SNMP strings accounts -l -t snmp 7. List all passwords on accounts with the username Administrator: accounts -l -u Administrator -o p 8. Find that pesky Windows entry with the "ihatepentesters" password and delete it accounts -x $(accounts -l -t smb -p ihatepentesters -o i) 9. Delete all NTLM credentials we have from system XAVIER for id in `accounts -l -t ntlm -o i -s XAVIER`; do accounts -x $id; done 10. You found a sticky note with "Password: ahoauuf23r" on it. Record it. accounts -p ahoauuf23r or better still: accounts -p ahoauuf23r -c "Post-it note on Andrew's desk" 11. List all accounts in the uberoot Windows domain, with just usernames and passwords, in that order. accounts -l -d uberoot -o up 12. List all accounts in the credential store. Print the output in spreadsheet-friendly CSV format. accounts -lq 13. List all website accounts. Make the output in URL- and POST-friendly format. accounts -L -t web -o up -D\& 14. Change the type of credential 52 to telnet. accounts -m 52 -t telnet 15. Change the password of credential 8 to Password04 and add a comment. accounts --modify 8 -p Password04 -c "Changed the password myself" 16. Import a pwdump file. cat pwdump.txt | accounts -i pwdump -c "From the XAVIER file server" or cat pwdump.txt | accounts -i pwdump -s XAVIER or cat pwdump.txt | accounts -i pwdump -c "From the XAVIER file server" -s XAVIER 17. Import a pwdump file for the GLOBAL domain cat pwdump.txt | accounts -i pwdump -d GLOBAL -s DC01 18. Import a simple CSV file of usernames and passwords for the corpdom domain. cat accounts.csv | accounts -i fup -d corpdom 19. Import a CSV file of usernames, passwords and SIDs for the Oracle database server cat accounts.csv | accounts -i fupd -t ora -s DBSRV012UK 20. Import credentials from a different credential store. accounts -e -f ~/work/.credentialStore | accounts -i all -f ~/myMergedCredentialStore 21. Import just Windows credentials from a different credential store. accounts -e -f ~/work/.credentialStore -t smb | accounts -i all -f ~/myMergedCredentialStore 22. Generate a file that can be passed to medusa's -C option: accounts -l -t type -o sup -D: > medusaImport.txt