Preserving DLL hooks

Information

  • Patent Grant
  • 11899782
  • Patent Number
    11,899,782
  • Date Filed
    Tuesday, July 13, 2021
    3 years ago
  • Date Issued
    Tuesday, February 13, 2024
    10 months ago
Abstract
DLL hooks are protected by mapping the starting address of the new executable to a sample of the former executable. Attempts to read the starting address are responded to with the sample of the former executable. Attempts to write to the starting address are responded to with confirmation of success without actually writing data. Debuggers are detected upon launch or by evaluating an operating system. A component executing in the kernel denies debugging privileges to prevent inspection and modification of DLL hooks.
Description
BACKGROUND

A dynamic link library (DLL) includes commonly used functions that are linked with an application when it is loaded into memory. Addresses of the functions of the DLL in memory are provided to the application upon instantiation. Typically, a DLL is provided as part of the operating system. In some instances, security software may substitute modified functions in the place of one or more functions of a dynamic link library (DLL). The substitution of a security function in the place of a standard DLL function may be referred to as a “DLL hook.”


BRIEF SUMMARY OF THE INVENTION

The systems and methods disclosed herein provide an improved approach for implementing DLL hooks. In one embodiment, a security DLL may be associated with a native DLL that is redirected to the security DLL, where the security DLL performs a threat mitigation function and the native DLL is restricted from performing such a function.





BRIEF DESCRIPTION OF THE FIGURES

In order that the advantages of the invention will be readily understood, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered limiting of its scope, the invention will be described and explained with additional specificity and detail through use of the accompanying drawings, in which:



FIGS. 1A to 1C are schematic block diagrams of network environments for performing methods in accordance with an embodiment of the present invention;



FIGS. 2A to 2C are schematic block diagrams illustrating components for protecting DLL hooks in accordance with an embodiment of the present invention;



FIG. 3 is a process flow diagram of a method for generating protectable DLL hooks in accordance with an embodiment of the present invention;



FIG. 4A is a process flow diagram of a method for preventing detection of DLL hooks in accordance with an embodiment of the present invention;



FIG. 4B is a process flow diagram of a method for preventing modification of DLL hooks in accordance with an embodiment of the present invention;



FIG. 5 is a process flow diagram of a method for handling use of a debugger in order to protect DLL hooks files in accordance with an embodiment of the present invention; and



FIG. 6 is a schematic block diagram of a computer system suitable for implementing methods in accordance with embodiments of the present invention.





DETAILED DESCRIPTION

It will be readily understood that the components of the invention, as generally described and illustrated in the Figures herein, could be arranged and designed in a wide variety of different configurations. Thus, the following more detailed description of the embodiments of the invention, as represented in the Figures, is not intended to limit the scope of the invention, as claimed, but is merely representative of certain examples of presently contemplated embodiments in accordance with the invention. The presently described embodiments will be best understood by reference to the drawings, wherein like parts are designated by like numerals throughout.


Embodiments in accordance with the invention may be embodied as an apparatus, method, or computer program product. Accordingly, the invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.), or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “module” or “system.” Furthermore, the invention may take the form of a computer program product embodied in any tangible medium of expression having computer-usable program code embodied in the medium.


Any combination of one or more computer-usable or computer-readable media may be utilized. For example, a computer-readable medium may include one or more of a portable computer diskette, a hard disk, a random access memory (RAM) device, a read-only memory (ROM) device, an erasable programmable read-only memory (EPROM or Flash memory) device, a portable compact disc read-only memory (CDROM), an optical storage device, and a magnetic storage device. In selected embodiments, a computer-readable medium may comprise any non-transitory medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.


Computer program code for carrying out operations of the invention may be written in any combination of one or more programming languages, including an object-oriented programming language such as Java, Smalltalk, C++, or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages, and may also use descriptive or markup languages such as HTML, XML, JSON, and the like. The program code may execute entirely on a computer system as a stand-alone software package, on a stand-alone hardware unit, partly on a remote computer spaced some distance from the computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).


The invention is described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions or code. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.


These computer program instructions may also be stored in a non-transitory computer-readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instruction means which implement the function/act specified in the flowchart and/or block diagram block or blocks.


The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.


Referring to FIG. 1A, the methods disclosed herein may be practiced in a network environment 100 including a computer system 102 connected to a network, such as the Internet, local area network (LAN), wide area network (WAN), or other type of network. The computer system 102 may be a user endpoint, such as a desktop or laptop computer, tablet computer, smartphone, wearable computing device, or other type of computing device.


An application executing on a computer system and stored in memory 104 may include import address table (IAT) 106. Each memory location in the IAT 106 may refer to the starting address in the memory 104 of a dynamic link library (DLL) function. As known in the art, a DLL is a set of functions used by multiple applications. Applications are incorporate the DLL and make calls to the functions of the DLL but need not include the executables for the functions. Instead, when the application is loaded into memory, the IAT 106 is used to link the application to the locations of the DLL executables 110. When a call to a DLL function is generated by the application, the application invokes the DLL executable 110 pointed to in the entry of the IAT 106 corresponding to that DLL function.


A security application, such as an anti-virus, anti-malware, or deception-based security application, may substitute or augment the functionality of a given DLL executable 110. For example, an IAT DLL hook may be implemented whereby an entry in the IAT 106 referencing the starting address of the DLL executable 110 is modified to refer to a security DLL executable 108 that may either replace the functionality of the executable 110 or perform security functions followed by invoking execution of the DLL executable.


In some embodiments, the security DLL executable 108 may operate in combination with a BotSink 112 to provide deception-based security. The BotSink 112 may create the DLL hook to the security DLL executable 108 and/or execution of the security DLL executable 108 may result in exchange of information with the BotSink 112. It shall be understood that the system for protecting DLL hooks may be used with any system implementing DLL hooks.


The BotSink 112 either alone or with use of DLL hooks may implement any of the method for detecting and engaging malicious code disclosed in the applications of Table 1 (herein after “the incorporated applications”), which are hereby incorporated herein by reference in their entirety.









TABLE 1







Incorporated Applications









Filing




Date
Serial Number
Title





Nov. 7, 2013
14/074,532
Methods and Apparatus for




Redirecting Attacks on a Network


May 7, 2014
61/989,965
Distributed System for Bot Detection


Aug. 12, 2014
14/458,065
Emulating Successful Shellcode




Attacks


Aug. 12, 2014
14/458,026
Distributed System for Bot Detection


Aug. 22, 2014
14/466,646
Evaluating URLS For Malicious




Content


Nov. 20, 2014
14/549,112
System And Method For Directing




Malicious Activity To A Monitoring




System


Jul. 21, 2015
14/805,202
Monitoring Access Of Network




Darkspace


Dec. 10, 2015
14/965,574
Database Deception In Directory




Services


Apr. 29, 2016
15/142,860
Authentication Incident Detection and




Management


May 12, 2016
15/153,471
Luring Attackers Towards Deception




Servers


May 17, 2016
15/157,082
Emulating Successful Shellcode




Attacks


Jul. 7, 2016
15/204,779
Detecting Man-In-The-Middle Attacks


Nov. 23, 2016
15/360,117
Implementing Decoys in Network




Endpoints


Dec. 19, 2016
15/383,522
Deceiving Attackers in Endpoint




Systems


Sep. 5, 2017
15/695,952
Ransomware Mitigation System


Feb. 9, 2018
15/893,176
Implementing Decoys In A Network




Environment


May 22, 2019
16/420,074
Deceiving Attackers in Endpoint




Systems


May 31, 2019
201921021696
Implementing Decoys in a Network




Environment


Aug. 16, 2019
16/543,189
Deceiving Attackers Accessing Active




Directory Data


Apr. 15, 2020
16/849,813
Deceiving Attackers Accessing




Network Data









In any of the incorporated applications, where operating system commands are intercepted or modified, DLL hooks may be used. For example, U.S. application Ser. No. 15/383,522 describes a system that intercepts certain operating system commands to determine whether the commands reference protected data. The interception of these commands may be implemented by DLL hooks substituted for DLL executables for these commands. In another example, U.S. application Ser. No. 15/695,952 describes a system that modifies file system commands to mitigate ransomware attacks. File system commands may be modified by using a DLL hook to replace a file system command executable with a modified DLL executable performing the modified file system commands.


The computer system 102 may be infiltrated by an attacker system 120 accessing the computer system 102 by means of the network 104 or an executable operating in the computer system 102. An attacker system may seek to probe defensive measures implemented on the computer system 102, including the existence of DLL hooks. This may include rewriting the IAT 106 to ensure that all entries refer to their corresponding DLL executables 110 or evaluating the executable code referenced by entries in the IAT 106 to ensure that the executable code match the expected DLL executable 110 for a given operating system vendor or other source. The systems and methods disclosed herein hinder such attempts as described in detail below.



FIG. 1B illustrates an export address table (EAT) DLL hook. An EAT DLL hook may be implemented by modifying the export address table 122 may include modifying the EAT of a DLL such that a reference to the starting address (memory address storing the first instruction) of the DLL executable 110 is replaced with the starting address of the security DLL executable 108. In particular, the EAT 122 of a DLL may map each function name to an offset address relative to a starting address of the DLL. The offset address may be replaced with the starting address of the DLL. In this manner, when an application is linked with the DLL, the IAT 106 will associate the starting address of the security DLL with the function name.



FIG. 1C illustrates an inline DLL hook. The EAT 122 or IAT 106 stores pointers mapping a function name to the starting address of the DLL executable 110. The instruction stored at the starting address (or any of the first N instructions stored at the first N memory locations including and following the starting address) is modified to include a jump (JMP) instruction 124 that instructs an executing processor to continue execution at an address referenced by the JMP instruction 124, that address being the starting address of the security DLL executable 108. The security DLL executable 108 may replace the DLL executable 110 or may include a JMP instruction back to the DLL executable 110.


Referring to FIG. 2A, applications 202 on the computer system 102 may operate in the context of an operating system 200. The applications 202 may make calls to DLL functions through the operating system 200. The operating system 200 may also include functionality such as a debugger 204 or functions that may be used by a debugger (e.g., placing of break points, inspection of memory). The operating system 200 may further include tools enabling reading from or writing to address locations in the memory 104. These tools may be tools used by a debugger or administrator and may include at least a write command executable 206 and a read command executable 208. For example, the command executable may include windbg debugger controls such as bp (inserts break point instruction), eb (edit/modify bytes at a given address with a given value), uf (un-assemble instructions at a given address), or db (dumps bytes at a given address). As described in greater detail below, each of the write command executable 206 and read command executable 208 may be modified to function according to the methods described herein.


For IAT hooks, the memory 104 may include the IAT 106 including one or more security DLL pointers 210a and possibly one or more DLL pointers 210b that point to a DLL executable 212 as specified by an operating system vendor or other source of the DLL. As outlined above, the DLL pointers 210a may point to a security DLL executable 108. Each DLL executable 108 may completely replace a DLL executable 110 such that the DLL executable 110 is not invoked. Alternatively, each DLL executable 108 may call the DLL executable 110 that it replaces.


The replacement of a pointer to a DLL executable 110 with security DLL pointers 210a may be performed by a software module referred to herein as “the DLL hook module,” which may be the BotSink 112, an agent of the BotSink 112 executing on the computer system 102, or other executable code configured to cause performance of the functions of the DLL hook module described herein.


Before, during, or after modification of the IAT 106 to include the one or more security DLL pointers 210a, the DLL hook module may create a map 214. The map 214 may be stored in the memory 104, a persistent storage device (e.g., hard drive, NAND drive, etc.), or other storage device hosted by the computer system 102. Each entry of the maps 214 may include a security DLL pointer 210a, i.e. the starting address of a security DLL executable 108, and a DLL signature 216. The DLL signature 216 may be a representation of the DLL executable 110 referenced by an entry in the IAT 106 replaced by the security DLL pointer 210a mapped to the DLL signature 216 in the map 214.


The DLL signature 216 may be a portion of the DLL executable 110, such as the first N instructions of the DLL executable 110, where N is a predetermined integer greater than or equal to one, such as 5, 10, 100, 1 kB, or other some other value. The signature 216 may also be a hash or other representation of the entire DLL executable 110 or the first N instructions of the DLL executable 110.



FIGS. 2B and 2C illustrate implementations of EAT and inline DLL hooks, respectively. As shown in FIG. 2B, the EAT table 122 is modified to include a security DLL pointer 210a that stores the starting address of the security DLL executable 108. Upon creation of an EAT hook, the map 214 is updated as for an IAT hook: each entry includes a security DLL pointer 210a that stores the first address of the security DLL executable 108 and a DLL signature 216 for the DLL executable 210 replaced by the security DLL executable 108.


As shown in FIG. 2C, the JMP instruction in the modified DLL executable points to the starting address of the security DLL executable 108 following creation of the inline hook. The map 214 is updated in the same manner as for other types of hooks: each entry includes a security DLL pointer 210a that stores the first address of the security DLL executable 108 and a DLL signature 216 for the DLL executable 210 replaced by the security DLL executable 108. The DLL signature 216 is the signature of the DLL prior to modification to include the JMP instruction 124.



FIG. 3 illustrates a method 300 that may be executed by the DLL hook module. The method 300 is described with respect to actions performed with one DLL hook such that the method 300 may be repeated for each DLL hook that is created. The method 300 may be used for IAT, EAT, and inline DLL hooks.


The method 300 includes generating 302 a DLL hook. As described above this may include modifying an original value at a location in the IAT 106 or EAT to store the starting address of a security DLL executable 108 or placing a JMP instruction in a DLL 110 that points to the starting address of the security DLL executable 108. The method 300 may include reading 304 a DLL signature of the DLL executable 110 that was referenced by the original value. As described above, this may include reading the first N instructions of the DLL executable. The method 300 may further include storing 306 the DLL signature in the map 214 and mapping 308 the starting address of the security DLL 108 to the DLL executable. As noted above, this may include creating an entry including two values: the first value including the starting address of the security DLL 108 and the second value including the DLL signature.



FIG. 4A illustrates a method 400a for hindering detection of DLL hooks. The method 400a may include receiving 402 a read command referencing an address in the memory 104. The read command is received from a source, such as an attacker system 120, and may invoke execution of the read command executable 208. The read command executable 208 may evaluate 404 whether the address referenced by the read command is included in an entry in the map 214. If so, the read command executable 208 may return 406 some or all of the DLL signature 216 mapped to the address referenced by the read command in the map 214. For example, the read command may specify a number of memory locations to read. Accordingly, that number of instructions from the DLL signature 216 may be returned to a source of the read command, such as by way of the operating system 200. As is apparent, the method 400a returns the instructions of the original DLL executable 110 and therefore prevents detection of the DLL hook.


If there is no entry in the map 214 including the address referenced by the read command, the read command executable 208 may read the data from the address or block of addresses referenced by the read command and return 408 the data to the source of the read command. In some instances, the read command may be blocked for other reasons, such as a determination that the source of the read command is malicious or unauthorized. The approach by which the source of the read command is determined to be malicious or unauthorized may be any known in the art or described in the incorporated applications.



FIG. 4B illustrates a method 400b for hindering overwriting of DLL hooks to restore references to original DLL executables. The method 400b may include receiving 410 a write command referencing an address in the memory 104. The write command is received from a source, such as an attacker system 120, and may invoke execution of the write command executable 206. The write command executable 206 may evaluate 412 whether the address referenced by the write command is included in an entry in the map 214. If so, the write command executable 206 may block execution of the write command (e.g., ignore the write command) and return 414 confirmation of successful execution of the write command. As is apparent, the method 400b ensures that the security DLL executable 108 is not overwritten.


If there is no entry in the map 214 including the address referenced by the write command, the write command executable 206 may execute 416 the write command by writing data from the write command to the address or block of addresses referenced by the write command and returning acknowledgment of successful completion of the write command to the source of the write command. In some instances, the write command may be blocked for other reasons, such as a determination that the source of the write command is malicious or unauthorized. The approach by which the source of the write command is determined to be malicious or unauthorized may be any known in the art or described in the incorporated applications.


Referring to FIG. 5, detection of DLL hooks may further be prevented by modifying operation of debuggers executing on the computer system 102. In an operating system such as WINDOWS, LINUX, MACOS, or the like, the operating system may grant debugging privileges to particular executables. An operating system may additionally or alternatively set a flag or otherwise modify processes that have debugging privileges. Debugging privileges may include the ability to set break points, inspect operating system components, inspect memory contents, show intermediate results of functions, directly write to memory locations, and perform other debugging functions known in the art.


The method 500 may include the operating system 200 launching 502 a debugger, i.e. an application that has or requested debugging privileges from the operating system 200. An implementing software module that implements debugging functions may be modified by the BotSink 112, the DLL hook module, or other software component. In particular, the implementing software module may be modified such that in response to launching 502 of the debugger, the implementing software may send 504 an identifier to a kernel component. The identifier may be a process token defining the privileges of the debugger. The implementing software may be or include a hooked DLL or modified operating system function responsible for launching debuggers or granting debugging privileges. The implementing software may use an API (application programming interface) of the operating system 200 to obtain the token in response to detecting launching of the debugger.


In response to receiving the identifier, the kernel component may deny 506 privileges associated with the identifier. For example, the kernel component may monitor creation of handles for the process represented by the identifier, i.e. an object that may be used to reference and access the process in a WINDOWS operating system. In response to requests to create handles for the identifier, the kernel component may remove all access bits from the handle and just set the “PROCESS_QUERY_LIMITED_INFORMATION” bit. With this bit set, commands made using the handle cannot modify any aspect of the process as a debugger, including placement of breakpoints.


Additionally or alternatively, the implementing software may, in user mode, identify all known debuggers that the operating system 200 is configured to grant debugging privileges. The resource file of these debuggers may be evaluated to determine its internal name and this internal name may be passed to the kernel component. The kernel component may then remove debugging privileges from processes including the internal name, such as by modifying handle privileges as described above.


In addition to the approaches described above with respect to FIGS. 1 through 5, additional measures may be taken to prevent DLL hooks. For example, for hooks according to any of the foregoing embodiments, a name of each security DLL executable 108 in the loader descriptor table (LDR) may be replaced with the name of the DLL executable 110 replaced by that security DLL executable 108. In another example, the GetMappedFileName( ) executable may be itself hooked and replaced with a security DLL executable 108 that is programmed to modify results returned when the GetMappedFileName( ) function is called. For example, where the result of a call to GetMappedFileName( ) would result in the name of a security DLL executable 108, the name of the DLL executable 110 replaced by that security executable DLL 108 will be returned instead.



FIG. 6 is a block diagram illustrating an example computing device 600 which can be used to implement the system and methods disclosed herein. The computer system 102, BotSink 112, and attacker system 120 may have some or all of the attributes of the computing device 600. In some embodiments, a cluster of computing devices interconnected by a network may be used to implement any one or more components of the invention.


Computing device 600 may be used to perform various procedures, such as those discussed herein. Computing device 600 can function as a server, a client, or any other computing entity. Computing device can perform various monitoring functions as discussed herein, and can execute one or more application programs, such as the application programs described herein. Computing device 600 can be any of a wide variety of computing devices, such as a desktop computer, a notebook computer, a server computer, a handheld computer, tablet computer and the like.


Computing device 600 includes one or more processor(s) 602, one or more memory device(s) 604, one or more interface(s) 606, one or more mass storage device(s) 608, one or more Input/Output (I/O) device(s) 610, and a display device 630 all of which are coupled to a bus 612. Processor(s) 602 include one or more processors or controllers that execute instructions stored in memory device(s) 604 and/or mass storage device(s) 608. Processor(s) 602 may also include various types of computer-readable media, such as cache memory.


Memory device(s) 604 include various computer-readable media, such as volatile memory (e.g., random access memory (RAM) 614) and/or nonvolatile memory (e.g., read-only memory (ROM) 616). Memory device(s) 604 may also include rewritable ROM, such as Flash memory.


Mass storage device(s) 608 include various computer readable media, such as magnetic tapes, magnetic disks, optical disks, solid-state memory (e.g., Flash memory), and so forth. As shown in FIG. 6, a particular mass storage device is a hard disk drive 624. Various drives may also be included in mass storage device(s) 608 to enable reading from and/or writing to the various computer readable media. Mass storage device(s) 608 include removable media 626 and/or non-removable media.


I/O device(s) 610 include various devices that allow data and/or other information to be input to or retrieved from computing device 600. Example I/O device(s) 610 include cursor control devices, keyboards, keypads, microphones, monitors or other display devices, speakers, printers, network interface cards, modems, lenses, CCDs or other image capture devices, and the like.


Display device 630 includes any type of device capable of displaying information to one or more users of computing device 600. Examples of display device 630 include a monitor, display terminal, video projection device, and the like.


Interface(s) 606 include various interfaces that allow computing device 600 to interact with other systems, devices, or computing environments. Example interface(s) 606 include any number of different network interfaces 620, such as interfaces to local area networks (LANs), wide area networks (WANs), wireless networks, and the Internet. Other interface(s) include user interface 618 and peripheral device interface 622. The interface(s) 606 may also include one or more user interface elements 618. The interface(s) 606 may also include one or more peripheral interfaces such as interfaces for printers, pointing devices (mice, track pad, etc.), keyboards, and the like.


Bus 612 allows processor(s) 602, memory device(s) 604, interface(s) 606, mass storage device(s) 608, and I/O device(s) 610 to communicate with one another, as well as other devices or components coupled to bus 612. Bus 612 represents one or more of several types of bus structures, such as a system bus, PCI bus, IEEE 1394 bus, USB bus, and so forth.


For purposes of illustration, programs and other executable program components are shown herein as discrete blocks, although it is understood that such programs and components may reside at various times in different storage components of computing device 600, and are executed by processor(s) 602. Alternatively, the systems and procedures described herein can be implemented in hardware, or a combination of hardware, software, and/or firmware. For example, one or more application specific integrated circuits (ASICs) can be programmed to carry out one or more of the systems and procedures described herein.

Claims
  • 1. A method performed by a computer system, the method comprising: modifying memory to include a reference to a security dynamic link library (DLL) such that invocation of a function associated with a native DLL is redirected to the security DLL using the reference to the security DLL, the security DLL being different from the native DLL and invoking performance of a threat mitigation function that the native DLL is not programmed to perform;generating an entry in a mapping, wherein the entry comprises the reference to the security DLL and a representation of the native DLL;receiving, from a source, instructions referencing an address in memory; andrestricting the address in memory from direct access by the source based on a determination that the address in memory corresponds to the entry in the mapping, wherein restricting the address in the one or more memory devices from direct access by the source comprises restricting access to the reference to the security DLL by modifying an operating system to restrict use of debugging privileges.
  • 2. The method of claim 1, wherein the mapping is stored in memory.
  • 3. The method of claim 1, wherein the representation of the native DLL is a first N lines of instructions of the native DLL, where N is an integer greater than or equal to one.
  • 4. The method of claim 3, wherein the reference to the security DLL is a second address in memory.
  • 5. The method of claim 4, wherein restricting the address in memory from direct access by the source comprises returning the first N lines of instructions of the native DLL in response to determining that a read reference received with the instructions matches the entry in the mapping.
  • 6. The method of claim 4, wherein restricting the address in memory from direct access by the source comprises in response to determining that a write reference received with the instructions matches the entry in the mapping, refraining from writing data received with the instructions.
  • 7. The method of claim 6, wherein restricting the address in memory from direct access by the source comprises in response to determining that a write reference received with the instructions matches the entry in the mapping, refraining from writing data received with the instructions while returning an indicator of successful writing of the data received with the instructions.
  • 8. The method of claim 1, further comprising: detecting, by the computer system, launching of a debugging executable;passing, by the computer system, a reference to the debugging executable to a kernel of an operating system executing on the computer system; andwithdrawing, by the computer system, debugging privileges from the reference to the debugging executable.
  • 9. The method of claim 8, wherein the reference to the debugging executable is referenced by a handle and wherein withdrawing debugging privileges from the reference to the debugging executable comprises removing debugging privileges associated with a token included in the handle.
  • 10. A system comprising one or more processing devices and one or more memory devices operably coupled to the one or more processing devices, the one or more memory devices storing executable code effective to cause the one or more processing devices to: modify memory to include a reference to a security dynamic link library (DLL) such that invocation of a function associated with a native DLL is redirected to the security DLL using the reference to the security, DLL, the security DLL being different from the native DLL and invoking performance of a threat mitigation function that the native DLL is not programmed to perform;receive, from a source, instructions referencing an address in the one or more memory devices; andrestrict the address in the one or more memory devices from direct access by the source based on a determination that the address in the one or more memory devices corresponds to the entry in the mapping, wherein restricting the address in the one or more memory devices from direct access by the source comprises restricting access to the reference to the security DLL by modifying an operating system to restrict use of debugging privileges.
  • 11. The system of claim 10, wherein the mapping is stored in the one or more memory devices.
  • 12. The system of claim 10, wherein the representation of the native DLL is a first N lines of instructions of the native DLL, where N is an integer greater than or equal to one.
  • 13. The system of claim 12, wherein the reference to the security DLL is a second address in the one or more memory devices.
  • 14. The system of claim 13, wherein restricting the address in the one or more memory devices from direct access by the source comprises returning the first N lines of instructions of the native DLL in response to determining that a read reference received with the instructions matches the entry in the mapping.
  • 15. The system of claim 13, wherein restricting the address in the one or more memory devices from direct access by the source comprises in response to determining that a write reference received with the instructions matches the entry in the mapping, refraining from writing data received with the instructions.
  • 16. The system of claim 15, wherein restricting the address in the one or more memory devices from direct access by the source comprises in response to determining that a write reference received with the instructions matches the entry in the mapping, refraining from writing data received with the instructions while returning an indicator of successful writing of the data received with the instructions.
  • 17. The system of claim 10, wherein the executable code is further effective to cause the one or more processing devices to: detect launching of a debugging executable;pass a reference to the debugging executable to a kernel of an operating system; and withdraw debugging privileges from the reference to the debugging executable.
  • 18. The system of claim 17, wherein: the reference to the debugging executable is referenced by a handle; andthe executable code is further effective to cause the one or more processing devices to withdraw debugging privileges from the reference to the debugging executable by removing debugging privileges associated with a token included in the handle.
US Referenced Citations (475)
Number Name Date Kind
4979118 Kheradpir Dec 1990 A
5311593 Carmi May 1994 A
6154844 Touboul et al. Nov 2000 A
6157953 Chang et al. Dec 2000 A
6728716 Bhattacharya et al. Apr 2004 B1
6804780 Touboul Oct 2004 B1
6836888 Basu et al. Dec 2004 B1
7076696 Stringer Jul 2006 B1
7093239 Van der Made Aug 2006 B1
7181769 Keanini et al. Feb 2007 B1
7225468 Waisman et al. May 2007 B2
7299294 Bruck et al. Nov 2007 B1
7305546 Miller Dec 2007 B1
7322044 Hrastar Jan 2008 B2
7464407 Nakae et al. Dec 2008 B2
7530106 Zaitsev et al. May 2009 B1
7543269 Krueger Jun 2009 B2
7546587 Marr et al. Jun 2009 B2
7574740 Kennis Aug 2009 B1
7596807 Ptacek et al. Sep 2009 B2
7596808 Wilkinson et al. Sep 2009 B1
7665139 Szor Feb 2010 B1
7710933 Sundaralingam et al. May 2010 B1
7739516 Bender et al. Jun 2010 B2
7832012 Huddleston Nov 2010 B2
7882538 Palmer Feb 2011 B1
7890612 Todd et al. Feb 2011 B2
7937755 Guruswamy May 2011 B1
7958549 Nakae et al. Jun 2011 B2
7984129 Vaught Jul 2011 B2
8015605 Yegneswaran Sep 2011 B2
8024795 Newton Sep 2011 B2
8042186 Polyakov et al. Oct 2011 B1
8065722 Barford et al. Nov 2011 B2
8078556 Adi et al. Dec 2011 B2
8082471 Khan Dec 2011 B2
8131281 Hildner et al. Mar 2012 B1
8141154 Gruzman et al. Mar 2012 B2
8156556 Krishnamurthy Apr 2012 B2
8171545 Cooley et al. May 2012 B1
8181033 Paul et al. May 2012 B1
8181250 Rafalovich et al. May 2012 B2
8204984 Aziz Jun 2012 B1
8205035 Reddy et al. Jun 2012 B2
8230505 Ahrens et al. Jul 2012 B1
8239947 Glick Aug 2012 B1
8296842 Singh et al. Oct 2012 B2
8327442 Herz et al. Dec 2012 B2
8353033 Chen et al. Jan 2013 B1
8370931 Chien et al. Feb 2013 B1
8375444 Aziz et al. Feb 2013 B2
8375447 Amoroso et al. Feb 2013 B2
8413238 Sutton Apr 2013 B1
8413241 Weeks et al. Apr 2013 B2
8418250 Morris et al. Apr 2013 B2
8438386 Hegli et al. May 2013 B2
8438626 Anderson et al. May 2013 B2
8443442 Wang et al. May 2013 B2
8474044 Zawadowskiy et al. Jun 2013 B2
8488466 Breslin et al. Jul 2013 B2
8528057 Garrett Sep 2013 B1
8528087 Hsu et al. Sep 2013 B2
8538578 Battles et al. Sep 2013 B2
8539582 Aziz et al. Sep 2013 B1
8549643 Shou Oct 2013 B1
8555385 Bhatkar et al. Oct 2013 B1
8561177 Aziz et al. Oct 2013 B1
8566946 Aziz et al. Oct 2013 B1
8607054 Ramarathinam et al. Dec 2013 B2
8607340 Wright Dec 2013 B2
8627475 Loveland et al. Jan 2014 B2
8677494 Edery et al. Mar 2014 B2
8713306 Bennett Apr 2014 B1
8719937 Sundaram et al. May 2014 B2
8725898 Vincent May 2014 B1
8726389 Morris et al. May 2014 B2
8732296 Thomas et al. May 2014 B1
8752173 Yadav Jun 2014 B2
8789135 Pani Jul 2014 B1
8793151 Delzoppo et al. Jul 2014 B2
8821242 Hinman et al. Sep 2014 B2
8839369 Dai et al. Sep 2014 B1
8849880 Thelen Sep 2014 B2
8850582 Endoh et al. Sep 2014 B2
8880435 Catlett et al. Nov 2014 B1
8881282 Aziz et al. Nov 2014 B1
8893278 Chechik Nov 2014 B1
8898788 Aziz et al. Nov 2014 B1
8904527 Dawson et al. Dec 2014 B2
8943594 Arrowood Jan 2015 B1
8949986 Ben-Shalom Feb 2015 B2
8959338 Snow et al. Feb 2015 B2
8973142 Shulman et al. Mar 2015 B2
8984637 Karecha et al. Mar 2015 B2
9009829 Stolfo et al. Apr 2015 B2
9027135 Aziz May 2015 B1
9043920 Gula et al. May 2015 B2
9117078 Chien et al. Aug 2015 B1
9141792 Baluda et al. Sep 2015 B2
9166993 Liu Oct 2015 B1
9185136 Dulkin et al. Nov 2015 B2
9197601 Pasdar Nov 2015 B2
9213838 Lu Dec 2015 B2
9225734 Hastings Dec 2015 B1
9240976 Murchison Jan 2016 B1
9246774 Mataitis et al. Jan 2016 B2
9270690 Kraitsman et al. Feb 2016 B2
9305165 Snow et al. Apr 2016 B2
9329973 Bhuyan May 2016 B2
9330259 Klein et al. May 2016 B2
9356942 Joffe May 2016 B1
9356950 Vissamsetty et al. May 2016 B2
9369476 Chekina et al. Jun 2016 B2
9386034 Cochenour Jul 2016 B2
9398001 Tidd Jul 2016 B1
9407602 Feghali et al. Jul 2016 B2
9413721 Morris et al. Aug 2016 B2
9430646 Mushtaq et al. Aug 2016 B1
9432360 Triandopoulos et al. Aug 2016 B1
9438614 Herz Sep 2016 B2
9495188 Ettema et al. Nov 2016 B1
9503470 Gertner et al. Nov 2016 B2
9547516 Thakkar et al. Jan 2017 B2
9578045 Jaroch et al. Feb 2017 B2
9591006 Siva et al. Mar 2017 B2
9601000 Gruss et al. Mar 2017 B1
9602531 Wallace et al. Mar 2017 B1
9606893 Gupta et al. Mar 2017 B2
9607146 Sridhara et al. Mar 2017 B2
9609019 Vissamsetty et al. Mar 2017 B2
9628498 Aziz et al. Apr 2017 B1
9641544 Treat et al. May 2017 B1
9641550 Kraitsman et al. May 2017 B2
9710648 Weingarten Jul 2017 B2
9712547 Touboul et al. Jul 2017 B2
9769204 Vissamsetty et al. Aug 2017 B2
9781148 Mahaffey et al. Oct 2017 B2
9807092 Gutzmann Oct 2017 B1
9807115 Kolton et al. Oct 2017 B2
9813451 Honda et al. Nov 2017 B2
9871766 Syed et al. Jan 2018 B2
9877210 Hildner et al. Jan 2018 B1
9888032 Dekel et al. Feb 2018 B2
9898763 Vaynblat et al. Feb 2018 B1
9942270 Vissamsetty et al. Mar 2018 B2
10025928 Jaroch et al. Jul 2018 B2
10044675 Ettema et al. Aug 2018 B1
10102374 Cohen et al. Oct 2018 B1
10169586 Maciejak et al. Jan 2019 B2
10237282 Nelson et al. Mar 2019 B2
10250636 Vissamsetty et al. Apr 2019 B2
10257224 Jaroch et al. Apr 2019 B2
10284591 Giuliani et al. May 2019 B2
10375110 Vissamsetty et al. Jul 2019 B2
10382484 Shayevitz et al. Aug 2019 B2
10476891 Vissamsetty et al. Nov 2019 B2
10509905 Vissamsetty et al. Dec 2019 B2
10542044 Vissamsetty et al. Jan 2020 B2
10567431 Vissamsetty et al. Jan 2020 B2
10574698 Sharifi Feb 2020 B1
10599842 Vissamsetty et al. Mar 2020 B2
10599844 Schmidtler et al. Mar 2020 B2
10609074 Vissamsetty et al. Mar 2020 B2
10757090 Kahol et al. Aug 2020 B2
10826941 Jain et al. Nov 2020 B2
10855671 Kahol et al. Dec 2020 B2
10938854 Strogov et al. Mar 2021 B2
11032301 Mandrychenko et al. Jun 2021 B2
11038658 Vissamsetty et al. Jun 2021 B2
11171974 Gertner et al. Nov 2021 B2
11470115 Vissamsetty et al. Oct 2022 B2
20020010800 Riley et al. Jan 2002 A1
20020016826 Johansson et al. Feb 2002 A1
20020078382 Sheikh et al. Jun 2002 A1
20020093917 Knobbe et al. Jul 2002 A1
20020095607 Lin-Hendel Jul 2002 A1
20020178374 Swimmer et al. Nov 2002 A1
20020194489 Almogy et al. Dec 2002 A1
20030065950 Yarborough Apr 2003 A1
20030145225 Bruton, III et al. Jul 2003 A1
20030145226 Bruton, III et al. Jul 2003 A1
20030152034 Zhang et al. Aug 2003 A1
20030188189 Desai et al. Oct 2003 A1
20030223367 Shay et al. Dec 2003 A1
20040083369 Erlingsson et al. Apr 2004 A1
20040172557 Nakae et al. Sep 2004 A1
20040243699 Koclanes et al. Dec 2004 A1
20040255157 Ghanea-Hercock Dec 2004 A1
20050050353 Thiele et al. Mar 2005 A1
20050076235 Ormazabal et al. Apr 2005 A1
20050076238 Ormazabal et al. Apr 2005 A1
20050108562 Khazan et al. May 2005 A1
20050138402 Yoon et al. Jun 2005 A1
20050204157 Johnson Sep 2005 A1
20050223239 Dotan Oct 2005 A1
20050240989 Kim et al. Oct 2005 A1
20060085543 Hrastar Apr 2006 A1
20060101515 Amoroso et al. May 2006 A1
20060126522 Oh Jun 2006 A1
20060161989 Reshef et al. Jul 2006 A1
20060203774 Carrion-Rodrigo Sep 2006 A1
20060209701 Zhang et al. Sep 2006 A1
20060230129 Swami et al. Oct 2006 A1
20060236401 Fosdick Oct 2006 A1
20070022090 Graham Jan 2007 A1
20070025374 Stefan et al. Feb 2007 A1
20070067623 Ward Mar 2007 A1
20070097976 Wood et al. May 2007 A1
20070100905 Masters et al. May 2007 A1
20070101431 Clift et al. May 2007 A1
20070115993 Cohen May 2007 A1
20070143827 Nicodemus et al. Jun 2007 A1
20070143851 Nicodemus et al. Jun 2007 A1
20070177499 Gavrilescu et al. Aug 2007 A1
20070208822 Wang et al. Sep 2007 A1
20070208936 Ramos Sep 2007 A1
20070209070 Yadav Sep 2007 A1
20070226320 Hager et al. Sep 2007 A1
20070240215 Flores et al. Oct 2007 A1
20070250930 Aziz et al. Oct 2007 A1
20070282782 Carey et al. Dec 2007 A1
20080005782 Aziz Jan 2008 A1
20080018927 Martin et al. Jan 2008 A1
20080022000 Furuya et al. Jan 2008 A1
20080034429 Schneider Feb 2008 A1
20080046989 Wahl Feb 2008 A1
20080060074 Okuyama Mar 2008 A1
20080071728 Lim Mar 2008 A1
20080082722 Savagaonkar et al. Apr 2008 A1
20080083034 Kim et al. Apr 2008 A1
20080098476 Syversen Apr 2008 A1
20080104046 Singla et al. May 2008 A1
20080127346 Oh et al. May 2008 A1
20080162397 Zaltzman Jul 2008 A1
20080168559 Touitou et al. Jul 2008 A1
20080170566 Akimoto Jul 2008 A1
20080229415 Kapoor et al. Sep 2008 A1
20090077664 Hsu et al. Mar 2009 A1
20090089040 Monastyrsky et al. Apr 2009 A1
20090104046 Martin et al. Apr 2009 A1
20090158407 Nicodemus et al. Jun 2009 A1
20090158418 Rao et al. Jun 2009 A1
20090170566 Kwon et al. Jul 2009 A1
20090199296 Xie et al. Aug 2009 A1
20090241173 Troyansky Sep 2009 A1
20090249466 Motil et al. Oct 2009 A1
20090249470 Litvin et al. Oct 2009 A1
20090254973 Kwan Oct 2009 A1
20090288158 Izatt et al. Nov 2009 A1
20090296641 Bienas et al. Dec 2009 A1
20090327688 Li et al. Dec 2009 A1
20090328196 Bovee Dec 2009 A1
20100005339 Hooks Jan 2010 A1
20100077483 Stolfo et al. Mar 2010 A1
20100122317 Yadav May 2010 A1
20100122343 Ghosh et al. May 2010 A1
20100169973 Kim et al. Jul 2010 A1
20100269175 Stolfo et al. Oct 2010 A1
20100293615 Ye Nov 2010 A1
20100299430 Powers et al. Nov 2010 A1
20110023118 Wright et al. Jan 2011 A1
20110067107 Weeks et al. Mar 2011 A1
20110078309 Bloch Mar 2011 A1
20110099633 Aziz Apr 2011 A1
20110113427 Dotan May 2011 A1
20110138456 Ormazabal et al. Jun 2011 A1
20110141937 Breslin et al. Jun 2011 A1
20110145920 Mahaffey et al. Jun 2011 A1
20110167494 Bowen Jul 2011 A1
20110178930 Scheidt et al. Jul 2011 A1
20110185430 Sallam Jul 2011 A1
20110214176 Burch et al. Sep 2011 A1
20110214182 Adams et al. Sep 2011 A1
20110219443 Hampel Sep 2011 A1
20110219449 St. Neitzel Sep 2011 A1
20110247071 Hooks et al. Oct 2011 A1
20110271341 Satish et al. Nov 2011 A1
20110288940 Hordan et al. Nov 2011 A1
20120023572 William, Jr. et al. Jan 2012 A1
20120030745 Bauer Feb 2012 A1
20120030750 Bhargava et al. Feb 2012 A1
20120079596 Thomas et al. Mar 2012 A1
20120084866 Stolfo Apr 2012 A1
20120106377 Sommers et al. May 2012 A1
20120124363 Dietrich et al. May 2012 A1
20120137342 Hartrell et al. May 2012 A1
20120137367 Dupont et al. May 2012 A1
20120144488 Sankruthi Jun 2012 A1
20120151565 Fiterman Jun 2012 A1
20120185563 Sugiyama et al. Jul 2012 A1
20120240182 Marayanaswamy et al. Sep 2012 A1
20120255003 Sallam Oct 2012 A1
20120255004 Sallam Oct 2012 A1
20120291090 Srinivasan et al. Nov 2012 A1
20120297488 Kapoor et al. Nov 2012 A1
20120324094 Wyatt et al. Dec 2012 A1
20120331553 Aziz et al. Dec 2012 A1
20130052992 Lee et al. Feb 2013 A1
20130061097 Mendel et al. Mar 2013 A1
20130080641 Lui et al. Mar 2013 A1
20130086684 Mohler Apr 2013 A1
20130091573 Herz et al. Apr 2013 A1
20130097706 Titonis et al. Apr 2013 A1
20130111547 Kraemer May 2013 A1
20130133072 Kraitsman et al. May 2013 A1
20130152200 Alme et al. Jun 2013 A1
20130167236 Sick Jun 2013 A1
20130191924 Tedesco et al. Jul 2013 A1
20130212658 Amaya et al. Aug 2013 A1
20130219217 Seren et al. Aug 2013 A1
20130231084 Raleigh Sep 2013 A1
20130242743 Thomas et al. Sep 2013 A1
20130247190 Spurlock Sep 2013 A1
20130290662 Teal Oct 2013 A1
20130290729 Pettigrew et al. Oct 2013 A1
20130291111 Zhou et al. Oct 2013 A1
20130298192 Kumar et al. Nov 2013 A1
20130298244 Kumar et al. Nov 2013 A1
20130329732 Vyas et al. Dec 2013 A1
20130333040 Diehl et al. Dec 2013 A1
20130340033 Jones et al. Dec 2013 A1
20130346472 Wheeldon Dec 2013 A1
20130347052 Choudrie Dec 2013 A1
20140046645 White et al. Feb 2014 A1
20140053267 Klein et al. Feb 2014 A1
20140068326 Quinn Mar 2014 A1
20140068779 Tan et al. Mar 2014 A1
20140090061 Avasarala et al. Mar 2014 A1
20140096229 Burns et al. Apr 2014 A1
20140108794 Barton et al. Apr 2014 A1
20140123280 Kedma May 2014 A1
20140137246 Baluda May 2014 A1
20140150094 Rao et al. May 2014 A1
20140157366 Ko et al. Jun 2014 A1
20140165203 Friedrichs et al. Jun 2014 A1
20140215617 Smith et al. Jul 2014 A1
20140215621 Xaypanya et al. Jul 2014 A1
20140215625 Paul et al. Jul 2014 A1
20140237562 Nandakumar Aug 2014 A1
20140237595 Sridhara et al. Aug 2014 A1
20140237599 Gertner et al. Aug 2014 A1
20140245376 Hibbert et al. Aug 2014 A1
20140250524 Meyers et al. Sep 2014 A1
20140259092 Boucher et al. Sep 2014 A1
20140282816 Xie et al. Sep 2014 A1
20140283076 Muttik Sep 2014 A1
20140298419 Boubez et al. Oct 2014 A1
20140349611 Kant et al. Nov 2014 A1
20150006384 Shaikh Jan 2015 A1
20150007312 Pidathala et al. Jan 2015 A1
20150013006 Shulman et al. Jan 2015 A1
20150013008 Lukacs Jan 2015 A1
20150039513 Adjaoute Feb 2015 A1
20150074810 Saher et al. Mar 2015 A1
20150082430 Sridhara et al. Mar 2015 A1
20150089655 Choi et al. Mar 2015 A1
20150096048 Zhang et al. Apr 2015 A1
20150113616 Sampas Apr 2015 A1
20150121524 Fawaz et al. Apr 2015 A1
20150121529 Quinlan et al. Apr 2015 A1
20150128206 Haim et al. May 2015 A1
20150128246 Feghali et al. May 2015 A1
20150143496 Thomas et al. May 2015 A1
20150150125 Dulkin et al. May 2015 A1
20150150130 Fiala May 2015 A1
20150156214 Kaminsky Jun 2015 A1
20150163121 Mahaffey et al. Jun 2015 A1
20150172300 Cochenour Jun 2015 A1
20150195291 Zuk et al. Jul 2015 A1
20150199512 Kim et al. Jul 2015 A1
20150200928 Burch et al. Jul 2015 A1
20150205962 Swidowski et al. Jul 2015 A1
20150220735 Paithane et al. Aug 2015 A1
20150254161 Baril et al. Sep 2015 A1
20150257194 Cho Sep 2015 A1
20150264068 Beauchesne Sep 2015 A1
20150264077 Berger et al. Sep 2015 A1
20150268947 Ionescu Sep 2015 A1
20150271200 Brady et al. Sep 2015 A1
20150281267 Danahy et al. Oct 2015 A1
20150286820 Sridhara et al. Oct 2015 A1
20150288706 Marshall Oct 2015 A1
20150310196 Turgeman et al. Oct 2015 A1
20150326587 Vissamsetty et al. Nov 2015 A1
20150326588 Vissamsetty et al. Nov 2015 A1
20150326592 Vissamsetty et al. Nov 2015 A1
20150326599 Vissamsetty et al. Nov 2015 A1
20150350236 Klinghofer et al. Dec 2015 A1
20150358345 Clark et al. Dec 2015 A1
20150370560 Tan Dec 2015 A1
20150373039 Wang Dec 2015 A1
20150381376 Wardman et al. Dec 2015 A1
20160028750 Di Pietro et al. Jan 2016 A1
20160042179 Weingarten Feb 2016 A1
20160042180 Sayre et al. Feb 2016 A1
20160055334 Herwono et al. Feb 2016 A1
20160055337 El-Moussa Feb 2016 A1
20160072838 Kolton et al. Mar 2016 A1
20160078365 Baumard Mar 2016 A1
20160080414 Kolton et al. Mar 2016 A1
20160127352 Xu et al. May 2016 A1
20160127413 Kraitsman et al. May 2016 A1
20160142399 Pace et al. May 2016 A1
20160191554 Kaminsky Jun 2016 A1
20160212225 Smith et al. Jul 2016 A1
20160261631 Vissamsetty et al. Sep 2016 A1
20160285914 Singh et al. Sep 2016 A1
20160315909 Von Gravrock et al. Oct 2016 A1
20160323300 Boss et al. Nov 2016 A1
20160323316 Kolton et al. Nov 2016 A1
20160381023 Dulce et al. Dec 2016 A1
20170019425 Ettema et al. Jan 2017 A1
20170026387 Vissamsetty et al. Jan 2017 A1
20170032122 Thakar et al. Feb 2017 A1
20170054754 Saher et al. Feb 2017 A1
20170093910 Gukal et al. Mar 2017 A1
20170126718 Baradaran et al. May 2017 A1
20170134405 Ahmadzadeh et al. May 2017 A1
20170141980 Palanciuc et al. May 2017 A1
20170147796 Sardesai et al. May 2017 A1
20170149787 Niemela et al. May 2017 A1
20170149795 Day, II May 2017 A1
20170149832 Touboul et al. May 2017 A1
20170171244 Vissamsetty et al. Jun 2017 A1
20170180421 Shieh et al. Jun 2017 A1
20170206357 Gorelik et al. Jul 2017 A1
20170230384 Touboul et al. Aug 2017 A1
20170230402 Greenspan et al. Aug 2017 A1
20170235967 Ray et al. Aug 2017 A1
20170244729 Fahrny et al. Aug 2017 A1
20170244749 Shulman et al. Aug 2017 A1
20170244755 Tsao Aug 2017 A1
20170264639 Sama et al. Sep 2017 A1
20170279846 Osterweil et al. Sep 2017 A1
20170286676 Weingarten et al. Oct 2017 A1
20170302458 Berger et al. Oct 2017 A1
20170302653 Ortner et al. Oct 2017 A1
20170302665 Zou et al. Oct 2017 A1
20170302696 Schutz et al. Oct 2017 A1
20170318054 Vissamsetty et al. Nov 2017 A1
20170322959 Tidwell et al. Nov 2017 A1
20170324774 Ohayon et al. Nov 2017 A1
20170324777 Ohayon et al. Nov 2017 A1
20170331849 Yu et al. Nov 2017 A1
20170331856 Vissamsetty et al. Nov 2017 A1
20170346802 Gruskin et al. Nov 2017 A1
20170346853 Wyatt et al. Nov 2017 A1
20170359370 Humphries et al. Dec 2017 A1
20180013788 Vissamsetty et al. Jan 2018 A1
20180020005 Beiter et al. Jan 2018 A1
20180027006 Zimmermann et al. Jan 2018 A1
20180027017 Touboul et al. Jan 2018 A1
20180039776 Loman et al. Feb 2018 A1
20180048665 Shulman et al. Feb 2018 A1
20180063187 St Pierre Mar 2018 A1
20180089430 Mayo Mar 2018 A1
20180143915 Gonzalez et al. May 2018 A1
20180146008 Vissamsetty et al. May 2018 A1
20180173876 Vissamsetty et al. Jun 2018 A1
20180183815 Enfinger Jun 2018 A1
20180248896 Challita et al. Aug 2018 A1
20190042745 Chen et al. Feb 2019 A1
20190052659 Weingarten et al. Feb 2019 A1
20190068642 Araujo et al. Feb 2019 A1
20190073475 Vissamsetty et al. Mar 2019 A1
20190114426 Cohen et al. Apr 2019 A1
20190253453 Vissamsetty et al. Aug 2019 A1
20190354355 Jacobson et al. Nov 2019 A1
20190379697 Vissamsetty et al. Dec 2019 A1
20200143054 Cohen et al. May 2020 A1
20200218806 Cho Jul 2020 A1
20200252429 Vissamsetty et al. Aug 2020 A1
20200374087 Vissamsetty et al. Nov 2020 A1
20210073374 Mookken Mar 2021 A1
20210397710 Cohen et al. Dec 2021 A1
Foreign Referenced Citations (18)
Number Date Country
103607399 Feb 2014 CN
109446755 Mar 2019 CN
3 171 568 May 2017 EP
2016-512631 Apr 2016 JP
2017-504102 Feb 2017 JP
10-2015-0101811 Sep 2015 KR
10-1969572 Apr 2019 KR
WO 0227440 Apr 2002 WO
WO 2010030169 Mar 2010 WO
WO 2012027669 Mar 2012 WO
WO 2013014672 Jan 2013 WO
WO 2015171780 Nov 2015 WO
WO 2015171789 Nov 2015 WO
WO 2016024268 Feb 2016 WO
WO 2016081561 May 2016 WO
WO 2017064710 Apr 2017 WO
WO 2019092530 May 2019 WO
WO 2019032728 Mar 2020 WO
Non-Patent Literature Citations (49)
Entry
Wataru Matsuda ⋅ Mariko Fujimoto ⋅ Takuho Mitsunaga; Real-Time Detection System Against Malicious Tools by Monitoring DLL on Client Computersl; 2019 IEEE Conference on Application, Information and Network Security (AINS) (pp. 36-41); (Year: 2019).
Bert Abrath ⋅ Bart Coppens ⋅ Stijn Volckaert ⋅ Bjorn De Sutter; Obfuscating Windows DLLs; 2015 IEEE/ACM 1st International Workshop on Software Protection (pp. 24-30); (Year: 2015).
AbdelHameed, M.U. ⋅ Sobh, M.A. ⋅ Eldin, A.M.B.; Portable executable automatic protection using dynamic infection and code redirection; 2009 International Conference on Computer Engineering & Systems (pp. 501-507); (Year: 2009).
Barbhuiya et al., “Detection of neighbor solicitation and advertisement spoofing in IPv6 neighbor discovery protocol.” Proceedings of the 4th international conference on Security of information and networks. (2011).
Chen et al., “MitM attack by name collision: Cause analysis and vulnerability assessment in the new gTLD era.” Security and Privacy (SP), 2016 IEEE Symposium on. IEEE (2016).
Dini et al., “Probabilistic Contract Compliance for Mobile Applications”, Eighth International Conference on Availability, Reliability and Security (ARES) IEEE, Sep. 2-6, 2013, pp. 599-606.
Gu et al., “Malicious Shellcode Detection with Virtual Memory Snapshots,” 2010 Proceedings IEEE INFOCOM, San Diego, CA, 2010, pp. 1-9, accessed Mar. 6, 2019.
Installing a Tanium Client—distributed also using user/password (not encrypted) from a hosted Module server, downloaded from https://docs.tanium.com/client/client/deployment.html#client_management on Apr. 1, 2021.
IBM Software, “Stepping up the battle against advanced threats”, IBM Trusteer Apex Thought Leadership White Paper, Dec. 2013, WGW03043-USEN-00.
“IBM Security Qradar SIEM Installation Guide” downloaded from http://www.siem.su/docs/ibm/Installation_and_updating/IBM_Security_QRadar_installation_Guide.pdf, printed 2013, vol. 7.2 in 54 pages.
IBM Security Guardium Insights for IBM Cloud Park for Security, printed from https://www.ibm.com/downloads/cas/QY1RYRLP, printed May 26, 2021 in 12 pages.
IBM Security Qradar Solutuion Brief “Visibility, detection, investigation and response” printed from https://www.ibm.com/downloads/cas/OP62GKAR, printed on May 26, 2021 in 11 pgs.
“IBM Security Trusteer Apex Advanced malware Protection (SaaS) delivers an enterprise endpoint security solution to help protect organizations from advanced malware and targeted attacks” downloaded from https://www-01.ibm.com/common/ssi/rep_ca/0/877/ENUSZP14-0390/ENUSZP14-0390.PDF, printed Aug. 5, 2014, in 9 pgs.
IBM Guardium Documentation “Components and Topology”, downloaded from https://www.ibm.com/docs/en/qsip/7.4?topic=deployment-qradar-architecture-overview, printed on Jun. 8, 2021 in 3 pages.
IBM Software “Stepping up the battle against advanced threats”, downloaded from https://citrixready.citrix.com/content/dam/ready/partners/ib/ibm-global-services/ibm-security-trusteer-apex-advanced-malware-protection/wgw03043usen.pdf, Printed Dec. 2013 in 12 pages.
Laureano et al., M., “Intrusion detection in virtual machine environments. In Euromicro Conference, 2004. Proceedings.” 30th (pp. 520-525). IEEE Sep. 30, 2004.
Liu et al., “Detecting Trojan Horses Based on System Behavior Using Machine Learning Method”, International Conference on Machine Learning and Cybernetics (ICMLC), IEEE, Jul. 11-14, 2010, pp. 855-860.
IBM, “Qradar Architecture overview”, downloaded from https://www.ibm.com/docs/en/qsip/7.4?topic=deployment-qradar-architecture-overview printed May 28, 2021 in 6 pgs.
Moussaileb et al., “Ransomware's Early Mitigation Mechanisms,” Proceedings ARES 2018 Proceedings of the 13th International Conference on Availability, Reliability and Security Article No. 2, pp. 1-10 (2018).
Ornaghi et al., “Man in the middle attacks.” Blackhat Conference Europe (2003).
Ramachandran et al., “Detecting ARP spoofing: An active technique.” International Conference on Information Systems Security, Springer, Berlin, Heidelberg (2005).
Rüdiger Schollmeier, A Definition of Peer-to-Peer Networking for the Classification of Peer-to-Peer Architectures and Applications, Proceedings of the First International Conference on Peer-to-Peer Computing, IEEE (2002).
Shosha et al., A.F., “Evasion-resistant malware signature based on profiling kernel data structure objects.” In 2012 7th International Conference on Risks and Security of Internet and Systems (CRISIS) (pp. 1-8). IEEE., Oct. 31, 2012.
Tanium™ Client Management 1.6 User Guide, downloaded from https://docs.tanium.com/client_management/client_management/index.html on Apr. 1, 2021.
Ullrich et al., “IPv6 Security: Attacks and Countermeasures in a Nutshell.” 8th USENIX Workshop on Offensive Technologies (2015).
Xu, J-Y; Sung, A.H .; Chavez, P.; Mukkamala, S.; “Polymorphic Malicious Executable Scanner by API Sequence Analysis”, Fourth International Conference on Hybrid Intelligent Systems, IEEE Dec. 5-8, 2004, pp. 378-383.
Communication Pursuant to Article 94(3) EPC dated Dec. 11, 2018 for European Application 15 760 520.5, in 7 pages.
Extended European Search Report dated May 9, 2019 for Application No. 16855062.2, in 7 pages.
European Search Report dated Apr. 29, 2021 in European Patent Application No. 18844671 in 38 pages.
Extended European Search Report dated Jan. 25, 2021 for European Patent Application No. 20181537.0, in 10 pages.
Reaqta Hive, A.I. Based Endpoint Threat Response, Whitepaper, 27 pages (Apr. 6, 2017).
International Search Report and Written Opinion dated Feb. 18, 2016 for International Application No. PCT/IL2015/050802, in 10 pages.
International Preliminary Report on Patentability dated Feb. 14, 2017 for International Application No. PCT/IL2015/050802, in 7 pages.
International Search Report and Written Opinion dated Apr. 20, 2017 for International Application No. PCT/IL2016/051110, in 10 pages.
International Search Report and Written Opinion dated Dec. 11, 2018 for International Application No. PCT/US2018/045850, in 12 pages.
International Search Report and Written Opinion dated Aug. 24, 2020 for International Application No. PCT/US2020/033872, in 8 pages.
International Search Report issued in application No. PCT/US2021/050129 dated Dec. 21, 2021.
International Search Report in corresponding International Patent Application No. PCT/US2015/29490, dated Aug. 7, 2015, in 2 pages.
Written Opinion in corresponding International Patent Application No. PCT/US2015/29490, dated Aug. 7, 2015, in 6 pages.
International Preliminary Report on Patentability in corresponding International Patent Application No. PCT/US2015/29490, dated Nov. 8, 2016, in 7 pages.
International Search Report in corresponding International Patent Application No. PCT/US2015/29501, dated Aug. 7, 2015, in 2 pages.
Written Opinion in corresponding International Patent Application No. PCT/US2015/29501, dated Aug. 7, 2015, in 6 pages.
International Preliminary Report on Patentability in corresponding International Patent Application No. PCT/US2015/29501, dated Nov. 8, 2016, in 7 pages.
International Search Report in corresponding International Patent Application No. PCT/US2015/61271, dated Feb. 2, 2016, in 2 pages.
Written Opinion in corresponding International Patent Application No. PCT/US2015/61271, dated Feb. 2, 2016, in 6 pages.
International Preliminary Report on Patentability in corresponding International Patent Application No. PCT/US2015/61271, dated May 23, 2017, in 7 pages.
Office Action dated Jul. 24, 2019 in European Patent Application No. 15760520.5, in 8 pages.
Office Action dated May 31, 2022 in Japanese Patent Application No. 2020-503272, in 7 pages.
Extended European Search Report dated Aug. 25, 2021 for European Patent Application No. 21162973.8, in 5 pages.