L0phtCrack 1.5 Released 7/12/97 Available at http://www.l0pht.com/advisories.html mudge@l0pht.com weld@l0pht.com OVERVIEW L0phtCrack 1.5 is a tool for turning Microsoft LANMAN and NT password hashes back into the original clear text passwords. The program does this using dictionary cracking and also brute force. L0phtCrack 1.5 returns not just the LANMAN passord but the NT password up to 14 characters in length. Version 1.0 of L0phtCrack was deficient because the graphical version of the program did not support the brute force method. This has been fixed for version 1.5. The brute force efficiency has been improved and an option to select the character set that makes up the password has been added. The default behavior of L0phtCrack is to do a dictionary attack on the password file and then brute force the remaining uncracked passwords. Sample password files are named pwfile.txt, pwfile2.txt, pwfile3.txt and pwfile4.txt. A 28000 word dictionary file is included named wfile.txt. You can dump passwords directly from L0phtCrack if you have administrator rights. L0phtCrack 1.5 includes the ability to dictionary attack or brute force the network NT server challenge that is used to prevent the OWF from going across the wire in its plaintext format. Sample network sniffed challenges are in files sniff.txt and sniff2.txt. This means you can get NT passwords without administrator privileges if you have network access between the client and the server. You can build the sniff files by hand using your favorite network analyzer or wait for our tool which sniffs the network and builds these files. The sniffing tool will be made available shortly. Also to be made available shortly is a commercial multiprocessor version, L0phtCrack/SMP 1.5 for NT and Solaris. Contact l0phtcrack@l0pht.com for more information. FILES IN THE EXECUTABLE DISTRIBUTION - LC15EXE.ZIP lc_cli.exe is the command line version of the program. Run this if you think little status counters are sucking up all you performance. Source code for this program that will build on Win95/NT or Unix is included in the source code distribution: lc15src.zip or lc15src.tar.gz lc_gui.exe is the NT graphical version of L0phtCrack. lc_guipro.exe is the NT graphical version of L0phtCrack that has been compiled with Pentuim Pro optimizations turned on. lc_gui95.exe is Win95 graphical version of L0phtCrack. This version does not support password dumping due to Win95 limitations. FILES IN THE SOURCE DISTRIBUTION - LC15SRC.ZIP or LC15SRC.TAR.GZ This archive contains all the source to build the command line version of L0phtCrack 1.5. PERFORMANCE Dictionary cracking is extremely fast. L0phtCrack running on a Pentium Pro 200 checked a password file with 100 passwords against a 8 Megabyte dictionary file in under one minute. Brute forcing is always an extremely CPU intensive operation. We have worked to optimize this in L0phtCrack 1.5. L0phtCrack running on a Pentium Pro 200 checked a password file with 10 passwords using the alpha character set (A-Z) in 26 hours. The graphical verion of L0phtCrack 1.5 features a percentage done counter and a time remaining estimate so you can gauge when the task will be complete. L0phtCrack 1.5 allows you to select one of 5 character sets to brute force passwords that use more characters than A-Z. As the character sets increase in size from 26 characters to 68 the time to brute force the password increases exponentially. This chart illustrates the relative time for larger character sets. Char Relative Size Iterations Time 26 8353082582 1.00 36 80603140212 9.65 46 4.45502E+11 53.33 68 6.82333E+12 816.86 So if 26 characters takes 26 hours to complete, 36 characters (A-Z,0-9) would take 250 hours or 10.5 days. Now of course this is the worst case senario of the password being 99999999999999. A password such as take2asp1r1n would probably be computed in about 7 days. NT Server Challenge Sniffing Here is a description of the challenge that takes place over the network when a client, such as a Windows 95 machine, connects to an NT Server. [assuming initial setup etc...] 8byte "random" challenge Client <---------------------- Server OWF1 = pad Lanman OWF with 5 nulls OWF2 = pad NT OWF with 5 nulls resp = E(OWF1, Chal) E(OWF2, Chal) 48byte response (24byte lanman 24byte nt) Client -----------------------> Server The client takes the OWF ( all 16 bytes of it) and pads with 5 nulls. From this point it des ecb encrypts the, now 21byte, OWF with the 8byte challenge. The resulting 24byte string is sent over to the server who performs the same operations on the OWF stored in it's registry and compares the resulting two 24byte strings. If they match the user used the correct passwd. What's cool about this? Well, now you can take your sniffer logs of NT logons and retrieve the plaintext passwords. This does not require an account on the NT machine nor does it require previous knowledge of the ADMINISTRATOR password. So even if you have installed Service Pack 3 and enabled SAM encryption your passwords are still vulnerable if they go over the network. Special thanks go out to: - Hobbit@avian.org for all the cool ideas and bare feet. Especially for his monster paper on CIFS problems. - Jeremey Allison jra@cygnus.com - for the fantastic sleuthing with PWDump. - tuebor@l0pht.com for a some nice little code tips and generall coolness. - the people who did SAMBA for being nuts! - the people who did libdes for being nuts! - Yobie for always fighting giants. If anyone makes modifications / improvements please mail the diffs to mudge@l0pht.com. We hope this tool is useful, mudge@l0pht.com , weld@l0pht.com