throbber
I lllll llllllll II llllll lllll lllll lllll lllll lllll lllll lllll 111111111111111111111111111111111
`US 20050108562Al
`
`(19) United States
`(12) Patent Application Publication
`Khazan et al.
`
`(10) Pub. No.: US 2005/0108562 Al
`May 19, 2005
`(43) Pub. Date:
`
`(54) TECHNIQUE FOR DETECTING
`EXECUTABLE MALICIOUS CODE USING A
`COMBINATION OF STATIC AND DYNAMIC
`ANALYSES
`
`(76)
`
`Inventors: Roger I. Khazan, Somerville, MA
`(US); Jesse C. Rabek, Boston, MA
`(US); Scott M. Lewandowski, Reading,
`MA (US); Robert K. Cunningham,
`Lexington, MA (US)
`
`Correspondence Address:
`Patent Group
`Choate, Hall & Stewart
`Exchange Place
`53 State Street
`Boston, MA 02109-2804 (US)
`
`(21)
`
`Appl. No.:
`
`10/464,828
`
`(22)
`
`Filed:
`
`Jun. 18,2003
`
`Publication Classification
`
`(51)
`
`Int. Cl.7 ..................................................... G06F 11/30
`
`(52) U.S. Cl. .............................................................. 713/200
`
`(57)
`
`ABSTRACT
`
`Described are techniques used for automatic detection of
`malicious code by verifying that an application executes in
`accordance with a model defined using calls to a predeter(cid:173)
`mined set of targets, such as external routines. A model is
`constructed using a static analysis of a binary form of the
`application, and is comprised of a list of calls to targets, their
`invocation and target locations, and possibly other call(cid:173)
`related information. When the application is executed,
`dynamic analysis is used to intercept calls to targets and
`verify them against the model. The verification may involve
`comparing the invocation and target location, as well as
`other call-related information, available at the time of call
`interception to the corresponding information identified by
`static analysis. A failed verification determines that the
`application includes malicious code. As an option, once
`detected, the malicious code may be allowed to execute to
`gather information about its behavior.
`
`400~
`
`40
`
`A call to a target function being
`monitored is intercepted
`
`NO
`
`406
`
`Detect as malicious code
`and perform related processing
`
`YES
`
`NO
`
`YES
`
`41
`
`41
`
`Continue execution of
`the target function
`
`Perform post monitoring
`processing
`
`YES
`
`41
`
`Gather data about
`malicious code be ha vi or
`
`Return to
`application
`
`1
`
`SYMC 1010
`
`

`
`Patent Application Publication May 19, 2005 Sheet 1 of 13
`
`US 2005/0108562 Al
`
`7
`"' 0
`::r::
`
`..0
`.!.
`"'
`0
`::i:::
`
`-"' 0
`
`::i:::
`
`~
`;:!;
`
`(
`..0
`;:!;
`
`/
`
`r-
`00 -
`
`a
`~
`:>.
`(I)
`0)
`bO
`"' ...
`B
`~
`~
`
`(I)
`
`(
`N ,....
`
`0 -
`
`2
`
`SYMC 1010
`
`

`
`Patent Application Publication May 19, 2005 Sheet 2 of 13
`
`US 2005/0108562 Al
`
`N
`
`N ......
`
`3
`
`SYMC 1010
`
`

`
`Patent Application Publication May 19, 2005 Sheet 3 of 13
`
`US 2005/0108562 Al
`
`'\
`
`)
`
`o.l
`OJ) ""
`,_.
`8
`o.l
`CIJ
`u
`""-~
`....
`;>-
`o.l 0l
`o;J
`0 0 00
`
`(
`
`0
`0\
`
`0
`00
`,_.
`0
`"'
`"' o.l
`u
`0 ,_.
`11..
`
`~
`
`~
`o.l
`u
`·;;
`o.l
`0
`0
`\D
`;::::, 00
`
`,_.
`;>--.
`0
`s
`o.l "'i"
`~ 00
`
`4
`
`SYMC 1010
`
`

`
`100'\
`
`111\
`
`List of target functions
`whose invocations are to
`be identified by static
`analysis
`
`114\
`
`Libraries
`
`102\
`
`Application
`Executable
`
`112\
`
`List of target functions
`whose invocations are to
`be monitored by dynamic
`analysis
`
`Ill
`
`110 ~----------------------------
`
`10
`
`Static
`Analyzer
`
`Dynamic
`Analyzer
`
`FIGURE 4A
`
`(')
`
`~ .....
`
`""C
`~ .....
`~ = .....
`~ "Cl -....
`.... 0 =
`~
`O' -....
`.... 0 =
`
`(')
`
`~ .....
`
`List of target and
`invocation locations
`
`~
`~
`'-<
`'"""' ~~
`N
`8 Ul
`'Jl =(cid:173)~
`~ .....
`.i;;..
`0 .....,
`'"""' ~
`
`d
`'Jl
`N c c
`~ c
`'"""' c
`00
`Ul
`O'I
`N
`
`>
`'"""'
`
`5
`
`SYMC 1010
`
`

`
`120__,
`
`Obtain static analysis information.
`
`, ..
`
`..-
`
`Load application and associated libraries
`into memory but do not begin execution of
`the application instructions yet.
`
`(')
`
`~ .....
`
`""C
`~ .....
`~ = .....
`~ "Cl -....
`.... 0 =
`~
`O' -....
`.... 0 =
`
`(')
`
`~ .....
`
`H
`
`- Instrument the associated libraries as
`
`loaded into memory for execution.
`
`,,
`
`Execute the instrumented application and associated
`
`- ,..... libraries.
`
`FIGURE4B
`
`~
`~
`'-<
`'"""' ~~
`N
`8 Ul
`rF.J. =(cid:173)~
`~ .....
`Ul
`0 .....,
`'"""' ~
`
`d
`rF.J.
`N c c
`~ c
`'"""' c
`00
`Ul
`O'I
`N
`
`>
`'"""'
`
`6
`
`SYMC 1010
`
`

`
`Patent Application Publication May 19, 2005 Sheet 6 of 13
`
`US 2005/0108562 Al
`
`'--'
`
`<1)
`
`'--'
`
`----
`"' .....l
`.....l
`~ ~
`2
`"'
`"'
`"'
`;;.-.
`(/')
`1::
`E
`:::l
`.!:::
`"'
`i::
`
`0
`(.)
`0
`H
`0...
`0
`E
`"'
`
`;::l
`
`0 - ~
`
`,-_
`"O
`<1)
`"C)
`i::
`<1)
`
`CL "' ;::l
`
`(/')
`I
`<1)
`'c;l
`<1)
`H u
`·i::
`0
`'.;::l
`oO
`.S:l
`0.
`CL
`~
`';<"
`µ.i
`"' "' <1)
`
`(.)
`0
`H
`0...
`~ <1)
`.... u
`
`00
`0 ......
`
`tn
`
`~ ......
`
`~
`
`7
`
`SYMC 1010
`
`

`
`Patent Application Publication May 19, 2005 Sheet 7 of 13
`
`US 2005/0108562 Al
`
`.....1
`.....1
`Cl
`...
`Q)
`0..
`0..
`...
`'"
`:SC
`
`.....1
`.....1
`Cl
`r-i
`;;
`<:::
`ti
`.:.:
`
`('<)
`
`~
`x
`iii
`c:;
`.s
`'°'
`.~
`c..
`0..
`<t:
`
`~
`
`"'
`::i'
`.....1
`Cl
`...
`E
`0
`
`Q)
`
`8
`
`SYMC 1010
`
`

`
`Application.EXE (Source Function)
`
`kernel 32 DLL (Target Function)
`
`200\
`
`ADDRESS API_A
`
`LOC_A::
`
`CALL API_A
`
`<TARGET
`FUNCTION BODY>
`
`RET
`
`I* To Detours Post
`Processing *I
`
`210
`
`208
`
`rampoline Function
`
`<saved instructions from
`API_A>
`
`JUMP API_A + API_A_OFFSET
`
`Wrapper Function
`or Stub Function
`
`API_A_STUB:
`<VERIFY CALL - PRE
`MONITORING CODE>
`
`CALL API_A_TRAMPOLINE
`
`<POST MONITORING CODE>
`
`RETURN I* To source *I
`
`FIGURE 7
`
`(')
`
`~ .....
`
`""C
`~ .....
`~ = .....
`> "Cl
`"Cl -....
`.... 0 =
`""C = O' -....
`.... 0 =
`
`(')
`
`~ .....
`
`~
`~
`'-<
`'"""' ~~
`N c c
`
`Ul
`
`rF.J. =-~
`~ .....
`00
`0 .....,
`'"""' ~
`
`d
`rF.J.
`N c c
`Ul -c
`
`'"""' c
`00
`Ul
`O'I
`N
`
`>
`'"""'
`
`9
`
`SYMC 1010
`
`

`
`300,
`
`30
`
`Current target= first target
`
`YES
`
`-~3p6
`~
`
`308
`
`Save first instructions
`of current target in Trampoline
`save area for current target
`
`310
`
`Replace first instructions of current call
`nction to transfer control
`to stub for current call
`
`31
`
`Add instruction to current target's
`Trampoline to transfer control to
`current target +offset.
`
`31
`
`Current target= next target
`
`FIGURES
`
`(')
`
`~ .....
`
`""C
`~ .....
`~ = .....
`~ "Cl -....
`.... 0 =
`~
`O' -....
`.... 0 =
`
`(')
`
`~ .....
`
`~
`~
`'-<
`'"""' ~~
`N
`8 Ul
`rF.J. =(cid:173)~
`~ .....
`
`~
`0 .....,
`'"""' ~
`
`d
`rF.J.
`N c c
`~ c
`'"""' c
`00
`Ul
`O'I
`N
`
`>
`'"""'
`
`10
`
`SYMC 1010
`
`

`
`400\
`
`40
`
`A call to a target function being
`monitored is intercepted
`
`NO
`
`406
`
`YES
`
`YES
`
`YES
`
`the target function
`
`Perform post monitoring
`processing
`
`41
`
`41
`
`NO
`
`Detect as malicious code
`and perform related processing
`
`NO
`
`+ s
`
`Gather data about
`malicious code behavior
`
`418
`
`Return to
`application
`
`FIGURE9
`
`(')
`
`~ .....
`
`""C
`~ .....
`~ = .....
`~ "Cl -....
`.... 0 =
`~
`O' -....
`.... 0 =
`
`(')
`
`~ .....
`
`~
`~
`'-<
`'"""' ~~
`N
`8 Ul
`'Jl =-~
`~ .....
`'"""' c
`0 .....,
`'"""' ~
`
`d
`'Jl
`N c c
`~ c
`'"""' c
`00
`Ul
`O'I
`N
`
`>
`'"""'
`
`11
`
`SYMC 1010
`
`

`
`500,
`
`.. ....
`
`Invocation
`location 2
`
`...
`....
`
`..
`
`....
`
`Invocation
`location l
`
`Invocation
`location l
`
`Invocation
`location 1
`
`..
`...
`
`Invocation
`location 2
`
`Target location!
`
`Target location 2
`
`:
`
`Target location n
`
`:
`
`FIGURE 10
`
`(')
`
`~ .....
`
`""C
`~ .....
`~ = .....
`~ "Cl -....
`.... 0 =
`~
`O' -....
`.... 0 =
`
`(')
`
`~ .....
`
`~
`~
`'-<
`'"""' ~~
`N
`8 Ul
`'Jl =(cid:173)~
`~ .....
`'"""'
`'"""' 0 .....,
`'"""' ~
`
`d
`'Jl
`N c c
`~ c
`'"""' c
`00
`Ul
`O'I
`N
`
`>
`'"""'
`
`12
`
`SYMC 1010
`
`

`
`Patent Application Publication May 19, 2005 Sheet 12 of 13
`
`US 2005/0108562 Al
`
`.... ....
`
`N
`c::
`...... 0
`Oil
`......
`<!) · -
`~ ~
`f-< .9
`
`c:: N
`.g c::
`u ·-
`(':j 0
`-
`0 ""
`> u
`c:: .9
`
`-..
`
`c::
`c::
`...... 0
`I ! ) · -
`00 ......
`._,
`ro
`(':j u
`E-< .9
`
`c::
`c::
`.9 c::
`u ·-
`~ 0
`-
`0 ~
`> u
`c:: .9
`
`-c::
`
`..., 0
`Oil ......
`<!) · -
`~ ~
`E-< .9
`
`c:: -.9 c::
`
`~ .g
`u
`ro
`0
`> u
`c:: .9
`......
`
`(
`
`0
`"' VI
`
`13
`
`SYMC 1010
`
`

`
`600~
`
`Return locationl
`
`Invocation
`- location 1
`
`~
`
`Target locationl
`
`Return location 2
`
`~
`
`...
`
`Invocation
`location 1
`
`Target location 2
`
`Return location n
`
`Invocation
`location 1
`
`Target location n
`
`FIGURE 12
`
`(')
`
`~ .....
`
`""C
`~ .....
`~ = .....
`~ "Cl -....
`.... 0 =
`~
`O' -....
`.... 0 =
`
`(')
`
`~ .....
`
`~
`~
`'-<
`'"""' ~~
`N
`8 Ul
`'Jl =(cid:173)~
`~ .....
`'"""' ~
`0 .....,
`'"""' ~
`
`d
`'Jl
`N c c
`~ c
`'"""' c
`00
`Ul
`O'I
`N
`
`>
`'"""'
`
`14
`
`SYMC 1010
`
`

`
`US 2005/0108562 Al
`
`May 19, 2005
`
`1
`
`TECHNIQUE FOR DETECTING EXECUTABLE
`MALICIOUS CODE USING A COMBINATION OF
`STATIC AND DYNAMIC ANALYSES
`
`STATEMENT OF GOVERNMENT INTEREST
`
`[0001] The invention was made with Government support
`under contract No. F19628-00-C-0002 by the Department of
`the Air Force. The Government has certain rights in the
`invention.
`
`BACKGROUND
`
`[0002] 1. Technical Field
`
`[0003] This application generally relates to computer sys(cid:173)
`tems, and more particularly to a computer program that
`executes in a computer system.
`
`[0004] 2. Description of Related Art
`
`[0005] Computer systems may be used in performing a
`variety of different tasks and operations. As known in the art,
`a computer system may execute machine instructions to
`perform a task or operation. A software application is an
`example of a machine executable program that includes
`machine instructions which are loaded into memory and
`executed by a processor in the computer system. A computer
`system may execute machine instructions referred to herein
`as malicious code (MC). MC may be characterized as
`machine instructions which, when executed, perform an
`unauthorized function or task that may be destructive, dis(cid:173)
`ruptive, or otherwise cause problems within the computer
`system upon which it is executed. Examples of MC include,
`for example, a computer virus, a worm, a trojan application,
`and the like.
`
`[0006] MC can take any one or more of a variety of
`different forms. For example, MC may be injected into a
`software application. Injection may be characterized as a
`process by which MC is copied into the address space of an
`application or process in memory without modifying the
`binary of the application on disk. For example, MC may be
`injected into an application's address space by exploiting a
`buffer overflow vulnerability contained in the application. It
`should be noted that injection techniques, and other types of
`MC, are known in the art and described, for example, in the
`Virus Bulletin (http://www.virusbtn.com) and in "Attacking
`Malicious Code: A report to the Infosec Research Council,"
`by G. McGraw and G. Morrisett (IEEE Software, pp. 33-41,
`2000. (http://www.cigital.com/-gem/malcode.pdf).
`
`[0007] MC may also be embedded within a software
`application on disk in which case the MC appears as part of
`the application's code. Embedded MC may be classified as
`simple, dynamically generated, or obfuscated. Dynamically
`generated MC may be characterized as MC that is generated
`during application execution. For example, the MC may be
`in a compressed form included as part of the software
`application. When the software application is executed, the
`MC is decompressed and then executed. Obfuscated MC
`may be characterized as MC which tries to disguise the
`actual operation or task in an attempt to hide its malicious
`intention. Obfuscated MC may, for example, perform com(cid:173)
`plex address calculations when computing a target address
`of an execution transfer instruction at run time. Simple MC
`may be characterized as MC that is embedded, but which is
`not one included in the other foregoing categories. Simple
`
`MC may be characterized as code that appears as "straight(cid:173)
`forward" or typical compiler-generated code.
`
`[0008] There is a wide variety of known approaches used
`in detecting the foregoing types of MC. The approaches may
`be placed into two general categories referred to herein as
`misuse detection approaches and anomaly detection
`approaches. Misuse detection approaches generally look for
`known indications of MC such as, for example, known static
`code patterns, such as signatures of simple MC, or known
`run time behavior, such as execution of a particular series of
`instructions. Anomaly detection approaches use a model or
`definition of what is expected or normal with respect to a
`particular application and then look for deviations from this
`model.
`
`foregoing
`the
`techniques based on
`[0009] Existing
`approaches used in MC detection have drawbacks. One
`problem is that existing misuse detection techniques are
`based only on the known static features and/or dynamic
`behaviors of existing MC. These techniques may miss, for
`example, slight variations of known MC and new, previ(cid:173)
`ously unseen, instances of MC. Another problem relates to
`models, and techniques for generating them, that may be
`used in connection with anomaly detection approaches.
`Approaches in which humans generate and construct a
`model of an application may be inappropriate and imprac(cid:173)
`tical because they are time consuming and may be error
`prone due to the level of detail that may be required to have
`an accurate and usable model. Some existing anomaly
`detection techniques create models of normal behavior of a
`particular application based on observing sequences of sys(cid:173)
`tem calls executed at run time as part of a learning phase.
`When the learning phase is completed, anomaly detection
`may be performed by continuing to monitor the applica(cid:173)
`tion's executions looking for run time deviations from the
`learned behavior. With such techniques, false positives may
`result, for example, due to the limited amount of behavior
`observed during a learning phase. Unlearned behavior of an
`application observed during an anomaly detection phase, but
`not during the learning phase, results in false positives.
`Thus, from the conception of the model, there are antici(cid:173)
`pated failures. Additionally, statistical based models con(cid:173)
`structed from statistical measurements of static features
`and/or dynamic behavior of an application may be used.
`Statistical models generally include a detection threshold
`which adjusts the amount of false positives and/or false
`negatives. Finally, models can be constructed by static
`analysis of software applications but such approaches have
`not been practical. Some of these models are too "heavy
`weight" having excessive details about possible applica(cid:173)
`tions' behaviors so that they are not applicable to real-world
`software applications, and/or cannot be constructed, and/or
`used within acceptable overhead limits. In contrast, other
`existing models are too "light weight" having not enough
`detail so MC can easily bypass detection. Similar problems
`may apply to the models constructed by methods other than
`static analysis, such as by observing application's behavior.
`
`[0010] Thus, it may be desirable to have an efficient
`technique for MC detection that is applicable to real-world
`software applications and is able to accurately detect known
`and unknown MC prior to executing the MC. It may be
`especially desirable to have such techniques for detecting
`challenging classes of MC, such as injected, dynamically
`generated, and obfuscated. Additionally, it may be desirable
`
`15
`
`SYMC 1010
`
`

`
`US 2005/0108562 Al
`
`May 19, 2005
`
`2
`
`that the technique be able to, in addition to detecting
`presence of MC, identify which code portions within the
`applications correspond to the MC. It may also be desirable
`that the technique be useful in analysis MC, for example, to
`gather information about MC.
`
`SUMMARY OF THE INVENTION
`[0011]
`In accordance with one aspect of the invention is a
`method for detecting malicious code comprising: perform(cid:173)
`ing static analysis of an application prior to execution of the
`application identifying any invocations of at least one pre(cid:173)
`determined target routine; determining, prior to executing
`said at least one predetermined target routine during execu(cid:173)
`tion of the application, whether a run time invocation of the
`at least one predetermined target routine has been identified
`by said static analysis as being invoked from a predeter(cid:173)
`mined location in said application; and if the run time
`invocation of the at least one predetermined target routine
`has not been identified from a predetermined location by
`said static analysis, determining that the application includes
`malicious code.
`[0012]
`In accordance with another aspect of the invention
`is a method for detecting malicious code comprising: deter(cid:173)
`mining, prior to executing at least one predetermined target
`routine during execution of the application, whether a run
`time invocation of the at least one predetermined target
`routine is identified by a model as being invoked from a
`predetermined location in said application, said model iden(cid:173)
`tifying locations within said application from which invo(cid:173)
`cations of the at least one predetermined target routine
`occur; and if the run time invocation of the at least one
`predetermined target routine has not been identified from a
`predetermined location by said model, determining that the
`application includes malicious code.
`[0013]
`In accordance with yet another aspect of the inven(cid:173)
`tion is a method for detecting malicious code comprising:
`obtaining static analysis information of an application iden(cid:173)
`tifying any invocations of at least one predetermined target
`routine; determining, prior to executing said at least one
`predetermined target routine during execution of the appli(cid:173)
`cation, whether a run time invocation of the at least one
`predetermined target routine has been identified by said
`static analysis information as being invoked from a prede(cid:173)
`termined location in said application; and if the run time
`invocation of the at least one predetermined target routine
`has not been identified from a predetermined location by
`said static analysis information, determining that the appli(cid:173)
`cation includes malicious code.
`[0014]
`In accordance with another aspect of the invention
`is a computer program product that detects malicious code
`comprising: executable code that performs static analysis of
`an application prior to execution of the application identi(cid:173)
`fying any invocations of at least one predetermined target
`routine; executable code that determines, prior to executing
`said at least one predetermined target routine during execu(cid:173)
`tion of the application, whether a run time invocation of the
`at least one predetermined target routine has been identified
`by said static analysis as being invoked from a predeter(cid:173)
`mined location in said application; and executable code that,
`if the run time invocation of the at least one predetermined
`target routine has not been identified from a predetermined
`location by said static analysis, determines that the applica(cid:173)
`tion includes malicious code.
`
`[0015]
`In accordance with another aspect of the invention
`is a computer program product that detects malicious code
`comprising: executable code that determines, prior to
`executing at least one predetermined target routine during
`execution of the application, whether a run time invocation
`of the at least one predetermined target routine is identified
`by a model as being invoked from a predetermined location
`in said application, said model identifying locations within
`said application from which invocations of the at least one
`predetermined target routine occur; and executable code
`that, if the run time invocation of the at least one predeter(cid:173)
`mined target routine has not been identified from a prede(cid:173)
`termined location by said model, determines that the appli(cid:173)
`cation includes malicious code.
`
`[0016]
`In accordance with yet another aspect of the inven(cid:173)
`tion is a computer program product that detects malicious
`code comprising: executable code that obtains static analysis
`information of an application identifying any invocations of
`at least one predetermined target routine; executable code
`that determines, prior to executing said at least one prede(cid:173)
`termined target routine during execution of the application,
`whether a run time invocation of the at least one predeter(cid:173)
`mined target routine has been identified by said static
`analysis information as being invoked from a predetermined
`location in said application; and executable code that, if the
`run time invocation of the at least one predetermined target
`routine has not been identified from a predetermined loca(cid:173)
`tion by said static analysis information, determines that the
`application includes malicious code.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`[0017] Features and advantages of the present invention
`will become more apparent from the following detailed
`description of exemplary embodiments thereof taken in
`conjunction with the accompanying drawings in which:
`
`[0018] FIG. 1 is an example of an embodiment of a
`computer system according to the present invention;
`
`[0019] FIG. 2 is an example of an embodiment of a data
`storage system of the computer system of FIG. 1;
`
`[0020] FIG. 3 is an example of an embodiment of com(cid:173)
`ponents that may be included in a host system of the
`computer system of FIG. 1;
`
`[0021] FIG. 4A is an example of an embodiment of
`components that may be included in a host computer of FIG.
`1;
`
`[0022] FIG. 4B is a flowchart of processing steps that may
`be performed in an embodiment using the components of
`FIG. 4A.
`
`[0023] FIG. 5 is an example of routines that may be
`invoked in an embodiment of the dynamic analyzer of FIG.
`4A;
`
`[0024] FIG. 6 is an example of a representation of the
`address space of an application and associated libraries
`loaded into memory, possibly in a suspended state;
`
`[0025] FIG. 7 is an example of a logical flow of control
`between functions at run time to intercept calls to the
`predetermined functions or routines being monitored as part
`of dynamic analysis;
`
`16
`
`SYMC 1010
`
`

`
`US 2005/0108562 Al
`
`May 19, 2005
`
`3
`
`[0026] FIG. 8 is a flowchart of method steps of one
`embodiment for instrumenting functions or routines;
`
`[0027] FIG. 9 is a flowchart of method steps of one
`embodiment summarizing run time processing related to
`monitoring as performed by the dynamic analyzer; and
`
`[0028] FIGS. 10, 11 and 12 are examples of embodiments
`of data structures that may be used in storing the target
`locations and corresponding invocation locations.
`
`DETAILED DESCRIPTION OF
`EMBODIMENT(S)
`[0029] Referring now to FIG. 1, shown is an example of
`an embodiment of a computer system according to the
`present invention. The computer system 10 includes a data
`storage system 12 connected to host systems 14a-14n
`through communication medium 18. In this embodiment of
`the computer system 10, the N hosts 14a-14n may access the
`data storage system 12, for example, in performing input/
`output (110) operations or data requests. The communication
`medium 18 may be any one of a variety of networks or other
`type of communication connections as known to those
`skilled in the art. The communication medium 18 may be a
`network connection, bus, and/or other type of data link, such
`as a hardwire, wireless, or other connection known in the art.
`For example, the communication medium 18 may be the
`Internet, an intranet, network or other connection(s) by
`which the host systems 14a-14n may access and communi(cid:173)
`cate with the data storage system 12, and may also commu(cid:173)
`nicate with others included in the computer system 10.
`[0030] Each of the host systems 14a-14n and the data
`storage system 12 included in the computer system 10 may
`be connected to the communication medium 18 by any one
`of a variety of connections as may be provided and sup(cid:173)
`ported in accordance with the type of communication
`medium 18.
`[0031]
`It should be noted that the particulars of the hard(cid:173)
`ware and software included in each of the host systems
`14a-14n, as well as those components that may be included
`in the data storage system 12, are described herein in more
`detail, and may vary with each particular embodiment. Each
`of the host computers 14a-14n may all be located at the same
`physical site, or, alternatively, may also be located in dif(cid:173)
`ferent physical locations. Examples of the communication
`medium that may be used to provide the different types of
`connections between the host computer systems and the data
`storage system of the computer system 10 may use a variety
`of different communication protocols such as SCSI,
`ESCON, Fibre Channel, or GIGE (Gigabit Ethernet), and
`the like. Some or all of the connections by which the hosts
`and data storage system 12 may be connected to the com(cid:173)
`munication medium 18 may pass through other communi(cid:173)
`cation devices, such as a Connectrix or other switching
`equipment that may exist such as a phone line, a repeater, a
`multiplexer or even a satellite.
`[0032] Each of the host computer systems may perform
`different types of data operations in accordance with differ(cid:173)
`ent types of tasks. In the embodiment of FIG. 1, any one of
`the host computers 14a-14n may issue a data request to the
`data storage system 12 to perform a data operation, such as
`a read or a write operation.
`[0033] Referring now to FIG. 2, shown is an example of
`an embodiment of a data storage system 12 that may be
`
`included in the computer system 10 of FIG. 1. The data
`storage system 12 in this example may include a plurality of
`data storage devices 30a through 30n. The data storage
`devices 30a through 30n may communicate with compo(cid:173)
`nents external to the data storage system 12 using commu(cid:173)
`nication medium 32. Each of the data storage devices may
`be accessible to the hosts 14a through 14n using an interface
`connection between the communication medium 18 previ(cid:173)
`ously described in connection with the computer system 10
`and the communication medium 32. It should be noted that
`a communication medium 32 may be any one of a variety of
`different types of connections and interfaces used to facili(cid:173)
`tate communication between communication medium 18
`and each of the data storage devices 30a through 30n.
`[0034] The data storage system 12 may include any num(cid:173)
`ber and type of data storage devices. For example, the data
`storage system may include a single device, such as a disk
`drive, as well as a plurality of devices in a more complex
`configuration, such as with a storage area network and the
`like. Data may be stored, for example, on magnetic, optical,
`or silicon-based media. The particular arrangement and
`configuration of a data storage system may vary in accor(cid:173)
`dance with the parameters and requirements associated with
`each embodiment.
`[0035] Each of the data storage devices 30a through 30n
`may be characterized as a resource included in an embodi(cid:173)
`ment of the computer system 10 to provide storage services
`for the host computer systems 14a through 14n. The devices
`30a through 30n may be accessed using any one of a variety
`of different techniques. In one embodiment, the host systems
`may access the data storage devices 30a through 30n using
`logical device names or logical volumes. The logical vol(cid:173)
`umes may or may not correspond to the actual data storage
`devices. For example, one or more logical volumes may
`reside on a single physical data storage device such as 30a.
`Data in a single data storage device may be accessed by one
`or more hosts allowing the hosts to share data residing
`therein.
`[0036] Referring now to FIG. 3, shown is an example of
`an embodiment of a host or user system 14a. It should be
`noted that although a particular configuration of a host
`system is described herein, other host systems 14b-14n may
`also be similarly configured. Additionally, it should be noted
`that each host system 14a-14n may have any one of a variety
`of different configurations including different hardware and/
`or software components. Included in this embodiment of the
`host system 14a is a processor 80, a memory, 84, one or
`more 1/0 devices 86 and one or more data storage devices
`82 that may be accessed locally within the particular host
`system. Each of the foregoing may communicate using a bus
`or other communication medium 90. Each of the foregoing
`components may be any one or more of a variety of different
`types in accordance with the particular host system 14a.
`[0037] Each of the processors included in the host com(cid:173)
`puter systems 14a-14n may be any one of a variety of
`commercially available single or multi-processor system,
`such as embedded Xscale processor, an Intel-compatible x86
`processor, an IBM mainframe or other type of commercially
`available processor, able to support incoming traffic in
`accordance with each particular embodiment and applica(cid:173)
`tion.
`[0038] Computer instructions may be executed by the
`processor 80 to perform a variety of different operations. As
`
`17
`
`SYMC 1010
`
`

`
`US 2005/0108562 Al
`
`May 19, 2005
`
`4
`
`known in the art, executable code may be produced, for
`example, using a linker, a language processor, and other
`tools that may vary in accordance with each embodiment.
`Computer instructions and data may also be stored on a data
`storage device 82, ROM, or other form of media or storage.
`The instructions may be loaded into memory 84 and
`executed by processor 80 to perform a particular task.
`
`[0039]
`In one embodiment, an operating system, such as
`the Windows operating system by Microsoft Corporation,
`may reside and be executed on one or more of the host
`computer systems included in the computer system 10 of
`FIG. 1.
`
`[0040] Referring now to FIG. 4A, shown is an example of
`an embodiment of components that may reside and be
`executed on one or more of the host computer systems
`included in the computer system 10 of FIG. 1. The com(cid:173)
`ponents 100 in this embodiment include an application
`executable 102, one or more libraries, such as dynamic link
`libraries (DLLs) 114, a malicious code (MC) detection
`system 110, the list of targets and invocation locations 106,
`a list of target functions whose invocations are to be iden(cid:173)
`tified by static analysis 111, and a list of target functions
`whose invocations are to be monitored by dynamic analysis
`112. The MC detection system 110 includes a static analyzer
`104 and a dynamic analyzer 108. The application executable
`102 may be characterized as a binary file or machine
`executable program as may be produced, for example, by
`compiling and linking. In order to execute the application
`executable 102 from this point, the application executable
`may be loaded in memory, for example, as by a loader.
`Subsequently, the instructions of the application executable
`102 may be executed by one or more processors of the host
`computer.
`
`[0041]
`It should be noted that a DLL as used herein refers
`to a particular type of library as used in the Windows
`operating system by Microsoft Corporation. Other embodi(cid:173)
`ments may use other terms and names in describing other
`libraries that vary with the particular software of the
`embodiment. Also, as used herein, the terms functions and
`routines are used interchangeably.
`
`[0042]
`In this embodiment, prior to executing the appli(cid:173)
`cation executable 102, an analysis may be performed by the
`static analyzer 104 to examine and identify calls or invoca(cid:173)
`tions made from the application executable 102 to a prede(cid:173)
`termined set of target functions or routines. An embodiment
`may also identify additional information about these func(cid:173)
`tions, such as, for example, particular locations within the
`application from which the calls to these functions are made,
`parameter number and type information for each call, the
`values that some of these parameters take at run-time, and
`the like. For example, in one embodiment, it may be
`determined that the target function calls to be identified are
`those that are external to the application 102, such as those
`calls that are made to system functions. These functions may
`represent the set of Win32 Application Programming Inter(cid:173)
`faces (APis) as known to those of ordinary skill in the art in
`the Windows operating system by
`connection with
`Microsoft Corporation.
`
`[0043] Static analysis processing as described herein may
`be characterized as identifying information about code by
`st

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket