Anlpasswd

Evaluation Completed :  July 31st, 1997


Name

Anlpasswd

Release Information

Product of the Argonne National Laboratory
Version 2.3
Public Domain tool available for download at ftp://info.mcs.anl.gov/pub/systems/anlpasswd-2.3.tar.Z

Support

Email :  support@mcs.anl.gov

Functionality

A proactive password checker that checks the password keyed in by the user against a sorted list of all the words that Crack will generate and given a set of input dictionaries. The user can key in a password if and only if that password cannot be cracked by a full run of crack.

Requirements

Supported for the following Unix flavours

Documentation

The Installation Guide, README's and a paper.

Installing Anlpasswd

The Installation procedure was not very straight forward.( as with most public domain tools). However you can follow this installation guide per se instead of reinventing the wheel.

  1. Unpack the tar file anlpasswd-2.3.tar.Z into a directory
  2. Make the following changes to the anlpasswd file in the perl directory
    1. Go to the anlpasswd/perl directory
    2. Change $accounts to your email id
    3. $accounts = "balasujs@cs.purdue.edu"
    4. Change @legal_shells to all the shells in /etc/shells
    5. @legal_shells = ('/usr/local/bin/tcsh', '/usr/bin/ksh', '/bin/csh', '/bin/sh')
    6. Specify the place perl has to look for the include files of anlpasswd
    7. unshift(@INC, "/home/balasujs/tools/anlpasswd/perl")
    8. Specify the location of the dictionaries
    9. $dictdir = "/home/balasujs/tools/anlpasswd/mongodict";# location of dictionaries
      $bigdict = "$dictdir/bigdict"; # large list of words
    10. Specify the location of the ypstuff executable
    11. $ypstuffdir = "/home/balasujs/tools/anlpasswd/bin"; # location of ypstuff executable
    12. Specify the location of the ypstuff executable
    13. $ypstuffdir = "/home/balasujs/tools/anlpasswd/bin"; # location of ypstuff executable
  3. Put the anlpasswd file in a directory crossmounted across all unix systems
  4. Chmod the anlpasswd file
  5. chmod 600 anlpasswd
  6. Make the following links in the anlpasswd directory
  7. ln -s anlpasswd passwd
    ln -s anlpasswd yppasswd
  8. Go to /bin directory and mv the actual passwd file into another file
  9. cd /bin
    mv passwd passwd.orig
    chmod 644 passwd.orig
  10. Make the following changes to the anlpasswd/c-routines/suidwrap.c file to the constants PASSWD_ACTUAL and YPPASSWD_ACTUAL
  11. #define PASSWD_ACTUAL "/home/balasujs/tools/anlpasswd/perl/passwd"
    #define YPPASSWD_ACTUAL "/home/balasujs/tools/anlpasswd/perl/yppasswd" cd /bin
  12. Type make in the anlpasswd/c-routines directory and copy the suidwrap program in place of the actual /bin/passwd program. Do the following as root
  13. cp suidwrap /bin/passwd
    cd /bin
    chmod 4111 passwd
    ln -s passwd yppasswd
  14. Copy anlpasswd/c-routines/ypstuff to the location chosen in 2 .7
  15. Now to generate the comprehensive dictionary. Go to anlpasswd/mongodict and follow the instructions in the README.

Problems Faced

  1. The makefile in the anlpasswd/c-routines directory requires the following change
    1. add -lnsl to the link line after -lrpcsvc
  2. Comment out the perl directive require "look.pl" in the file anlpasswd/perl/anlpasswd
    1. #require "look.pl";
  3. Make the following changes to the file anlpasswd/c-routines/suidwrap.c
    1. Before : execve("/usr/local/bin/perl", eargv, envp);
      After : execve("/usr/local/perl/bin/perl", eargv, envp);
  4. Make the following changes to the Makefile in the dictionary directory
    1. Before : CRACKSRC=/mcs/source/crack/v4.1/Sources
      After : CRACKSRC=/scratch/usr/local/crack-4.1/Sources
      Before : DICTDIR=/mcs/source/DICTIONARIES/RAW
      After : DICTDIR=/scratch/usr/local/crack-4.1/Dicts/
      Before : CC=cc
      After : CC=gcc(could be avoided; however I use gcc)

Starting anlpasswd

  1. Invoke the new /bin/passwd program and the anlpasswd program will take effect. Alternatively invoke the passwd executable in the directory you have placed it.

Problems Faced

  1. Currently a lot of redundant display information is present.All this can be removed. You can merely comment the relevant printf statements.
  2. The generation of bigdict takes a lot of time

Evaluation Details

The Good News :

  1. Only tool of its kind
  2. May totally eliminate the need for crack runs if properly installed
  3. Uses a fast binary seraching technique and does not seem to take too long for locating hits and misses
  4. Source code freely available and can be modified to our needs
  5. Crack sources and the big dictionary already available on account of the crack runs

The Bad News :

  1. A public domain tool. Support for the tool is always questionable (Though I found that the email address provided works and they do answer your questions)
  2. The tool only checks the new passwords. No corrective action is taken for the old passwords that are still there. May have to think of aging the existing passwords.
  3. Need to replace the /bin/passwd program of the Unix programming environment. Ramifications have to be discussed.
  4. The program did accept some very simple words. May be avoided by using a more comprehensive dictionary than what we have.
  5. Has a requirement that the password should be atleast 6 characters long. Must be increased to 8.
  6. Installation is not very easy and straightforward
  7. The tool takes a long time to generate bigdict which is a comprehensive collection of all dictionary words
  8. Uses an older version of Perl where setuid programs where not allowed. As a result, a setuid C wrapper is used. Old design. Newer versions of perl allow setuid programs so we may wait for a newer version.

Conclusion

This tool seems to be a good tool and may eliminate the overhead of crack runs which take place every quarter.

Recommendation

The tool is recommended. I suggest the following course of action. Let us deploy the tool for the present quarter, age the existing password set and have a crack run at the end of the quarter. If the crack results seem extremely impressive in terms of password security, we can continue with its deployment and eventually phase out the crack runs.


This review was written by Jai Sundar Balasubramaniyan <balasujs@cs.purdue.edu> during the summer of 1997. The opinions expressed are for purposes of critical review, and do not represent any official recommendation or endorsement by COAST or Purdue University.