A New Detection FrameworkWhat would you do with a pointer and a size?
Define the problemWhy do we need a new detection framework?
The Challenge is DifferentAttacks have switched from server attacks to client attacksCommon attack vectors are easily obfuscatedJavaScriptCompressionFile formats are made by insane peopleLooking at you Flash and OLE guy…Back-channel systems are increasingly difficult to detect
Network Systems…Inline systems must emulate the processing of 1000s of desktopsDetection of many backchannels is most successful with statistical evaluation of network traffic
Coverage GapBroadly speaking, IDS systems deal with packet-by-packet inspection with some level of reassemblyBroadly speaking, AV systems typically target indicators of known bad files or system states“…the argument put forward that there's something wrong with anti-virus products that don't detect metasploit output is fallacious on 2 counts: 1) the output isn't necessarily malware (usually only greyware), and 2) anti-virus products are not the proper defense against known exploits (patching is).”                                                                                                         -- Kurt Wismer
Fill the GapA system is needed that can handle varied detection needsA system is needed that extensible, open and scalableA system is needed that facilitates incident response, not just triggers itSo……
NRT FrameworkNear-Realtime Detection Framework or:“Anything is Possible”
The DispatcherThe heart of the NRT systemAPIs to handle:Deep Inspection Nugget registrationData Handler registrationDetection requestsAlertingFull analysis loggingOutput to API compliant systemsDatabase driven
The Dispatcher  Implements a database to provide a  centralized set of file information and
 Handles incoming queries for Data Handlers that have failed local cache hits
 Handles detection requests from both Data Handlers and DINs
 Handles incoming results from Deep Inspection Nuggets
  Handles database updates based on DIN data
 Writes out verbose logging based on DIN data
 Provides alerting to Data HandlersData HandlerCapture data and metadataContact dispatcher for handlingHas this file been evaluated before?Where should I send it?Pass that data set to a Deep Inspection NuggetAccept feedback from the Dispatcher for detection requestAsynchronous alertingLocal cache of detection outcome
The Data Handler  Data (in this case a file) is captured
  Metadata is captured (in this case URL and filename)
  A local cache of MD5 sums and URLs of files previously collected
 A library to handle managing the initial file evaluation, cache checks and communication with the DispatcherDeep Inspection Nugget (DIN)Must handle data transfer from Data HandlersMust communicate with DispatcherRegister detection capabilityRequest for additional processing of subcomponentsProvide alerting feedback to Dispatcher
The Deep Inspection Nugget  Registers with the Dispatcher
 Processes data provided by the Data Handlers, as instructed by the Dispatcher
 Handles incoming queries for Data Handlers that have failed local cache hits
 Handles detection requests from both Data Handlers and DINs
 Handles incoming results from Deep Inspection Nuggets
  Handles database updates based on DIN data
 Writes out verbose logging based on DIN data
 Provides alerting to Data HandlersFramework GoalsProvide entry to the system for any arbitrary data typeDetermine and manage detection based on a registered DINProvide alerting to any framework capable systemProvide verbose, detailed logging on the findings of the Nugget FarmMake intelligent use of all data discovered during the evaluation process
The DesignAn implementation of the NRT goals on a Snort platformTarget:  Malicious pdf files
More info about the nuggetsLet’s pretend that the PDF nugget already has the data…
The DispatcherWhy are we passing back files?
We Like DataMD5 is stored for files and subcomponents both bad and goodPrimarily this is used to avoid reprocessing files we’ve already looked atBut after a update to any DIN, all known-good entries are “tainted”
Why Taint known good?After an update to detection, previously analyzed files may be found to be badWe don’t rescan all filesBut if we see a match for md5 to a previous file, we will alert retroactively
We Like to Provide DataWhen a subcomponent alerts, it is stored for logging in its fully normalized state.If a file is bad, when the DIN completes detection it passes the file to the DispatcherResponse teams have the entire file as well as each portion that alerted in an easily analyzed format
We Really Like to Provide DataVerbose data back to Data Handler should also be as verbose as possibleIn this case we place data into the payload and provide a custom message to Snort so we can use established methods of handling Snort alerts04/16-16:38:48.1271450328 [**] [300:3221225473:1]URL:/users/pusscat/jbig2.pdf Hostname:metasploit.com AlertInfo:Probable exploit of CVE-2009-0658 (JBIG2) detected in object 8,declared as /Length 33/Filter [/FlateDecode/ASCIIHexDecode/JBIG2Decode]  [**] {TCP} 64.214.53.2:0 -> 216.75.1.230:004/16-16:38:48.12714503280:0:0:0:0:0 -> 0:0:0:0:0:0 type:0x800 len:0x064.214.53.2:0 -> 216.75.1.230:0 TCP TTL:240 TOS:0x10 ID:0 IpLen:20 DgmLen:1280***AP*** Seq: 0x0  Ack: 0x0  Win: 0x0  TcpLen: 2055 52 4C 3A 2F 75 73 65 72 73 2F 70 75 73 73 63  URL:/users/pussc61 74 2F 6A 62 69 67 32 2E 70 64 66 20 48 6F 73  at/jbig2.pdfHos74 6E 61 6D 65 3A 6D 65 74 61 73 70 6C 6F 69 74  tname:metasploit2E 63 6F 6D 20 41 6C 65 72 74 20 49 6E 66 6F 3A  .com Alert Info:50 72 6F 62 61 62 6C 65 20 65 78 70 6C 6F 69 74  Probable exploit20 6F 66 20 43 56 45 2D 32 30 30 39 2D 30 36 35   of CVE-2009-06538 20 28 4A 42 49 47 32 29 20 64 65 74 65 63 74  8 (JBIG2) detect65 64 20 69 6E 20 6F 62 6A 65 63 74 20 38 2C 20  ed in object 8,64 65 63 6C 61 72 65 64 20 61 73 20 2F 4C 65 6E  declared as /Len67 74 68 20 33 33 2F 46 69 6C 74 65 72 20 5B 2F  gth 33/Filter [/46 6C 61 74 65 44 65 63 6F 64 65 2F 41 53 43 49  FlateDecode/ASCI49 48 65 78 44 65 63 6F 64 65 2F 4A 42 49 47 32  IHexDecode/JBIG244 65 63 6F 64 65 20 5D 20                       Decode ]
Nugget Brain Storm…Seriously, what would you do with a pointer and a size?
The basic ideaCreate file format templates which parse our elements and provide you a datastructureProvide a full, common, scripting language interface to create rules (Ruby? Python? Both?)Only do the heavy work (templating) once per file format.
Demo OneJBIG, ASCII Hex Decoding & Inflation
What just happened?04/21-11:17:58.1271873878 [**] [300:3221225473:1] URL:/wrl/first.pdf Hostname:wrl Alert Info:Probable exploit of CVE-2009-0658 (JBIG2) detected in object 8, declared as /Length 29/Filter [/FlateDecode/ASCIIHexDecode/JBIG2Decode ]  [**] {TCP} 192.168.0.1:0 -> 204.15.227.178:004/21-11:17:58.12718738780:0:0:0:0:0 -> 0:0:0:0:0:0 type:0x800 len:0x0192.168.0.1:0 -> 204.15.227.178:0 TCP TTL:240 TOS:0x10 ID:0 IpLen:20 DgmLen:1280***AP*** Seq: 0x0  Ack: 0x0  Win: 0x0  TcpLen: 2055 52 4C 3A 2F 77 72 6C 2F 66 69 72 73 74 2E 70  URL:/wrl/first.p64 66 20 48 6F 73 74 6E 61 6D 65 3A 77 72 6C 20  dfHostname:wrl41 6C 65 72 74 20 49 6E 66 6F 3A 50 72 6F 62 61  Alert Info:Proba62 6C 65 20 65 78 70 6C 6F 69 74 20 6F 66 20 43  ble exploit of C56 45 2D 32 30 30 39 2D 30 36 35 38 20 28 4A 42  VE-2009-0658 (JB49 47 32 29 20 64 65 74 65 63 74 65 64 20 69 6E  IG2) detected in20 6F 62 6A 65 63 74 20 38 2C 20 64 65 63 6C 61   object 8, decla72 65 64 20 61 73 20 2F 4C 65 6E 67 74 68 20 32  red as /Length 239 2F 46 69 6C 74 65 72 20 5B 2F 46 6C 61 74 65  9/Filter [/Flate44 65 63 6F 64 65 2F 41 53 43 49 49 48 65 78 44  Decode/ASCIIHexD65 63 6F 64 65 2F 4A 42 49 47 32 44 65 63 6F 64  ecode/JBIG2Decod65 20 5D 20                                      e ] =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

A New Framework for Detection

  • 1.
    A New DetectionFrameworkWhat would you do with a pointer and a size?
  • 2.
    Define the problemWhydo we need a new detection framework?
  • 3.
    The Challenge isDifferentAttacks have switched from server attacks to client attacksCommon attack vectors are easily obfuscatedJavaScriptCompressionFile formats are made by insane peopleLooking at you Flash and OLE guy…Back-channel systems are increasingly difficult to detect
  • 4.
    Network Systems…Inline systemsmust emulate the processing of 1000s of desktopsDetection of many backchannels is most successful with statistical evaluation of network traffic
  • 5.
    Coverage GapBroadly speaking,IDS systems deal with packet-by-packet inspection with some level of reassemblyBroadly speaking, AV systems typically target indicators of known bad files or system states“…the argument put forward that there's something wrong with anti-virus products that don't detect metasploit output is fallacious on 2 counts: 1) the output isn't necessarily malware (usually only greyware), and 2) anti-virus products are not the proper defense against known exploits (patching is).” -- Kurt Wismer
  • 6.
    Fill the GapAsystem is needed that can handle varied detection needsA system is needed that extensible, open and scalableA system is needed that facilitates incident response, not just triggers itSo……
  • 7.
    NRT FrameworkNear-Realtime DetectionFramework or:“Anything is Possible”
  • 8.
    The DispatcherThe heartof the NRT systemAPIs to handle:Deep Inspection Nugget registrationData Handler registrationDetection requestsAlertingFull analysis loggingOutput to API compliant systemsDatabase driven
  • 9.
    The Dispatcher Implements a database to provide a centralized set of file information and
  • 10.
    Handles incomingqueries for Data Handlers that have failed local cache hits
  • 11.
    Handles detectionrequests from both Data Handlers and DINs
  • 12.
    Handles incomingresults from Deep Inspection Nuggets
  • 13.
    Handlesdatabase updates based on DIN data
  • 14.
    Writes outverbose logging based on DIN data
  • 15.
    Provides alertingto Data HandlersData HandlerCapture data and metadataContact dispatcher for handlingHas this file been evaluated before?Where should I send it?Pass that data set to a Deep Inspection NuggetAccept feedback from the Dispatcher for detection requestAsynchronous alertingLocal cache of detection outcome
  • 16.
    The Data Handler Data (in this case a file) is captured
  • 17.
    Metadatais captured (in this case URL and filename)
  • 18.
    Alocal cache of MD5 sums and URLs of files previously collected
  • 19.
    A libraryto handle managing the initial file evaluation, cache checks and communication with the DispatcherDeep Inspection Nugget (DIN)Must handle data transfer from Data HandlersMust communicate with DispatcherRegister detection capabilityRequest for additional processing of subcomponentsProvide alerting feedback to Dispatcher
  • 20.
    The Deep InspectionNugget Registers with the Dispatcher
  • 21.
    Processes dataprovided by the Data Handlers, as instructed by the Dispatcher
  • 22.
    Handles incomingqueries for Data Handlers that have failed local cache hits
  • 23.
    Handles detectionrequests from both Data Handlers and DINs
  • 24.
    Handles incomingresults from Deep Inspection Nuggets
  • 25.
    Handlesdatabase updates based on DIN data
  • 26.
    Writes outverbose logging based on DIN data
  • 27.
    Provides alertingto Data HandlersFramework GoalsProvide entry to the system for any arbitrary data typeDetermine and manage detection based on a registered DINProvide alerting to any framework capable systemProvide verbose, detailed logging on the findings of the Nugget FarmMake intelligent use of all data discovered during the evaluation process
  • 28.
    The DesignAn implementationof the NRT goals on a Snort platformTarget: Malicious pdf files
  • 41.
    More info aboutthe nuggetsLet’s pretend that the PDF nugget already has the data…
  • 61.
    The DispatcherWhy arewe passing back files?
  • 62.
    We Like DataMD5is stored for files and subcomponents both bad and goodPrimarily this is used to avoid reprocessing files we’ve already looked atBut after a update to any DIN, all known-good entries are “tainted”
  • 63.
    Why Taint knowngood?After an update to detection, previously analyzed files may be found to be badWe don’t rescan all filesBut if we see a match for md5 to a previous file, we will alert retroactively
  • 64.
    We Like toProvide DataWhen a subcomponent alerts, it is stored for logging in its fully normalized state.If a file is bad, when the DIN completes detection it passes the file to the DispatcherResponse teams have the entire file as well as each portion that alerted in an easily analyzed format
  • 65.
    We Really Liketo Provide DataVerbose data back to Data Handler should also be as verbose as possibleIn this case we place data into the payload and provide a custom message to Snort so we can use established methods of handling Snort alerts04/16-16:38:48.1271450328 [**] [300:3221225473:1]URL:/users/pusscat/jbig2.pdf Hostname:metasploit.com AlertInfo:Probable exploit of CVE-2009-0658 (JBIG2) detected in object 8,declared as /Length 33/Filter [/FlateDecode/ASCIIHexDecode/JBIG2Decode]  [**] {TCP} 64.214.53.2:0 -> 216.75.1.230:004/16-16:38:48.12714503280:0:0:0:0:0 -> 0:0:0:0:0:0 type:0x800 len:0x064.214.53.2:0 -> 216.75.1.230:0 TCP TTL:240 TOS:0x10 ID:0 IpLen:20 DgmLen:1280***AP*** Seq: 0x0  Ack: 0x0  Win: 0x0  TcpLen: 2055 52 4C 3A 2F 75 73 65 72 73 2F 70 75 73 73 63  URL:/users/pussc61 74 2F 6A 62 69 67 32 2E 70 64 66 20 48 6F 73  at/jbig2.pdfHos74 6E 61 6D 65 3A 6D 65 74 61 73 70 6C 6F 69 74  tname:metasploit2E 63 6F 6D 20 41 6C 65 72 74 20 49 6E 66 6F 3A  .com Alert Info:50 72 6F 62 61 62 6C 65 20 65 78 70 6C 6F 69 74  Probable exploit20 6F 66 20 43 56 45 2D 32 30 30 39 2D 30 36 35   of CVE-2009-06538 20 28 4A 42 49 47 32 29 20 64 65 74 65 63 74  8 (JBIG2) detect65 64 20 69 6E 20 6F 62 6A 65 63 74 20 38 2C 20  ed in object 8,64 65 63 6C 61 72 65 64 20 61 73 20 2F 4C 65 6E  declared as /Len67 74 68 20 33 33 2F 46 69 6C 74 65 72 20 5B 2F  gth 33/Filter [/46 6C 61 74 65 44 65 63 6F 64 65 2F 41 53 43 49  FlateDecode/ASCI49 48 65 78 44 65 63 6F 64 65 2F 4A 42 49 47 32  IHexDecode/JBIG244 65 63 6F 64 65 20 5D 20                       Decode ]
  • 66.
    Nugget Brain Storm…Seriously,what would you do with a pointer and a size?
  • 67.
    The basic ideaCreatefile format templates which parse our elements and provide you a datastructureProvide a full, common, scripting language interface to create rules (Ruby? Python? Both?)Only do the heavy work (templating) once per file format.
  • 68.
    Demo OneJBIG, ASCIIHex Decoding & Inflation
  • 69.
    What just happened?04/21-11:17:58.1271873878[**] [300:3221225473:1] URL:/wrl/first.pdf Hostname:wrl Alert Info:Probable exploit of CVE-2009-0658 (JBIG2) detected in object 8, declared as /Length 29/Filter [/FlateDecode/ASCIIHexDecode/JBIG2Decode ] [**] {TCP} 192.168.0.1:0 -> 204.15.227.178:004/21-11:17:58.12718738780:0:0:0:0:0 -> 0:0:0:0:0:0 type:0x800 len:0x0192.168.0.1:0 -> 204.15.227.178:0 TCP TTL:240 TOS:0x10 ID:0 IpLen:20 DgmLen:1280***AP*** Seq: 0x0 Ack: 0x0 Win: 0x0 TcpLen: 2055 52 4C 3A 2F 77 72 6C 2F 66 69 72 73 74 2E 70 URL:/wrl/first.p64 66 20 48 6F 73 74 6E 61 6D 65 3A 77 72 6C 20 dfHostname:wrl41 6C 65 72 74 20 49 6E 66 6F 3A 50 72 6F 62 61 Alert Info:Proba62 6C 65 20 65 78 70 6C 6F 69 74 20 6F 66 20 43 ble exploit of C56 45 2D 32 30 30 39 2D 30 36 35 38 20 28 4A 42 VE-2009-0658 (JB49 47 32 29 20 64 65 74 65 63 74 65 64 20 69 6E IG2) detected in20 6F 62 6A 65 63 74 20 38 2C 20 64 65 63 6C 61 object 8, decla72 65 64 20 61 73 20 2F 4C 65 6E 67 74 68 20 32 red as /Length 239 2F 46 69 6C 74 65 72 20 5B 2F 46 6C 61 74 65 9/Filter [/Flate44 65 63 6F 64 65 2F 41 53 43 49 49 48 65 78 44 Decode/ASCIIHexD65 63 6F 64 65 2F 4A 42 49 47 32 44 65 63 6F 64 ecode/JBIG2Decod65 20 5D 20 e ] =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+