657 lines
23 KiB
Plaintext
657 lines
23 KiB
Plaintext
|
|
|
|
*** A List Of Some OF The Most Useful UNIX **
|
|
*** Hacking Commands, and Some Hints On Their Usage ***
|
|
|
|
---------------------------------------------------------------
|
|
|
|
It is fun and often usefull to create a file that is owned
|
|
by someone else. On most systems with slack security ie 99% of
|
|
all UNIX systems, this is quite easily done. The chown command
|
|
will change any of your files to make someone else the owner.
|
|
Format is as follows:
|
|
|
|
chown ownername filelist
|
|
|
|
Where ownername is the new owner, and filelist is the list of
|
|
files to change. You must own the file which your are goin to
|
|
change, unless you are a superuser....then u can change ANYTHING!
|
|
chgrp is a similar command which will change the group
|
|
ownership on a file. If you are going to do both a chown and a
|
|
chgrp on a file, then make sure you do the chgrp first! Once the
|
|
file is owned by someone else, you cant change nything about it!
|
|
|
|
---------------------------------------------------------------
|
|
|
|
Sometimes just seeing who is on the system is a challenge in
|
|
itself. The best way is to write your own version of who in C,
|
|
but if you can't do that then this may be of some help to you:
|
|
|
|
who followed by on or more of the following flags:
|
|
|
|
-b Displays time sys as last booted.
|
|
-H Precedes output with header.
|
|
-l Lists lines waiting for users to logon.
|
|
-q displays number of users logged on.
|
|
-t displays time sys clock was last changed.
|
|
-T displays the state field (a + indicates it is
|
|
possible to send to terminal, a - means u cannot)
|
|
-u Give a complete listing of those logged on.
|
|
|
|
**who -HTu is about the best choice for the average user**
|
|
|
|
##by the way, the list of users logged on is kept in the file
|
|
/etc/utmp. If you want to write your own personalised version of
|
|
who in C, you now know where to look!###
|
|
|
|
---------------------------------------------------------------
|
|
|
|
When a users state field (see -T flag option for who
|
|
command) says that a user has their message function on, this
|
|
actually means that it is possible to get stuff onto their
|
|
screen.
|
|
Basically, every terminal on the system has a file
|
|
corresponding to it. These files can be found in the /dev
|
|
directory. You can to anything to these files, so long as you
|
|
have access -eg you can read them, and write to them, but you
|
|
will notice that they never change in size. They are called
|
|
character specific files, and are really the link between the
|
|
system and the terminals. Whatever you put in these files will
|
|
go staright to the terminal it corresponds to.
|
|
Unfortunately, on most systems, when the user logs in, the
|
|
"mesg n" command is issued which turns off write access to that
|
|
terminal, BUT- if you can start cating to that terminal before
|
|
system issues the mesg n command, then you will continue to be
|
|
able to get stuff up on that terminal! This has many varied uses.
|
|
|
|
Check out the terminal, or terminal software being used.
|
|
Often you will be able to remotely program another users
|
|
terminal, simply by 'cating' a string to a users screen. You
|
|
might be able to set up a buffer, capturing all that is typed, or
|
|
you may be able to send the terminal into a frenzy- (sometimes a
|
|
user will walk away without realizing that they are sill
|
|
effectively logged on, leaving you with access to their
|
|
account!). Some terminal types also have this great command
|
|
called transmit screen. It transmits everything on the screen,
|
|
just as if the user had typed it !
|
|
So just say I wanted to log off a user, then I would send a
|
|
clear screen command (usually ctrl l), followed by "exit"
|
|
followed by a carriage return, followed by the transmit screen
|
|
code. Using ths technique you can wipe peoples directories or
|
|
anything. My favourite is to set open access on all their files
|
|
and directories so I can peruse them for deletion etc at my own
|
|
leisure).
|
|
|
|
---------------------------------------------------------------
|
|
|
|
If you ever briefly get access to another persons account
|
|
eg. they leave the room to go to toilet or whatever, then simply
|
|
type the following:
|
|
|
|
chmod 777 $HOME
|
|
chmod 777 $MAIL
|
|
|
|
Then clear the screen so they dont see what you just typed.
|
|
|
|
Now you can go look at their directory, and their mail, and
|
|
you can even put mail in their mail file. (just use the same
|
|
format as any mail that is already there!). Next time they log in
|
|
the system will automatically inform them they have new mail!
|
|
|
|
---------------------------------------------------------------
|
|
|
|
Another way to send fake mail to people is to use the mail
|
|
server. This method produces mail that is slightly different to
|
|
normal, so anyone who uses UNIX a bit may be suspiscious when
|
|
they receive it, but it will fool the average user!
|
|
|
|
type telnet
|
|
|
|
the following prompt will appear:
|
|
|
|
telnet>
|
|
|
|
now type :
|
|
|
|
open localhost 25
|
|
|
|
some crap will come up about the mail server..now type:
|
|
|
|
mail from: xxxxxx Put any name you want.
|
|
|
|
some more bullshit will come up. Now type:
|
|
|
|
rcpt to: xxxxxx Put the name of the person to receive mail here.
|
|
|
|
now type:
|
|
|
|
data
|
|
|
|
now you can type the letter...end it with a "."
|
|
type quit to exit once you are done.
|
|
|
|
-------------------------------------------------------------
|
|
|
|
Heres one for any experimenters out there...
|
|
It is possible to create files which simply cannot be deleted
|
|
from the standard shell. To do this you will have to physically
|
|
CREATE THE FILE USING A C PROGRAM or SCRIPT FILE, and you will
|
|
have to use a sequence of control characters which cannot be
|
|
typed from the shell. Try things like Ctrl-h (this is the
|
|
code for the delete key). Just a file with the name Ctrl-h would
|
|
not be deleteable from the shell, unless you used wildcards. So,
|
|
make it a nice long series of characters, so that to delete the
|
|
file, the user has no choice but to individually copy all his
|
|
files elsewhere, then delete everything in his directory, and
|
|
then copy all his files back.....this is one of my
|
|
favourites..gets em every time!
|
|
|
|
The following script file is an example which will create a
|
|
file with the name Ctrl-h. You MUST tyoe this file in using the
|
|
vi editor or similar.
|
|
*****If you are not very good with vi, type "man vi" and print the
|
|
help file...it even contains stuff that I find useful now and
|
|
then.*****
|
|
|
|
type the following in vi...
|
|
|
|
echo'' > 'a^h'
|
|
|
|
***NOTE...to get the ^h (this really means ctrl-h) from vi type:
|
|
|
|
Ctrl v
|
|
Ctrl h
|
|
|
|
The Ctrl v instrcts vi to take the next character as a ascii
|
|
character, and not to interpret it.
|
|
change the access on the file you just created and now
|
|
execute it. It will create a file which looks like it is called
|
|
a, but try to delete it !..use wildcards if you really want to
|
|
delete it.
|
|
|
|
*> Title: Tutorial on hacking through a UNIX system
|
|
|
|
|
|
**
|
|
|
|
In the following file, all references made to the name Unix, may also be
|
|
substituted to the Xenix operating system.
|
|
|
|
Brief history: Back in the early sixties, during the development of
|
|
third generation computers at MIT, a group of programmers studying the
|
|
potential of computers, discovered their ability of performing two or
|
|
more tasks simultaneously. Bell Labs, taking notice of this discovery,
|
|
provided funds for their developmental scientists to investigate into this
|
|
new frontier. After about 2 years of developmental research, they produced
|
|
an operating system they called "Unix".
|
|
Sixties to Current: During this time Bell Systems installed the Unix system
|
|
to provide their computer operators with the ability to multitask so that
|
|
they could become more productive, and efficient. One of the systems they
|
|
put on the Unix system was called "Elmos". Through Elmos many tasks (i.e.
|
|
billing,and installation records) could be done by many people using the same
|
|
mainframe.
|
|
|
|
Note: Cosmos is accessed through the Elmos system.
|
|
|
|
Current: Today, with the development of micro computers, such multitasking
|
|
can be achieved by a scaled down version of Unix (but just as
|
|
powerful). Microsoft,seeing this development, opted to develop their own
|
|
Unix like system for the IBM line of PC/XT's. Their result they called
|
|
Xenix (pronounced zee-nicks). Both Unix and Xenix can be easily installed
|
|
on IBM PC's and offer the same function (just 2 different vendors).
|
|
|
|
Note: Due to the many different versions of Unix (Berkley Unix,
|
|
Bell System III, and System V the most popular) many commands
|
|
following may/may not work. I have written them in System V routines.
|
|
Unix/Xenix operating systems will be considered identical systems below.
|
|
|
|
How to tell if/if not you are on a Unix system: Unix systems are quite
|
|
common systems across the country. Their security appears as such:
|
|
|
|
Login; (or login;)
|
|
password:
|
|
|
|
When hacking on a Unix system it is best to use lowercase because the Unix
|
|
system commands are all done in lower- case. Login; is a 1-8 character field. It is
|
|
usually the name (i.e. joe or fred) of the user, or initials (i.e. j.jones
|
|
or f.wilson). Hints for login names can be found trashing the location of
|
|
the dial-up (use your CN/A to find where the computer is). Password: is a 1-8 character password assigned by the sysop or chosen by the user.
|
|
|
|
Common default logins
|
|
--------------------------
|
|
login; Password:
|
|
root root,system,etc..
|
|
sys sys,system
|
|
daemon daemon
|
|
uucp uucp
|
|
tty tty
|
|
test test
|
|
unix unix
|
|
bin bin
|
|
adm adm
|
|
who who
|
|
learn learn
|
|
uuhost uuhost
|
|
nuucp nuucp
|
|
|
|
If you guess a login name and you are not asked for a password, and have
|
|
accessed to the system, then you have what is known as a non-gifted account.
|
|
If you guess a correct login and pass- word, then you have a user account.
|
|
And, if you get the root p/w you have a "super-user" account.
|
|
All Unix systems have the following installed to their system:
|
|
root, sys, bin, daemon, uucp, adm Once you are in the system, you will
|
|
get a prompt. Common prompts are:
|
|
|
|
$
|
|
%
|
|
#
|
|
|
|
But can be just about anything the sysop or user wants it to be.
|
|
|
|
Things to do when you are in: Some of the commands that you may want to
|
|
try follow below:
|
|
|
|
who is on (shows who is currently logged on the system.)
|
|
write name (name is the person you wish to chat with)
|
|
To exit chat mode try ctrl-D.
|
|
EOT=End of Transfer.
|
|
ls -a (list all files in current directory.)
|
|
du -a (checks amount of memory your files use;disk usage)
|
|
cd\name (name is the name of the sub-directory you choose)
|
|
cd\ (brings your home directory to current use)
|
|
cat name (name is a filename either a program or documentation your username has written)
|
|
Most Unix programs are written in the C language or Pascal
|
|
since Unix is a programmers' environment. One of the first things done on the
|
|
system is print up or capture (in a buffer) the file containing all user names and accounts. This can be done by doing the following command:
|
|
|
|
cat /etc/passwd
|
|
|
|
If you are successful you will see a list of all accounts on the system. It
|
|
should look like this:
|
|
root:hvnsdcf:0:0:root dir:/: joe:majdnfd:1:1:Joe Cool:/bin:/bin/joe hal::1:2:Hal Smith:/bin:/bin/hal
|
|
|
|
The "root" line tells the following info :
|
|
login name=root
|
|
hvnsdcf = encrypted password
|
|
0 = user group number
|
|
0 = user number
|
|
root dir = name of user
|
|
/ = root directory
|
|
|
|
In the Joe login, the last part "/bin/joe " tells us which directory
|
|
is his home directory (joe) is. In the "hal" example the login name is
|
|
followed by 2 colons, that means that there is no password needed to get in
|
|
using his name.
|
|
|
|
Conclusion: I hope that this file will help other novice Unix hackers
|
|
obtain access to the Unix/Xenix systems that they may find.
|
|
|
|
|
|
|
|
On the Security of UNIX
|
|
|
|
=-=-=-=-=-=-=-=-=-=-=-=
|
|
|
|
Recently there has been much interest in the security aspects of operating
|
|
|
|
systems and software.At issue is the ability to prevent undesired disclosure of
|
|
|
|
information, destruction of information,and harm to the functioning of the
|
|
|
|
system.This paper discusses the degree of security which can be provided under
|
|
|
|
the system and offers a number of hints on how to improve security.The first
|
|
|
|
fact to face is that UNIX was not developed with security,in any realistic
|
|
|
|
sense,in mind;this fact alone guarantees a vast number of holes.(Actually the
|
|
|
|
same statement can be made with respect to most systems.)
|
|
|
|
|
|
|
|
The area of security in which is theoretically weakest is in protecting against
|
|
|
|
crashing or at least crippling the operation of the system.The problem here is
|
|
|
|
not mainly in uncritical acceptance of bad parameters to system calls (there
|
|
|
|
may be bugs in this area, but none are known)but rather in lack of checks for
|
|
|
|
excessive consumption of resources.
|
|
|
|
|
|
|
|
Most notably, there is no limit on the amount of disk storage used, either in
|
|
|
|
total space allocated or in the number of files or directories.Here is a
|
|
|
|
particularly ghastly shell sequence guaranteed to stop the system:
|
|
|
|
|
|
|
|
|
|
|
|
while : ; do
|
|
|
|
mkdir x
|
|
|
|
cd x
|
|
|
|
done
|
|
|
|
|
|
|
|
Either a panic will occur because all the i-nodes on the device are used up,
|
|
|
|
or all the disk blocks will be consumed, thus preventing anyone from writing
|
|
|
|
files on the device.In this version of the system,users are prevented from
|
|
|
|
creating more than a set number of processes simultaneously,so unless users
|
|
|
|
are in collusion it is unlikely that any one can stop the system altogether.
|
|
|
|
|
|
|
|
However, creation of 20 or so CPU or disk-bound jobs leaves few resources
|
|
|
|
available for others.Also, if many large jobs are run simultaneously,swap space
|
|
|
|
may run out, causing a panic. It should be evident that excessive consumption
|
|
|
|
of diskspace, files, swap space and processes can easily occur accidentally in
|
|
|
|
malfunctioning programs as well as at command level.In fact UNIX is essentially
|
|
|
|
defenseless against this kind of abuse,nor is there any easy fix.The best that
|
|
|
|
can be said is that it is generally fairly easy to detect what has happened
|
|
|
|
when disaster strikes ,to identify the user responsible, and take appropriate
|
|
|
|
action.In practice,we have found that difficulties in this area are rather
|
|
|
|
rare,but we have not been faced with malicious users,and enjoy a fairly
|
|
|
|
generous supply of resources which have served to cushion us against accidental
|
|
|
|
overconsumption.
|
|
|
|
|
|
|
|
The picture is considerably brighter in the area of protection of information
|
|
|
|
from unauthorized perusal and destruction.Here the degree of security seems
|
|
|
|
(almost) adequate theoretically, and the problems lie more in the necessity for
|
|
|
|
care in the actual use of the system.Each UNIX file has associated with it
|
|
|
|
eleven bits of protection information together with a user identification
|
|
|
|
number and a user-group identification number (UID and GID).
|
|
|
|
|
|
|
|
Nine of the protection bits are used to specify independently permission to
|
|
|
|
read, to write, and to execute the file to the user himself, to members of the
|
|
|
|
user's group, and to all other users.Each process generated by or for a user
|
|
|
|
has associated with it an effective UID and a real UID, and an effective and
|
|
|
|
real GID.When an attempt is made to access the file for reading, writing, or
|
|
|
|
executing UID for the process is changed to the UID associated with the file;
|
|
|
|
the change persists until the process terminates or until the UID changed again
|
|
|
|
by another execution of a set-UID file.Similarly the effective group ID of a
|
|
|
|
process is changed to the GID associated with a file when that file is executed
|
|
|
|
and has the set-GID bit set.The real UID and GID of a process do not change
|
|
|
|
when any file is executed,but only as the result of a privileged system
|
|
|
|
call.The basic notion of the set-UID and set-GID bits is that one may write a
|
|
|
|
program which is executableby others and which maintains files accessible to
|
|
|
|
others only by that program.
|
|
|
|
|
|
|
|
The classical example is the game-playing program which maintains records of
|
|
|
|
the scores of its players.The program itself has to read and write the score
|
|
|
|
file,but no one but the game's sponsor can be allowed unrestricted access to
|
|
|
|
the file lest they manipulate the game to their own advantage.
|
|
|
|
|
|
|
|
The solution is to turn on the set-UID bit of the game program. When, and only
|
|
|
|
when,it is invoked by players of the game,it may update the score file but
|
|
|
|
ordinary programs executed by others cannot access the score. There are a
|
|
|
|
number of special cases involved in determining access permissions. Since
|
|
|
|
executing a directory as a program is a meaningless operation,the
|
|
|
|
execute-permission bit, for directories, is taken instead to mean permission to
|
|
|
|
search the directory for a given file during the scanning of a path name; thus
|
|
|
|
if a directory has execute permission but no read permission for a given user,
|
|
|
|
he may access files with known names in the directory,but may not read (list)
|
|
|
|
the entire contents of the directory.
|
|
|
|
|
|
|
|
Write permission on a directory is interpreted to mean that the user may create
|
|
|
|
and delete files in that directory;it is impossible for any user to write
|
|
|
|
directly into any directory..Another, and from the point of view of security,
|
|
|
|
much more serious special case is that there is a ``super user'' who is able to
|
|
|
|
read any file and write any non-directory.The super-user is also able to change
|
|
|
|
the protection mode and the owner UID and GID of any file and to invoke
|
|
|
|
privileged system calls.It must be recognized that the mere notion of a
|
|
|
|
super-user is a theoretical, and usually practical, blemish on any protection
|
|
|
|
scheme.
|
|
|
|
|
|
|
|
The first necessity for a secure system is of course arranging that all files
|
|
|
|
and directories have the proper protection modes.Traditionally, UNIX software
|
|
|
|
has been exceedingly permissive in this regard;essentially all commands create
|
|
|
|
files readable and writable by everyone.In the current version,this policy may
|
|
|
|
be easily adjusted to suit the needs ofthe installation or the individual user.
|
|
|
|
|
|
|
|
Associated with each process and its descendants is a mask, which is in effect
|
|
|
|
anded with the mode of every file and directory created by that process. In
|
|
|
|
this way, users can arrange that, by default,all their files are no more
|
|
|
|
accessible than they wish.The standard mask, set by login,allows all permiss-
|
|
|
|
ions to the user himself and to his group,but disallows writing by others.
|
|
|
|
|
|
|
|
To maintain both data privacy and data integrity,it is necessary, and largely
|
|
|
|
sufficient,to make one's files inaccessible to others. The lack of sufficiency
|
|
|
|
could follow from the existence of set-UID programs created by the user and the
|
|
|
|
possibility of total breach of system security in one of the ways discussed
|
|
|
|
below(or one of the ways not discussed below).
|
|
|
|
|
|
|
|
For greater protection,an encryption scheme is available.Since the editor is
|
|
|
|
able to create encrypted documents, and the crypt command can be used to pipe
|
|
|
|
such documents into the other text-processing programs,the length of time
|
|
|
|
during which clear text versions need be available is strictly limited.The
|
|
|
|
encryption scheme used is not one of the strongest known, but it is judged
|
|
|
|
adequate, in the sense that cryptanalysisis likely to require considerably more
|
|
|
|
effort than more direct methods of reading the encrypted files.For example, a
|
|
|
|
user who stores data that he regards as truly secret should be aware that he is
|
|
|
|
implicitly trusting the system administrator not to install a version of the
|
|
|
|
crypt command that stores every typed password in a file. Needless to say, the
|
|
|
|
system administrators must be at least as careful as their most demanding user
|
|
|
|
to place the correct protection mode on the files under their control.
|
|
|
|
|
|
|
|
In particular,it is necessary that special files be protected from writing, and
|
|
|
|
probably reading, by ordinary users when they store sensitive files belonging
|
|
|
|
to otherusers.It is easy to write programs that examine and change files by
|
|
|
|
accessing the device on which the files live.
|
|
|
|
|
|
|
|
On the issue of password security,UNIX is probably better than most systems.
|
|
|
|
Passwords are stored in an encrypted form which, in the absence of serious
|
|
|
|
attention from specialists in the field,appears reasonably secure, provided its
|
|
|
|
limitations are understood.In the current version, it is based on a slightl y
|
|
|
|
defective version of the Federal DES;it is purposely defective so that
|
|
|
|
easily-available hardware is useless for attempts at exhaustive
|
|
|
|
key-search.Since both the encryption algorithm and the encrypted passwords are
|
|
|
|
available,exhaustive enumeration of potential passwords is still feasible up to
|
|
|
|
a point.We have observed that users choose passwords that are easy to
|
|
|
|
guess:they are short, or from a limited alphabet, or in a dictionary.
|
|
|
|
Passwords should be at least six characters long and randomly chosen from an
|
|
|
|
alphabet which includes digits and special characters.
|
|
|
|
|
|
|
|
Of course there also exist feasible non-cryptanalytic ways of finding out
|
|
|
|
passwords.For example: write a program which types out ``login:''on the
|
|
|
|
typewriter and copies whatever is typed to a file of your own. Then invoke the
|
|
|
|
command and go away until the victim arrives..The set-UID (set-GID)notion must
|
|
|
|
be used carefully if any security is to be maintained. The first thing to keep
|
|
|
|
in mind is that a writable set-UID file can have another program copied onto
|
|
|
|
it.
|
|
|
|
|
|
|
|
For example, if the super-user command is writable,anyone can copy the shell
|
|
|
|
onto it and get a password-free version of Shell Unix.A more subtle problem can
|
|
|
|
come from set-UID programs which are not sufficiently careful of what is fed
|
|
|
|
into them.To take an obsolete example,the previous version of the mail command
|
|
|
|
was set-UID and owned by the super-user.This version sent mail to the r
|
|
|
|
ecipient's own directory.The notion was that one should be able to send mail to
|
|
|
|
anyone even if they want to protecttheir directories from writing. The trouble
|
|
|
|
was that mailwas rather dumb:anyone could mail someone else's priva te file to
|
|
|
|
himself.Much more seriousis the following scenario: make a file with a line
|
|
|
|
like one in the password filewhich allows one to log in as the super-user.Then
|
|
|
|
make a link named ``.mail'' to the password file in some writable directory on
|
|
|
|
the same device as the password file (say /tmp). Finally mail the bogus login
|
|
|
|
line to /tmp/.mail;You can then login as the superuser,clean up the
|
|
|
|
incriminating evidence,and have your will.
|
|
|
|
|
|
|
|
The fact that users can mount their own disks and tapes as file systems can be
|
|
|
|
another way of gaining super-user status.Once a disk pack is mounted, the
|
|
|
|
system believes what is on it.Thus one can take a blank disk pack,put on it
|
|
|
|
anything desired,and mount it.There are obvious and unfortunate consequences.
|
|
|
|
For example:a mounted disk with garbage on it will crash the system;one of the
|
|
|
|
files on the mounted disk can easily be a password-free version of Shell Unix;
|
|
|
|
other files can be unprotected entries for special files. The only easy fix
|
|
|
|
for this problem is to forbid the use of mount to unpriv- ileged users.A
|
|
|
|
partial solution, not so restrictive,would be to have the mount command examine
|
|
|
|
the special file for bad data,set-UID programs owned by others ,and accessible
|
|
|
|
special files,and balk at unprivileged invokers.
|
|
|
|
|
|
|
|
|
|
|
|
Scott Walters London, CANADA
|
|
walterss@julian.uwo.ca <CarbonBoy>
|
|
PGP 31 03 1B E1 C7 6E 3A EC 97 32 01 BA 5B 05 5D FB
|
|
finger me for public key block
|
|
MIME-mail welcome
|
|
|
|
'Beware the fury of a patient man.'
|
|
|