home *** CD-ROM | disk | FTP | other *** search
/ Hacker Chronicles 1 / HACKER1.ISO / miscpub1 / modernz.004 < prev    next >
Text File  |  1992-09-26  |  20KB  |  771 lines

  1.  
  2.  
  3.        A Beginner's Guide To Unix
  4.        --------------------------
  5.  
  6. The information contained in this file
  7. is by no means new or original. I was
  8. simply asked to compile some basic
  9. commands and concepts for the access
  10. and use of Unix systems. I would like
  11. to give credit to the many other files
  12. which I have gained this information
  13. from, and to the people who have helped
  14. me learn what I know today.
  15.  
  16. I will not cover any detailed or
  17. complicated features of Unix. I am
  18. merely going to provide the means to
  19. access low-security systems and
  20. navigate the shell.
  21.  
  22. Access:
  23. -------
  24.  
  25. All Unix systems are provided with
  26. default accounts. They are used for
  27. system administration and such. Many
  28. system operators are too lazy or naive
  29. to remove them. You may find the
  30. following accounts on a system, with no
  31. passwords:
  32.  
  33. daemon
  34. uucp
  35. bin
  36. adm
  37. sysadm
  38. admin
  39. sysadmin
  40. nuucp
  41. sync
  42.  
  43. Others may have been added, such as:
  44.  
  45. user
  46. guest
  47. demo
  48. test
  49. public
  50. help
  51. field
  52. system
  53. operator
  54.  
  55. You can also try common first or last
  56. names (john,fred,smith,etc...). Be sure
  57. to use lowercase for the login name. If
  58. you enter a capital letter as the first character, the system will assume that
  59. you terminal is incapable of displaying
  60. lowercase. From then on, in order to
  61. enter capital letters you must precede
  62. each by a "\". This can become quite
  63. annoying, and you will probably never
  64. see an account with a capital letter as
  65. the first character.
  66.  
  67. Of the above defaults, the uucp or
  68. nuucp accounts are often used for Unix
  69. to Unix communications (uucp stands for
  70. Unix to Unix CoPy). If this is the
  71. case, the system will give send the
  72. uucp identifier, "Shere". In this case,
  73. the account is basically useless
  74. unless you can call via another system
  75. through the uucp command.
  76.  
  77. The sync account is a self-running Unix
  78. management account. If present, it will
  79. run a few housekeeping chores and log
  80. off. The only reason I included this is
  81. that many systems provide a greeting
  82. message or something of the sort when
  83. you log on as sync. Occasionally you
  84. can obtain information which will help
  85. you find an account.
  86.  
  87. If you cannot get in via the above
  88. methods, try using "who". If present,
  89. it will display a list of all accounts
  90. currently online. You can try those
  91. and hope they have no password.
  92.  
  93. If you are desperate, just hack
  94. blindly. Often the login name and
  95. password are the same. You can also
  96. try initials (as in names...rlb,jhs,
  97. etc...).
  98.  
  99. Once you are in:
  100. ----------------
  101.  
  102. If you make it through the front door,
  103. you do not necessarily have access to
  104. the shell. Often accounts have programs
  105. run automatically for specific users,
  106. such as system administration programs
  107. (useful), accounting programs, etc...
  108. In this case, you can try to break out
  109. of the program (either through a menu
  110. option or a loophole). Try various
  111. escape/break related control characters
  112. (escape [ascii 27], ctrl-c [ascii 3],
  113. etc...).
  114.  
  115. When you are in the shell, you will be
  116. greeted by one of two prompts. Either
  117. a "$", denoting basic access, or a "#",
  118. denoting superuser access. If you have
  119. superuser access, most of your work may
  120. be done (depending on other security
  121. measures that have been taken).
  122. Either way, the following will help
  123. you get higher access.
  124.  
  125. First, you'll need some basic commands
  126. for moving around:
  127.  
  128. stty
  129.    This command sets your terminal
  130.    characteristics. Before you attempt
  131.    anything else, you should set some
  132.    important ones. First, your delete
  133.    character. Many systems do not use
  134.    the common ctrl-h [ascii 8]. Also,
  135.    the delete on your computer may not
  136.    be the standard ctrl-h. To set your
  137.    delete character, type:
  138.  
  139.    stty erase (character)
  140.  
  141.    Do not use the parentheses. Spacing
  142.    is important. You can replace
  143.    (character) by hitting your own
  144.    delete key, or typing a control key
  145.    sequence.
  146.  
  147.    If you would like to enter something
  148.    a bit more visual to reassure
  149.    yourself, you can use:
  150.  
  151.    stty erase \^(character)
  152.  
  153.    To enter a control character without
  154.    actually hitting control. Replace
  155.    character with the desired control
  156.    character. Ex:
  157.  
  158.    stty erase \^h
  159.  
  160.    Sets the erase character to ctrl-h.
  161.  
  162.    If you make a mistake doing this,
  163.    hit return and start over
  164.    (obviously if the system does not
  165.    know your erase character, you
  166.    cannot edit your mistakes).
  167.  
  168.    Once your control character is set,
  169.    you will want to set your break
  170.    character. This is vital for file
  171.    editing, which we will cover
  172.    shortly. To set the break character,
  173.    type:
  174.  
  175.    stty intr (character)
  176.  
  177.    The same options as the delete
  178.    character apply.
  179.  
  180.    To view the current setting, simply
  181.    enter stty by itself. Often, the
  182.    system will already be configured to
  183.    your liking. Occasionally, the stty
  184.    command will not display the erase
  185.    or break (intr) characters, in which
  186.    case you should enter them to be
  187.    sure. All control characters will be
  188.    displayed in the ^(character)
  189.    format.
  190.  
  191. ls
  192.    This is the list-files command. It
  193.    will show the names of all non-
  194.    hidden files in the current
  195.    directory. The display will either
  196.    be a single list or multi-column
  197.    display. The command lc toggles
  198.    between the two. In either case, the
  199.    files will be sorted alphabetically
  200.    (numbers first, followed by most
  201.    punctuation symbols, then capital
  202.    letters, and finally lowercase
  203.    letters).
  204.  
  205.    ls has many options, which I will
  206.    cover later.
  207.  
  208. pwd
  209.    Displays the current directory path
  210.    from the root directory (/).
  211.  
  212. cd
  213.    Change directory. Those familiar
  214.    with the MS-DOS environment will
  215.    have no trouble with this command.
  216.    To change directories, simply supply
  217.    a path from the root directory.
  218.    To go to the "lib" directory, within
  219.    the "usr" directory, you would
  220.    enter:
  221.  
  222.    cd /usr/lib
  223.  
  224. cat
  225.    Displays a file. Often it is
  226.    difficult to differentiate between
  227.    text files and data files. If you
  228.    wish to abort the display, type
  229.    your break character.
  230.  
  231.    Cat requires the full pathname to
  232.    access files outside the current
  233.    directory, but for files within
  234.    the current directory, the filename
  235.    will suffice.
  236.  
  237.    Ex:
  238.  
  239.    cat /etc/passwd
  240.  
  241.    Will display the passwd file within
  242.    the etc directory. This file is
  243.    present on all systems. It is
  244.    immensily useful in gaining higher
  245.    access (basically, it is necessary
  246.    to gain any access).
  247.  
  248. These commands will help you for now.
  249. After setting your terminal options,
  250. enter:
  251.  
  252. cd /etc
  253.  
  254. We will be doing most of our work in
  255. there for the time being. You should
  256. have had your buffer on long before
  257. this on the system, but turn it before
  258. executing the following command if you
  259. haven't:
  260.  
  261. cat /etc/passwd
  262.  
  263. Often these files are quite large, so
  264. after a while you may want to abort it.
  265. Often what you are looking for will be
  266. within the first few lines.
  267.  
  268. Each line of the passwd file represents
  269. an individual user. There are seven
  270. fields to each entry. A typical entry
  271. looks like this:
  272.  
  273. user:x:100:100:Elmo:/usr/user:/bin/sh
  274.  
  275. The first field is the login ID. The
  276. second is the password field. In newer
  277. releases, it will contain an "x". Older
  278. releases may contain the actual
  279. encrypted password (a string of
  280. seemingly random characters). On new
  281. systems the encrypted password are
  282. found in the /etc/shadow file. The
  283. third field is the user ID number.
  284. Fourth is the group ID number (more
  285. on groups later). Fifth is merely a
  286. comment about this user (often their
  287. name, or in an administrative account,
  288. its duties). Sixth is the home
  289. directory. The system will place you
  290. in your home directory when you log on.
  291. The final field contains the path and
  292. file names for the default shell or
  293. program. If this field is empty, the
  294. system defaults to /bin/sh.
  295.  
  296. You cannot gain a user's password via
  297. this file. You may be able to obtain
  298. access through a higher account,
  299. however. When looking for high-level
  300. accounts, you will want to examine the
  301. fourth field. The lower numbers often
  302. denote administrative accounts. The
  303. group "root" belongs to is most likely
  304. what you will want.
  305.  
  306. To discover more about the groups, view
  307. the /etc/group file. This contains the
  308. group names, the encrypted password
  309. required to change into/out of this
  310. group (almost always "NONE"), the group
  311. ID number (to compare to the passwd
  312. file), and a list of the group's
  313. members.
  314.  
  315. You will want to scan the passwd and
  316. group files to find any accounts that
  317. belong to the same group as root, or
  318. a group which root is in. Often root
  319. will be the only member of its group,
  320. so you will have to look for other
  321. administrative account groups (those
  322. containing such accounts as adm,admin,
  323. sysadm,sysadmin and so on).
  324.  
  325. Once you have found these accounts,
  326. you can attempt to gain their access.
  327. The command:
  328.  
  329. su (login ID)
  330.  
  331. allows you to essentially "become" that
  332. user. Replace (login ID), of course,
  333. with the account you want to assume.
  334. If the account has no password, the
  335. process is automatic. Otherwise, you
  336. will be prompted for a password. You
  337. can try the login ID as a password, but
  338. this may not work. If it does, make a
  339. note of it. Otherwise, you can try
  340. other methods, or go on to another
  341. account.
  342.  
  343. Hopefully, you will find an account
  344. with no password. If you have found
  345. an older system, without the
  346. /etc/shadow file, an empty password
  347. field (::) will tell you immediately
  348. which accounts do not have passwords.
  349. If it is a newer system, it will
  350. contain an "x" regardless of the
  351. presence of the password status.
  352.  
  353. If you find yourself in this dilemna,
  354. you may still be able to find an list
  355. of those accounts without passwords.
  356.  
  357. If you have the superuser ("#") prompt,
  358. you may be able to read the /etc/shadow
  359. file. The format for this file is:
  360.  
  361. login ID:(encoded pw):6480:14:28
  362.  
  363. The first field is the same as the
  364. login ID found in the /etc/passwd file.
  365. Each entry in /etc/passwd should have
  366. a corresponding one in /etc/shadow. The
  367. second field will be blank, denoting
  368. no password, or contain the
  369. afformentioned "random" characters.
  370. Third is a numeric code describing
  371. when the password was last changed.
  372. Fourth and fifth are the minimum and
  373. maximum number of days between
  374. mandatory password changes. Often the
  375. last two fields are empty, which means
  376. users are not required to change thier
  377. passwords.
  378.  
  379. Here, again, you should look for any
  380. accounts without passwords, and
  381. examine the group file as mentioned.
  382.  
  383. Now, hopefully, you will have some
  384. decent access. Many of the accounts
  385. with no password are that way for a
  386. reason - they do not allow shell
  387. access; but that never stopped anyone.
  388.  
  389. If you discover an account that runs
  390. a program and then logs off, or runs
  391. a program which allows you to
  392. interact in a boring way, you can use
  393. this to your advantage. Look in the
  394. seventh field of this account's passwd
  395. information. It will contain the
  396. path and filename of the program being
  397. run.
  398.  
  399. At this point, security on most systems
  400. is extremely low. Many system operators
  401. are sure that by stopping you from
  402. directly getting access, they have
  403. stopped you totally. By "tricking" the
  404. system, you can get access indirectly.
  405.  
  406. If you find a program being run, go
  407. back to the account which gave you
  408. shell access. Then enter the directory
  409. where the program was (do not include
  410. the file "/" and the filename). You
  411. want to change the filename of the
  412. program. To do this, type:
  413.  
  414. mv (filename) (backup filename)
  415.  
  416. To change /usr/prog to /usr/prog.b, you
  417. would enter:
  418.  
  419. mv /usr/prog /usr/prog.b
  420.  
  421. Make sure you remember the filename
  422. you give it. It is also a good idea
  423. to keep it in the same directory. Now,
  424. you have to create a dummy file to
  425. replace it. We will have to use the
  426. "ed" file editor to do this. MAKE SURE
  427. YOU HAVE SET YOU BREAK CHARACTER. You
  428. cannot use ed without having a break
  429. character. To make the file, type:
  430.  
  431. ed (filename)
  432.  
  433. Where (filename) is the name of the
  434. file you just renamed. Use the OLD name
  435. (the one in the passwd file)! ed will
  436. respond with:
  437.  
  438. ?(filename)
  439.  
  440. meaning the file does not exist yet.
  441.  
  442. Some basic ed commands are:
  443.  
  444. q
  445.    Quit. If you attempt to quit after
  446.    making changes, ed will not quit
  447.    until you hit "q" again (this is to
  448.    remind you to save changes).
  449. w
  450.    Write file (saves all the changes
  451.    you make).
  452. ,p
  453.    Displays all lines.
  454. /(string)
  455.    Searches the buffer for (string),
  456.    and displays that line.
  457. a
  458.    Add lines (starting at the current
  459.    line).
  460. i
  461.    Insert lines at the current line.
  462. d
  463.    Delete the current line.
  464. h
  465.    Turns help on (shows verbose error
  466.    messages).
  467.  
  468. Entering a line number will bring you
  469. to that line. When editting a file
  470. which already exists, ed will show you
  471. the current number of bytes in the file
  472. rather than "?(filename)". If you
  473. attempt to write a file, and ed replies
  474. with "?(filename)", you do not have
  475. access to write that file.
  476.  
  477. Now, back to the dummy file. Type "a"
  478. to add lines. Enter:
  479.  
  480. echo "Blah"
  481. /bin/sh
  482.  
  483. Then, after pressing return on the
  484. /bin/sh line, type your break
  485. character. Write the file and quit the
  486. editor. You now have your dummy program
  487. set up. The command "echo" is a simple
  488. print command. You can enter as many
  489. as you like, or none at all. They are
  490. merely to reassure you that your
  491. program is running. The important part
  492. of this is the "/bin/sh", which runs
  493. the shell program.
  494.  
  495. You must now give all users access to
  496. your program, so the account will be
  497. able to use your newly created
  498. program. Type:
  499.  
  500. chmod +rwx
  501.  
  502. This will give read, write, and execute
  503. permissions to all users (more on
  504. permissions some other day).
  505.  
  506. You should now logon again as the
  507. account which uses this program.
  508. If you did everything right, you should
  509. now have control of the shell,
  510. hopefully with superuser access ("#"
  511. prompt). If you still do not have
  512. superuser access, go back and try
  513. something else. Be sure to do the next
  514. few steps whether it works or not, to
  515. insure your continued use of the
  516. system. Delete your dummy program by
  517. typing:
  518.  
  519. rm (filename)
  520.  
  521. Be sure to include the directory path
  522. in the filename, as before. Now,
  523. rename the old file back to its
  524. original name (just reverse the
  525. filenames in the previous rename
  526. command).
  527.  
  528. Now everything is back to normal. If
  529. you did not get access, you will have
  530. to go back to your old account to set
  531. the files back to normal. Make sure you
  532. do this, or you may cause damage to the
  533. system. This will result in higher
  534. security. Also, real hackers never
  535. damage systems for without cause.
  536. Laziness is not an excuse.
  537.  
  538. If you are still without decent access,
  539. you will have to consult another file.
  540. I may write another soon on more ways
  541. to gain access, but for now, this
  542. should help enough people. From now on,
  543. I will assume you have achieved
  544. superuser access within an
  545. administrative group. You will most
  546. likely want an account of your own now.
  547. Use the ed command to edit the
  548. /etc/passwd file. Somewhere in the
  549. mid-beginning section (within the first
  550. 4-12 lines), add an account using one
  551. of the default account not already
  552. present (from the first list, if
  553. possible), or commandeer an unused (be
  554. sure it is unused) default account
  555. already there.
  556.  
  557. Set you ID number and group to those
  558. of the root account (usually 0:3).
  559. Set your directory wherever you like,
  560. and set the shell filename to either
  561. /bin/sh, or leave it blank. In the
  562. password (second) field, what you
  563. enter depends on the system. If it is
  564. an older system where the encrypted
  565. passwords are stored in the passwd
  566. file, just enter whatever password you
  567. like there. The system will encrypt it
  568. for you when you save it. If it is the
  569. newer "x" system, put an "x" there, and
  570. do the following, otherwise skip this.
  571.  
  572. New system users will have to enter
  573. the command:
  574.  
  575. /etc/pwconv
  576.  
  577. This command will recreate the
  578. /etc/shadow file based on the
  579. information in the passwd file. Just
  580. to be sure, ed the shadow file, and
  581. leave the password field blank for
  582. your newly created account (use the
  583. /(string) command within ed to jump
  584. directly to your login ID).
  585.  
  586. Now, you can call back as your new
  587. account. You should enter:
  588.  
  589. passwd
  590.  
  591. to create a password for your account
  592. if it doesn't already have one.
  593.  
  594. If all has gone well, you now have an
  595. account of your own. I will now give
  596. a list of other commands which you can
  597. play around with.
  598.  
  599. Unix commands:
  600. --------------
  601.  
  602. banner (string)
  603.    This is a "fun" command, which will
  604.    take (string) and expand it into
  605.    block letters on your display.
  606.  
  607. write (user)
  608.    Will send a message to another user.
  609.    After entering the command, the
  610.    system will wait for you to type a
  611.    message and terminate it with your
  612.    eof character. Change your eof
  613.    character by entering:
  614.  
  615.    stty eof (character)
  616.  
  617. wall
  618.    Like write, but sends to all users.
  619.  
  620. who
  621.    Displays a list of everyone online.
  622.  
  623. mail (user)
  624.    Send email to any user in the passwd
  625.    file. To read your mail, just type
  626.    mail.
  627.  
  628. exit
  629.    Logout of the system. I should have
  630.    mentioned this before, but I forgot.
  631.    You can also use your eof
  632.    character at the shell prompt to
  633.    logout.
  634.  
  635. echo
  636.    Prints text or variables, as shown
  637.    before.
  638.  
  639. env
  640.    Display all variables in your
  641.    environment. More on shell
  642.    variables soon.
  643.  
  644. rmdir (directory)
  645.    Delete a directory.
  646.  
  647. mkdir (directory)
  648.    Make a directory.
  649.  
  650. cp (original) (backup)
  651.    Copy a file.
  652.  
  653. grep (string) (filename)
  654.    Searches through (filename) until
  655.    it finds (string), and then
  656.    displays the entire line (string)
  657.    was found on.
  658.  
  659. date (time & date)
  660.    Alone, date displays the time and
  661.    date. It can also be used to set
  662.    it.
  663.  
  664. cal (date)
  665.    Alone, cal displays a calendar of
  666.    the current month. With optional
  667.    month and year, it will display
  668.    any year from 1 to 9999.
  669.  
  670. There are many more commands, but to
  671. explain them all could take forever.
  672. Most systems contain online help files
  673. which you can access by typing either:
  674.  
  675. man (command)
  676.  
  677. or:
  678.  
  679. help (command)
  680.  
  681. For a list of commands, look in the
  682. various "bin" directories. They
  683. contain the actual programs.
  684.  
  685. Variables:
  686. ----------
  687.  
  688. The shell allows the use of variables.
  689. All variables are represented by
  690. capital letters. You can create your
  691. own, or view/change standard system
  692. variables. Some standard variables are:
  693.  
  694. PATH
  695.    This will show the order the shell
  696.    searches in to find commands. You
  697.    will most likely find a number of
  698.    directories ending in "bin". An
  699.    example could be:
  700.  
  701.    :/bin:/usr/bin:/usr/lib/bin:/etc
  702.  
  703.    This means that when you type a
  704.    command, the system checks to
  705.    directories in that order before
  706.    finally giving up and reporting an
  707.    error if the command is not found
  708.    (All commands are files).
  709.  
  710. PS1
  711.    This is the main shell prompt,
  712.    usually "$" or "#", depending on
  713.    your access. You can change this
  714.    to whatever you like.
  715.  
  716. TERM
  717.  
  718.    Some systems keep track of what
  719.    type of terminal you are using, for
  720.    use in formatting output (usually
  721.    through other programs).
  722.  
  723. LOGNAME
  724.    The login ID you are using.
  725.  
  726. HOME
  727.    Your home directory.
  728.  
  729. TZ
  730.    Timezone.
  731.  
  732. MAIL
  733.    The file your mail is sent to.
  734.  
  735. There are others, but they tend to vary
  736. with the account. Enter the env command
  737. to display the variables in use.
  738.  
  739. Variables you create within shell
  740. programs (such as the dummy program
  741. that was discussed before) retain thier
  742. values for the life of the program
  743. only (they do not affect the other
  744. shell variables).
  745.  
  746. You can change a variable like this:
  747.  
  748. TERM=ansi
  749.  
  750. Whenever you want to view a variable,
  751. or use it for another purpose, precede
  752. it with a "$". Ex:
  753.  
  754. echo $LOGNAME
  755.  
  756. will display your login ID.
  757.  
  758. Misc:
  759. -----
  760.  
  761. I seem to have run out of memory, so
  762. forget it for now. Hopefully I'll write
  763. so more soon...
  764.  
  765.          - Midnite Raider
  766.  
  767.  
  768.  
  769. 
  770. Downloaded From P-80 International Information Systems 304-744-2253 12yrs+
  771.