home *** CD-ROM | disk | FTP | other *** search
-
- ==Phrack Classic==
-
- Volume Three, Issue 32, File #8 of 12
-
-
- +-------------------------------+
- | Inside the SYSUAF.DAT file of |
- +-------------------------------+
-
- +------------------------------------------------------+
- | Digital Equipment Corporation's VMS Operating System |
- +------------------------------------------------------+
-
- -= by =-
-
- -----:> Pain Hertz <:----
-
-
-
- Overview
- ~~~~~~~~
- In this file, I will explain what the System User Authorization File
- is, what information it contains, what the logical and physical characteristics
- of the file are, and how one can manipulate it to reveal and/or modify its
- contents.
-
- Background
- ~~~~~~~~~
- The Virtual Memory System (VMS) Operating System's System User
- Authorization File (SYSUAF) contains the information that determines a given
- user's username, password(s), security priviledges, as well as many other
- similar data which either allow or disallow the user to have the system
- perform certain tasks.
-
- Characteristics
- ~~~~~~~~~~~~~~~
- The SYSUAF.DAT file (UAF) is usually located on the system on the
- device pointed to by the logical SYS$COMMON, and under the [SYSEXE]
- subdirectory. However, if the logical SYSUAF exists, it will point to the
- location and name of the UAF.
-
- The UAF is a binary, indexed data file. It's indexed on 4 keys:
- username, UIC, extended user identifier, and owner identifier. Using
- the VMS ANALYZE utility reveals the following about the UAF:
-
-
- IDENT "01-JAN-1990 13:13:13 VAX/VMS ANALYZE/RMS_FILE Utility"
-
- SYSTEM
- SOURCE VAX/VMS
-
- FILE
- ALLOCATION 24
- BEST_TRY_CONTIGUOUS yes
- BUCKET_SIZE 3
- CLUSTER_SIZE 3
- CONTIGUOUS no
- EXTENSION 3
- FILE_MONITORING no
- GLOBAL_BUFFER_COUNT 0
- NAME "SYS$COMMON:[SYSEXE]SYSUAF.DAT;1"
- ORGANIZATION indexed
- OWNER [SYSTEM]
- PROTECTION (system:RWED, owner:RWED, group:RWED, world:RE)
-
- RECORD
- BLOCK_SPAN yes
- CARRIAGE_CONTROL none
- FORMAT variable
- SIZE 1412
-
- AREA 0
- ALLOCATION 9
- BEST_TRY_CONTIGUOUS yes
- BUCKET_SIZE 3
- EXTENSION 3
-
- AREA 1
- ALLOCATION 3
- BUCKET_SIZE 3
- EXTENSION 3
-
- AREA 2
- ALLOCATION 12
- BUCKET_SIZE 2
- EXTENSION 12
-
- KEY 0
- CHANGES no
- DATA_KEY_COMPRESSION yes
- DATA_RECORD_COMPRESSION yes
- DATA_AREA 0
- DATA_FILL 100
- DUPLICATES no
- INDEX_AREA 1
- INDEX_COMPRESSION yes
- INDEX_FILL 100
- LEVEL1_INDEX_AREA 1
- NAME "Username"
- NULL_KEY no
- PROLOG 3
- SEG0_LENGTH 32
- SEG0_POSITION 4
- TYPE string
-
- KEY 1
- CHANGES yes
- DATA_KEY_COMPRESSION no
- DATA_AREA 2
- DATA_FILL 100
- DUPLICATES yes
- INDEX_AREA 2
- INDEX_COMPRESSION no
- INDEX_FILL 100
- LEVEL1_INDEX_AREA 2
- NAME "UIC"
- NULL_KEY no
- SEG0_LENGTH 4
- SEG0_POSITION 36
- TYPE bin4
-
- KEY 2
- CHANGES yes
- DATA_KEY_COMPRESSION no
- DATA_AREA 2
- DATA_FILL 100
- DUPLICATES yes
- INDEX_AREA 2
- INDEX_COMPRESSION no
- INDEX_FILL 100
- LEVEL1_INDEX_AREA 2
- NAME "Extended User Identifier"
- NULL_KEY no
- SEG0_LENGTH 8
- SEG0_POSITION 36
- TYPE bin8
-
- KEY 3
- CHANGES yes
- DATA_KEY_COMPRESSION no
- DATA_AREA 2
- DATA_FILL 100
- DUPLICATES yes
- INDEX_AREA 2
- INDEX_COMPRESSION no
- INDEX_FILL 100
- LEVEL1_INDEX_AREA 2
- NAME "Owner Identifier"
- NULL_KEY yes
- NULL_VALUE 0
- SEG0_LENGTH 8
- SEG0_POSITION 44
- TYPE bin8
-
- ANALYSIS_OF_AREA 0
- RECLAIMED_SPACE 0
-
- ANALYSIS_OF_AREA 1
- RECLAIMED_SPACE 0
-
- ANALYSIS_OF_AREA 2
- RECLAIMED_SPACE 0
-
- ANALYSIS_OF_KEY 0
- DATA_FILL 71
- DATA_KEY_COMPRESSION 75
- DATA_RECORD_COMPRESSION 67
- DATA_RECORD_COUNT 5
- DATA_SPACE_OCCUPIED 3
- DEPTH 1
- INDEX_COMPRESSION 85
- INDEX_FILL 1
- INDEX_SPACE_OCCUPIED 3
- LEVEL1_RECORD_COUNT 1
- MEAN_DATA_LENGTH 644
- MEAN_INDEX_LENGTH 34
-
- ANALYSIS_OF_KEY 1
- DATA_FILL 7
- DATA_KEY_COMPRESSION 0
- DATA_RECORD_COUNT 4
- DATA_SPACE_OCCUPIED 2
- DEPTH 1
- DUPLICATES_PER_SIDR 0
- INDEX_COMPRESSION 0
- INDEX_FILL 2
- INDEX_SPACE_OCCUPIED 2
- LEVEL1_RECORD_COUNT 1
- MEAN_DATA_LENGTH 15
- MEAN_INDEX_LENGTH 6
-
- ANALYSIS_OF_KEY 2
- DATA_FILL 8
- DATA_KEY_COMPRESSION 0
- DATA_RECORD_COUNT 4
- DATA_SPACE_OCCUPIED 2
- DEPTH 1
- DUPLICATES_PER_SIDR 0
- INDEX_COMPRESSION 0
- INDEX_FILL 2
- INDEX_SPACE_OCCUPIED 2
- LEVEL1_RECORD_COUNT 1
- MEAN_DATA_LENGTH 19
- MEAN_INDEX_LENGTH 10
-
- ANALYSIS_OF_KEY 3
- ! This index is uninitialized - there are no records.
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- Examination
- ~~~~~~~~~~
-
- Generally, an interactive user would use the AUTHORIZE utility to
- modify or examine the UAF, while a program would use the $GETUAI system
- services (get user authorization information service) to examine the file.
- The $GETUAI system services reference provide an excellent description of what
- fields the UAF contains, and how many bytes are used within the file to store
- each of those fields. However, it may not be within your realm of skills to
- program using system services. It would probably be considerably easier to
- use a sector editor/browser to locate values within the UAF. You could use a
- sector editor/browser online (such as VFE.EXE), or you you might choose to
- download the UAF and use an editor/browse for your personal computer.
- Regardless of which method you choose, you will have to know the offset of
- each field within the user authorization file. This is what I have provided
- for you.
-
- The contents of the UAF under VMS release 5.3-1 are as follows:
-
- Offset Description Length
- -----------------------------------------------------------------------------
- 0 Record Header 4
- 4 Username (loginid) 32
- 36 Member UIC - Mem UIC decimal 1 = 0100 2
- Mem UIC decimal 10 = 0A00
- Mem UIC decimal 256 = FF01
-
- 38 Group UIC - Same as format as member UIC 2
-
- Note: UICs as displayed in the VMS environment
- are OCTAL. A UIC of [010,001] would be saved as
- '01000800' in bytes 36-39 (offset).
-
- 40 Nulls 12
- 52 Account name 32
- 84 1 byte - value = length of owner 1
- 85 Owner 31
- 116 1 byte - value = length of device 1
- 117 Device (default disk device) 31
- 148 1 byte - length of default (SYS$LOGIN) directory 1
- 149 Default (SYS$LOGIN) directory name 63
- 212 1 byte - length of default login command file 1
- 213 Default login command file 63
- 276 1 byte - length of default CLI 1
- 277 Default command language interpeter 31
-
- Note: CLI is assumed to be in SYS$SYSTEM directory
- and have an .EXE extension.
-
- 308 1 byte - length of user defined CLI tables 1
- 309 User defined CLI table name 31
- 340 Encrypted primary password 8
- 348 Encrypted secondary password 8
- 356 Number of login fails 2
- 358 Password encryption salt 2
- 360 Encryption algorithm code byte - primary password 1
- 361 Encryption algorithm code byte - secondary password 1
- 362 Password minimum length 1
- 363 Filler (1 byte) 1
- 364 Account expiration date 8
- 372 Password lifetime 8
- 380 Password change date/time - primary password 8
- 388 Password change date/time - secondary password 8
- 396 Last interactive login date/time 8
- 404 Last non-interactive login date/time 8
- 412 Authorize priviledges 8
- 420 Default priviledges 8
- 428 Filler (40 bytes) 40
-
- 468 Login Flags bits as follows: 4
-
- 7 6 5 4 3 2 1 0
- -------------------------
- | | | | | | | | |
- -------------------------
-
- Byte Offset 468:
-
- Bit 0 - User can not use CTRL-Y
- Bit 1 - User is restricted to default
- command interpeter
- Bit 2 - SET PASSWORD command is disabled
- Bit 3 - Prevent user from changing any
- defaults at login
- Bit 4 - User account is disabled
- Bit 5 - User will not receive the login
- welcome message
- Bit 6 - Announcement of new mail is suppressed
- Bit 7 - Mail delivery to user is disabled
-
- Byte Offset 469:
-
- Bit 0 - User is required to use generated
- passwords
- Bit 1 - Primary password is expired
- Bit 2 - Secondary password is expired
- Bit 3 - All actions are audited
- Bit 4 - User will not receive last login
- messages
- Bit 5 - User can not reconnect to existing
- processes
- Bit 6 - User can only login to terminals
- defined by the automatic login
- facility (ALF)
- Bit 7 - User is required to change expired
- passwords
-
- Byte Offset 470:
-
- Bit 0 - User is restricted to captive account
- Bit 1 - Prevent user from executing RUN, MCR
- commands, or foreign commands at the
- DCL level
- Bits 2-7 - Reserved for future use
-
- Byte Offset 471:
-
- Bits 0-7 - Reserved for future use
-
-
- Note On Access Bytes:
-
- Each bit set represents a 1-hour period, from bit 0 as
- midnight to 1 a.m. to bit 23 as 11 p.m. to midnight.
-
- 472 Network access bytes - primary days 3
- 475 Network access bytes - seconday days 3
- 478 Batch access bytes - primary days 3
- 481 Batch access bytes - seconday days 3
- 484 Local access bytes - primary days 3
- 487 Local access bytes - seconday days 3
- 490 Dialup access bytes - primary days 3
- 493 Dialup access bytes - secondary days 3
- 496 Remote access bytes - primary days 3
- 499 Remote access bytes - seconday days 3
-
- 502 Filler (12 bytes) 12
- 514 Prime days 1
-
- Bits 0-7 toggled on represents primedays, respective
- to Mon, Tue, ..., Sun.
-
- 515 Filler (1 byte) 1
- 516 Default base priority 1
- 517 Maximum job queue priority 1
- 518 Active process limit 2
- 520 Max. number of interactive, detached, and batch jobs 2
- 524 Detached process limit 2
- 526 Subprocess creation limit 2
- 528 Buffered I/O count 2
- 530 Timer queue entry limit 2
- 532 AST queue limit 2
- 534 Lock queue limit 2
- 536 Open file limit 4
- 538 Shared file limit 2
- 540 Working set quota 4
- 548 Working set extent 4
- 552 Paging file quota 4
- 556 Maximum CPU time limit (in 10-milliseconds) 4
- 560 Buffered I/O byte limit 4
- 564 Paged buffer I/O byte count limit 4
- 568 Initial byte quota (jobwide logical name table uses) 4
- 572 Filler (72 bytes) 72
-
- Dates and times are stored as 8 bytes representing the number of
- seconds elapsed since November 17, 1858, 12:00:00 a.m.
-
- Earlier versions of the VMS UAF will contain much of the same data,
- which should be at the same offset as listed above.
-
-
- Should you decide to attempt to modify the SYSUAF.DAT file, keep in
- mind that if you download the file, when you upload it, it will not be the
- same as it was before; it will not be an indexed file. You *might* be able
- to create an .FDL file (using ANALYZE/RMS/FDL SYSUAF.DAT), and use that .FDL
- file to convert it back to an indexed file
- (with CONVERT/FDL=SYSUAF.FDL UPLOAD_UAF.DAT NEW_UAF.DAT), but chances that it
- will contain the proper indexing and file attributes are slim. Remember when
- altering the SYSUAF.DAT file to keep a copy around (on the system) in case
- you need to repair the damage.
-
-
- -PHz
-
- Feel free to make any comments or corrections to the following address:
-
- [phz@judy.indstate.edu]
- _______________________________________________________________________________
-