Intrusion Detection Working Group                               D. Curry
Internet Draft                                                       ISS
Document: draft-ietf-idwg-idmef-xml-02.txt                 December 2000
Category: Informational


               Intrusion Detection Message Exchange Format
                            IDMEF Data Model
        Extensible Markup Language (XML) Document Type Definition


                               David A. Curry
                      Internet Security Systems, Inc.
                                davy@iss.net

                                Herve Debar
                             France Telecom R&D
                        herve.debar@francetelecom.fr

                               Ming-Yuh Huang
                             The Boeing Company
                         Ming-Yuh.Huang@boeing.com

Status of this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026 [1].

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups. Note that other
   groups may also distribute working documents as Internet-Drafts.
   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time. It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.











Curry              Informational - Expires June 2001           [Page 1]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

Abstract

   The purpose of the Intrusion Detection Message Exchange Format
   (IDMEF) is to define data formats and exchange procedures for sharing
   information of interest to intrusion detection and response systems,
   and to the management systems that may need to interact with them.
   The goals and requirements of the IDMEF are described in [2].

   This Internet-Draft describes a proposed data model to represent the
   information exported by the intrusion-detection systems, including
   the rationale for this model, and a proposed implementation of this
   data model, using the Extensible Markup Language (XML) [3]. The
   rationale for choosing XML is explained, a Document Type Definition
   (DTD) is developed, and examples are provided.

   An earlier version of this implementation was reviewed, along with
   other proposed implementations, by the IDWG at its September 1999 and
   February 2000 meetings. At the February meeting, it was decided that
   the XML solution was best at fulfilling the IDWG requirements. The
   rationale for this decision is presented in [4].

































Curry              Informational - Expires June 2001           [Page 2]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

Table of Contents

   1. Introduction...................................................6
   2. Conventions used in this document..............................6
   3. Rationale for the IDMEF Data Model.............................7
   3.1. Problems addressed by the data model.........................7
   3.2. Design goals.................................................8
   3.2.1. Representing events........................................8
   3.2.2. Content driven.............................................8
   3.2.3. Relationship between alerts................................9
   3.3. UML Overview.................................................9
   3.3.1. Relationships..............................................9
   3.3.1.1. Inheritance Relationship.................................9
   3.3.1.2. Aggregation Relationship................................10
   3.3.1.3. Multiplicity Indicator..................................10
   3.3.2. Types and default values..................................11
   4. The Data Model................................................12
   4.1. Data model overview.........................................12
   4.2. The core of the data model..................................13
   4.2.1. The ALERT class...........................................15
   4.2.2. The TOOLALERT class.......................................16
   4.2.3. The CORRELATIONALERT class................................16
   4.2.4. The OVERFLOWALERT class...................................16
   4.2.5. The ANALYZER class........................................17
   4.2.6. The CLASSIFICATION class..................................17
   4.2.7. The ADDITIONALDATA class..................................18
   4.2.8. The TARGET class..........................................19
   4.2.9. The SOURCE class..........................................20
   4.2.10. The support classes......................................20
   4.2.10.1. The IDENT class........................................21
   4.2.10.2. The ADDRESS class......................................22
   4.2.10.3. The USER class.........................................23
   4.2.10.4. The NODE class.........................................25
   4.2.10.5. The PROCESS class......................................26
   4.2.11. The SERVICE class........................................27
   4.2.11.1. The WEBSERVICE class...................................27
   4.2.11.2. The SNMPSERVICE class..................................28
   4.3. Extension of the data model.................................28
   4.3.1. Extension by aggregation..................................29
   4.3.2. Extension by subclassing..................................29
   5. Arguments for the realization of the class hierarchy in XML...30
   5.1. The Extensible Markup Language..............................30
   5.2. Rationale for Implementing IDMEF in XML.....................30
   5.3. Relationship to the IDMEF Class Hierarchy...................31
   6. Use of XML in the IDMEF.......................................33
   6.1. The IDMEF Document Prolog...................................33
   6.1.1. XML Declaration...........................................33
   6.1.2. XML Document Type Definition (DTD)........................33
   6.1.3. IDMEF DTD Formal Public Identifier........................34
   6.1.4. IDMEF DTD Document Type Declaration.......................34
   6.2. Character Data Processing in XML and IDMEF..................35
   6.2.1. Character Entity References...............................36

Curry              Informational - Expires June 2001           [Page 3]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   6.2.2. Character Code References.................................36
   6.2.3. White Space Processing....................................36
   6.3. Languages in XML and IDMEF..................................37
   6.4. Unrecognized Tags in IDMEF Messages.........................37
   6.5. Digital Signatures..........................................38
   7. IDMEF Data Types..............................................39
   8. Structure of an IDMEF Message.................................41
   8.1. The IDMEF-Message Root Element..............................41
   8.2. The Message Type Elements...................................41
   8.2.1. Alert.....................................................42
   8.2.1.1. CorrelationAlert........................................43
   8.2.1.2. OverflowAlert...........................................43
   8.2.1.3. ToolAlert...............................................43
   8.2.2. Heartbeat.................................................44
   8.3. Time Elements...............................................44
   8.3.1. Time......................................................44
   8.3.2. DetectTime................................................45
   8.3.3. AnalyzerTime..............................................46
   8.4. High-Level Entity Identification Elements...................46
   8.4.1. Analyzer..................................................46
   8.4.2. Target....................................................46
   8.4.3. Source....................................................47
   8.5. Low-Level Entity Identification Elements....................48
   8.5.1. Address...................................................48
   8.5.2. Classification............................................48
   8.5.3. Node......................................................49
   8.5.4. Process...................................................49
   8.5.5. Service...................................................50
   8.5.5.1. SNMPService.............................................51
   8.5.5.2. WebService..............................................51
   8.5.6. User......................................................52
   8.6. Simple Elements.............................................52
   8.6.1. address...................................................52
   8.6.2. alertid...................................................53
   8.6.3. Arguments.................................................53
   8.6.3.1. arg.....................................................53
   8.6.4. buffer....................................................53
   8.6.5. cgi.......................................................53
   8.6.6. command...................................................53
   8.6.7. community.................................................53
   8.6.8. date......................................................54
   8.6.9. dport.....................................................54
   8.6.10. Environment..............................................54
   8.6.10.1. env....................................................54
   8.6.11. gid......................................................54
   8.6.12. group....................................................54
   8.6.13. location.................................................54
   8.6.14. method...................................................55
   8.6.15. name.....................................................55
   8.6.16. netmask..................................................55
   8.6.17. ntpstamp.................................................55
   8.6.18. oid......................................................55

Curry              Informational - Expires June 2001           [Page 4]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   8.6.19. path.....................................................55
   8.6.20. pid......................................................55
   8.6.21. portlist.................................................55
   8.6.22. program..................................................56
   8.6.23. protocol.................................................56
   8.6.24. serial...................................................56
   8.6.25. size.....................................................56
   8.6.26. sport....................................................56
   8.6.27. time.....................................................56
   8.6.28. url......................................................56
   8.6.29. uid......................................................56
   8.7. Providing Additional Information............................57
   8.7.1. AdditionalData............................................57
   9. Examples......................................................57
   9.1. Denial of Service Attacks...................................57
   9.1.1. The "teardrop" Attack.....................................57
   9.1.2. The "ping of death" Attack................................58
   9.2. Port Scanning Attacks.......................................59
   9.2.1. Connection to a Disallowed Service........................60
   9.2.2. Simple Port Scanning......................................61
   9.3. Local Attacks...............................................62
   9.3.1. The "loadmodule" Attack...................................62
   9.3.2. The "phf" Attack..........................................64
   9.4. System Policy Violation.....................................65
   9.5. Correlated Alerts...........................................66
   9.6. Heartbeat...................................................68
   10. Extending the IDMEF..........................................68
   10.1. Extending an Existing Attribute............................69
   10.2. Adding an Attribute........................................70
   10.3. Adding an Element..........................................70
   11. The IDMEF Document Type Definition...........................71
   12. Security Considerations......................................83
   13. References...................................................84
   14. Acknowledgments..............................................85
   15. Author's Addresses...........................................85


















Curry              Informational - Expires June 2001           [Page 5]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

1. Introduction

   The Intrusion Detection Message Exchange Format (IDMEF) [2] is
   intended to be a standard data format that automated intrusion
   detection systems can use to report alerts about events that they
   have deemed suspicious. The development of this standard format will
   enable interoperability among commercial, open source, and research
   systems, allowing users to mix-and-match the deployment of these
   systems according to their strong and weak points to obtain an
   optimal implementation.

   The most obvious place to implement the IDMEF is in the data channel
   between an intrusion-detection "analyzer" (or "sensor") and the
   "manager" (or "console") to which it sends alarms. But there are
   other places where the IDMEF can be useful:

   + A single database system that could store the results from a
      variety of intrusion detection products would make it possible for
      data analysis and reporting activities to be performed on "the
      whole picture" instead of just a part of it;

   + An event correlation system that could accept alerts from a
      variety of intrusion detection products would be capable of
      performing more sophisticated cross-correlation and cross-
      confirmation calculations than one that is limited to a single
      product;

   + A graphical user interface that could display alerts from a
      variety of intrusion detection products would enable the user to
      monitor all of the products from a single screen, and require him
      or her to learn only one interface, instead of several; and

   + A common data exchange format would make it easier for different
      organizations (users, vendors, response teams, law enforcement) to
      not only exchange data, but also communicate about it.



2. Conventions used in this document

   The keywords "MUST", "MUST NOT", "SHALL, "SHALL NOT", "SHOULD",
   "SHOULD NOT", "RECOMMENDED, and "MAY in this document are to be
   interpreted as described in RFC-2119 [5].










Curry              Informational - Expires June 2001           [Page 6]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

3. Rationale for the IDMEF Data Model


3.1. Problems addressed by the data model


   The reasons for proposing an object-oriented model as the data
   representation format of the IDWG are:

   + Alert information is inherently heterogeneous. Certain alerts are
      defined with very little information, such as origin, destination,
      name and time of the event. Other alerts provide much more
      context, such as ports or services, processes, user information,
      and others. Therefore, it is important that the data
      representation proposed is flexible enough to accommodate
      different needs.

      An object-oriented model has a natural extensibility via
      subclassing. If an implementation of the data model extends it
      with new classes, either by aggregation or subclassing, an
      implementation that does not understand these extensions will
      still be able to understand the subset of information that is
      defined by the data model. Subclassing and aggregation provide
      extensibility while preserving the consistency of the model.


   + Tool environments are different. Some tools detect attacks by
      analyzing network traffic while others use operating system logs,
      or application audit information. The same attack reported by
      tools with different information sources will not contain the same
      information.

      The data model defines support classes that accommodate the
      differences in data sources among tools. In particular, the notion
      of target and source for the alert are represented by the
      combination of NODE, USER, PROCESS and SERVICE classes.


   + Tool capabilities are different. Depending on the environment, one
      may install a lightweight tool providing little information. More
      complex tools that will have a greater impact on the running
      system provide more detailed information about the alerts observed
      by the intrusion detection system. The data model must allow for
      conversion to formats used by tools other than intrusion detection
      sensors, for the purpose of further processing the alert
      information.

      The data model defines extensions to the basic schema that allow
      carrying both simple and complex alerts. Extensions are either
      done through subclassing or association of new classes.



Curry              Informational - Expires June 2001           [Page 7]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   + Operating environments are different. Depending on the kind of
      network, or operating system used, attacks will be observed and
      reported with different characteristics. The data model should
      accommodate these differences.

      The reporting flexibility is brought by the definition of the NODE
      and SERVICE support classes. If additional information must be
      reported, subclasses should be defined that extend the data model
      with the additional attributes.


   + Commercial vendor objectives are different. Depending on the
      constraints set forth for the development of the tool, or on the
      operating environment, vendors may wish to deliver more or less
      information about certain attacks.

      Vendors may want to provide more information about alerts. Again,
      the object-oriented approach allows this flexibility while
      specifying how the subclassing mechanism must be used.


3.2. Design goals


3.2.1. Representing events

   The goal of the data model is to provide a standard representation of
   the information that an intrusion-detection analyzer detected an
   occurrence of some unusual activity. These alerts may be simple or
   complex, depending on the capabilities of the analyzer that created
   them.


3.2.2. Content driven

   The design of the data model is content-driven. This means that new
   objects are introduced to accommodate additional content, not
   semantic differences between the alerts. This is an important goal as
   the task of classifying and naming computer vulnerabilities is
   extremely difficult and subjective.

   The data model MUST be unambiguous. This means that we allow tools to
   be more or less precise than one another, e.g., one tool may report
   more information about an event than another. However, we do not
   allow them to produce contradictory information in two alerts
   describing the same event; e.g., in the previous case, the common set
   of information reported by the two tools MUST be identical and
   inserted in the same placeholder of the data structure. Of course, it
   is always possible to insert all interesting information about an
   event in the extensions to an alert instead of using pre-defined
   fields; doing this reduces interoperability and MUST be avoided as
   much as possible.

Curry              Informational - Expires June 2001           [Page 8]


Internet Draft        IDMEF Data Model and XML DTD         December 2000



3.2.3. Relationship between alerts

   Intrusion detection alerts can be transmitted at several levels. This
   draft applies to both very simple alerts (those alerts that are the
   result of a single action or operation in the system, such as a
   failed login report) and to more complex alerts (the aggregation of
   several actions in the system to generate the alert, or the
   aggregation of several simple alerts).

   As such, the data model must provide a way to describe the
   relationship between low level and high-level alerts.


3.3. UML Overview

   The data model is described using the Universal Modeling Language
   (UML)[6]. UML provides a simple framework to represent entities and
   their relationships. UML define entities as classes. In this document
   we have identified the classes with the associated attributes. The
   symbols used in this document to represent class and attributes are:

               +---------------------+
               |       CLASS         |   -> Class name (in uppercase)
               +---------------------+
               |      Attribute      |   -> Name of attribute 1
               |      ...            |
               |      Attribute      |   -> Name of attribute N
               +---------------------+

   Please note that attributes for a class do not appear in all diagrams
   that use the class.


3.3.1. Relationships

   This data model currently uses only two relationships, the
   inheritance relationship and the aggregation relationship.

3.3.1.1. Inheritance Relationship

   Inheritance denotes a superclass, subclass type of relationship where
   the subclass inherits all the attributes, operations and
   relationships of the superclass. This type of relationship is also
   referred to as an "is-a" or a "kind-of" relationship. The subclasses
   have additional attributes or operations, which apply only to the
   subclass and not to the superclass.

   In this document, inheritance is represented by the / \ symbol. In
   the example below we are stating that an EXTENDED ALERT is a kind of


Curry              Informational - Expires June 2001           [Page 9]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   ALERT. It contains all the attributes of Alert as well as any
   attributes contained in the extended alert class. (Note: EXTENDED
   ALERT does not have any particular role elsewhere in this document).

               +---------------------+
               |       ALERT         |
               +---------------------+
                        /_\
                         |
                         |
               +---------------------+
               |   EXTENDED_ALERT    |
               +---------------------+

3.3.1.2. Aggregation Relationship

   Aggregation is a form of association in which the whole is related to
   its parts. This type of relationship is also referred to as a "part-
   of" relationship. In this case the aggregate class contains all of
   its own attributes and as many of the attributes associated with its
   parts as required and specified in the multiplicity indicators
   (discussed in the next paragraph). In this document the symbol <> is
   used to indicate aggregation. It is placed at the end of the
   association line closest to the aggregate (whole) class.

         +---------------------+          1 +---------------------+
         |       ALERT         |<>----------|       ANALYZER      |
         +---------------------+            +---------------------+
         |                     |
         |                     |          1 +---------------------+
         |                     |<>----------|       NAME          |
         |                     |            +---------------------+
         |                     |
         |                     |        0..*+---------------------+
         |                     |<>----------|       TARGET        |
         |                     |            +---------------------+
         |                     |
         |                     |        0..*+---------------------+
         |                     |<>----------|       SOURCE        |
         |                     |            +---------------------+
         |                     |
         |                     |        0..*+---------------------+
         |                     |<>----------|   ADDITIONALDATA    |
         +---------------------+            +---------------------+


3.3.1.3. Multiplicity Indicator

   Multiplicity defines the number of objects within a class that are
   linked to one another by an aggregation relationship (Section
   3.3.1.2). Typically multiplicity indicators are placed at each end of
   the association line. In this document if a multiplicity number is

Curry              Informational - Expires June 2001          [Page 10]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   left off it is assumed to be 1 (one). Standard symbols, as used in
   this document, are:

          1     =     Exactly One
          0..*  =     Zero or More
          1..*  =     One or More
          0..1  =     Zero or One
          5..8  =     Specific Range (5,6,7, & 8)

   In the example above an Alert contains all the attributes of its own
   class and the attributes of exactly one Analyzer and the attributes
   of 1 Name. I may contain the attributes of zero or more target(s),
   zero or more source(s), and zero or more items of additional data.


3.3.2. Types and default values

   Attributes of the classes defined by the data model are typed. This
   type information is not an exact requirement on the implementation;
   it is rather intended to convey to the reader what kind of data the
   data model is expecting for this attribute. The exact representation
   is left to the XML DTD starting in Section 7. For example, the
   INTEGER type indicates that the data model views this attribute as an
   integer. It might actually be encoded as a binary 32-bit integer, a
   binary 64-bit integer, or a string in an XML representation.


   Name      Definition
   BOOLEAN   Boolean = (TRUE, FALSE)
   INTEGER   The value provided MUST be an integer
   CHARACTER UTF-8 or UTF-16 character
   STRING    An ordered sequence of characters of known length
   BYTE      Byte (8-bits, no parity)
   TIME      A structure or schema carrying time representation. This
              is defined in the XML representation in Section 7 and is
              understood as a generic time representation for the data
              model.
   ENUM      An enumerated type consisting of an ordered list of
              acceptable values. When an attribute is specified as ENUM,
              a table describing the acceptable values for the ENUM
              follows the attribute definition table. Each value has a
              rank (number) and a representing keyword.

   The default values are specified per class for each attribute. Only
   mandatory attributes have default values.







Curry              Informational - Expires June 2001          [Page 11]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

4. The Data Model

4.1. Data model overview

   An overview of the data model is presented in Figure 1. The main
   component is the ALERT class, which bears minimum required
   information along with the ANALYZER and CLASSIFICATION classes. The
   ANALYZER class describes the sender of the alert, i.e. the analyzer;
   every alert must be associated with one and only one analyzer. The
   CLASSIFICATION class describes the subject of the alert, i.e. the
   reason for sending it; at least one of them MUST be provided in the
   alert.

   +-------+       1+----------------+
   | ALERT |<>------|    ANALYZER    |
   |       |        +----------------+                   0..1+---------+
   |       |                                          +------|  USER   |
   |       |    1..*+----------------+                |      +---------+
   |       |<>------| CLASSIFICATION |                |  0..1+---------+
   |       |        +----------------+                +------| PROCESS |
   |       |                                          |      +---------+
   |       |    0..*+----------+    0..1+---------+   |  0..1+---------+
   |       |<>------|  TARGET  |<>------|  NODE   |<>-+------| SERVICE |
   |       |        +----------+        +---------+          +---------+
   |       |
   |       |    0..*+----------+    0..1+---------+      0..1+---------+
   |       |<>------|  SOURCE  |<>------|  NODE   |<>-+------|  USER   |
   |       |        +----------+        +---------+   |      +---------+
   |       |                                          |  0..1+---------+
   |       |    0..*+----------------+                +------| PROCESS |
   |       |<>------| ADDITIONALDATA |                       +---------+
   +-------+        +----------------+

                       Figure 1: Data Model Overview

   In addition, each alert is associated with zero or more TARGETs, and
   with zero or more SOURCEs. Each TARGET and SOURCE is described by a
   number of attributes, as described in sections 4.2.8 and 4.2.9.
   Provision of additional alert data is done by subclassing any of the
   model classes. Standard extensions and examples are given in section
   4.3.

   It is important to note that this data model does not specify how an
   alert should be classified or identified. For example, a port scan
   may be determined as a single attack against multiple targets by one
   sensor where another sensor may see it as multiple attacks by a
   single source. The taxonomy for this analysis lies in each IDS. Once
   the alert type is determined this data model provides the standard
   structure for formatting the alert.




Curry              Informational - Expires June 2001          [Page 12]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

4.2. The core of the data model

   The core of the data model is the ALERT class. Every alert is
   associated with a single analyzer that generated it, and a single
   time. It is also associated with a list of 0 or more targets, and a
   list of 0 or more sources. This relationship is illustrated in Figure
   2.

              +--------------------+       1..1+----------------------+
              | ALERT              |<>---------| ANALYZER             |
              |--------------------|           +----------------------+
              | INTEGER version=1  |           | INTEGER ident        |
              | INTEGER alertID    |           | NODE    host         |
              | ENUM    impact     |           | PROCESS process      |
              | TIME    time       |           +----------------------+
              |                    |       1..*+----------------------+
              |                    |<>---------| CLASSIFICATION       |
              |                    |           +----------------------+
              |                    |           | ENUM   origin        |
              |                    |           | STRING name          |
              |                    |           | STRING url           |
              |                    |           +----------------------+
              |                    |       0..*+----------------------+
              |                    |<>---------| ADDITIONALDATA       |
              |                    |           +----------------------+
              |                    |           | STRING meaning       |
              |                    |           | ENUM   type          |
              |                    |           | BYTE[] data          |
              |                    |           +----------------------+
              |                    |       0..*+----------------------+
              |                    |<>---------| TARGET               |
              |                    |           +----------------------+
              |                    |       0..*+----------------------+
              |                    |<>---------| SOURCE               |
              +--------------------+           +----------------------+
                        /_\
            +------------+----------+
            |            |          |
   +------------------+  |  +-----------------+
   | TOOLALERT        |  |  | OVERFLOWALERT   |
   |------------------|  |  |-----------------|
   |STRING    name    |  |  | INTEGER size    |
   |STRING    command |  |  | BYTE    buffer  |
   |INTEGER[] alertIDs|  |  | STRING  program |
   +------------------+  |  +-----------------+
               +--------------------+
               | CORRELATIONALERT   |
               +--------------------+
               | INTEGER[] alertIDs |
               +--------------------+

                         Figure 2: Data model core

Curry              Informational - Expires June 2001          [Page 13]


Internet Draft        IDMEF Data Model and XML DTD         December 2000


   Figure 2 contains three classes that extend the ALERT class. These
   three classes have been included here because the information they
   carry appears frequently during the operation of intrusion-detection
   systems.
















































Curry              Informational - Expires June 2001          [Page 14]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

4.2.1. The ALERT class

   The ALERT class is the central component of the data model. An IDWG-
   compliant intrusion-detection analyzer must generate at a minimum
   this set of information.

   The ALERT class defines the following attributes:

   Attribute Type    Definition
   version   INTEGER The version of the class hierarchy used. The
                      current version is 1. This attribute is MANDATORY.
                      The default value is 1.
   alertID   INTEGER A serial number for the alert. This number MUST be
                      unique for every alert generated by a given
                      analyzer. This attribute is MANDATORY. The default
                      value is 0 and indicates that the analyzer cannot
                      generate this information reliably.
   time      TIME    The time of the alert. The format used is defined
                      in Section 7. This attribute is MANDATORY and does
                      not have a default value.
   impact    ENUM    The evaluated impact of the alert on the system.
                      The range of acceptable values is ["unknown",
                      "bad-unknown", "not-suspicious", "attempted-
                      admin", "successful-admin", "attempted-dos",
                      "successful-dos", "attempted-recon", "successful-
                      recon-limited", "successful-recon-largescale",
                      "attempted-user", "successful-user"], further
                      defined in Section 8.2.1. This attribute is
                      MANDATORY. The default value is "unknown"

   The definition of the acceptable values for the impact attribute is
   as follows:

   #  keyword                   Definition
   0  unknown                   Event's impact not known to analyzer
   1  bad-unknown               Event is unpleasant in an unknown way
   2  not-suspicious            Event is not suspicious in any way
   3  attempted-admin           Attempt to obtain administrator access
   4  successful-admin          Successful compromise of admin access
   5  attempted-dos             Attempted denial-of-service
   6  successful-dos            Successful denial-of-service
   7  attempted-recon           Attempted reconnaissance probe
   8  successful-recon-limited  Successful reconnaissance probe of
                                  limited scope (e.g., one machine)
   9  successful-recon-         Successful reconnaissance probe of
       largescale                large scale
   10 attempted-user            Attempt to obtain user-level access
   11 successful-user           Successful compromise of user access




Curry              Informational - Expires June 2001          [Page 15]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

4.2.2. The TOOLALERT class

   The TOOLALERT class carries additional information related to the use
   of attack tools or Trojan horses.

   Attribute Type      Definition
   name      STRING    The reason for grouping the alerts, for example
                        an attack tool name (trinoo). This attribute is
                        MANDATORY. This attribute does not have a
                        default value.
   command   STRING    The command or operation that the tool was asked
                        to perform, for example a BackOrifice ping. This
                        attribute is OPTIONAL. The default value is the
                        empty STRING.
   alerts    INTEGER[] The list of alert identifiers that are related
                        to the name. This attribute is OPTIONAL. The
                        default value is the empty list.


4.2.3. The CORRELATIONALERT class

   The CORRELATIONALERT class carries additional information related to
   the correlation of alert information.

   Attribute Type      Definition
   name      STRING    The reason for grouping the alerts, for example
                        a correlation method. This attribute is
                        MANDATORY. This attribute does not have a
                        default value.
   alerts    INTEGER[] The list of alert identifiers that are related
                        to the name. This attribute is OPTIONAL. The
                        default value is the empty list.

4.2.4. The OVERFLOWALERT class

   The OVERFLOWALERT class carries additional information related to
   overflow attacks. These include but are not limited to the infamous
   buffer overflow attacks when an attacker can overflow a fixed size
   buffer and have code run under higher privileges than his own.

   Attribute Type    Definition
   size      INTEGER The size of the overflowing buffer. This attribute
                      is MANDATORY. This attribute does not have a
                      default value.
   program   STRING  The program that the overflow attempted to run.
                      This attribute is MANDATORY. This attribute does
                      not have a default value.
   buffer    BYTE[]  A buffer containing the overflowing data partially
                      or entirely. This attribute is OPTIONAL. The
                      default value is the empty array.


Curry              Informational - Expires June 2001          [Page 16]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

4.2.5. The ANALYZER class

   The ANALYZER class identifies the intrusion detection analyzer that
   provided the alert. At the minimum, this is a unique identifier such
   as a serial number (unique over the organization where the IDS system
   is deployed). Additional identification information is provided.

   Attribute Type    Definition
   ident     INTEGER Analyzer identification token. This attribute is
                      MANDATORY. This attribute does not have a default
                      value. This token MUST be unique within the
                      communicating analyzers and managers.
   host      NODE    Identification of the equipment on which the
                      analyzer resides. This attribute is OPTIONAL. The
                      default value is EMPTY.
   process   PROCESS Process information concerning the analyzer. This
                      attribute is OPTIONAL. The default value is EMPTY.

4.2.6. The CLASSIFICATION class

   The CLASSIFICATION class names the vulnerability associated with the
   alert. One name MUST be provided, and additional, equivalent names
   MAY be added.


   Attribute Type   Definition
   origin    ENUM   The origin of the name. The range of acceptable
                     values is ["unknown", "bugtraqid", "cve", "vendor
                     specific"]. This attribute is MANDATORY. The
                     default value is "unknown".
   name      STRING The associated name. This attribute is MANDATORY.
                     The default value is the empty STRING.
   url       STRING The URL at which the manager can find more
                     information about the alert. This information can
                     consist of a signature pattern, a description of
                     the attack, appropriate countermeasures, or any
                     other information deemed relevant by the vendor.
                     This attribute is MANDATORY. This attribute does
                     not have a default value.

   The definition of the acceptable values for the origin attribute is
   as follows:

   # keyword         Definition
   0 unknown         No origin known.
   1 bugtraqid       The Bugtraq ID naming scheme [7]
   2 cve             The Common Vulnerability Enumeration naming
                       scheme [8]
   3 vendor-specific A vendor-specific name.



Curry              Informational - Expires June 2001          [Page 17]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

4.2.7. The ADDITIONALDATA class

   The ADDITIONALDATA class provides a way to carry vendor-specific or
   implementation specific information.

   Attribute Type   Definition
   meaning   STRING Optional. A string that describes the meaning of
                     the data in this element. These strings will be
                     implementation-dependent
   type      ENUM   The type of the data in this element. The range of
                     acceptable values is ["byte", "boolean",
                     "character", "date", "integer", "ntpstamp", "real",
                     "string", "time"]. This attribute is MANDATORY.
                     This attribute does not have a default value.
   data      BYTE[] The data.

   The definition of the acceptable values for the type attribute is as
   follows:

   # keyword         Definition
   0 unknown         MUST NOT be used. Reserved for future use.
   1 byte            A single byte
   2 character       A single character
   3 boolean         True/false or yes/no
   4 integer         An integer
   5 real            A floating-point number
   6 date            A date string formatted as per Section 7.
   7 ntpstamp        An NTP timestamp as per Section 7.
   8 time            A time string formatted as per Section 7
   9 string          A string of characters






















Curry              Informational - Expires June 2001          [Page 18]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

4.2.8. The TARGET class

   The TARGET class contains information about the target of the alert,
   i.e. the recipient of the malicious or anomalous activity that has
   been spotted by the intrusion detection system. The target itself
   consists of an identifier and an ENUM indicating whether the target
   is real or target information is unreliable. The relationship diagram
   for TARGET is shown in Figure 3.

   +------------------+                0..1+---------------------+
   | TARGET           |<>------------------| NODE                |
   |------------------|                    +---------------------+
   | INTEGER targetID |
   | ENUM    decoy    |                0..1+---------------------+
   |                  |<>------------------| USER                |
   |                  |                    +---------------------+
   |                  |
   |                  |                0..1+---------------------+
   |                  |<>------------------| PROCESS             |
   |                  |                    +---------------------+
   |                  |
   |                  |                0..1+---------------------+
   |                  |<>------------------| SERVICE             |
   +------------------+                    +---------------------+

                         Figure 3: The Target class

   The TARGET class defines the following attributes:

   Attribute Type    Definition
   decoy     ENUM    Indicates if the data associated with the target
                      is considered real as far as the analyzer can
                      decide, a decoy, or undetermined. The range of
                      acceptable values is ["unknown", "yes", "no"].
                      This attribute is MANDATORY. The default value is
                      "unknown".
   targetID  INTEGER Target reference token. This token identifies and
                      refers to a previously defined target. This
                      attribute is OPTIONAL. The default value is 0 and
                      indicates that the analyzer does not support this
                      facility.

   The definition of the acceptable values for the decoy attribute is as
   follows:

   # keyword         Definition
   0 unknown         No information
   1 yes             This is not the true target
   2 no              This is the true target.



Curry              Informational - Expires June 2001          [Page 19]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

4.2.9. The SOURCE class

   The SOURCE class contains information about the possible source or
   sources of the alert, i.e. the party or parties generating the
   anomalous data. The source itself contains a reference number (to
   refer to previously transmitted or defined sources) and an indicator
   to indicate whether the source is real or spoofed. The relationship
   diagram for SOURCE is given in Figure 4.

   +------------------+                0..1+---------------------+
   | SOURCE           |<>------------------| NODE                |
   |------------------|                    +---------------------+
   | INTEGER sourceID |
   | ENUM    spoofed  |                0..1+---------------------+
   |                  |<>------------------| USER                |
   |                  |                    +---------------------+
   |                  |
   |                  |                0..1+---------------------+
   |                  |<>------------------| PROCESS             |
   +------------------+                    +---------------------+

                         Figure 4: The SOURCE class

   The SOURCE class defines the following attributes:

   Attribute Type    Definition
   spoofed   ENUM    Indicates if the data associated with the source
                      is considered real as far as the analyzer can
                      decide, a decoy, or impossible to tell. The range
                      of acceptable values is ["unknown", "yes", "no"].
                      This attribute is MANDATORY. The default value is
                      "unknown".
   sourceID  INTEGER Source reference token. This attribute is
                      OPTIONAL. The default value is 0, meaning that
                      this facility is not supported by the analyzer.

   The definition of the acceptable values for the decoy attribute is as
   follows:

   # keyword         Definition
   0 unknown         No information
   1 yes             This is the true source
   2 no              This is not the true source


4.2.10. The support classes

   The support classes represent entities in the data model that have an
   important role. Their relationship is described in Figure 5. The
   following entities have been identified: nodes, processes, users and


Curry              Informational - Expires June 2001          [Page 20]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   services. In addition, an address entity has been defined to enhance
   user and node.

                  +---------------+
                  | IDENT         |
                  |---------------|
                  | INTEGER ident |
                  +---------------+
                         /_\
                          |
                          +------------------------------------+
                          |                                    |
   +------------------+   |   +----------------+               |
   |PROCESS           |---+---|NODE            |               |
   |------------------+   |   |----------------+   0..*+---------------+
   |INTEGER  pid      |   |   |STRING  name    |<>-----|ADDRESS        |
   |STRING   name     |   |   |STRING  location|       |---------------+
   |STRING   path     |   |   |INTEGER domain  |       |ENUM   category|
   |STRING[] arguments|   |   +----------------+   0..*|STRING address |
   |STRING[] environ  |   |                       +----|STRING netmask |
   +------------------+   |                       |    +---------------+
                          |                       |
   +------------------+   |   +----------------+  |
   |SERVICE           |---+---| USER           |<>+
   |------------------+       +----------------+
   |STRING  name      |       | ENUM  category |
   |INTEGER dport     |       |                |   1..*+---------------+
   |INTEGER sport     |       |                |<>-----| USERID        |
   |STRING  protocol  |       |                |      +---------------+
   +------------------+       +----------------+       | ENUM    type  |
           /_\                                         | STRING  name  |
            |                                          | INTEGER id    |
            +-------------------+                      +---------------+
            |                   |
   +---------------+  +-------------------+
   | WEBSERVICE    |  | SNMPSERVICE       |
   |---------------|  +-------------------+
   | STRING url    |  | STRING Oid        |
   | STRING cgi    |  | STRING Community  |
   | STRING method |  | STRING Command    |
   | STRING args   |  +-------------------+
   +---------------+

                     Figure 5: Support classes diagram

4.2.10.1. The IDENT class

   All support classes inherit from the IDENT class. The IDENT class
   provides a reference to an object predefined by the analyzer and the
   manager. Instead of sending the complete description of the object,
   the IDMEF message MAY contain the reference identifier for this
   object.

Curry              Informational - Expires June 2001          [Page 21]


Internet Draft        IDMEF Data Model and XML DTD         December 2000


   The IDENT class defines the following attributes:

   Attribute Type    Definition
   ident     INTEGER The shared reference number by which the analyzer
                      and the manager identify the object. This
                      attribute is OPTIONAL. The default value is 0 and
                      indicates that the analyzer does not support this
                      facility.

   The justification for having an ident is twofold. First, this
   information can serve as a correlation tool. When two intrusion-
   detection systems have different views of objects (e.g. network based
   associated with IP addresses and host-based associated with names),
   providing them with a single identifier will help the manager
   receiving the alerts understand that they are related to the same
   object. This is particularly useful for target objects, which are
   likely to be well identified by the organization deploying the
   intrusion-detection system. This mechanism is also useful when the
   same object has multiple interfaces.

   This also means that every NODE, USER, ADDRESS, PROCESS or SERVICE
   information can be exchanged with an integer. However, the
   implementor MUST NOT reuse an identification previously used for an
   other instance. It is explicitly forbidden to share the same
   identification for two instances even if they are specializations of
   two different subclasses (e.g. a NODE and a USER).

4.2.10.2. The ADDRESS class

   The ADDRESS support class carries address information. The address in
   question can be for example a network address, a hardware address or
   an application address.

   Attribute Type   Definition
   category  ENUM   The kind of address information. The range of
                     acceptable values is ["unknown", "atm", "e-mail",
                     "lotus-notes", "mac", "sna", "vm", "ipv4-addr",
                     "ipv4-addr-hex", "ipv4-net", "ipv4-net-mask",
                     "ipv6-addr", "ipv6-net", "ipv6 network address",
                     "ipv6-net-mask"]. This attribute is MANDATORY. This
                     attribute does not have a default value.
   address   BYTE[] The address information itself. The type
                     information MUST allow transcription of the byte
                     string into its original format. This attribute is
                     MANDATORY. This attribute does not have a default
                     value.
   netmask   BYTE[] The netmask information, if appropriate (depends on
                     the category attribute). This attribute is
                     OPTIONAL. The default value is the empty array.


Curry              Informational - Expires June 2001          [Page 22]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   The definition of the acceptable values for the category attribute is
   as follows:

   #  keyword        Definition
   0  unknown        Type not known [SHOULD be avoided]
   1  atm            Asynchronous Transfer Mode network address
   2  e-mail         Internet electronic mail address (RFC 822)
   3  lotus-notes    Lotus Notes address
   4  mac            Media Access Control (MAC) address
   5  sna            IBM Shared Network Architecture (SNA) address
   6  vm             IBM "VM" (PROFS) electronic mail address
   7  ipv4-addr      IPv4 host address in dotted-decimal notation
                      (aaa.bbb.ccc.ddd
   8  ipv4-addr-hex  IPv4 host address in hexadecimal
   9  ipv4-net       IPv4 network address in dotted-decimal notation,
                      slash, significant bits (aaa.bbb.ccc.ddd/nn)
   10 ipv4-net-mask  IPv4 network address and associated network mask.
   11 ipv6-addr      IPv6 host (equipment) address
   12 ipv6-net       IPv6 network address
   13 ipv6-net-mask  IPv6 network address and associated network mask.


4.2.10.3. The USER class

   The USER class indicates the different ways by which a user can be
   identified. It contains information about which kind of user it is,
   and then one or multiple USERID objects which contain the actual user
   information.

   +---------------+    1..n+--------------+
   | USER          |<>------| USERID       |
   +---------------+        +--------------+
   | ENUM category |        | ENUM    type |
   |               |        | STRING  name |
   +---------------+        | INTEGER id   |
                            +--------------+

   Attribute Type Definition
   Category  ENUM The category of the user, representing the scope of
                   user information. The range of acceptable values is
                   ["unknown", "application", "os-device"]. The default
                   value is "unknown".

   The definition of the acceptable values for the category attribute is
   as follows:







Curry              Informational - Expires June 2001          [Page 23]


Internet Draft        IDMEF Data Model and XML DTD         December 2000


   # keyword        Definition
   0 unknown        User category unknown. SHOULD be avoided.
   1 application    User identity at the application level. This is for
                     example an HTTP authentication or an Exchange user
                     name.
   2 os-device      This is a login on a distributed network of
                     workstations or equipment.

   The USERID class defines the following attributes:

   Attribute Type    Definition
   type      ENUM    The type of user information carried by the USERID
                      object. The range of acceptable values is
                      ["original-user", "current-user", "target-user",
                      "user-privs", "current-group", "group-privs"]. The
                      default value is "original-user".
   name      STRING  A string representing the user by name.
   number    INTEGER A numerical representation of the user, such as a
                      UNIX id.

   Note that there are constraints on the type of USERID associated with
   the USER. Only one of each "original-user", "current-user", "target-
   user" or "current-group" may be specified with a given USER. Multiple
   USERIDs of type "user-privs" and "group-privs" are allowed.

   The definition of the acceptable values for the category attribute is
   as follows:
























Curry              Informational - Expires June 2001          [Page 24]


Internet Draft        IDMEF Data Model and XML DTD         December 2000


   # keyword        Definition
   0 unknown        MUST NOT be used, reserved for future use.
   1 original-user  The actual identity of the user or process being
                     reported on.  On those systems that (a) do some
                     type of auditing and (b) support extracting a user
                     id from the "audit id" token, that value should be
                     used. On those systems that do not support this,
                     and where the user has logged into the system, the
                     "login id" should be used.
   2 current-user   The current user id being used by the user or
                     process. On Unix systems, this would be the "real"
                     user id, in general.
   3 target-user    The user id the user or process is attempting to
                     become. This would apply, for example, when the
                     user attempts to use "su," "rlogin," "telnet," etc.
   4 current-group  The current group id (if applicable) being used by
                     the user or process. On Unix systems, this would be
                     the "real" group id, in general.
   5 user-privs     Other user ids the user or process has the ability
                     to use.  On Unix systems, this would be the
                     "effective" user id. A list is allowed, for
                     operating systems/applications that allow more than
                     one
   6 group-privs    Other group ids (if applicable) the user or process
                     has the ability to use. On Unix systems, this would
                     be the "effective" group id. On BSD-derived Unix
                     systems, it would also include all the group ids on
                     the "group list."


4.2.10.4. The NODE class

   The NODE class indicates the different ways by which a host or
   equipment on the network can be identified.

   Attribute Type   Definition
   name      STRING The machine fully qualified domain name. This
                     attribute is MANDATORY unless associated ADDRESS
                     information is provided. The default value is the
                     empty STRING.
   location  STRING The location of the equipment. This attribute is
                     optional. The default value is the empty STRING.
   domain    ENUM   The domain to which the equipment belongs, if
                     relevant. This attribute is OPTIONAL. Acceptable
                     values for the enumerated type are [unknown, ads,
                     afs, coda, dfs, dns, kerberos, nds, nis, nisplus,
                     nt, wfw]. The default value is unknown

   The definition of the acceptable values for the domain attribute is
   as follows:

Curry              Informational - Expires June 2001          [Page 25]


Internet Draft        IDMEF Data Model and XML DTD         December 2000


   #  keyword        Definition
   0  unknown        No relevant domain
   1  ads            Windows 2000 ADS
   2  afs            Andrew File System
   3  coda           CODA distributed file system
   4  dfs            DFS distributed file system
   5  dns            Domain Name System
   6  kerberos       Kerberos realm
   7  nds            Novell Netware
   8  nis            Network Information Service (Yellow Page)
   9  nisplus        Network Information Services Plus
   10 nt             Windows NT domain
   11 wfw            Windows for Workgroups


4.2.10.5. The PROCESS class

   The PROCESS class gathers information about the process that is being
   run.

   Attribute Type     Definition
   name      STRING   The name of the program being run. This is a
                       short name, e.g. sendmail or explorer. Options
                       and path information are provided by additional
                       attributes. This attribute is MANDATORY. This
                       attribute does not have a default value.
   pid       INTEGER  The process identifier of the process being run.
                       This attribute is OPTIONAL. The default value is
                       0.
   path      STRING   The path of the program. This attribute is
                       OPTIONAL. The default value is the empty STRING.
                       Provision of the most meaningful path information
                       is left to the appreciation of the implementer in
                       this version of the data model. One could
                       nevertheless imagine that it SHOULD include the
                       server name in a Windows NT environment, or MAY
                       include the mount point in a Unix environment.
   arguments STRING[] The arguments passed to the program or the system
                       call, in the order in which they appear on the
                       command line. This attribute is OPTIONAL. The
                       default value is the empty array. This version of
                       the data model does not differentiate between
                       command line flags (e.g. -x) and their associated
                       values.
   environ   STRING[] The environment strings with which the process is
                       being run. This argument is optional. The default
                       value is the empty array. For example, the string
                       "PATH=/bin:/usr/bin" is an acceptable value.



Curry              Informational - Expires June 2001          [Page 26]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

4.2.11. The SERVICE class

   The SERVICE class identifies a network service request being carried
   out over the network. In particular, this class should be used to
   report not only open services, but also connections and connections
   attempts. To do so, the class provides for identification of the
   source port from which the connection originated. In general, a
   service is a resource available from the network.

   This SERVICE class is also related to process and user information.
   Process and user information are aggregated at the source or target.

   Attribute Type    Definition
   name      STRING  The name of the service. The name of the service
                      is independent of the destination port (dport
                      attribute). A combination of "name=http" and
                      "dport=8080" is perfectly valid. Implementers MUST
                      use the name listed in the IANA list of well-known
                      ports if applicable.
   dport     INTEGER The port to which the connection request is
                      addressed. In many situations, this will be a
                      well-known port in the IANA list, associated with
                      a name.
   sport     INTEGER The source port from which the connection
                      originated. In many situations, this will be a
                      high-numbered port.
   protocol  STRING  The name of the protocol used.

   There should be more information concerning the protocol. The service
   name does not necessarily matches the application level protocol used
   to interpret the event, one may connect using TELNET to an HTTP port;
   there may be protocol encapsulation. The original meaning of the
   protocol was tcp/udp, now we need to create a class with a hierarchy
   of levels, IP/ICMP/ARP/EGP/OSPF/...; TCP/UDP/?; other on top, same
   thing as name ?/is there something on top of application-layer
   protocols ?

4.2.11.1. The WEBSERVICE class

   The WEBSERVICE class carries additional information related to web
   traffic. Note that the data model does not enforce coherence between
   the usage of this class and the information contained in the Service
   class, because the two can be unrelated (examples of ports used for
   web traffic include but are not limited to 80, 443, 8080, 8484 and
   8888).







Curry              Informational - Expires June 2001          [Page 27]


Internet Draft        IDMEF Data Model and XML DTD         December 2000


   Attribute Type   Definition
   url       STRING The URL in the request. This attribute is
                     MANDATORY. This attribute does not have a default
                     value.
   cgi       STRING The CGI script in the request (without arguments).
                     This attribute is OPTIONAL. The default value is
                     the empty STRING.
   args      STRING The arguments passed to the cgi script. This
                     attribute is OPTIONAL. The default value is the
                     empty STRING.
   method    STRING The method used for the request. This attribute is
                     OPTIONAL. The default value is the empty STRING.

4.2.11.2. The SNMPSERVICE class

   The SNMPSERVICE class carries additional information related to SNMP
   traffic. Note that the data model does not enforce coherence between
   the usage of this class and the information contained in the Service
   class, because the two can be unrelated.

   Attribute Type   Definition
   oid       STRING The object identifier used for the request. This
                     attribute is OPTIONAL. The default value is the
                     empty STRING.
   community STRING The object's community string. This attribute is
                     OPTIONAL. The default value is the empty STRING.
   command   STRING The command sent to the SNMP daemon (e.g. GET, SET,
                     ...). This attribute is OPTIONAL. The default value
                     is the empty STRING.

   Note that even though it is possible to generate an alert of class
   SNMPSERVICE with only default values, analyzers MUST NOT do that.


4.3. Extension of the data model

   It is expected that the model will have to be extended by vendors to
   carry additional information relevant to the alerts they need to
   transport. When a manager receives information from an analyzer that
   it cannot understand, the unknown information MUST be ignored until
   the manager has been enriched with the appropriate data definition
   and semantic. When the vendor extensions mature, they can be
   incorporated in the data model.

   Depending on the kind of extension needed, two mechanisms can be
   used. Note that these mechanisms extend the data model only, and that
   additional mechanisms are provided in the XML DTD to transport
   additional information which does not fit in the current data model,
   see section 8.7.


Curry              Informational - Expires June 2001          [Page 28]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

4.3.1. Extension by aggregation

   Extension by aggregation consists of aggregating a new class to one
   of the existing classes of the data model. This is the mechanism used
   for example to associate the NAME class with the ALERT class. This
   type of extension allows propagation of the additional information to
   all alerts sent by the analyzer that uses the extension.

   Two methods for realizing this type of extension for the XML DTD are
   described in Sections 10.2 and 10.3.

   For example, if an analyzer decides to send the time of the analyzer
   in addition to the time already stored in the alert, the IDS vendor
   defines a new class aggregated with the ALERT class that carries the
   appropriate time information. The model would then look like Figure
   6.

   +----------+       1+--------------+
   |  ALERT   |<>------|   ANALYZER   |
   |          |        +--------------+
   |          |
   |          |    1..*+--------------+
   |          |<>------|CLASSIFICATION|
   |          |        +--------------+
   |          |
   |          |    1..*+--------------+
   |          |<>------|  EXTRATIME   |
   |          |        +--------------+
   |          |
   |          |    0..*+--------------+
   |          |<>------|    TARGET    |
   |          |        +--------------+
   |          |
   |          |    0..*+--------------+
   |          |<>------|     SOURCE   |
   +----------+        +--------------+

   Figure 6: Insertion of the EXTRATIME class


4.3.2. Extension by subclassing

   The other extension possibility consists of specializing one of the
   classes defined by the model. This is the mechanism used for example
   to specialise the SERVICE class into the WEBSERVICE class, or the
   ALERT class into the TOOLALERT class. This is the preferred mode of
   extension because it not only preserves the data structure, it also
   preserves the operations executed on them (i.e. the methods).





Curry              Informational - Expires June 2001          [Page 29]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

5. Arguments for the realization of the class hierarchy in XML

5.1. The Extensible Markup Language

   The Extensible Markup Language (XML) [3] is a simplified version of
   the Standard Generalized Markup Language (SGML), a text markup syntax
   defined by the ISO 8879 standard. XML is gaining widespread attention
   as a language for representing and exchanging documents and data on
   the Internet, and as the solution to most of the problems inherent in
   HyperText Markup Language (HTML). XML was published as a
   recommendation by the World Wide Web Consortium (W3C) on February 10,
   1998.

   XML is a metalanguage -- a language for describing other languages --
   that enables an application to define its own markup. XML allows the
   definition of customized markup languages for different types of
   documents and different applications. This differs from HTML, in
   which there is a fixed set of tags with preset meanings that must be
   "adapted" for specialized uses. Both XML and HTML use tags
   (identifiers delimited by '<' and '>') and attributes (of the form
   "name='value'"). But where "<p>" always means "paragraph" in HTML, it
   may mean "paragraph," "person," "price," or "platypus" in XML, or it
   might have no meaning at all, depending on the particular
   application.

   The publication of XML was followed by the publication of a second
   recommendation [9] by the World Wide Web Consortium, defining the use
   of namespaces in XML documents. An XML namespace is a collection of
   names, identified by a Universal Resource Identifier (URI). It allows
   documents of different types, that use tags with the same names, to
   be merged with no confusion. When using namespaces, each tag is
   identified with the namespace it comes from, allowing tags from
   different namespaces with the same names to occur in the same
   document. For example, a single document could contain both
   "usa:football" and "europe:football" tags, each with different
   meanings.

   In anticipation of the widespread use of XML namespaces, this memo
   includes the definition of the URI to be used to identify the IDMEF
   namespace.

5.2. Rationale for Implementing IDMEF in XML

   XML-based applications are being used or developed for a wide variety
   of uses, including electronic data interchange in a variety of
   fields, financial data interchange, electronic business cards,
   calendar and scheduling, enterprise software distribution, web "push"
   technology, and markup languages for chemistry, mathematics, music,
   molecular dynamics, astronomy, book and periodical publishing, web
   publishing, weather observations, real estate transactions, and many
   others.


Curry              Informational - Expires June 2001          [Page 30]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   XML's flexibility makes it a good choice for these applications; that
   same flexibility makes it a good choice for implementing the IDMEF as
   well. Other, more specific reasons for choosing XML to implement the
   IDMEF are:

   +  XML allows a custom language to be developed specifically for the
      purpose of describing intrusion detection alerts. It also defines
      a standard way to extend this language, either for later revisions
      of this document ("standard" extensions), or for vendor-specific
      use ("non-standard" extensions).

   +  Software tools for processing XML documents are widely available,
      in both commercial and open source forms. A variety of tools and
      APIs for parsing and/or validating XML are available in a variety
      of languages, including Java, C, C++, Tcl, Perl, Python, and GNU
      Emacs Lisp. Widespread access to tools will make adoption of the
      IDMEF by product developers easier, and hopefully, faster.

   +  XML meets IDMEF Requirement 5.1, that message formats support full
      internationalization and localization. The XML standard specifies
      support for both the UTF-8 and UTF-16 encodings of ISO 10646
      (Unicode), making IDMEF compatible with both one- and two-byte
      character sets. XML also provides support for specifying, on a
      per-element basis, the language in which the element's content is
      written, making IDMEF easy to adapt to "Natural Language Support"
      versions of a product.

   +  XML meets IDMEF Requirement 5.2, that message formats must support
      filtering and aggregation. XML's integration with XSL, a style
      language, allows messages to be combined, discarded, and
      rearranged.

   +  Ongoing XML development projects, in the W3C and elsewhere, will
      provide object-oriented extensions, database support, and other
      useful features. If implemented in XML, the IDMEF immediately
      gains these features as well.

   +  XML is free, with no license, no license fees, and no royalties.


5.3. Relationship to the IDMEF Class Hierarchy

   This implementation follows the model described in Section 4 almost
   exactly, with the following exceptions and restrictions:

   +  XML tags have the names given to the various classes in the model,
      with a few minor exceptions where changes were made to deal with
      XML scoping rules or to increase consistency with the rest of the
      implementation.

   +  XML does not support "inheritance;" tags may only be used at the
      level at which they are declared. Subclasses are implemented by

Curry              Informational - Expires June 2001          [Page 31]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

      making the tags for those classes child tags of the tags for the
      parent classes.

   +  Some extensions have been made, represented by the following
      elements: <Heartbeat>, <AdditionalData>, <DetectTime>,
      <AnalyzerTime>, and <portlist>.

   These changes make little difference in the overall usefulness of the
   model, or XML as an implementation language.












































Curry              Informational - Expires June 2001          [Page 32]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

6. Use of XML in the IDMEF

   This section describes how some of XML's features and requirements
   will impact the IDMEF.

6.1. The IDMEF Document Prolog

   The "prolog" of an IDMEF document, that part that precedes anything
   else, consists of the XML declaration and the document type
   declaration.


6.1.1. XML Declaration

   Every XML document (and therefore every IDMEF document) starts with
   an XML declaration. The XML declaration specifies the version of XML
   being used; it may also specify the character set being used.

   The XML declaration looks like:

        <?xml version="1.0" ?>

   If a character encoding is specified, the declaration looks like:

        <?xml version="1.0" encoding="charset" ?>

   where "charset" is the name of the character encoding in use (see
   section 6.2). If no encoding is specified, UTF-8 is assumed.

   IDMEF documents being exchanged between IDMEF applications MUST begin
   with an XML declaration, and MUST specify the XML version in use.
   Specification of the encoding in use is RECOMMENDED.

   IDMEF applications MAY choose to omit the XML declaration internally
   to conserve space, adding it only when the message is sent to another
   destination (e.g., a web browser). This practice is NOT RECOMMENDED
   unless it can be accomplished without loss of each message's version
   and encoding information.


6.1.2. XML Document Type Definition (DTD)

   The Document Type Definition (DTD) specifies the exact syntax of an
   XML document. It defines the various tags that may be used in the
   document, how the tags are related to each other, which tags are
   mandatory and which are optional, and so forth.

   The IDMEF Document Type Definition is listed in its entirety in
   Section 11.

   It is expected that IDMEF applications will not normally include the
   IDMEF DTD itself in their communications. Instead, the DTD will be

Curry              Informational - Expires June 2001          [Page 33]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   referenced in the document type declaration in the document entity
   (see below). Such IDMEF documents will be well-formed and valid as
   defined in [3].

   Other IDMEF documents will be specified that do not include the
   document prolog (e.g., entries in an IDMEF-format database). Such
   IDMEF documents will be well-formed but not valid.

   Generally, well-formedness implies that a document has a single
   element that contains everything else (e.g., "<book>"), and that all
   the other elements nest nicely within each other without any
   overlapping (e.g., a "chapter" does not start in the middle of
   another "chapter").

   Validity further implies that not only is the document well-formed,
   but it also follows specific rules (contained in the Document Type
   Definition) about which elements are "legal" in the document, how
   those elements nest within other elements, and so on (e.g., a
   "chapter" does not begin in the middle of a "title"). A document
   CANNOT be valid unless it references a DTD (see Section 6.1.4).

   XML processors are required to be able to parse any well-formed
   document, valid or not. The purpose of validation is to make the
   processing of that document (what's done with the data after it's
   parsed) easier. Without validation, a document may contain elements
   in nonsense order, elements "invented" by the author that the
   processing application doesn't understand, and so forth.

   IDMEF documents MUST be well-formed. IDMEF documents SHOULD be valid
   whenever both possible and practical.


6.1.3. IDMEF DTD Formal Public Identifier

   The formal public identifier (FPI) for the Document Type Definition
   described in this memo is:

        "-//IETF//DTD RFCxxxx IDMEF v0.1//EN"

        NOTE:   The "RFCxxxx" text in the FPI value will be replaced
                with the actual RFC number, if this memo is published
                as an RFC.

   This FPI MUST be used in the document type declaration within an XML
   document referencing the DTD defined by this memo, as shown in the
   following section.


6.1.4. IDMEF DTD Document Type Declaration




Curry              Informational - Expires June 2001          [Page 34]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   The document type declaration for an XML document referencing the DTD
   defined by this memo will usually be specified in one of the
   following ways:

   <!DOCTYPE IDMEF-Message PUBLIC "-//IETF//DTD RFCxxxx IDMEF v0.1//EN">

   The last component of the document type declaration is the formal
   public identifier (FPI) specified in the previous section.

   <!DOCTYPE IDMEF-Message SYSTEM "/some/path/to/the/idmef-message.dtd">

   The last component of the document type declaration is a URL that
   points to a copy of the Document Type Definition.

   To be valid (see above), an XML document must contain a document type
   declaration. However, this represents significant overhead to an
   IDMEF application, both in the bandwidth it consumes as well as the
   requirements it places on the XML parser (not only to parse the
   declaration itself, but also to parse the DTD it references).

   Implementers MAY decide, therefore, to have analyzers and managers
   agree out-of-band on the particular document type definition they
   will be using (the standard one as defined here, or one with
   extensions), and then omit the document type declaration from IDMEF
   messages. Great care must be taken in doing this however, as the
   manager may have to accept messages from analyzers using DTDs with
   different sets of extensions.


6.2. Character Data Processing in XML and IDMEF

   The XML standard requires that XML processors support the UTF-8 and
   UTF-16 encodings of ISO 10646 (Unicode), making XML compatible with
   both one- and two-byte character sets. While many XML processing
   applications may support other character sets, only UTF-8 and UTF-16
   can be relied upon from a portability viewpoint.

   A document's XML declaration (see section 6.1.1) specifies the
   character encoding to be used in the document, as follows:

        <?xml version="1.0" encoding="charset" ?>

   where "charset" is the name of the character set, as registered with
   the Internet Assigned Numbers Authority (IANA), see [10].

   Consistent with the XML standard, if no encoding is specified for an
   IDMEF message, UTF-8 SHALL be assumed.

   IDMEF applications MUST NOT use, and IDMEF messages MUST NOT be
   encoded in, character encodings other than UTF-8 and UTF-16. Note
   that since ASCII is a subset of UTF-8, it MAY be used to encode IDMEF
   messages.

Curry              Informational - Expires June 2001          [Page 35]


Internet Draft        IDMEF Data Model and XML DTD         December 2000


   Per the XML standard, IDMEF documents encoded in UTF-16 MUST begin
   with the Byte Order Mark described by ISO/IEC 10646 Annex E and
   Unicode Appendix B (the "ZERO WIDTH NO-BREAK SPACE" character,
   #xFEFF).


6.2.1. Character Entity References

   Within XML documents, certain characters have special meanings in
   some contexts. To include the actual character itself in one of these
   contexts, a special escape sequence, called an entity reference, must
   be used.

   The characters that sometimes need to be escaped, and their entity
   references, are:

          Character        Entity Reference
          ---------------------------------
              &                 &amp;
              <                 &lt;
              >                 &gt;
              "                 &quot;
              '                 &apos;

   It is RECOMMENDED that IDMEF applications use the entity reference
   form whenever writing these characters in data, to avoid any
   possibility of misinterpretation.


6.2.2. Character Code References

   Any character defined by the ISO/IEC 10646 standard may be included
   in an XML document by the use of a character reference. A character
   reference is started with the characters '&' and '#', and ended with
   the character ';'. Between these characters, the character code for
   the character inserted.

   If the character code is preceded by an 'x' it is interpreted in
   hexadecimal (base 16), otherwise, it is interpreted in decimal (base
   10). For instance, the ampersand (&) is encoded as &#38; or &#x0026;
   and the less-than sign (<) is encoded as &#60; or &#x003C;.

   Any one- or two-byte character specified in the Unicode standard can
   be included in a document using this technique.


6.2.3. White Space Processing

   XML preserves white space by default. The XML processor passes all
   white space characters to the application unchanged. This is much
   different from HTML (and SGML), in which, although the space/no space

Curry              Informational - Expires June 2001          [Page 36]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   distinction is meaningful, the one space/many spaces distinction is
   not.

   XML allows tags to identify the importance of white space in their
   content by using the "xml:space" attribute:

        <tagname xml:space="action">

   where "action" is either "default" or "preserve."

   If "action" is "preserve," the application MUST treat all white space
   in the tag's content as significant. If "action" is "default," the
   application is free to do whatever it normally would with white space
   in the tag's content.

   The intent declared with the "xml:space" attribute is considered to
   apply to all attributes and content of the element where it is
   specified, unless overridden with an instance of "xml:space" on
   another element within that content.

   All IDMEF tags support the "xml:space" attribute.


6.3. Languages in XML and IDMEF

   XML allows tags to identify the language their content is written in
   by using the "xml:lang" attribute:

        <tagname xml:lang="langcode">

   where "langcode" is a language tag as described in RFC 1766 [11].

   The intent declared with the "xml:lang" attribute is considered to
   apply to all attributes and content of the element where it is
   specified, unless overridden with an instance of "xml:lang" on
   another element within that content.

   IDMEF applications SHOULD specify the language in which their
   contents are encoded; in general this can be done by specifying the
   "xml:lang" attribute for the top-level <IDMEF-Message> tag.

   If no language is specified for an IDMEF message, English SHALL be
   assumed.

   All IDMEF tags support the "xml:lang" attribute.


6.4. Unrecognized Tags in IDMEF Messages

   On occasion, an IDMEF application may receive a well-formed, or even
   well-formed and valid, IDMEF message containing tags that it does not
   understand. The tags may be either:

Curry              Informational - Expires June 2001          [Page 37]


Internet Draft        IDMEF Data Model and XML DTD         December 2000


   + Recognized as "legitimate" (a valid document), but the application
      does not know the semantic meaning of the tag's content; or

   + Not recognized at all.

   IDMEF applications MUST continue to process IDMEF messages that
   contain unknown tags, provided that such messages meet the well-
   formedness requirement of Section 6.1.2. It is up to the individual
   application to decide how to process any content from the unknown
   tag(s).

6.5. Digital Signatures

   The joint IETF/W3C XML Signature Working Group is currently working
   to specify XML digital signature processing rules and syntax [12].
   XML Signatures provide integrity, message authentication, and/or
   signer authentication services for data of any type, whether located
   within the XML that includes the signature or elsewhere.

   The IDMEF requirements document assigns responsibility for message
   integrity and authentication to the communications protocol, not the
   message format. However, in situations where IDMEF messages are
   exchanged over other, less secure protocols, or in cases where the
   digital signatures must be archived for later use, the inclusion of
   digital signatures within an IDMEF message itself may be desirable.

   Specifications for the use of digital signatures within IDMEF
   messages are outside the scope of this document. However, use of the
   XML Signature standard is RECOMMENDED if such functionality is
   needed.






















Curry              Informational - Expires June 2001          [Page 38]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

7. IDMEF Data Types

   XML is a typeless language; everything is simply a stream of bytes,
   and it is left to the application to extract meaning from them.

   That being said, this specification makes the following rules to
   allow interoperability in interpreting IDMEF documents:

   1. Integer data MUST be encoded in either Base 10 or Base 16. Base 10
      encoding uses the digits '0' through '9' and an optional sign ('+'
      or '-'). Base 16 encoding uses the digits '0' through '9' and 'a'
      through 'f' (or their upper case equivalents), and is preceded by
      the characters "0x". For example, the number one hundred twenty-
      three would be encoded as "123" in Base 10, or "0x7b" in Base 16.

   2. Floating-point (real) data MUST be encoded in Base 10. The
      encoding is that of the POSIX strtod() function: an optional sign
      ('+' or '-') followed by a non-empty sequence of digits optionally
      containing a radix character, then an optional exponent part. An
      exponent part consists of an 'e' or 'E', followed by an optional
      sign, followed by one or more decimal digits.

   3. Character and character string data does not require quoting, as
      the IDMEF tags provide that functionality.

   4. Dates, as used in the <date> element, MUST be encoded as a four-
      digit year, two-digit month, and two-digit day, separated by
      dashes. The two-digit day and its corresponding dash MAY be
      omitted to represent an entire month. For example, March 13, 2000
      would be encoded as "2000-03-13", and December, 1999 would be
      encoded as "1999-12".

   5. Time of day, as used in the <time> element, MUST be encoded as a
      two-digit hour, two-digit minutes, and two-digit seconds,
      separated by colons. The two-digit seconds and corresponding colon
      MAY be omitted to represent times with less precision. The seconds
      field MAY be followed by a decimal point and fractional number of
      seconds, if more precision is needed. All times MUST be specified
      on a 24-hour clock. For example, 6:00 P.M. would be encoded as
      "18:00", 3:15:27 A.M. would be encoded as "03:15:27", and two-
      tenths of a second past midnight would be encoded as "00:00:00.2".

   6. NTP timestamps, as used in the <ntpstamp> element, are described
      in detail in [13]. NTP timestamps are represented as a 64-bit
      unsigned fixed-point number containing seconds relative to 0h on 1
      January 1900. The integer part is in the first 32 bits and the
      fraction part in the last 32 bits. Within IDMEF messages, these
      timestamps MUST be encoded as two 32-bit hexadecimal values,
      separated by a period ("."), for example, "0x123.0x456".

   7. Port lists, as used in the <portlist> element, are encoded as a
      comma-separated list of numbers (individual integers) and ranges

Curry              Informational - Expires June 2001          [Page 39]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

      (N-M means ports N through M, inclusive). Any combination of
      numbers and ranges may be used in a single list. For example: 5-
      25,37,42,43,53,69-119,123-514.

   8. The identification numbers used with the "sourceid" attribute of
      the <Source> element, the "targetid" attribute of the <Target>
      element, and the "ident" attribute of the <Address>, <Node>,
      <Process>, <Service> and <User> elements MUST be unique for each
      particular combination of elements and sub-elements. Each time the
      same entity is identified in the same way, this number SHOULD be
      the same. Note, though, that if the same entity is identified in
      two different ways (e.g., once by host name and once by IP
      address), two different id numbers MUST be generated. A value of 0
      indicates that the analyzer is not capable of identifying these
      entities uniquely.

      - An easy, albeit overly complex, way to accomplish this would be
         to compute the cryptographic checksum of the element and its
         sub-elements.)

      - The above does not apply to the "alertid" attribute of the
         <Alert> element, the "heartbeatid" attribute of the <Heartbeat>
         element, or the "ident" attribute of the <Analyzer> attribute,
         which have different rules.





























Curry              Informational - Expires June 2001          [Page 40]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

8. Structure of an IDMEF Message

   This section describes the individual elements and attributes that
   make up an IDMEF message. It is organized in a somewhat "top down"
   manner, in that the more significant elements are described first,
   followed by the less significant ones.

   A description of the element is provided, followed by a list of the
   element's attributes, and then a list of the sub-elements that the
   element may contain.

   For attributes, the notation "required" indicates that a value for
   the attribute must be specified, while "optional" indicates that a
   value is not required. All optional attributes have default values
   that the manager (XML parser) will assume if no other value is
   provided.

   For sub-elements, the number of times the element may occur is given.
   Possible values are "exactly one," "zero or one," "zero or more," and
   "one or more." Except as stated otherwise, sub-elements must occur in
   the order shown.


8.1. The IDMEF-Message Root Element

   An IDMEF message (document) contains one or more alerts and other
   message types (see below). The <IDMEF-Message> element represents
   this; all other elements are sub-elements of <IDMEF-Message>. Put
   another way, <IDMEF-Message> is the root element of an IDMEF
   document.

   The <IDMEF-Message> element has one attribute:

   version
   - Optional. The version of the IDMEF message specification this
      message conforms to; messages conforming to the format described
      in this memo MUST use "0.1" as the value for this attribute.

   The <IDMEF-Message> element may contain the following sub-elements,
   in any order:

   <Alert>
   - Zero or more. Description of an intrusion detection alert. The
      data model specifies the contents of this element type.

   <Heartbeat>
   - Zero or more. Data about the "health" of the analyzer. This is an
      extension element, not specified in the data model.


8.2. The Message Type Elements


Curry              Informational - Expires June 2001          [Page 41]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   There are two types of IDMEF message: <Alert>, and <Heartbeat>. These
   elements are sub-elements of the <IDMEF-Message> element.

8.2.1. Alert

   The <Alert> element implements the ALERT class described in Section
   4.2.1. It is used to describe an alert. It contains the name of the
   analyzer that generated the alert, the event that caused the alert to
   be generated, and information about the source(s) and target(s) of
   the event.

   The <Alert> element has the following attributes:

   alertid
      Required. A serial number for the alert.  This number MUST be
      unique for every alert generated by a given analyzer. The default
      value is 0, which indicates that the analyzer cannot provide this
      information reliably.

   impact
      Required. The evaluated impact of the event on the system. The
      list of acceptable values is [unknown, bad-unknown, not-
      suspicious, attempted-admin, successful-admin, attempted-dos,
      successful-dos, attempted-recon, successful-recon-limited,
      successful-recon-largescale, attempted-user, successful-user],
      refer to Section 4.2.1 for the significance of the keywords.

   version
      Required. The version of the class hierarchy used. Messages
      conforming to the format described in this memo MUST use "1" as
      the value for this attribute.

   The <Alert> element has the following sub-elements:

   <Time>
      Exactly one. The time the alert was generated.

   <Analyzer>
      Exactly one. The analyzer sending the alert.

   <Classification>
      One or more. The name of the vulnerability (event causing the
      alert).

   <Source>
      Zero or more. The source(s) of the event/attack.

   <Target>
      Zero or more. The target(s) of the event/attack.

   <ToolAlert>
      Zero or one. Information about the tool that caused the event.

Curry              Informational - Expires June 2001          [Page 42]


Internet Draft        IDMEF Data Model and XML DTD         December 2000


   <OverflowAlert>
      Zero or one. Information about buffer-overflow events.

   <CorrelationAlert>
      Zero or one. Identifies the alerts used in the correlation.

   <AdditionalData>
      Zero or more. Additional information provided.


8.2.1.1. CorrelationAlert

   The <CorrelationAlert> sub-element of <Alert> is used to provide
   additional information about alert correlation activities. It has one
   sub-element:

   <alertid>
      One or more. The "alertid" strings of the alerts that were used by
      the correlation engine to generate this alert.


8.2.1.2. OverflowAlert

   The <OverflowAlert> sub-element of <Alert> is used to provide
   additional information when the alert is the result of a buffer
   overflow attack. It has three sub-elements:

   <program>
      Exactly one. The program that the overflow attempted to run.

   <size>
      Exactly one. The size, in bytes, of the overflowing buffer.

   <buffer>
      Zero or one. Some or all of the data that was sent to the program.


8.2.1.3. ToolAlert

   The <ToolAlert> sub-element of <Alert> is used to provide additional
   information when the analyzer recognizes the use of a particular
   attack tool or Trojan horse.  This may allow the analyzer to group
   alerts it has already received into a single "meta-alert" for display
   purposes. <ToolAlert> has three sub-elements:

   <name>
      Exactly one. The reason for grouping the alerts, e.g., the name of
      an attack tool.

   <command>


Curry              Informational - Expires June 2001          [Page 43]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

      Zero or one. The command or operation the tool was asked to
      perform.

   <alertid>
      Zero or more. The alerts that have been identified as being
      related to the name.


8.2.2. Heartbeat

   The <Heartbeat> element is used by an analyzer to provide status to a
   manager. In its simplest form, the heartbeat simply indicates to the
   manager that the analyzer is still up and running.  In more complex
   forms, it can be used to communicate information such as restarts,
   ruleset reloads, disk and/or memory consumption statistics, and so
   on.

   The <Heartbeat> element has the following attribute:

   heartbeatid
      Required. A serial number for the heartbeat. This string SHOULD be
      unique for every heartbeat generated by a given analyzer. It MUST
      NOT be possible to confuse a "heartbeatid" with an "alertid" from
      the same analyzer.

   The <Heartbeat> element has the following sub-elements:

   <Time>
      Exactly one. The time the heartbeat was generated.

   <Analyzer>
      Exactly one. The analyzer sending the heartbeat.

   <AdditionalData>
      Zero or more. Additional information provided. See Examples 9.4
      and 9.6 for suggested usage.


8.3. Time Elements

   The IDMEF data model provides for one piece of time data, the alert
   generation time.  This specification extends that, adding the event
   detection time (which, especially in the case of correlation, may be
   quite different from the alert generation time), and current analyzer
   time.


8.3.1. Time

   The <Time> element provides the time at which the alert or heartbeat
   was sent by the analyzer.


Curry              Informational - Expires June 2001          [Page 44]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   The <Time> element has the following attribute:

   offset
      Optional. Specifies the offset from Coordinated Universal
      Time(UTC, formerly referred to as "Greenwich Mean Time") that the
      <date> and <time> elements represent. A "+" or "-" indicates
      whether the <time> is ahead of (i.e., east of) or behind (i.e.,
      west of) Universal Time.  The first two digits indicate the number
      of hours difference from Universal Time, and the last two digits
      indicate the number of minutes difference from Universal Time.
      (Hence, "+hhmm" means +(hh * 60 + mm) minutes, and "-hhmm" means -
      (hh * 60 + mm) minutes). The form "+0000" SHOULD be used to
      indicate a time zone at Universal Time. Though "-0000" also
      indicates Universal Time, it is used to indicate that the time was
      generated on a system that may be in a local time zone other than
      Universal Time and therefore indicates that the <date>/<time>
      contains no information about the local time zone. Default value:
      "+0000".

   The <Time> element has the following sub-elements:

   <ntpstamp>
      Exactly one. The NTP timestamp. See Section 7 for formatting
      details.

   <date>
      Exactly one. The date. See Section 7 for formatting details.

   <time>
      Exactly one. The time. See Section 7 for formatting details.

   <DetectTime>
      Zero or one. The time the event was detected.

   <AnalyzerTime>
      Zero or one. The current date and time on the analyzer.

   In the event of a discrepancy between the time contained in the
   <ntpstamp> element and the time contained in the <date> and <time>
   elements, the time in the <ntpstamp> element shall prevail.


8.3.2. DetectTime

   The <DetectTime> element provides the time the event that generated
   this alert was detected.  This may be quite different from the time
   the alert was generated.

   The <DetectTime> element has one attribute, "offset," and three sub-
   elements, <ntpstamp>, <date>, and <time>, as described in Section
   8.3.1, above.


Curry              Informational - Expires June 2001          [Page 45]


Internet Draft        IDMEF Data Model and XML DTD         December 2000


8.3.3. AnalyzerTime

   The <AnalyzerTime> element provides the current date and time on the
   analyzer.  By comparing this to its own date and time, a manager can
   compute an "adjustment" to the other times in this element,
   compensating for unsynchronized clocks.

   The <AnalyzerTime> element has one attribute, "offset," and three
   sub-elements, <ntpstamp>, <date>, and <time>, as described in Section
   8.3.1, above.


8.4. High-Level Entity Identification Elements

   There are three "high-level" entities in the IDMEF model: analyzers,
   sources, and targets.  The elements described in this section are
   used to contain the identification of those entities.


8.4.1. Analyzer

   The <Analyzer> element contains all the information that describes
   the analyzer sending the current message.  Only one analyzer may be
   encoded for each alert.  The data model does not provide a way to
   record a "stream" of analyzers (as would occur in a hierarchical
   intrusion detection system, where alerts get relayed up the tree).
   The data model does not prevent this architecture, but it doesn't
   provide any way to keep track of the relays along the path from the
   analyzer to the manager that ultimately receives the alert.

   The <Analyzer> element has the following attribute:

   ident
      Required. Analyzer identification token. This token MUST be unique
      within the communicating analyzers and managers.

   The <Analyzer> element has the following sub-elements:

   <Node>
      Zero or one. Identification of the equipment on which the analyzer
      resides.

   <Process>
      Zero or one. Process information concerning the analyzer.

8.4.2. Target

   The <Target> element implements the TARGET class defined in Section
   0. It contains all the information about the target of an event. An
   event may have multiple targets (e.g., in the case of a port sweep).


Curry              Informational - Expires June 2001          [Page 46]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   The <Target> element has the following attributes:

   targetid
      Optional. See Section 7 for formatting details.

   decoy
      Required. An indication of whether the analyzer believes this to
      be the true target of the event. The list of acceptable values is
      [unknown, yes, no], refer to Section 0 for the significance of the
      keywords.

   The <Target> element has the following sub-elements:

   <Node>
      Zero or one. Host/device name and address information.

   <User>
      Zero or one. User information.

   <Process>
      Zero or one. Process information.

   <Service>
      Zero or one. Service information.


8.4.3. Source

   The <Source> element implements the SOURCE class defined in Section
   4.2.9. It contains all the information about the source of an event.
   An event may have multiple sources (e.g., in the case of a
   distributed denial-of-service attack).

   The <Source> element has the following attributes:

   sourceid
      Optional. See Section 7 for formatting details.

   spoofed
      Required. An indication of whether the analyzer believes this to
      be the true source of the event. The list of acceptable values is
      [unknown, yes, no], refer to Section 4.2.9 for the significance of
      the keywords.

   The <Source> element has the following sub-elements:

   <Node>
      Zero or one. Host/device name and address information.

   <User>
      Zero or one. User information.


Curry              Informational - Expires June 2001          [Page 47]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   <Process>
      Zero or one. Process information.


8.5. Low-Level Entity Identification Elements

   Several elements are used to provide additional details used to
   identify entities.  These elements are all sub-elements of the
   <Alert>, <Analyzer>, <Source>, and <Target> elements.

8.5.1. Address

   The <Address> element implements the ADDRESS class described in
   Section 4.2.10.2. It provides addressing information for hosts,
   networks, and users.

   The <Address> element has the following attributes:

   ident
      Optional. See Section 7 for formatting details.

   category
      Required. The type of address provided. The list of acceptable
      values is [unknown, atm, e-mail, lotus-notes, mac, sna, vm, ipv4-
      addr, ipv4-addr-hex, ipv4-net, ipv4-net-mask, ipv6-addr, ipv6-net,
      ipv6-net-mask], refer to Section 4.2.10.2 for the significance of
      the keywords.

   The <Address> element has two sub-elements:

   <address>
      Required. The address information.

   <netmask>
      Optional. The network mask, if appropriate (depending on the value
      of the "category" attribute).


8.5.2. Classification

   The <Classification> element implements the CLASSIFICATION class
   defined in Section 4.2.6. It provides the name of the event
   (vulnerability) that caused this alert to be generated.  Names may
   come from several sources.

   The <Classification> element has the following attribute:

   origin
      Optional. The origin of the name. The list of acceptable values is
      [unknown, bugtraqid, cve, vendor specific], refer to Section 4.2.6
      for the significance of the keywords. Possible values:


Curry              Informational - Expires June 2001          [Page 48]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   The <Name> element has two sub-elements:

   <name>
      Required. The name of the vulnerability.

   <url>
      Required. The URL at which the manager can find more information
      about the vulnerability and/or the alert.


8.5.3. Node

   The <Node> element implements the NODE class defined in section
   4.2.10.4. It provides identification of hosts and network equipment.

   The <Node> element has the following attributes:

   ident
      Optional. See Section 7 for formatting details.

   category
      Optional. The domain to which the provided information belongs, if
      relevant. The list of acceptable values is [unknown, ads, afs,
      coda, dfs, dns, kerberos, nds, nis, nisplus, nt, wfw], refer to
      Section 4.2.10.4 for the significance of the keywords.

   The <Node> element has the following sub-elements:

   <name>
      Zero or one if <Address> information is provided; exactly one
      otherwise. The equipment's fully qualified domain name.

   <location>
      Zero or one. The equipment's physical location.

   <Address>
      Zero or more. The equipment's network address(es).


8.5.4. Process

   The <Process> element implements the PROCESS class defined in Section
   4.2.10.5. It provides information about a process being run
   on a node.

   The <Process> element has the following attribute:

   ident
      Optional. See Section 7 for formatting details.

   The <Process> element has the following sub-elements:


Curry              Informational - Expires June 2001          [Page 49]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   <name>
      Exactly one. The name of the process.

   <pid>
      Zero or one. The system process identifier.

   <path>
      Zero or one. The path name of the program being run.

   <Arguments>
      Zero or one. The arguments to the process.

   <Environment>
      Zero or one. The environment variables associated with the
      process.


8.5.5. Service

   The <Service> element implements the SERVICE class defined in Section
   4.2.11. It provides information about a service being provided by a
   node, and also to provide information about connections and
   connection attempts.

   The <Service> element has the following attribute:

   ident
      Required. See Section 7 for formatting details.

   The <Service> element has the following sub-elements:

   <name>
      Zero or one. Name of the service. This SHOULD be listed in the
      IANA list of well-known ports.

   <dport>
      Zero or one. Destination port number of the service (port number
      to which the connection is addressed).

   <sport>
      Zero or one. Source port number of the service (port number from
      which the connection originates).

   <protocol>
      Zero or one. Protocol implemented by the service.

   <portlist>
      Zero or one. List of ports (identifies multiple services). See
      Section 7 for formatting details.

   <SNMPService>
      Zero or one. Additional information about SNMP services.

Curry              Informational - Expires June 2001          [Page 50]


Internet Draft        IDMEF Data Model and XML DTD         December 2000


   <WebService>
      Zero or one. Additional information about web-based services.


8.5.5.1. SNMPService

   The <SNMPService> element provides additional information about SNMP
   services.

   The <SNMPService> element has the following attribute:

   ident
      Optional. See Section 7 for formatting details.

   The <SNMPService> element has the following sub-elements:

   <oid>
      Zero or one. The object identifier used in a request.

   <community>
      Zero or one. The object's community.

   <command>
      Zero or one. The command.


8.5.5.2. WebService

   The <WebService> element provides additional information about web-
   based services.

   The <WebService> element has the following attribute:

   ident
      Optional. See Section 7 for formatting details.

   The <WebService> element has the following sub-elements:

   <url>
      Exactly one. The URL in the request.

   <cgi>
      Zero or one. The CGI script in the request (without arguments)

   <method>
      Zero or one. The method used for the request.

   <Arguments>
      Zero or one. The arguments passed to the CGI script.



Curry              Informational - Expires June 2001          [Page 51]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

8.5.6. User

   The <User> element implements the USER class defined in Section
   4.2.10.3. It identifies users of nodes.

   The <User> element has the following attributes:

   ident
      Optional. See Section 7 for formatting details.

   category
      Required. The type of user information provided. The list of
      acceptable values is [unknown, application, os-device], refer to
      Section 4.2.10.3 for the significance of the keywords.

   The <User> element has the following sub-elements:

   <name>
      Zero or one if <uid> information is provided; exactly one
      otherwise. The user name.

   <uid>
      Zero or one if <name> information is provided; exactly one
      otherwise. The user id.

   <group>
      Zero or one. The name of the group or domain the user is in.

   <gid>
      Zero or one. The group id.

   <serial>
      Zero or one. The user's serial number or other unique identifier.

   <Address>
      Zero or more. Addresses associated with the user (e.g., an e-mail
      address).


8.6. Simple Elements

   The elements described in this section are "simple" elements -- they
   have no special attributes associated with them, and they have no
   sub-elements.  These elements are the lowest level of an IDMEF
   document; they contain the actual alert data.


8.6.1. address

   The <address> element contains a network address. It is a sub-element
   of the <Address> element.


Curry              Informational - Expires June 2001          [Page 52]


Internet Draft        IDMEF Data Model and XML DTD         December 2000


8.6.2. alertid

   The <alertid> element contains an alert identifier (the "alertid"
   attribute of an <Alert> element).  It is a sub-element of the
   <CorrelationAlert> and <ToolAlert> elements.


8.6.3. Arguments

   The <Arguments> element contains a list of process arguments.

   The <Arguments> element has one sub-element:

   <arg>
      One or more. An argument.

   The <Arguments> element is a sub-element of the <Process> and
   <WebService> elements.


8.6.3.1. arg

   The <arg> element contains a single process argument string.  It is a
   sub-element of the <Arguments> element.


8.6.4. buffer

   The <buffer> element contains some or all of the data that was sent
   to a program during a buffer-overflow attack.  It is a sub-element of
   the <OverflowAlert> element.


8.6.5. cgi

   The <cgi> element contains the name of a CGI script.  It is a sub-
   element of the <WebService> element.


8.6.6. command

   The <command> element contains a program name or an SNMP command. It
   is a sub-element of the <ToolAlert> and <SNMPService> elements.


8.6.7. community

   The <community> element contains an SNMP community name. It is a sub-
   element of the <SNMPService> element.



Curry              Informational - Expires June 2001          [Page 53]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

8.6.8. date

   The <date> element contains a date string. See Section 7 for
   formatting details. The <date> element is a sub-element of the
   <AnalyzerTime>, <DetectTime>, and <Time> elements.


8.6.9. dport

   The <dport> element contains a destination port number. It is a sub-
   element of the <Service> element.


8.6.10. Environment

   The <Environment> element contains a list of process environment
   variables.

   The <Environment> element has one sub-element:

   <env>
      One or more. An environment variable.

   The <Environment> element is a sub-element of the <Process> element.


8.6.10.1. env

   The <env> element contains a single process environment string. It is
   a sub-element of the <Environment> element.


8.6.11. gid

   The <gid> element contains a group identifier. It is a sub-element of
   the <User> element.


8.6.12. group

   The <group> element contains a group name. It is a sub-element of the
   <User> element.


8.6.13. location

   The <location> element contains the physical location of a host or
   piece of network equipment.  It is a sub-element of the <Node>
   element.




Curry              Informational - Expires June 2001          [Page 54]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

8.6.14. method

   The <method> element contains the HTTP method used to access a web
   service.  It is a sub-element of the <WebService> element.


8.6.15. name

   The <name> element contains the name of a host, piece of network
   equipment, process, service, user, or attack tool.  The <name>
   element is a sub-element of the <Classification>, <Node>, <Process>,
   <Service>, <ToolAlert>, and <User> elements.


8.6.16. netmask

   The <netmask> element contains a network mask.  It is a sub-element
   of the <Address> element.


8.6.17. ntpstamp

   An NTP timestamp. See Section 7 for formatting details. It is a sub-
   element of the <Time>, <AnalyzerTime>, and <DetectTime> elements.


8.6.18. oid

   The <oid> element contains an SNMP object identifier. It is a sub-
   element of the <SNMPService> element.


8.6.19. path

   The <path> element contains the path name of a program. It is a sub-
   element of the <Process> element.


8.6.20. pid

   The <pid> element contains a process identifier.  It is a sub-element
   of the <Process> element.


8.6.21. portlist

   The <portlist> element contains a list of port numbers. See Section 7
   for formatting details. The <portlist> element is a sub-element of
   the <Service> element.




Curry              Informational - Expires June 2001          [Page 55]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

8.6.22. program

   The <program> element contains the name of a program. It is a sub-
   element of the <OverflowAlert> element.


8.6.23. protocol

   The <protocol> element contains the name of a protocol. It is a sub-
   element of the <Service> element.


8.6.24. serial

   The <serial> element contains a person's serial number or other
   unique identifying information.  It is a sub-element of the <User>
   element.


8.6.25. size

   The <size> element contains a buffer (data) size, in bytes. It is a
   sub-element of the <OverflowAlert> element.


8.6.26. sport

   The <sport> element contains a source port number. It is a sub-
   element of the <Service> element.


8.6.27. time

   The <time> element contains a time string.  See Section 7 for
   formatting details.  The <time> element is a sub-element of the
   <AnalyzerTime>, <DetectTime>, and <Time> elements.


8.6.28. url

   The <url> element contains a Universal Resource Locator.  It is a
   sub-element of the <Classification> and <WebService> elements.


8.6.29. uid

   The <uid> element implements the USERID class defined in Section
   4.2.10.3. It contains a user identifier. It is a sub-element of the
   <User> element.




Curry              Informational - Expires June 2001          [Page 56]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

8.7. Providing Additional Information

   This specification allows vendors to provide arbitrary information in
   an alert (or heartbeat) without having to modify the DTD. This is
   done by using the <AdditionalData> element.


8.7.1. AdditionalData

   The <AdditionalData> implements the ADDITIONALDATA class defined in
   Section 4.2.7. This element is used to provide arbitrary information
   in an alert or heartbeat that does not "fit" anywhere else in the
   message.

   The <AdditionalData> element has two attributes:

   meaning
      Optional. A string that describes the meaning of the data in this
      element. These strings will be implementation-dependent.

   type
      Optional. The type of the data in this element. Possible values:
      ["byte", "boolean", "character", "date", "integer", "ntpstamp",
      "real", "string", "time"], refer to Section 4.2.7 for the
      significance of the keywords.

   The <AdditionalData> element has no sub-elements.  It is a sub-
   element of the <Alert> and <Heartbeat> elements.


9. Examples

   The examples shown in this section demonstrate how the IDMEF is used
   to encode alert data.  The first eight examples are taken from [4],
   and show how the IDMEF format relates to the Debar/Huang/Donahoo
   class hierarchy.

   These examples are for demonstration purposes only.  They do not
   necessarily represent the only (or even the "best") way to encode a
   particular alert, and should not be construed as guidelines on how
   particular alerts should be classified.


9.1. Denial of Service Attacks

   The following examples show how some common denial of service attacks
   could be represented in the IDMEF.


9.1.1. The "teardrop" Attack



Curry              Informational - Expires June 2001          [Page 57]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   Network-based detection of the "teardrop" attack.  This shows the
   basic format of an alert.

   <?xml version="1.0" encoding="UTF-8"?>

   <!DOCTYPE IDMEF-Message PUBLIC "-//IETF//DTD RFCxxxx IDMEF v0.1//EN"
     "idmef-message.dtd">

      <IDMEF-Message version="0.1">
        <Alert alertid="12345.123456789" impact="successful-dos">
          <Time offset="-0500">
            <ntpstamp>0x12345.0x67890</ntpstamp>
            <date>2000/03/09</date>
            <time>10:01:25.93464</time>
          </Time>
          <Analyzer ident="12345">
            <Node category="dns">
              <location>Headquarters DMZ Network</location>
              <name>analyzer01.bigcompany.com</name>
            </Node>
          </Analyzer>
          <Classification origin="bugtraqid">
            <name>124</name>
            <url>http://www.securityfocus.com</url>
          </Classification>
          <Source>
            <Node  ident="12345.s7beae779" category="dns">
              <name>badguy.hacker.net</name>
              <Address category="ipv4-addr">
                <address>123.234.231.121</address>
                <netmask>255.255.255.255</netmask>
              </Address>
            </Node>
          </Source>
          <Target>
            <Node ident="12345.tde796f70" category="dns">
              <Address category="ipv4-addr-hex">
                <address>de796f70</address>
              </Address>
            </Node>
          </Target>
        </Alert>
      </IDMEF-Message>


9.1.2. The "ping of death" Attack

   Network-based detection of the "ping of death" attack.  Note the
   identification of multiple targets, and the identification of the
   source as a spoofed address.

      <?xml version="1.0" encoding="UTF-8"?>

Curry              Informational - Expires June 2001          [Page 58]


Internet Draft        IDMEF Data Model and XML DTD         December 2000


      <!DOCTYPE IDMEF-Message PUBLIC "-//IETF//DTD RFCxxxx IDMEF
   v0.1//EN"
        "idmef-message.dtd">

      <IDMEF-Message version="0.1">
        <Alert alertid="1234567890" impact="attempted-dos">
          <Time offset="+0000">
            <ntpstamp>0x12345.0x67890</ntpstamp>
            <date>2000/03/09</date>
            <time>10:01:25.93464</time>
          </Time>
          <Analyzer ident="123123123">
            <Node category="dns">
              <name>sensor.bigcompany.com</name>
            </Node>
          </Analyzer>
          <Classification origin="cve">
            <name>CVE-1999-128</name>
            <url>http://www.cve.mitre.org/</url>
          </Classification>
          <Source spoofed="yes">
            <Node>
              <Address category="ipv4-addr">
                <address>222.121.111.112</address>
              </Address>
            </Node>
          </Source>
          <Target>
            <Node>
              <Address category="ipv4-addr">
                <address>123.234.231.121</address>
              </Address>
            </Node>
          </Target>
          <Target>
            <Node category="nisplus">
              <name>lollipop</name>
            </Node>
          </Target>
          <Target>
            <Node>
              <location>Cabinet B10</location>
              <name>Cisco.router.b10</name>
            </Node>
          </Target>
        </Alert>
      </IDMEF-Message>


9.2. Port Scanning Attacks


Curry              Informational - Expires June 2001          [Page 59]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   The following examples show how some common port scanning attacks
   could be represented in the IDMEF.


9.2.1. Connection to a Disallowed Service

   Host-based detection of a policy violation (attempt to obtain
   information via "finger").  Note the identification of the target
   service, as well as the originating user (obtained, e.g., via RFC
   1413).

      <?xml version="1.0" encoding="UTF-8"?>

      <!DOCTYPE IDMEF-Message PUBLIC "-//IETF//DTD RFCxxxx IDMEF
   v0.1//EN"
        "idmef-message.dtd">

      <IDMEF-Message version="0.1">
        <Alert alertid="1234567890" impact="attempted-recon">
          <Time offset="+0200">
            <ntpstamp>0x12345.0x67890</ntpstamp>
            <date>2000/03/09</date>
            <time>18:47:25</time>
          </Time>
          <Analyzer ident="123123123">
            <Node category="dns">
              <name>sensor.bigcompany.com</name>
            </Node>
          </Analyzer>
          <Classification origin="vendor-specific">
            <name>finger</name>
            <url>http://www.vendor.com/finger</url>
          </Classification>
          <Source>
            <Node>
              <Address category="ipv4-addr">
                <address>222.121.111.112</address>
              </Address>
            </Node>
          </Source>
          <Target>
            <Node category="nis">
              <name>myhost</name>
              <Address category="ipv4-addr">
                <address>123.234.231.121</address>
              </Address>
            </Node>
            <Service>
              <name>finger</name>
              <dport>79</dport>
              <sport>31532</sport>
            </Service>

Curry              Informational - Expires June 2001          [Page 60]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

          </Target>
          <Target>
            <Node>
              <Address category="ipv4-addr">
                <address>222.121.111.112</address>
              </Address>
            </Node>
            <User category="os-device">
              <name>badguy</name>
            </User>
          </Target>
        </Alert>
      </IDMEF-Message>


9.2.2. Simple Port Scanning

   Network-based detection of a port scan.  This shows detection by a
   single analyzer; see Example 7.5 for the same attack as detected by a
   correlation engine.  Note the use of the <portlist> element to show
   the ports that were scanned.

      <?xml version="1.0" encoding="UTF-8"?>

      <!DOCTYPE IDMEF-Message PUBLIC
     "-//IETF//DTD RFCxxxx IDMEF v0.1//EN""idmef-message.dtd">

      <IDMEF-Message version="0.1">
        <Alert alertid="12345.987654321"
         impact="successful-recon-limited">
          <Time offset="-0800">
            <ntpstamp>0x12345.0x67890</ntpstamp>
            <date>2000/03/09</date>
            <time>15:31</time>
          </Time>
          <Analyzer ident="12345">
            <Node category="dns">
              <location>Headquarters Web Server</location>
              <name>analyzer62.bigcompany.com</name>
            </Node>
          </Analyzer>
          <Classification origin="vendor-specific">
            <name>portscan</name>
            <url>http://www.vendor.com/portscan</url>
          </Classification>
          <Source>
            <Node>
              <Address category="ipv4-addr">
                <address>222.121.111.112</address>
              </Address>
            </Node>
          </Source>

Curry              Informational - Expires June 2001          [Page 61]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

          <Target>
            <Node category="dns">
              <name>www.bigcompany.com</name>
              <Address category="ipv4-addr">
                <address>123.234.231.121</address>
              </Address>
            </Node>
            <Service>
              <portlist>5-25,37,42,43,53,69-119,123-514</portlist>
            </Service>
          </Target>
        </Alert>
      </IDMEF-Message>


9.3. Local Attacks

   The following examples show how some common local host attacks could
   be represented in the IDMEF.


9.3.1. The "loadmodule" Attack

   Host-based detection of the "loadmodule" exploit.  This attack
   involves tricking the "loadmodule" program to run another program;
   since "loadmodule" is set-user-id "root," the executed program runs
   with super-user privileges.  Note the use of the <User> and <Process>
   elements to identify the user attempting the exploit and how he's
   doing it.

      <?xml version="1.0" encoding="UTF-8"?>

      <!DOCTYPE IDMEF-Message PUBLIC
        "-//IETF//DTD RFCxxxx IDMEF v0.1//EN""idmef-message.dtd">

      <IDMEF-Message version="0.1">
        <Alert alertid="345097" impact="attempted-admin">
          <Time offset="-0500">
            <ntpstamp>0x12345.0x67890</ntpstamp>
            <date>2000/03/09</date>
            <time>08:12:32.3</time>
          </Time>
          <Analyzer ident="372">
            <Node category="dns">
              <name>fileserver.bigcompany.com</name>
            </Node>
            <Process>
              <name>monitor</name>
              <pid>8956</pid>
              <Arguments>
                <arg>monitor</arg><arg>-d</arg>
                <arg>-m</arg><arg>idmanager.bigcompany.com</arg>

Curry              Informational - Expires June 2001          [Page 62]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

                <arg>-l</arg><arg>/var/logs/idlog</arg>
              </Arguments>
            </Process>
          </Analyzer>
          <Classification origin="bugtraqid">
            <name>33</name>
            <url>http://www.securityfocus.com</url>
          </Classification>
          <Source>
            <User category="os-device">
              <name>joe</name>
              <uid>13243</uid>
            </User>
            <Process>
              <name>loadmodule</name>
              <path>/usr/openwin/bin</path>
            </Process>
          </Source>
          <Target>
            <Node category="dns">
              <name>fileserver.bigcompany.com</name>
            </Node>
          </Target>
        </Alert>
      </IDMEF-Message>

   The IDS could also indicate that the target user is the "root" user;
   the alert might then look like:

      <?xml version="1.0" encoding="UTF-8"?>

      <!DOCTYPE IDMEF-Message PUBLIC
        "-//IETF//DTD RFCxxxx IDMEF v0.1//EN""idmef-message.dtd">

      <IDMEF-Message version="0.1">
        <Alert alertid="345097" impact="attempted-admin">
          <Time offset="-0500">
            <ntpstamp>0x12345.0x67890</ntpstamp>
            <date>2000/03/09</date>
            <time>08:12:32.3</time>
          </Time>
          <Analyzer ident="372">
            <Node category="dns">
              <name>fileserver.bigcompany.com</name>
            </Node>
            <Process>
              <name>monitor</name>
              <pid>8956</pid>
              <Arguments>
                <arg>monitor</arg><arg>-d</arg>
                <arg>-m</arg><arg>idmanager.bigcompany.com</arg>
                <arg>-l</arg><arg>/var/logs/idlog</arg>

Curry              Informational - Expires June 2001          [Page 63]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

              </Arguments>
            </Process>
          </Analyzer>
          <Classification origin="bugtraqid">
            <name>33</name>
            <url>http://www.securityfocus.com</url>
          </Classification>
          <Source>
            <User category="os-device">
              <name>joe</name>
              <uid>13243</uid>
            </User>
            <Process>
              <name>loadmodule</name>
              <path>/usr/openwin/bin</path>
            </Process>
          </Source>
          <Target>
            <Node category="dns">
              <name>fileserver.bigcompany.com</name>
            </Node>
            <User category="os-device">
              <name>root</name>
              <uid>0</uid>
            </User>
            <Process>
              <name>sh</name>
              <pid>25134</pid>
              <path>/bin/sh</path>
            </Process>
          </Target>
        </Alert>
      </IDMEF-Message>


9.3.2. The "phf" Attack

   Network-based detection of the "phf" attack.  Note the use of the
   <WebService> element to provide more details about this particular
   attempt.

      <?xml version="1.0" encoding="UTF-8"?>

      <!DOCTYPE IDMEF-Message PUBLIC
        "-//IETF//DTD RFCxxxx IDMEF v0.1//EN""idmef-message.dtd">

      <IDMEF-Message version="0.1">
        <Alert alertid="1234567890" impact="attempted-recon">
          <Time offset="-0100">
            <ntpstamp>0x12345.0x67890</ntpstamp>
            <date>2000/03/09</date>
            <time>08:12:32</time>

Curry              Informational - Expires June 2001          [Page 64]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

          </Time>
          <Analyzer ident="123123123">
            <Node category="dns">
              <name>sensor.bigcompany.com</name>
            </Node>
          </Analyzer>
          <Classification origin="bugtraqid">
            <name>629</name>
            <url>http://www.securityfocus.com</url>
          </Classification>
          <Source>
            <Node>
              <Address category="ipv4-addr">
                <address>222.121.111.112</address>
              </Address>
            </Node>
          </Source>
          <Target>
            <Node category="dns">
              <name>www.bigcompany.com</name>
              <Address category="ipv4-addr">
                <address>123.45.67.89</address>
              </Address>
            </Node>
            <Service>
              <dport>8080</dport>
              <sport>21534</sport>
              <WebService>
                <url>
                  http://www.bigcompany.com/cgi-bin/phf?/etc/group
                </url>
                <cgi>/cgi-bin/phf</cgi>
                <method>GET</method>
              </WebService>
            </Service>
          </Target>
        </Alert>
      </IDMEF-Message>


9.4. System Policy Violation

   In this example, logins are restricted to daytime hours.  The alert
   reports a violation of this policy that occurs when a user logs in a
   little after 10:00pm.  Example of a policy violation.  Note the use
   of <AdditionalData> elements to provide information about the policy
   being violated.

      <?xml version="1.0" encoding="UTF-8"?>

      <!DOCTYPE IDMEF-Message PUBLIC
        "-//IETF//DTD RFCxxxx IDMEF v0.1//EN""idmef-message.dtd">

Curry              Informational - Expires June 2001          [Page 65]


Internet Draft        IDMEF Data Model and XML DTD         December 2000


      <IDMEF-Message version="0.1">
        <Alert alertid="1234567890" impact="attempted-user">
          <Time offset="-0500">
            <ntpstamp>0x12345.0x67890</ntpstamp>
            <date>2000/03/09</date>
            <time>22:18:07</time>
          </Time>
          <Analyzer ident="999888777.1">
            <Node category="dns">
              <name>dialserver.bigcompany.com</name>
            </Node>
          </Analyzer>
          <Classification origin="vendor-specific">
            <name>out-of-hours activity</name>
            <url>http://my.company.com/policies</url>
          </Classification>
          <Source>
            <Node>
              <Address category="ipv4-addr">
                <address>127.0.0.1</address>
              </Address>
            </Node>
          </Source>
          <Target>
            <Node category="dns">
              <name>mainframe.bigcompany.com</name>
            </Node>
            <User category="os-device">
              <name>louis</name>
              <uid>501</uid>
            </User>
            <Service>
              <name>login</name>
              <dport>23</dport>
              <sport>4235</sport>
            </Service>
          </Target>
          <AdditionalData type="time" meaning="start-time">
            07:00:00
          </AdditionalData>
          <AdditionalData type="time" meaning="stop-time">
            19:30:00
          </AdditionalData>
        </Alert>
      </IDMEF-Message>


9.5. Correlated Alerts




Curry              Informational - Expires June 2001          [Page 66]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   The following example shows how the port scan alert (see Section
   9.2.2) would be represented if it had been sent by a correlation
   engine, instead of an analyzer.

      <?xml version="1.0" encoding="UTF-8"?>

      <!DOCTYPE IDMEF-Message PUBLIC
        "-//IETF//DTD RFCxxxx IDMEF v0.1//EN""idmef-message.dtd">

      <IDMEF-Message version="0.1">
        <Alert alertid="12345.987654321"
               impact="successful-recon-largescale">
          <Time offset="-0800">
            <ntpstamp>0x12345.0x67890</ntpstamp>
            <date>2000/03/09</date>
            <time>15:31</time>
          </Time>
          <Analyzer ident="12345">
            <Node category="dns">
              <name>correlator01.bigcompany.com</name>
            </Node>
          </Analyzer>
          <Classification origin="vendor-specific">
            <name>portscan</name>
            <url>http://www.vendor.com/portscan</url>
          </Classification>
          <Source>
            <Node>
              <Address category="ipv4-addr">
                <address>222.121.111.112</address>
              </Address>
            </Node>
          </Source>
          <Target>
            <Node category="dns">
              <name>www.bigcompany.com</name>
              <Address category="ipv4-addr">
                <address>123.234.231.121</address>
              </Address>
            </Node>
            <Service>
              <portlist>5-25,37,42,43,53,69-119,123-514</portlist>
            </Service>
          </Target>
          <CorrelationAlert>
            <alertid>12345.3563635</alertid>
            <alertid>12345.4746734</alertid>
            <alertid>12345.4564363</alertid>
            <alertid>12345.3635657</alertid>
            <alertid>12345.4747463</alertid>
            <alertid>12345.4585875</alertid>
            <alertid>12345.6769574</alertid>

Curry              Informational - Expires June 2001          [Page 67]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

          </CorrelationAlert>
        </Alert>
      </IDMEF-Message>


9.6. Heartbeat

   Use of the <Hearbeat> element to provide "I'm alive and working"
   information to the manager.  Note the use of <AdditionalData>
   elements, with "meaning" attributes, to provide further info.

      <?xml version="1.0" encoding="UTF-8"?>

      <!DOCTYPE IDMEF-Message PUBLIC
        "-//IETF//DTD RFCxxxx IDMEF v0.1//EN""idmef-message.dtd">

      <IDMEF-Message version="0.1">
        <Heartbeat heartbeatid="123456789">
          <Time offset="+0000">
            <ntpstamp>0x12345.0x67890</ntpstamp>
            <date>2000/03/09</date>
            <time>14:07:58</time>
          </Time>
          <Analyzer ident="abcdefghij">
            <Node category="dns">
              <name>analyzer01.bigcompany.com</name>
            </Node>
          </Analyzer>
          <AdditionalData type="real" meaning="%memused">
            62.5
          </AdditionalData>
          <AdditionalData type="real" meaning="%diskused">
            87.1
          </AdditionalData>
        </Heartbeat>
      </IDMEF-Message>


10. Extending the IDMEF

   There are four ways to extend the IDMEF:

      1. The <AdditionalData> element (see Section 8.7.1) can be used to
        include arbitrary data in an <Alert> or <Heartbeat>. This
        approach SHOULD be used whenever possible.

   2. The IDMEF DTD will allow additional values to be added to certain
      attributes by redefining the "ext.attvals.Listname" parameterized
      entity reference (see below).  This approach MAY be used, with the
      caveat that extensions may not be understood by all analyzers or
      managers.


Curry              Informational - Expires June 2001          [Page 68]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   3. The IDMEF DTD will allow additional attributes to be added to any
      element by redefining the "ext.attlist.Elementname" parameterized
      entity reference (see below).  This approach MAY be used, with the
      caveat that extensions may not be understood by all analyzers or
      managers.

   4. XML will allow the DTD to be extended by declaring additional
      elements, entities, and attributes in the document type
      declaration.  This approach SHOULD NOT be used unless the
      alternatives above are unworkable.

   This section briefly describes how to extend the IDMEF using methods
   (2), (3), and (4) above.


10.1. Extending an Existing Attribute

   Many attributes in the IDMEF DTD have a pre-defined list of values
   that the attributes may take on.  The "category" attributes of the
   <Address>, <Node>, and <User> elements are examples of this.

   The IDMEF DTD provides a standard way to extend the list of allowed
   values for these attributes by redefining the already-defined
   "ext.attvals.Listname" parameterized entity (where "Listname" is the
   name of the attribute value list -- see the DTD for the actual
   names).  Initially, this entity is defined as the empty string:

        <!ENTITY % ext.attvals.Listname         "">

   To add two new attribute values called "x-value-1" and "x-value-2" to
   the "Listname" list of values, this would be redefined as follows:

        <!ENTITY % ext.attvals.Listname         "
                | x-value-1 | x-value-2
          ">

   This redefinition is made at the time the document type is declared,
   through the document type declaration (see Section 6.1.4):

      <!DOCTYPE IDMEF-Message PUBLIC
        "-//IETF//DTD RFCxxxx IDMEF v0.1//EN""idmef-message.dtd"
      [
      <!ENTITY % ext.attvals.Listname           "
        | x-value-1 | x-value-2
      ">
      ]>

   All new attribute values defined in this manner MUST have names that
   begin with "x-".  They SHOULD also include the name of their creator
   in the name, e.g., "x-acme-specialvalue."



Curry              Informational - Expires June 2001          [Page 69]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

10.2. Adding an Attribute

   Every element in the IDMEF DTD has an attribute list associated with
   it. At a minimum, this list contains the "xml:lang" and "xml:space"
   attributes. Many elements also have particular attributes associated
   with them, as described in Section 8.

   The IDMEF DTD provides a standard way to extend the attribute list
   for a particular element by redefining the already-defined
   "ext.attlist.Elementname" parameterized entity (where "Elementname"
   is the name of the element to which the attribute is to be added).
   Initially, this entity is defined as the empty string:

        <!ENTITY % ext.attlist.Elementname      "">

   To add a new attribute called "x-attribute" to the "Elementname"
   element, this would be redefined as follows:

        <!ENTITY % ext.attlist.Elementname      "
            x-attribute         CDATA           #IMPLIED
          ">

   This declares the attribute as an optional attribute that may have
   any value (other possibilities, such as required attributes, a
   default value, or a fixed set of values, are also possible -- see a
   text on XML for details).

   This redefinition is made at the time the document type is declared,
   through the document type declaration (see Section 6.1.4):

      <!DOCTYPE IDMEF-Message PUBLIC
        "-//IETF//DTD RFCxxxx IDMEF v0.1//EN""idmef-message.dtd"
      [
      <!ENTITY % ext.attlist.Elementname"
          x-attribute           CDATA           #IMPLIED
       ">
      ]>

   All new attributes defined in this manner MUST have names that begin
   with "x-".  They SHOULD also include the name of their creator in the
   name, e.g., "x-acme-specialattr."  Required attributes (those marked
   "#REQUIRED") SHOULD be avoided, as it may not be possible to cause an
   analyzer to generate that attribute.

   Existing IDMEF element attributes MAY NOT be redefined.


10.3. Adding an Element

   To add a new element, the new element is defined inside the document
   type declaration, as above.  However, the definitions of one or more


Curry              Informational - Expires June 2001          [Page 70]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   existing elements must also be modified, to "plug in" the new element
   in the right places.

   The example below shows how to add a new element.  In this case, a
   new IDMEF message type, "x-acme-error," is added:

      <?xml version="1.0" encoding="UTF-8"?>

      <!DOCTYPE IDMEF-Message PUBLIC
        "-//IETF//DTD RFCxxxx IDMEF v0.1//EN""idmef-message.dtd"
      [
      <!ELEMENT IDMEF-Message                   (
          (Alert | Heartbeat | x-acme-error)*
        )>
      <!ELEMENT x-acme-error (#PCDATA) >
      ]>

   All new elements defined in this manner MUST have names that begin
   with "x-".  They SHOULD also include the name of their creator in the
   name, e.g., "x-acme-specialelem."

   Any additions made in this manner MUST NOT change the existing IDMEF
   document structure as defined in this specification (i.e., elements
   may not be deleted or resequenced).


11. The IDMEF Document Type Definition

      <?xml version="1.0" encoding="UTF-8"?>

   <!-- ***************************************************************
    *******************************************************************
    *** Intrusion Detection Message Exchange Format (IDMEF) XML DTD ***
    *** Version 0.2, 06 July 2000                                   ***
    ***                                                             ***
    *** Use of the IDMEF DTD is described in "Intrusion Detection   ***
    *** Message Exchange Format - XML Document Type Definition,"    ***
    *** David A. Curry, draft-ietf-idwg-idmef-xml-01.txt            ***
    ***                                                             ***
    *** The IDMEF data model is described in "Intrusion Detection   ***
    *** Exchange Format Data Model," Herve Debar, Ming-Yuh Huang,   ***
    *** and David Donahoo, draft-ietf-idwg-data-model-03.txt.       ***
    *******************************************************************
    *************************************************************** -->

   <!-- ===============================================================
    ===================================================================
    === SECTION 1. Attribute list declarations.  The version attributes
    ===            are used with the IDMEF-Message top-level element;
    ===            the global attributes are used with all elements;
    ===            the id attributes are used with most entity elements
    ===================================================================

Curry              Informational - Expires June 2001          [Page 71]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

    =============================================================== -->

   <!--
    | Attributes that change with the version of the DTD.
    -->
   <!ENTITY % ext.attlist.version          "">
   <!ENTITY % attlist.version              "
     xmlns               CDATA                   #FIXED
     'http://www.ietf.org/internet-drafts/draft-ietf-idwg-idmef-xml-
   01.txt'
     xmlns:idmef         CDATA                   #FIXED
     'http://www.ietf.org/internet-drafts/draft-ietf-idwg-idmef-xml-
   01.txt'
     version             CDATA                   #FIXED    '0.1'
     %ext.attlist.version;
   ">

   <!--
    | Standard attributes that should be present on all elements.
    -->
   <!ENTITY % ext.attlist.global           "">
   <!ENTITY % attlist.global               "
       xml:space           (default | preserve)    'default'
       xml:lang            NMTOKEN                 #IMPLIED
       %ext.attlist.global;
     ">

   <!--
    | Attribute that should be present on all support class elements
    | (Address, Node, Process, Service, User, WebService, SNMPService).
    -->
   <!ENTITY % ext.attlist.ident            "">
   <!ENTITY % attlist.ident                "
       ident               CDATA                   '0'
     ">

   <!-- ===============================================================
    ===================================================================
    === SECTION 2. Attribute value declarations.  Enumerated values of
    ===            many of the element attributes.
    ===================================================================
    =============================================================== -->

   <!--
    | Values for the Alert.impact attribute.
    -->
   <!ENTITY % ext.attvals.impact           "">
   <!ENTITY % attvals.impact               "
       ( unknown | bad-unknown | not-suspicious | attempted-admin |
         successful-admin | attempted-dos  | successful-dos |
         attempted-recon | successful-recon-largescale |
         successful-recon-limited | attempted-user |

Curry              Informational - Expires June 2001          [Page 72]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

         successful-user
         %ext.attvals.impact; )
     ">

   <!--
    | Values for the AdditionalData.type attribute.
    -->
   <!ENTITY % ext.attvals.adtype           "">
   <!ENTITY % attvals.adtype               "
       ( unknown | boolean | byte | character | date | integer |
         ntpstamp | real | string | time
         %ext.attvals.adtype; )
     ">

   <!--
    | Values for the Classification.origin attribute.
    -->
   <!ENTITY % ext.attvals.origin           "">
   <!ENTITY % attvals.origin               "
       ( unknown | bugtraqid | cve | vendor-specific
         %ext.attvals.origin; )
     ">

   <!--
    | Values for the Source.spoofed attribute.
    -->
   <!ENTITY % ext.attvals.spoofed          "">
   <!ENTITY % attvals.spoofed              "
       ( unknown | no | yes
         %ext.attvals.spoofed; )
     ">

   <!--
    | Values for the Target.decoy attribute.
    -->
   <!ENTITY % ext.attvals.decoy            "">
   <!ENTITY % attvals.decoy                "
       ( unknown | no | yes
         %ext.attvals.decoy; )
     ">

   <!--
    | Values for the Address.category attribute.
    -->
   <!ENTITY % ext.attvals.addrcat          "">
   <!ENTITY % attvals.addrcat              "
       ( unknown | atm | e-mail | lotus-notes | mac | sna | vm |
         ipv4-addr | ipv4-addr-hex | ipv4-net | ipv4-net-mask |
         ipv6-addr |  ipv6-net | ipv6-net-mask
         %ext.attvals.addrcat; )
     ">


Curry              Informational - Expires June 2001          [Page 73]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   <!--
    | Values for the Node.category attribute.
    -->
   <!ENTITY % ext.attvals.nodecat          "">
   <!ENTITY % attvals.nodecat              "
       ( unknown | ads | afs | coda | dfs | dns | kerberos | nds |
         nis | nisplus | nt | wfw
         %ext.attvals.nodecat; )
     ">

   <!--
    | Values for the User.category attribute.
    -->
   <!ENTITY % ext.attvals.usercat          "">
   <!ENTITY % attvals.usercat              "
       ( unknown | application | os-device
         %ext.attvals.usercat; )
     ">

   <!-- ===============================================================
    ===================================================================
    === SECTION 3. The top-level elements.  This includes IDMEF-Message
    ===            and the various types of message it can include.
    ===================================================================
    =============================================================== -->

   <!ELEMENT IDMEF-Message                 (
       (Alert | Heartbeat)*
     )>
   <!ENTITY % ext.attlist.IDMEF-Message    "">
   <!ATTLIST IDMEF-Message
       %attlist.version;
       %attlist.global;
       %ext.attlist.IDMEF-Message;
     >

   <!ELEMENT Alert                         (
       Time, Analyzer, Classification+, Source*, Target*, ToolAlert?,
       OverflowAlert?, CorrelationAlert?, AdditionalData*
     )>
   <!ENTITY % ext.attlist.Alert            "">
   <!ATTLIST Alert
       version             CDATA                   #FIXED    '1'
       alertid             CDATA                   #REQUIRED
       impact              %attvals.impact;        'unknown'
       %attlist.global;
       %ext.attlist.Alert;
     >

   <!ELEMENT Heartbeat                     (
       Time, Analyzer, AdditionalData*
     )>

Curry              Informational - Expires June 2001          [Page 74]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   <!ENTITY % ext.attlist.Heartbeat        "">
   <!ATTLIST Heartbeat
       heartbeatid         CDATA                   #REQUIRED
       %attlist.global;
       %ext.attlist.Heartbeat;
     >

   <!-- ===============================================================
    ===================================================================
    === SECTION 4. Elements related to Alert that provide more data:
    ===            AdditionalData, CorrelationAlert, OverflowAlert,
    ===            and ToolAlert.
    ===================================================================
    =============================================================== -->

   <!ELEMENT AdditionalData        (#PCDATA) >
   <!ENTITY % ext.attlist.AdditionalData   "">
   <!ATTLIST AdditionalData
       type                %attvals.adtype;        'unknown'
       meaning             CDATA                   #IMPLIED
       %attlist.global;
       %ext.attlist.AdditionalData;
     >

   <!ELEMENT CorrelationAlert              (
       alertid+
     )>
   <!ENTITY % ext.attlist.CorrelationAlert "">
   <!ATTLIST CorrelationAlert
       %attlist.global;
       %ext.attlist.CorrelationAlert;
     >

   <!ELEMENT OverflowAlert                 (
       program, size, buffer?
     )>
   <!ENTITY % ext.attlist.OverflowAlert    "">
   <!ATTLIST OverflowAlert
       %attlist.global;
       %ext.attlist.OverflowAlert;
     >

   <!ELEMENT ToolAlert                     (
       name, command?, alertid*
     )>
   <!ENTITY % ext.attlist.ToolAlert        "">
   <!ATTLIST ToolAlert
       %attlist.global;
       %ext.attlist.ToolAlert;
     >

   <!-- ===============================================================

Curry              Informational - Expires June 2001          [Page 75]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

    ===================================================================
    === SECTION 5. Elements related to time.  The base time is the time
    ===            the alert was generated.
    ===================================================================
    =============================================================== -->

   <!ELEMENT Time                          (
       ntpstamp, date, time, DetectTime?, AnalyzerTime?
     )>
   <!ENTITY % ext.attlist.Time             "">
   <!ATTLIST Time
       offset              CDATA                   '+0000'
       %attlist.global;
       %ext.attlist.Time;
     >

   <!ELEMENT DetectTime                    (
       ntpstamp, date, time
     )>
   <!ENTITY % ext.attlist.DetectTime       "">
   <!ATTLIST DetectTime
       offset              CDATA                   '+0000'
       %attlist.global;
       %ext.attlist.DetectTime;
     >

   <!ELEMENT AnalyzerTime                  (
       ntpstamp, date, time
     )>
   <!ENTITY % ext.attlist.AnalyzerTime     "">
   <!ATTLIST AnalyzerTime
       offset              CDATA                   '+0000'
       %attlist.global;
       %ext.attlist.AnalyzerTime;
     >

   <!-- ===============================================================
    ===================================================================
    === SECTION 6. Elements related to identifying entities - analyzers
    ===            (the senders of these messages), sources (of
    ===            attacks), and targets (of attacks).
    ===================================================================
    =============================================================== -->

   <!ELEMENT Analyzer                      (
       Node?, Process?
     )>
   <!ENTITY % ext.attlist.Analyzer         "">
   <!ATTLIST Analyzer
       ident               CDATA                   #REQUIRED
       %attlist.global;
       %ext.attlist.Analyzer;

Curry              Informational - Expires June 2001          [Page 76]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

     >

   <!ELEMENT Source                        (
       Node?, User?, Process?
     )>
   <!ENTITY % ext.attlist.Source           "">
   <!ATTLIST Source
       spoofed             %attvals.spoofed;       'unknown'
       sourceid            CDATA                   '0'
       %attlist.global;
       %ext.attlist.Source;
     >

   <!ELEMENT Target                        (
       Node?, User?, Process?, Service?
     )>
   <!ENTITY % ext.attlist.Target           "">
   <!ATTLIST Target
       decoy               %attvals.decoy;         'unknown'
       targetid            CDATA                   '0'
       %attlist.global;
       %ext.attlist.Target;
     >

   <!-- ===============================================================
    ===================================================================
    === SECTION 7. Lower-level elements used for providing detailed
    ===            information about entities - addresses, names, etc.
    ===================================================================
    =============================================================== -->

   <!ELEMENT Address                       (
       address, netmask?
     )>
   <!ENTITY % ext.attlist.Address          "">
   <!ATTLIST Address
       category            %attvals.addrcat;       'unknown'
       %attlist.ident;
       %attlist.global;
       %ext.attlist.Address;
     >

   <!ELEMENT Classification                (
       name, url
     )>
   <!ENTITY % ext.attlist.Classification   "">
   <!ATTLIST Classification
       origin              %attvals.origin;        'unknown'
       %attlist.global;
       %ext.attlist.Classification;
     >


Curry              Informational - Expires June 2001          [Page 77]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   <!ELEMENT Node                          (
       location?, (name | Address), Address*
     )>
   <!ENTITY % ext.attlist.Node             "">
   <!ATTLIST Node
       category            %attvals.nodecat;       'unknown'
       %attlist.ident;
       %attlist.global;
       %ext.attlist.Node;
     >

   <!ELEMENT Process                       (
       name, pid?, path?, Arguments?, Environment?
     )>
   <!ENTITY % ext.attlist.Process          "">
   <!ATTLIST Process
       %attlist.ident;
       %attlist.global;
       %ext.attlist.Process;
     >

   <!ELEMENT Service                       (
       name?, dport?, sport?, protocol?, portlist?, SNMPService?,
       WebService?
     )>
   <!ENTITY % ext.attlist.Service          "">
   <!ATTLIST Service
       %attlist.ident;
       %attlist.global;
       %ext.attlist.Service;
     >

   <!ELEMENT User                          (
       (name | uid | (name, uid)), group?, gid?, serial?, Address*
     )>
   <!ENTITY % ext.attlist.User             "">
   <!ATTLIST User
       category            %attvals.usercat;       'unknown'
       %attlist.ident;
       %attlist.global;
       %ext.attlist.User;
     >

   <!ELEMENT SNMPService                   (
       oid?, community?, command?
     )>
   <!ENTITY % ext.attlist.SNMPService      "">
   <!ATTLIST SNMPService
       %attlist.ident;
       %attlist.global;
       %ext.attlist.SNMPService;
     >

Curry              Informational - Expires June 2001          [Page 78]


Internet Draft        IDMEF Data Model and XML DTD         December 2000


   <!ELEMENT WebService                    (
       url, cgi?, method?, Arguments?
     )>
   <!ENTITY % ext.attlist.WebService       "">
   <!ATTLIST WebService
       %attlist.ident;
       %attlist.global;
       %ext.attlist.WebService;
     >

   <!-- ===============================================================
    ===================================================================
    === SECTION 8. Simple elements with sub-elements or attributes of a
    ===            special nature.
    ===================================================================
    =============================================================== -->

   <!ELEMENT Arguments                     (
       arg+
     )>
   <!ENTITY % ext.attlist.Arguments        "">
   <!ATTLIST Arguments
       %attlist.global;
       %ext.attlist.Arguments;
     >

   <!ELEMENT Environment                   (
       env+
     )>
   <!ENTITY % ext.attlist.Environment      "">
   <!ATTLIST Environment
       %attlist.global;
       %ext.attlist.Environment;
     >

   <!-- ===============================================================
    ===================================================================
    === SECTION 9. Simple elements with no sub-elements and no special
    ===            attributes.
    ===================================================================
    =============================================================== -->

   <!ELEMENT address               (#PCDATA) >
   <!ENTITY % ext.attlist.address          "">
   <!ATTLIST address
       %attlist.global;
       %ext.attlist.address;
     >

   <!ELEMENT alertid               (#PCDATA) >
   <!ENTITY % ext.attlist.alertid          "">

Curry              Informational - Expires June 2001          [Page 79]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   <!ATTLIST alertid
       %attlist.global;
       %ext.attlist.alertid;
     >

   <!ELEMENT arg                   (#PCDATA) >
   <!ENTITY % ext.attlist.arg              "">
   <!ATTLIST arg
       %attlist.global;
       %ext.attlist.arg;
     >

   <!ELEMENT buffer                (#PCDATA) >
   <!ENTITY % ext.attlist.buffer           "">
   <!ATTLIST buffer
       %attlist.global;
       %ext.attlist.buffer;
     >

   <!ELEMENT cgi                   (#PCDATA) >
   <!ENTITY % ext.attlist.cgi              "">
   <!ATTLIST cgi
       %attlist.global;
       %ext.attlist.cgi;
     >

   <!ELEMENT command               (#PCDATA) >
   <!ENTITY % ext.attlist.command          "">
   <!ATTLIST command
       %attlist.global;
       %ext.attlist.command;
     >

   <!ELEMENT community             (#PCDATA) >
   <!ENTITY % ext.attlist.community        "">
   <!ATTLIST community
       %attlist.global;
       %ext.attlist.community;
     >

   <!ELEMENT date                  (#PCDATA) >
   <!ENTITY % ext.attlist.date             "">
   <!ATTLIST date
       %attlist.global;
       %ext.attlist.date;
     >

   <!ELEMENT dport                 (#PCDATA) >
   <!ENTITY % ext.attlist.dport            "">
   <!ATTLIST dport
       %attlist.global;
       %ext.attlist.dport;

Curry              Informational - Expires June 2001          [Page 80]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

     >

   <!ELEMENT env                   (#PCDATA) >
   <!ENTITY % ext.attlist.env              "">
   <!ATTLIST env
       %attlist.global;
       %ext.attlist.env;
     >

   <!ELEMENT gid                   (#PCDATA) >
   <!ENTITY % ext.attlist.gid              "">
   <!ATTLIST gid
       %attlist.global;
       %ext.attlist.gid;
     >

   <!ELEMENT group                 (#PCDATA) >
   <!ENTITY % ext.attlist.group            "">
   <!ATTLIST group
       %attlist.global;
       %ext.attlist.group;
     >

   <!ELEMENT location              (#PCDATA) >
   <!ENTITY % ext.attlist.location         "">
   <!ATTLIST location
       %attlist.global;
       %ext.attlist.location;
     >

   <!ELEMENT method                (#PCDATA) >
   <!ENTITY % ext.attlist.method           "">
   <!ATTLIST method
       %attlist.global;
       %ext.attlist.method;
     >

   <!ELEMENT name                  (#PCDATA) >
   <!ENTITY % ext.attlist.name             "">
   <!ATTLIST name
       %attlist.global;
       %ext.attlist.name;
     >

   <!ELEMENT netmask               (#PCDATA) >
   <!ENTITY % ext.attlist.netmask          "">
   <!ATTLIST netmask
       %attlist.global;
       %ext.attlist.netmask;
     >

   <!ELEMENT ntpstamp              (#PCDATA) >

Curry              Informational - Expires June 2001          [Page 81]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   <!ENTITY % ext.attlist.ntpstamp         "">
   <!ATTLIST ntpstamp
       %attlist.global;
       %ext.attlist.ntpstamp;
     >

   <!ELEMENT oid                   (#PCDATA) >
   <!ENTITY % ext.attlist.oid              "">
   <!ATTLIST oid
       %attlist.global;
       %ext.attlist.oid;
     >

   <!ELEMENT path                  (#PCDATA) >
   <!ENTITY % ext.attlist.path             "">
   <!ATTLIST path
       %attlist.global;
       %ext.attlist.path;
     >

   <!ELEMENT pid                   (#PCDATA) >
   <!ENTITY % ext.attlist.pid              "">
   <!ATTLIST pid
       %attlist.global;
       %ext.attlist.pid;
     >

   <!ELEMENT portlist              (#PCDATA) >
   <!ENTITY % ext.attlist.portlist         "">
   <!ATTLIST portlist
       %attlist.global;
       %ext.attlist.portlist;
     >

   <!ELEMENT program               (#PCDATA) >
   <!ENTITY % ext.attlist.program          "">
   <!ATTLIST program
       %attlist.global;
       %ext.attlist.program;
     >

   <!ELEMENT protocol              (#PCDATA) >
   <!ENTITY % ext.attlist.protocol         "">
   <!ATTLIST protocol
       %attlist.global;
       %ext.attlist.protocol;
     >

   <!ELEMENT serial                (#PCDATA) >
   <!ENTITY % ext.attlist.serial           "">
   <!ATTLIST serial
       %attlist.global;

Curry              Informational - Expires June 2001          [Page 82]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

       %ext.attlist.serial;
     >

   <!ELEMENT size                  (#PCDATA) >
   <!ENTITY % ext.attlist.size             "">
   <!ATTLIST size
       %attlist.global;
       %ext.attlist.size;
     >

   <!ELEMENT sport                 (#PCDATA) >
   <!ENTITY % ext.attlist.sport            "">
   <!ATTLIST sport
       %attlist.global;
       %ext.attlist.sport;
     >

   <!ELEMENT time                  (#PCDATA) >
   <!ENTITY % ext.attlist.time             "">
   <!ATTLIST time
       %attlist.global;
       %ext.attlist.time;
     >

   <!ELEMENT url                   (#PCDATA) >
   <!ENTITY % ext.attlist.url              "">
   <!ATTLIST url
       %attlist.global;
       %ext.attlist.url;
     >

   <!ELEMENT uid                   (#PCDATA) >
   <!ENTITY % ext.attlist.uid              "">
   <!ATTLIST uid
       %attlist.global;
       %ext.attlist.uid;
     >

   <!-- ***************************************************************
    *******************************************************************
    ***                         END OF DTD                          ***
    *******************************************************************
    *************************************************************** -->


12. Security Considerations

   This Internet-Draft describes a data format for the exchange of
   security-related data between security product implementations. There
   are no security considerations directly applicable to the format of
   this data. There may, however, be security considerations associated


Curry              Informational - Expires June 2001          [Page 83]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   with the transport protocol chosen to move this data between
   communicating entities.


13. References


   1  Bradner, S., "The Internet Standards Process -- Revision 3", BCP
      9, RFC 2026, October 1996.

   2  Wood, M., "Intrusion Detection Message Exchange Requirements,"
      draft-ietf-idwg-requirements-02.txt, October 26, 1999, work in
      progress.

   3  World Wide Web Consortium (W3C), "Extensible Markup Language
      (XML)," W3C Recommendation, February 1998,
      http://www.w3.org/TR/1998/REC-xml-19980210.

   4  Mansfield, G. and D. A. Curry, "Intrusion Detection Message
      Exchange Format: Comparison of SMI and XML Implementations,"
      draft-ietf-idwg-xmlsmi-00.txt, July 6, 2000, work in progress.

   5  Bradner, S., "Key words for use in RFCs to Indicate Requirement
      Levels," BCP 14, RFC 2119, March 1997.

   6  Rumbaugh, J., I. Jacobson and G. Booch, "Unified Modeling Language
      Reference Manual," Addison-Wesley, 1997.

   7  The Bugtraq reference number for the securityfocus vulnerability
      database, http://www.securityfocus.com/

   8  Christey, S., D. W. Baker, W. H. Hill, and D. E. Mann, "The
      Development of a Common Vulnerabilities and Exposures List,"
      Second International Workshop on Recent Advances in Intrusion
      Detection, West Lafayette, Indiana, September 1999,
      http://www.cve.mitre.org/.

   9  World Wide Web Consortium (W3C), "Namespaces in XML," W3C
      Recommendation, January 1999,
      http://www.w3.org/TR/1999/REC-xml-names-19990114.

   10 Freed, N., "IANA Charset Registration Procedures," BCP 19, RFC
      2278, January 1998.

   11 Alvestrand, H., "Tags for the Identification of Languages," RFC
      1766, March 1995.

   12 Eastlake, D., J. Reagle, and D. Solo, "XML-Signature Syntax and
      Processing," draft-ietf-xmldsig-core-07.txt, June 1, 2000, work in
      progress.



Curry              Informational - Expires June 2001          [Page 84]


Internet Draft        IDMEF Data Model and XML DTD         December 2000


   13 Mills, D. L., "Network Time Protocol (Version 3) Specification,
      Implementation, and Analysis," RFC 1305, March 1992.



14. Acknowledgments

   The following individuals contributed substantially to this document
   and should be recognized for their efforts. This document would not
   exist without their help:

      Dominique Alessandri, IBM Corporation
      James L. Burden, California Independent System Operator
      Marc Dacier, IBM Corporation
      David J. Donahoo, AFIWC
      Glenn Mansfield, Cyber Solutions, Inc.
      James Riordan, IBM Corporation
      Stephane Schitter, IBM Corporation
      Michael J. Slifcak, Internet Security Systems, Inc.
      Michael Steiner, University of Saarland
      Steven R. Snapp, CyberSafe Corporation
      Stuart Staniford-Chen, Silicon Defense
      Maureen Stillman, Nokia IP Telephony
      Vimal Vaidya, AXENT
      Andreas Wespi, IBM Corporation
      Eric D. Williams, Information Brokers, Inc.
      S. Felix Wu, North Carolina State University


15. Author's Addresses

   David A. Curry
   Internet Security Systems, Inc.
   345 Route 17 South
   Upper Saddle River, NJ 07458
   Phone: +1 201 934-4207
   Email: davy@iss.net

   Herve Debar
   France Telecom R & D
   42 rue des coutures
   Phone: +33.2.31.75.92.61
   Email: herve.debar@france.telecom.fr


Full Copyright Statement

   "Copyright (C) The Internet Society (2000). All Rights Reserved.

   This document and translations of it may be copied and furnished to
   others, and derivative works that comment on or otherwise explain it

Curry              Informational - Expires June 2001          [Page 85]


Internet Draft        IDMEF Data Model and XML DTD         December 2000

   or assist its implementation may be prepared, copied, published and
   distributed, in whole or in part, without restriction of any kind,
   provided that the above copyright notice and this paragraph are
   included on all such copies and derivative works. However, this
   document itself may not be modified in any way, such as by removing
   the copyright notice or references to the Internet Society or other
   Internet organizations, except as needed for the purpose of
   developing Internet standards in which case the procedures for
   copyrights defined in the Internet Standards process must be
   followed, or as required to translate it into languages other than
   English.

   The limited permissions granted above are perpetual and will not be
   revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on an
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
































Debar              Informational - Expires June 2001          [Page 86]