InfoSecter Introduction
Welcome to the Information Security Dissector also known as InfoSecter.
With this tool, you will gain a greater understanding of how
accurately your network security devices are enforcing your
enterprise's security policy.
InfoSecter works on configurations from a variety of network security device
vendors. All of these devices control how packets are handled through the
evaluation of ordered lists of rules often called access control lists
(ACLs). Changes to a rule within a long ordered list may have unintended
consequences. InfoSecter helps you understand how your current configurations
operation and the implications of potential changes without having to deploy
the configurations.
InfoSecter supports the types of analysis.
- Self Conflict -
Compare elements of the ordered lists against
later elements in the list. Report on rules in the same list that could
match the same packet. Such conflicts may be innocuous, but poorly
understood conflicts are the source of most configuration errors.
- Cross Conflict -
Compare how two different configurations
process packets. Identify ranges of packets that are handled differently
between the two configurations. This is useful to analyze the effects of a
potential configuration update or to understand whether two devices that should
be handling packets the same way really are.
- Dissection -
Eliminate all conflicts from the rules in the configuration
files. Each potential packet will match one and only one slice
from the table.
By filtering, the user can hone in on an area of interest and concentrate on
how specific packets in that region will be handled by the configuration.
- Policy Validation -
Create a higher level constraint of how you believe traffic should be
processed based on your understanding of your organization's security
policy. Apply the constraint to a device configuration, and InfoSecter
computes the packets where the processing does not meet the constraint.
InfoSecter is implemented in three programs:
InfoSecter processes configurations from a growing list of security device vendors. The current list includes:
1 Basic Concepts
InfoSecter processes security device configurations to help the user understand
how his network security device configuration really works. InfoSecter
operations involve a number of core concepts.
1.1 Cross Interface
For some families of security devices (particularly Cisco devices),
the configuration language describes
how packets should be handled with respect to a single interface either for
packets entering that interface or packets leaving that interface.
At run time, packets will cross two interfaces, and thus features configured
on both the inbound and outbound interfaces will affect how that packet is
handled. It can be useful to look at conflicts on a single interface basis,
but it is can also be useful to understand how the device will handle
packets flowing over pairs of interfaces.
The Cross Interface option in Analyzer changes the operation
so pairs
of interfaces will be analyzed. The routing information and address translation
information in the configuration is used to determine how packets will flow
between pairs of interfaces at run time. InfoSecter will be
conservative about determining whether a packet can cross a pair of interfaces,
so there may be reports about packets crossing a pair of interfaces when
in reality those packets would not cross those interfaces.
1.2 Security Device Features
Security devices include firewalls, IPSec devices, proxies, and address
translation devices. The trend in security devices is to include more
and more functionality in a single box as witnessed by the expanding
Unified Threat Management (UTM) space. Therefore, when reviewing the
implementation of a security device either by manually reading the
configurations, scanning,
or using a tool like InfoSecter, it is not sufficient to merely determine
whether the device will drop or pass a packet. The implementation review
must also determine how the device will process packets that eventually
pass through the device. If the policy indicates that traffic must be
proxied in when passed through the security device, the implementation
review must include this information.
InfoSecter tracks the application of the following security device features
- Packet filtering - Is the packet dropped or passed through
the device?
- Address translation - The addresses or ports in the packet are
changed as it
passes through the device. In the current implementation InfoSecter tracks
this information to correctly compute the Cross Interface option.
- IPSec tunneling - The packet is passed into an IPSec tunnel.
- Inspect - Stateful or deep packet inspection is turned on for
the packet.
- URL filtering - The packet content is passed through a URL
filter. This feature is tracked for PIX, ASA, and FWSM devices.
- AAA - Authentication, Authorization, or Auditing features
are enabled for the specified packet. This feature is tracked for
PIX, ASA, and FWSM devices.
Feature Alignment
On many security devices, different security features are specified in
different ACLs or rule tables. This can result in shorter and
simpler rule lists for some devices, but it makes it difficult for a human
to look at the configuration and get a good understanding of how packets
are processed end-to-end. For Dissection, Cross Conflict, and Policy Validation
InfoSecter first aligns all features that apply to a packet traversing
an interface (or a pair of interfaces in the Cross Interface case).
This means that the resulting reports show everything that will happen to
the packets enumerated in the report.
1.3 Self Conflict
This operation looks for conflicts between rules within the same rule table.
For most families of security devices
configuration of features is controlled by ordered rule lists
often called access control lists (ACLs).
If a packet matches a rule, the device will
apply the corresponding action even if a later rule also matches and
is what the system administrator intendend.
Almost all configurations will have conflicts within their tables,
and most of those conflicts will be innocuous.
However, unintended conflicts are a major source
of configuration errors, and conflicts should be carefully examined and
understood when reviewing a network security device configuration.
1.4 Cross Conflict
The Cross Conflict operation compares the functionality defined by a pair of
network security device configurations.
These may be configurations from
two different versions of a configuration for the same device, or
they may be configurations from two
devices that should be performing equivalent roles in a network security
architecture (potentially configurations from different versions
or different vendors).
Textual differences can be used as a quick approximation to a functional
difference, but the textual difference has some problems.
A straight
textual difference will catch changes that have no functional impact
(e.g. configuration element name changes).
The textual difference may miss functionality changes caused by
lines that are not changed directly but affected by textual changes to
earlier lines.
Change Review
Changes to large ordered rule tables can easily have unintended consequences.
By enumerating how packets will be handled differently between the two
configurations, you can easily review and understand all differences.
Cross Conflict reports can streamline your organization's change review process.
Rather than looking over all configuration lines in the new version
of a configuration file, you can concentrate on the lines that affect
functionality changes as indicated in the Cross Conflict report.
Device Migration
The Cross Conflict operation is useful when you are migrating from
one firewall device to another (say from a PIX to ASA or a IOS to Netscreen).
InfoSecter build common models from the configurations and performs a
functional comparison. Therefore, you can build a proposed configuration for
the
new device and then use the Cross Conflict operation to generate a report
of the packets that are handled differently between the two configurations,
and review that hopefully small set of packets to update your new device's
configuration as necessary.
The Cross Conflict operation can be performed against single interfaces or it
can analyze flows over pairs of interfaces using
Cross Interface mode.
1.5 Dissection
The Dissection operation
creates a table of non-conflicting packet areas called slices.
Each slice represents a set of packets that all have the same firewall
actions performed. Further, each possible packet will be present in
exactly one slice. This removes ambiguity when trying to
understand how a configuration will operate so that when the slice
containing a packet at issue is found no more searching is needed to
know that the behavior of the slice is how the packet would be handled
by the firewall.
Browsing
Combined with filtering, Dissection lets you
interactively learn about a configuration and determine if the
configuration is operating according to the guiding security policy.
This can be useful in the cases when you must quickly learn about new
configurations. For example, when you are new to an organization, your
organization must incorporate a set of devices (e.g. through a merger),
or you are a consultant or auditor working with a new customer.
Dissection and filtering can also be useful for remediation. Say you are
given a set of packets that are causing a problem, e.g. they are passing when
they shouldn't be or they are not being appropriately processed, but you
don't know which of the 100's or 1000's of lines in your configuration
need to be changed to fix the problem. You can
build a dissection report of the configuration, and then set up a filter to
concentrate on how the problem packets are being handled. The dissection
slices include references to the configuration lines that cause the
action. You have reduced the number of lines down to a handful, and
at this point it is generally obvious what needs to be changed in the
configuration.
You can dissect rule tables of independent interfaces. Alternatively, you can use the cross interface calculation to compute a dissection of how packets are handled as they flow across pairs of interfaces.
1.6 Policy Validation
It can be useful to have standing policy checks that are scripted to
be run against configurations at key points in the network security
implementation lifecycle. InfoSecter provides Querent
to help you write and manage descriptions of
sets of packets and their expected actions. InfoSecter can process
these packet descriptions or expressions against a device configuration
in one of two ways: as a query or a constraint.
In both cases, Analyzer computes the lines of the configuration that
affect the packets in the description.
In the query case, Analyzer creates a report that includes the packet
processing configuration lines that
match the packet expression.
In the constraint case, Analyzer creates a report
that includes that packet processing configuration lines that
do not match the packet expression.
Invoke a query if there are key areas of the packet space you
particularly want to review. This is very similar to settting filters
within Visualizer while reviewing a dissected
configuration.
Invoke a constraint if there are key action and packet settings
that must always be preserved. The packet expression specifies this
constraint. You only need to be informed if the constraint is violated.
Thus, you can develop a library of constraints based on the operations
in your information and run the constraints against every proposed configuration
change.
In both cases, the report describes the affected packet areas and provides lines from the packet expression to the configuration lines that impact the packet
for this configuration.
2 InfoSecter Visualizer
Visualizer is a graphical application in the InfoSecter product that is used to visualize the results of running Analyzer. It diplays the slices generated by Analyzer along with the original configuration(s) used. Visualizer also supports sorting and filtering the slices to rapidly locate the interesting slices and from there the original configuration source lines of interest. Analyzer can be run directly from Visualizer and for normal interactive use Visualizer will be the primary interface to InfoSecter.
There are five main areas in the Visualizer display
When two configurations are compared, there are two Config Inspectors and two Symbol Viewers, one pair for each configuration.
The Config Inspector and Symbol Viewer are dockable widgets. Such widgets can be undocked and moved
separately on the screen. The docking and undocking is performed by using your mouse to select and move the subwindow. Alternatively each dockable subwindow has a triangular icon in the upper right corner will undock and redock the window.
Not all areas will appear in all cases. Areas that are not useful for a particular result file are hidden.
Visualizer also has the Analysis Dialog which is a very complex widget in its own right and is used to configure a run of Analyzer.
Click on a link above for further detail on any of these components, or look below for an overview of Visualizer's main window.
Operations
| Operation | Use |
|---|
| New Analysis | Open the Analysis Dialog to run Analyzer and view the result. |
| View Analysis | View an already performed analysis by opening a file containing the results. |
| Save Results As | Save the current results in to a file for later viewing or use by another applicaiton. |
| Quit | Exit Visualizer |
| Operation | Use |
|---|
| Contents | View the InfoSecter documentation contents (including this file) |
| About | Display information about Visualizer and InfoSecter. |
| License | Open the License Viewer. |
Visualizer Main Window Overview
Here is an example of the main window of Visualizer.

The same image, with the components labeled.

The Symbol Viewer as an undocked window.

2.1 Main Grid
When a configuration is analyzed, a set of behavior slices is generated which describe the interesting behavior found by the analysis. The Main Grid is where those slices are displayed. Each row is one slice. Each column is a specific property of the slice. The properties displayed depend on the type of analysis done. Here is a complete list of all possible properties that may be displayed in the Main Grid.
- Index - Unique numbering of the slices. Always shown.
- Conflict Relation - Displayed as
(equals),
(subset),
(superset), or
(overlap).
This column value describes the relationship of the packet sets for the original conflicting slices. The relationship is always first slice to second slice. So a subset relation means that every packet in the first slice is also in the second and there are packets in the second not in the first. The displayed slice is always the intersection of the two conflicting slices. Shown for self conflict and cross config comparisons.
- Action Mismatch - A
in this column indicates that the actions of the conflicting slices do not match. Slices that do not have this mark are generally of less concern as the conflict does not affect the behavior of the security device.
Shown for self conflict and cross config comparisons.
- Scope - The scope of the configuration to which this slice applies. For dissection, this is the interface and the direction of packet processing (inbound or outbound). For the conflict analysis, the scope is made of the names of the rule tables that contribute to the conflict. In the case of a Cross Interface analysis, the scope is shown as the cross of two interface
names, the inbound interface and the outbound interface.
- Action - The actions that will be applied to packets in this slice. Firewall actions are permit and deny. IPSec actions include the name of the configuration element that defines the tunnel characteristics. Similarly, Proxy, AAA, and HTTP filtering feature actions refer to configuration elements that define the feature configuration. Always shown.
- Lines - The lines of the original configuration that contributed to this slice. When a row is selected, the lines listed are high-lighted in the Config Inspector. Shown for dissection and query/constraint results. For self conflict and configuration comparisons, the lines are available in the Conflict Inspector when a slice in the Main Grid is selected.
- The following columns describe packet characteristics of packets in the slice.
- Protocol - The protocols of the packets, i.e. the value of the protocol field in the IP packet header. This is IP (all
protocols), a single value, or a range of values. The values can be TCP, UDP, ICMP, or an integer if it is none of those.
- Source Service / Destination Service - The range of services for packets in the slice (source and destination respectively). A service is a combination of IP protocol and ancillary data for the protocol, if any. The protocols TCP, UDP, and ICMP have ancillary data which is displayed here. For other protocols, this value will be All or N/A. If the slice includes protocols with and without ancillary data, this may show as "Varies".
- Source Address / Destination Address - The range of IP addresses for packets in the slice (source and destination respectively). If the range is a single value, it is displayed as that address. If the range is a valid IP network, it is displayed in that form. Otherwise the minimum and maximum addresses of the range are displayed.
Column Operations
Each column can be sorted in ascending or descending order by left-clicking on
the column header. The currently sorted column displays an arrow head in the
header.
The columns can be widened or narrowed by dragging the dividing lines between the column headers left or right. The columns can be arranged by clicking and dragging a column header.
The main grid can have multiple tabs if multiple expressions are used for policy validation. Each expression that generates results has its own set of slices which are displayed in different tabs.
2.2 Filter and Query Tabs
The filter and query tabs are a tabbed display for packet expressions. The "Filter" tab displays the current filter expression. The "Query" tab displays the current query expression, if any. This tab will be available only when the result file was generated by a query or constraint analysis.
The Query tab is non-editable.
The Filter tab is not directly editable, but it can be changed to apply a filter to the Main Grid.
2.2.1 Filter Expressions
Filtering is a key feature of Visualizer. It is what lets you rapidly locate important information in the configuration. The essense is that you provide a specification for which slices are of interest, and then the Main Grid displays only slices that match the specification. The specification takes the form of a filter expression. The filter expression specifies the desired values of the columns for a slice and the Main Grid hides all slices that do not match. The remaining slices are those of interest.
Basics
Filtering is done by creating a filter expression and then applying it to the Main Grid. A filter expression is built out of predicates. A predicate is a column name, a comparison operator, and a value. For a particular slice, a predicate is true if the value in the slice for the named column compares correctly with the value in the predicate. The manner in which the value from the slice and the value in the predicate are compared is controlled by the comparison operator in the predicate.
Let's look at a few examples.
Consider this predicate
Destination Address ^ 192.168.56.0/24
The column name is "Destination Address" and the value is "192.168.56.0/24". The '^' character is the intersection operator. It is true if any destination address in the slice is the same as any address in the 192.168.56.0/24 network. If, instead of the destination address of the packets in the slice, we were concerned with the source address, we could use this predicate --
Source Address ^ 192.168.56.0/24
This is same as before except the source addresses in the slices are compared against the 192.168.56.0/24 network. When thinking of predicates, think of the column name as a stand in for the value in the slice, which is compared to the predicate value.
Every named column except "Index" can be used in a predicate. Each column has a specific type of value and the value in the predicate must be of that type. For instance, "Destination Address" must have a range of IP addresses, and "Scope" must have a list of scopes.
The full set of comparison operators is
| Name | Comparison |
|---|
| ^ | Interset | True if any value in the predicate is the same as any value in the slice. |
| -< | Contained by | True if every value in the slice is also in the predicate value. I.e., the slice values is entirely contained by (is a subset of) the predicate value. |
| >- | Contains | True if every value in the predicate value is also in the slice. I.e., the slice value entirely contains (is a superset of) the predicate value. |
| = | Equal | True if the predicate value and the slice value are identical. |
| < | Less than | True if the slice value is less than the predicate value. |
| <= | Less than or equal | True if the slice value is less than or equal to the predicate value. |
| > | Greater than | True if the slice value is greater than the predicate value. |
| >= | Greater than or equal | True if the slice is greater than or equal to the predicate value. |
Not every column supports every comparison operator. For instance, it makes no sense to check if one range of IP address is greater than another.
Combining predicates
Predicates are useful by themselves, but they are even more useful as building blocks to more complex filter expressions. Predicates can be combined using three binary operators.
| | Name | Meaning |
|---|
| | | Or | True if either or both sides is true. |
| & | And | True only if both sides are true. |
| * | Otherwise | Only used in Querent, listed here for completeness because it may be displayed in the Query tab. |
A binary operator can combine two predicates or it can combine the result another binary operator and a predicate, or two results, so that predicates can be chained together by binary operators.
For example,
Source Address ^ 10.10.0.0/16 | Source Address ^ 172.16.24.0/24 & Destination Service ^ TCP::HTTP
The "or" operator combines the predicates on "Source Address" and is true if the source addresses in the slice intersect the 10.10.0.0/16 network or the 172.16.24/24 network. The "and" operator is true if the "or" was true and the destination service range for the slice contains TCP port 80 (HTTP). Binary operators in a sequence operate in order from left to right. This can be changed by using parentheses. Binary operators cannot reach inside parentheses so any operators inside parentheses operate before those outside.
For example, this filter expression is the same as the previous despite the change in ordering because the parentheses force the source address comparisons before the destination service.
Destination Service ^ TCP::HTTP & ( Source Address ^10.10.0.0/16 | Source Address ^ 172.16.24.0/24 )
Without the parentheses the "and" operator would go first which is probably not what was desired. Parentheses can be used inside other parentheses providing complete control over the order of operation of binary operators. A pair of matched parentheses and its contents are referred to as a "sub-expression".
Negation
A filter expression can be negated by placing a '!' character in front of it.
! Actions >- permit
The predicate here is true if the actions for a slice include the "permit" action. The '!' negates that, turning true in to false and false in to true. As a result this filter expression is true if and only if the slice actions do not contain the "permit" action. Negation can be applied to either a predicate or a sub-expression. Negation only affects what is immediately after the '!' character, which is either a predicate or a sub-expression.
For example, going back we could have the filter expression
Destination Service ^ TCP::HTTP & ! ( Source Address ^ 10.10.0.0/16 | Source Address ^ 172.16.24.0/24 )
This is true if the destination service in the slice contains the HTTP port and the source address does not contain any address from the 10.10.0.0/16 network nor the 172.16.24.0/8 network. Without the parentheses the negation would affect only the predicate with the 10.10.0.0/16 network.
2.2.2 Editing Filters
There are two ways to create filter expressions in Visualizer. One is to use the context menu on cells in the Main Grid, the other is to type the expression in the filter edit box.
Creating filters from cell data
The simplest way to create a filter expression is to right click on a cell in the Main Grid. This will pop up a menu with an "Add Filter" item. Under that item are various predicates which can be added to the current filter expression based. All of them use the value in the cell as the predicate value and current column. They vary only in the comparison operator and whether the predicate is negated.
For example, given a slice with the destination address of 10.12.0.0/16, to display only slices that affect traffic going to same network you would right-click on the cell in the row for the slice in the 'Destination Address" column. Then under "Add Filter" select "Intersects".

The filter display is updated to have that predicate.

If you are not editing the filter, then the result is immediately applied and the main grid is updated. If the filter edit box is active, then the predicate is added to the text in the box but not applied.
You can add additional filters for other columns. The predicates are connected by the "and" binary operator so that the displayed slices must match all the predicates. For example, suppose you wanted to exclude slices with the "deny" action. Right click on a cell with "deny" and select the "does not contain" predicate.

This changes the filter expression and applies it to the main grid.

You can remove predicates by right clicking on a column and use the "Remove Filter" item. This can have several items in it. The "All Filters" item always appears and will erase the entire filter expression and stop filtering. The "Column Filters" will remove all predicates that refer to the column. If there are any such predicates, they will be listed in the menu and can be removed individually.

Note that none of the actions contain "deny" because we have filtered those out.
Direct editing
In addition to using filters generated from slice data, the filter expression can be edited directly via the "Edit Filter" button to the right of the filter tab. Pressing the button opens up a small edit panel and several other buttons.
| Button | Action |
|---|
| Apply | If the edit box contains a valid filter expression, it replaces the current filter expression and is used to filter the main grid. |
| Reset | Erases the edit box then copies the current filter expression to it. This "resets" the expression being edited to the current expression. |
| Close Editor | Close the edit box. The current contents are left as is. |
The edit box uses the Guided Editor to provide hints as you type. You can also use a right click on a cell to add a predicate to the edit box. This just puts the text for the column filter at the end of the current edit box contents. It is not guaranteed to create a valid filter expression.
2.3 Conflict Inspector
The Conflict Inspector shows the details of the conflict slice selected in the Main Grid. The display has three sections
- Column headers, which label the data in the column
- The conflict row, which duplicates the data of the slice from the Main Grid.
- The contributor rows, which contain slices from the configuration that contribute to the conflict.
The meaning of the column labels are the same as in the main grid columns.

The conflict row is always greyed out and cannot be selected. It is displayed for reference because it describes the actual behavior of the security device. The conflict rows are slices that describe the behavior of the contributing configurations rules. Note that even if the behavior of a contributing slice is the same as the conflict slice, the packet properties of the slice may be different. The conflict slice covers only packets that are in conflict which may not be all of any of the contributing slices.
If a conflict row is selected then the Config Inspector highlights the lines in the configuration that contribute to that slice. You can then easily find the reason why the contributing slice has the properties it does.
2.4 Config Inspector
Config Inspector is a widget that displays a configuration used by Analyzer to create the analysis.

There are a number of different elements in the display.

The title of the widget is the path to the configuration file used for the analysis.
The toolbar contains buttons to help in browsing the configuration. On the left are the next highlight
and previous highlight
buttons. When a slice with source lines is selected (either in the Main Grid or the Conflict Inspector) the sources lines are highlighted in the appropriate Config Inspector to aid in locating those lines. You can scroll down in the configuration to find them or use the next and previous highlight buttons to scroll the configuration to the next or previous set of highlighted lines. They are enabled or disabled automatically based on whether there is, relative to the current line, a next or previous highlighted line.
Like a web browser, Config Inspector maintains a stack of what lines you have visited in the
configuration. You can use the previous line
and next line
buttons in the toolbar to step through the configuration viewing history. These are also enabled and disabled automatically as previous and next lines in the history are available.
Config Inspector displays definitions and references within the configuration as hypertext links. A reference to a named item (e.g., an object-group in PIX) defined in the configuration is displayed as a link. Hovering over the link will cause a tip window will pop up and show the values of the definition. Left clicking on link will change the current line to the item's definition in the configuration file.

The "View" option will scroll to the name in the Symbol Viewer, opening the viewer if it is not already visible. The "Goto" submenu lists all lines on which the name is used. Selecting one of these items will scroll to that line in the configuration.
Moving around in the configuration can be done using standard text document navigation keys. In addition you can go directly to a line by number or using incremental searching to locate lines.
Go directly to a line by line number by pressing Control-G.

The text "Goto Line:" will appear after the current line number indicator. As you type numbers they will appear after this text. Pressing ENTER or RETURN will scroll to the line number entered. ESCAPE or clicking on a line will cancel. Note that blank lines are not displayed. If the entered line number is a blank line, the current line will be set to the last non-blank line before that line.
You can search for a particular string in configuration by typing
Control-F or Control-I for a search forward from the current line, or Control-Shift-F or Control-Shift-I for a search backwards from the current line. The text "Search:" or "Reverse search": will appear for forward and backwards searchs respectively. Type in the text you want to find. As you type, the configuration will be searched and will scroll to the first line relative to the current line where the current search text is found.

Press ENTER or RETURN to skip to the next line with the text, or type additional text. Press ESCAPE or click a line to stop searching. If the text turns red, it means that the search string was not found. Use browsing history to go back to a previous line if the search does not leave you where you want to be.
2.5 Symbol Viewer
Symbol Viewer is a docking window in Visualizer that displays the symbols defined in a configuration.
The left column lists all of the defined symbols. The right column contains the definition of the symbol. If a symbol is defined in terms of another symbol, that symbol and its definition are included as children of the first symbol. This puts the entire definition of each symbol in a single location for viewing.

In this case, symbol "ng1" is defined in terms of "ng2" which in turn uses "whoville" as part of its definition. The symbol "ng1" has been selected to show its direct definition and the nested entries for "ng2" and "whoville" expanded. An unexpanded entry for "ng2" at the top level can be seen directly below.
The symbol viewer can be shown and hidden using Control-1 (Symbol Viewer for the first configuration) or Control-2 (for the second configuration) in the Visualizer, for the first and second configurations respectively. Symbol Viewer can be accessed from "View" item in the Config Inspector context menu. Selecting the "View" option will cause the corresponding Symbol Viewer to be displayed if it is not already and the selected symbol highlighted.
2.6 Analysis Dialog
The Analysis Dialog is the primary graphical user interface for Analyzer. It encapsulates the options available for performing an analysis. The dialog is accessed by select the "File | New Analysis" menu option in Visualizer.

When using the dialog, first pick the type of analysis to perform in the "Type of Analysis" group box.
Some types of analysis may be computed for each network interface independently, or over traffic that traverses a pair of interfaces. If this choice matters for the type of analysis the "Cross Interface" check box will be enabled. If checked, traffic is analyzed per pair of interfaces. If not checked, traffic is analyzed for each interface independently. If it is greyed out, it doesn't matter if it is checked or not. This option is primarily of interest to Cisco devices.
The "File 1" group box is always enabled. If the analysis requires two configuration files, the "File 2" group box will be enabled.
Each file group box contains a "Path" drop down list. This specificies the file system location of the configuration file. The drop down contains a history of recently analyzed files. You can type in the path directly or use the "Browse" button to locate the file via a file dialog.
The "Family" drop down box is used to specify the family of devices for which the configuration is used. Not all configuration files can have their type automatically detected so it is important to set this option correctly. The particular verions of the device for the configuraiton can be set in the "Version" box. If the "Autodetect" checkbox is checked Analyzer will attempt to determine the version from the contents of the configuration. If it is not checked, a version must be entered in the "Version" box.
These controls are the same for "File 1" and "File 2" except that "File 2" has an additional checkbox labeled "Different". If this is not checked, then the family, version, and Autodetect options are set to be the same as for "File 1" and cannot be changed. If checked, then they can be changed to be different from "File 1".
The analysis results can be placed in a temporary file for Visualizer or placed in a file you select. To do the latter, check the "Save" check box and put the path to the desired file in the "Path" drop down. As with the configuration file paths, the drop down is a history of files recently used to store analysis results. The "Browse" button allows you to browse the file system with a file dialog to select the file.
3 InfoSecter Querent
In order to process constraints against a firewall configuration, the Analyzer needs a query document which specifies the constraints. This is an XML file which can be edited in any text editor. Querent is an application that creates and edits query documents to make using constraints easier and more reliable.
Each query document has a set of policy expressions. A policy expression is a set of properties for a network packet. Such expressions can be used to perform Policy Validation by verifying that packets with those properties are (or are not) in the behavior of a firewall configuration. The packet properties in an expression can be addresses, services, and actions. For instance, packets that come from a specific network to another network using the HTTP protocol that are permitted.
The packet properties in an expression can be specified directly, or via macros. A macro is a name with an associated value that can be used in place of that value. This is useful to make sure that all uses of a particular value are identical, to make the expression more comprehensible (e.g., "Engineering Networks" instead of "10.34.68.0/25"), or to make it easy to change a value in multiple expressions. The association of values with macros is stored in a dictionary. Each query document has a single set of macros but an arbitrary number of dictionaries. The dictionary used during analysis is specified as a command line argument to Analyzer.
There are three tabs in the Querent window.
- Expressions - Create, edit, and delete
policy expressions. Analyzer can be invoked from this tab by selecting a set of expressions and the clicking on the Analyze button. Only the selected expressions are used in the analysis.
- Macros - Create, edit, and delete macros for
use in expressions.
- Dictionaries - Create, edit, and delete
dictionaries of macro values.
To start, you will need to create or open a query file. Go to the File menu
and select "New" or "Open". From the File menu you can also save the results
of your query editing.
3.1 Expressions
The main expression tab shows a list of currently defined expressions.
The tool bar contains a number of icons that represent actions to perform on
these expressions.
-
creates a new expression with a default name.
Double click the expression to rename it.
-
deletes expressions.
First select an expression to delete.
-
invokes the structured editor in a pop up window. This is how you can edit expressions. If you select multiple expressions a structured editor window is displayed for each one.
-
performs Policy Validation using the selected expression on a
security device configuration. The details of this operation are
described in the Using Expressions
section below.
-
The next button toggles to control how the list of expressions is
displayed. If it is
the expression names and descriptions are displayed. If it is
only the expression
names are displayed.
Using Expressions
To perform Policy Validation, select the Expressions tab. From that tab, select the set of expressions you want to use as constraints against a configuration. Then click
. A dialog box will appear.

Enter the path to the file containing the configuration, or use the "Browse" button to browse the file system and select the file. Set the device family in the "Family" drop down. You must set the proper version in the "Version" area or enable "Autodetect" which will attempt to determine the version automatically. This may not work for some versions for some families.
The resuls will be put in to a temporary file, or you can have them saved to a specific file by entering the path to the file in the "Path" area of the "Results" groupbox and checking the "Save to" checkbox directly below.
The "Options" groupbox lets you set the dictionary to use (if there is more than one) with the "Dictionary" dropdown, and whether to look at traffic for each interface independently (disable the "Cross Interface" checkbox) or for pairs of interfaces (enable the "Cross Interface" checkbox). See Cross Interface for more details on this.
Once you have selected all the parameters, press the "Analyze" button to
start the Analyzer. This will pop up a status window.

The overall status is displayed in the first line. You can access the details of the Analyzer's
output by pressing the
button next to "Process Output", or press
to hide them. In the same way uou can also access the details of the command line used to invoke Analyzer by pressing the
button next to "Command Line". In the screen shot above, the process details are displayed and the command line options are not. The state of these buttons is remembered so that showing the process details will do so in subsequent analyses until changed.
Once the analysis has successfully completed, you can press a "View Results"
button will appear. If you press it, the status pop up will close and new instance of Visualizer will start and display the results. The constraint expression is displayed between the top conflict grid and the bottom configuration display. The conflict grid shows all packet regions expressed by the configuration that do not match the constraint expression. Each expression used will get a separate tab for its specific results.
Because you can view the command line options, using Querent can be a handy way to set up for using Analyzer in a script.
3.1.1 Structured Editor
The expression editor displays the expression in terms of clauses.
A clause is a set of fields with values specified. All the fields and values
within a clause will be combined by the and operator in the final expression.
For example, a clause with "Source Address" set to 192.168.1.1 and "Action" set to
permit will match only packets with a source address of 192.168.1.1 that the configuration will permit.
If a field value is not set, it is ignored and does not contribute to the
expression.

Icons on the top editor tool bar perform a number of basic operations.
creates a new clause after the current focus point.
-
deletes the currently selected clause.
- The next four green arrow icons control clauses and are described
in the Composing Clauses section below.
-
saves your edits.
-
saves your edits and closes the expression editor.
-
throws away your edits and closes the expression editor.
Editing Clauses
To set values in a clause, click on a field name. This will activate the
associated value entry field to the right of the field name.
Start typing in the value entry area.
The Guided Editor will give you hints for proper values in hint popup windows.
You can continue typing or select a hint from the popup window.
See Guided Editor for more details on the editing mechanism.
After completing a value,
hit return. For most fields, you can enter multiple values. These values
will be interpreted as alternates. For example, if you enter 192.168.1.0/24
and 10.10.10.128 for the Destination Address field, the expression
evaluation will interpret this as the Destination Address matches
the network 192.168.1.0/24 or the host 10.10.10.128.
To edit an existing value, double-click the value and start editting. To delete
a value, select the value, and hit delete key.
Each field and value pair is separated by an equal sign
.
You can click on
to toggle it to
.
This effects
how the field value pair is interpreted during the expression evaluation.
In our example of the Destination Address field with values 192.168.1.0/24 and
10.10.10.128, if there is an equal sign, the expression
will be interpreted as the Destination Address matches the network
192.168.1.0/24 or the host 10.10.10.128. If a not equal sign is shown,
the expression will be evaluated as the Destination Address is not in the
network 192.168.1.0/24 and it does not equal the host 10.10.10.128.
Each clause has a tool bar with three buttons.
- The first toggles between
and
to indicate whether the clause is
enabled or disabled. If the button is
,
the clause (and
all of its children) are enabled. If it is
,
the clause is
disabled. When a clause is disabled, the clause and its children do not
contribute to the expression when a policy validation is performed.
It could be that a particular clause it not currently relevant, but the
you want to reactivate it later.
-
The second button in the tool bar indicates whether the expression should be
evaluated as a match or a not match. If the button shows
,
evaluating the expression will match packets that match the values in the
clause. If the button shows
,
the evaluated the expression will
match packets that do not match the values in the clause. For example, if
the clause has 192.168.1.1 set for source address and TCP:80 set for
destination service, the evaluating the expression will look for packets that
have a source address of 192.168.1.1 and a destination service of TCP:80 if
the button is
.
Otherwise, the expression evaluation will look for
packets that do not have a source address of 192.168.1.1 or
do not have a destination service of TCP:80.
-
The last button controls whether unset fields are displayed. If the button
is
,
all possible fields are displayed even if they have
no values currently set. If the button is
the clause is displayed in a more concise
form with only the set fields displayed. The expanded form is useful when entering values for unset fields, and the concise form for conciseness when editing other clauses.
Composing Clauses
An expression is composed of multiple clauses. The expression editor
shows how clauses are combined through indentation and operators. If two
clauses are at the same indentation level, they are connected by a line with
the
the
or operator. When evaluated, the first clause will be
evaluated
to find matching packets and actions. Then the second clause will be
evaluated to find matching packets and actions. The resulting expression
is the union of the packets and actions described in each clause.
If one clause is a child of another clause (that is the second clause is indented underneath the first clause), the results of the clauses are combined with the and operator. Effectively the outer clause is checked and if it matches, the inner clauses are checked. If the outer clause doesn't match, the inner clauses are not checked at all.
Clauses at the same level ("sibling clauses") are combined with the or operator, which means that they are all checked until one matches if all parent clauses match. If there are clauses nested under the siblings, those are checked only if their parent (one of the siblings) matches.
The expression as a whole matches if any clause without nested clauses matches. A parent clause (one with nested clauses) matches if any of its nested clauses match.
Controlling Clause Nesting
In the expression editor tool bar, there is a set of four arrow buttons.
moves the selected clause up the list.
moves the selected
clause down the list.
moves the
selected clause to be a sibling of its parent clause
moves the
selected clause to be a child of its sibling.
In addition to combining clauses through and and or operators,
there is also an otherwise operator. The otherwise operator
can be used on the last clause in a list of clauses at the same identiation
level; that is a set of clauses combined by the or
operator. The clause after the otherwise operator expresses the
action or scope that must apply to the packet that does not match any
of the previous clauses. For example, consider one clause that
specified the Source Address was 10.10.0.0/16 and the Action was permit, and
after the otherwise operator another clause that
specified the action of deny. This would mean that only packets with the
source address in the 10.10.0.0/16 network should be permitted and all other
packets should be denied. The otherwise operator provides a concise
means of expressing the expected action in all "other" cases.
The last clause in a list can be converted between an or clause and
an otherwise clause by toggling the icon next to the close. If it is
or
the
final clause is another or clause. If it is
or
the
final clause is an otherwise clause. If the operator is red

it means that the clause has an otherwise operator and was moved to a location where such an operator is not permitted. In this case it will be treated as an or. If the clause is moved to a location where otherwise is valid the operator will change back to green. You can change the operator to or but you can't change it back unless the operator is moved to a location where otherwise is valid. This is done so that the otherwise operator is not changed while a clause is being moved.
If it's still not clear what operator a clause has, hover the mouse cursor over the operator and it will provide a tool tip.

3.2 Macros
The Macros tab shows a table of the currently defined macros. Icons in the
tool bar control the macros.

creates a new
macro.
deletes the currently
selected macro.
- The third icon in the tool bar toggles between two display forms. If
the icon is
only a list of macro names is displayed. If the icon is
the
macro names, types, and descriptions are displayed.
To edit any field in the table, double-click and edit. The type is one
of IP Address, IP Service, IP Protocol, Action, or Scope. The structured editor
uses the type information to determine what macros can be used in which
fields. The Dictionaries editor also uses the type information to ensure that
correct values are entered in the dictionary.
Macros can be used as values in the structured editor. To distinguish
between a macro and a string, all macro references must start with the '$'
character.
For example, say you created a macro of type IP Address named "LabServers".
In the expression editor, you could enter "$LabServers" for the value of the
Destination Address if you wanted to compose an expression testing how
traffic to the Lab Servers was being processed. Note that the structured editor checks the macro types and does not permit macros of the wrong type to be used (e.g., if you are editing a Scope value, you will not have access to "$LabServers" because it is not a Scope).
4 InfoSecter Analyzer
Generally InfoSecter Analyzer will be invoked via the Visualizer or Querent.
However, Analyzer can also be invoked directly or invoked from scripts.
A summary of Analyzer's command line options is shown below.
Syntax
USAGE: Analyzer <cfg1> [-o <cfg2>] [-V <version string>]
[-V2 <version string>] [-D <base directory>]
[-R <family registration file>]
[-R2 <family2 registration file>]
[-x]
[-t]
(-c <expression file> [<expression name> [<dictionary name>]])*
(-q <expression file> [<expression name> [<dictionary name>]])*
(-C <expression cst file>)*
(-Q <expression cst file>)*
[-f <outfile>]
- <cfg1> - For all operations at least one configuration
file must be specified.
- -o <cfg2;> - Specify a second configuration file to
perform Cross Conflict operation.
- -V <version string> - If the configuration file does not
contain a version string or if you do not want to rely on that version,
use this option to specify the version of the first config, e.g. 6.3.1.
- -V2 <version string> - If the second configuration file
does not
contain a version string or if you do not want to rely on that version,
use this option to specify the version of the second config, e.g. 6.3.1.
If -V is specified and -V2 is not specified, the version specified with -V1
will be used for the second configuration file too.
- -D <base directory> - Specify the base directory. The
files specfied in the registration file will be expressed relative to
the base directory.
- -R <family registration> - Specify the registration
file for a particular family of devices. These registration files
are generally installed as .plat files in the lib subdirectory of the
install directory.
- -R2 <family registration> - If there is a second
configuration file specified, it will use the family registration specified
by the -R option. If the families of the two configuration files are different
use the -R2 option to specify the family of the second device, e.g. to compare
PIX and IOS configurations.
- -x -
Augment the operation to use
the Cross Interface calculation.
- -t - Dissection operation
- -f <outfile> - Specify the output file. Otherwise,
the results will be printed to standard out.
-
-c <expression file> [<expression name> [<dictionary name>]] -
Compute the Constraint Policy Validation. Enumerate the packets that will not be
processed in the configuration file in the same way they are expressed in
the expression file. If the expression is not named, the first expression
in the file is used. If the dictionary is not named, the Primary dictionary
in the file will be used.
-
-q <expression file> [<expression name> [<dictionary name>]] -
Compute a Query Policy Validation,
which is very similar to the constraint, but
unlike the constraint the query returns a listing of the packet regions
in the configuration that match the expression.
- -C <expression cst file> -
As with the -c option, this causes a Constraint Policy Validation to be
computed. The difference is in the form of the expression file. The -c option
takes a query XML file. This option takes a simple text files that includes
the expression. This form cannot use macros or dictionaries. The syntax
is the filter language syntax described in Filter Expressions.
- -Q <expression cst file>
As with the -q option, this causes a Query Policy Validation to be
computed. The difference is in the form of the expression file. The -q option
takes a query XML file. This option takes a simple text files that includes
the expression. This form cannot use macros or dictionaries. The syntax
is the filter language syntax described in Filter Expressions.
Examples
To compute a Self Conflict operation
on PIX configuration pix1.cfg, use the following command line.
analyzer pix1.cfg -D /infosecter -R /infosecter/lib/pix-reg.plat -f out.xml
To compute a Cross Conflict
operation on PIX configurations pix1.cfg and pix2.cfg,
use the following command line.
analyzer pix1.cfg -o pix2.cfg
-D /infosecter -R /infosecter/lib/pix-reg.plat -f out.xml
To compute Dissection with
Cross Interface calcuations
on PIX configuration pix1.cfg, use the following
command line.
analyzer pix1.cfg -t -x -D /infosecter -R /infosecter/lib/pix-reg.plat -f out.xml
To compute a Cross Conflict
operation on PIX configuration pix1.cfg and FWSM
configuration fwsm1.cfg use the following command line.
analyzer pix1.cfg -o fwsm1.cfg
-D /infosecter -R /infosecter/lib/pix-reg.plat
-R2 /infosecter/lib/fwsm-reg.plat
-f out.xml
To compute a Constraint Policy Validation
operation on a NetScreen configuration ns-comp.cfg and an expression
named "test" stored in file constrain.query use the following command line.
analyzer ns-comp.cfg -D /infosecter -R /infosecter/lib/ns-reg.plat
-c constrain.query test -f out.xml
5 InfoSecter Device Support
InfoSecter operates on configurations from a variety of security device
vendors. Rather that communicating with the security devices directly
most of the InfoSecter tools work on files that contain information about
a device's configuration (either the current configuration, a past
configuration, or a potential future configuration). Many organizations
already have a process for managing device configurations, and InfoSecter
can adapt to those processes. In the detailed device notes, we present
options for accessing a device's configuration for organizations that do not
already have a configuration management process.
The configuration of a security device is sensitive information. With the
details of a security device's configuration, an attacker knows exactly
what your organization is protecting and what it is not. The attacker can
also gain insight in how your network is structured. Therefore, when using
InfoSecter, you must be careful about how your device configuration files are
stored. For example, they should not be stored in a shared directory
accessible to all.
InfoSecter attempts to parse all commands in a configuration (with some
expections noted in the detailed machine notes). It builds a model
of packet processing concentrating on the firewall, IPSec, and protocol
analysis features of the device.
Here are more specific notes about using InfoSecter with specific types
of devices.
5.1 InfoSecter Support Notes for PIX, ASA, and FWSM
Supported versions
-
PIX version 6.0 through 8.0.
-
ASA version 7.0 through 8.0.
-
FWSM versions through 3.2.
The analysis support concentrates on firewall and VPN features. In particular
InfoSecter reports may include the following classes of actions.
- permit or deny, basic firewall filtering.
- translate, address translation.
- inspect protocol, activation of more detailed
protocol processing enabled by the fixup or inspect commands.
- crypto-map map name, direct traffic into the specified crypto map for IPSec tunneling.
- filter, URL filtering.
- aaa, authentication, authorization, or accounting
configuration.
The tool will parse most of the the commands in the supported versions with the following exceptions.
Gather device configurations
InfoSecter operates on configuration files.
There are several means to export a configuration from a PIX or ASA device.
One uses the ASDM https interface to pull a config from a PIX/ASA to a client
machine. Another technique pushes a config from a PIX/ASA to a client machine.
Pulling a configuration
From a client machine, use https to pull the
running config or the start up config from the ASA/PIX.
To enable this, the device must be configured to allow ASDM access
as described in the Cisco Documentation
(short of installing the ASDM
image). The device must have a certificate installed using the
crypto key generate rsa command.
The embedded web server must be enabled on the device using the
http enable command, and the http command
must be used to give access to the requesting client.
Once the device is configured to allow https access, you can use a
browser on the client machine to fetch the URL. Say the PIX/ASA device is
at address 192.168.1.1, the URL would be
https://192.168.1.1/exec/show run
You will be prompted for a user name and password. If you have AAA
authentication enabled or local users defined, use one of the defined user
names and passwords. Otherwise, use "pix" for the username and your enable
password for the password.
Pushing a configuration
From the ASA/PIX device
you can use the copy command to copy the start up or running config
to an accessible machine via a variety of protocols (including tftp, ftp,
scp, rcp, http, and https).
The
Cisco Documentation describes this technique
for backing up configurations in greater detail.
For example, if there is a machine with the address 192.168.200.2 running
a FTP server with an account for user, you can issue the following
command
to copy the running config to the ftp server.
copy running-config ftp://user:password@192.168.200.2/run.cfg
5.2 InfoSecter Support Notes for IOS
Supported versions
InfoSecter has been tested on configurations from versions 12.3 and 12.4.
The InfoSecter analysis support concentrates on firewall and IPSec features.
In particular
InfoSecter reports may include the following classes of actions.
- permit or deny, basic firewall filtering.
- translate, address translation.
- inspect protocol, activation of more detailed
protocol processing enabled by the inspect commands.
- crypto-map map name, direct traffic into the specified crypto map for IPSec tunneling.
The IOS command set is vast. InfoSecter parses firewall feature set commands
and core IOS commands.
It does not parse the entire IOS command set. InfoSecter analysis will
continue over the information from the parsed commands.
Gathering device configurations
Secure copy (copy over the SSH protocol) can be used to pull configurations
from the IOS device to a client machine. To enable such access, the IOS
device must be configured to allow SSH access and then to enable scp access.
The Cisco documentation on
SSH and
scp cover this in detail.
To enable ssh access to the device,
you must use the crypto key generate rsa
command to create a named key pair for use with the SSH server on the device.
To enable secure copy access from a client to the IOS device use the
ip scp server enable command.
Once the device is configured to allow scp access, you can use your favorite
secure copy program (e.g. scp from OpenSSH or pscp from PuTTY). For example,
using OpenSSH's scp, the following command will pull the running config
from an IOS device with the address 192.168.1.1 and store it locally in the
file backup.cfg.
scp admin@192.168.1.1:running-config backup.cfg
This example assumes there is a user named admin either defined on the IOS
device or defined in a AAA server that the IOS device uses for
authentication and authorization.
5.3 InfoSecter Support for NetScreen
Supported Versions
InfoSecter has been tested against versions 5.1 through 5.4 of
ScreenOS.
The InfoSecter analysis support concentrates on firewall and VPN features.
In particular
InfoSecter reports may include the following classes of actions.
- permit or deny, basic firewall filtering.
- ipsec tunnel name, direct traffic into the specified IPSec tunnel.
InfoSecter attempts to parse all commands that can show up in a Netscreen
configuration file (output of get config). The features most
directly related with firewall filtering and IPSec tunneling have been
most deeply tested. If a command fails to parse, the information from the
remainder of the configuration that has been parsed will be used in the
analysis.
Gather device configurations
InfoSecter operates on configuration files.
There are several means to export a configuration from a Netscreen device.
One can use secure copy to pull a configuration from the Netscreen device
to a client machine. Another technique pushes a configuration file from
a Netscreen Device to a client machine. One can also use the
Netscreen Security Manager to create CLI versions of the current policy and
feed that information to InfoSecter for analysis.
Pulling a configuration
Secure copy (copy over SSH) can be used to pull the configuration saved
in non volatile RAM from the Netscreen device to the client machine.
To enable ssh and scp to your netscreen box, you need the following commands
- set ssh enable
- set scp enable
On the client device, use a secure copy client (e.g. scp from OpenSSH or
pscp from PuTTY) to move files between your client host and the firewall
devices' flash memory.
The name of the devices' startup config on its flash drive is ns_sys_config,
so to copy that startup config from the firewall device to backup.cfg on your
client, issue the following command (assuming the default administrative user
netscreen on the firewall device).
scp netscreen@192.168.50.50:ns_sys_config ns_sys_config_backup
With Netscreen you can either use a password for the client, or
you can register a certificate with the device for the client authentication.
The Concepts & Examples Reference Guide: Volume 3, Administration
document from Netscreen provides the details for setting up ssh, scp, and
the authentication options.
Pushing a configuration
From the Netscreen device
you can use the "exec save" command to copy the start up configuration
to an accessible machine via tftp.
For example, if there is a machine with the address 192.168.200.2 running
a tftp server, you can issue the command
exec save config from flash to tftp 192.168.200.2 /tftpboot/backup.cfg
to copy the starup config to the tftp server.
5.4 InfoSecter Support Notes for CheckPoint
Supported versions
InfoSecter has been tested against CheckPoint NGX R65.
The analysis support concentrates on firewall and IPSec features.
In particular
InfoSecter reports may include the following classes of actions.
- permit or deny, basic firewall filtering.
- IPSec Tunnel name, traffic directed into
specific IPSec tunnels
Gather device configurations
InfoSecter's analysis operates over a snapshot of the Check Point operational
policy with respect to a particular firewall device. The Check Point Smart
Center may contain firewall policies that are applied to multiple physical
enforcing devices.
InfoSecter includes a program to pull a snapshot of the current configuration
for a particular firewall device from the SmartCenter policy database. This
tool uses the OPSEC CPMI interface to read information from the database.
This tool does not write interface to the database, so there is no threat
of corrupting the policy database while pulling a configuration snapshot.
The configuration snapshot is stored in an XML file, which can then be used
by the InfoSecter Executer engine.
Initializing communication
Check Point enforces an authenticated encrypted channel called Secure
Internal Communications (SIC) for all communication
between its components, so the InfoSecter tools must be initialized before
they are allowed access to the policy database. This initizalization requires
actions on the firewall device, in the SmartDashboard GUI, and from the
InfoSecter client machine.
On the Smart Center Server
To initialize the SIC key, you must log onto your SmartCenter Server (most
likely co-located with your firewall machine), and
enter the command fw putkey -opsec -ssl <InfoSecter address>
This command will prompt you for an authentication key. Pick a phrase and
remember it for use on the InfoSecter machine.
On SmartDashboard
Log into SmartDashboard to create a representation of InfoSecter as an
OPSec client. This will create a certificate which InfoSecter will use
for proof of identify for future communication.
- Create a host node for the InfoSecter client machine if it is not
already represented in the SmartDashboard database.
- Go to the Manage menu and select the
OPSEC Applications entry. This will pop up a dialog
box. Click the New button to create a representation
of your installation of the InfoSecter application. This will drop down
a list of types of applications you can create. Select
OPSEC Application.... This will pop up a new dialog box.
- In the new dialog box, enter a name for the application, e.g. InfoSecter
or InfoSecter_on_hostX.
-
For Host select the host object representing your InfoSecter
machine
-
Under Client Entities click the
check box next to the CPMI protocol. This is the OPSEC protocol used by
InfoSecter.
-
Click on the Communication... button. This will open another
dialog box that prompts you for an Activation Key. Pick a phrase (this does
not need to be the same phrase you selected on the SmartCenter), enter it twice,
and click the Intialize button.
-
Back at the OPSEC Application Properties dialog box, there is now a
CPMI Permissions tab. Select that tab. Change the login creditials
from the "Administrator's Credentials" to a Permissions Profile. You
may need to create a new profile. This profile must provide read and write
access to the Security Policy database even those InfoSecter only reads
the Security Policy database.
On the InfoSecter machine
Finally, on the InfoSecter machine you can run the infosecter-checkpoint-setup.exe to complete the SIC and certification initializations you
started on the firewall and in SmartDashboard. This program is located
under the bin/cp directory of the InfoSecter install directory.
infosecter-checkpoint-setup.exe will display a simple
dialog box composed of two parts. The top part completes the SIC initialization
you started at the firewall console. In the text field labeled
Smart Center Server enter the address or resolvable
name for the Smart Center Server. In the text field labeled
Secret Phrase enter the authentication key you
entered on the Smart Center Server.
With both of these values entered, press the Initialize
button. Status information will be displayed in a box under the
Intialize button.
If the first step was successful, look at the bottom part of the dialog box
to complete the communication initialization between InfoSecter and
SmartDashboard. In the field labeled Application Name
enter the name you selected for the installed InfoSecter application
in SmartDashboard. In the field labeled Secret Phrase
enter the activation key you created when initializating communication
in SmartDashboard for the InfoSecter application. Press the
pull button to pull the application
certificate keys created by SmartDashboard. Status information about
this step will be displayed in a text box under the pull
button.
Pulling a snapshot
Assuming the initialization sequence was successful, you can use the
infosecter-checkpoint-retrieve.exe application (also
located in bin/cp subdirectory of the InfoSecter install
directory) to get a snapshot of the current policy for your Check Point
firewall.
This application will display a dialog box. In the field labeled
Smart Center Server enter the address or resolvable
name of the Smart Center machine. In the field labeled
CheckPoint Firewall enter the name of the firewall for which
you
want the policy. In the field labeled Application Name
enter the name you used in definition of the InfoSecter application
installation in SmartDashboard. In the text field labeled
Save in File enter the name of the XML file where you
want the snapshot stored. You may use the Browse
button to aid in selecting a file. In the text field labeled
Debug Level, you can enter a number from 0 to 9 to
display increasing amounts of debug information. If the connection
is not working, the debug messages may give you some hints to the
problem.
Once the fields are entered, hit the Retrieve button
to start the snapshot process. The window below the buttons will show status
and debug messages about the snapshot process. If the snapshot is successful,
the file you indentified in the Save in File field will
contain information about the current configuration of the identified firewall
that can be used by InfoSecter for analysis. This file may be
selected in the Visualizer or Querent for analysis.
6 Reference
These are reference guides for various elements of InfoSecter that are referred to from other parts of the documentation or serve as ancillary functionality to the main product.
6.1 Guided Editor
The Guided Editor is a text editor that provides specialized help for entering information in InfoSecter. It acts as a normal text editor except that it can provide context sensitive hints to make entering information faster and easier. See here for a reference of available keystrokes.
Guided Editor Basics

When hints are available, a small popup box will appear a little below and to the right of the text cursor as show in the picture. Here the Guided Editor is being used to enter an IP address range for a field in Querent. The user has typed in "192.168.10.0". The green is part of a color code and indicates the input is valid. While a single address is acceptable as a range, you can specify a larger range by entering a network specification, either a CIDR bit count mask or an octet mask, or '-' character and another IP address. The hint box shows all of these to indicate that while the current input is sufficient, you can type more.
Hints can be treated simply as hints and all data entered directly. You can click on a hint in which case the text is added to the input. Hints can be selected by using the UP and DOWN arrow keys and then used by typing Control-Space. For common used values (such as the class C network mask) this can be much faster and more accurate than typing it by hand.
In this case, for the octet mask, several hints are provided. These are, in order, the mask for the widest network possible for the IP address, the class C network for the address, and the host mask. The class A and class B network masks are not offered as hints because they are invalid for this address. These values are a "best guess" as to the most commonly used masks. If none are correct, you can simply enter the mask directly.

Hints are also provided if part of the data is entered. In this image the yellow means that the input is not correct but could be correct with additional text. The hints in this case are the smallest and largest possible IP addresses consistent with the part of the address already present. Again, these are the common cases and if not correct can be ignored.

What if you make a mistake? In most cases the Guided Editor will catch this and let you know what's wrong. Here the background has been set to red to indicate bad input and the hint explains the problem ("257" is too large a value for a single octect in an IP address). When the input is bad, using the hint will erase the bad input but not replace it. It is usually easier to use BACKSPACE to back up and correct the error.
Some of the names used in InfoSecter can be long. While this makes the display more understandable it can also take extra effort to type. The Guided Editor makes this easier to enter by automatically selecting a hint if that is the only hint. Only enough of a name to be unique must be typed in order to have a hint with the complete name selected. In addition the Guided Editor has additional help for names with spaces in them. For such a name, each space seperated word is checked independently across spaces in the input. For this reason you only need to match enough initial characters of each word to match the correct name.

For example, in Visualizer, the column names contain spaces. Two such column names are "Destination Address" and "Destination Service". Typing just the letter 'd' brings up two hints, one for each column name.

If you type "d a", then the 'd' will match "Destination" in both column names, but the 'a' will be matched against the second words, "Service" and "Address". Since only "Address" starts with 'a', it will be the only hint and become selected.

Typing CONTROL-Space at that point will cause the "d a" you entered to be changed to "Destination Address". This also works with actions and scopes that contain spaces. You can also see that the hints have changed to comparison operators appropriate for values for the Destination Address column.

The Guided Editor is case insensitive -- it doesn't matter if you type "d a" or "D a" or "d A". This example also demonstrates typing additional characters for the first and second word in "Destination Address" still matches, despite the odd mixture of upper and lower case letters.
Color Code
Color is used with the Guided Editor to indicate the validity of the current input, although the exact manner varies. The color code is the same in all cases.
| Color | Meaning |
|---|
| Green | Input is correct. |
| Yellow | Input is not correct, but could become correct with additional input. |
| Red | Input is wrong. No amount of additional input could make it correct. The current input must be changed. |
Using the Guided Editor in Querent
Querent used the Guided Editor to edit values for clauses and dictionary values. Querent changes the background of the value field to indicate the acceptability of the input according to the color code.
Using the Guided Editor in Visualizer
Visualizer use the Guided Editor to edit filter expressions. Visualizer highlights sections of input according to the color code. More hints will be provided than in Querent because filter expressions are more complex than values.
Special Keystrokes
| Control-H | Enable hinting |
| Shift-Control-H | Disable hinting |
| Up, Control-U | Select the previous hint |
| Down, Control-N | Select the next hint |
| Home | Select first hint |
| End | Select last hint |
| Tab, Right, Control-Space | Use the selected hint |
| Escape | Temporarily hide the hint box |
6.2 License Viewer
License Viewer lets you examine and updated your license for InfoSecter. You can access License Viewer from either Visualizer or Querent. Open the Help menu on the menu bar and select the "License" item.

The license itself is a string of upper case letters and digits. The current license is displayed and is editable. The other fields are not editable and display information about the license.
| Field | Information |
|---|
| Type | Type of license |
| Customer ID | The identifier of the customer who owns this license. |
| License ID | The identifier of this license, per customer. |
| Features | The security device families that are enabled. |
| Expires | The expiration date of the license. |
The type of license is one of
- INVALID - The license key is invalid.
- Evaluation - This is an evaluation license. When it expires, Analyzer will fail to run.
- Evaluation, Expired - An evaluation license that has expired.
- Product - A full product license.
- Product, Expired - A full product license that has expired.
To update your license
- Erase the current license.
- Type or paste in the new license.
- Verify that the license is valid by looking at the Type field.
- Click the "Update" button.
6.3 Utility Scripts
InfoSecter provides a number of Perl scripts. In all cases invoking
the script with the -help argument print a usage message that explains
the script arguments.
- InfoSecter Report Generator (output_report.pl) - Processes the
XML analysis results generated by Analyzer and rewrites the results in
a basic HTML form. You can use this script as a starting point to generate
reports in a form that is most appropriate for your organization.
- InfoSecter Internet Storm Center Expression Builder (isc-build.pl) -
Accesses reports on malicious activiity from ports and addresses gathered
by the Internet Storm Center and creates
an expression file that can be used for Policy Validation with Analyzer.
By regularly building and testing against these expressions, you can determine
whether your firewall is processing traffic from sources that are showing
high levels of malicious activity.
- InfoSecter Packet Capture Expression Builder (pcap-build.pl) -
Reads in a packet capture file (pcap) and build an InfoSecter expression
that will match all unique instances of the packets that appear in the
packet capture file. The resulting expression can be used by Analyzer
for Policy Validation. If you are given a packet capture of offending
packets, a query report can inform you how the packets in question are
being processed by the security device.
InfoSecter Report Generator,
InfoSecter Internet Storm Center Expression Builder , and
InfoSecter Packet Capture Expression Builder
by Network Geographics are licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.
Executable versions of the scripts that include the dependent modules are provided for the Windows
platform. These executables were generated from the included source by PerlApp from Active State.
Index
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
A
ASA
Analysis Dialog
Analyzer
Analyzer examples
Analyzer syntax
B
Browsing
C
CheckPoint
Cisco IOS
Cisco PIX, ASA, and FWSM
Composing Clauses
Config Inspector
Config Inspector Objects
Config Inspector Toolbar
Config Inspector context menu
Configuration Change Review
Conflict Inspector
Controlling Clause Nesting
Cross Conflict
Cross Interface
D
Dictionaries
Display or hide Symbol Viewer
Dissection
Dissection
Dissection Slice
E
Editing Claues
Editing Filters
Expressions, Editing in Querent
F
FWSM
Feature Alignment
Filter Expressions
Filter Operator Table
Filter and Query Tabs
Filtering
G
Guided Editor
Guided Editor, color
Guided Editor, keystrokes
H
Hints
I
IOS
InfoSecter Device Support
InfoSecter Reference
Introduction
J
Juniper Netscreen
K
Keystrokes, Guided Editor
L
License Type
License Viewer
License, Update
M
Macros
Main Grid
N
Negation, Predicate
P
PIX
Policy Validation
Predicate
Predicate Negation
Q
Querent
Querent Expressions
Querent, Editing Expressions
Querent, Editing values
Querent, Macros
Querent, Nesting Clauses
R
Remediation
S
SCP
SSH
SSL
Security Device Features
Security Device Migration
Self Conflict
Structured Editor
Symbol Viewer
T
Tabs, Main Grid
Tile
Tiling
U
Update License
Using Expressions
Utility Scripts
V
Visualizer
Visualizer Help Menu
Visualizer Main Window
Visualizer, Analysis Dialog
Visualizer, Editing filter expressions
Visualizer, Filter Tab
Visualizer, Filtering
Visualizer, Main Grid
Visualizer, Query Tab