Commit graph

6667 commits

Author SHA1 Message Date
Seth Hall
b0d812812f In progress on ascii writer behavior change. 2017-02-21 15:45:26 -05:00
Seth Hall
c40a89e5db Merge branch 'krb5-ticket-tracking' of https://github.com/jrolli/bro into jrolli-krb5-ticket-tracking 2017-02-18 11:09:51 -05:00
Robin Sommer
524002eefa Merge remote-tracking branch 'origin/master' into topic/robin/broker-logging 2017-02-17 16:30:17 -08:00
Robin Sommer
511ca9e043 Adding Broker ifdefs for new remote logging code. 2017-02-17 16:28:20 -08:00
Johanna Amann
5604f46dd3 OCSP SCT: use correct oid for old openssls 2017-02-15 17:38:56 -08:00
Johanna Amann
5f910e1005 Merge remote-tracking branch 'origin/topic/jsiwek/bit-1785'
* origin/topic/jsiwek/bit-1785:
  BIT-1785: fix scripts able to access uninitialized variables.

BIT-1785 #merged
2017-02-15 16:19:21 -08:00
Johanna Amann
7c7e12ab94 Merge remote-tracking branch 'origin/topic/seth/BIT-1480'
* origin/topic/seth/BIT-1480:
  Small change to avoid potentially over reading memory.
  Implement ERSPAN support.

BIT-1480 #merged
2017-02-15 15:32:47 -08:00
Vlad Grigorescu
b3a18f3c80 Kerberos ciphertext had some additional ASN.1 content being lumped in. 2017-02-15 16:24:21 -06:00
Johanna Amann
976677dba2 Add missing end of file call for stapled ocsp responses. 2017-02-14 12:19:08 -08:00
Robin Sommer
a5e9a535a5 Changing semantics of Broker's remote logging to match old communication framework.
Broker had changed the semantics of remote logging: it sent over the
original Bro record containing the values to be logged, which on the
receiving side would then pass through the logging framework normally,
including triggering filters and events. The old communication system
however special-cases logs: it sends already processed log entries,
just as they go into the log files, and without any receiver-side
filtering etc. This more efficient as it short-cuts the processing
path, and also avoids the more expensive Val serialization. It also
lets the sender determine the specifics of what gets logged (and how).

This commit changes Broker over to now use the same semantics as the
old communication system.

TODOs:
     - The new Broker code doesn't have consistent #ifdefs yet.

     - Right now, when a new log receiver connects, all existing logs
     are broadcasted out again to all current clients. That doesn't so
     any harm, but is unncessary. Need to add a way to send the
     existing logs to just the new client.
2017-02-10 18:46:45 -08:00
Johanna Amann
c550521221 OCSP: parse signed certificate timestamps
With this change, we also parse signed certificate timestamps from OCSP
replies. This introduces a common base class between the OCSP and X509
analyzer, which now share a bit of common code. The event for signed
certificate timestamps is raised by both and thus renamed do:

x509_ocsp_ext_signed_certificate_timestamp
2017-02-10 17:05:05 -08:00
Johanna Amann
b061a5db1a Merge branch 'topic/johanna/signed_certificate_timestamp' into topic/johanna/ocsp-new 2017-02-10 17:04:50 -08:00
Johanna Amann
cdcc21ea4b OCSP: generic extension parsing.
Raises ocsp_extension event if an extension is present in the reply or
in one of the singlereplies.
2017-02-10 17:03:50 -08:00
Johanna Amann
8b50a1e09b SSL: parse OCSP stapled extension as file 2017-02-10 17:03:40 -08:00
Johanna Amann
9fd7816501 Allow File analyzers to direcly pass mime type.
This makes it much easier for protocols where the mime type is known in
advance like, for example, TLS. We now do no longer have to perform deep
script-level magic.
2017-02-10 17:03:33 -08:00
Johanna Amann
1b19ab78b6 OCSP: split into two analysers in scriptland.
Instead of having an additional string argument specifying if we are
sending a request or a reply, we now have an ANALYZER_OCSP_REQUEST and
an ANALYZER_OCSP_REPLY
2017-02-10 17:03:27 -08:00
Johanna Amann
e1bcc4509f OCSP: rewrite events and data structures.
Instead of having a big event, that tries to parse all the data into a
huge datastructure, we do the more common thing and use a series of
smaller events to parse requests and responses.

The new events are:

ocsp_request -> raised for an ocsp request, giving version and requestor

ocsp_request_certificate -> raised n times per request, once per cert

ocsp_response_status -> raised for each ocsp response, giving status

ocsp_response_bytes -> raised for each ocsp response with information

ocsp_response_certificate -> raised for each cert in an ocsp response
2017-02-10 17:03:18 -08:00
Johanna Amann
9c6cebf324 OCSP: a bunch of whitespace fixes 2017-02-10 17:03:04 -08:00
Johanna Amann
b021fe7562 Rewrite of big parts of the OCSP analyzer.
Less redundancy, style closer to the X.509 analyzer, times being parsed
as real times, and lots of other changes.
2017-02-10 17:02:56 -08:00
Johanna Amann
c670613996 Make OCSP analyzer part of the X.509 analyzer
This allows the easier integration of shared functionality. And it also
makes logical sense, given that OCSP is not interesting without X.509.
2017-02-10 17:02:15 -08:00
Johanna Amann
dfc871f831 Merge remote-tracking branch 'origin/master' into topic/johanna/ocsp 2017-02-08 10:35:12 -08:00
Johanna Amann
2d64b45394 X509: make SCT parsing work with older OpenSSL versions 2017-02-07 16:05:47 -08:00
Johanna Amann
5dd19f84a7 Add parsing of signed certificate timestamps out of X.509 certs.
This is a tiny bit evil because it uses parts of the SSL protocol
analyzer in the X.509 certificate parser. Which is the fault of the
protocol, which replicates the functionality.
2017-02-07 13:31:21 -08:00
Johanna Amann
a51ee9e155 Pull signed_certificate_timestamp into a separate pac file.
That allows us to use the same code to parse the signed certificate
timestamp X.509 extension in the X.509 file analyzer.
2017-02-07 10:43:45 -08:00
Jon Siwek
c857f5c4dd BIT-1785: fix scripts able to access uninitialized variables. 2017-02-06 23:30:54 -06:00
Johanna Amann
1de6cfc2e3 Fix memory leak in file analyzer.
This undoes the changes applied in merge 9db27a6d60
and goes back to the state in the branch as of the merge 5ab3b86.

Getting rid of the additional layer of removing analyzers and just
keeping them in the set introduced subtle differences in behavior since
a few calls were still passed along. Skipping all of these with SetSkip
introduced yet other subtle behavioral differences.
2017-02-04 16:47:07 -08:00
Johanna Amann
c92bf9bad2 Introduce ssl_plaintext_data event.
This event is the replacement for ssl_application_data, which is removed
in the same commit. It is more generic, containing more information than
ssl_application_dataand is raised for all SSL/TLS messages that are
exchanged before encryption starts.

It is used by Bro internally to determine when a TLS1.3 session has been
completely established. Apart from that, it can be used to, e.g.,
determine the record layer TLS version.
2017-02-03 13:58:26 -08:00
Johanna Amann
c05e07cc90 Add record layer version to event ssl_encrypted_data.
This exposes the record layer version of the fragment in addition to the
content type and the length. The ordering of the arguments in the event
is the same as the ordering in the protocol message (first type, then
version, then length).

This also includes a slight change to the analyzer, no longer calling
the generate function if the event is not used.
2017-02-03 13:45:40 -08:00
Seth Hall
d32e4b25f1 Small change to avoid potentially over reading memory. 2017-02-03 12:34:39 -08:00
Robin Sommer
bdbbed64f1 Merge remote-tracking branch 'origin/topic/johanna/l2flip'
BIT-1787 #merged

* origin/topic/johanna/l2flip:
  Fix layer 2 connection flipping.
2017-02-03 12:31:55 -08:00
Seth Hall
59f0477d29 Implement ERSPAN support.
This is a small caveat to this implementation.  The ethernet
header that is carried over the tunnel is ignored.  If a user
tries to do MAC address logging, it will only show the MAC
addresses for the outer tunnel and the inner MAC addresses
will be stripped and not available anywhere.
2017-02-03 12:29:22 -08:00
Johanna Amann
f721c74bad Add compression methods to ssl_client_hello event.
This change adds compression methods to the ssl_client_hello event. It
not being included was an oversight from a long time ago.

This change means that the signature of ssl_client_hello changes
slightly and scripts will have to be adjusted; since this is a commonly
used event, the impact of it might be higher than usually for event
changes.
2017-02-03 11:48:55 -08:00
Johanna Amann
3882ba6fbf Add support for the signed_certificate_timestamp TLS extension. 2017-02-03 11:23:49 -08:00
Johanna Amann
9db27a6d60 Merge remote-tracking branch 'origin/topic/robin/file-analysis-fixes'
* origin/topic/robin/file-analysis-fixes:
  Adding test with command line that used to trigger a crash.
  Cleaning up a couple of comments.
  Fix delay in disabling file analyzers.
  Fix file analyzer memory management.

The merge changes around functionality a bit again - instead of having
a list of done analyzers, analyzers are simply set to skipping when they
are removed, and cleaned up later on destruction of the AnalyzerSet.

BIT-1782 #merged
2017-02-01 14:20:14 -08:00
Robin Sommer
16f20507fd Cleaning up a couple of comments. 2017-01-31 14:45:06 -08:00
Johanna Amann
7feaf4499f Fix layer 2 connection flipping.
If connection flipping occured in Sessions.cc code (invoked e.g. when
the original SYN is missing), layer 2 flipping was not performed. This
change switches to always use the connection flipping code in Conn.cc
which performs the switch correctly.
2017-01-30 15:13:56 -08:00
John E. Rollinson
832f6d34b4 Add ciphertext to ticket data structures 2017-01-29 09:39:12 +09:00
Robin Sommer
fead5f5d5e Fix delay in disabling file analyzers.
When a file analyzer signaled being done with data delivery, the
analyzer would only be scheduled for removal at that poing, meaning it
could still receive more data until that action actually took effect.
Now we make sure to not send any more data to an analyzer.
2017-01-28 13:24:13 -08:00
Robin Sommer
3ce6a031d4 Fix file analyzer memory management.
File analyzers got deleted immediately once the queue with the
corresponding removal operation got drained. That however can happen
while the analyzer is still doing stuff: the queue is drained whenever
any the "special" file analysis events needing immediate attention has
been executed. This fix now only schedules the analyzer for deletion
at that time, but postpones the actual operation until file object
itself is being destroyed.
2017-01-28 13:07:51 -08:00
Johanna Amann
8eddeed78f Allow access to global variables using GLOBAL:: namespace.
Addresses BIT-1758. Patch was contributed by François Pennaneach
<francois.pennaneach@free.fr>.
2016-12-07 15:28:34 -08:00
Johanna Amann
ad345d7277 Merge remote-tracking branch 'origin/topic/dnthayer/ticket1516'
* origin/topic/dnthayer/ticket1516:
  Remove wordexp functionality from broxygen
  Fix a failing test on OpenBSD
  Fix compiler warnings on OpenBSD
  Fix a build failure on OpenBSD
  Fix test core.pcap.dumper to work on OpenBSD

BIT-1516 #merged
2016-12-07 14:53:35 -08:00
Daniel Thayer
85ddd3ca8b Remove wordexp functionality from broxygen
Broxygen no longer attempts to do tilde expansion of PATH
components when trying to get the mtime of Bro (this involved removing
the wordexp functionality, which doesn't exist on OpenBSD).  In the
very unlikely event that this causes problems for someone (this could
occur by running "bro -X configfile" if bro is located in a PATH
component which starts with a tilde, such as "~/bin"), the error
message text has been improved so that a user knows the workaround
for this (just run bro with a relative or absolute path).

Broxygen also no longer attempts to get the mtime of the bro executable
when bro wasn't invoked with the "-X" option.
2016-12-07 16:42:44 -06:00
Daniel Thayer
f107336f21 Fix compiler warnings on OpenBSD
Needed to add an "#include" to get the declaration of "struct in_addr".
2016-12-02 16:15:12 -06:00
Daniel Thayer
31e46d37f0 Fix a build failure on OpenBSD
The wordexp function doesn't exist in OpenBSD.  Skipping this
functionality only affects users who have bro installed in a directory
in the PATH and the directory name as it appears in PATH starts with
a tilde (e.g. "~/bin").  A simple workaround for affected users
would be to change the PATH environment variable to not contain any
tildes.
2016-12-02 14:31:16 -06:00
Johanna Amann
37a51b354e Fix validation of OCSP replies inside of Bro.
At one place in the code, we do not check the correct return code. This
makes it possible for a reply to get a response of "good", when the ocsp
reply is not actually signed by the responder in question.

This also instructs ocsp verication to skip certificate chain
validation, which we do ourselves earlier because the OCSP verify
function cannot do it correctly (no way to pass timestamp).
2016-11-30 13:17:09 -08:00
Johanna Amann
b39594408c Update submodules
[nomail]
2016-11-30 10:32:16 -08:00
Johanna Amann
9b9c3a6104 Merge remote-tracking branch 'origin/topic/dnthayer/ticket1757'
* origin/topic/dnthayer/ticket1757:
  Fix a build failure on OpenBSD

BIT-1757 #merged
2016-11-29 12:52:36 -08:00
Johanna Amann
beaf491fa3 Fix compile error in krb-types.pac.
Introduced in 15f2b30c73
2016-11-29 12:41:15 -08:00
Daniel Thayer
e198fba2d9 Fix a build failure on OpenBSD
The definition of a "struct pcap_pkthdr" on OpenBSD contains a member
of type "struct bpf_timeval" instead of "struct timeval" used on other
systems.

Also, on OpenBSD the header netinet/if_ether.h does not #include
net/if_arp.h as it does on other systems.
2016-11-29 14:20:43 -06:00
Vlad Grigorescu
5845737c0c Fix a typo 2016-11-29 10:55:18 -06:00