README
上传用户:nilegod
上传日期:2007-01-08
资源大小:220k
文件大小:24k
源码类别:

网络截获/分析

开发平台:

C/C++

  1. ============================================================================
  2.                                 ettercap 0.4.0                    2001-04-09
  3. ============================================================================
  4.     Even if blessed with a feeble intelligence they are cruel and smart...
  5.        @@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@
  6.        @@        @@@     @@@   @@      @@   @@ @@      @@   @@ @@   @@
  7.        @@@@@@    @@@     @@@   @@@@@@  @@@@@@  @@      @@@@@@@ @@@@@@
  8.        @@        @@@     @@@   @@      @@  @@  @@      @@   @@ @@
  9.        @@@@@@@   @@@     @@@   @@@@@@@ @@  @@@ @@@@@@@ @@   @@ @@
  10.                      Multi purpose sniffer/interceptor
  11.          Required Libraries:              none ;)  (optionally ncurses 4.2)
  12.          Optional Libraries:              openssl  (if you want ssh support)
  13.          Installation:                    configure
  14.                                           make
  15.                                           make install
  16.                          (optional)       make plug-ins
  17.                                           make plug-ins_install
  18. ============================================================================
  19.                                     INTRO
  20. ============================================================================
  21. Kiddie:   A friend of mine told me that it is possible to sniff on a LAN...
  22.           so I bought a switch ;)
  23. NaGoR:    mmhhh....
  24. Kiddie:   Now my LAN is SECURE ! you can't sniff my packets... ah ah ah
  25. NaGoR:    are you sure ? look at ettercap doing its work...
  26. Kiddie:   Oh my god... it sniffs all my traffic !!
  27.           I will use only ciphered connection on my LAN, so ettercap can't
  28.           sniff them ! ah ah ah
  29. NaGoR:    mmhhh....
  30. Kiddie:   Now I'm using SSH.  My LAN is SECURE !
  31. NaGoR:    are you sure ? look at ettercap doing its work...
  32. Kiddie:   shit !!  grrrr...
  33.  "a false sense of security, is worst than insecurity"   -- Steve Gibson
  34.  ehi folks... wake up !  the net is NOT secure !!
  35.  ettercap demostrates that now is the time to encourage research on internet
  36.  protocols to make them more secure.
  37. ============================================================================
  38.                                    LICENSE
  39. ============================================================================
  40.    GNU GENERAL PUBLIC LICENSE.
  41.    see COPYING for details...
  42. ============================================================================
  43.                                    AUTHORS
  44. ============================================================================
  45.    Alberto Ornaghi (ALoR) <alor@users.sourceforge.net>
  46.    Marco Valleri (NaGA) <crwm@freemail.it>
  47. ============================================================================
  48.                               TABLE OF CONTENTS
  49. ============================================================================
  50.    1. DISCLAIMER............................................sez.  1
  51.    2. INSTALLATION..........................................sez.  2
  52.    3. HOW TO USE IT.........................................sez.  3
  53.       3.1   ncurses interface
  54.       3.2   command line
  55.    4. TROUBLESHOOTING.......................................sez   4
  56.    5. TECHNICAL PAPER.......................................sez   5
  57.       5.1   The host list
  58.       5.2   IP based sniffing
  59.       5.3   MAC based sniffing
  60.       5.4   ARP based sniffing
  61.          5.4.1    arp poisoning
  62.          5.4.2    characters injection
  63.          5.4.3    active protocol dissection
  64.          5.4.4    SSH1 man-in-the-middle        NEW !!
  65.    6. PLUG-INS..............................................sez.  6
  66.    7. USELESS INFORMATION...................................sez.  7
  67. ============================================================================
  68. 1>                               DISCLAIMER
  69. ============================================================================
  70.  This software is provided "as is" and without any expressed or implied
  71.  warranties, including, without limitation, the implied warranties of
  72.  merchantability and fitness for any particular purpose.
  73. ============================================================================
  74. 2>                              INSTALLATION
  75. ============================================================================
  76.  The easiest way to compile ettercap is in the form:
  77.     ./configure
  78.     make
  79.     make install
  80.  Now you should be able to run ettercap (it installs as default in /usr/local
  81.  /bin if you don't have it in your path try /usr/local/bin/ettercap)
  82.  There are a lot of useful options in configure: try using --help.
  83.  If you'd like to suid ettercap, enabling thus other users, and not only
  84.  root, to use the program, use --enable-suid before applying suid to ettercap
  85.  with chmod, otherwise it would drop the applied suid.
  86.  If you have problems with plug-ins, disable them by using --disable-plugins.
  87.  If you have installed OpenSSL in a different DIR use --with-openssl=DIR
  88.  If you get an error linking OpenSSL with ettercap, try recompiling OpenSSL
  89.  with "Config shared && make && make install" (on my box it worked ;) )
  90.  If you still have difficulties, send an e-mail message one of the authors
  91.  (alor@users.sourceforge.net or crwm@freemail.it).
  92.  The sourceforge home-site of ettercap could also contain useful information,
  93.  latest bug fixes and updated versions (ettercap.sourceforge.net).
  94.  Bug reports are welcome. Please report problems in the configure/make
  95.  process by including a copy of config.status, config.cache and config.log,
  96.  as well as the pertinent compiler diagnostics. If you have problems in the
  97.  program, please configure with --enable-debug and send also a copy of
  98.  ettercap_debug.log and a short description of your configuration (eg. kernel
  99.  options) when reporting a segfault or other strange behaviors.
  100. ============================================================================
  101. 3>                              HOW TO USE IT
  102. ============================================================================
  103.  There are two main interfaces available, both for text-mode, one in plain
  104.  b/w character interface, and another with ncurses windowish colorful and
  105.  pleasure-full character mode!
  106. 3.1 NCURSES INTERFACE
  107.  Let's start showing you the latter one:
  108.  If ettercap is invoked without options (see later on, for the command line
  109.  options) it will run the ncurses interface (a short delay to scan your LAN
  110.  could be noticed =).
  111.  The main window is divided in 3 subsections: top, middle and bottom.
  112.  In the top window there is the connection diagram, displaying the two
  113.  machines to sniff or to connect and operate to.
  114.  Below you will see the list of known hosts in the current LAN (with hub or
  115.  switch) that you can reach: select a couple to sniff them.
  116.  The two identical columns let you choose the said couple: select with the
  117.  arrow keys an entry representing an ip of an active machine ([enter] will
  118.  do this job =) on the left.
  119.  Then switch to the second column on the right with [tab], and move as usual
  120.  to select the second ip. This will represent the traffic route you would
  121.  like to sniff (and eventually connect/poison).
  122.  Obviously you cannot select the same source and destination, but you are in
  123.  any case not forced to select your IP.
  124.  In the bottom window, there is a sort of status bar, giving you additional
  125.  information about currently selected objects, current status and eventually
  126.  other important hints.
  127.  There are also a lot of other nifty options that are selectable at this point,
  128.  first of all the 'p' plug-in feature (these are separate features, externally
  129.  programmed in this project, with a vast cover of applications, not displayable
  130.  here: there is a special README-PLUGIN for this).
  131.  Or the ability to inspect with the 'c' key, if there is an other "evil" proggy
  132.  in your LAN running, and thus alerting you of possible data interception.
  133.  But remember that throughout all the stages of the program you can always
  134.  press 'h' for help, and a nice help window will show up and list you the
  135.  currently available keys!
  136.  These should be anyway self-explanatory help windows, so probably there is
  137.  no need in reading this sections here, but.. in case.
  138.  You'll notice that the top window will update while selecting source and
  139.  destination ip, and finally show the current status scheme if you connect or
  140.  sniff (respectively pressing 'a' and 's' or 'm')
  141.  IP Based sniffing filters connections looking in the IP header for matching IPs.
  142.  This is the old style, classic method performed by most programs.
  143.  MAC Based sniffing filters connections looking in ETH header for matching MACs.
  144.  This is useful if you want to sniff connections from your local host and a
  145.  remote host through your gateway (simply selecting your host and your gw
  146.  as source and destination).
  147.  Finally there is the connect option, as said, that lets you, if your
  148.  computer results connected to a switched LAN, poison the ARP cache
  149.  permitting you to sniff the traffic on your local net as if you where on
  150.  a network with an hub.
  151.  With this option you can specify one or two host. If you select only one
  152.  host you'll enter the PublicARP mode and you will overtake the selected IP
  153.  with yours.
  154.  If you specify both hosts you will enter the ARPBased Mode that allows you
  155.  to view all the bidirectional traffic between the two hosts.
  156.  In any case, now you enter the second stage: the central main window now will
  157.  list active connections between the two sources IPs, if there are.
  158.  So eventually open connections show up, and you can select them as usual,
  159.  allowing you to enter the third stage: the real sniff! =)
  160.  In the meanwhile you can anyway look at the status of the connections (active,
  161.  closed, etc) and see what type of traffic/port is used (ftp, ssh, web, etc).
  162.  It is also possible to kill an active connection of any type.
  163.  If the application protocol is supported by ettercap you can see, in the
  164.  bottom window, some useful information about the highlighted connection,
  165.  such as USER and PASSWORD used for interactive sessions.
  166.  If you used ARPBased mode you can also start ACTIVE PROTOCOL DISSECTION,
  167.  that allows you to view particular ciphered protocols like ssh.
  168.  Now assume you selected an active connection: two sub-windows appear in the
  169.  main one. They show you source packets passing through your computer before
  170.  reaching destination, you sniff traffic without that they notice it! There are
  171.  different visualization options here: the type of stream can be hex ('x' key)
  172.  or ascii ('a' key) that is specifically decoded for supported
  173.  protocols; some decoders needs the ACTIVE PROTOCOL DISSECTION to be available.
  174.  You can also specify to suspend the stream of data
  175.  (only prevents their visualization, in reality they go forward in background)
  176.  as a sort of scroll-lock (press 's' key), for better data-analysis.
  177.  Finally, there is also a very cool feature: inject.
  178.  With the 'i' key you can also inject some chars in the traffic, choosing the
  179.  direction, being able to add commands to the stream (i.e. you could sniff
  180.  a telnet session and also being able to transmit some commands to the machine
  181.  connected to. Like "ls" or whatever you want, and they have absolutely
  182.  effect as if originated by the source! The same way you could generate fake
  183.  output on the originating machine, not responding to the real output).
  184.  NEW : Injector now supports escape sequences. you can make multiline injection.
  185.  NOTE: remember to terminate your injection with nr if you want to inject
  186.  command to the server.
  187.  There is also an option to log all this beautiful data streams to file, just
  188.  press 'l', then read it down or pass it trough an automated script-filter with
  189.  calm.
  190.  As you will notice, using the tool in visual mode will be simpler when trying
  191.  it on run than by reading this instructions.. help is also a good resource to
  192.  count on while operating.
  193. 3.2 COMMAND LINE
  194.  Well here there are two classical commands that will respond you with an
  195.  answer, being the command list reference: launching ettercap with the --help
  196.  switch and invoking our man page (man ettercap ;).
  197.  ->Some features are available only from visual interface.
  198.  Starting in non interactive mode (-N) there are also available some features
  199.  bound to the interactive mode: you can activate a little help line and change
  200.  visualization mode on the fly (between hex and ascii for example)
  201.  In the same way it is possible to set up a lot of options form the command
  202.  line and see them in interactive mode already set and started.
  203.  Now there is also the possibility to shorten command usage, by specifying
  204.  one or more hosts to sniff (if you are in silent mode, also one or none is
  205.  possible by setting -z option: like sniffit that sniffs from everywhere =)
  206.  Ex:
  207.   ettercap -Nsz  (sniff data from every ip)
  208.   ettercap -NCsz  (collect only users and passwords from every ip)
  209.   ettercap -NCsz ghibli meltemi (collect only from "ghibli" to "meltemi")
  210.  NB: if you had started in interactive mode (without -N) it would have been
  211.      necessary to specify 'r' to refresh the ip host list if you returned
  212.      with 'q' to the first interface, since no list has been generated at
  213.      the beginning due to the -z option.
  214.      ex: ettercap -zs ghibli meltemi          or
  215.          ettercap -zm 00:A0:24:4C:00:F9 00:A0:24:36:00:C2
  216.  Ok, that's all..
  217.  Have fun and await the next versions, including ssh handling, you could do
  218.  some happy jokes to your friends, especially if they are the ones who believe
  219.  that ssh is an absolutely not-sniffable and cryptographically unbreakable
  220.  thing, better on if they also believe in switches doing their job! =)
  221. ============================================================================
  222. 4>                             TROUBLESHOOTING
  223. ============================================================================
  224.  There are really a lot of things that could happen to you as of installing
  225.  this proggy. Thus don't blame us in case of accidents or hours spent trying
  226.  to compile etc.. In this state, till we reach a *very* stable version there
  227.  will be no troubleshooting section, which would be to large and infeasible
  228.  to write down and do the necessary spread out betatests.
  229.  But we'll do our best, try to compile in lots of machines, port it as much
  230.  as possible, and clean up everything. For now the main aspect was to write
  231.  down base ideas and see them work. When the main skeleton is completed
  232.  there will be a lot of fine tune.
  233.  The best thing to do if you need support or help in compiling is to mail us!
  234.  Then we will write down a sort of FAQ and a problem resolve list or todos
  235.  here in this section.
  236.  In raw we'd like to know you that there are problems in particular when
  237.  installing the rpm binary version of ettercap, including ncurses, which
  238.  can easily be miss-detected: try simply to add --nodeps to the rpm line.
  239. ============================================================================
  240. 5>                             TECHNICAL PAPER
  241. ============================================================================
  242. 5.1   THE HOST LIST
  243.  When ettercap starts it makes the list of the hosts that are in the lan.
  244.  Sending one ARP REQUEST for each ip in the lan (looking at the current ip
  245.  and netmask), it is possible to get the ARP REPLYs and than make the
  246.  list of the host that are responding in this lan. With this method even
  247.  windowish hosts, reply to the call-for-reply (they don't reply on broadcast-
  248.  ping).
  249.  Be very careful if the netmask is a class B (255.255.0.0) because ettercap
  250.  will send 255*255 = 65025 arp requests, it takes more than a minute !! (the
  251.  delay between two requests is 1 millisecond)
  252. 5.2   IP BASED SNIFFING
  253.  This is the "old style" sniffing mode.
  254.  It puts the network interface in promisc mode and then sniffs all packets
  255.  matching the ip filter.
  256.  If you are using the ncurses interface, the ip filter is made up of: ip
  257.  source, port source, ip dest, port dest; in both the directions of the
  258.  connection.
  259.  Instead if using the command line, you can make a personalized ip filter.
  260.  You can specify only the source, only the dest or both. each with or without
  261.  an associated port.
  262.    Examples:
  263.      ettercap -N -s ghibli
  264.      ettercap -N -s ghibli:23
  265.   the first will sniff all the connections to the host "ghibli"
  266.   the second only those which are on the port 23
  267.      ettercap -N -s ghibli meltemi
  268.      ettercap -N -s ghibli:23  meltemi
  269.   the first will sniff all the connections between "ghibli" and "meltemi"
  270.   the second only those which are on ghibli:23 coming from "meltemi"
  271. 5.3   MAC BASED SNIFFING
  272.  It puts the network interface in promisc mode and then sniffs all the
  273.  packets that match the mac filter.
  274.  The mac filter is made up giving the IPs of the two hosts. Ettercap will
  275.  scan the host list and associates the correct mac address to the filter.
  276.  In this way specifying the gateway's ip and an host's ip, you will get
  277.  all the connections between the host and the Internet.
  278.    Examples:
  279.    assuming that "meltemi" is the gateway to internet.
  280.      ettercap -N -m ghibli meltemi
  281.    this will return all the connections that "ghibli" makes to remote hosts.
  282. 5.4   ARP BASED SNIFFING
  283.  This method doesn't put the interface in promiscuous mode. It isn't
  284.  necessary because the packets will be sent to us! :) The switch will
  285.  forward the packets to us, so we have a good method for sniffing in
  286.  switched LANs.
  287.  Let's view how this is possible:
  288.  when you select this method, ettercap will poison the arp cache of the
  289.  two hosts, identifying itself as the other host respectively (see the
  290.  next section for this).
  291.  Once the arp caches are poisoned, the two hosts start the connection, but
  292.  their packets will be sent to us, and we will record them and, next, forward
  293.  them to the right side of the connection. So the connection is transparent
  294.  to the victims, not arguing that they are sniffed. The only method to
  295.  discover that there is a man-in-the-middle in your connection, is to watch
  296.  at the arp cache and check if there are two hosts with the same mac address!
  297.  That is how we do, to discover if there are others poisoning the arp cache
  298.  in our LAN, thus being warned, that our traffic is under control! =)
  299.      HOST 1  - - - - - - - - - - - - - - - - - - - -> HOST 2
  300.    (poisoned)                                      (poisoned)
  301.        |                                               ^
  302.        |                                               |
  303.         ------------> ATTACKER HOST  ------------------
  304.                       ( ettercap )
  305.  Legenda:
  306.              - - - ->   the logic connection
  307.              ------->   the real one
  308.  Ok, cool! Though, how can I poison the arp cache ?
  309. 5.4.1    ARP POISONING
  310.  The arp protocol has an intrinsic insecurity. In order to reduce the
  311.  traffic on the cable, it will insert an entry in the arp cache even if it
  312.  hadn't request it. In other words, EVERY arp reply that goes on the wire
  313.  will be inserted in the arp table.
  314.  So, we take advantage of this "feature", sending fake arp replys to the two
  315.  hosts we will sniff. In this reply we will tell that the mac address of the
  316.  second host is the one hard-coded on OUR ethernet card. This host will now
  317.  send packets that should go to the first host, to us, because he carries
  318.  our mac address.
  319.  The same process is done for the first host, in inverse manner, so we have
  320.  a perfect man-in-the-middle connection between the two hosts, legally
  321.  receiving their packets!!
  322.    Example:
  323.      HOST 1:  mac: 01:01:01:01:01:01         ATTACKER HOST:
  324.                ip: 192.168.0.1                    mac: 03:03:03:03:03:03
  325.                                                    ip: 192.168.0.3
  326.      HOST 2:  mac: 02:02:02:02:02:02
  327.                ip: 192.168.0.2
  328.    we send arp replys to:
  329.             HOST 1 telling that 192.168.0.2 is on 03:03:03:03:03:03
  330.             HOST 2 telling that 192.168.0.1 is on 03:03:03:03:03:03
  331.    now they are poisoned !! they will send their packets to us !
  332.    then we receive packets from:
  333.             HOST 1 we will forward to 02:02:02:02:02:02
  334.             HOST 2 we will forward to 01:01:01:01:01:01
  335.    simply, isn't it ?
  336. 5.4.2    CHARACTERS INJECTION
  337.  We have stated that the packets are for us...
  338.  And the packets will not be received by destination until we forward them.
  339.  But what happens if we change them?
  340.  Yes, they reach destination with our modifications.
  341.  We can modify, add, delete the content of these packets, by simply
  342.  recalculate the checksum and substitute them on the traffic.
  343.  But we can do also more: we can insert packets in the connection.
  344.  We forge our packets with the right sequence and acknowledgement number and
  345.  send them to the desired host. When the next packets will pass through us we
  346.  simply subtract or add the sequence number with the amount of data we have
  347.  injected till the connection is alive, preventing the connection to be
  348.  rejected (this until we close ettercap, who maintains sequence numbers
  349.  correct, after program exit, the connection must be RESETTED or all future
  350.  traffic would be rejected, blocking the source workstation network).
  351. 5.4.3 ACTIVE PROTOCOL DISSECTION (for ARPBASED mode)
  352.  To view in strongly-ciphered streams you need to act straight on the stream.
  353.  For example you need to change key-packets (man-in-the-middle technique).
  354.  In particular cases this will result in a fault of the protocol, so pay
  355.  attention using this feature.
  356.  The used method changes from protocol to protocol and is more difficult to
  357.  explain than to code it.
  358.  So I'm sorry but you have to examine the source code if you really want
  359.  to know how it works.
  360. 5.4.4 SSH1 MAN-IN-THE-MIDDLE
  361.  When the connection starts (remember that we are the master-of-packets, all
  362.  packets go through ettercap) we substitute the server public key with one
  363.  generated on the fly and save it in a list so we can remember that this
  364.  server has been poisoned before.
  365.  Then the client send the packet containing the session key ciphered with
  366.  our key, so we are able to decipher it and sniff the real 3DES session key.
  367.  Now we encrypt the packet with the correct server public key and forward it
  368.  to the SSH demon.
  369.  The connection is established normally, but we have the session key !!
  370.  Now we can decrypt all the traffic and sit down watching the stream !
  371.  The connection will remain active even if we exit from ettercap, because
  372.  ettercap doesn't proxy it (like dsniff), after the exchange of the keys,
  373.  ettercap is only a spectator... ;)
  374. ============================================================================
  375. 6>                                 PLUG-INs
  376. ============================================================================
  377.  see README.PLUGINS
  378. ============================================================================
  379. 7>                            USELESS INFORMATION
  380. ============================================================================
  381. Project started on :       2000-11-25
  382. Last stable release :      0.4.0          Our software never has bugs.
  383.                                           It just develops random features.
  384. Published on :             2001-04-09
  385.                                     whenever a code runs it's just obsolete
  386. Editor :                   vi, vim, gvim, mcedit, UltraEdit
  387. greetings to :             The IEEE 802.3  standard  :)
  388.                            ISO/OSI organization
  389.                            Andrew S.Tanenbaum
  390.                            Berkeley University
  391.                            the SiLAB (university lab)
  392.                            JJ corner's PUB
  393. ALoR greetings:            VMWare staff ;)
  394.                            elle (she knows for what...)
  395. NaGA greetings:            Heineken Inc.
  396.                            My MP3 player
  397.                            N-Team
  398.                            MegaBug
  399. fucks to :                 tutte le tipe che se la menano ;)
  400.                            mcedit (it sucks!)
  401. Motto :                    Specialization is for insects, a human being
  402.                            should be able to do anything!
  403. Who we are :               If you think you know us... YOU DON'T.
  404.                            If you don't know us... YOU WILL.
  405. Shakespeare :              question = ( to ) ? be : !be;
  406. 0xABADC0DE==============================================================EC-2K