System and Method for Network Level Protection Against Malicious Software
A method in one example implementation includes receiving information related to a network access attempt on a first computing device with the information identifying a software program file associated with the network access attempt. The method also includes evaluating a first criterion to determine whether network traffic associated with the software program file is permitted and then creating a restriction rule to block the network traffic if the network traffic is not permitted. The first criterion includes a trust status of the software program file. In specific embodiments, the method includes pushing the restriction rule to a network protection device that intercepts the network traffic associated with the software program file and applies the restriction rule to the network traffic. In more specific embodiments, the method includes searching a whitelist identifying trustworthy software program files to determine the trust status of the software program file.
This application is related to co-pending U.S. patent application Ser. No. 12/844,892, filed Jul. 28, 2010, entitled “SYSTEM AND METHOD FOR LOCAL PROTECTION AGAINST MALICIOUS SOFTWARE,” Inventors Rishi Bhargava, et al. (Attorney Docket No. 04796.1052). The disclosure of this application is considered part of and is incorporated by reference herein in its entirety.
TECHNICAL FIELDThis disclosure relates in general to the field of network security and, more particularly, to network level protection against malicious software.
BACKGROUNDThe field of network security has become increasingly important in today's society. The Internet has enabled interconnection of different computer networks all over the world. The ability to effectively protect and maintain stable computers and systems, however, presents a significant obstacle for component manufacturers, system designers, and network operators. This obstacle is made even more complicated due to the continually-evolving array of tactics exploited by malicious operators. Of particular concern more recently are botnets, which may be used for a wide variety of malicious purposes. Once a malicious software program file (e.g., a bot) has infected a host computer, a malicious operator may issue commands from a “command and control server” to control the bot. Bots can be instructed to perform any number of malicious actions such as, for example, sending out spam or malicious emails from the host computer, stealing sensitive information from a business or individual associated with the host computer, propagating the botnet to other host computers, and/or assisting with distributed denial of service attacks. In addition, the malicious operator can sell or otherwise give access to the botnets to other malicious operators through the command and control servers, thereby escalating the exploitation of the host computers. Consequently, botnets provide a powerful way for malicious operators to access other computers and to manipulate those computers for any number of malicious purposes. Security professionals need to develop innovative tools to combat such tactics that allow malicious operators to exploit computers.
To provide a more complete understanding of the present disclosure 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:
A method in one example implementation includes receiving information related to a network access attempt on a first computing device with the information identifying a software program file associated with the network access attempt. The method further includes evaluating a first criterion to determine whether network traffic associated with the software program file is permitted and creating a restriction rule to block the network traffic if the network traffic is not permitted. The first criterion includes a trust status of the software program file. In specific embodiments, the method includes pushing the restriction rule to a network protection device that intercepts the network traffic associated with the software program file and that applies the restriction rule to the network traffic. In more specific embodiments, the method includes searching a whitelist identifying trustworthy software program files to determine the trust status of the software program file, where the trust status of the software program file is defined as untrusted if the software program file is not included in the whitelist and the network traffic is not permitted if the trust status of the software program file is defined as untrusted. In yet other specific embodiments, event data related to the network traffic may be logged if the trust status of the software program file associated with the network traffic is defined as untrusted, and such logging may occur instead of blocking the network traffic or may occur in addition to blocking the network traffic.
Example EmbodimentsIn example embodiments, local protection components 124 on host 120a, central protection components 135 on central server 130, and network level enforcement components 145 on network protection device 140 may cooperate to provide a system for network level protection against network traffic associated with malicious software. Network traffic, as used herein in this Specification, is intended to mean data in a network such as, for example, electronic packets being sent from a host to any network or other computer (i.e., outbound network traffic), and electronic packets being sent to the host from any network or other computer (i.e., inbound network traffic). Network traffic may be blocked or otherwise restricted by network protection device 140 if network protection device 140 includes an applicable restriction rule associated with an untrusted program file.
In accordance with embodiments of this disclosure, network protection device 140 may receive restriction rules created for network traffic when untrusted program files are discovered. A trust status (i.e., trusted or untrusted) of program files may be determined in a batch mode or may be determined in real-time during a network access attempt. A network access attempt as used herein in this Specification is intended to include any inbound or outbound network access attempt on a host (e.g., accepting a connection request, making a connection request, receiving electronic data from a network, sending electronic data to a network). In both batch mode and real-time mode, program files are evaluated to determine whether the trust status of each program file is defined as trusted or untrusted, using one or more trust evaluation techniques (e.g., whitelist comparisons, program file change comparisons, blacklist comparisons, etc.). Policies may also be used when creating restriction rules. Such policies may include, for example, only allowing access to a specified subnet of network addresses, blocking all inbound and outbound network traffic, blocking only inbound or outbound network traffic, blocking all local network traffic and allowing Internet traffic, and the like. Any network traffic associated with untrusted program files may also be logged and aggregated for reporting.
For purposes of illustrating the techniques of the system for network level protection against malicious software, it is important to understand the activities occurring within a given network. 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. In addition, it will be appreciated that the broad scope of this disclosure intends for references to “program file”, “software program file”, and “executable software” to encompass any software file comprising instructions that can be understood and processed on a computer such as, for example, executable files, library modules, object files, other executable modules, script files, interpreter files, and the like.
Typical network environments used in organizations and by individuals include the ability to communicate electronically with other networks using, for example, the Internet to access web pages hosted on servers connected to the Internet, to send or receive electronic mail (i.e., email) messages, or to exchange files with end users or servers connected to the Internet. Malicious users are continuously developing new tactics using the Internet to spread malware and to gain access to confidential information.
Tactics that represent an increasing threat to computer security often include botnets. Botnets use a client-server architecture where a type of malicious software (i.e., a bot) is placed on a host computer and communicates with a command and control server, which may be controlled by a malicious user (e.g., a botnet operator). The bot may receive commands from the command and control server to perform particular malicious activities and, accordingly, may execute such commands. The bot may also send any results or pilfered information back to the command and control server. In addition to receiving commands to perform malicious activities, bots also typically include one or more propagation vectors that enable it to spread within an organization's network or across other networks to other organizations or individuals. Common propagation vectors include exploiting known vulnerabilities on hosts within the local network and sending malicious emails having a malicious program attached or providing malicious links within the emails. Bots may also infect host computers through, for example, drive-by downloads, viruses, worms, Trojan horses, etc.
Botnets provide a powerful way for botnet operators to compromise computer systems by employing a variety of attacks. Once a bot has infected a host computer, the command and control server can issue commands to the bot to perform various types of attacks. Commonly, botnets have been used to send bulk email and to perform distributed denial of service attacks. More recently, however, botnets have been used to perform more targeted attacks against businesses and individuals to obtain confidential data or other sensitive information such as intellectual property and financial data.
Existing firewall and network intrusion prevention technologies are generally deficient in recognizing and containing botnets. Bots are often designed to initiate communication with the command and control server and to masquerade as normal web browser traffic. Bots may be crafted with a command and control protocol that makes the bot appear to be making normal network connections to a web server. For example, a bot may use a port typically used to communicate with a web server. Such bots, therefore, may not be detected by existing technologies without performing more detailed packet inspection of the web traffic. Moreover, once a bot is discovered, the botnet operator may simply find another way to masquerade network traffic by the bot to continue to present as normal web traffic. More recently, botnet operators have crafted bots to use encryption protocols such as, for example, secure socket layer (SSL), thereby encrypting malicious network traffic. Such encrypted traffic may use a Hypertext Transfer Protocol Secure (HTTPS) port such that only the endpoints involved in the encrypted session can decrypt the data. Thus, existing firewalls and other network intrusion prevention technologies are unable to perform any meaningful inspection of the web traffic. Consequently, bots continue to infect host computers within networks.
Other software security technology focused on preventing unauthorized program files from executing on a host computer may have undesirable side effects for end users or employees of a business or other organizational entity. Network or Information Technology (IT) administrators may be charged with crafting extensive policies relevant to all facets of the business entity to enable employees to obtain software and other electronic data from desirable and trusted network resources. Without extensive policies in place, employees may be prevented from downloading software and other electronic data from network resources that are not specifically authorized, even if such software and other data are legitimate and necessary business activities. In addition, such systems may be so restrictive that if unauthorized software is found on a host computer, any host computer activities may be suspended pending network administrator intervention. For businesses, this type of system may interfere with legitimate and necessary business activities, resulting in worker downtime, lost revenue, significant Information Technology (IT) overhead, and the like.
A system and method for network level protection against malicious software, as outlined in
Turning to the infrastructure of
In example embodiments, local network 110 represents a network environment of an organization (e.g., a business, a school, a government entity, a family, etc.), with hosts 120a, 120b, and 120c representing end user computers operated by employees or other individuals associated with the organization. The end user computers may include computing devices such as desktops, laptops, mobile or handheld computing devices (e.g., personal digital assistants (PDAs) or mobile phones), or any other computing device capable of executing software processes associated with network access to local network 110. Connection between hosts 120a, 120b, and 120c, central server 130, secondary server 180, network protection device 145, and any additional components in local network 110 may include any appropriate medium such as, for example, cable, Ethernet, wireless (e.g., WiFi, 3G, 4G, etc.), ATM, fiber optics, etc. It should be noted that the network configurations and interconnections shown and described herein are for illustrative purposes only.
In the example embodiment shown in
Whitelists and blacklists may be implemented using checksums where a unique checksum for each program file is stored, which can be readily compared to a computed checksum of a program file sought to be evaluated. A checksum can be a mathematical value or hash sum (e.g., a fixed string of numerical digits) derived by applying an algorithm to a software program file. If the algorithm is applied to a second software program file that is identical to the first software program file, then the checksums should match. However, if the second software program file is different (e.g., it has been altered in some way, it is a different version of the first software program file, it is a wholly different type of software, etc.) then the checksums are very unlikely to match.
Databases such as global whitelist 165 in
In local network 110 shown in
Central server 130 in local network 110 may include central protection components 135 for determining a trust status of software program files on host 120a, for creating restriction and logging rules for network traffic associated with untrusted software program files, for pushing restriction and logging rules to network protection device 140, and for updating logged events database 131 with entries related to network traffic associated with untrusted program files. In some embodiments central protection components may also update central untrusted software inventory 132 with entries identifying untrusted software program files. Central server 130 may also include or have access to process traffic mapping database 134, which could map software processes to software program files, including information such as program file paths, addresses (e.g., Internet Protocol (IP) addresses), and/or port numbers. Logged events database 131, central untrusted software inventory 132, internal whitelist 133, and process traffic mapping database 134 may be provided in any network and device accessible to central server 130. As will be further described herein, central untrusted software inventory 132 may be omitted in some embodiments of the system. Network protection device 140 may include network level enforcement components 145 for intercepting network traffic (e.g., electronic packets inbound to host 120a or outbound from host 120a, etc.) and enforcing any applicable restriction and logging rules to the intercepted packets.
Turning to
Central server 200 may also include or have access to appropriate hardware and memory elements such as, for example, a logged events database 231 and an internal whitelist 233. In some embodiments, central server 200 may also include or have access to a central untrusted software inventory 232, and in other embodiments central untrusted software inventory 232 may not be a required component of the system. Other hardware elements including a processor 280 and a memory element 290 may also be included in central server 200. Finally, a management console 210 may be suitably connected to central server 200 for authorized persons to deploy, configure, and maintain the system through an administrative component such as administrative protection module 220.
In embodiments using central trusted cache 245, the cache may be implemented in hardware as a block of memory for temporary storage of entries (e.g., checksums) identifying program files that have been previously determined to have a trusted status, such as those program files found during searches of global and/or internal whitelists. Central trusted cache 245 can provide quick and transparent access to data indicating program files previously evaluated for a trust status. Thus, if a requested program file is found in central trusted cache 245 then a search of global and/or internal whitelists, or any other trust evaluation, may not need to be performed. In addition, embodiments using central trusted cache 245 may not need to maintain central untrusted software inventory 232.
Turning to
In various embodiments of the system such as the batch processing embodiment or certain real-time processing embodiments, local protection components may include software program inventory feed 335 with a data flow to central server 200 for pushing an inventory of executable software 340 or an inventory of new and/or changed program files in executable software 340 to central server 200. Event feed 330 and software program inventory feed 335 may reside in the user space of host 300. Also shown in user space of host 300 is an example executing software process 345, which corresponds to one or more of the program files of executable software 340. For ease of reference, executable software 340 is shown in user space on host 300. However, executable software 340 may be stored in a memory element such as disk space of host 300.
Host 300 may also include hardware components such as a network interface card (NIC) device 370, a processor 380, and a memory element 390. Transmission protocols, such as Transmission Control Protocol/Internet Protocol (TCP/IP) 350 and other protocols 360, may reside in a kernel space of host 300.
Not shown in
Turning to
In network protection device 400, filter/firewall 410 may intercept network traffic (e.g., electronic packets outbound from local network 110, inbound to local network 110, or within local network 110) and may query network rules element 420 to determine whether any restriction and/or logging rules apply to the particular intercepted packets of network traffic. If an applicable restriction rule is found, then it is applied to the packets, which may be blocked, rerouted, selectively allowed, and the like. Event log 430 may be provided in network protection device 400 for logging network traffic event data. Network traffic event data may include information related to particular packets received by network protection device 400 such as, for example, source address and port number, destination address and port number, date and time stamp, and/or rule ID (i.e., identifier indicating a restriction or logging rule applied to the intercepted packets). Such logging may occur if network rules element 420 has a logging rule corresponding to the particular packets received by network protection device 400 or if logging is performed by default such as, for example, logging a network traffic event when a restriction rule is applied to packets corresponding to the network traffic event.
In various example embodiments, trust determination, logging, and rule-making activities may be provided by administrative protection module 220, policy module 230, software trust determination module 240, rule making module 250, and process traffic mapping module 260 of central server 200 and by software program inventory feed 335 and/or event feed 330 of host 120a. Information related to the trust determination, logging, and rule making activities can be suitably rendered, or sent to a specific location (e.g., central server 200, network rules element 420, etc.) or simply stored or archived (e.g., logged events database 231, central untrusted software inventory 232, policy database 235, process traffic mapping database 234, central trusted cache 245, etc.), and/or properly displayed in any appropriate format (e.g., through management console 210, etc.). Security technology that relates to one or more of such trust determination, logging, and rule-making activities can include elements of McAfee® software (e.g., ePolicy Orchestrator, Application Control, and/or Change Control) or any other similar software. Thus, any such components may be included within the broad scope of the terms ‘administrative protection module’, ‘policy module’, ‘software trust determination module’, ‘rule making module’, ‘process traffic mapping module’, ‘software program inventory feed’, and ‘event feed’ as used herein in this Specification. Logged events database 231, central untrusted software inventory 232, internal whitelist 233, process traffic mapping database 234, policy database 235, central trusted cache 245, network rules element 420, and event log 430 may include information related to the trust determination, logging, and rule making for electronic data (e.g., trust determinations for program files, network access attempts, destination address and port numbers of software processes, source address and port numbers of software processes, network restriction rules, logging rules, etc.), and these elements can readily cooperate, coordinate, or otherwise interact with the modules and components of host 300, central server 200, and network protection device 400.
Turning to
After receiving the software inventory, flow passes to step 525 where a first program file is retrieved from the software inventory. Flow then passes to step 530 to determine a trust status (i.e., trusted or untrusted) of the program file. Trust status may be determined by software trust determination module 240 of central server 200 using one or more software trust determination techniques (e.g., evaluating internal whitelists, evaluating external whitelists, evaluating state change of program files, evaluating blacklists, etc.), which will be shown and described further herein with reference to
After the program file trust status is determined in step 530, flow passes to step 535 where a query is made as to whether the program file is trusted. If the program file is trusted, then flow passes to step 580 to bypass creating network restriction or logging rules and to continue looping through the software inventory to evaluate each program file. However, if the program file trust status is untrusted in step 535, then flow passes to step 540 where process traffic mapping information is obtained for the untrusted program file from process traffic mapping database 234. The process traffic mapping information may include, for example, source address and destination port number mapped to the program file, which can be used to create rules to log and/or restrict network traffic.
After the process traffic mapping information is retrieved for the program file, a query is made as to whether logging is enabled in step 545. If the query in step 545 indicates that logging is enabled, then flow passes to step 550 where a logging rule may be created and then pushed to network protection device 400 to be stored in network rules element 420. In one example, the source address and destination port number from the process traffic mapping information retrieved in step 540 could be used to create a rule to log particular network event data. In this example, the logging rule could require network traffic event data related to electronic packets intercepted by network protection device 400 to be stored in event log 430 when the intercepted packets have a source address and a destination port matching the process traffic mapping information. In some embodiments, a rule ID identifying the logging rule may be stored in process mapping database 234 and mapped to the untrusted program file.
After the logging rule has been created and pushed to network protection device 400 in step 550, or if logging is not enabled in step 545, then flow passes to step 555 where a query is made as to whether enforcement is enabled. If enforcement is not enabled, then flow passes to step 580 to bypass creating a network restriction rule for the untrusted program file and to continue looping through the software inventory to evaluate the remaining program files in the software inventory. If enforcement is enabled in step 555, however, then policy database 235 may be queried in step 560 to determine whether any configured policy overrides the untrusted status of the program file to allow network traffic associated with the program file. In example embodiments, policy module 230 of central server 200 may allow a network administrator or other authorized user to craft policy configurations through management console 210, and to store such policies in policy database 235. Policy database 235 may then be queried in step 560 for any policies relevant to the untrusted program file.
If a policy is found in policy database 235 that overrides the untrusted status of the program file, then flow passes to step 580 to bypass creating a network restriction rule for the untrusted program file and to continue looping through the software inventory to evaluate the remaining program files in the software inventory. However, if a policy does not override the untrusted status of the program file (i.e., a policy requires some type of restriction rule or no policy is applicable), then flow passes to step 570 where one or more network restriction rules can be created using process traffic mapping information and/or any applicable policies.
Policies may be used to create various types of restriction rules, and these policy configurations may be implemented as desired by particular network owners. In some example embodiments, policy configurations may include one or more broad-based restrictions such as blocking all inbound and outbound network traffic, blocking all inbound network traffic and allowing outbound network traffic, or allowing inbound network traffic and blocking outbound network traffic. More specific strategies may also be employed, such as blocking outbound network traffic to the local network but allowing outbound network traffic to the Internet, or allowing inbound network traffic from a specified subnet of source addresses and/or allowing outbound network traffic to a specified subnet of destination addresses. Finally, even more granular strategies may be used such as blocking specific inbound services and/or specific outbound services on a port (e.g., domain name service (DNS), simple mail transfer protocol (SMTP), Internet Relay Chat (IRC), etc.). These example policy configurations are for illustrative purposes, and are intended to include any other policy configurations to restrict inbound, outbound, and/or local network traffic or any combination thereof. Such policies may be implemented in the system for network level protection by routing network traffic through network protection device 400, which applies network restriction rules created using the configured policies.
Particular policy configurations may be balanced between competing interests such as the need to prevent the propagation and potentially malicious activities of untrusted software and the need to conduct necessary business activities. For example, in a network having a host subnet and a server subnet, a policy may be configured to allow network traffic associated with untrusted program files to access only the server subnet but not the host subnet. This may be desirable because it may prevent the propagation of malicious software to other hosts within the network, while allowing each host uninterrupted access to a secured server subnet. Another policy may block network traffic associated with untrusted program files from accessing the Internet except for a known subnet hosting job critical services. Thus, many different blocking options may be employed by crafting policies allowing selective network access.
In embodiments of the system and method for network level protection, network level specific policies may also be crafted for untrusted program files. For example, a policy may be crafted to redirect network traffic associated with an untrusted program file to another server, such as secondary server 180. In one example, potentially malicious network traffic associated with an untrusted program file could be forced through additional firewalls, filters, antispam/antivirus gateways, proxies, and the like on secondary server 180. In another example, secondary server 180 may be configured to respond with one or more predefined commands upon receiving a network connection. Some bots are designed to self-destruct upon receiving particular commands and secondary server 180 could be configured to respond to a network connection with such commands, thereby causing a bot that has been redirected to secondary server 180 to be destroyed.
Another network level specific policy includes switching virtual local area network (VLAN) membership to another VLAN port. In this example, VLAN membership could be switched for the port associated with an untrusted program file. Although switching VLAN membership to another port would effectively move all of the network traffic on that port rather than individual streams, the alternate VLAN could be configured to force the network traffic through additional firewalls, filters, antispam and antivirus gateways, proxies, and the like. This type of restriction could be particularly useful if network protection device 400 is configured as a layer 2 managed switch.
In another example embodiment, network protection device 400 may be adapted to do a deeper packet inspection to determine whether multiple conversation streams are being transferred over a single port and to identify the stream associated with the untrusted program file to which the applicable network restriction and logging rules apply. Thus, in this embodiment, a policy could be configured so that network restriction or logging rules are crafted to selectively block and/or log the particular stream associated with the untrusted program file, while allowing other streams to continue connections over the same port.
Turning back to step 570 of
Turning to
If the program file is not found on any internal or external whitelist in steps 610 and 620, however, then the program file has an untrusted status. Flow may then move to step 630 where the program file may be evaluated to determine whether any predefined condition exists that allows the program file to be promoted from the untrusted status to a trusted status. Such predefined conditions may include heuristic considerations such as, for example, software owned by an administrator, file access controls, file attributes (e.g., creation time, modification time, etc.), and the like. In one example, an untrusted program file owned by an administrator could be promoted to a trusted status and, therefore, flow could end and the trust status could be returned to step 530 of
Trust determination flow 600 may also include additional logic (not shown) to evaluate blacklists in addition to whitelists. Blacklists identify software program files known to be malicious. Blacklists may be provided by numerous sources including Artemis and Anti-Virus databases provided by McAfee, Inc., and locally maintained blacklists within a local network. In this embodiment, if the program file is found on any internal or external blacklist, then the program file is defined as untrusted.
Turning to
Referring again to step 720 of
Alternative implementations to enumerate program files and to determine a trust status will be readily apparent. Embodiments previously shown and described herein refer to enumerating an inventory of executable software on each host in a network, such as host 300, pushing the software inventory to central server 200 and determining the trust status associated with each program file in the inventory. In alternative embodiments, however, the trust determination of software program files could be locally performed by each host and resulting information could be pushed to another location (e.g., central server 200) and/or maintained locally on a local untrusted software inventory.
Locally determining a trust status of software program files could be performed by whitelist evaluations, blacklist evaluations, state change evaluations, or any other suitable trust evaluation technique. In such embodiments an inventory of executable software may be enumerated by, for example, McAfee® software (e.g., Policy Auditor, Application Control, or Change Control). When performing whitelist evaluations as shown in
The batch processing embodiments shown and described with reference to
Other businesses may prefer tighter control and a closed by default approach could be implemented in an alternative embodiment. In the closed by default approach, network protection device 400 could be configured to block all network traffic unless specifically permitted by a rule. All electronic packets intercepted by network protection device 400 could be evaluated to determine whether network rules element 420 contains a rule specifically permitting the intercepted packets to be transmitted (e.g., packets having an allowed source address and port number, packets having an allowed destination address and port number, etc.). In such an embodiment, permission rules, rather than restriction rules, could be created and pushed to network protection device 400 whenever new program files are determined to have a trusted status.
Turning to
Once the network access attempt has been intercepted, a process traffic mapping element provided, for example, in the operating system kernel of host 300 may be queried to determine which program files (e.g., executable files, library modules, object files, other executable modules, script files, interpreter files, etc.) correspond to the network access attempt associated with software process 345. In this example, the network access attempt is mapped to executing software process 345, which could be mapped to an executable file and one or more library modules loaded into executing software process 345. Thus, the host event information that is pushed to central server 200 may include program file paths for the one or more identified program files, the associated program file hashes, a source address and port, and/or a destination address and port of the network access attempt.
After the host event information is received by central server 200 in step 810, flow passes to step 820 to get a trust status of the program files associated with the network access attempt. Determining the trust status of the program files can be accomplished using various techniques, which will be shown and described in more detail in a first embodiment in
After obtaining the trust status for each of the program files associated with the network access attempt in step 820, flow passes to step 830, which may be implemented, at least in part, as process traffic mapping module 260 of central server 200. In step 830, if any of the program files have an untrusted status, then the host event information may be used to populate process traffic mapping database 234. For example, detailed port and address information and program file path information associated with the program files may be added to process traffic mapping database 234. Flow then passes to step 835 and a query is made as to whether all program files associated with the network access attempt have a trusted status, and if so, flow ends without creating logging or restriction rules for network traffic associated with the program files. However, if any of the program files has an untrusted status, then flow passes to step 845 to determine whether logging is enabled.
If logging is enabled, then flow passes to step 850 where a logging rule may be created and pushed to network protection device 400 to be stored in network rules element 420. In one example, the source address and port number and the destination address and port number from the host event information could be used to create a rule to log particular network event data. In this example, the logging rule could require network traffic event data related to electronic packets intercepted by network protection device 400 to be stored in event log 430 when the intercepted packets have a source address, a source port, a destination address, and a destination port matching the host event information. In some embodiments, a rule ID identifying the logging rule may be stored in process traffic mapping database 234 and mapped to the program files associated with the network access attempt.
After the logging rule has been created and pushed to network protection device 400 in step 850, or if logging was not enabled in step 845, flow passes to step 855 to determine whether enforcement is enabled. If enforcement is not enabled, then the flow ends without creating restriction rules for network traffic associated with the one or more untrusted program files. If enforcement is enabled in step 855, however, then policy database 235 may be queried in step 860 to determine whether any configured policy overrides the untrusted status of the program files to allow network traffic associated with the program files. If such a policy is found, then flow ends without creating a restriction rule. However, if a policy does not override the untrusted status of the program file (i.e., a policy requires some type of restriction rule or no policy is applicable), then flow passes to step 870 where one or more network restriction rules can be created using host event information and/or any applicable policies and then pushed to network protection device 400. In one example, the host event information could be used to create a restriction rule to block any inbound, outbound, and/or local packets having a source address and port and destination address and port matching the source address and port and destination address and port from the host event information. The use of policies to create restriction rules and examples of such policies, including network level specific policies, have been previously described herein with reference to the batch processing flow of
After the restriction rule has been created using host event information and/or any applicable policies, the restriction rule is pushed to network protection device 400 and stored in network rules element 420 and then the flow ends. In this real-time embodiment, a time-delay may be configured in host 300 after the network access attempt has been intercepted in order to allow real-time processing flow 800 sufficient time to create any necessary rules and push such rules to network protection device 400. In another embodiment, the network access attempt may be held on host 300 until central server 200 acknowledges to host 300 that it has updated process traffic mapping database 234 with mapping information for the network access attempt and/or that it has pushed any resulting logging or restriction rules to network protection device 400. This acknowledgement could be accomplished, for example, via a signal over bidirectional data flow to event feed 330 on host 300.
Turning to
Turning to
Beginning in step 1010, a query is made as to whether all program files associated with the network access attempt are found in central trusted cache 245. If all of the program files are found in central trusted cache 245, then all of the program files have a trusted status. Consequently, flow ends and the trust statuses are returned to step 820 of
Real-time trust determination flow 1000 may also include additional logic to evaluate a program file not found in any whitelist and consequently having an untrusted status to determine whether a predefined condition exists that allows the untrusted program file to be promoted to a trusted status. Such predefined conditions may include heuristic considerations, which have been previously shown and described herein with reference to
Turning to
After the log records are retrieved from network protection device 400, flow passes to step 1220 where information may be retrieved from process traffic mapping database 234. Process traffic mapping database 234 may provide user-understandable information, such as program file paths and host identification, corresponding to the network traffic event data in the log record. For example, a destination address and port and a source address and port from a log record may be mapped to an untrusted program file path in process traffic mapping database 234. In another example, a rule ID could be used from a log record to find a mapping to an untrusted program file path in process traffic mapping database 234 or, alternatively, in some other separate database or record.
After the user-understandable information is retrieved from process traffic mapping database 234, flow passes to step 1230 where logged events database 231 can be updated with network traffic event data from the log records and any corresponding process traffic mapping information. Examples of possible network traffic event data and corresponding process traffic mapping information stored in logged events database 231 include data associated with intercepted packets such as program file paths, identification of the hosts, a date and time stamp, source address and port numbers, destination address and port numbers, and the like.
With both the batch processing embodiments and the real-time embodiments, flow 1200 may be configured to run at any predetermined intervals of time (e.g., weekly, daily, hourly, etc.). Flow 1200 may, in some embodiments, be implemented as part of administrative protection module 220. Alternatively, in the batch processing embodiments, flow 1200 may be implemented as part of flow 500 shown in
Software for achieving the 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 other 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 network level protection against malicious software. 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 other examples, the software of the system for network level protection against malicious software could involve a proprietary element (e.g., as part of a network security solution with McAfee® Application Control software, McAfee® Change Control software, McAfee® ePolicy Orchestrator software, McAfee® Policy Auditor software, McAfee® Artemis Technology software, McAfee® Host Intrusion Prevention software, McAfee® VirusScan 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, router, information technology (IT) device, distributed server, etc., or be provided as a complementary solution (e.g., in conjunction with a firewall), or provisioned somewhere in the network.
In an example local network 110 as shown in
In certain example implementations, the activities involved in network level protection against malicious software outlined herein may be implemented in software. This could be inclusive of software provided in central servers 130 (e.g., central protection components 135), hosts 120 (e.g., local protection components 124), network protection device (e.g., network level enforcement components 145), and/or secondary server 180. These components, elements and/or modules can cooperate with each other in order to perform activities to provide network level protection against malicious software such as botnets, 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, the protection activities could be further localized in hosts 120 or further centralized in central server 130, and some of the illustrated processors may be removed, or otherwise consolidated to accommodate the particular system configuration. In a general sense, the arrangement depicted in
All of these elements (hosts 120, central server 130, network protection device 140, and/or secondary server 180) include software (or reciprocating software) that can coordinate, manage, or otherwise cooperate in order to achieve the protection activities, including trust determination, logging, enforcement, intercepting, as outlined herein. In addition, one or all of these elements may include any suitable algorithms, hardware, software, components, modules, interfaces, or objects that facilitate the operations thereof. In the implementations involving software, such a configuration may be inclusive of logic encoded in one or more tangible 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.), with the tangible media being inclusive of non-transitory media. In some of these instances, one or more memory elements (as shown in various FIGURES including
Any of these elements (e.g., a computer, a server, a network protection device, a firewall, distributed server, etc.) can include memory elements for storing information to be used in achieving the protection activities as outlined herein. These devices may further keep information in any suitable memory element (e.g., random access memory (RAM), ROM, EPROM, EEPROM, ASIC, etc.), software, hardware, or in any other suitable component, device, element, or object where appropriate and based on particular needs. Any of the memory items discussed herein (e.g., logged events database, central untrusted software inventory, local untrusted software inventory, internal whitelist, policy database, process traffic mapping database, central trusted cache, network rules element, event log, etc.) 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, hosts, network protection devices, servers, distributed servers, etc. may also include suitable interfaces for receiving, transmitting, and/or otherwise communicating data or information in a network environment.
Note that with the examples provided herein, interaction may be described in terms of two, three, four, or more network components. However, this has been done for purposes of clarity and example only. It should be appreciated that the system for network level protection against malicious software can be consolidated in any suitable manner. Along similar design alternatives, any of the illustrated computers, modules, components, and elements of the FIGURES 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 components or network elements. Therefore, it should also be appreciated that the system of
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 for network level protection against malicious software. Some of these operations may be deleted or removed where appropriate, or these operations 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. For example, trust determination by searching whitelists may be performed by searching internal whitelists prior to searching external or global whitelists. 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
1. A method, comprising:
- receiving information related to a network access attempt on a first computing device, the information identifying a software program file associated with the network access attempt;
- evaluating a first criterion to determine whether network traffic associated with the software program file is permitted; and
- creating a restriction rule to block the network traffic if the network traffic is not permitted, wherein the first criterion includes a trust status of the software program file.
2. The method of claim 1, further comprising pushing the restriction rule to a network protection device, wherein the network protection device intercepts the network traffic associated with the software program file and applies the restriction rule to the network traffic.
3. The method of claim 2, wherein the network traffic intercepted by the network protection device includes outbound electronic packets from the first computing device, the electronic packets having a destination address corresponding to a second computing device.
4. The method of claim 2, wherein the network traffic intercepted by the network protection device includes inbound electronic packets received from a second computing device and having a destination address corresponding to the first computing device.
5. The method of claim 1, further comprising:
- searching a whitelist identifying trustworthy software program files to determine the trust status of the software program file, wherein the trust status of the software program file is defined as untrusted if the software program file is not included in the whitelist.
6. The method of claim 5, wherein the network traffic is not permitted if the trust status of the software program file is defined as untrusted.
7. The method of claim 1, wherein the software program file is an executable file and the network access attempt is associated with an executing software process initiated by the executable file on the first computing device.
8. The method of claim 1, wherein the software program file is a library module loaded into an executing software process on the first computing device and the network access attempt is associated with the executing software process.
9. The method of claim 1, further comprising:
- evaluating a second criterion to determine whether the second criterion overrides the first criterion, the second criterion including a network access policy for one or more software program files having a trust status defined as untrusted.
10. The method of claim 9, wherein a network protection device intercepts electronic packets of the network traffic associated with the software program file and applies a restriction rule to the electronic packets, wherein the restriction rule is created using the network access policy selected from a group of network access policies, the group consisting of:
- blocking all inbound electronic packets to the first computing device and all outbound electronic packets from the first computing device;
- blocking all inbound electronic packets to the first computing device;
- blocking all outbound electronic packets from the first computing device;
- blocking all outbound electronic packets from the first computing device to a specified network subnet;
- blocking all outbound electronic packets from the first computing device to the Internet and allowing all outbound electronic packets from the first computing device to a specified subnet;
- blocking all outbound electronic packets from the first computing device to domain name system (DNS) servers;
- blocking all outbound electronic packets from the first computing device using simple mail transfer protocol (SMTP);
- blocking all outbound electronic packets from the first computing device to an Internet Relay Chat (IRC) server;
- blocking all outbound electronic packets having a source address, a source port, a destination address, and a destination port matching a source address, a source port, a destination address, and a destination port of the network access attempt; and
- blocking all inbound electronic packets having a source address, a source port, a destination address, and a destination port matching a source address, a source port, a destination address, and a destination port of the network access attempt.
11. Logic encoded in one or more tangible media that includes code for execution and when executed by one or more processors is operable to perform operations comprising:
- receiving information related to a network access attempt on a first computing device, the information identifying a software program file associated with the network access attempt;
- evaluating a first criterion to determine whether network traffic associated with the software program file is permitted; and
- creating a restriction rule to block the network traffic if the network traffic is not permitted, wherein the first criterion includes a trust status of the software program file.
12. The logic of claim 11, the one or more processors being operable to perform further operations comprising:
- pushing the restriction rule to a network protection device, wherein the network protection device intercepts the network traffic associated with the software program file and applies the restriction rule to the network traffic.
13. The logic of claim 11, the one or more processors being operable to perform further operations comprising:
- searching a whitelist identifying trustworthy software program files to determine the trust status of the software program file, wherein the trust status of the software program file is defined as untrusted if the software program file is not included in the whitelist.
14. The logic of claim 11, the one or more processors being operable to perform further operations comprising:
- evaluating a second criterion to determine whether the second criterion overrides the first criterion, wherein the second criterion includes a network access policy for one or more software program files having a trust status defined as untrusted.
15. An apparatus, comprising:
- a protection module;
- one or more processors operable to execute instructions associated with the protection module, the one or more processors being operable to perform further operations comprising: receiving information related to a network access attempt on a first computing device, the information identifying a software program file associated with the network access attempt; evaluating a first criterion to determine whether network traffic associated with the software program file is permitted; and creating a restriction rule to block the network traffic if the network traffic is not permitted, wherein the first criterion includes a trust status of the software program file.
16. The apparatus of claim 15, wherein the one or more processors are operable to perform further instructions, including:
- pushing the restriction rule to a network protection device, wherein the network protection device intercepts network traffic associated with the software program file and applies the restriction rule to the network traffic.
17. The apparatus of claim 15, wherein the one or more processors are operable to perform further instructions, including:
- searching a whitelist identifying trustworthy software program files to determine the trust status of the software program file, wherein the trust status of the software program file is defined as untrusted if the software program file is not included in the whitelist.
18. A method, comprising:
- receiving information related to a network access attempt on a first computing device, the information identifying a software program file associated with the network access attempt;
- evaluating a first criterion to determine whether network traffic associated with the software program file is permitted; and
- creating a logging rule to log event data related to the network traffic if the network traffic is not permitted, wherein the first criterion includes a trust status of the software program file.
19. The method of claim 18, further comprising pushing the logging rule to a network protection device, wherein the network protection device intercepts the network traffic associated with the software program file and logs event data related to the network traffic.
20. The method of claim 19, further comprising:
- receiving the event data logged by the network protection device;
- using selected data from the event data to search a process traffic mapping element for the software program file associated with the network traffic; and
- updating a logged events memory element to include an entry identifying the software program file.
21. The method of claim 20, wherein the selected data used to search the process traffic mapping element includes a source address and port number and a destination address and port number.
22. The method of claim 20 wherein the selected data used to search the process traffic mapping element includes a rule identifier corresponding to the logging rule.
23. The method of claim 18, further comprising:
- searching a whitelist identifying trustworthy software program files to determine whether the software program file is identified in the whitelist, wherein the trust status of the software program file is defined as untrusted if the software program file is not identified in the whitelist.
24. The method of claim 18, wherein the software program file is an executable file and the network access attempt is associated with an executing software process initiated by the executable file on the computing device.
25. The method of claim 18, wherein the software program file is a library module loaded into an executing software process and the network access attempt is associated with the executing software process.
26. Logic encoded in one or more tangible media that includes code for execution and when executed by one or more processors is operable to perform the operations comprising:
- receiving information related to a network access attempt on a first computing device, the information identifying a software program file associated with the network access attempt;
- evaluating a first criterion to determine whether network traffic associated with the software program file is permitted; and
- creating a logging rule to log event data related to the network traffic if the network traffic is not permitted, wherein the first criterion includes a trust status of the software program file.
27. The logic of claim 26, the one or more processors operable to perform further operations comprising:
- pushing the logging rule to a network protection device, wherein the network protection device intercepts the network traffic associated with the software program file and logs event data related to the network traffic.
28. The logic of claim 27, the one or more processors operable to perform further operations comprising:
- receiving the event data logged by the network protection device;
- using selected data from the event data to search a process traffic mapping element for the software program file associated with the network traffic; and
- updating a logged events memory element to include an entry identifying the software program file.
29. The logic of claim 26, the one or more processors operable to perform further operations comprising:
- searching a whitelist identifying trustworthy software program files to determine whether the software program file is identified in the whitelist, wherein the trust status of the software program file is defined as untrusted if the software program file is not identified in the whitelist.
30. An apparatus, comprising:
- a protection module; and
- one or more processors operable to execute instructions associated with the protection module, including: receiving information related to a network access attempt on a first computing device, the information identifying a software program file associated with the network access attempt; evaluating a first criterion to determine whether network traffic associated with the software program file is permitted; and creating a logging rule to log event data related to the network traffic if the network traffic is not permitted, wherein the first criterion includes a trust status of the software program file.
31. The apparatus of claim 30, the one or more processors operable to execute further instructions comprising:
- pushing the logging rule to a network protection device, wherein the network protection device intercepts the network traffic associated with the software program file and logs event data related to the network traffic.
32. The apparatus of claim 31, the one or more processors operable to execute further instructions comprising:
- receiving the event data logged by the network protection device;
- using selected data from the event data to search a process traffic mapping element for the software program file associated with the network traffic; and
- updating a logged events memory element to include an entry identifying the software program file.
33. The apparatus of claim 30, the one or more processors operable to execute further instructions comprising:
- searching a whitelist identifying trustworthy software program files to determine whether the software program file is identified in the whitelist, wherein the trust status of the software program file is defined as untrusted if the software program file is not identified in the whitelist.
Type: Application
Filed: Jul 28, 2010
Publication Date: Feb 2, 2012
Patent Grant number: 8938800
Inventors: Rishi Bhargava (Cupertino, CA), David P. Reese, JR. (Sunnyvale, CA)
Application Number: 12/844,964
International Classification: G06F 21/20 (20060101);