US20150310091A1 - System and method for selectively grouping and managing program files - Google Patents
System and method for selectively grouping and managing program files Download PDFInfo
- Publication number
- US20150310091A1 US20150310091A1 US14/792,015 US201514792015A US2015310091A1 US 20150310091 A1 US20150310091 A1 US 20150310091A1 US 201514792015 A US201514792015 A US 201514792015A US 2015310091 A1 US2015310091 A1 US 2015310091A1
- Authority
- US
- United States
- Prior art keywords
- program
- file
- hosts
- program files
- files
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- G06F17/30598—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- G06F17/30091—
-
- G06F17/30144—
-
- G06F17/30876—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/145—Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
Definitions
- This invention relates in general to the field of data management and, more particularly, to a system and a method for selectively grouping and managing program files.
- FIG. 1 is a simplified block diagram of an exemplary implementation in a network environment of a system for selectively grouping and managing program files;
- FIGS. 2A and 2B are simplified flowcharts illustrating a series of example steps associated with an embodiment of the system of the present disclosure.
- FIGS. 3-9 are exemplary screenshots associated with an example scenario in one example implementation of the system in accordance with the present disclosure.
- a method in one example embodiment includes determining a frequency range corresponding to a subset of a plurality of program files on a plurality of hosts in a network environment. The method also includes generating a first set of counts including a first count that represents an aggregate amount of program files in a first grouping of one or more program files of the subset. In this method each of the one or more program files of the first grouping includes a first value of a primary attribute.
- each of the plurality of program files is an unknown program file.
- the primary attribute is one of a plurality of file attributes provided in file metadata. Other specific embodiments include either blocking or allowing execution of each of the program files of the first grouping.
- More specific embodiments include determining a unique identifier corresponding to at least one program file of the first grouping and determining a file path count representing an aggregate amount of one or more unique file paths associated with the unique identifier.
- Other specific embodiments include determining a plurality of frequencies corresponding respectively to the plurality of program files, where each of the plurality of frequencies is determined by calculating all occurrences of a respective one of the plurality of program files in the plurality of hosts.
- FIG. 1 is a simplified block diagram illustrating an example implementation of a software management system 100 for selectively grouping and managing program files in a network environment.
- the exemplary network environment illustrates a server 130 suitably connected to hosts 110 a, 110 b, and 110 c (referred to collectively herein as hosts 110 ) with respective program files 112 a, 112 b, and 112 c (referred to collectively herein as program files 120 ).
- Software elements of software management system 100 may be implemented in a computer, such as server 130 .
- server 130 may include software elements such as a security administration module 140 , a program file grouping module 150 , and remediation modules 160 .
- Hardware elements such as a processor 132 and a memory element 134 may also be provided in server 130 .
- Additional memory in the form of a program file inventory 180 may be suitably connected to server 130 .
- a console 170 with a user interface 172 and an input mechanism 174 , for interacting with software elements of software management system 100 may also be suitably connected to server 130 .
- the network environment illustrated in FIG. 1 may be generally configured or arranged to represent any communication architecture capable of electronically exchanging packets.
- the network may also be configured to exchange packets with other networks such as, for example, the Internet, or other LANs.
- Other common network elements e.g., email gateways, web gateways, routers, switches, loadbalancers, firewalls, etc., may also be provisioned in the network.
- Software management system 100 may be utilized to maximize the effectiveness of actions taken by a user (e.g., IT administrators, network operators, etc.) against selected program files in a network environment.
- Embodiments of system 100 can provide valuable information about unknown software files and can provide remediation options that can be selectively applied to individual unknown software files or to selected groupings of unknown software files.
- a grouping process may be applied to an unknown software inventory of a selected set of computers (e.g., hosts 110 ) in the network.
- the program files identified in the unknown software inventory may be evaluated and grouped according to a predefined frequency measure and various file attributes, in succession.
- a user may select an action to be performed on all program files in a grouping, where each of the program files in the grouping has the same distinct value for a particular file attribute (e.g., vendor, product, product version, etc.).
- the program files of the grouping may also be associated with the same distinct values of one or more other file attributes previously selected by the user.
- the user may also successively select file attribute groupings until each unknown program file, having the same distinct values of the file attributes selected by the user, is identified by a unique identifier, by a program file path, and/or by a particular host.
- the user may select one or more of the unique identifiers, program file paths, or hosts to perform a desired action to remediate the corresponding unknown program files.
- system 100 enables the user to more effectively and efficiently manage unknown program files on a set of computers in a particular network environment.
- Typical network environments both in organizations (e.g., businesses, schools, government organizations, etc.) and in homes, include a plurality of computers such as end user desktops, laptops, servers, network appliances, and the like, with each computer having an installed set of executable software.
- network environments may include hundreds or thousands of computers, which can span different buildings, cities, and/or geographical areas around the world. IT administrators are often tasked with the extraordinary responsibility of maintaining these computers and their software in a way that minimizes or eliminates disruption to the organization's activities.
- whitelisting solutions which search databases of known trusted software (i.e., whitelists) and only allow software to execute if the software is identified on the whitelist.
- whitelists search databases of known trusted software
- whitelists provide complete protection in preventing unknown and/or malicious software from being executed, such solutions still suffer from several drawbacks.
- whitelisting solutions can be inflexible, potentially creating delays and disruptions when new software is needed and adding additional steps to administrative workflows.
- unknown and/or malicious software may nevertheless be present in the memory or disks of various computer networks, consuming valuable resources and risking inadvertent execution or propagation (e.g., if the whitelisting solution is temporarily or permanently disabled, if the software is copied to portable memory and introduced into a less protected network environment, etc.).
- Unknown or greylist software is software not explicitly known to be malicious or trusted.
- Anti-virus solutions may allow all unknown software to be executed, while whitelisting solutions may prevent all unknown software from being executed.
- Each solution suffers from the lack of an efficient method of distinguishing between and appropriately remediating unknown safe software that has been introduced into a network for legitimate purposes and unknown malicious software that has infiltrated a network.
- Unknown software can be identified using, for example, existing solutions such as malicious software protection systems of co-pending U.S. patent application Ser. No.
- unknown software files could be identified by obtaining an inventory of every program file existing in every computer of a network (or in a selected set of computers of a network) and comparing the inventory to one or more third-party global and/or local whitelists and blacklists. Effectively remediating the identified unknown software, however, presents more difficulty.
- a greylist may contain both malicious and non-malicious software files, ideally, such files need to be evaluated individually. For example, any non-malicious file having a legitimate purpose could be approved and added to a whitelist or otherwise enabled for execution within the network. Files determined to be malicious could be blacklisted, removed from the network, and/or otherwise disabled from execution. Suspect files without a known legitimate purpose, which may or may not be malicious, could be quarantined pending further evaluation. Managing such files individually, however, can be both labor-intensive and time-consuming, at least in part because the computers within the particular network may lack congruency of the unknown software. For example, unknown software files may be stored in different memory or disk locations on different computers, different versions of the unknown software files may be installed in different computers, unknown software files may be stored on some computers but not on others, and the like.
- Another problematic issue in managing such files can arise because different IT administrators may prefer to remediate unknown software using different techniques and criteria. For example, one organization may have a relaxed policy allowing any software to be implemented in any computer of their network if the software is from a particular vendor. Other organizations may have a more stringent policy such as requiring the same product version of a particular software product to be stored in the same file path location of each computer. Thus, flexible identification and remediation techniques are needed to adequately address the needs of IT administrators in managing unknown software for different organizations.
- a system for selectively grouping and managing program files outlined by FIG. 1 can resolve many of these issues.
- a method is provided of sifting through a set of unknown program files and selecting one or more desired groupings of the unknown program files (e.g., a grouping associated with a particular value of a single file attribute, a grouping associated with a plurality of values of a respective plurality of file attributes, a grouping associated with a single program file on a single host, etc.).
- the user may then remediate the one or more program files of the selected grouping in any number of ways, including performing various actions to effectively block or allow execution (e.g., adding program files to a whitelist, adding program files to a blacklist, removing, renaming, or quarantining program files, etc.).
- the user is provided an opportunity to maximize efforts of managing unknown program files within the network by, for example, taking action on the largest groupings of similar unknown program files and by selecting groupings identified from the highest frequency ranges across the network.
- references to various features e.g., elements, structures, modules, components, steps, operations, characteristics, etc.
- references to various features e.g., elements, structures, modules, components, steps, operations, characteristics, etc.
- references to various features are intended to mean that any such features are included in one or more embodiments of the present disclosure, but may or may not necessarily be combined in the same embodiments.
- the example network environment may be configured as one or more networks and may be configured in any form including, but not limited to, local area networks (LANs), wireless local area networks (WLANs), metropolitan area networks (MANs), wide area networks (WANs), virtual private networks (VPNs), Intranet, Extranet, any other appropriate architecture or system, or any combination thereof that facilitates communications in a network.
- a communication link 120 may represent any electronic link supporting a LAN environment such as, for example, cable, Ethernet, wireless technologies (e.g., IEEE 802.11x), ATM, fiber optics, etc. or any suitable combination thereof.
- communication link 120 may represent a remote connection to central server 130 through any appropriate medium (e.g., digital subscriber lines (DSL), telephone lines, T1 lines, T3 lines, wireless, satellite, fiber optics, cable, Ethernet, etc. or any combination thereof) and/or through any additional networks such as a wide area networks (e.g., the Internet).
- DSL digital subscriber lines
- gateways, routers, switches, and any other suitable network elements may be used to facilitate electronic communication between hosts 110 and central server 130 .
- the network illustrated in FIG. 1 may include a configuration capable of transmission control protocol/internet protocol (TCP/IP) communications for the transmission and/or reception of packets in the network.
- TCP/IP transmission control protocol/internet protocol
- the network could also operate in conjunction with a user datagram protocol/IP (UDP/IP) or any other suitable protocol, where appropriate and based on particular needs.
- UDP/IP user datagram protocol/IP
- hosts 110 may represent end user computers that could be operated by end users.
- the end user computers may include desktops, laptops, and mobile or handheld computers (e.g., personal digital assistants (PDAs) or mobile phones), or any other type of computing device operable by an end user.
- Hosts 110 can also represent other computers (e.g., servers, appliances, etc.) having program files, which could be similarly grouped and managed by system 100 , using executable file inventories derived from sets of program files 112 on such hosts 110 .
- FIG. 1 is intended as an example and should not be construed to imply architectural limitations in the present disclosure.
- Sets of program files 112 on hosts 110 can include all executable files on respective hosts 110 .
- references to “executable program file”, “executable file”, “program file”, “executable software file”, “executable software”, “software program”, and “software program file” are meant to encompass any software file comprising instructions that can be understood and processed by a computer such as executable files, library modules, object files, other executable modules, script files, interpreter files, and the like.
- executable files comprising instructions that can be understood and processed by a computer
- libraries modules such as executable files, library modules, object files, other executable modules, script files, interpreter files, and the like.
- any other inventory of program files could be processed by system 100 and successively grouped according to frequency, file attributes, file identifiers, file paths and/or hosts.
- the system could be configured to allow the IT administrator to select a particular set of program files to be evaluated.
- an IT Administrator may select a program file inventory derived from the results of clustering as described in co-pending U.S. patent application Ser. No. 12/880,125, entitled “SYSTEM AND METHOD FOR CLUSTERING HOST INVENTORIES,” filed Sep. 12, 2010, by Rishi Bhargava et al., which has been previously fully incorporated by reference herein (referred to hereinafter as “co-pending U.S. patent application Ser. No. '125”).
- the IT administrator may also be permitted to select particular hosts from which the executable file inventory is derived.
- all end user computers in a network or within a particular part of the network may be selected.
- a particular type of host such as, for example, all servers within a network or within a particular part of the network may be selected.
- Central server 130 as illustrated in FIG. 1 represents an exemplary server linked to hosts 110 , which may provide services to hosts 110 .
- Software management system 100 may be implemented in central server 130 with program file grouping module 150 , remediation modules 160 , and access to program file inventory 180 .
- Program file inventory 180 may be a selected set of executable files (e.g., a greylist or unknown executable files) of all hosts 110 or a selected set of hosts 110 .
- program file inventory 180 could be an inventory of all executable files in hosts 110 or a selected set of hosts 110 .
- central server 130 of FIG. 1 is additional hardware that may be suitably coupled to processor 132 in the form of memory management units (MMU), additional symmetric multiprocessing (SMP) elements, peripheral component interconnect (PCI) bus and corresponding bridges, small computer system interface (SCSI)/integrated drive electronics (IDE) elements, etc.
- MMU memory management units
- SMP symmetric multiprocessing
- PCI peripheral component interconnect
- IDE integrated drive electronics
- suitable modems and/or network adapters may also be included for allowing network access.
- Any suitable operating systems may also be configured in server 130 to appropriately manage the operation of hardware components therein.
- Server 130 may include any other suitable hardware, software, components, modules, interfaces, or objects that facilitate the operations thereof. This may be inclusive of appropriate algorithms and communication protocols that facilitate the selective grouping and managing operations detailed herein.
- hosts 110 may also be configured with any appropriate processors, memory, and other hardware, software, components, modules, interfaces or objects that facilitate the operations thereof, and that store program files 112 .
- server 130 and hosts 110 are intended for illustrative purposes and are not meant to imply architectural limitations.
- each computer including server 130 and hosts 110 , may include more or less components where appropriate and based on particular requirements.
- the term ‘computer’ is meant to encompass any personal computers, laptops, network appliances, routers, switches, gateways, processors, servers, load balancers, firewalls, or any other suitable device, component, element, or object operable to affect or process electronic information in a network environment.
- Management console 170 may include user interface 172 and input mechanism 174 to allow a user to interact with central server 130 .
- user interface 172 may be a graphical user interface (GUI).
- GUI graphical user interface
- appropriate input mechanisms could include a keyboard, mouse, voice recognition, touch pad, input screen, etc.
- Program file grouping module 150 may provide viewable data related to program file groupings on the graphical user interface for the IT administrator or other authorized user to view, to select for remediation, or to select for further analysis.
- Management console 170 may also be used to select particular hosts and/or particular types of executable files to be included in the program file inventory for selectively grouping and managing the program files identified therein.
- Software management system 100 may be adapted to provide grouping and managing activities for electronic data (e.g., program files), which could be resident in memory of a computer or other electronic storage device. Information related to the grouping and managing activities can be suitably rendered, or sent to a specific location (e.g., management console 170 , etc.), or simply stored or archived, and/or properly displayed in any appropriate format.
- electronic data e.g., program files
- Information related to the grouping and managing activities can be suitably rendered, or sent to a specific location (e.g., management console 170 , etc.), or simply stored or archived, and/or properly displayed in any appropriate format.
- Security administration module 140 may provide an existing infrastructure of network security and management and may be suitably integrated with software management system 100 .
- One exemplary enterprise management system that could be used includes McAfee® electronic Policy Orchestrator (ePO) software manufactured by McAfee, Inc. of Santa Clara, California.
- ePO electronic Policy Orchestrator
- Other security software that may be integrated with or otherwise cooperatively provisioned in a network with software management system 100 includes full or selected portions of co-pending U.S. patent application Ser. No. '892 and co-pending U.S. patent application Ser. No. '964, previously referenced herein, and co-pending U.S. patent application Ser. No. '125, previously incorporated herein by reference.
- security technology that performs one or more remediation activities, as represented by remediation modules 160 in FIG. 1 , can include elements such as McAfee® Anti-Virus software, McAfee® Host Intrusion Prevention System (HIPS) software, McAfee® Application Control software, or any third party software provisioning system configured to perform these remediation activities.
- HIPS Host Intrusion Prevention System
- McAfee® Application Control software or any third party software provisioning system configured to perform these remediation activities.
- any such components may be included within the broad scope of the term ‘software management system’ as used herein in this Specification.
- the program file inventory 180 may include information related to the evaluation of electronic data, such as file identifiers and file attributes of a selected inventory of program files (e.g., unknown program files, program files from clustering activities, etc.) on hosts 110 and these elements can readily cooperate, coordinate, or otherwise interact with software management system 100 .
- program files e.g., unknown program files, program files from clustering activities, etc.
- FIGS. 2A and 2B simplified flowcharts illustrate operational processing of one embodiment of software management system 100 .
- Flow begins at step 202 where a frequency analysis is performed on a program file inventory.
- the program file inventory includes all unknown program files on hosts 110 within the network. These unknown executable files can be detected using any suitable technique such as, for example, the malicious software protection systems of co-pending U.S. patent application Ser. No. '892 and co-pending U.S. patent application Ser. No. '964, both of which have been previously referenced herein.
- the program file inventory could be limited to program files on specified hosts (e.g., hosts within a particular business segment of the organization, etc.).
- the frequency measure of a particular program file is a total count of occurrences of the particular program file in hosts across a network of an organization. Another frequency measure could be a total number of hosts on which a particular program file occurs. Other frequency measures include counting the occurrences of a particular program file in a total number of business units of the organization, in a total number of geographical locations of the organization, or in a total number of machine roles.
- host details may be included when creating frequency measures. For example, a total number of operating system patch levels or different operating systems on which a program file is found may be included in the frequency measure. Generally, any grouping of hosts may be used to define the frequency measure.
- some embodiments of system 100 can be implemented to allow a user to select the frequency measure to be used or to allow the user to provide frequency measure configuration data. In other embodiments, the frequency measure can be preconfigured in system 100 .
- a screen display may be provided on, for example, user interface 172 of console 170 , for a user to view the frequency ranges of the program files and to select a particular frequency range for further analysis.
- the frequency ranges may be displayed in the form of a bar graph, showing the program file counts bucketed by frequency ranges (e.g., fifths (0-20%, 20-40%, 40-60%, 60-80%, 80-100%), quarters (0-25%, 25-50%, 50-75%, 75-100%), thirds (0-33%, 33-66%, 66-100%), etc.) and showing the corresponding program file count for each frequency range of the particular frequency measure.
- each frequency range that indicates a count of at least one program file corresponds to a subset of the program files identified in the inventory.
- the user may select any of the frequency ranges (or buckets) to further analyze the program files within the selected frequency range.
- system 100 is configured such that input mechanism 174 (e.g., mouse, touchpad, voice, etc.) can be used to select the desired frequency bar displayed on user interface 172 of console 170 .
- a sequence of one or more file attributes may be used successively and cumulatively to bucket selected groupings of program files.
- Example file attributes may include one or more intrinsic file attributes such as vendor, product, product version, file version, file description, and/or any other suitable attribute available in the file metadata.
- Extrinsic file attributes may also be used, including, for example, attributes stored in a database indicating the type of software of a particular program file (e.g., System Utility, Programmer Tool, Productivity Tool, etc.), and/or any other suitable extrinsic file attribute.
- a variable ‘i’ is initialized to 1, and a subset of program files corresponding to the selected frequency range, may be bucketed by one or more distinct values of the first or primary file attribute A 1 .
- the bucketing by file attribute values can be displayed to the user on the user interface 172 of console 170 in the form of a pie chart.
- Each pie slice (or bucket) can represent a respective A 1 grouping of one or more program files of the subset, where the one or more program files of a particular A 1 grouping are each associated with the same distinct value of file attribute A 1 .
- each pie slice (or bucket) can indicate a count (or proportion) of the one or more program files of the respective A 1 grouping.
- the pie chart could include eight pie slices, with each pie slice indicating a count of program files associated with one of the eight vendors.
- a set of eight counts could correspond to file attribute A 1 and each count within the set of eight counts could represent an aggregate amount of the one or more program files in a respective A 1 grouping.
- flow may pass to decision box 210 to determine whether the user has selected a particular A 1 bucket, or whether the user has selected an action to be performed on the program files associated with the previously selected frequency range. If the user has selected an action to be performed, then flow passes to step 212 , such that a chosen action is performed on each program file represented by the previously selected frequency range.
- System 100 may be implemented to provide various options for performing an action to manage or remediate groupings of program files.
- Such options may include, generally, blocking or allowing execution of program files.
- blocking or allowing may be accomplished by, for example, blocking execution of a program file, adding a program file to a whitelist, adding a program file to a blacklist, moving, replacing, renaming, or quarantining a program file, changing a network configuration of hosts containing program files to block certain network traffic, starting or stopping processes of hosts containing program files, modifying the software configuration of hosts containing program files, and opening a change request using a change ticketing system.
- further options may be suitably integrated to assist a user in evaluating whether particular program files in a grouping should be trusted.
- system 100 could allow actions to be performed on particular program files, such as running a virus scan, performing heuristic analysis, and the like. Other actions could be facilitated by system 100 to detect potential unlicensed software. These other actions could include comparing a selected program file to a packet manager to determine whether the program file corresponds to an installed software package. To achieve these management and remediation actions, system 100 may be suitably integrated with various existing security technologies such as, for example, McAfee® Anti-Virus software, McAfee® HIPS software, McAfee® Application Control whitelisting software, or any other appropriate security software.
- McAfee® Anti-Virus software McAfee® HIPS software
- McAfee® Application Control whitelisting software or any other appropriate security software.
- the option to perform an action on an entire frequency range may be omitted, and such options may just be provided in more defined groupings of program files, such as groupings by file attributes and/or identifications of file identifiers, file path names, and/or hosts.
- the user may begin the analysis again with an updated or new program file inventory, or may continue to select other buckets to further analyze and possibly remediate selected groupings of program files. For example, a user may decide to quarantine all unknown executable files associated with a first selected frequency range. Once the quarantine action has been performed, the user may continue to analyze the now quarantined program files of the selected first frequency range until additional information about the quarantined program files is determined.
- the user may select another frequency range to evaluate and may possibly remediate program files associated with the other selected frequency range after further grouping of such program files by file attributes and/or by identifying the particular file identifiers, program file paths, and/or particular hosts associated with the program files.
- Step 210 if the user selects one of the file attribute A i buckets by, for example, using user interface 172 of console 170 to click on one of the pie slices in the pie chart, then flow passes to steps 214 through 222 .
- Steps 214 through 222 may be configured to recur such that a different file attribute in the sequence of file attributes A n is used to bucket each successive grouping of program files represented by the previous bucket selected by the user.
- a different file attribute may be used during each recurrence of steps 214 through 222 until the file attribute sequence A n is exhausted or until no further bucket selection input is received from the user (e.g., the user does not select a bucket, the user selects an action to be performed on a bucket).
- step 210 If the user selects one of the file attribute A 1 buckets in step 210 , then flow passes to decision box 214 where a determination is made as to whether A 1 is the last file attribute in the sequence A n . If A i is not the last file attribute in the sequence A n then flow passes to step 216 where distinct values of the next file attribute A (i+1) in the sequence A n are used to bucket the selected A i grouping of program files represented by the selected A i bucket.
- Each A (i+1) bucket can represent a respective A (i+1) grouping of one or more program files of the selected A i grouping, where each of the one or more program files of a particular A (i+1) grouping are associated with the same distinct value of file attribute A (i+1) . Additionally, all of the program files in all of the A (i+1) groupings are associated with the previously selected frequency range and the previously selected values of file attributes A 1 through A i .
- a set of counts may be determined such that each bucket (or pie slice), corresponding to a distinct value of the file attribute A (i+1) and representing a respective A (i+1) grouping, indicates a count (or proportion) of the one or more program files of the respective A (i+1) grouping.
- each count in the set of counts can indicate an aggregate amount of the one or more program files in its respective A (i+1) grouping.
- system 100 may be implemented to provide various options for performing an action to manage or remediate program files (e.g., whitelisting, blacklisting, moving, replacing, renaming, blocking, quarantining, etc.) and may be suitably integrated with various existing security technologies to achieve these managing and remediating activities.
- the user may begin the analysis again with an updated or new program file inventory, or may continue to select A (i+1) buckets or buckets from any of the previously displayed bucketing screens to further analyze and possibly remediate other selected groupings of executable program files.
- a user may decide to quarantine all unknown program files associated with a particular product of a particular vendor. Once the quarantine action has been performed in step 220 , the user may continue to select displayed buckets until additional information about the now quarantined program files is determined.
- any of the quarantined files are determined to be stored on a rogue host (e.g., associated with a terminated employee) then the user may decide to go ahead and remove such program files from the host.
- a user may decide to remove all program files associated with a particular vendor (e.g., a first distinct value of A 1 ).
- the previous file attribute A i bucketing may be displayed so that the user may continue to analyze and possibly remediate the program files associated with the other vendors (i.e., other distinct values of A 1 ) by further grouping such program files using additional file attributes and/or by identifying the particular file identifiers, program file paths, and/or particular hosts associated with the program files.
- step 222 if the user selects a particular A (i+1) bucket, then flow passes to step 222 where the value of the variable ‘i’ is changed to i+1. Flow then loops back to step 214 to determine whether the file attribute A i is the last attribute in the sequence A n . As long as the user continues to select a particular A (i+1) bucket, steps 214 - 222 may continue to recur until the sequence A n is exhausted. Once the sequence A n is exhausted (i.e., A i is the last attribute in the sequence), as determined in step 214 , flow passes to step 224 of FIG. 2B .
- a set of unique file identifiers is determined and displayed for the corresponding one or more program files represented by the last A i bucket selected by the user.
- the file identifiers can be a cryptographic hash function such as, for example, Secure Hash Algorithm 1 (SHA-1), which is a well-known algorithm, widely used in security applications.
- the unique file identifiers may be displayed on user interface 172 of console 170 along with, optionally, additional information related to each unique file identifier. Such additional information may include a unique file path count for each file identifier, where each unique file path count indicates an aggregate number of unique file paths associated with the corresponding unique file identifier.
- the ability to select one or more unique file identifiers for further analysis and the ability to perform an action on all of the program files in the grouping represented by the previously selected A i bucket (and corresponding to the displayed unique file identifiers) may also be provided.
- step 226 After displaying the unique file identifiers, flow then passes to step 226 to determine whether the user has selected a particular unique file identifier for further analysis, or whether the user has selected an action to be performed on the previously selected A i bucket. If the user has selected an action to be performed, then flow passes to step 228 , where the chosen action (e.g., removing, renaming, replacing, quarantining, blocking, whitelisting, blacklisting, etc.), as previously described herein, is performed on each program file that is associated with the previously selected A i bucket.
- the chosen action e.g., removing, renaming, replacing, quarantining, blocking, whitelisting, blacklisting, etc.
- step 230 additional information related to the selected unique file identifier may be displayed for the user on user interface 172 of console 170 .
- additional information may include a frequency count for each unique file path, where each frequency count indicates an aggregate number of hosts associated with the corresponding unique file path.
- the ability to select one or more unique file paths for further analysis and the ability to perform an action on all of the program files represented by the previously selected unique file identifier (and corresponding to the displayed unique file paths) may also be provided.
- step 232 After displaying file path details for the selected unique file identifier in step 230 , flow then passes to step 232 to determine whether the user has selected a particular unique program file path for further analysis, or whether the user has selected an action to be performed on all of the program files associated with the selected unique program file identifier. If the user has selected an action to be performed, then flow passes to step 234 , such that the chosen action (e.g., removing, renaming, replacing, quarantining, blocking, whitelisting, blacklisting, etc.), as previously described herein, is performed on each program file that is associated with the selected file identifier and that is represented by the last A i bucket selected by the user.
- the chosen action e.g., removing, renaming, replacing, quarantining, blocking, whitelisting, blacklisting, etc.
- step 236 additional information related to the selected unique program file path may be displayed for the user on user interface 172 of console 170 .
- additional information related to the selected unique program file path may be displayed for the user on user interface 172 of console 170 .
- a set of one or more unique hosts associated with the selected unique file path can be displayed.
- the ability to select one or more of the identified hosts and to select a desired action to be performed on the program files associated with the selected hosts may also be provided.
- step 238 it is determined whether the user has selected one or more hosts and a desired action.
- step 240 the selected action is performed on each of the program files associated with the selected file identifier, the selected unique program file path, and the selected one or more hosts.
- a desired action e.g., removing, renaming, replacing, quarantining, blocking, whitelisting, blacklisting, etc.
- the plurality of program files of the program file inventory, or any subsequent grouping of the plurality of program files may be manipulated using filters to achieve different results.
- filters to remove certain frequency ranges, counts, file identifiers, file paths, and/or hosts may be utilized where appropriate and based on particular needs.
- Filters may also be used on arbitrary program file attributes to provide a new view of the results from a previous selection. Such filters may be selectable by the user or preconfigured in the system.
- FIGS. 3 through 9 example screen displays of one embodiment of system 100 are shown.
- FIGS. 3 through 9 illustrate the processing of an example unknown program file inventory by the successive selection of a frequency range ( FIG. 3 ), a vendor ( FIG. 4 ), a product ( FIG. 5 ), a product version ( FIG. 6 ), a unique file identifier ( FIG. 7 ), a unique program file path ( FIG. 8 ), and unique hosts ( FIG. 9 ).
- the attribute values for vendor, product, and product version in this example scenario are generically indicated as Vendor A, B, and C, Products A, B, and C, and Product Versions 8.0, 9.0, and 10.0 in FIGS. 3-9 . Note that the following description with reference to FIGS. 3-9 will reference FIG. 1 and FIGS. 2A and 2B to describe various processing flows and example network elements that may be used in this example scenario.
- screen displays shown in FIGS. 3-9 may be provided on user interface 172 of console 170 , for an authorized user to evaluate a program file inventory and make appropriate selections based on particular needs.
- a frequency analysis may be performed on program file inventory 180 , which may identify a desired set of program files, such as unknown program files in hosts 110 of the network.
- FIG. 3 illustrates an example screen display 300 of frequency ranges of the unknown program files.
- a bar graph illustrates program file counts 304 bucketed by a plurality of frequency ranges 302 .
- frequency ranges i.e., 0-20%, 20-40%, 40-60%, 60-80%, and 80-100%) are shown, which indicate the prevalence of the unknown program files on hosts 110 within the network of FIG. 1 .
- a subset i.e., 152 program files
- other frequency measures may be used in the frequency analysis (e.g., prevalence in business units, geographical locations, etc.).
- a user may use input mechanism 174 to select a particular frequency range (e.g., using a mouse to click on a bar associated with a particular frequency range).
- the 60-80% frequency range is selected, having a program file count of 152 .
- screen display 400 of FIG. 4 may be displayed on user interface 172 providing information on the subset of all unknown program files on 60-80% of hosts, bucketed by a first (primary) file attribute A 1 : vendor. The subset is bucketed by specific vendors associated with the program files.
- a vendor pie chart 402 displays the bucketing results with three vendor buckets: Vendor A bucket 404 having a count of 18, Vendor B bucket 406 having a count of 50, and Vendor C bucket 408 having a count of 84.
- Each of the three vendor buckets represents a respective vendor grouping of program files.
- Options box 409 provides two options to the user: Option 1 allows the user to select a particular vendor bucket to further analyze the respective vendor grouping of program files, or Option 2 allows the user to select an action to be performed on all of the program files in the selected subset of program files (e.g., the program files in the selected 60-80% frequency range).
- a product pie chart 502 displays the bucketing results with three product buckets: Product A bucket 504 having a count of 43, Product B bucket 506 having a count of 18, and Product C bucket 508 having a count of 23.
- Each of the three product buckets represents a respective product grouping of program files.
- Options box 509 provides two options to the user: Option 1 allows the user to select a particular product bucket to further analyze the respective product grouping of program files, or Option 2 allows the user to select an action to be performed on all of the program files in the selected Vendor C grouping of program files.
- a user may use input mechanism 174 to select a particular product bucket (e.g., using a mouse to click on a bucket or pie slice corresponding to a particular product).
- Product A bucket 504 is selected, having a program file count of 43 .
- screen display 600 of FIG. 6 may be displayed on user interface 172 providing information for all unknown program files on 60-80% of hosts, that are associated with Vendor C and Product A, and bucketed by a third (tertiary) file attribute A 3 : product version.
- the Product A grouping of program files represented by Product A bucket 504 is bucketed by specific product versions associated with the program files.
- product version pie chart 602 displays the bucketing results with three product version buckets: Product Version 8.0 bucket 604 having a count of 6, Product Version 9.0 bucket 606 having a count of 13, and Product Version 10.0 bucket 608 having a count of 24.
- Each of the three product version buckets represents a respective product version grouping of program files.
- Options box 609 provides two options to the user: Option 1 allows the user to select a particular product version bucket to further analyze the respective product version grouping of program files, or Option 2 allows the user to select an action to be performed on all of the program files in the selected Product A grouping of program files.
- a user may use input mechanism 174 to select a particular product version bucket (e.g., using a mouse to click on a bucket or pie slice corresponding to a particular product version).
- the Product Version 8.0 bucket 604 is selected, having a program file count of 6.
- only three file attributes i.e., vendor, product, and product version
- screen display 700 of FIG. 7 may be displayed on user interface 172 providing unique program file identifiers (e.g., hashes) for all unknown program files on 60-80% of hosts that are associated with Vendor C, Product A, and Product Version 8.0.
- a file identifier is determined for each program file in the Product Version 8.0 grouping of program files represented by Product Version 8.0 bucket 604 .
- An identifier list 702 of unique program file identifiers may be displayed with a corresponding count list 704 of unique path counts for each program file identifier.
- Options box 709 provides two options to the user: Option 1 allows the user to select a particular unique file identifier to obtain further information about the program files associated with the selected unique program file identifier, or Option 2 allows the user to select an action to be performed on all of the program files in the selected Product Version 8.0 grouping of program files.
- a user may use input mechanism 174 to select a particular unique program file identifier (e.g., using a mouse to click on a particular program file identifier).
- program file identifier 706 i.e., Hash f3a643e085f00cbfc9251925e8e0affef34a9eef
- screen display 800 of FIG. 8 may be displayed on user interface 172 providing unique program file paths associated with program file identifier 706 , which is on 60-80% of hosts and associated with Vendor C, Product A, and Product Version 8.0.
- a path list 802 of unique file paths may be displayed with a corresponding frequency list 804 indicating the frequency of each unique program file path found on hosts 110 .
- Options box 809 provides two options to the user: Option 1 allows the user to select a particular unique file path to obtain further information about the program files associated with the selected unique file path, or Option 2 allows the user to select an action to be performed on all of the program files represented by the previously selected unique program file identifier 706 .
- a user may use input mechanism 174 to select a particular unique file path (e.g., using a mouse to click on a particular program file path).
- program file path 806 i.e., C: ⁇ Program Files ⁇ Product A ⁇ VC ⁇ bin ⁇ link.exe
- screen display 900 of FIG. 9 may be displayed on user interface 172 of console 170 providing identification of unique hosts associated with unique program file path 806 , which is on 60-80% of hosts and associated with Vendor C, Product A, Product Version 8.0, and unique program file identifier 706 .
- a host list 902 of unique hosts may be displayed with corresponding selection boxes 904 .
- Options box 909 provides the user the ability to select an action to be performed and to select particular ones of the identified hosts by marking corresponding selection boxes 904 .
- the chosen action may be performed on the program files associated with the selected hosts, the selected unique file path 806 , and the selected file identifier 706 .
- FIGS. 3-9 illustrate one embodiment of the processing flow of system 100 for evaluating and remediating unknown program files, in which three file attributes (i.e., vendor, product, and product version) are used to successively group the program files of a selected frequency range.
- the file attributes used for bucketing may include any intrinsic and/or extrinsic file attributes and any desired number, combination, and order of such file attributes.
- two, three, four, or more file attributes may be used each time a selected set of program files is processed, and such file attributes could include either or both extrinsic and intrinsic attributes.
- system 100 can be configured to allow a user to select particular file attributes for grouping.
- system 100 may also be configured to automatically select particular frequency and count buckets, providing the results of such processing to a user in the form of a screen display, a report, a file, and/or any other suitable mechanism for communication.
- system 100 may be used to evaluate trusted (e.g., whitelisted) program files when trying to determine the pervasiveness of known safe software that is currently not licensed in a particular network.
- system 100 could be used to determine a metric indicating how uniformly the known or trusted software is distributed throughout a network, throughout a defined segment of a network, throughout a cluster of computers in a network, and the like.
- FIGS. 3-9 the options for managing or remediating selected groupings of program files, file identifiers, file paths and/or file hosts, as shown in FIGS. 3-9 , are for example purposes only. It will be appreciated that numerous other options, at least some of which are detailed herein in this Specification, may be provided in any combination with or exclusive of the options of FIGS. 3-9 .
- Software for achieving the grouping and managing operations outlined herein can be provided at various locations (e.g., the corporate IT headquarters, end user computers, distributed servers in the cloud, etc.).
- this software could be received or downloaded from a web server (e.g., in the context of purchasing individual end-user licenses for separate networks, devices, servers, etc.) in order to provide this system for selectively grouping and managing program files.
- this software is resident in one or more computers sought to be protected from a security attack (or protected from unwanted or unauthorized manipulations of data).
- the software of the system for selectively grouping and managing program files in a computer network environment could involve a proprietary element (e.g., as part of a network security solution with McAfee® ePolicy Orchestrator (ePO) software, McAfee® Anti-Virus software, McAfee® HIPS software, McAfee® Application Control software, etc.), which could be provided in (or be proximate to) these identified elements, or be provided in any other device, server, network appliance, console, firewall, switch, information technology (IT) device, distributed server, etc., or be provided as a complementary solution (e.g., in conjunction with a firewall), or otherwise provisioned in the network.
- a proprietary element e.g., as part of a network security solution with McAfee® ePolicy Orchestrator (ePO) software, McAfee® Anti-Virus software, McAfee® HIPS software, McAfee® Application Control software, etc.
- ePO McA
- the grouping and managing activities outlined herein may be implemented in software. This could be inclusive of software provided in server 130 (e.g., program grouping module 150 , remediation modules 160 , etc.) and in other network elements (e.g., hosts 110 ) including program files to be grouped and managed. These elements and/or modules can cooperate with each other in order to perform the grouping and managing activities as discussed herein. In other embodiments, these features may be provided external to these elements, included in other devices to achieve these intended functionalities, or consolidated in any appropriate manner. For example, some of the processors associated with the various elements may be removed, or otherwise consolidated such that a single processor and a single memory location are responsible for certain activities. In a general sense, the arrangement depicted in FIG. 1 may be more logical in its representation, whereas a physical architecture may include various permutations, combinations, and/or hybrids of these elements.
- some or all of these elements include software (or reciprocating software) that can coordinate, manage, or otherwise cooperate in order to achieve the grouping and managing operations, as outlined herein.
- One or more of these elements may include any suitable algorithms, hardware, software, components, modules, interfaces, or objects that facilitate the operations thereof.
- such a configuration may be inclusive of logic encoded in one or more tangible media, which may be inclusive of non-transitory media (e.g., embedded logic provided in an application specific integrated circuit (ASIC), digital signal processor (DSP) instructions, software (potentially inclusive of object code and source code) to be executed by a processor, or other similar machine, etc.).
- ASIC application specific integrated circuit
- DSP digital signal processor
- one or more memory elements can store data used for the operations described herein. This includes the memory element being able to store software, logic, code, or processor instructions that are executed to carry out the activities described in this Specification.
- a processor can execute any type of instructions associated with the data to achieve the operations detailed herein in this Specification.
- processor 132 could transform an element or an article (e.g., data) from one state or thing to another state or thing.
- the activities outlined herein may be implemented with fixed logic or programmable logic (e.g., software/computer instructions executed by a processor) and the elements identified herein could be some type of a programmable processor, programmable digital logic (e.g., a field programmable gate array (FPGA), an erasable programmable read only memory (EPROM), an electrically erasable programmable read only memory (EEPROM)), an ASIC that includes digital logic, software, code, electronic instructions, flash memory, optical disks, CD-ROMs, DVD ROMs, magnetic or optical cards, other types of machine-readable mediums suitable for storing electronic instructions, or any suitable combination thereof.
- FPGA field programmable gate array
- EPROM erasable programmable read only memory
- EEPROM electrically erasable programmable read only memory
- ASIC that includes digital logic, software, code, electronic instructions, flash memory, optical disks, CD-ROMs, DVD ROMs, magnetic or optical cards, other types of machine-readable mediums suitable for
- any of the memory items discussed herein should be construed as being encompassed within the broad term ‘memory element.’
- any of the potential processing elements, modules, and machines described in this Specification should be construed as being encompassed within the broad term ‘processor.’
- Each of the computers may also include suitable interfaces for receiving, transmitting, and/or otherwise communicating data or information in a network environment.
Abstract
Description
- This Application is a continuation (and claims the benefit under 35 U.S.C. §120) of U.S. application Ser. No. 13/012,138, filed Jan. 24, 2011, entitled “SYSTEM AND METHOD FOR SELECTIVELY GROUPING AND MANAGING PROGRAM FILES,” Inventors Rishi Bhargava, et al. The disclosure of the prior application is considered part of (and is incorporated in its entirety by reference in) the disclosure of this application. This application is related to U.S. patent application Ser. No. 14/016,497, filed Sep. 3, 013, entitled “SYSTEM AND METHOD FOR CLUSTERING HOST INVENTORIES,” by Inventors Rishi Bhargava, et al., now issued as U.S. Pat. No. 8,843,496. The disclosure of that application is considered part of and is incorporated by reference herein in its entirety. This application is related to U.S. patent application Ser. No. 12/880,125, filed Sep. 12, 2010, entitled “SYSTEM AND METHOD FOR CLUSTERING HOST INVENTORIES,” by Inventors Rishi Bhargava et al., now issued as U.S. Pat. No. 8,549,003. The disclosure of that application is considered part of and is incorporated by reference herein in its entirety.
- This invention relates in general to the field of data management and, more particularly, to a system and a method for selectively grouping and managing program files.
- The field of computer network administration and support has become increasingly important and complicated in today's society. Computer network environments are configured for virtually every enterprise or organization, typically with multiple interconnected computers (e.g., end user computers, laptops, servers, printing devices, etc.). In many such enterprises, Information Technology (IT) administrators may be tasked with maintenance and control of the network environment, including executable software files on hosts, servers, and other network computers. Executable software files or program files may be generally classified as whitelist software (i.e., known safe software), blacklist software (i.e., known unsafe software), and greylist software (i.e., unknown software). As the number of executable software files in a network environment increases, the ability to control, maintain, and remediate these files efficiently can become more difficult. Generally, greater diversity of software implemented in various computers of a network translates into greater difficulty in managing such software. For example, in large enterprises, executable software inventories may vary greatly among end user computers across departmental groups, requiring time and effort by IT administrators to identify and manage executable software in such a diverse environment. Thus, innovative tools are needed to assist IT administrators in the effective control and management of executable software files on computers within computer network environments.
- To provide a more complete understanding of the present invention and features and advantages thereof, reference is made to the following description, taken in conjunction with the accompanying figures, wherein like reference numerals represent like parts, in which:
-
FIG. 1 is a simplified block diagram of an exemplary implementation in a network environment of a system for selectively grouping and managing program files; -
FIGS. 2A and 2B are simplified flowcharts illustrating a series of example steps associated with an embodiment of the system of the present disclosure; and -
FIGS. 3-9 are exemplary screenshots associated with an example scenario in one example implementation of the system in accordance with the present disclosure. - A method in one example embodiment includes determining a frequency range corresponding to a subset of a plurality of program files on a plurality of hosts in a network environment. The method also includes generating a first set of counts including a first count that represents an aggregate amount of program files in a first grouping of one or more program files of the subset. In this method each of the one or more program files of the first grouping includes a first value of a primary attribute. In specific embodiments, each of the plurality of program files is an unknown program file. In further embodiments, the primary attribute is one of a plurality of file attributes provided in file metadata. Other specific embodiments include either blocking or allowing execution of each of the program files of the first grouping. More specific embodiments include determining a unique identifier corresponding to at least one program file of the first grouping and determining a file path count representing an aggregate amount of one or more unique file paths associated with the unique identifier. Other specific embodiments include determining a plurality of frequencies corresponding respectively to the plurality of program files, where each of the plurality of frequencies is determined by calculating all occurrences of a respective one of the plurality of program files in the plurality of hosts.
-
FIG. 1 is a simplified block diagram illustrating an example implementation of asoftware management system 100 for selectively grouping and managing program files in a network environment. The exemplary network environment illustrates aserver 130 suitably connected tohosts respective program files software management system 100 may be implemented in a computer, such asserver 130. In one embodiment,server 130 may include software elements such as asecurity administration module 140, a programfile grouping module 150, andremediation modules 160. Hardware elements such as aprocessor 132 and amemory element 134 may also be provided inserver 130. Additional memory in the form of aprogram file inventory 180 may be suitably connected toserver 130. Aconsole 170, with auser interface 172 and aninput mechanism 174, for interacting with software elements ofsoftware management system 100 may also be suitably connected toserver 130. - The network environment illustrated in
FIG. 1 may be generally configured or arranged to represent any communication architecture capable of electronically exchanging packets. In addition, the network may also be configured to exchange packets with other networks such as, for example, the Internet, or other LANs. Other common network elements (e.g., email gateways, web gateways, routers, switches, loadbalancers, firewalls, etc.), may also be provisioned in the network. -
Software management system 100 may be utilized to maximize the effectiveness of actions taken by a user (e.g., IT administrators, network operators, etc.) against selected program files in a network environment. Embodiments ofsystem 100 can provide valuable information about unknown software files and can provide remediation options that can be selectively applied to individual unknown software files or to selected groupings of unknown software files. In one example embodiment, whensoftware management system 100 is implemented in a computer network environment as shown inFIG. 1 , a grouping process may be applied to an unknown software inventory of a selected set of computers (e.g., hosts 110) in the network. The program files identified in the unknown software inventory may be evaluated and grouped according to a predefined frequency measure and various file attributes, in succession. A user may select an action to be performed on all program files in a grouping, where each of the program files in the grouping has the same distinct value for a particular file attribute (e.g., vendor, product, product version, etc.). The program files of the grouping may also be associated with the same distinct values of one or more other file attributes previously selected by the user. The user may also successively select file attribute groupings until each unknown program file, having the same distinct values of the file attributes selected by the user, is identified by a unique identifier, by a program file path, and/or by a particular host. The user may select one or more of the unique identifiers, program file paths, or hosts to perform a desired action to remediate the corresponding unknown program files. Thus,system 100 enables the user to more effectively and efficiently manage unknown program files on a set of computers in a particular network environment. - For purposes of illustrating the techniques of
software management system 100, it is important to understand the activities and security concerns that may be present in a given network such as the network shown inFIG. 1 . The following foundational information may be viewed as a basis from which the present disclosure may be properly explained. Such information is offered earnestly for purposes of explanation only and, accordingly, should not be construed in any way to limit the broad scope of the present disclosure and its potential applications. - Typical network environments, both in organizations (e.g., businesses, schools, government organizations, etc.) and in homes, include a plurality of computers such as end user desktops, laptops, servers, network appliances, and the like, with each computer having an installed set of executable software. In large organizations, network environments may include hundreds or thousands of computers, which can span different buildings, cities, and/or geographical areas around the world. IT administrators are often tasked with the extraordinary responsibility of maintaining these computers and their software in a way that minimizes or eliminates disruption to the organization's activities.
- One difficulty IT administrators face when managing a network environment is ensuring that only trusted and approved executable software files are present. Although computers in a network may initially be configured with only trusted and approved executable software, continuous efforts (both electronic and manual) are usually necessary to protect against unknown and/or malicious software. Various protection systems can be implemented that seek to prevent unknown and/or malicious software from infecting the network computers. For example, traditional anti-virus solutions search databases of malicious software (i.e., blacklists) and prevent any software identified on a blacklist from being executed. Blacklists, however, only contain known threats and, consequently, are ineffective against new malware or targeted attacks. Moreover, malicious users are constantly devising new schemes to penetrate secure networks with malicious software. Once a new piece of malicious software has been created, traditional blacklists will not include such new software until it has been identified as a possible threat, evaluated, and determined to be malicious, often giving the new piece of software time to propagate and spread throughout multiple networks.
- Other protection systems include whitelisting solutions, which search databases of known trusted software (i.e., whitelists) and only allow software to execute if the software is identified on the whitelist. Although these systems provide complete protection in preventing unknown and/or malicious software from being executed, such solutions still suffer from several drawbacks. In particular, whitelisting solutions can be inflexible, potentially creating delays and disruptions when new software is needed and adding additional steps to administrative workflows. Moreover, unknown and/or malicious software may nevertheless be present in the memory or disks of various computer networks, consuming valuable resources and risking inadvertent execution or propagation (e.g., if the whitelisting solution is temporarily or permanently disabled, if the software is copied to portable memory and introduced into a less protected network environment, etc.).
- While anti-virus solutions utilize blacklist software, and whitelisting solutions utilize whitelist software in their protection schemes, a third type of software may exist in a network environment: unknown or “greylist” software. Unknown or greylist software is software not explicitly known to be malicious or trusted. Anti-virus solutions may allow all unknown software to be executed, while whitelisting solutions may prevent all unknown software from being executed. Each solution suffers from the lack of an efficient method of distinguishing between and appropriately remediating unknown safe software that has been introduced into a network for legitimate purposes and unknown malicious software that has infiltrated a network. Unknown software can be identified using, for example, existing solutions such as malicious software protection systems of co-pending U.S. patent application Ser. No. 12/844,892, entitled “SYSTEM AND METHOD FOR LOCAL PROTECTION AGAINST MALICIOUS SOFTWARE” and U.S. patent application Ser. No. 12/844,964, entitled “SYSTEM AND METHOD FOR NETWORK LEVEL PROTECTION AGAINST MALICIOUS SOFTWARE,” both filed on Jul. 28, 2010, by Rishi Bhargava et al. (referred to hereinafter as “co-pending U.S. patent application Ser. No. '892” and “co-pending U.S. Patent Application '964”, respectively). In another embodiment, unknown software files could be identified by obtaining an inventory of every program file existing in every computer of a network (or in a selected set of computers of a network) and comparing the inventory to one or more third-party global and/or local whitelists and blacklists. Effectively remediating the identified unknown software, however, presents more difficulty.
- Because a greylist may contain both malicious and non-malicious software files, ideally, such files need to be evaluated individually. For example, any non-malicious file having a legitimate purpose could be approved and added to a whitelist or otherwise enabled for execution within the network. Files determined to be malicious could be blacklisted, removed from the network, and/or otherwise disabled from execution. Suspect files without a known legitimate purpose, which may or may not be malicious, could be quarantined pending further evaluation. Managing such files individually, however, can be both labor-intensive and time-consuming, at least in part because the computers within the particular network may lack congruency of the unknown software. For example, unknown software files may be stored in different memory or disk locations on different computers, different versions of the unknown software files may be installed in different computers, unknown software files may be stored on some computers but not on others, and the like.
- Another problematic issue in managing such files can arise because different IT administrators may prefer to remediate unknown software using different techniques and criteria. For example, one organization may have a relaxed policy allowing any software to be implemented in any computer of their network if the software is from a particular vendor. Other organizations may have a more stringent policy such as requiring the same product version of a particular software product to be stored in the same file path location of each computer. Thus, flexible identification and remediation techniques are needed to adequately address the needs of IT administrators in managing unknown software for different organizations.
- A system for selectively grouping and managing program files outlined by
FIG. 1 can resolve many of these issues. In accordance with one example implementation ofsoftware management system 100, a method is provided of sifting through a set of unknown program files and selecting one or more desired groupings of the unknown program files (e.g., a grouping associated with a particular value of a single file attribute, a grouping associated with a plurality of values of a respective plurality of file attributes, a grouping associated with a single program file on a single host, etc.). The user may then remediate the one or more program files of the selected grouping in any number of ways, including performing various actions to effectively block or allow execution (e.g., adding program files to a whitelist, adding program files to a blacklist, removing, renaming, or quarantining program files, etc.). Thus, the user is provided an opportunity to maximize efforts of managing unknown program files within the network by, for example, taking action on the largest groupings of similar unknown program files and by selecting groupings identified from the highest frequency ranges across the network. - Note that in this Specification, references to various features (e.g., elements, structures, modules, components, steps, operations, characteristics, etc.) included in “one embodiment”, “example embodiment”, “an embodiment”, “another embodiment”, “some embodiments”, “various embodiments”, “other embodiments”, “alternative embodiment”, and the like are intended to mean that any such features are included in one or more embodiments of the present disclosure, but may or may not necessarily be combined in the same embodiments.
- Turning to the infrastructure of
FIG. 1 , the example network environment may be configured as one or more networks and may be configured in any form including, but not limited to, local area networks (LANs), wireless local area networks (WLANs), metropolitan area networks (MANs), wide area networks (WANs), virtual private networks (VPNs), Intranet, Extranet, any other appropriate architecture or system, or any combination thereof that facilitates communications in a network. In some embodiments, acommunication link 120 may represent any electronic link supporting a LAN environment such as, for example, cable, Ethernet, wireless technologies (e.g., IEEE 802.11x), ATM, fiber optics, etc. or any suitable combination thereof. In other embodiments,communication link 120 may represent a remote connection tocentral server 130 through any appropriate medium (e.g., digital subscriber lines (DSL), telephone lines, T1 lines, T3 lines, wireless, satellite, fiber optics, cable, Ethernet, etc. or any combination thereof) and/or through any additional networks such as a wide area networks (e.g., the Internet). In addition, gateways, routers, switches, and any other suitable network elements may be used to facilitate electronic communication between hosts 110 andcentral server 130. Note that the network illustrated inFIG. 1 , may include a configuration capable of transmission control protocol/internet protocol (TCP/IP) communications for the transmission and/or reception of packets in the network. The network could also operate in conjunction with a user datagram protocol/IP (UDP/IP) or any other suitable protocol, where appropriate and based on particular needs. - In an example embodiment, hosts 110 may represent end user computers that could be operated by end users. The end user computers may include desktops, laptops, and mobile or handheld computers (e.g., personal digital assistants (PDAs) or mobile phones), or any other type of computing device operable by an end user. Hosts 110 can also represent other computers (e.g., servers, appliances, etc.) having program files, which could be similarly grouped and managed by
system 100, using executable file inventories derived from sets of program files 112 on such hosts 110. It should be noted that the network configurations and interconnections shown and described herein are for illustrative purposes only.FIG. 1 is intended as an example and should not be construed to imply architectural limitations in the present disclosure. - Sets of program files 112 on hosts 110 can include all executable files on respective hosts 110. In this Specification, references to “executable program file”, “executable file”, “program file”, “executable software file”, “executable software”, “software program”, and “software program file” are meant to encompass any software file comprising instructions that can be understood and processed by a computer such as executable files, library modules, object files, other executable modules, script files, interpreter files, and the like. In addition, although reference is made herein to using unknown program file inventories, it will be apparent that any other inventory of program files could be processed by
system 100 and successively grouped according to frequency, file attributes, file identifiers, file paths and/or hosts. In one embodiment, the system could be configured to allow the IT administrator to select a particular set of program files to be evaluated. For example, an IT Administrator may select a program file inventory derived from the results of clustering as described in co-pending U.S. patent application Ser. No. 12/880,125, entitled “SYSTEM AND METHOD FOR CLUSTERING HOST INVENTORIES,” filed Sep. 12, 2010, by Rishi Bhargava et al., which has been previously fully incorporated by reference herein (referred to hereinafter as “co-pending U.S. patent application Ser. No. '125”). In addition, the IT administrator may also be permitted to select particular hosts from which the executable file inventory is derived. For example, all end user computers in a network or within a particular part of the network (e.g., a particular business unit of an organization) may be selected. In another example, a particular type of host such as, for example, all servers within a network or within a particular part of the network may be selected. -
Central server 130 as illustrated inFIG. 1 represents an exemplary server linked to hosts 110, which may provide services to hosts 110.Software management system 100 may be implemented incentral server 130 with programfile grouping module 150,remediation modules 160, and access toprogram file inventory 180.Program file inventory 180 may be a selected set of executable files (e.g., a greylist or unknown executable files) of all hosts 110 or a selected set of hosts 110. Alternatively,program file inventory 180 could be an inventory of all executable files in hosts 110 or a selected set of hosts 110. - Not shown in
central server 130 ofFIG. 1 is additional hardware that may be suitably coupled toprocessor 132 in the form of memory management units (MMU), additional symmetric multiprocessing (SMP) elements, peripheral component interconnect (PCI) bus and corresponding bridges, small computer system interface (SCSI)/integrated drive electronics (IDE) elements, etc. In addition, suitable modems and/or network adapters may also be included for allowing network access. Any suitable operating systems may also be configured inserver 130 to appropriately manage the operation of hardware components therein.Server 130 may include any other suitable hardware, software, components, modules, interfaces, or objects that facilitate the operations thereof. This may be inclusive of appropriate algorithms and communication protocols that facilitate the selective grouping and managing operations detailed herein. Similarly, hosts 110 may also be configured with any appropriate processors, memory, and other hardware, software, components, modules, interfaces or objects that facilitate the operations thereof, and that store program files 112. - These elements, shown and/or described with reference to
server 130 and hosts 110 are intended for illustrative purposes and are not meant to imply architectural limitations. In addition, each computer, includingserver 130 and hosts 110, may include more or less components where appropriate and based on particular requirements. As used herein in this Specification, the term ‘computer’ is meant to encompass any personal computers, laptops, network appliances, routers, switches, gateways, processors, servers, load balancers, firewalls, or any other suitable device, component, element, or object operable to affect or process electronic information in a network environment. -
Management console 170 may includeuser interface 172 andinput mechanism 174 to allow a user to interact withcentral server 130. In one example embodiment,user interface 172 may be a graphical user interface (GUI). In addition, appropriate input mechanisms could include a keyboard, mouse, voice recognition, touch pad, input screen, etc. Programfile grouping module 150 may provide viewable data related to program file groupings on the graphical user interface for the IT administrator or other authorized user to view, to select for remediation, or to select for further analysis.Management console 170 may also be used to select particular hosts and/or particular types of executable files to be included in the program file inventory for selectively grouping and managing the program files identified therein. -
Software management system 100 may be adapted to provide grouping and managing activities for electronic data (e.g., program files), which could be resident in memory of a computer or other electronic storage device. Information related to the grouping and managing activities can be suitably rendered, or sent to a specific location (e.g.,management console 170, etc.), or simply stored or archived, and/or properly displayed in any appropriate format. -
Security administration module 140 may provide an existing infrastructure of network security and management and may be suitably integrated withsoftware management system 100. One exemplary enterprise management system that could be used includes McAfee® electronic Policy Orchestrator (ePO) software manufactured by McAfee, Inc. of Santa Clara, California. Other security software that may be integrated with or otherwise cooperatively provisioned in a network withsoftware management system 100 includes full or selected portions of co-pending U.S. patent application Ser. No. '892 and co-pending U.S. patent application Ser. No. '964, previously referenced herein, and co-pending U.S. patent application Ser. No. '125, previously incorporated herein by reference. In addition, security technology that performs one or more remediation activities, as represented byremediation modules 160 inFIG. 1 , can include elements such as McAfee® Anti-Virus software, McAfee® Host Intrusion Prevention System (HIPS) software, McAfee® Application Control software, or any third party software provisioning system configured to perform these remediation activities. Thus, any such components may be included within the broad scope of the term ‘software management system’ as used herein in this Specification. Theprogram file inventory 180 may include information related to the evaluation of electronic data, such as file identifiers and file attributes of a selected inventory of program files (e.g., unknown program files, program files from clustering activities, etc.) on hosts 110 and these elements can readily cooperate, coordinate, or otherwise interact withsoftware management system 100. - Turning to
FIGS. 2A and 2B , simplified flowcharts illustrate operational processing of one embodiment ofsoftware management system 100. Flow begins atstep 202 where a frequency analysis is performed on a program file inventory. In one embodiment, the program file inventory includes all unknown program files on hosts 110 within the network. These unknown executable files can be detected using any suitable technique such as, for example, the malicious software protection systems of co-pending U.S. patent application Ser. No. '892 and co-pending U.S. patent application Ser. No. '964, both of which have been previously referenced herein. In addition, the program file inventory could be limited to program files on specified hosts (e.g., hosts within a particular business segment of the organization, etc.). - Frequency analysis of the program files identified in the inventory can be achieved in various ways. In one embodiment, the frequency measure of a particular program file is a total count of occurrences of the particular program file in hosts across a network of an organization. Another frequency measure could be a total number of hosts on which a particular program file occurs. Other frequency measures include counting the occurrences of a particular program file in a total number of business units of the organization, in a total number of geographical locations of the organization, or in a total number of machine roles. In addition, host details may be included when creating frequency measures. For example, a total number of operating system patch levels or different operating systems on which a program file is found may be included in the frequency measure. Generally, any grouping of hosts may be used to define the frequency measure. Moreover, some embodiments of
system 100 can be implemented to allow a user to select the frequency measure to be used or to allow the user to provide frequency measure configuration data. In other embodiments, the frequency measure can be preconfigured insystem 100. - After the frequency analysis is performed in
step 202, in step 204 a screen display may be provided on, for example,user interface 172 ofconsole 170, for a user to view the frequency ranges of the program files and to select a particular frequency range for further analysis. In one embodiment, the frequency ranges may be displayed in the form of a bar graph, showing the program file counts bucketed by frequency ranges (e.g., fifths (0-20%, 20-40%, 40-60%, 60-80%, 80-100%), quarters (0-25%, 25-50%, 50-75%, 75-100%), thirds (0-33%, 33-66%, 66-100%), etc.) and showing the corresponding program file count for each frequency range of the particular frequency measure. Accordingly, each frequency range that indicates a count of at least one program file corresponds to a subset of the program files identified in the inventory. Instep 206, the user may select any of the frequency ranges (or buckets) to further analyze the program files within the selected frequency range. In one embodiment,system 100 is configured such that input mechanism 174 (e.g., mouse, touchpad, voice, etc.) can be used to select the desired frequency bar displayed onuser interface 172 ofconsole 170. - Once the user selects a particular frequency range, flow passes to
steps 208 through 222 where a sequence of one or more file attributes, indicated by An (n=number of unique file attributes), may be used successively and cumulatively to bucket selected groupings of program files. Example file attributes may include one or more intrinsic file attributes such as vendor, product, product version, file version, file description, and/or any other suitable attribute available in the file metadata. Extrinsic file attributes may also be used, including, for example, attributes stored in a database indicating the type of software of a particular program file (e.g., System Utility, Programmer Tool, Productivity Tool, etc.), and/or any other suitable extrinsic file attribute. - In
step 208, a variable ‘i’ is initialized to 1, and a subset of program files corresponding to the selected frequency range, may be bucketed by one or more distinct values of the first or primary file attribute A1. In one embodiment, the bucketing by file attribute values can be displayed to the user on theuser interface 172 ofconsole 170 in the form of a pie chart. Each pie slice (or bucket) can represent a respective A1 grouping of one or more program files of the subset, where the one or more program files of a particular A1 grouping are each associated with the same distinct value of file attribute A1. In addition, each pie slice (or bucket) can indicate a count (or proportion) of the one or more program files of the respective A1 grouping. For example, if file attribute A1 represents vendors, and if the selected frequency range (e.g., 80-100%) includes program files of eight different vendors, then the pie chart could include eight pie slices, with each pie slice indicating a count of program files associated with one of the eight vendors. Thus, a set of eight counts could correspond to file attribute A1 and each count within the set of eight counts could represent an aggregate amount of the one or more program files in a respective A1 grouping. - After the file attribute A1 bucketing has been displayed, flow may pass to
decision box 210 to determine whether the user has selected a particular A1 bucket, or whether the user has selected an action to be performed on the program files associated with the previously selected frequency range. If the user has selected an action to be performed, then flow passes to step 212, such that a chosen action is performed on each program file represented by the previously selected frequency range. -
System 100 may be implemented to provide various options for performing an action to manage or remediate groupings of program files. Such options may include, generally, blocking or allowing execution of program files. Such blocking or allowing may be accomplished by, for example, blocking execution of a program file, adding a program file to a whitelist, adding a program file to a blacklist, moving, replacing, renaming, or quarantining a program file, changing a network configuration of hosts containing program files to block certain network traffic, starting or stopping processes of hosts containing program files, modifying the software configuration of hosts containing program files, and opening a change request using a change ticketing system. In addition, further options may be suitably integrated to assist a user in evaluating whether particular program files in a grouping should be trusted. For example,system 100 could allow actions to be performed on particular program files, such as running a virus scan, performing heuristic analysis, and the like. Other actions could be facilitated bysystem 100 to detect potential unlicensed software. These other actions could include comparing a selected program file to a packet manager to determine whether the program file corresponds to an installed software package. To achieve these management and remediation actions,system 100 may be suitably integrated with various existing security technologies such as, for example, McAfee® Anti-Virus software, McAfee® HIPS software, McAfee® Application Control whitelisting software, or any other appropriate security software. In other embodiments, however, the option to perform an action on an entire frequency range may be omitted, and such options may just be provided in more defined groupings of program files, such as groupings by file attributes and/or identifications of file identifiers, file path names, and/or hosts. - Once the chosen action is performed on the previously selected frequency range of program files, as indicated in
step 212, then the user may begin the analysis again with an updated or new program file inventory, or may continue to select other buckets to further analyze and possibly remediate selected groupings of program files. For example, a user may decide to quarantine all unknown executable files associated with a first selected frequency range. Once the quarantine action has been performed, the user may continue to analyze the now quarantined program files of the selected first frequency range until additional information about the quarantined program files is determined. Alternatively, after quarantining the first frequency range, the user may select another frequency range to evaluate and may possibly remediate program files associated with the other selected frequency range after further grouping of such program files by file attributes and/or by identifying the particular file identifiers, program file paths, and/or particular hosts associated with the program files. - With reference again to step 210, if the user selects one of the file attribute Ai buckets by, for example, using
user interface 172 ofconsole 170 to click on one of the pie slices in the pie chart, then flow passes tosteps 214 through 222.Steps 214 through 222 may be configured to recur such that a different file attribute in the sequence of file attributes An is used to bucket each successive grouping of program files represented by the previous bucket selected by the user. A different file attribute may be used during each recurrence ofsteps 214 through 222 until the file attribute sequence An is exhausted or until no further bucket selection input is received from the user (e.g., the user does not select a bucket, the user selects an action to be performed on a bucket). - If the user selects one of the file attribute A1 buckets in
step 210, then flow passes todecision box 214 where a determination is made as to whether A1 is the last file attribute in the sequence An. If Ai is not the last file attribute in the sequence An then flow passes to step 216 where distinct values of the next file attribute A(i+1) in the sequence An are used to bucket the selected Ai grouping of program files represented by the selected Ai bucket. Each A(i+1) bucket (or pie slice in one embodiment) can represent a respective A(i+1) grouping of one or more program files of the selected Ai grouping, where each of the one or more program files of a particular A(i+1) grouping are associated with the same distinct value of file attribute A(i+1). Additionally, all of the program files in all of the A(i+1) groupings are associated with the previously selected frequency range and the previously selected values of file attributes A1 through Ai. - A set of counts may be determined such that each bucket (or pie slice), corresponding to a distinct value of the file attribute A(i+1) and representing a respective A(i+1) grouping, indicates a count (or proportion) of the one or more program files of the respective A(i+1) grouping. Thus, each count in the set of counts can indicate an aggregate amount of the one or more program files in its respective A(i+1) grouping.
- After the file attribute A(i+1) bucketing has been displayed, flow passes to
decision box 218 to determine whether the user has selected a particular A(i+1) bucket, or whether the user has selected an action to be performed to the previously selected Ai bucket. If the user has chosen an action to be performed, then flow passes to step 220, such that the chosen action is performed on each program file represented by the previously selected Ai bucket. As previously described herein,system 100 may be implemented to provide various options for performing an action to manage or remediate program files (e.g., whitelisting, blacklisting, moving, replacing, renaming, blocking, quarantining, etc.) and may be suitably integrated with various existing security technologies to achieve these managing and remediating activities. - Once the action is performed on the previously selected Ai bucket in
step 220, the user may begin the analysis again with an updated or new program file inventory, or may continue to select A(i+1) buckets or buckets from any of the previously displayed bucketing screens to further analyze and possibly remediate other selected groupings of executable program files. In one example, a user may decide to quarantine all unknown program files associated with a particular product of a particular vendor. Once the quarantine action has been performed instep 220, the user may continue to select displayed buckets until additional information about the now quarantined program files is determined. If any of the quarantined files are determined to be stored on a rogue host (e.g., associated with a terminated employee) then the user may decide to go ahead and remove such program files from the host. In another example, a user may decide to remove all program files associated with a particular vendor (e.g., a first distinct value of A1). Once the files associated with the selected first vendor are removed, the previous file attribute Ai bucketing may be displayed so that the user may continue to analyze and possibly remediate the program files associated with the other vendors (i.e., other distinct values of A1) by further grouping such program files using additional file attributes and/or by identifying the particular file identifiers, program file paths, and/or particular hosts associated with the program files. - With reference again to step 218, if the user selects a particular A(i+1) bucket, then flow passes to step 222 where the value of the variable ‘i’ is changed to i+1. Flow then loops back to step 214 to determine whether the file attribute Ai is the last attribute in the sequence An. As long as the user continues to select a particular A(i+1) bucket, steps 214-222 may continue to recur until the sequence An is exhausted. Once the sequence An is exhausted (i.e., Ai is the last attribute in the sequence), as determined in
step 214, flow passes to step 224 ofFIG. 2B . - In
step 224 ofFIG. 2B , a set of unique file identifiers is determined and displayed for the corresponding one or more program files represented by the last Ai bucket selected by the user. In one embodiment, the file identifiers can be a cryptographic hash function such as, for example, Secure Hash Algorithm 1 (SHA-1), which is a well-known algorithm, widely used in security applications. The unique file identifiers may be displayed onuser interface 172 ofconsole 170 along with, optionally, additional information related to each unique file identifier. Such additional information may include a unique file path count for each file identifier, where each unique file path count indicates an aggregate number of unique file paths associated with the corresponding unique file identifier. In addition, the ability to select one or more unique file identifiers for further analysis and the ability to perform an action on all of the program files in the grouping represented by the previously selected Ai bucket (and corresponding to the displayed unique file identifiers) may also be provided. - After displaying the unique file identifiers, flow then passes to step 226 to determine whether the user has selected a particular unique file identifier for further analysis, or whether the user has selected an action to be performed on the previously selected Ai bucket. If the user has selected an action to be performed, then flow passes to step 228, where the chosen action (e.g., removing, renaming, replacing, quarantining, blocking, whitelisting, blacklisting, etc.), as previously described herein, is performed on each program file that is associated with the previously selected Ai bucket.
- With reference again to step 226, if the user selects one of the unique program file identifiers, then flow passes to step 230 where additional information related to the selected unique file identifier may be displayed for the user on
user interface 172 ofconsole 170. In one example embodiment, a set of one or more unique file paths associated with the selected unique file identifier can be displayed along with, optionally, additional information related to each unique file path. Such additional information may include a frequency count for each unique file path, where each frequency count indicates an aggregate number of hosts associated with the corresponding unique file path. In addition, the ability to select one or more unique file paths for further analysis and the ability to perform an action on all of the program files represented by the previously selected unique file identifier (and corresponding to the displayed unique file paths) may also be provided. - After displaying file path details for the selected unique file identifier in
step 230, flow then passes to step 232 to determine whether the user has selected a particular unique program file path for further analysis, or whether the user has selected an action to be performed on all of the program files associated with the selected unique program file identifier. If the user has selected an action to be performed, then flow passes to step 234, such that the chosen action (e.g., removing, renaming, replacing, quarantining, blocking, whitelisting, blacklisting, etc.), as previously described herein, is performed on each program file that is associated with the selected file identifier and that is represented by the last Ai bucket selected by the user. - Referring back to step 232, if the user selects one of the unique program file paths, then flow passes to step 236 where additional information related to the selected unique program file path may be displayed for the user on
user interface 172 ofconsole 170. In one example embodiment, a set of one or more unique hosts associated with the selected unique file path can be displayed. In addition, the ability to select one or more of the identified hosts and to select a desired action to be performed on the program files associated with the selected hosts, may also be provided. Flow passes to step 238 where it is determined whether the user has selected one or more hosts and a desired action. If the user selects one or more hosts and a desired action (e.g., removing, renaming, replacing, quarantining, blocking, whitelisting, blacklisting, etc.), as previously described herein, then flow passes to step 240 where the selected action is performed on each of the program files associated with the selected file identifier, the selected unique program file path, and the selected one or more hosts. - In one embodiment, the plurality of program files of the program file inventory, or any subsequent grouping of the plurality of program files, may be manipulated using filters to achieve different results. As an example, filters to remove certain frequency ranges, counts, file identifiers, file paths, and/or hosts, may be utilized where appropriate and based on particular needs. Filters may also be used on arbitrary program file attributes to provide a new view of the results from a previous selection. Such filters may be selectable by the user or preconfigured in the system.
- Turning to
FIGS. 3 through 9 , example screen displays of one embodiment ofsystem 100 are shown.FIGS. 3 through 9 illustrate the processing of an example unknown program file inventory by the successive selection of a frequency range (FIG. 3 ), a vendor (FIG. 4 ), a product (FIG. 5 ), a product version (FIG. 6 ), a unique file identifier (FIG. 7 ), a unique program file path (FIG. 8 ), and unique hosts (FIG. 9 ). The attribute values for vendor, product, and product version in this example scenario are generically indicated as Vendor A, B, and C, Products A, B, and C, and Product Versions 8.0, 9.0, and 10.0 inFIGS. 3-9 . Note that the following description with reference toFIGS. 3-9 will referenceFIG. 1 andFIGS. 2A and 2B to describe various processing flows and example network elements that may be used in this example scenario. - In one embodiment, screen displays shown in
FIGS. 3-9 may be provided onuser interface 172 ofconsole 170, for an authorized user to evaluate a program file inventory and make appropriate selections based on particular needs. Initially, a frequency analysis may be performed onprogram file inventory 180, which may identify a desired set of program files, such as unknown program files in hosts 110 of the network.FIG. 3 illustrates anexample screen display 300 of frequency ranges of the unknown program files. Inscreen display 300, a bar graph illustrates program file counts 304 bucketed by a plurality of frequency ranges 302. In this example, five frequency ranges (i.e., 0-20%, 20-40%, 40-60%, 60-80%, and 80-100%) are shown, which indicate the prevalence of the unknown program files on hosts 110 within the network ofFIG. 1 . In accordance with this example scenario, a subset (i.e., 152 program files) of the plurality of program files ofprogram file inventory 180 were found on 60-80% of hosts 110. As previously discussed herein, however, other frequency measures may be used in the frequency analysis (e.g., prevalence in business units, geographical locations, etc.). - From
screen display 300, a user may useinput mechanism 174 to select a particular frequency range (e.g., using a mouse to click on a bar associated with a particular frequency range). In this example scenario, the 60-80% frequency range is selected, having a program file count of 152. Once the 60-80% frequency range is selected,screen display 400 ofFIG. 4 may be displayed onuser interface 172 providing information on the subset of all unknown program files on 60-80% of hosts, bucketed by a first (primary) file attribute A1: vendor. The subset is bucketed by specific vendors associated with the program files. Avendor pie chart 402 displays the bucketing results with three vendor buckets: Vendor Abucket 404 having a count of 18,Vendor B bucket 406 having a count of 50, andVendor C bucket 408 having a count of 84. Each of the three vendor buckets represents a respective vendor grouping of program files. Options box 409 provides two options to the user:Option 1 allows the user to select a particular vendor bucket to further analyze the respective vendor grouping of program files, orOption 2 allows the user to select an action to be performed on all of the program files in the selected subset of program files (e.g., the program files in the selected 60-80% frequency range). - From
screen display 400, a user may useinput mechanism 174 to select a particular vendor bucket (e.g., using a mouse to click on a bucket or pie slice corresponding to Vendor A, Vendor B, or Vendor C). In this example scenario,Vendor C bucket 408 is selected, having a program file count of 84. OnceVendor C bucket 408 is selected,screen display 500 ofFIG. 5 may be displayed onuser interface 172 providing information for all unknown program files on 60-80% of hosts that are associated with Vendor C and bucketed by a second (secondary) file attribute A2: product. Thus, the Vendor C grouping of program files represented by theVendor C bucket 408 is bucketed by specific products associated with the program files. Aproduct pie chart 502 displays the bucketing results with three product buckets:Product A bucket 504 having a count of 43,Product B bucket 506 having a count of 18, andProduct C bucket 508 having a count of 23. Each of the three product buckets represents a respective product grouping of program files. Options box 509 provides two options to the user:Option 1 allows the user to select a particular product bucket to further analyze the respective product grouping of program files, orOption 2 allows the user to select an action to be performed on all of the program files in the selected Vendor C grouping of program files. - From
screen display 500, a user may useinput mechanism 174 to select a particular product bucket (e.g., using a mouse to click on a bucket or pie slice corresponding to a particular product). In this example scenario,Product A bucket 504 is selected, having a program file count of 43. Once Product Abucket 504 is selected,screen display 600 ofFIG. 6 may be displayed onuser interface 172 providing information for all unknown program files on 60-80% of hosts, that are associated with Vendor C and Product A, and bucketed by a third (tertiary) file attribute A3: product version. Thus, the Product A grouping of program files represented byProduct A bucket 504 is bucketed by specific product versions associated with the program files. In this example scenario, productversion pie chart 602 displays the bucketing results with three product version buckets: Product Version 8.0bucket 604 having a count of 6, Product Version 9.0bucket 606 having a count of 13, and Product Version 10.0bucket 608 having a count of 24. Each of the three product version buckets represents a respective product version grouping of program files. Options box 609 provides two options to the user:Option 1 allows the user to select a particular product version bucket to further analyze the respective product version grouping of program files, orOption 2 allows the user to select an action to be performed on all of the program files in the selected Product A grouping of program files. - From
screen display 600, a user may useinput mechanism 174 to select a particular product version bucket (e.g., using a mouse to click on a bucket or pie slice corresponding to a particular product version). In this example scenario, the Product Version 8.0bucket 604 is selected, having a program file count of 6. In this example scenario, only three file attributes (i.e., vendor, product, and product version) are used to analyze and bucket the unknown program files. Therefore, once Product Version 8.0bucket 604 is selected,screen display 700 ofFIG. 7 may be displayed onuser interface 172 providing unique program file identifiers (e.g., hashes) for all unknown program files on 60-80% of hosts that are associated with Vendor C, Product A, and Product Version 8.0. Thus, a file identifier is determined for each program file in the Product Version 8.0 grouping of program files represented by Product Version 8.0bucket 604. Anidentifier list 702 of unique program file identifiers may be displayed with a correspondingcount list 704 of unique path counts for each program file identifier. Options box 709 provides two options to the user:Option 1 allows the user to select a particular unique file identifier to obtain further information about the program files associated with the selected unique program file identifier, orOption 2 allows the user to select an action to be performed on all of the program files in the selected Product Version 8.0 grouping of program files. - From
screen display 700, a user may useinput mechanism 174 to select a particular unique program file identifier (e.g., using a mouse to click on a particular program file identifier). In this example scenario, program file identifier 706 (i.e., Hash f3a643e085f00cbfc9251925e8e0affef34a9eef) is selected, and has a corresponding unique path count of 3. Onceprogram file identifier 706 is selected,screen display 800 ofFIG. 8 may be displayed onuser interface 172 providing unique program file paths associated withprogram file identifier 706, which is on 60-80% of hosts and associated with Vendor C, Product A, and Product Version 8.0. Apath list 802 of unique file paths may be displayed with acorresponding frequency list 804 indicating the frequency of each unique program file path found on hosts 110. Options box 809 provides two options to the user:Option 1 allows the user to select a particular unique file path to obtain further information about the program files associated with the selected unique file path, orOption 2 allows the user to select an action to be performed on all of the program files represented by the previously selected uniqueprogram file identifier 706. - From
screen display 800, a user may useinput mechanism 174 to select a particular unique file path (e.g., using a mouse to click on a particular program file path). In this example scenario, program file path 806 (i.e., C:\Program Files\Product A\VC\bin\link.exe) is selected, having a corresponding frequency count of 6. Once uniqueprogram file path 806 is selected,screen display 900 ofFIG. 9 may be displayed onuser interface 172 ofconsole 170 providing identification of unique hosts associated with uniqueprogram file path 806, which is on 60-80% of hosts and associated with Vendor C, Product A, Product Version 8.0, and uniqueprogram file identifier 706. Ahost list 902 of unique hosts may be displayed withcorresponding selection boxes 904. Options box 909 provides the user the ability to select an action to be performed and to select particular ones of the identified hosts by markingcorresponding selection boxes 904. The chosen action may be performed on the program files associated with the selected hosts, the selectedunique file path 806, and the selectedfile identifier 706. -
FIGS. 3-9 illustrate one embodiment of the processing flow ofsystem 100 for evaluating and remediating unknown program files, in which three file attributes (i.e., vendor, product, and product version) are used to successively group the program files of a selected frequency range. In other embodiments, however, the file attributes used for bucketing may include any intrinsic and/or extrinsic file attributes and any desired number, combination, and order of such file attributes. Thus, for example, two, three, four, or more file attributes may be used each time a selected set of program files is processed, and such file attributes could include either or both extrinsic and intrinsic attributes. In addition,system 100 can be configured to allow a user to select particular file attributes for grouping. For example, fromfrequency screen 300 and any subsequent file attribute screens (e.g., screens 400 through 600), another option may be provided for the user to select particular file attributes to use for grouping a selected bucket. While the system described herein includes processing in response to user selections,system 100 may also be configured to automatically select particular frequency and count buckets, providing the results of such processing to a user in the form of a screen display, a report, a file, and/or any other suitable mechanism for communication. - Although the embodiments described herein have referred to evaluating unknown program files, it will be apparent that other sets of program files (including known program files) may be evaluated and/or remediated using
system 100. For example, it may be useful to evaluate trusted (e.g., whitelisted) program files when trying to determine the pervasiveness of known safe software that is currently not licensed in a particular network. In another example,system 100 could be used to determine a metric indicating how uniformly the known or trusted software is distributed throughout a network, throughout a defined segment of a network, throughout a cluster of computers in a network, and the like. Finally, the options for managing or remediating selected groupings of program files, file identifiers, file paths and/or file hosts, as shown inFIGS. 3-9 , are for example purposes only. It will be appreciated that numerous other options, at least some of which are detailed herein in this Specification, may be provided in any combination with or exclusive of the options ofFIGS. 3-9 . - Software for achieving the grouping and managing operations outlined herein can be provided at various locations (e.g., the corporate IT headquarters, end user computers, distributed servers in the cloud, etc.). In some embodiments, this software could be received or downloaded from a web server (e.g., in the context of purchasing individual end-user licenses for separate networks, devices, servers, etc.) in order to provide this system for selectively grouping and managing program files. In one example implementation, this software is resident in one or more computers sought to be protected from a security attack (or protected from unwanted or unauthorized manipulations of data).
- In various embodiments, the software of the system for selectively grouping and managing program files in a computer network environment could involve a proprietary element (e.g., as part of a network security solution with McAfee® ePolicy Orchestrator (ePO) software, McAfee® Anti-Virus software, McAfee® HIPS software, McAfee® Application Control software, etc.), which could be provided in (or be proximate to) these identified elements, or be provided in any other device, server, network appliance, console, firewall, switch, information technology (IT) device, distributed server, etc., or be provided as a complementary solution (e.g., in conjunction with a firewall), or otherwise provisioned in the network.
- In certain example implementations, the grouping and managing activities outlined herein may be implemented in software. This could be inclusive of software provided in server 130 (e.g.,
program grouping module 150,remediation modules 160, etc.) and in other network elements (e.g., hosts 110) including program files to be grouped and managed. These elements and/or modules can cooperate with each other in order to perform the grouping and managing activities as discussed herein. In other embodiments, these features may be provided external to these elements, included in other devices to achieve these intended functionalities, or consolidated in any appropriate manner. For example, some of the processors associated with the various elements may be removed, or otherwise consolidated such that a single processor and a single memory location are responsible for certain activities. In a general sense, the arrangement depicted inFIG. 1 may be more logical in its representation, whereas a physical architecture may include various permutations, combinations, and/or hybrids of these elements. - In various embodiments, some or all of these elements (e.g.,
server 130, hosts 110) include software (or reciprocating software) that can coordinate, manage, or otherwise cooperate in order to achieve the grouping and managing operations, as outlined herein. One or more of these elements may include any suitable algorithms, hardware, software, components, modules, interfaces, or objects that facilitate the operations thereof. In the implementation involving software, such a configuration may be inclusive of logic encoded in one or more tangible media, which may be inclusive of non-transitory media (e.g., embedded logic provided in an application specific integrated circuit (ASIC), digital signal processor (DSP) instructions, software (potentially inclusive of object code and source code) to be executed by a processor, or other similar machine, etc.). - In some of these instances, one or more memory elements (e.g., memory 134) can store data used for the operations described herein. This includes the memory element being able to store software, logic, code, or processor instructions that are executed to carry out the activities described in this Specification. A processor can execute any type of instructions associated with the data to achieve the operations detailed herein in this Specification. In one example,
processor 132 could transform an element or an article (e.g., data) from one state or thing to another state or thing. In another example, the activities outlined herein may be implemented with fixed logic or programmable logic (e.g., software/computer instructions executed by a processor) and the elements identified herein could be some type of a programmable processor, programmable digital logic (e.g., a field programmable gate array (FPGA), an erasable programmable read only memory (EPROM), an electrically erasable programmable read only memory (EEPROM)), an ASIC that includes digital logic, software, code, electronic instructions, flash memory, optical disks, CD-ROMs, DVD ROMs, magnetic or optical cards, other types of machine-readable mediums suitable for storing electronic instructions, or any suitable combination thereof. - Any of the memory items discussed herein should be construed as being encompassed within the broad term ‘memory element.’ Similarly, any of the potential processing elements, modules, and machines described in this Specification should be construed as being encompassed within the broad term ‘processor.’ Each of the computers may also include suitable interfaces for receiving, transmitting, and/or otherwise communicating data or information in a network environment.
- Note that with the numerous examples provided herein, interaction may be described in terms of two, three, four, or more network elements. However, this has been done for purposes of clarity and example only. It should be appreciated that the system can be consolidated in any suitable manner. Along similar design alternatives, any of the illustrated computers, modules, components, and elements of
FIG. 1 may be combined in various possible configurations, all of which are clearly within the broad scope of this Specification. In certain cases, it may be easier to describe one or more of the functionalities of a given set of flows by only referencing a limited number of network elements. It should be appreciated that the system ofFIG. 1 (and its teachings) is readily scalable and can accommodate a large number of components, as well as more complicated/sophisticated arrangements and configurations. Accordingly, the examples provided should not limit the scope or inhibit the broad teachings ofsystem 100 as potentially applied to a myriad of other architectures. - It is also important to note that the operations described with reference to the preceding FIGURES illustrate only some of the possible scenarios that may be executed by, or within, the system. Some of these operations may be deleted or removed where appropriate, or these steps may be modified or changed considerably without departing from the scope of the discussed concepts. In addition, the timing of these operations may be altered considerably and still achieve the results taught in this disclosure. The preceding operational flows have been offered for purposes of example and discussion. Substantial flexibility is provided by the system in that any suitable arrangements, chronologies, configurations, and timing mechanisms may be provided without departing from the teachings of the discussed concepts.
Claims (21)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/792,015 US20150310091A1 (en) | 2011-01-24 | 2015-07-06 | System and method for selectively grouping and managing program files |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/012,138 US9075993B2 (en) | 2011-01-24 | 2011-01-24 | System and method for selectively grouping and managing program files |
US14/792,015 US20150310091A1 (en) | 2011-01-24 | 2015-07-06 | System and method for selectively grouping and managing program files |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/012,138 Continuation US9075993B2 (en) | 2011-01-24 | 2011-01-24 | System and method for selectively grouping and managing program files |
Publications (1)
Publication Number | Publication Date |
---|---|
US20150310091A1 true US20150310091A1 (en) | 2015-10-29 |
Family
ID=49158654
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/012,138 Active 2034-02-23 US9075993B2 (en) | 2011-01-24 | 2011-01-24 | System and method for selectively grouping and managing program files |
US14/792,015 Abandoned US20150310091A1 (en) | 2011-01-24 | 2015-07-06 | System and method for selectively grouping and managing program files |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/012,138 Active 2034-02-23 US9075993B2 (en) | 2011-01-24 | 2011-01-24 | System and method for selectively grouping and managing program files |
Country Status (1)
Country | Link |
---|---|
US (2) | US9075993B2 (en) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7856661B1 (en) | 2005-07-14 | 2010-12-21 | Mcafee, Inc. | Classification of software on networked systems |
US7757269B1 (en) | 2006-02-02 | 2010-07-13 | Mcafee, Inc. | Enforcing alignment of approved changes and deployed changes in the software change life-cycle |
US7895573B1 (en) | 2006-03-27 | 2011-02-22 | Mcafee, Inc. | Execution environment file inventory |
US9424154B2 (en) | 2007-01-10 | 2016-08-23 | Mcafee, Inc. | Method of and system for computer system state checks |
US8332929B1 (en) | 2007-01-10 | 2012-12-11 | Mcafee, Inc. | Method and apparatus for process enforced configuration management |
US8381284B2 (en) | 2009-08-21 | 2013-02-19 | Mcafee, Inc. | System and method for enforcing security policies in a virtual environment |
US8938800B2 (en) | 2010-07-28 | 2015-01-20 | Mcafee, Inc. | System and method for network level protection against malicious software |
US8925101B2 (en) | 2010-07-28 | 2014-12-30 | Mcafee, Inc. | System and method for local protection against malicious software |
US8549003B1 (en) | 2010-09-12 | 2013-10-01 | Mcafee, Inc. | System and method for clustering host inventories |
KR20120072120A (en) * | 2010-12-23 | 2012-07-03 | 한국전자통신연구원 | Method and apparatus for diagnosis of malicious file, method and apparatus for monitoring malicious file |
US9112830B2 (en) | 2011-02-23 | 2015-08-18 | Mcafee, Inc. | System and method for interlocking a host and a gateway |
US20130089849A1 (en) * | 2011-07-07 | 2013-04-11 | Alexander Nixon Huang | Wireless internet classroom environment (wice) |
US9594881B2 (en) | 2011-09-09 | 2017-03-14 | Mcafee, Inc. | System and method for passive threat detection using virtual memory inspection |
US9069586B2 (en) | 2011-10-13 | 2015-06-30 | Mcafee, Inc. | System and method for kernel rootkit protection in a hypervisor environment |
US8973144B2 (en) * | 2011-10-13 | 2015-03-03 | Mcafee, Inc. | System and method for kernel rootkit protection in a hypervisor environment |
US8713668B2 (en) | 2011-10-17 | 2014-04-29 | Mcafee, Inc. | System and method for redirected firewall discovery in a network environment |
US8800024B2 (en) | 2011-10-17 | 2014-08-05 | Mcafee, Inc. | System and method for host-initiated firewall discovery in a network environment |
US20150052164A1 (en) * | 2012-03-30 | 2015-02-19 | Hewlett-Packard Development Company L.P. | Associating an application with an application file |
US8739272B1 (en) | 2012-04-02 | 2014-05-27 | Mcafee, Inc. | System and method for interlocking a host and a gateway |
US8973146B2 (en) | 2012-12-27 | 2015-03-03 | Mcafee, Inc. | Herd based scan avoidance system in a network environment |
CA2899909A1 (en) * | 2013-01-15 | 2014-07-24 | Beyondtrust Software, Inc. | Systems and methods for identifying and reporting application and file vulnerabilities |
US9467465B2 (en) | 2013-02-25 | 2016-10-11 | Beyondtrust Software, Inc. | Systems and methods of risk based rules for application control |
KR102255952B1 (en) * | 2013-06-28 | 2021-05-25 | 삼성전자 주식회사 | Method And Apparatus For Updating Application |
US9578052B2 (en) | 2013-10-24 | 2017-02-21 | Mcafee, Inc. | Agent assisted malicious application blocking in a network environment |
US20150312270A1 (en) * | 2014-04-29 | 2015-10-29 | 1E Limited | Security controls |
JP6880962B2 (en) * | 2017-04-14 | 2021-06-02 | 富士通株式会社 | Program analyzer, program analysis method and analysis program |
US10977361B2 (en) | 2017-05-16 | 2021-04-13 | Beyondtrust Software, Inc. | Systems and methods for controlling privileged operations |
US10715545B2 (en) * | 2017-09-22 | 2020-07-14 | Microsoft Technology Licensing, Llc | Detection and identification of targeted attacks on a computing system |
GB2584018B (en) | 2019-04-26 | 2022-04-13 | Beyondtrust Software Inc | Root-level application selective configuration |
US11449608B2 (en) | 2019-10-14 | 2022-09-20 | Microsoft Technology Licensing, Llc | Computer security using context triggered piecewise hashing |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040189717A1 (en) * | 2003-03-27 | 2004-09-30 | Carli Conally | Intelligent drill-down for graphical user interface |
US20080172630A1 (en) * | 2006-09-08 | 2008-07-17 | Microsoft Corporation | Graphical representation of aggregated data |
US20100218256A1 (en) * | 2009-02-26 | 2010-08-26 | Network Security Systems plus, Inc. | System and method of integrating and managing information system assessments |
US20110126111A1 (en) * | 2009-11-20 | 2011-05-26 | Jasvir Singh Gill | Method And Apparatus For Risk Visualization and Remediation |
US20110214185A1 (en) * | 2001-10-25 | 2011-09-01 | Mcafee, Inc. | System and method for tracking computer viruses |
US20110231361A1 (en) * | 2009-12-31 | 2011-09-22 | Fiberlink Communications Corporation | Consolidated security application dashboard |
US8302194B2 (en) * | 2009-10-26 | 2012-10-30 | Symantec Corporation | Using file prevalence to inform aggressiveness of behavioral heuristics |
US8572007B1 (en) * | 2010-10-29 | 2013-10-29 | Symantec Corporation | Systems and methods for classifying unknown files/spam based on a user actions, a file's prevalence within a user community, and a predetermined prevalence threshold |
Family Cites Families (249)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4982430A (en) | 1985-04-24 | 1991-01-01 | General Instrument Corporation | Bootstrap channel security arrangement for communication network |
US4688169A (en) | 1985-05-30 | 1987-08-18 | Joshi Bhagirath S | Computer software security system |
US5155847A (en) | 1988-08-03 | 1992-10-13 | Minicom Data Corporation | Method and apparatus for updating software at remote locations |
US5560008A (en) | 1989-05-15 | 1996-09-24 | International Business Machines Corporation | Remote authentication and authorization in a distributed data processing system |
CA2010591C (en) | 1989-10-20 | 1999-01-26 | Phillip M. Adams | Kernels, description tables and device drivers |
US5222134A (en) | 1990-11-07 | 1993-06-22 | Tau Systems Corporation | Secure system for activating personal computer software at remote locations |
US5390314A (en) | 1992-10-09 | 1995-02-14 | American Airlines, Inc. | Method and apparatus for developing scripts that access mainframe resources that can be executed on various computer systems having different interface languages without modification |
US5339261A (en) | 1992-10-22 | 1994-08-16 | Base 10 Systems, Inc. | System for operating application software in a safety critical environment |
US5584009A (en) | 1993-10-18 | 1996-12-10 | Cyrix Corporation | System and method of retiring store data from a write buffer |
JP3042341B2 (en) | 1994-11-30 | 2000-05-15 | 日本電気株式会社 | Local I / O Control Method for Cluster-Coupled Multiprocessor System |
US6282712B1 (en) | 1995-03-10 | 2001-08-28 | Microsoft Corporation | Automatic software installation on heterogeneous networked computer systems |
US5699513A (en) | 1995-03-31 | 1997-12-16 | Motorola, Inc. | Method for secure network access via message intercept |
US5787427A (en) | 1996-01-03 | 1998-07-28 | International Business Machines Corporation | Information handling system, method, and article of manufacture for efficient object security processing by grouping objects sharing common control access policies |
US5842017A (en) | 1996-01-29 | 1998-11-24 | Digital Equipment Corporation | Method and apparatus for forming a translation unit |
US5907709A (en) | 1996-02-08 | 1999-05-25 | Inprise Corporation | Development system with methods for detecting invalid use and management of resources and memory at runtime |
US5907708A (en) | 1996-06-03 | 1999-05-25 | Sun Microsystems, Inc. | System and method for facilitating avoidance of an exception of a predetermined type in a digital computer system by providing fix-up code for an instruction in response to detection of an exception condition resulting from execution thereof |
US5787177A (en) | 1996-08-01 | 1998-07-28 | Harris Corporation | Integrated network security access control system |
US5926832A (en) | 1996-09-26 | 1999-07-20 | Transmeta Corporation | Method and apparatus for aliasing memory data in an advanced microprocessor |
US5991881A (en) | 1996-11-08 | 1999-11-23 | Harris Corporation | Network surveillance system |
US5987611A (en) | 1996-12-31 | 1999-11-16 | Zone Labs, Inc. | System and methodology for managing internet access on a per application basis for client computers connected to the internet |
US6141698A (en) | 1997-01-29 | 2000-10-31 | Network Commerce Inc. | Method and system for injecting new code into existing application code |
US6587877B1 (en) | 1997-03-25 | 2003-07-01 | Lucent Technologies Inc. | Management of time and expense when communicating between a host and a communication network |
US6192475B1 (en) | 1997-03-31 | 2001-02-20 | David R. Wallace | System and method for cloaking software |
US6167522A (en) | 1997-04-01 | 2000-12-26 | Sun Microsystems, Inc. | Method and apparatus for providing security for servers executing application programs received via a network |
US6356957B2 (en) | 1997-04-03 | 2002-03-12 | Hewlett-Packard Company | Method for emulating native object oriented foundation classes on a target object oriented programming system using a template library |
US6073142A (en) | 1997-06-23 | 2000-06-06 | Park City Group | Automated post office based rule analysis of e-mail messages and other data objects for controlled distribution in network environments |
US6275938B1 (en) | 1997-08-28 | 2001-08-14 | Microsoft Corporation | Security enhancement for untrusted executable code |
US6192401B1 (en) | 1997-10-21 | 2001-02-20 | Sun Microsystems, Inc. | System and method for determining cluster membership in a heterogeneous distributed system |
US6393465B2 (en) | 1997-11-25 | 2002-05-21 | Nixmail Corporation | Junk electronic mail detector and eliminator |
US5987610A (en) | 1998-02-12 | 1999-11-16 | Ameritech Corporation | Computer virus screening methods and systems |
EP0994427A4 (en) | 1998-05-06 | 2004-03-24 | Matsushita Electric Ind Co Ltd | Method and system for digital data transmission/reception |
US6795966B1 (en) | 1998-05-15 | 2004-09-21 | Vmware, Inc. | Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction |
US6442686B1 (en) | 1998-07-02 | 2002-08-27 | Networks Associates Technology, Inc. | System and methodology for messaging server-based management and enforcement of crypto policies |
US6338149B1 (en) | 1998-07-31 | 2002-01-08 | Westinghouse Electric Company Llc | Change monitoring system for a computer system |
US6546425B1 (en) | 1998-10-09 | 2003-04-08 | Netmotion Wireless, Inc. | Method and apparatus for providing mobile and other intermittent connectivity in a computing environment |
JP3753873B2 (en) | 1998-11-11 | 2006-03-08 | 株式会社島津製作所 | Spectrophotometer |
US6969352B2 (en) | 1999-06-22 | 2005-11-29 | Teratech Corporation | Ultrasound probe with integrated electronics |
US6453468B1 (en) | 1999-06-30 | 2002-09-17 | B-Hub, Inc. | Methods for improving reliability while upgrading software programs in a clustered computer system |
US6567857B1 (en) | 1999-07-29 | 2003-05-20 | Sun Microsystems, Inc. | Method and apparatus for dynamic proxy insertion in network traffic flow |
US6256773B1 (en) | 1999-08-31 | 2001-07-03 | Accenture Llp | System, method and article of manufacture for configuration management in a development architecture framework |
US6990591B1 (en) | 1999-11-18 | 2006-01-24 | Secureworks, Inc. | Method and system for remotely configuring and monitoring a communication device |
US6321267B1 (en) | 1999-11-23 | 2001-11-20 | Escom Corporation | Method and apparatus for filtering junk email |
US6662219B1 (en) | 1999-12-15 | 2003-12-09 | Microsoft Corporation | System for determining at subgroup of nodes relative weight to represent cluster by obtaining exclusive possession of quorum resource |
US6460050B1 (en) | 1999-12-22 | 2002-10-01 | Mark Raymond Pace | Distributed content identification system |
US6769008B1 (en) | 2000-01-10 | 2004-07-27 | Sun Microsystems, Inc. | Method and apparatus for dynamically altering configurations of clustered computer systems |
WO2001069439A1 (en) | 2000-03-17 | 2001-09-20 | Filesx Ltd. | Accelerating responses to requests made by users to an internet |
US6748534B1 (en) | 2000-03-31 | 2004-06-08 | Networks Associates, Inc. | System and method for partitioned distributed scanning of a large dataset for viruses and other malware |
CA2305078A1 (en) | 2000-04-12 | 2001-10-12 | Cloakware Corporation | Tamper resistant software - mass data encoding |
US7325127B2 (en) | 2000-04-25 | 2008-01-29 | Secure Data In Motion, Inc. | Security server system |
EP1277326A2 (en) | 2000-04-28 | 2003-01-22 | Internet Security Systems, Inc. | Method and system for managing computer security information |
US6769115B1 (en) | 2000-05-01 | 2004-07-27 | Emc Corporation | Adaptive interface for a software development environment |
US6847993B1 (en) | 2000-05-31 | 2005-01-25 | International Business Machines Corporation | Method, system and program products for managing cluster configurations |
US6934755B1 (en) | 2000-06-02 | 2005-08-23 | Sun Microsystems, Inc. | System and method for migrating processes on a network |
US6611925B1 (en) | 2000-06-13 | 2003-08-26 | Networks Associates Technology, Inc. | Single point of entry/origination item scanning within an enterprise or workgroup |
US6901519B1 (en) | 2000-06-22 | 2005-05-31 | Infobahn, Inc. | E-mail virus protection system and method |
US8204999B2 (en) | 2000-07-10 | 2012-06-19 | Oracle International Corporation | Query string processing |
US7093239B1 (en) | 2000-07-14 | 2006-08-15 | Internet Security Systems, Inc. | Computer immune system and method for detecting unwanted code in a computer system |
US7350204B2 (en) | 2000-07-24 | 2008-03-25 | Microsoft Corporation | Policies for secure software execution |
US7441265B2 (en) | 2000-08-04 | 2008-10-21 | Prismtech Gmbh | Method and system for session based authorization and access control for networked application objects |
US7707305B2 (en) | 2000-10-17 | 2010-04-27 | Cisco Technology, Inc. | Methods and apparatus for protecting against overload conditions on nodes of a distributed network |
US7606898B1 (en) | 2000-10-24 | 2009-10-20 | Microsoft Corporation | System and method for distributed management of shared computers |
US7146305B2 (en) | 2000-10-24 | 2006-12-05 | Vcis, Inc. | Analytical virtual machine |
US6930985B1 (en) | 2000-10-26 | 2005-08-16 | Extreme Networks, Inc. | Method and apparatus for management of configuration in a network |
US6834301B1 (en) | 2000-11-08 | 2004-12-21 | Networks Associates Technology, Inc. | System and method for configuration, management, and monitoring of a computer network using inheritance |
US6766334B1 (en) | 2000-11-21 | 2004-07-20 | Microsoft Corporation | Project-based configuration management method and apparatus |
US20020069367A1 (en) | 2000-12-06 | 2002-06-06 | Glen Tindal | Network operating system data directory |
US6907600B2 (en) | 2000-12-27 | 2005-06-14 | Intel Corporation | Virtual translation lookaside buffer |
JP2002244898A (en) | 2001-02-19 | 2002-08-30 | Hitachi Ltd | Database managing program and database system |
US6918110B2 (en) | 2001-04-11 | 2005-07-12 | Hewlett-Packard Development Company, L.P. | Dynamic instrumentation of an executable program by means of causing a breakpoint at the entry point of a function and providing instrumentation code |
US6988101B2 (en) | 2001-05-31 | 2006-01-17 | International Business Machines Corporation | Method, system, and computer program product for providing an extensible file system for accessing a foreign file system from a local data processing system |
US6715050B2 (en) | 2001-05-31 | 2004-03-30 | Oracle International Corporation | Storage access keys |
US6988124B2 (en) | 2001-06-06 | 2006-01-17 | Microsoft Corporation | Locating potentially identical objects across multiple computers based on stochastic partitioning of workload |
US7290266B2 (en) | 2001-06-14 | 2007-10-30 | Cisco Technology, Inc. | Access control by a real-time stateful reference monitor with a state collection training mode and a lockdown mode for detecting predetermined patterns of events indicative of requests for operating system resources resulting in a decision to allow or block activity identified in a sequence of events based on a rule set defining a processing policy |
US7065767B2 (en) | 2001-06-29 | 2006-06-20 | Intel Corporation | Managed hosting server auditing and change tracking |
US7069330B1 (en) | 2001-07-05 | 2006-06-27 | Mcafee, Inc. | Control of interaction between client computer applications and network resources |
US20030023736A1 (en) | 2001-07-12 | 2003-01-30 | Kurt Abkemeier | Method and system for filtering messages |
US20030014667A1 (en) | 2001-07-16 | 2003-01-16 | Andrei Kolichtchak | Buffer overflow attack detection and suppression |
US6877088B2 (en) | 2001-08-08 | 2005-04-05 | Sun Microsystems, Inc. | Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition |
US7007302B1 (en) | 2001-08-31 | 2006-02-28 | Mcafee, Inc. | Efficient management and blocking of malicious code and hacking attempts in a network environment |
US7010796B1 (en) | 2001-09-28 | 2006-03-07 | Emc Corporation | Methods and apparatus providing remote operation of an application programming interface |
US7177267B2 (en) | 2001-11-09 | 2007-02-13 | Adc Dsl Systems, Inc. | Hardware monitoring and configuration management |
US7346781B2 (en) | 2001-12-06 | 2008-03-18 | Mcafee, Inc. | Initiating execution of a computer program from an encrypted version of a computer program |
US7159036B2 (en) | 2001-12-10 | 2007-01-02 | Mcafee, Inc. | Updating data from a source computer to groups of destination computers |
US7039949B2 (en) | 2001-12-10 | 2006-05-02 | Brian Ross Cartmell | Method and system for blocking unwanted communications |
US10033700B2 (en) | 2001-12-12 | 2018-07-24 | Intellectual Ventures I Llc | Dynamic evaluation of access rights |
US7690023B2 (en) | 2001-12-13 | 2010-03-30 | Japan Science And Technology Agency | Software safety execution system |
US7398389B2 (en) | 2001-12-20 | 2008-07-08 | Coretrace Corporation | Kernel-based network security infrastructure |
JP3906356B2 (en) | 2001-12-27 | 2007-04-18 | 独立行政法人情報通信研究機構 | Syntax analysis method and apparatus |
US7743415B2 (en) | 2002-01-31 | 2010-06-22 | Riverbed Technology, Inc. | Denial of service attacks characterization |
US20030167399A1 (en) | 2002-03-01 | 2003-09-04 | Yves Audebert | Method and system for performing post issuance configuration and data changes to a personal security device using a communications pipe |
US6941449B2 (en) | 2002-03-04 | 2005-09-06 | Hewlett-Packard Development Company, L.P. | Method and apparatus for performing critical tasks using speculative operations |
US7600021B2 (en) | 2002-04-03 | 2009-10-06 | Microsoft Corporation | Delta replication of source files and packages across networked resources |
US20070253430A1 (en) | 2002-04-23 | 2007-11-01 | Minami John S | Gigabit Ethernet Adapter |
US7370360B2 (en) | 2002-05-13 | 2008-05-06 | International Business Machines Corporation | Computer immune system and method for detecting unwanted code in a P-code or partially compiled native-code program executing within a virtual machine |
US20030221190A1 (en) | 2002-05-22 | 2003-11-27 | Sun Microsystems, Inc. | System and method for performing patch installation on multiple devices |
US7823148B2 (en) | 2002-05-22 | 2010-10-26 | Oracle America, Inc. | System and method for performing patch installation via a graphical user interface |
US7024404B1 (en) | 2002-05-28 | 2006-04-04 | The State University Rutgers | Retrieval and display of data objects using a cross-group ranking metric |
US7512977B2 (en) | 2003-06-11 | 2009-03-31 | Symantec Corporation | Intrustion protection system utilizing layers |
US7823203B2 (en) | 2002-06-17 | 2010-10-26 | At&T Intellectual Property Ii, L.P. | Method and device for detecting computer network intrusions |
US7139916B2 (en) | 2002-06-28 | 2006-11-21 | Ebay, Inc. | Method and system for monitoring user interaction with a computer |
US8924484B2 (en) | 2002-07-16 | 2014-12-30 | Sonicwall, Inc. | Active e-mail filter with challenge-response |
US7522906B2 (en) | 2002-08-09 | 2009-04-21 | Wavelink Corporation | Mobile unit configuration management for WLANs |
US7624347B2 (en) | 2002-09-17 | 2009-11-24 | At&T Intellectual Property I, L.P. | System and method for forwarding full header information in email messages |
US7546333B2 (en) | 2002-10-23 | 2009-06-09 | Netapp, Inc. | Methods and systems for predictive change management for access paths in networks |
US7353501B2 (en) | 2002-11-18 | 2008-04-01 | Microsoft Corporation | Generic wrapper scheme |
US7865931B1 (en) | 2002-11-25 | 2011-01-04 | Accenture Global Services Limited | Universal authorization and access control security measure for applications |
US20040143749A1 (en) | 2003-01-16 | 2004-07-22 | Platformlogic, Inc. | Behavior-based host-based intrusion prevention system |
US20040167906A1 (en) | 2003-02-25 | 2004-08-26 | Smith Randolph C. | System consolidation tool and method for patching multiple servers |
US7024548B1 (en) | 2003-03-10 | 2006-04-04 | Cisco Technology, Inc. | Methods and apparatus for auditing and tracking changes to an existing configuration of a computerized device |
US7529754B2 (en) | 2003-03-14 | 2009-05-05 | Websense, Inc. | System and method of monitoring and controlling application files |
WO2004095285A1 (en) | 2003-03-28 | 2004-11-04 | Matsushita Electric Industrial Co.,Ltd. | Recording medium, recording device using the same, and reproduction device |
US7607010B2 (en) | 2003-04-12 | 2009-10-20 | Deep Nines, Inc. | System and method for network edge data protection |
US20050108516A1 (en) | 2003-04-17 | 2005-05-19 | Robert Balzer | By-pass and tampering protection for application wrappers |
US20040230963A1 (en) | 2003-05-12 | 2004-11-18 | Rothman Michael A. | Method for updating firmware in an operating system agnostic manner |
DE10324189A1 (en) | 2003-05-28 | 2004-12-16 | Robert Bosch Gmbh | Method for controlling access to a resource of an application in a data processing device |
US7657599B2 (en) | 2003-05-29 | 2010-02-02 | Mindshare Design, Inc. | Systems and methods for automatically updating electronic mail access lists |
US20050108562A1 (en) | 2003-06-18 | 2005-05-19 | Khazan Roger I. | Technique for detecting executable malicious code using a combination of static and dynamic analyses |
US7283517B2 (en) | 2003-07-22 | 2007-10-16 | Innomedia Pte | Stand alone multi-media terminal adapter with network address translation and port partitioning |
US7886093B1 (en) | 2003-07-31 | 2011-02-08 | Hewlett-Packard Development Company, L.P. | Electronic device network supporting compression and decompression in electronic devices |
US7464408B1 (en) | 2003-08-29 | 2008-12-09 | Solidcore Systems, Inc. | Damage containment by translation |
US8539063B1 (en) | 2003-08-29 | 2013-09-17 | Mcafee, Inc. | Method and system for containment of networked application client software by explicit human input |
US7577995B2 (en) | 2003-09-16 | 2009-08-18 | At&T Intellectual Property I, L.P. | Controlling user-access to computer applications |
US20050114672A1 (en) | 2003-11-20 | 2005-05-26 | Encryptx Corporation | Data rights management of digital information in a portable software permission wrapper |
US7600219B2 (en) | 2003-12-10 | 2009-10-06 | Sap Ag | Method and system to monitor software interface updates and assess backward compatibility |
US7546594B2 (en) | 2003-12-15 | 2009-06-09 | Microsoft Corporation | System and method for updating installation components using an installation component delta patch in a networked environment |
US7840968B1 (en) | 2003-12-17 | 2010-11-23 | Mcafee, Inc. | Method and system for containment of usage of language interfaces |
US7272654B1 (en) | 2004-03-04 | 2007-09-18 | Sandbox Networks, Inc. | Virtualizing network-attached-storage (NAS) with a compact table that stores lossy hashes of file names and parent handles rather than full names |
US7783735B1 (en) | 2004-03-22 | 2010-08-24 | Mcafee, Inc. | Containment of network communication |
WO2005099342A2 (en) | 2004-04-19 | 2005-10-27 | Securewave S.A. | A generic framework for runtime interception and execution control of interpreted languages |
US7890946B2 (en) | 2004-05-11 | 2011-02-15 | Microsoft Corporation | Efficient patching |
US20060004875A1 (en) | 2004-05-11 | 2006-01-05 | Microsoft Corporation | CMDB schema |
US7818377B2 (en) | 2004-05-24 | 2010-10-19 | Microsoft Corporation | Extended message rule architecture |
DE602005018213D1 (en) | 2004-05-24 | 2010-01-21 | Computer Ass Think Inc | SYSTEM AND METHOD FOR AUTOMATIC CONFIGURATION OF A MOBILE DEVICE |
US7506170B2 (en) | 2004-05-28 | 2009-03-17 | Microsoft Corporation | Method for secure access to multiple secure networks |
US20050273858A1 (en) | 2004-06-07 | 2005-12-08 | Erez Zadok | Stackable file systems and methods thereof |
JP4341517B2 (en) | 2004-06-21 | 2009-10-07 | 日本電気株式会社 | Security policy management system, security policy management method and program |
US20050289538A1 (en) | 2004-06-23 | 2005-12-29 | International Business Machines Corporation | Deploying an application software on a virtual deployment target |
US7203864B2 (en) | 2004-06-25 | 2007-04-10 | Hewlett-Packard Development Company, L.P. | Method and system for clustering computers into peer groups and comparing individual computers to their peers |
US7908653B2 (en) | 2004-06-29 | 2011-03-15 | Intel Corporation | Method of improving computer security through sandboxing |
US20060015501A1 (en) | 2004-07-19 | 2006-01-19 | International Business Machines Corporation | System, method and program product to determine a time interval at which to check conditions to permit access to a file |
US7937455B2 (en) | 2004-07-28 | 2011-05-03 | Oracle International Corporation | Methods and systems for modifying nodes in a cluster environment |
US7703090B2 (en) | 2004-08-31 | 2010-04-20 | Microsoft Corporation | Patch un-installation |
US7873955B1 (en) | 2004-09-07 | 2011-01-18 | Mcafee, Inc. | Solidifying the executable software set of a computer |
US7506364B2 (en) | 2004-10-01 | 2009-03-17 | Microsoft Corporation | Integrated access authorization |
US20060080656A1 (en) | 2004-10-12 | 2006-04-13 | Microsoft Corporation | Methods and instructions for patch management |
US9329905B2 (en) | 2004-10-15 | 2016-05-03 | Emc Corporation | Method and apparatus for configuring, monitoring and/or managing resource groups including a virtual machine |
US7765538B2 (en) | 2004-10-29 | 2010-07-27 | Hewlett-Packard Development Company, L.P. | Method and apparatus for determining which program patches to recommend for installation |
US20060101277A1 (en) | 2004-11-10 | 2006-05-11 | Meenan Patrick A | Detecting and remedying unauthorized computer programs |
WO2006101549A2 (en) | 2004-12-03 | 2006-09-28 | Whitecell Software, Inc. | Secure system for allowing the execution of authorized computer program code |
US7765544B2 (en) | 2004-12-17 | 2010-07-27 | Intel Corporation | Method, apparatus and system for improving security in a virtual machine host |
US8479193B2 (en) | 2004-12-17 | 2013-07-02 | Intel Corporation | Method, apparatus and system for enhancing the usability of virtual machines |
US7607170B2 (en) | 2004-12-22 | 2009-10-20 | Radware Ltd. | Stateful attack protection |
US7302558B2 (en) | 2005-01-25 | 2007-11-27 | Goldman Sachs & Co. | Systems and methods to facilitate the creation and configuration management of computing systems |
US20130247027A1 (en) | 2005-02-16 | 2013-09-19 | Solidcore Systems, Inc. | Distribution and installation of solidified software on a computer |
US8056138B2 (en) | 2005-02-26 | 2011-11-08 | International Business Machines Corporation | System, method, and service for detecting improper manipulation of an application |
US7836504B2 (en) | 2005-03-01 | 2010-11-16 | Microsoft Corporation | On-access scan of memory for malware |
US7685635B2 (en) | 2005-03-11 | 2010-03-23 | Microsoft Corporation | Systems and methods for multi-level intercept processing in a virtual machine environment |
TW200707417A (en) | 2005-03-18 | 2007-02-16 | Sony Corp | Reproducing apparatus, reproducing method, program, program storage medium, data delivery system, data structure, and manufacturing method of recording medium |
US7552479B1 (en) | 2005-03-22 | 2009-06-23 | Symantec Corporation | Detecting shellcode that modifies IAT entries |
US7770151B2 (en) | 2005-04-07 | 2010-08-03 | International Business Machines Corporation | Automatic generation of solution deployment descriptors |
US7349931B2 (en) | 2005-04-14 | 2008-03-25 | Webroot Software, Inc. | System and method for scanning obfuscated files for pestware |
US8590044B2 (en) | 2005-04-14 | 2013-11-19 | International Business Machines Corporation | Selective virus scanning system and method |
US7603552B1 (en) | 2005-05-04 | 2009-10-13 | Mcafee, Inc. | Piracy prevention using unique module translation |
US7363463B2 (en) | 2005-05-13 | 2008-04-22 | Microsoft Corporation | Method and system for caching address translations from multiple address spaces in virtual machines |
WO2006137057A2 (en) | 2005-06-21 | 2006-12-28 | Onigma Ltd. | A method and a system for providing comprehensive protection against leakage of sensitive information assets using host based agents, content- meta-data and rules-based policies |
US8839450B2 (en) | 2007-08-02 | 2014-09-16 | Intel Corporation | Secure vault service for software components within an execution environment |
US7739721B2 (en) | 2005-07-11 | 2010-06-15 | Microsoft Corporation | Per-user and system granular audit policy implementation |
US7856661B1 (en) | 2005-07-14 | 2010-12-21 | Mcafee, Inc. | Classification of software on networked systems |
US7895651B2 (en) | 2005-07-29 | 2011-02-22 | Bit 9, Inc. | Content tracking in a network security system |
US7962616B2 (en) | 2005-08-11 | 2011-06-14 | Micro Focus (Us), Inc. | Real-time activity monitoring and reporting |
US8327353B2 (en) | 2005-08-30 | 2012-12-04 | Microsoft Corporation | Hierarchical virtualization with a multi-level virtualization mechanism |
US7340574B2 (en) | 2005-08-30 | 2008-03-04 | Rockwell Automation Technologies, Inc. | Method and apparatus for synchronizing an industrial controller with a redundant controller |
US20070074199A1 (en) | 2005-09-27 | 2007-03-29 | Sebastian Schoenberg | Method and apparatus for delivering microcode updates through virtual machine operations |
US8131825B2 (en) | 2005-10-07 | 2012-03-06 | Citrix Systems, Inc. | Method and a system for responding locally to requests for file metadata associated with files stored remotely |
US7725737B2 (en) | 2005-10-14 | 2010-05-25 | Check Point Software Technologies, Inc. | System and methodology providing secure workspace environment |
US20070169079A1 (en) | 2005-11-08 | 2007-07-19 | Microsoft Corporation | Software update management |
US7836303B2 (en) | 2005-12-09 | 2010-11-16 | University Of Washington | Web browser operating system |
US7856538B2 (en) | 2005-12-12 | 2010-12-21 | Systex, Inc. | Methods, systems and computer readable medium for detecting memory overflow conditions |
US20070143851A1 (en) | 2005-12-21 | 2007-06-21 | Fiberlink | Method and systems for controlling access to computing resources based on known security vulnerabilities |
US20070174429A1 (en) | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
US7757269B1 (en) | 2006-02-02 | 2010-07-13 | Mcafee, Inc. | Enforcing alignment of approved changes and deployed changes in the software change life-cycle |
WO2007099273A1 (en) | 2006-03-03 | 2007-09-07 | Arm Limited | Monitoring values of signals within an integrated circuit |
US8621433B2 (en) | 2006-03-20 | 2013-12-31 | Microsoft Corporation | Managing version information for software components |
US7895573B1 (en) | 2006-03-27 | 2011-02-22 | Mcafee, Inc. | Execution environment file inventory |
US7752233B2 (en) | 2006-03-29 | 2010-07-06 | Massachusetts Institute Of Technology | Techniques for clustering a set of objects |
US7870387B1 (en) | 2006-04-07 | 2011-01-11 | Mcafee, Inc. | Program-based authorization |
US8015563B2 (en) | 2006-04-14 | 2011-09-06 | Microsoft Corporation | Managing virtual machines with system-wide policies |
US7966659B1 (en) | 2006-04-18 | 2011-06-21 | Rockwell Automation Technologies, Inc. | Distributed learn mode for configuring a firewall, security authority, intrusion detection/prevention devices, and the like |
US8352930B1 (en) | 2006-04-24 | 2013-01-08 | Mcafee, Inc. | Software modification by group to minimize breakage |
US8458673B2 (en) | 2006-04-26 | 2013-06-04 | Flexera Software Llc | Computer-implemented method and system for binding digital rights management executable code to a software application |
US7849507B1 (en) | 2006-04-29 | 2010-12-07 | Ironport Systems, Inc. | Apparatus for filtering server responses |
US8555404B1 (en) | 2006-05-18 | 2013-10-08 | Mcafee, Inc. | Connectivity-based authorization |
US8291409B2 (en) | 2006-05-22 | 2012-10-16 | Microsoft Corporation | Updating virtual machine with patch on host that does not have network access |
US7937334B2 (en) | 2006-05-31 | 2011-05-03 | Lockheed Martin Corporation | System and method for defining normal operating regions and identifying anomalous behavior of units within a fleet, operating in a complex, dynamic environment |
US7761912B2 (en) | 2006-06-06 | 2010-07-20 | Microsoft Corporation | Reputation driven firewall |
US7809704B2 (en) | 2006-06-15 | 2010-10-05 | Microsoft Corporation | Combining spectral and probabilistic clustering |
US20070300215A1 (en) | 2006-06-26 | 2007-12-27 | Bardsley Jeffrey S | Methods, systems, and computer program products for obtaining and utilizing a score indicative of an overall performance effect of a software update on a software host |
US8468526B2 (en) | 2006-06-30 | 2013-06-18 | Intel Corporation | Concurrent thread execution using user-level asynchronous signaling |
US8365294B2 (en) | 2006-06-30 | 2013-01-29 | Intel Corporation | Hardware platform authentication and multi-platform validation |
US8572721B2 (en) | 2006-08-03 | 2013-10-29 | Citrix Systems, Inc. | Methods and systems for routing packets in a VPN-client-to-VPN-client connection via an SSL/VPN network appliance |
US8015388B1 (en) | 2006-08-04 | 2011-09-06 | Vmware, Inc. | Bypassing guest page table walk for shadow page table entries not present in guest page table |
US8161475B2 (en) | 2006-09-29 | 2012-04-17 | Microsoft Corporation | Automatic load and balancing for virtual machines to meet resource requirements |
US9697019B1 (en) | 2006-10-17 | 2017-07-04 | Manageiq, Inc. | Adapt a virtual machine to comply with system enforced policies and derive an optimized variant of the adapted virtual machine |
US7689817B2 (en) | 2006-11-16 | 2010-03-30 | Intel Corporation | Methods and apparatus for defeating malware |
US8091127B2 (en) | 2006-12-11 | 2012-01-03 | International Business Machines Corporation | Heuristic malware detection |
US8336046B2 (en) | 2006-12-29 | 2012-12-18 | Intel Corporation | Dynamic VM cloning on request from application based on mapping of virtual hardware configuration to the identified physical hardware resources |
US7996836B1 (en) | 2006-12-29 | 2011-08-09 | Symantec Corporation | Using a hypervisor to provide computer security |
US8381209B2 (en) | 2007-01-03 | 2013-02-19 | International Business Machines Corporation | Moveable access control list (ACL) mechanisms for hypervisors and virtual machines and virtual port firewalls |
US8254568B2 (en) | 2007-01-07 | 2012-08-28 | Apple Inc. | Secure booting a computing device |
US8332929B1 (en) | 2007-01-10 | 2012-12-11 | Mcafee, Inc. | Method and apparatus for process enforced configuration management |
US9424154B2 (en) | 2007-01-10 | 2016-08-23 | Mcafee, Inc. | Method of and system for computer system state checks |
US8380987B2 (en) | 2007-01-25 | 2013-02-19 | Microsoft Corporation | Protection agents and privilege modes |
US8276201B2 (en) | 2007-03-22 | 2012-09-25 | International Business Machines Corporation | Integrity protection in data processing systems |
US7930327B2 (en) | 2007-05-21 | 2011-04-19 | International Business Machines Corporation | Method and apparatus for obtaining the absolute path name of an open file system object from its file descriptor |
US20080301770A1 (en) | 2007-05-31 | 2008-12-04 | Kinder Nathan G | Identity based virtual machine selector |
US20090007100A1 (en) | 2007-06-28 | 2009-01-01 | Microsoft Corporation | Suspending a Running Operating System to Enable Security Scanning |
US8763115B2 (en) | 2007-08-08 | 2014-06-24 | Vmware, Inc. | Impeding progress of malicious guest software |
US20090138480A1 (en) | 2007-08-29 | 2009-05-28 | Chatley Scott P | Filing system and method for data files stored in a distributed communications network |
US8250641B2 (en) | 2007-09-17 | 2012-08-21 | Intel Corporation | Method and apparatus for dynamic switching and real time security control on virtualized systems |
US20090113111A1 (en) | 2007-10-30 | 2009-04-30 | Vmware, Inc. | Secure identification of execution contexts |
US8195931B1 (en) | 2007-10-31 | 2012-06-05 | Mcafee, Inc. | Application change control |
JP5238235B2 (en) | 2007-12-07 | 2013-07-17 | 株式会社日立製作所 | Management apparatus and management method |
US20130276111A1 (en) * | 2008-01-24 | 2013-10-17 | Gaith S. Taha | System, method, and computer program product for providing at least one statistic associated with a potentially unwanted activity to a user |
US8515075B1 (en) | 2008-01-31 | 2013-08-20 | Mcafee, Inc. | Method of and system for malicious software detection using critical address space protection |
US8146147B2 (en) | 2008-03-27 | 2012-03-27 | Juniper Networks, Inc. | Combined firewalls |
US8321931B2 (en) | 2008-03-31 | 2012-11-27 | Intel Corporation | Method and apparatus for sequential hypervisor invocation |
US8615502B2 (en) | 2008-04-18 | 2013-12-24 | Mcafee, Inc. | Method of and system for reverse mapping vnode pointers |
US8132091B2 (en) | 2008-08-07 | 2012-03-06 | Serge Nabutovsky | Link exchange system and method |
US8065714B2 (en) | 2008-09-12 | 2011-11-22 | Hytrust, Inc. | Methods and systems for securely managing virtualization platform |
US8196203B2 (en) * | 2008-09-25 | 2012-06-05 | Symantec Corporation | Method and apparatus for determining software trustworthiness |
US9141381B2 (en) | 2008-10-27 | 2015-09-22 | Vmware, Inc. | Version control environment for virtual machines |
US8544003B1 (en) | 2008-12-11 | 2013-09-24 | Mcafee, Inc. | System and method for managing virtual machine configurations |
US8291497B1 (en) * | 2009-03-20 | 2012-10-16 | Symantec Corporation | Systems and methods for byte-level context diversity-based automatic malware signature generation |
US8060722B2 (en) | 2009-03-27 | 2011-11-15 | Vmware, Inc. | Hardware assistance for shadow page table coherence with guest page mappings |
US8359422B2 (en) | 2009-06-26 | 2013-01-22 | Vmware, Inc. | System and method to reduce trace faults in software MMU virtualization |
US8341627B2 (en) | 2009-08-21 | 2012-12-25 | Mcafee, Inc. | Method and system for providing user space address protection from writable memory area in a virtual environment |
US8381284B2 (en) | 2009-08-21 | 2013-02-19 | Mcafee, Inc. | System and method for enforcing security policies in a virtual environment |
US8306988B1 (en) * | 2009-10-26 | 2012-11-06 | Mcafee, Inc. | System, method, and computer program product for segmenting a database based, at least in part, on a prevalence associated with known objects included in the database |
US9552497B2 (en) | 2009-11-10 | 2017-01-24 | Mcafee, Inc. | System and method for preventing data loss using virtual machine wrapped applications |
US8621233B1 (en) * | 2010-01-13 | 2013-12-31 | Symantec Corporation | Malware detection using file names |
US8925101B2 (en) | 2010-07-28 | 2014-12-30 | Mcafee, Inc. | System and method for local protection against malicious software |
US8938800B2 (en) | 2010-07-28 | 2015-01-20 | Mcafee, Inc. | System and method for network level protection against malicious software |
US8549003B1 (en) | 2010-09-12 | 2013-10-01 | Mcafee, Inc. | System and method for clustering host inventories |
US8495060B1 (en) * | 2010-12-07 | 2013-07-23 | Trend Micro, Inc. | Prioritization of reports using content data change from baseline |
US20130247192A1 (en) | 2011-03-01 | 2013-09-19 | Sven Krasser | System and method for botnet detection by comprehensive email behavioral analysis |
US8694738B2 (en) | 2011-10-11 | 2014-04-08 | Mcafee, Inc. | System and method for critical address space protection in a hypervisor environment |
US8973144B2 (en) | 2011-10-13 | 2015-03-03 | Mcafee, Inc. | System and method for kernel rootkit protection in a hypervisor environment |
US9069586B2 (en) | 2011-10-13 | 2015-06-30 | Mcafee, Inc. | System and method for kernel rootkit protection in a hypervisor environment |
US9215240B2 (en) * | 2013-07-25 | 2015-12-15 | Splunk Inc. | Investigative and dynamic detection of potential security-threat indicators from events in big data |
-
2011
- 2011-01-24 US US13/012,138 patent/US9075993B2/en active Active
-
2015
- 2015-07-06 US US14/792,015 patent/US20150310091A1/en not_active Abandoned
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110214185A1 (en) * | 2001-10-25 | 2011-09-01 | Mcafee, Inc. | System and method for tracking computer viruses |
US20040189717A1 (en) * | 2003-03-27 | 2004-09-30 | Carli Conally | Intelligent drill-down for graphical user interface |
US20080172630A1 (en) * | 2006-09-08 | 2008-07-17 | Microsoft Corporation | Graphical representation of aggregated data |
US20100218256A1 (en) * | 2009-02-26 | 2010-08-26 | Network Security Systems plus, Inc. | System and method of integrating and managing information system assessments |
US8302194B2 (en) * | 2009-10-26 | 2012-10-30 | Symantec Corporation | Using file prevalence to inform aggressiveness of behavioral heuristics |
US20110126111A1 (en) * | 2009-11-20 | 2011-05-26 | Jasvir Singh Gill | Method And Apparatus For Risk Visualization and Remediation |
US20110231361A1 (en) * | 2009-12-31 | 2011-09-22 | Fiberlink Communications Corporation | Consolidated security application dashboard |
US8572007B1 (en) * | 2010-10-29 | 2013-10-29 | Symantec Corporation | Systems and methods for classifying unknown files/spam based on a user actions, a file's prevalence within a user community, and a predetermined prevalence threshold |
Also Published As
Publication number | Publication date |
---|---|
US9075993B2 (en) | 2015-07-07 |
US20130246423A1 (en) | 2013-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9075993B2 (en) | System and method for selectively grouping and managing program files | |
US8789190B2 (en) | System and method for scanning for computer vulnerabilities in a network environment | |
US8646089B2 (en) | System and method for transitioning to a whitelist mode during a malware attack in a network environment | |
US10419474B2 (en) | Selection of countermeasures against cyber attacks | |
JP6086968B2 (en) | System and method for local protection against malicious software | |
US20190319973A1 (en) | Multi-host Threat Tracking | |
US8196201B2 (en) | Detecting malicious activity | |
US9832217B2 (en) | Computer implemented techniques for detecting, investigating and remediating security violations to IT infrastructure | |
US8495747B1 (en) | Prioritizing asset remediations | |
US8595845B2 (en) | Calculating quantitative asset risk | |
US20170034128A1 (en) | System, method, and computer program for preventing infections from spreading in a network environment using dynamic application of a firewall policy | |
US7941852B2 (en) | Detecting an audio/visual threat | |
US8479297B1 (en) | Prioritizing network assets | |
JP2018530066A (en) | Security incident detection due to unreliable security events | |
US8997234B2 (en) | System and method for network-based asset operational dependence scoring | |
US20130326623A1 (en) | Cross-user correlation for detecting server-side multi-target intrusion | |
US20090328210A1 (en) | Chain of events tracking with data tainting for automated security feedback | |
Lu et al. | DiffSig: Resource differentiation based malware behavioral concise signature generation | |
US8392998B1 (en) | Uniquely identifying attacked assets | |
US10521590B2 (en) | Detection dictionary system supporting anomaly detection across multiple operating environments | |
Jimmy | Cyber security Vulnerabilities and Remediation Through Cloud Security Tools | |
Eswari et al. | A practical business security framework to combat malware threat | |
Al-taharwa et al. | Cloud-based anti-malware solution | |
Gaur et al. | Hybrid Intrusion Detection System for Private Cloud & Public Cloud | |
Solutions et al. | The Effectiveness of McAfee Host Intrusion Prevention |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MCAFEE, LLC, CALIFORNIA Free format text: CHANGE OF NAME AND ENTITY CONVERSION;ASSIGNOR:MCAFEE, INC.;REEL/FRAME:043665/0918 Effective date: 20161220 |
|
AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., NEW YORK Free format text: SECURITY INTEREST;ASSIGNOR:MCAFEE, LLC;REEL/FRAME:045055/0786 Effective date: 20170929 Owner name: MORGAN STANLEY SENIOR FUNDING, INC., MARYLAND Free format text: SECURITY INTEREST;ASSIGNOR:MCAFEE, LLC;REEL/FRAME:045056/0676 Effective date: 20170929 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: MORGAN STANLEY SENIOR FUNDING, INC., MARYLAND Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENT 6336186 PREVIOUSLY RECORDED ON REEL 045056 FRAME 0676. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST;ASSIGNOR:MCAFEE, LLC;REEL/FRAME:054206/0593 Effective date: 20170929 Owner name: JPMORGAN CHASE BANK, N.A., NEW YORK Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENT 6336186 PREVIOUSLY RECORDED ON REEL 045055 FRAME 786. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST;ASSIGNOR:MCAFEE, LLC;REEL/FRAME:055854/0047 Effective date: 20170929 |
|
AS | Assignment |
Owner name: MCAFEE, LLC, CALIFORNIA Free format text: RELEASE OF INTELLECTUAL PROPERTY COLLATERAL - REEL/FRAME 045055/0786;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT;REEL/FRAME:054238/0001 Effective date: 20201026 |
|
AS | Assignment |
Owner name: MCAFEE, LLC, CALIFORNIA Free format text: RELEASE OF INTELLECTUAL PROPERTY COLLATERAL - REEL/FRAME 045056/0676;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT;REEL/FRAME:059354/0213 Effective date: 20220301 |