             |+=================================+|
             ||*********************************||
             ||*    Introduction to Hacking    *||
             ||*     by KwAnTAM_PoZeEtroN      *||
             ||*********************************||
             |+=================================+|

The first part of any hacking expidition is getting into the system
that you plan to 'explore.'  This can be achieved in any number of 
ways.  The main two are:

1) Cracking passwd (brute force)
2) Using an exploit

Cracking passwd is fairly simple.  You get a 'cracking' program which 
is designed to take each word in a word list file and encrypt it 
using the same one-way hash that UNIX uses to encrypt its password 
file.  Then it compares the hashed value to each password in the 
encrypted list, which is found on UNIX and other *IX systems in the 
file /etc/passwd  Word lists and cracking programs are available at
http://kwantam.home.ml.org

The list of words used is called a dictionary file.  It contains a 
series of words, one per line, in a standard ASCII text file.  An 
excerpt from a dictionary file could be

helix
hell
hellacious
hello
hellbender
hellbent
hell-bent
hellbox
hellcat
hellebore
heller
hell-for-leather
hellgrammite

etc.

The one-way hash function is a small series of mathematical steps 
that makes a series of characters which is saved in the passwd file.
The one-way hash function UNIX uses is a variant of Crypt(3).  The reason 
that a dictionary file is needed is the fact that the Crypt(3) function 
cannot be reversed, hence the name one-way hash.  It is mathematically
infeasible to find in any amount of time the string of characters from 
which the hash value came.

The passwd file is a series of lines, each with user info on it.  An
example is:

joeschmoe:naVwowMManasMMo:10:200:Joe Schmoe:/users/joeschmoe:/bin/bash
    ^           ^         ^   ^       ^            ^            ^
    |           |         |   |       |            |            +- User's
    |           |         |   |       |            |            shell program
    |           |         |   |       |            +---- User's home directory
    |           |         |   |       +----------------- User's real name
    |           |         |   +------------------------- User number
    |           |         +----------------------------- User's group number
    |           +--------------------------------------- Hash of user's password
    +--------------------------------------------------- Username

I will explain each of these:

-  Username is the name under which the user logs in.  Usually this is
   accomplished by typing in the username at the username prompt and then
   the password at the password prompt.

-  Hash of user's password is the target of the cracking method.  This is
   what the hash of each word in the dictionary file is compared to.

-  User's group number determines things such as access to certain files,
   etc.  Used more in the exploit technique

-  User's number is basically identification for the system.

-  User's real name is the name the user entered.  Not used by the system,
   but it provides a handy human-readable id of each user.

-  User's home directory is the directory that they go to when they log
   into the system.  

-  User's shell is the user interface that the user uses.  Shells include
   /bin/bash /bin/ash /bin/tcsh /bin/csh and /bin/sh 

It is not necessary to modify the passwd file to contain only the passwords
because most cracking programs look for the second field, which is indicated
by the colon (:) seperating it from the username.

As you can see, it is also possible that, if the user's password is not
in the dictionary file, the cracker won't find the password to that
username.  However, on a system of 200 users, at least 70 of them will
usually have passwords that are in dictionaries, depending on if the
system administrator checks the passwords or not and the type of user
that accesses the system most.  A server used by computer security experts
will not be nearly as susceptible to this kind of an attack (or any, for
that matter) as one which is used by average people for e-mail and internet 
access.

The second kind of attack, the exploit, is a more difficult one, but it
usually has greater rewards, including the possiblity of getting total
control of the system.  Exploits work by using a piece of software in 
such a way as to compromise the security of the system.  One of the most
popular programs to use in this way is sendmail.  Sendmail is most 
susceptible because it must be open to public access to allow mail to be 
transferred into and out of the system.  Usually a buffer, an area in 
memory where the system stores program information, is overwritten using 
sendmail.  The experienced hacker can transfer his own program code into 
the buffer so that while the system thinks it is simply running the mail 
retriever it is actually copying a shell program into a public access 
directory and giving it superuser privlidges.  Another type of exploit 
involves causing a program which has superuser prividges to change your 
group ID to 1, root, which effectively makes you the administrator of 
the system.

Most of the time, these two types of attacks are used together.  The hacker 
will first get a login with brute force to gain access to the outer level of 
the system, and then from there use an exploit of some kind to gain root 
priviledges.  After attaining root access, the hacker will install one or more 
'back doors' to allow himself access to the system again.  A very common one
is taking the source code of the login program and modifying it to accept 
a certain password for any user, as well as the user's own password.

An example of a function in C that could do this would be:

check_backdoor(entry,access)
{
/* the variable entry is the password that the user entered
 * the variable access determines whether or not to allow the 
 */  user into the system.  If access = 1 then the user is let in.

if (entry == "mybackdoor")
{
access = 1;
return;
}

cryptcheck(entry,access);

return;
}

In this example, mybackdoor would be the password that could be used on
any user account.  If mybackdoor was not the entry, then the password
is hashed and checked against the password in /etc/passwd which allows
the back door to function without being noticed by anyone, including the
administrator.

I hope this information hhas been helpful in teaching you about the basis
of hacking.  For more information, visit my home page or drop me an e-mail.

KwAnTAM_PoZeEtroN
Leader of the Black Angels
Ringmaster of the Ruiners Webring
Head of Psychotic security
http://kwantam.home.ml.org
kwantam@mailhost.net




