Commit graph

6667 commits

Author SHA1 Message Date
Robin Sommer
7225221c2a In bifs, change ODesc objects to have RAW_STYLE.
This prevents double-escaping with the logging changes of BIT-1333.
2015-04-16 21:50:50 -07:00
Vlad Grigorescu
4753e4a3c2 Make base_of_data optional. 2015-04-16 19:44:39 -05:00
Johanna Amann
d876c044df Add high level api for thresholding that holds lists of thresholds
and raises an event for each threshold exactly once.
2015-04-16 15:36:48 -07:00
Jon Siwek
effeaa5b13 Fix attempt for "internal error: unknown msg type 115 in Poll()"
Under remote communication overload conditions, the child->parent
chunked IO may start rejecting chunks if over the hard cap.  Some
messages are made of two chunks, accepting the first part, but rejecting
the second can put the parent in a bad state and the next two chunks it
reads are likely to cause the error.

This patch just removes the rejecting functionality completely and so
now relies solely on shutting down remote peer connections to help
alleviate temporary overload conditions. The
"chunked_io_buffer_soft_cap" script variable can now tune when this
shutting down starts happening and the default setting is now double
what it used to be.  For constant overload conditions, communication.log
should keep stating "queue to parent filling up; shutting down heaviest
connection".

An alternative to completely removing the hard cap rejection code could
be ensuring that messages that involve a pair of chunks can never have
the second chunk be rejected when attempting to write it.

Addresses BIT-1376
2015-04-16 17:15:42 -05:00
Johanna Amann
9290718bd6 Allow setting packet and byte thresholds for connections.
This extends the ConnSize analyzer to be able to raise events when each
direction of a connection crosses a certain amount of bytes or packets.

Thresholds are set using
set_conn_bytes_threshold(c$id, [num-bytes], [direction]);
and
set_conn_packets_threshold(c$id, [num-packets], [direction]);
respectively.

They raise the event
event conn_bytes_threshold_crossed(c: connection, threshold: count, is_orig: bool)
and
event conn_packets_threshold_crossed(c: connection, threshold: count, is_orig: bool)
respectively.

Current thresholds can be examined using
get_conn_bytes_threshold and get_conn_packets_threshold

Currently only one threshold can be set per connection.

This also fixes a bug where child packet analyzers of the TCP analyzer
where not found using FindChild.
2015-04-16 13:02:08 -07:00
Robin Sommer
175fe2c9de Updating submodule(s).
[nomail]
2015-04-16 08:16:58 -07:00
Robin Sommer
fc3e5a5fb0 Updating submodule(s).
[nomail]
2015-04-16 08:14:16 -07:00
Jon Siwek
ceebad38a4 Fix the to_count function to use strtoull versus strtoll. 2015-04-16 09:56:18 -05:00
Robin Sommer
7344052b50 Changing what's escaped when printing.
With this patch the model is:

    - "print" cleans the data so that non-printable characters get
      escaped. This is not necessarily reversible.

    - to print in a reversible way, one can go through
      escape_string(); this escapes backslashes as well to make the
      decoding non-ambigious.

    - Logging always escapes similar to escape_string(), making it
      reversible.

Compared to master, we also change the escaping as follows:

    - We now only escape with "\xXX", no more "^X" or "\0". Exception:
      backslashes.

    - We escape backlashes as "\\".

    - There's no "alternative" output style anymore, i.e., fmt() '%A'
      qualifier is gone.

Baselines in testing/btest are updated, external tests not yet.

Addresses BIT-1333.
2015-04-15 16:59:50 -07:00
Robin Sommer
e41c623ad0 Merge remote-tracking branch 'origin/topic/seth/ascii-escape-normalization' into topic/robin/ascii-escape-normalization 2015-04-15 09:56:58 -07:00
Robin Sommer
9260638948 Removing error check if an ASCII writer has been properly finished.
Turns out that in error situations, the final finish message might not
reach the writer anymore, as communication between the threads will be
shut down. Instead of aborting, we now just clean up in that case and
proceed. This isn't changing any other behaviour. The original error
check was in place mostly for helping debug the data flow between the
threads anyways.

Addresses BIT-1331.
2015-04-15 09:55:15 -07:00
Vlad Grigorescu
0b5103b41b Fix support for PE32+ files. 2015-04-14 21:09:16 -05:00
Vlad Grigorescu
575e22cfe7 PE Analyzer cleanup. 2015-04-14 20:21:43 -05:00
Johanna Amann
bafd354711 Update submodule
[nomail]
2015-04-14 15:57:05 -07:00
Johanna Amann
0e7ebffacf add bif function to test if a subnet revers to v4 or v6.
If there already was a way to check this, I completely missed it...
2015-04-14 14:51:52 -07:00
Johanna Amann
00204ab8a6 introduce &weaken attribute, which basically only prevents
the describe function for types to descend into record fields that
are marked with it.

With this, we can actually load the pacf scripts without crashing Bro
when running tests :)
2015-04-13 16:05:55 -07:00
Vlad Grigorescu
fa7946ae7d Checkpoint - Import Address Table being parsed. 2015-04-13 16:34:18 -05:00
Jon Siwek
63ab936d8c Fix iterator invalidation in broker::Manager dtor. 2015-04-13 10:36:04 -05:00
Johanna Amann
fe9ff46cc5 Merge remote-tracking branch 'origin/topic/jsiwek/bit-1367'
Bit-1367 #close
2015-04-11 11:01:18 -07:00
Robin Sommer
0620bc970a Make sure to always delete the remote serializer.
There were two problems actually: the iomanager wasn't properly
deleting sourcesl; and in some situations, the remote serialize wasn't
registered with it to begin with.

Addresses BIT-1306 and probably also BIT-1356.
2015-04-10 21:51:44 -07:00
Robin Sommer
1132470b05 Cleaning up --help.
-D and -Y/y were still listed, even though they had no effect anymore.
Removing some dead code along with -D.

BIT-1372 #closed
2015-04-10 17:05:49 -07:00
Jon Siwek
a55ce01ef3 API changes to file analysis mime type detection.
Removed "file_mime_type" and "file_mime_types" event, replacing them
with a new event called "file_metadata_inferred".  It has a record
argument of type "inferred_file_metadata", which contains the mime type
information that the earlier events used to supply.  The idea here is
that future extensions to the record with new metadata will be less
likely to break user code than the alternatives (adding new events or
new event parameters).

Addresses BIT-1368.
2015-04-10 16:31:29 -05:00
Robin Sommer
bd1191c60b Updating submodule(s).
[nomail]
2015-04-10 08:11:37 -07:00
Robin Sommer
51aed48d67 Adding back in a call to match pure rules when clearing signature
state.

Previous change had removed this, but I believe we still need it.
2015-04-10 08:09:47 -07:00
Seth Hall
49926ad7bf Merge remote-tracking branch 'origin/master' into topic/seth/more-file-type-ident-fixes 2015-04-09 23:58:52 -04:00
Robin Sommer
ea7bc11aa1 Merge remote-tracking branch 'origin/topic/jsiwek/bit-844'
BIT-844 #merged

* origin/topic/jsiwek/bit-844:
  Remove stale signature benchmarking code (-L command-line option).
  BIT-844: fix UDP payload signatures to match packet-wise
2015-04-09 14:52:44 -07:00
Robin Sommer
a4edc0df08 Fixing input readers' component type.
A reader is a reader, not a writer.
2015-04-09 12:07:17 -07:00
Seth Hall
3335da67e0 Tiny spelling correction. 2015-04-09 11:08:13 -04:00
Seth Hall
6162d986a2 Fix an issue with files having gaps before the bof_buffer is filled.
When files had gaps prior to the bof_buffer completely filling, the
file gap handling code was never sniffing and passing along as much
data as possible so file type identification wasn't working correctly.
2015-04-08 13:41:03 -04:00
Seth Hall
89d66af792 Fix an issue with packet loss in http file reporting.
The HTTP analyzer was propogating Gaps to the files framework even
in the case of a packet drop occurring immediately after the headers
are completed in an HTTP response when the response content length
was declared to be zero (no file started, so no loss).

Includes passing test.
2015-04-08 13:39:42 -04:00
Johanna Amann
94c67dc030 Merge remote-tracking branch 'origin/topic/robin/pacf' into topic/johanna/openflow 2015-04-07 17:28:38 -07:00
Aaron Eppert
1b8bd7fe14 Merge branch 'master' of https://github.com/bro/bro 2015-04-07 18:03:35 -04:00
Vlad Grigorescu
b4498a4142 Some changes to fix PE analyzer on master. 2015-04-07 14:45:15 -07:00
Vlad Grigorescu
010cd80f2f Merge remote-tracking branch 'origin/master' into topic/vladg/file-analysis-exe-analyzer 2015-04-07 14:19:15 -07:00
Jon Siwek
2aae90d4f2 Remove stale signature benchmarking code (-L command-line option).
I don't think this is seeing much use or will ever see much use, and
unless compilers optimize it out, it's just wasting cycles.
2015-04-06 15:46:08 -05:00
Jon Siwek
56a7bf7936 BIT-844: fix UDP payload signatures to match packet-wise 2015-04-06 15:22:26 -05:00
Jon Siwek
57501c6069 BIT-1367: improve coercion of anonymous records in set constructor.
Error messages for set constructors that fail the type check may also be
more verbose than before and point out specifically the suspect types.
2015-04-06 12:14:59 -05:00
Jon Siwek
ffbeafb549 Fix Coverity warning in RDP analyzer. 2015-04-06 10:12:08 -05:00
Robin Sommer
b0ee924aa2 Updating submodule(s).
[nomail]
2015-04-03 15:51:30 -07:00
Jon Siwek
32ae94de9a Merge remote-tracking branch 'origin/topic/seth/rdp'
* origin/topic/seth/rdp: (31 commits)
  Improved transition into SSL/TLS from RDP.
  Fixes tests in RDP branch.
  add a special case to the X509 code that deals with RDP certificates.
  A few more changes to handling encryption in RDP.
  Adds some comments and fixes a broxygen warning.
  Fixes another optional part of an RDP unit.
  Support RDP negotiation requests optionally and support zero length cookies.
  Changed UTF-16 to UTF-8 conversion to be more lenient.
  Fixed an issue with parse failure on an optional field.
  Removing a stray printf from RDP analyzer.
  Another big RDP update.
  New script to add a field to rdp.log when the connection is upgraded to SSL.
  Huge updates to the RDP analyzer from Josh Liburdi.
  FreeRDP test trace showing SSL encryption -- RDP analyzer does not currently handle this and SSL analyzer does not identify it either
  Wireshark test trace for native encryption -- generates a binpac error
  Delete RDP-004.pcap
  Delete nla_win7_win2k8r2.pcap
  Update dpd.sig
  Fixed typo
  Added check for connection existence
  ...

BIT-1340 #merged
2015-03-30 17:10:04 -05:00
Johanna Amann
55ce8310a0 Limit maximum number of DTLS fragments to 30.
Addresses BIT-1359
2015-03-30 11:36:01 -07:00
Johanna Amann
4f5217938b Updating submodule
[nomail]
2015-03-25 18:34:02 -07:00
Johanna Amann
f79b5adc08 Merge remote-tracking branch 'origin/topic/vladg/ssh'
I replaced a few strcmps with either calls to std::str.compare
or with the == operator of BroString.

Also changed two of the input framework tests that did not pass
anymore after the merge. The new SSH analyzer no longer loads the
scripts that let network time run, hence those tests failed because
updates were not propagated from the threads (that took a while
to find.)

* origin/topic/vladg/ssh: (25 commits)
  SSH: Register analyzer for 22/tcp.
  SSH: Add 22/tcp to likely_server_ports
  SSH: Ignore encrypted packets by default.
  SSH: Fix some edge-cases which created BinPAC exceptions
  SSH: Add memleak btest
  SSH: Update baselines
  SSH: Added some more events for SSH2
  SSH: Intel framework integration (PUBKEY_HASH)
  Update baselines for new SSH analyzer.
  Update SSH policy scripts with new events.
  SSH: Add documentation
  Refactoring ssh-protocol.pac:
  SSH: Use the compression_algorithms const in another place.
  Some cleanup and refactoring on SSH main.bro.
  SSH: A bit of code cleanup.
  Move SSH constants to consts.pac
  SSH: Cleanup code style.
  SSH: Fix some memleaks.
  Refactored the SSH analyzer. Added supported for algorithm detection and more key exchange message types.
  Add host key support for SSH1.
  Add support for SSH1
  Move SSH analyzer to new plugin architecture.
  ...

Conflicts:
  scripts/base/protocols/ssh/main.bro
  testing/btest/Baseline/core.print-bpf-filters/output2
  testing/btest/Baseline/plugins.hooks/output

BIT-1344: #merged
2015-03-25 11:04:26 -07:00
Robin Sommer
b4c0f217c0 Merge branch 'topic/petiepooo/localtime_r-segv' of https://github.com/petiepooo/bro
Added one more failure check for a zero interval.
2015-03-25 10:15:52 -07:00
Robin Sommer
99c50251d4 Merge remote-tracking branch 'origin/topic/johanna/dtls'
* origin/topic/johanna/dtls:
  a few more small script-level fixes
  update test baselines
  add a simple leak test for dtls
  add signature for dtls client hello
  Make the plugin structure more... legal.
  Only force logging of SSL if it actually was the SSL analyzer that failed.
  DTLS working.
  Implement correct parsing of TLS record fragmentation.
  Make handshake analyzer flow-based. This means we can feed data to it in chunks, which makes dealing with fragmentation a little bit more convenient.
  When setting the SSL analyzer to fail, also stop processing data that already has been delivered to the analyzer, not just future data.
  First step for a DTLS analyzer.

BIT-1347 #merged

Conflicts:
	scripts/base/protocols/ssl/main.bro
	testing/btest/Baseline/plugins.hooks/output
2015-03-23 12:40:38 -07:00
Robin Sommer
1dbc5ed523 bro -B <x> now supports "all" and "help" for <x>.
"all" enables all debug streams. "help" prints a list of available
debug streams.

Based on patch by John Donnelly.

BIT-1313 #merged
2015-03-23 11:39:09 -07:00
Robin Sommer
88165ad72c Merge remote-tracking branch 'origin/topic/johanna/bit-1199'
* origin/topic/johanna/bit-1199:
  add a basic leak test for an unparseable enum
  Change the way the input framework deals with values it cannot convert into BroVals (especially enums)
  Make error message when encountering not existing enums better.

BIT-1199: #merged
2015-03-23 10:25:43 -07:00
Robin Sommer
9999bce142 Merge remote-tracking branch 'origin/topic/jsiwek/bit-788'
* origin/topic/jsiwek/bit-788:
  BIT-788: use DNS QR field to better identify flow direction.

BIT-788 #merged
2015-03-23 10:08:02 -07:00
Robin Sommer
6c6873b668 Merge remote-tracking branch 'origin/topic/jsiwek/bit-342'
* origin/topic/jsiwek/bit-342:
  BIT-342: add "icmp_sent_payload" event.

BIT-342 #merged.
2015-03-23 10:04:07 -07:00
Jon Siwek
cf3abfb1c7 Merge remote-tracking branch 'origin/fastpath'
* origin/fastpath:
  Correct a spelling error
  When setting the SSL analyzer to fail, also stop processing data that already has been delivered to the analyzer, not just future data.
2015-03-23 09:50:15 -05:00