CIS 551 / TCOM 401

3/23 2006

Lecture 18:

SMTP, NATs, and Firewalls
Scribed by Varun Sarin and Reetika Jain


Overview
Last week- TCP/ UDP and denial of service attacks.
Today-
1) TCP/UDP are one below the application layer (HTTP, HTML)
2) Mail Transfer Protocol as example.
3) Dealing with network attacks:
  • Network Address Translation
  • Firewalls
        Protocol stack revisited
        The view shown in the slide is the standard view of the network protocol stack.
        In actuality, they are compressed. Last 3 layers are handled in hardware and
        low level OS code. Session and Presentation has to do with marshalling of
        data. Most interesting layer to an application developer is the topmost layer.


        Common Features
        All the applications in the application layer share certain common features.
        They are request/reply protocols.
        Example: Mail server: The client is present on a local machine.
        We go through a certain protocol:
      • Client connects to the server
      • Server sends an OK message
      • Client sends required information to server

        HTTP: Protocol consists of a set of queries.
        Designed to handle fixed set of messages.
        We need to come up with a particular data format.
      • The body is ASCII text.
      • Data representation - Messages and data they contain are human readable.
        Can interact with mail server with telnet (if you know the mail protocol)
        Security - can't really encrypt data. Have to wrap it or do encryption at a lower level.
        That is another problem because the encryption program doesnt really doesn't know what
        it is encrypting.



      • SMTP
        Data format RFC822. Adopted around 1982.
        MIME - Couple of side protocols/encoding. Mail protocol works with only ASCII text. If we
        want to embed something - must be ASCII. They use 6 bit ASCII. Some type of binary data.
        MIME maps the binary data to ASCII characters. More interesting are MIME commands.
        Has some header data - length, type of encoding etc.
        It lets you abuse the system. Gets a mail with attachment - has a header - with MIME how to
        deal with it (remote service, save a file etc.)


        RFC822 Headers
        Tells the format of the protocol. Bunch of "type: value".The slide shows many of the well known
        types. Lots of others that mail clients use and you can make your own values as well.
        Security lapse lies in the fact that you can set the FROM line, date etc. to anything you want.


        Example
        3 attachments in mail. Information about MIME version, header information is the first part. Content-
        type: multipart/mixed- Bunch of sub-MIME attachments. Need to know where attachments end - random
        strings with dashes. Metadata that could be abused in name= " ".
        Inline- actual data lives here. Here we can specify another protocol to figure out data.


        SMTP security
        No authentication (spam). Authenticated email - complicated. sendmail - earliest internet worms - exploited
        bugs in sendmail (1986, buffer overflow).
        sendmail - responsible for buffering , storing - lots of header, data processing aspects
        lots of buffers - most of which are subject to external inputs.
        Concurrent program - makes it more complicated
        sendmail - needs to write into all private directories, must have strong privileges (distributed part of protocol).
        properties - Commonly used, written in C, needs privileges, deals with unverifiable data.


        MIME security
        Less familiar, attachment - inline attachments. can send .exe so client program (if not very secure) runs the
        program automatically. Other weaknesses - send message as external link - give it a name and satisfy a site
        and access type and connect to a remote machine on directory and contents of the message is empty. Abused
        by - instead give /etc/passwd or .login - if you save it - can overwrite an important file. Also since it points to a
        remote machine - this is unsafe.

        NATs and Firewalls
        Major defences - put reference monitor in network that regulate access control. isolate pieces of the network.
        NAT - orginally designed as a way of breaking up IP address space.
        both let you filter network technologies.
        Where do you do the filtering? possible places - spam - on the mail server, client as well (set your own policy)

        Kinds of firewalls
        personal firewalls - came in when you installed windows. (application firewalls - run locally - for a single machine)
        filtering firewalls - not as configurable by the user, able to take in account more information about application running on
        the machine. know specific information about the user as well.
        NAT - it makes a single IP address stand for a bunch of machines internally to the NAT and to the rest of the world it looks
        like one machine. Violates the global IP rule.
        proxy based - like a filter based firewall but it resides on the router. Operates at application level. reconstruct TCP/HTTP information
        that is carried through them. Pretends to be a web server and web client.

        NAT
        every host has a unique IP (originally) to get around that problem.
        NAT - gives it an IP. behind it uses a completely different address space.
      • used in very small networks
      • works at IP layer
      • trick - information about ports. changes port information

        Network address translation
      • Makes use of a network address translator, which uses a completely different address space
      • It is used in small networks, typically home networks
      • It works at the IP layer
      • It was fundamentally designed to provide illusion of more addresses then there actually are

      • NAT maintains a table of the form Client IP, Client Port, NAT identifier
      • For outgoing packets, the source IP is replaced with NAT’s IP and Client port is replaced with NAT’s ID. This is done using the fact that you can’t authenticate source address in IP to get extra security
      • For incoming packets, the table is referred again for replacing certain information

      • It’s called a Network Address Translator cause it translates addresses inside the network to its own address
        NAT ID’s should not be collected hence the table entries expire after 2-3 minutes to allow them to be garbage collected

        Benefits of NAT
      • Connections to the outside can only be established from the inside
      • NAT’s have to be explicitly configured to do port forwarding
      • NAT’s can simplify network administration by dividing the network into smaller chunks
      • NAT’s force all traffic to go through one point and hence allows for traffic logging

      • Drawbacks of NAT
      • Rewriting IP addresses isn’t easy
      • Checksum needs to be recalculated in order to guarantee integrity of data, which may cause delay
      • NAT may not work with all protocols
      • NAT provides for limited filtering of packets

      • Note : Most wireless routers are NAT’s

        Firewalls
        Gateway is a router/machine connecting two networks that runs the filtering software
        Filters protect against bad packets. Both incoming and outgoing packets must be filtered Provides protection to the inside network from outside access while providing them outside services
        Filtering firewalls use IP information. The firewall can be configured using the source, destination, source port, destination port and flags information from the IP header. Some firewalls keep state about open TCP connections which allows for conditional filtering rules to be applied.
        Note : Firewalls can be subject to Denial of Service attacks

        A TCP connection is established by means of a Three-way handshake, which includes a SYN packet, SYN+ACK packet and an ACK packet
        If you want to break the TCP connection then any one of the three packets could be dropped

        Ports
      • Ports are used distinguish applications and services on a machine
      • The low numbered ports are reserved for server listening while the high numbered ports are assigned for client requests