
                                    _
                                   | \
                                   |  \
                                   | | \
                            __     | |\ \             __
      _____________       _/_/     | | \ \          _/_/     _____________
     |  ___________     _/_/       | |  \ \       _/_/       ___________  |
     | |              _/_/_____    | |   > >    _/_/_____               | |
     | |             /________/    | |  / /    /________/               | |
     | |                           | | / /                              | |
     | |                           | |/ /                               | |
     | |                           | | /                                | |
     | |                           |  /                                 | |
     | |                           |_/                                  | |
     | |                                                                | |
     | |      c   o   m   m   u   n   i   c   a   t   i   o   n   s     | |
     | |________________________________________________________________| |
     |____________________________________________________________________|

  ...presents...       Hacking PC/Payroll for Windows
                                                         by Tarkin Darklighter
                                                         09/01/1997-#340

             __///////\ -cDc- CULT OF THE DEAD COW -cDc- /\\\\\\\__
               \\\\\\\/  Everything You Need Since 1986  \///////
  ___    _   _    ___     _   _    ___       _   _      ___    _   _      ___
 |___heal_the_sick___raise_the_dead___cleanse_the_lepers___cast_out_demons___|

I. Introduction

Automated Data Processing (ADP) is the nation's largest provider of
computerized payroll transaction processing.  PC/Payroll for Windows is
ADP's client/server front end for AutoPay, which is in use by over
225,000 clients and 20 million employees (per ADP's 1996 annual report).
With PC/Payroll, you can either connect to a SQL server or use their
run-time SQL server engine to access a local database.  If the company
in question is using either option the security is quite trivial.
When you execute PC/Payroll, you are asked for a user name and password.
The natural inclination in a case like this is to just "brute force"
your way into the program via a word list.  Fortunately, there are some
major security flaws in their database structure.
So, let's get to it.


II. Tools

A.  PC Payroll and its configuration

The first thing you'll need is a copy of PC/Payroll for Windows.  If you
can't obtain the installation CD, you'll need to copy the \PCPW
directory from the user's hard drive or from the server.  Also, be sure
and copy the MFCOLEUI.DLL file from the \WINDOWS\SYSTEM directory or you
won't be able to execute the program.

The actual payroll database file is usually stored in a subdirectory of
\PCPW.  The default directory name is PAY4WIN and the default database
name is PAY4WIN.DBS.  This database can get very large, so make sure you
have a lot of storage space available.

There are two INI files in the \PCPW directory that may be important:
SQL.INI and PAY4WIN.INI.  Make sure that the entries in this file point
to the correct drive letter and directory on your system.

B. Disk editor

You'll also need a good disk editor to examine the database file.  I
prefer Norton Disk Editor (DOS version 8.0), but remember that a lot of
these old editors won't work properly with the Win95's new FAT32 system.
You can really screw up your hard drive if you're not careful


III. Methodology

We're going to perform a basic "cut-and-paste" operation on the password
fields in the database.  This is easily accomplished by creating a user
with a known password and copying their password field to the SYSADMIN's
password field.

The next question is exactly HOW to create a new user without actually
getting into the program first.  Fortunately for us, ADP provides a SQL
database utility that will do just exactly that!  We're going to create
a new database and then create a new user/password within that database:

To create a new database:

1. Start up the WINTALK.EXE utility.
2. Select Admin/Install Database.
3. Check the "Local" box.
4. Check the "New" box.
5. The Password field is not important.  Just put whatever you want in
   here.
6. Type in the name of a new database.  (We'll use NEWDB in this
   example.)
7. Click OK.

The new database should now be created.  If you're having problems,
check the entries in the SQL.INI file.

Now, to create the user and password:

1. Select Session/Connect from within WINTALK.EXE.
2. Select NEWDB from the box on the left and click OK.
3. Select Security/New User from the menu bar.
4. Create a new user named SYSADMIN with password "PASSWORD" (it's not
   case-sensitive) with DBA privileges and click OK.
5. Exit WINTALK.

The next step is to copy your new password into the original database
file.  Let's take a look at the database:

Open the NEWDB.DBS file with your disk editor and search for the SECOND
instance of SYSADMIN.  This is the Master User account that has full
access to everything in PC/Payroll.

The password field is located immediately after the user name.  It's
made up of 16 hex numbers, beginning after a 10h.  In our example above,
the hex numbers should read:

45 45 4B 46 4D 4B 46 48   4D 49 48 47 42 42 48 4B

You should get the same string of numbers if you used a password
of "PASSWORD".  Write these numbers down.

Now, use your disk editor to open PAY4WIN.DBS.  Search for the SECOND
instance of SYSADMIN again and locate the password field.  If you can't
find a SYSADMIN user, locate the second instance of another user (like
the name of your payroll clerk) with sufficient privileges in
PC/Payroll.

All you have to do is to copy the string you created into the SYSADMIN's
password field, starting after 10h.  Save your changes.

Start PAY4WIN.EXE, and login using SYSADMIN and PASSWORD.  You should
have full access.


IV. Additional Notes

This hack has also been proven to work on Novell servers running SQL.
Just copy the database and log files from the server to your local
machine and proceed as above.  Note that you will have to unload the SQL
NLM in order to grab the files.  (You can copy them at will if the
server is running a utility like St. Bernard's Open File Manager).


V. Conclusion

I must admit, this is pretty weak security, especially for something as
important as payroll.  Most companies guard their payroll information
VERY closely.  There are a lot of ways ADP could have made this more
difficult.  Simply encrypting the passwords using a unique number in
each database file would have been enough to make things much more
difficult!

    .-.                             _   _                             .-.
   /   \           .-.             ((___))             .-.           /   \
  /.ooM \         /   \       .-.  [ x x ]  .-.       /   \         /.ooM \
-/-------\-------/-----\-----/---\--\   /--/---\-----/-----\-------/-------\-
/lucky  13\     /       \   /     `-(' ')-'     \   /       \     /lucky  13\
           \   /         `-'         (U)         `-'         \   /
            `-'              the original e-zine              `-'    _
      Oooo                    eastside westside                     / )   __
 /)(\ (   \                       WORLDWIDE                        /  (  /  \
 \__/  )  /  Copyright (c) 1997 cDc communications and the author. \   ) \)(/
       (_/     CULT OF THE DEAD COW is a registered trademark of    oooO
          cDc communications, PO Box 53011, Lubbock, TX, 79453, USA.      _
  oooO        All rights reserved.  Edited by Grandmaster Ratte'.   __   ( \
 /   ) /)(\                                                        /  \  )  \
 \  (  \__/       Save yourself!  Go outside!  Do something!       \)(/ (   /
  \_)                     xXx   BOW to the COW   xXx                    Oooo 

