+------------------------------------------------------+ | | | KILLER CRACKER: Portable Un*x Password Cracker | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | Version 8.00 LTD, Dated 7/28/91 | | | | Written By Doctor Dissector | | Copyright (c) 1991, By Doctor Dissector | | | +------------------------------------------------------+ *** LIMITED EDITION !!!!! DO NOT DISTRIBUTE !!!!! LIMITED EDITION *** License ------- This program is NOT free software BUT may be used without charge or payment in any form IF your copy is a "registered" distributed version. You may modify it as much as you please, however, you MAY NOT re-distribute it, in any shape or for: ie. modified OR unmodified, without the expressed written consent (ie. e-mail) of Doctor Dissector. (bbs.doctord@doomsday.spies.com) This program was initially distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Disclaimer ---------- This program was written and released just to prove that Un*x accounts can be effectively cracked utilizing modified DES password encryption (crypt) routines and proper programming skills. I, Doctor Dissector, the author of Killer Cracker, do not endorse any type of illegal appropriation of computer accounts using programs such as this; my goal is only to prove that the Un*x operating system's greatest weakness in security lies in the /etc/passwd file. Doctor Dissector will not be held responsible for the actions of anyone who may misuse this program since he cannot control the actions of the people who might become exposed to this program's use for illegal means. Quick Instructions ------------------ To compile under any operating system using "make", edit the file "Makefile" included with this package to your needs and type "make". File Listing & Description -------------------------- WHATSNEW.800 -- Info on new modifications/additions to this version KC.DOC -- This document file KC.EXE -- MS/PC-DOS executable KC.H -- Killer Cracker source code header file KC.C -- Killer Cracker source code MAKEFILE. -- Makefile for KC, edit this and use "make" to compile! B_ORDER.C -- Determines if your machine is Network Byte Order BCRYPT.H -- Bcrypt encryption source code header file BCRYPT.C -- Bcrypt encryption source code XFDES.H -- XFDES encryption source code header file XFDES.C -- XFDES encryption source code GOODWORD.W -- Collection of words from various sources GIRLWORD.W -- Collection of female first names Description ----------- Killer Cracker (KC) is a program which effectively, and quickly, encrypts a sequence of guesses (words) utilizing a modified form of the DES Un*x password encryption alogrithm. These encrypted guesses are then compared to the fields in any typical /etc/passwd file; any matches are recorded for future reference. Guesses to KC are read from several sources. The primary source of guesses to encrypt come from a textfile (ASCII) of words separated by CR/LF pairs or LFs (depending on operating system). Other guesses are taken from each individual account in any /etc/passwd file; the login name and two respective GECOS field entries. In addition, single characters (a-z, A-Z, 0-9) and "funny" characters (^A-^Z, ESC, SPACE) can be tested as guesses as well. KC also has the ability to make several combinations for several guesses from one guess (i.e. test the guess in normal case, uppercase, lowercase, and backwards) and the option to pre-pend or append any number of characters to the beginning or end of any guessed word. KC was also written in C source, which has been released and included in KC's release package. The source was developed to be highly portable with most other C compilers, especially the Un*x C compilers. Execution --------- Killer Cracker can be invoked using various methods from the command line (shell prompt). Normally, KC will be called directly from the command line; thus, usage from the command line will be discussed first. In order to obtain a brief summary of KC's options from the command line, KC can be invoked with the '-?' or '/?' flag. Incedentally, all flags to KC must be either preceded by a '-' or a '/' character. The following info will discuss KC's command line flags and offer detailed descriptions for each. Under some Un*x shells, you may have to type the -? in double quotes ("-?") in order to get the appropriate response. Usage: kc -?bcfghlostu -<1|2>[:]<chars> -<p|w|v>[:]<filename> -z[:]<minutes> kc -r[:]<filename> Parms: -1 prefix chars -p /etc/passwd file -r restore file -2 suffix chars -w guess word file -v valid account file Flags: -? explain usage -b test backwards -c test up/low cases -f test funny chars -g test GECOS fields -h hog resources -l test login names -o suppress output -s single char test -t test crypt result -u user based crack -z timeout (minutes) Brief Summary Of Flags ---------------------- -? KC will print a brief summary of the available command line flags as shown above. Description Of Flags -------------------- -p[:]<file> Filename/path+filename of the /etc/passwd file to be cracked. The ':' character is optional (can be used to clarify the command line). If no filename is specified, KC will prompt you for one. -w[:]<file> Filename/path+filename of the wordfile where all password guesses are stored. Format of the words inside this wordfile must be one word per line, no blank lines are allowed. The ':' character is optional (can be used to clarify the command line). If no filename is specified, KC will prompt you for one. -v[:]<file> Filename/path+filename of the output file, where all valid account/password combinations will be saved. The ':' character is optional (can be used to clarify the command line). If no filename is specified, KC will prompt you for one. -r[:]<file> Filename/path+filename of the restorefile you would like KC to read options and restoredata from. If this flag is invoked without a following filename (i.e. "kc -r"), KC will assume a default filename of "restore". Also note that if this flag is specified, all other flags from the command line will be ignored. The ':' character is optional (can be used to clarify the command line). -1[:]<char> The characters KC will be instructed to pre-pend to the front of each word tested, one single character at a time. For example, if you used the flag "-1:abc", each test would test each word as "aWORD", "bWORD", and "cWORD". -2[:]<char> The characters KC will be instructed to append to the end of each word tested, one single character at a time. For example, if you used the flag "-1:abc", each test would test each word as "WORDa", "WORDb", and "WORDc". -z[:]<time> Under the Un*x environment, this will instruct KC to abort after the specified <time> in MINUTES. -b KC will be instructed to create a word combination from the available guesses as the reverse (backwards) from of the original guess. KC is intelligent and will not repeat testing of guesses which are the same foreward and backward (i.e. "MOM" backwards is "MOM", KC will not test this guess in reverse). Refer to "Examples Of Guesses" for more information. -c KC will be instructed to create word combinations from the available guesses in all uppercase and all lowercase. KC is intelligent and guesses which are the same in all uppercase or all lowercase will be skipped from testing in the respective combination. See "Examples Of Guesses" for more information. -f KC will be instructed to test the "funny" control characters ^A-^Z, ESC, and SPACE as guesses before testing guesses from the wordfile. -g KC will be instructed to test two words from the /etc/passwd GECOS field of each individual account as guesses for that particular account. KC will skip over entries in the GECOS field who's second character is the '.' period character to avoid testing initials. -h KC will be instructed to hog all available system resources under (and ONLY under) the BSD Unix system. This means that KC will attempt to raise the current resource limit of its process to the maximum allowed value (if it is not at its maximum already). This could result in dramatic performance increases as well as increased suspicion to the process, but the end result is for you, the end user to decide. -l KC will be instructed to test the login name from the /etc/passwd GECOS field of each individual account as a guess for that particular account. -o KC will be instructed to suppress all output from printing to the local console/terminal. Normally, information about the current session is printed to the standard output; however, on the Un*x operating system where background processing requires output to be directed away from the local console/terminal, verbose output could be a problem. Also note that this flag, when executed under the Un*x operating system, will automatically fork KC into the background (returning you quickly to the shell prompt) and the NOHUP flag (HUP signal ignore) will be placed on its process (so logoff will not result in termination of the current session). -s KC will be instructed to test the single characters, a-z, A-Z, and 0-9 as guesses before testing guesses from the wordfile. -t KC will be instructed to test the result of a single, pre-installed, encrypt/comparison using the default encryption routines. If you get an encryption error, then your system WILL NOT effectively crack passwords. -u KC will be instructed to compare every word from the wordfile avainst an account before moging to the next account. When cracking by WORDS, KC will enable same-word-memory which increses speed over cracking by users up to 40%. Normally, KC will crack for passwords in the following format: Default Format -------------- word #1: test account #1's password test account #2's password... word #2: test account #1's password test account #2's password... word #3: test account #1's password test account #2's password... (etc.) This flag will instruct KC to follow the following format: Optional Format --------------- user #1's password: test word #1 test word #2 test word #3... user #2's password: test word #1 test word #2 test word #3... user #3's password: test word #1 test word #2 test word #3... (etc.) Usage Examples -------------- kc -c -p:passwd.212 -w:dict.txt -v:valid.212 The above command will instruct KC to read encrypted passwords from the file passwd.212 (/etc/passwd format), read guesses from the file dict.txt, and write any valid account/password combinations to the file valid.212. All guesses will be tested in normal, upper, and lowercase. Output will be verbose to the console. kc -cbo -ppwfile.txt -wwords.txt -vresults.txt The above command will instruct Killer Cracker to read encrypted passwords from the file pwfile.txt, read guesses from words.txt, and write all valid account/password combinations into results.txt. All guesses will be tested in normal, upper, lowercase and reverse-normal, reverse-upper, and reverse- lowercase. All output will be suppressed. kc -glu -ppasswd.txt -wwords.txt -vvalid.txt The above command will instruct Killer Cracker to read encrypted passwords from passwd.txt, read guesses from words.txt, and write valid account/password combinations to valid.txt. In addition, the account/login names will be tested as passwords for each account, and the GECOS field strings will be tested as passwords for each account. When cracking begins, KC will crack passwords using the optional format. Output will be verbose to the standard output. kc -c -p:passwd.txt The above command will instruct KC to read encrypted passwords from passwd.txt, interactively request the filenames for the wordfile and the validfile, and test guesses in normal, upper, and lowercase. kc -rOLDCRACK.KC The above command will instruct KC to read the restorefile OLDCRACK.KC and restore the session as saved in that file. Examples Of Guesses ------------------- Killer Cracker can test words as normal, uppercase, lowercase, reversed, and with numerical suffixes. The following table displays the guesses for the words "Guess", "password", "PW", and 'MOM'. The '$' fields are areas which are skipped because the guess would be a repeat and the 'X' fields are areas which are never accessed. +-----------------------------------------------------------------------+ | Flags | Normal | Upcase |Lowcase |Reverse |Ureverse|Lreverse| Suffix | |--------+--------+--------+--------+--------+--------+--------+--------| | "c" |Guess |GUESS |guess |XXXXXXXX|XXXXXXXX|XXXXXXXX|XXXXXXXX| | |password|PASSWORD|$$$$$$$$|XXXXXXXX|XXXXXXXX|XXXXXXXX|XXXXXXXX| | |PW |$$$$$$$$|pw |XXXXXXXX|XXXXXXXX|XXXXXXXX|XXXXXXXX| | |MOM |$$$$$$$$|mom |XXXXXXXX|XXXXXXXX|XXXXXXXX|XXXXXXXX| |--------+--------+--------+--------+--------+--------+--------+--------| | "r" |Guess |XXXXXXXX|XXXXXXXX|sseuG |XXXXXXXX|XXXXXXXX|XXXXXXXX| | |password|XXXXXXXX|XXXXXXXX|drowssap|XXXXXXXX|XXXXXXXX|XXXXXXXX| | |PW |XXXXXXXX|XXXXXXXX|WP |XXXXXXXX|XXXXXXXX|XXXXXXXX| | |MOM |XXXXXXXX|XXXXXXXX|$$$$$$$$|XXXXXXXX|XXXXXXXX|XXXXXXXX| |--------+--------+--------+--------+--------+--------+--------+--------| | "rc" |Guess |GUESS |guess |sseuG |SSEUG |sseug |XXXXXXXX| | |password|PASSWORD|$$$$$$$$|drowssap|DROWSSAP|$$$$$$$$|XXXXXXXX| | |PW |$$$$$$$$|pw |WP |$$$$$$$$|wp |XXXXXXXX| | |MOM |$$$$$$$$|mom |$$$$$$$$|$$$$$$$$|$$$$$$$$|XXXXXXXX| +-----------------------------------------------------------------------+ Killer Cracker's Symbols ------------------------ When Killer Cracker is cracking passwords and output is allowed to the standard output, KC will print one of three symbols to the console for each comparison done. "-" This symbol is printed to the standard output when KC has completed one encryption/comparison. "+" This symbol is printed to the standard output when KC has already cracked the account in question or if the account had been flagged as "inactive." KC will skip the encryption/ comparison as a result. "*" This symbol is printed to the standard output when KC is skipping the particular encryption/comparision because the guess tested would repeat a previous comparision using the same word in a different configuration. See "Examples Of Guesses" for information. Quitting Killer Cracker ----------------------- Normally, Killer Cracker will continue cracking until it has completed the last word (in the default format) or the last account (in the optional format). If cracking must be aborted in the middle of a job, the normal terminate key sequence Control-C for MS/DOS machines, Control-\ for Un*x can be used to stop the job, close all files properly, and create a restorefile (named "restore") for future continuation of the crack (if desired). If any other method is used to terminate the crack job (powerdown, warm/cold boot, kill -9, etc) the files may not be updated properly and data may be lost. If you are not familiar with Un*x job control, and KC places itself in the background, you can either send a SIGQUIT/SIGINT to the KC pid or you can bring the KC process into the foreground and then type Control-C. Also note that when KC is running under suppressed output mode, the response to hitting Control-C may take up to several minutes on MS/DOS machines; just hit Control-C like three times, then sit back and wait for KC to abort (patience, my friend!). Restorefile Format ------------------ Killer Cracker's option to restore aborted sessions or to "read" options from a normal (ASCII) file can come in handy in many circumstances. The following text describes the format of this file and how KC interprets the information in it. Note that the BASIC format of the restorefile is "IDENTIFIER=TOKEN<newline>" where <newline> is either a CR/LF pair or a LF (depending on system implementation). Case is ignored in the IDENTIFIER but the TOKEN's case may be important in filenames, accountnames, and words in a particular wordfile. Example: Filename "restore" --------------------------- Passwordfile=/etc/passwd Wordfile=crackwords.txt Validfile=valid.txt Prefixes=abc Suffixes=123 Flags=1rc Timeout=0 Lastaccount=daemon Lastword=phoenix Description Of Identifiers -------------------------- Passwordfile Filename of the passwordfile (same as -p<file> from the command line). Wordfile Filename of the wordfile (same as -w<file> from the command line). Validfile Filename of the validfile (same as -v<file> from the command line). Prefixes The characters which would be used to prefix the words being tested (same as -1<chars> from the command line). Suffixes The characters which would be used to suffix the words being tested (same as -2<chars> from the command line). Flags Flags which are currently active (same flags as offered on the command line). Timeout The minutes before Killer Cracker will abort the restored session. Lastaccount Last account cracked during an aborted session; the first account to begin cracking when the session begins (skip all preceding accounts). This identifier is only read if the session is based on users (if the -u flag is specified). If the -u flag is specified in the "Flags" identifier and this field does not exist or the account does not exist in the passwordfile, KC will yield an error. Lastword Last word cracked during an aborted session; the first word to begin cracking from when the session begines (skip all preceding words in the given wordfile). This identifier is only read if the session is based on words (default, no -u flag). If this identifier is missing and cracking is based on words, KC will yield an error. If the Lastword word does not occur in the wordfile, the session will start and end without cracking anything. System Dependent Information ---------------------------- Implementation Options/Restrictions -------------- ------------------------------------------------------- MS/PC-DOS Killer Cracker has an upper account limit of around 2000-3000 accounts per session (max accounts per passwordfile) depending on how much system memory you have free at the time of execution. BSD Un*x If the '-o' flag is used, Killer Cracker will automatically fork itself into the background and the NOHUP flag (ignore HUP, hangup signal) will be set. NOTE: KC has a special command line flag which can be used ('-h') to "hog" all available system resources to KC during any given session. This is a flag which should be used with caution, because when KC hogs resources, KC HOGS resources! (ie. on one system, w/o resource hogging, KC got 12 crypts/second... with hogging on, it got 37 crypts/second) This could arouse suspicion upon the superuser's part as other users of the system find they can't do shit while the cracker is running. The timeout feature is enabled. SYSV Un*x If the '-o' flag is used, Killer Cracker will fork itself into the background as in BSD Un*x. The timeout feature is enabled. STRIPPED Signal processing (CONTROL-C) is ignored (hitting CONTROL-C will not save KC's process state, terminating the session "abruptly"). Notes ----- 1. When using the default format for cracking, Killer Cracker will skip accounts which already have been cracked in the following hypothetical format: Default Format, Hypothetical Situation: 10 words, 10 users. Word #1, Users Tested: 1,2,3,4,5,6,7,8,9,10 Word #2, Users Tested: 1,2,3,4,5,6,7,8,9,10 Word #3, Users Tested: 1,2,3,4,5,6,7,8,9,10 (Valid For User #3) Word #4, Users Tested: 1,2,4,5,6,7,8,9,10 Word #5, Users Tested: 1,2,4,5,6,7,8,9,10 Word #6, Users Tested: 1,2,4,5,6,7,8,9,10 (Valid For User #9) Word #7, Users Tested: 1,2,4,5,6,7,8,10 (Valid For User #5) Word #8, Users Tested: 1,2,4,6,7,8,10 Word #9, Users Tested: 1,2,4,6,7,8,10 Word #10, Users Tested: 1,2,4,6,7,8,10 When using the [u] option, Killer Cracker will jump to the next account when (if) a valid password is cracked for the current user. 2. When cracking accounts using Killer Cracking in "by-word" format, encryption/comparisions take place up to 100% (2x) faster than when cracking by users. This is due to an optimization in BCRYPT/XFDES which allows KC to remember the mask of the current word being cracked and the calculation does not have to be re-done for all other comparisions with that same word. Note: these optimizations will not be as apparent when cracking a small amount of users and/or when cracking the login/gecos fields, as each user is tested against a different guess anyway. ------------------------------------------------------------------------------ Thanx to Razor, So76, Scooter, PLAGUE, VIz, and all others who aided in the research and development of this password cracker. -(c) 1991-----------------------------------------------------------------EOF-