Application identification
Claim Score by NHIP
Abstract
A method may include receiving a communication from a client device and identifying a port number, a protocol and a destination associated with the communication. The method may also include identifying a first application being executed by the first client device based on the port number, the protocol and the destination associated with the first communication.
Term
0.5 yearsto projected expiry
Projected expiry 7 March 2027, counted from filing; an application has no term until it is granted.
- Priority and filed
- Published
- Today
- Projected expiry
21 claims: 4 independent, 17 dependent
- 27A method comprising:receiving, by a network device, one or more packets from a client device;determining, by the network device and using particular information in the one or more packets, whether a first data structure stores an entry that includes information matching the particular information, the first data structure to store information identifying applications executed by client devices;identifying, by the network device and in the entry, information identifying a particular application being executed by the client device when the first data structure stores the entry that includes the information matching the particular information;comparing, by the network device, the particular information to information in a second data structure to identify the particular application being executed by the client device when the first data structure does not store the entry that includes the information matching the particular information, the second data structure to store signature information associated with one or more applications;and applying, by the network device, an access policy to determine whether to grant, to the client device, access to a resource in a network associated with the network device, the access policy being based on the particular application.
- 34A non-transitory computer-readable medium storing instructions, the instructions comprising:one or more instructions which, when executed by a first device, cause the first device to receive a packet from a second device, the first device being different than the second device;one or more instructions which, when executed by the first device, cause the first device to search a first data structure, using particular information in the packet, to determine whether the first data structure stores an entry that includes information matching the particular information;one or more instructions which, when executed by the first device, cause the first device to identify, in the entry, information identifying a particular application being executed by the second device when the first data structure stores the entry that includes the information matching the particular information;one or more instructions which, when executed by the first device, cause the first device to compare the particular information to information in a second data structure to identify the particular application being executed by the second device when the first data structure does not store the entry that includes the information matching the particular information, the second data structure being different than the first data structure;one or more instructions which, when executed by the first device, cause the first device to identify, in a third data structure and based on the particular application, a rule associated with accessing a resource in a network associated with the first device;and one or more instructions which, when executed by the first device, cause the first device to selectively grant, to the second device and based on the rule, access to the resource in the network associated with the first device.
- 41Broadest claimClaim Score 59, broad(NHIP)A device comprising:a memory to store instructions;and a processor to execute the instructions to: receive a packet from another device different than the device, the packet being associated with a request to access a resource in a network associated with the device, search a first data structure, using particular information in the packet, to determine whether the first data structure stores an entry that includes information matching the particular information, identify, in the entry, information identifying a particular application being executed by the other device when the first data structure stores the entry that includes the information matching the particular information, compare the particular information to information in a second data structure to identify the particular application being executed by the other device when the first data structure does not store the entry that includes the information matching the particular information, the second data structure being different than the first data structure, identify, based on the particular application, information associated with accessing the resource in the network, and selectively grant, to the other device and based on the information associated with accessing the resource, access to the resource.
Independent claims3
68 paragraphs in 5 sections, as filed
BACKGROUND
00011. Field of the Invention
0002Implementations described herein relate generally to network communications and, more particularly, to identifying applications associated with network communications.
00032. Description of Related Art
0004Attacks on networks and unauthorized access to network resources have become an increasing problem for entities that are responsible for maintaining network security and providing access to network resources to a number of users. For example, an attack originating from a single user/node may result in a network being unable to provide legitimate users with the desired services and may even result in the network crashing.
0005As a result, network security devices typically limit access to network resources based on various authentication procedures designed to limit access to only authorized users executing approved applications. One problem with granting access to a client device in this manner is that it typically takes considerable processing resources to determine whether the client device is an authorized user executing an approved application. In addition, conventional authorization procedures do not scale well for high speed networks.
SUMMARY
0006According to one aspect, a method is provided. The method includes receiving a first communication from a first client device and identifying a destination port number, a protocol and a destination address associated with the first communication. The method also includes identifying a first application being executed by the first client device based on the destination port number, the protocol and the destination address associated with the first communication.
0007According to another aspect, a first network device may include at least one memory configured to store a first database including information identifying port information, protocol information and destination address information associated with each of a plurality of applications. The first network device may also include processing logic coupled to the memory. The processing logic may be configured to receive a first communication from a first client device and identify a port number and at least one of a protocol or a destination associated with the first communication. The processing logic may also be configured to access the first database to identify a first application being executed by the first client device based on the port number and at least one of the protocol or the destination associated with the first communication.
0008According to still another aspect, a computer-readable medium having stored thereon sequences of instructions which, when executed by a processor, cause the processor to receive a first communication from a first client device and identify a destination port number, a protocol and a destination address associated with the first communication. The instructions also cause the processor to identify a first application being executed by the first client device based on the destination port number, the protocol and the destination address associated with the first communication.
BRIEF DESCRIPTION OF THE DRAWINGS
0009The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate an embodiment of the invention and, together with the description, explain the invention. In the drawings,
0010<figref idref="DRAWINGS">FIG. 1</figref> is a diagram of an exemplary network in which systems and methods described herein may be implemented;
0011<figref idref="DRAWINGS">FIG. 2</figref> is a block diagram illustrating an exemplary configuration of a client, the network device and the server of <figref idref="DRAWINGS">FIG. 1</figref>;
0012<figref idref="DRAWINGS">FIG. 3</figref> is an exemplary functional block diagram of components implemented in the network device of <figref idref="DRAWINGS">FIG. 2</figref>;
0013<figref idref="DRAWINGS">FIG. 4</figref> illustrates an exemplary implementation of the application database of <figref idref="DRAWINGS">FIG. 3</figref>;
0014<figref idref="DRAWINGS">FIG. 5</figref> is a flow diagram illustrating exemplary processing associated with storing application related information in the application database of <figref idref="DRAWINGS">FIG. 3</figref>; and
0015<figref idref="DRAWINGS">FIG. 6</figref> is a flow diagram illustrating exemplary processing associated with identifying an application.
DETAILED DESCRIPTION
0016The following detailed description of the invention refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements. Also, the following detailed description does not limit the invention. Instead, the scope of the invention is defined by the appended claims and equivalents.
Exemplary Network
0017<figref idref="DRAWINGS">FIG. 1</figref> is a diagram of an exemplary network <b>100</b> in which systems and methods described herein may be implemented. Network <b>100</b> may include clients <b>110</b>-<b>1</b>, <b>110</b>-<b>2</b>, <b>110</b>-<b>3</b> (referred to herein collectively as clients <b>110</b>), network device <b>120</b>, server <b>130</b> and network <b>140</b>. The exemplary configuration illustrated in <figref idref="DRAWINGS">FIG. 1</figref> is provided for simplicity. It should be understood that a typical network may include more or fewer devices than illustrated in <figref idref="DRAWINGS">FIG. 1</figref>. In addition, other devices that facilitate communications between the various entities illustrated in <figref idref="DRAWINGS">FIG. 1</figref> may also be included in network <b>100</b>.
0018Clients <b>110</b> may each include a device, such as a personal computer, a laptop computer, a personal digital assistant (PDA), a web-based appliance, a wireless telephone or another type of computation or communication device, or a process running on one of these devices. Clients <b>110</b> may communicate with server <b>130</b> over network <b>140</b> via wired, wireless or optical connections.
0019Network device <b>120</b> may include a firewall device, an intrusion detection system, a router, a server, or another device that performs security related functions associated with accessing resources in network <b>100</b>, such as server <b>130</b> and/or resources associated with server <b>130</b>. In an exemplary implementation, network device <b>120</b> may identify an application associated with communications from clients <b>110</b> and apply access policies associated with the identified application to determine whether to grant access to the desired resource, as described in detail below. Network device <b>120</b> may also dynamically update application related information associated with applications executed by clients <b>110</b> to facilitate determinations associated with granting, denying or limiting access to various resources, as described in detail below.
0020Server <b>130</b> may include a server/computing device, or a set of servers/computing devices, that provides clients <b>110</b> with access to various resources in network <b>100</b>. In some implementations, the network resources reside on server <b>130</b>. In other implementations, the network resources may be located externally with respect to server <b>130</b> (not shown in <figref idref="DRAWINGS">FIG. 1</figref>).
0021Network <b>140</b> may include one or more networks, such as a local area network (LAN) or a private network, such as a company network or intranet. Network <b>140</b> may also include a wide area network (WAN), a metropolitan area network (MAN), a telephone network, such as the Public Switched Telephone Network (PSTN), the Internet, a cellular network, a satellite network, another type of network or a combination of networks.
Exemplary Device Architecture
0022<figref idref="DRAWINGS">FIG. 2</figref> illustrates an exemplary configuration of network device <b>120</b>. Clients <b>110</b> and server <b>130</b> may be configured in a similar manner. Network device <b>120</b> may include a bus <b>210</b>, a processor <b>220</b>, a main memory <b>230</b>, a read only memory (ROM) <b>240</b>, a storage device <b>250</b>, an input device <b>260</b>, an output device <b>270</b>, and a communication interface <b>280</b>. Bus <b>210</b> may include a path that permits communication among the elements of network device <b>120</b>.
0023Processor <b>220</b> may include a processor, microprocessor, application specific integrated circuit (ASIC), field programmable gate array (FPGA) or processing logic that may interpret and execute instructions. Memory <b>230</b> may include a random access memory (RAM) or another type of dynamic storage device that may store information and instructions for execution by processor <b>220</b>. ROM <b>240</b> may include a ROM device or another type of static storage device that may store static information and instructions for use by processor <b>220</b>. Storage device <b>250</b> may include a magnetic and/or optical recording medium and its corresponding drive.
0024Input device <b>260</b> may include a mechanism that permits an operator to input information to network device <b>120</b>, such as a keyboard, a mouse, a pen, voice recognition and/or biometric mechanisms, etc. Output device <b>270</b> may include a mechanism that outputs information to the operator, including a display, a printer, a speaker, etc. Communication interface <b>280</b> may include any transceiver-like mechanism that enables network device <b>120</b> to communicate with other devices and/or systems. For example, communication interface <b>280</b> may include a modem or an Ethernet interface to a LAN. Alternatively, communication interface <b>280</b> may include other mechanisms for communicating via a network, such as network <b>140</b>.
0025Network device <b>120</b> may perform processing associated with identifying applications executed by clients <b>110</b> and providing access management, as described in detail below. According to an exemplary implementation, network device <b>120</b> may perform these operations in response to processor <b>220</b> executing sequences of instructions contained in a computer-readable medium, such as memory <b>230</b>. A computer-readable medium may be defined as a physical or logical memory device and/or carrier wave.
0026The software instructions may be read into memory <b>230</b> from another computer-readable medium, such as data storage device <b>250</b>, or from another device via communication interface <b>280</b>. The software instructions contained in memory <b>230</b> may cause processor <b>220</b> to perform processes that will be described later. Alternatively, hard-wired circuitry may be used in place of or in combination with software instructions to implement processes described herein. Thus, implementations described herein are not limited to any specific combination of hardware circuitry and software.
0027<figref idref="DRAWINGS">FIG. 3</figref> is an exemplary functional block diagram of elements implemented in network device <b>120</b>. Referring to <figref idref="DRAWINGS">FIG. 3</figref>, network device <b>120</b> may include signature database <b>310</b>, application identifier <b>320</b>, application database <b>330</b>, policy database <b>340</b> and policy logic <b>350</b>. One or more of these elements in network device <b>120</b> may be implemented in, for example, software stored in memory <b>230</b> and executed by processor <b>220</b>. Alternatively, one or more of these elements may be implemented in hardware or a combination of hardware and software.
0028Signature database <b>310</b> may store information associated with various software applications that may be executed by clients <b>110</b>. These applications may include peer-to-peer (P2P) applications, client-server applications, or other application that may be executed by clients <b>110</b>. In an exemplary implementation, signature database <b>310</b> may store signature information associated with various applications, along with information identifying the particular application. The terms “signature information” and “signature” as used herein refer to characteristic information identifying, for example, data patterns, strings, expressions, etc., that are associated with various applications and may be used to identify applications being executed by clients <b>110</b>.
0029Application identifier <b>320</b> may include logic that receives data transmitted in network <b>100</b>, such as data transmitted from clients <b>110</b> to server <b>130</b> and vice versa, and identifies an application executed by a particular client <b>110</b>. For example, application identifier <b>320</b> may receive one or more data packets from client <b>110</b>-<b>1</b>, compare information in the data packet(s) to information in signature database <b>310</b> and identify the application being executed by client <b>110</b>-<b>1</b> by matching information in the packet(s) transmitted from client <b>110</b>-<b>1</b> to information in signature database <b>310</b>.
0030In an exemplary implementation, application identifier <b>320</b> may include deterministic finite automaton (DFA) logic and/or perl compatible regular expression (PCRE) logic that searches for a pattern and/or a regular expression (regex) in signature database <b>310</b> that matches a signature (e.g., a pattern, expression, string, etc.) in one or more client-to-server (CTS) packets sent from client <b>110</b>-<b>1</b>. Application identifier <b>320</b> may also examine one or more server-to-client (STC) packets sent from server <b>130</b> to client <b>110</b>-<b>1</b> to verify the application executed by client <b>110</b>-<b>1</b>, as described in more detail below.
0031Application database <b>330</b> may store information identifying applications that may be executed by various clients <b>110</b> along with other information associated with the particular applications. The information in application database <b>330</b> may then be used by application identifier <b>320</b> to quickly identify a particular application being executed by one of clients <b>110</b>.
0032For example, <figref idref="DRAWINGS">FIG. 4</figref> illustrates an exemplary implementation of application database <b>330</b>. Referring to <figref idref="DRAWINGS">FIG. 4</figref>, application database <b>330</b> may include port number field <b>410</b>, protocol field <b>420</b>, destination field <b>430</b> and application field <b>440</b>. Port number field <b>410</b> may include information identifying a destination port number associated with data packets transmitted from clients <b>110</b>. The destination port number may be included in the header of a transmission control protocol/Internet protocol (TCP/IP) packet and may represent a destination port on a destination device, such as a destination port on server <b>130</b>. Protocol field <b>420</b> may represent a protocol associated with the data packets transmitted from clients <b>110</b>. The protocol information may also be included in the header of the packet. Exemplary protocols include TCP, user datagram protocol (UDP) and any number of additional protocols used in network communications.
0033Destination field <b>430</b> may represent a destination associated with data packets transmitted from clients <b>110</b>. For example, destination field <b>430</b> may represent a destination server, such as server <b>130</b>. In this case, destination field <b>430</b> may include an IP address, such as an IP address associated with server <b>130</b> or IP addresses associated with other servers (not shown) in network <b>100</b>.
0034Application field <b>440</b> may represent the application associated with the particular port number, protocol and destination information stored in fields <b>410</b>, <b>420</b> and <b>430</b>. In an exemplary implementation, once an application associated with server <b>130</b> and being executed by client <b>110</b>, such as client <b>110</b>-<b>1</b>, has been identified by application identifier <b>320</b>, application identifier <b>320</b> may store the port number, protocol and destination information associated with the communication from client <b>110</b>-<b>1</b> in fields <b>410</b>, <b>420</b> and <b>430</b>, along with the identified application in application field <b>440</b>, as described in more detail below.
0035Referring back to <figref idref="DRAWINGS">FIG. 3</figref>, policy database <b>340</b> may store various access policies and/or rules associated with accessing server <b>130</b> and/or resources associated with server <b>130</b>. For example, policy database <b>340</b> may store information indicating that clients <b>110</b> running a particular application must be running anti-virus software, anti-spyware software, etc. Policy database <b>340</b> may also store rules indicating a maximum amount of data that client <b>110</b>-<b>1</b> may transmit and/or receive (e.g., a maximum bandwidth) when executing a particular application. Policy database <b>340</b> may store any other access rules/policies associated with accessing resources on network <b>100</b>, such as server <b>130</b>, based on the particular network and resources being accessed.
0036Policy logic <b>350</b> may include logic that receives information from application identifier <b>320</b> that identifies a particular application being executed by one of clients <b>110</b>, such as client <b>110</b>-<b>1</b>. Policy logic <b>350</b> may then access policy database <b>340</b> and identify particular rules and/or access policies associated with the particular application. Policy logic <b>350</b> may then apply the particular access rules/policies to the communication session initiated by client <b>110</b>-<b>1</b> with server <b>130</b> to ensure that client <b>110</b>-<b>1</b> is in compliance with the particular access policies, as described in detail below.
Exemplary Processing
0037<figref idref="DRAWINGS">FIG. 5</figref> is a flow diagram illustrating exemplary processing associated with identifying applications in network <b>100</b>. Processing may begin with a client, such as client <b>110</b>-<b>1</b>, attempting to contact or access server <b>130</b>. Network device <b>120</b> may receive the communication from client <b>110</b>-<b>1</b> (act <b>510</b>). For example, network device <b>120</b> may be configured to receive and/or filter access requests from a number of clients <b>110</b> that are intended for server <b>130</b>. In some implementations, network device <b>120</b> may be an edge device (e.g., an edge router, an edge intrusion detection systems, edge firewall, etc.) or may be included in an edge device that is configured to receive requests associated with a number of clients <b>110</b> that are intended for server <b>130</b>.
0038Network device <b>120</b> may then examine one or more packets from client <b>110</b>-<b>1</b> to identify the application being executed by client <b>110</b>-<b>1</b> (act <b>520</b>). For example, as discussed above, application identifier <b>320</b> may receive one or more CTS packets from client <b>110</b>-<b>1</b> and compare information in the received CTS packet(s) to information in signature database <b>310</b> to attempt to identify the application being executed by client <b>110</b>-<b>1</b>. In an exemplary implementation, application identifier <b>320</b> may identify the application by performing a pattern matching algorithm, such as a DFA algorithm, a PCRE algorithm, or another algorithm to identify patterns, expressions, strings, etc., used in the communication from client <b>110</b>-<b>1</b> that match or correspond to a signature stored in signature database <b>310</b>. For example, application identifier <b>320</b> may search signature database <b>310</b> using the initial CTS packet from client <b>110</b>-<b>1</b> for a pattern or regex that matches a pattern or expression included in the CTS communication.
0039Assume that application identifier <b>320</b> identifies a match in signature database <b>310</b>, such as a match corresponding to a P2P application. After identifying the application being executed by client <b>110</b>-<b>1</b>, network device <b>120</b> may forward the CTS communication to server <b>130</b> via network <b>140</b> (act <b>520</b>).
0040Server <b>130</b> may receive the communication from client <b>110</b>-<b>1</b> and send a response to client <b>110</b>-<b>1</b>. For example, server <b>130</b> may send an acknowledgement message to client <b>110</b>-<b>1</b> indicating that the request for access has been received. The response message may include additional information for facilitating a communication session between client <b>110</b>-<b>1</b> and server <b>130</b> and/or facilitating a communication session with another client, such as client <b>110</b>-<b>2</b> if the application is a P2P application.
0041Network device <b>120</b> may receive the response message (i.e., one or more STC packets) from server <b>130</b> intended for client <b>110</b> (act <b>530</b>). Application identifier <b>320</b> may then examine the STC packet(s) to verify the application associated with the initial communication session from client <b>110</b>-<b>1</b> (act <b>530</b>).
0042For example, application identifier <b>320</b> may examine the STC packet(s) to ensure that the CTS packet(s) sent to server <b>130</b> was legitimate and that the CTS packet(s) was not part of, for example, a denial of service (DoS) attack. Application identifier <b>320</b> may perform the verification by determining whether the STC packet(s) sent in response to the initial communication from client <b>110</b>-<b>1</b> is a legitimate response or acknowledgement packet and that the response indicates that the original communication from client <b>110</b>-<b>1</b> was a recognized request, as opposed to being an unrecognizable message and/or recognized as being part of an attack on server <b>130</b>. Assume that application identifier <b>320</b> verifies the identified application based on the STC packet(s).
0043Application identifier <b>320</b> may then store information in application database <b>330</b> based on the initial communication from client <b>110</b>-<b>1</b>. For example, application identifier <b>320</b> may store the destination port number included in the initial CTS packet in port number field <b>410</b> along with information corresponding to the identified application in application field <b>440</b> (act <b>540</b>). In an exemplary implementation, the initial CTS packet may include a TCP port field or a UDP port field. In these cases, application identifier <b>320</b> may use the information in this port field to identify the particular destination port number. Application identifier <b>320</b> may also store additional information in application database <b>330</b> (act <b>540</b>). For example, in an exemplary implementation, application identifier <b>320</b> may store the protocol associated with the communication from client <b>110</b>-<b>1</b> in protocol field <b>420</b> and store information identifying the destination device (i.e., server <b>130</b> in this example) in destination field <b>430</b>.
0044In this manner, application identifier <b>320</b> may populate application database <b>330</b> with information from a client <b>110</b>-<b>1</b> that associates a destination port number, a protocol, and/or a destination address to a particular application. Network device <b>120</b> may receive additional communications from various clients <b>110</b> and may populate application database <b>330</b> in a similar manner. That is, network device <b>120</b> may identify the particular application associated with a communication session from client <b>110</b>, optionally verify the identified application based on one or more STC packets, and store the destination port number, protocol and/or destination address information in application database <b>330</b> along with information identifying the particular application. Network device <b>120</b> may then use this information to quickly identify, for example, applications being executed on non-traditional or non-standard ports on server <b>130</b> or otherwise unexpected ports on server <b>130</b>.
0045For example, in conventional systems, port number <b>80</b> is a standard or traditional port that is used by server <b>130</b> executing an HTTP application. However, in some situations, server <b>130</b> may run various applications using different ports on server <b>130</b>. As an example, server <b>130</b> may run a P2P application, an instant messaging (IM) application or another application via port number <b>80</b> of server <b>130</b>. In this case, network device <b>120</b> may be able to identify applications that are being executed over non-standard or non-traditional ports based on information stored in application database <b>330</b>, as described in more detail below.
0046<figref idref="DRAWINGS">FIG. 6</figref> is a flow diagram illustrating exemplary processing associated with identifying applications using information in application database <b>330</b>. Processing may begin with a client, such as client <b>110</b>-<b>2</b>, attempting to access server <b>130</b> and/or resources associated with server <b>130</b>. Network device <b>120</b> may receive the access request in a manner similar to that described above with respect to <figref idref="DRAWINGS">FIG. 5</figref> (act <b>610</b>).
0047Application identifier <b>320</b> may then examine, for example, one or more packets in the CTS communication to identify particular information associated with the communication (act <b>610</b>). For example, application identifier <b>320</b> may identify the destination port number, protocol and/or destination device (e.g., destination IP address) associated with the communication from client <b>110</b>-<b>2</b>. This information may be included in the header of the first data packet transmitted from client <b>110</b>-<b>2</b>.
0048Application identifier <b>320</b> may then use the identified destination port number, protocol and destination device to search application database <b>330</b> for an entry in which fields <b>410</b>, <b>420</b> and <b>430</b> match the identified destination port number, protocol and destination device, respectively (act <b>620</b>). If a match is found, application identifier <b>320</b> identifies the application stored in application field <b>440</b> for the matching entry (acts <b>630</b> and <b>640</b>).
0049In the event that a match is not found, application identifier <b>320</b> may identify the application using signature database <b>310</b> (acts <b>630</b> and <b>650</b>). That is, application identifier <b>320</b> may compare information (e.g., patterns, expressions, strings, etc.) in the communication from client <b>110</b>-<b>2</b> to identify a match or correspondence with information stored in signature database <b>310</b> in a manner similar to that described above with respect to <figref idref="DRAWINGS">FIG. 5</figref>. Assume that application identifier <b>320</b> identifies a match in signature database <b>310</b> and identifies an application associated with the match. In this case, application identifier <b>320</b> may populate application database <b>330</b> with information corresponding to the destination port, protocol and destination address in the communication from client <b>110</b>-<b>2</b>.
0050In either case, after an application is identified, application identifier <b>320</b> may forward the identified application to policy logic <b>350</b>. Policy logic <b>350</b> may then access policy database <b>340</b> to identify the access rules/policies associated with the particular application (act <b>660</b>). Policy logic <b>350</b> may then apply the identified policy/rules to the communication session from client <b>110</b>-<b>2</b> to server <b>130</b> (act <b>660</b>).
0051In this manner, network device <b>120</b> may quickly identify an application being executed by one of clients <b>110</b> by searching application database <b>330</b> as opposed to performing signature analysis for each communication or simply assuming that a communication to a particular port is always associated with a particular application. This ensures that application identifier <b>320</b> will identify the appropriate application, even when a particular application is running on a non-standard port of server <b>130</b>. Identifying the correct application further ensures that correct access policies/rules will be applied to the communication session associated with the identified application.
0052In some implementations, network <b>100</b> may include a number of network devices similar to network device <b>120</b>. In this case, information obtained from one network device, such as network device <b>120</b>, may be shared with other network devices. For example, network device <b>120</b> may periodically send some or all of the information stored in application database <b>330</b> to other network devices involved in providing network security in network <b>100</b>. The receiving network device may then compare the information stored in its own application database with the received information and add additional entries to its application database based on the received information. In this manner, information obtained by one network device (e.g., network device <b>120</b>) may be quickly leveraged by other network devices to identify applications being executed by clients <b>110</b>.
0053In addition, in some implementations, network device <b>120</b> may be used to identify a communication over a standard port that is not conforming to an application signature conventionally associated with the standard port or any other known application signature. For example, assume that a communication to or from port <b>80</b> of a server (e.g., server <b>130</b>) does not match a signature associated with an HTTP application which is traditionally run on port <b>80</b>. Further assume that the communication on port <b>80</b> does not match any other application signatures in signature database <b>310</b>. In this case, network device <b>120</b> may determine that the server (e.g., server <b>130</b>) may be a rogue server on network <b>100</b> that is posing as an HTTP server. In this case, network device <b>120</b> may apply security related rules and/or access policies for communications to and from that particular server.
CONCLUSION
0054Systems and methods described herein enable a network device to quickly identify an application being executed by a client. Policy rules may then be applied based on the identified application. Advantageously, this may permit a network device to provide access to a desired resource to large numbers of clients without consuming significant processing resources. Further, information obtained by one network device may be communicated to other devices to enable the other devices to leverage the obtained information.
0055In this disclosure, there is shown and described the preferred embodiments of the invention, but, as aforementioned, it is to be understood that the invention is capable of use in various other combinations and environments and is capable of changes or modifications within the scope of the inventive concept as expressed herein.
0056For example, implementations have been described with examples of a network device including particular logic devices/modules and databases. It should be understood that these logic modules/devices and/or databases may be combined in other implementations. In addition, implementations have been described as having a separate network device <b>120</b> providing various functions associated with communications intended for server <b>130</b>. In other implementations, the functions performed by network device <b>120</b> may be included in server <b>130</b> or in another device associated with server <b>130</b>.
0057Further, in the exemplary implementation described above, network device <b>120</b> was described as analyzing the first one or more packets from clients <b>110</b> to identify the application being executed. In some cases, a first packet received in a communication from one of clients <b>110</b> may not be the actual first data segment. That is, the packets may be sent out of order. In this case, application identifier <b>320</b> may check a transmission control protocol (TCP) sequence number to ensure that the data segment used for signature pattern matching and/or for identifying the port, protocol and/or destination device includes the appropriate information. That is, application identifier <b>320</b> makes sure that the first one or more packets are the sequential first packet(s) in a communication session.
0058In addition, some of the exemplary implementations described above referred to using the destination port number, protocol and destination device/address included in a CTS packet to identify the appropriate application in application database <b>330</b>. In other implementations, the destination port number along with either the protocol or the destination address may be used to identify the appropriate application. In still other instances, the destination port number and other information associated with CTS packets may be used to identify the appropriate application.
0059Still further, aspects described herein have focused on identifying an application for security related purposes, such as using the identified application to identify security/access related rules/policies. In other implementations, the identified application may be used for any number of other purposes.
0060In addition, in some implementations, application identifier <b>320</b> may increase the level of granularity with which applications are identified. For example, application identifier <b>320</b> may identify that an Oracle application is being run on port <b>81</b> and that a manufacturing related or financial related application is being run inside the Oracle application. In this case, signature database <b>310</b> may store signature information that enables application identifier <b>320</b> to identify applications at this increased level of granularity (e.g., by manufacture, release/version number, etc.). This increased level of granularity with respect to the identified applications may allow network device <b>120</b> to further tailor its access policies associated with allowing clients <b>110</b> access to various resources in network <b>100</b>. This increase level of granularity may also allow an entity associated with network <b>100</b> to get a better idea of traffic on network <b>100</b>.
0061It will also be apparent to one of ordinary skill in the art that aspects of the invention, as described above, may be implemented in many different forms of software, firmware, and hardware in the implementations illustrated in the figures. The actual software code or specialized control hardware used to implement aspects consistent with the principles of the invention is not limiting of the invention. Thus, the operation and behavior of the aspects of the invention were described without reference to the specific software code—it being understood that one of ordinary skill in the art would be able to design software and control hardware to implement the aspects based on the description herein.
0062Further, certain portions of the invention may be implemented as “logic” that performs one or more functions. This logic may include hardware, such as a processor, microprocessor, an application specific integrated circuit or a field programmable gate array, software, or a combination of hardware and software, such as a processor/microprocessor executing instructions stored in a memory.
0063In addition, series of acts have been described with respect to <figref idref="DRAWINGS">FIGS. 5 and 6</figref>. The order of the acts may be varied in other implementations consistent with the invention. Moreover, non-dependent acts may be performed in parallel. Further, the invention is not limited to any specific combination of hardware circuitry and/or software.
0064No element, act, or instruction used in the description of the present application should be construed as critical or essential to the invention unless explicitly described as such. Also, as used herein, the article “a” is intended to include one or more items. Where only one item is intended, the term “one” or similar language is used. Further, the phrase “based on,” as used herein is intended to mean “based, at least in part, on” unless explicitly stated otherwise.
0065The scope of the invention is defined by the claims and their equivalents.
Contents5
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US8978113B2 | Cited by | United States of America | Search report |
| US11652829B2 | Cited by | United States of America | Applicant |
| US11036836B2 | Cited by | United States of America | Applicant |
| US10417421B2 | Cited by | United States of America | Applicant |
| US10567403B2 | Cited by | United States of America | Applicant |
| US10839075B2 | Cited by | United States of America | Applicant |
| US2012167184A1 | Cited by | United States of America | Pre-grant |
| US10904293B2 | Cited by | United States of America | Applicant |
| US2018302444A1 | Cited by | United States of America | Applicant |
| US9762614B2 | Cited by | United States of America | Applicant |
| US11449613B2 | Cited by | United States of America | Applicant |
| US11461466B2 | Cited by | United States of America | Applicant |
| US9781164B2 | Cited by | United States of America | Applicant |
| US11157976B2 | Cited by | United States of America | Applicant |
| US2024250944A1 | Cited by | United States of America | Search report |
| US12255926B2 | Cited by | United States of America | Applicant |
| US11775644B2 | Cited by | United States of America | Applicant |
| US11604861B2 | Cited by | United States of America | Applicant |
| US10904254B2 | Cited by | United States of America | Applicant |
| US10419459B2 | Cited by | United States of America | Applicant |
| CN103491025A | Cited by | China | Search report |
| US11947674B2 | Cited by | United States of America | Applicant |
| US9843595B2 | Cited by | United States of America | Applicant |
| US11822653B2 | Cited by | United States of America | Applicant |
| US9747444B1 | Cited by | United States of America | Applicant |
| US10621344B2 | Cited by | United States of America | Applicant |
| US10291656B2 | Cited by | United States of America | Applicant |
| US10951632B2 | Cited by | United States of America | Applicant |
| US9497622B2 | Cited by | United States of America | Applicant |
| US12192170B2 | Cited by | United States of America | Applicant |
| US9756079B2 | Cited by | United States of America | Applicant |
| US10089462B2 | Cited by | United States of America | Applicant |
| US10397227B2 | Cited by | United States of America | Search report |
| US10404722B2 | Cited by | United States of America | Applicant |
| US10951659B2 | Cited by | United States of America | Applicant |
| US11757885B2 | Cited by | United States of America | Search report |
| US2015215282A1 | Cited by | United States of America | Applicant |
| US12301574B2 | Cited by | United States of America | Search report |
| US11757941B2 | Cited by | United States of America | Applicant |
| US10057295B2 | Cited by | United States of America | Applicant |
| WO2020037118A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US11757835B2 | Cited by | United States of America | Applicant |
| US10417400B2 | Cited by | United States of America | Applicant |
| US2020059452A1 | Cited by | United States of America | Search report |
| US12380476B2 | Cited by | United States of America | Applicant |
| US11743297B2 | Cited by | United States of America | Applicant |
| US10951581B2 | Cited by | United States of America | Search report |
| US11316905B2 | Cited by | United States of America | Applicant |
| US10999302B2 | Cited by | United States of America | Applicant |
| US2021152558A1 | Cited by | United States of America | Search report |
| US12034772B2 | Cited by | United States of America | Applicant |
| US12314396B2 | Cited by | United States of America | Applicant |
| US10541969B2 | Cited by | United States of America | Applicant |
| US2014101716A1 | Cited by | United States of America | Pre-grant |
| US10313368B2 | Cited by | United States of America | Applicant |
| US10284603B2 | Cited by | United States of America | Applicant |
| US2018205760A1 | Cited by | United States of America | Applicant |
| US10666688B2 | Cited by | United States of America | Applicant |
| US11050712B2 | Cited by | United States of America | Applicant |
| US10084799B2 | Cited by | United States of America | Applicant |
| US9973501B2 | Cited by | United States of America | Search report |
6 members in 1 office
Members6
| Document | Office | Kind | |
|---|---|---|---|
| US7953895B1 | United States of America | B1 | |
| US2011202672A1 | United States of America | A1 | |
| US8321595B2 | United States of America | B2 | |
| US2013074144A1 | United States of America | A1 | |
| US8484385B2 | United States of America | B2 | |
| US9049128B1 | United States of America | B1 |
39 transactions on the USPTO file
Allowed without a rejection on record.
- Non-final rejections
- 0
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 12th Year, Large EntityM1553 | M1553 | |
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Printer Rush- No mailingTCPB | TCPB | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Response to 312 Amendment (PTO-271)MN271 | MN271 | |
| Response to Amendment under Rule 312N271 | N271 | |
| Pubs Case Remand to TCPUBTC | PUBTC | |
| Amendment after Notice of Allowance (Rule 312)AllowedA.NA | A.NA | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Reasons for AllowanceEX.R | EX.R | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Paralegal or electronic terminal disclaimer approvedP574 | P574 | |
| Terminal Disclaimer FiledDIST | DIST | |
| Interview Summary - Examiner InitiatedEXIE | EXIE | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Application Is Now CompleteCOMP | COMP | |
| Filing Receipt - UpdatedFLRCPT.U | FLRCPT.U | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Preliminary AmendmentA.PE | A.PE | |
| Payment of additional filing fee/PreexamFLFEE | FLFEE | |
| Notice Mailed--Application Incomplete--Filing Date AssignedINCD | INCD | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Cleared by L&R (LARS)L128 | L128 | |
| Referred to Level 2 (LARS) by OIPE CSRL198 | L198 | |
| Preliminary AmendmentA.PE | A.PE | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
5 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP |
Numbers
- Publication
- 20130074144
- Application
- 13616333
Titles
- English
- APPLICATION IDENTIFICATION
Patent term adjustment
- Applicant delay
- −11 days
- Net adjustment
- 0 days
Classification
- CPC, 5
- H04L63/10
- H04L43/10
- H04L63/0236
- H04L63/0245
- H04L63/1408
- IPC, 1
- G06F21 00
- USPC, 1
- 726001000