tag:blogger.com,1999:blog-87650210525218462282009-06-08T14:16:07.728-07:00The ICSI Networking Group Blog<a href="http://www.icir.org">Network Research</a> at the <a href="http://www.icsi.berkeley.edu">International Computer Science Institute</a> in Berkeley, CA.Robin Sommerhttp://www.blogger.com/profile/00359901142211806482noreply@blogger.comBlogger43125tag:blogger.com,1999:blog-8765021052521846228.post-27352661430798489212009-06-08T14:06:00.000-07:002009-06-08T14:16:07.736-07:00Introducing the ICSI Netalyzr<p>Today we're very happy to announce public availability of the <a href="http://netalyzr.icsi.berkeley.edu">ICSI Netalyzr</a>. Our goal was to build a service that shows you in detail what's up with your network connection, whatever network you might find yourself in, whenever something's not working, or when you're simply curious. The numerous tests conducted by the Netalyzr include HTTP proxy discovery, HTTP caching behavior, NAT detection, TCP & UDP port filtering, DNS resolver behavior, IPv6 connectivity, connection latency, bandwidth, and buffer properties, and more.</p> <p>All you need is a Java-enabled browser and a visit to <a href="http://netalyzr.icsi.berkeley.edu">http://netalyzr.icsi.berkeley.edu</a>.</p> <p>We hope you'll find the site as useful as we do. We're very keen to hear your feedback, whether it's interesting results, suggestions for improvements, or any issues you've encountered.</p> <p>Go forth and netalyze!</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-2735266143079848921?l=blog.icir.org'/></div>Christian Kreibichhttp://www.blogger.com/profile/05102947565390977065noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-86097632364619457442009-04-23T12:42:00.000-07:002009-04-23T12:52:17.009-07:00LEET'09 paper on orchestration of spamming campaignsAt yesterday's <a href="http://www.usenix.org/events/leet09/">LEET'09</a> workshop we presented an inside look at how spammers orchestrate their campaigns, based on a 10-month infiltration of the Storm botnet. <ul> <li>C. Kreibich, C. Kanich, K. Levchenko, B. Enright, G. Voelker, V. Paxson, and S. Savage. <a href="http://www.icir.org/christian/publications/2009-leet-spamcraft.pdf">Spamcraft: An Inside Look At Spam Campaign Orchestration</a>. Second USENIX Workshop on Large-scale Exploits and Emergent Threats (LEET '09), 2009, Boston, USA. (<a href="http://www.icir.org/christian/publications/2009-leet-spamcraft.bib">bib</a>)</li> </ul> This is joint work with <a href="http://www-cse.ucsd.edu">UCSD</a> as part of our <a href="http://www.ccied.org">CCIED</a> effort.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-8609763236461945744?l=blog.icir.org'/></div>Christian Kreibichhttp://www.blogger.com/profile/05102947565390977065noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-66931182029177503902009-04-13T09:08:00.000-07:002009-04-13T10:43:27.952-07:00User-Oriented Networking Talk at FIND PI MeetingSlides from a talk at the <a href="http://www.nets-find.net/Meetings/S09Meeting/S09Meeting.php">NSF FIND PI meeting</a> last week: <ul> <li>Mark Allman, Michael Rabinovich, Nicholas Weaver. <a href="http://www.icir.org/mallman/talks/udb-find-pi-mtg-apr09.pdf"><i>User-Oriented Networking</i></a>. NSF FIND PI Meeting, April 2009. </li></ul><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-6693118202917750390?l=blog.icir.org'/></div>Mark Allmanhttp://www.blogger.com/profile/16307174487858112101noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-2155976598211043172009-04-01T07:14:00.000-07:002009-04-13T10:52:58.564-07:00New Paper on Efficient Application Placement in Large WWW AppsThe following paper is about techniques for aiding systems that swap large applications in and out of use (e.g., generic platforms for web applications). It will be presented at WWW this month: <ul> <li>Zakaria Al-Qudah, Hussein Alzoubi, Mark Allman, Michael Rabinovich, Vincenzo Liberatore. <a href="http://www.icir.org/mallman/papers/app-place-www09.pdf"> <i>Efficient Application Placement in a Dynamic Hosting Platform</i></a>, International World Wide Web Conference, April 2009. </li></ul><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-215597659821104317?l=blog.icir.org'/></div>Mark Allmanhttp://www.blogger.com/profile/16307174487858112101noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-8500141403563064312009-04-01T07:10:00.000-07:002009-04-13T10:53:29.497-07:00New Paper on Ephemeral Port SelectionThe following paper on the efficacy of various ways to generate obscure ephemeral ports appears this month: <ul> <li> Mark Allman. <a href="http://www.icir.org/mallman/papers/ports-ccr09.pdf"> <i>Comments On Selecting Ephemeral Ports</i></a>, ACM Computer Communication Review, April 2009.</li> </ul><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-850014140356306431?l=blog.icir.org'/></div>Mark Allmanhttp://www.blogger.com/profile/16307174487858112101noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-5118669658209190232009-02-19T10:46:00.000-08:002009-04-08T14:13:13.842-07:00Summer Internship Applications Now Being AcceptedThe Networking Group is now <a href="http://www.icir.org/jobs.html">accepting applications for Summer 2009 internships</a>. Applicants should be Ph.D. students with a solid background in networking and/or security. To apply, send a resume to summer@icir.org, and arrange for a letter of reference to be sent to that address too. The deadline is Monday, March 2nd, 2009.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-511866965820919023?l=blog.icir.org'/></div>Vern Paxsonhttp://www.blogger.com/profile/13097847730032158664noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-61561802181214112952009-01-09T10:27:00.001-08:002009-01-09T16:51:30.951-08:00How to Report a Bro Problem<p>Generally, when you see Bro doing something you believe it shouldn't, the best thing to do is <a href="http://www.bro-ids.org/wiki/index.php/Trac">opening a ticket</a> in the <a href="http://tracker.icir.org/bro">Bro tracker</a>, including information how to reproduce the issue. In particular, your ticket should come with the following: </p><ul> <li><p>The Bro version you're using (if working directly from the Subversion repository, the branch and revision number.) </p></li> <li><p>A <em>small</em> trace in <a href="http://tcpdump.org/">libpcap format</a> demonstrating the effect (assuming the problem doesn't happen right at startup already).</p></li> <li><p>The command-line you're using to run Bro with the trace. (Please run the Bro binary directly rather than using the <tt>bro.rc</tt> wrapper from the BroLite environment.)</p></li> <li><p>Any non-standard scripts you're using (but please only those necessary; ideally just a small code snippet).</p></li> <li><p>The output you're seeing along with a description what you'd expect Bro to do instead.</p></li> <li><p>If you encounter a crash, information from the core dump, such as a stack backtrace, can be very helpful. See below for more on this.</p></li> </ul> <p></p> <p> It is crucial for us to have away of reliably reproducing the effect you're seeing. Unfortunately, reproducing problems can be rather tricky with Bro because more often than not, they occur only either in very rare situations or after Bro has been running for some time. In particular, getting a small trace showing a particular effect can be a real problem. In the following, I'll summarize some strategies to this end.</p> <h2>How Do I Get a Trace File?</h2> <p> Since Bro is usually running live, coming up with a small trace file can turn out to be a challenge. Often it works to best to start with a large trace triggering the problem, and then successively thin it out as much a possible. </p><p> To get to the initial, large trace, here are few things you can try: </p> <ul> <li> <p> Capture a trace with <a href="http://www.tcpdump.org/">tcpdump</a>, either on the same interface Bro is running on, or on another host where you can generate traffic of the kind likely triggering the problem (e.g., if you're seeing problems with the HTTP analyzer, record some of your Web browsing on your desktop.) When using tcpdump, don't forget to record <em>complete</em> packets (<tt>tcpdump -s 0 ...</tt>). </p> <p> You can reduce the amount of traffic captured by using the same BPF filter as Bro is using. If you add <tt>print-filter</tt> to Bro's command-line, it will print its BPF filter to stdout, which you can copy over to tcpdump. </p> </li> <li> <p> Bro's command-line option <tt>-w &lt;trace&gt;</tt> records all packets processed by Bro to the given the trace file. You can then later run Bro offline on this trace and it will process the packets in the same way as it did live. This is particularly helpful with problems which only occur after Bro has been running for some time. For example, sometimes crashes are triggered by a particular kind of traffic only occurring rarely. Running Bro live with <tt>-w</tt> and then, after the crash, offline on the recorded trace might, with a little bit of luck, reproduce the the problem reliably. </p> <p> However, be careful with <tt>-w</tt>: it can result in huge trace files, quickly filling up your disk. (One way to mitigate the space issues is to periodically delete the trace file by configuring <tt>rotate-logs.bro</tt> accordingly.) </p> </li><li> <p> Finally, you can try running Bro on some publically available trace files, such as <a href="http://www-nrg.ee.lbl.gov/anonymized-traces.html">anonymized FTP traffic</a>, <a href="http://www.icir.org/enterprise-tracing/Overview.html">headers-only enterprise traffic</a>, or <a href="http://cctf.shmoo.com/">Defcon traffic</a>. Some of these particularly stress certain components of Bro (e.g., the Defcon traces contain tons of scans). </p> </li> </ul> <p> Once you have a trace which demonstrates the effect, you will often notice that it's pretty big, in particular if recorded from the link you're monitoring. Therefore, the next step is to shrink its size as much as possible. Here are a few things you can try to this end: </p> <ul> <li> <p> Very often, a single connection is able to demonstrate the problem. If you can identify which one it is (e.g., from one of Bro's <tt>*.log</tt> files) you can extract the connection's packets from the trace with tcpdump by filtering for its 4-tuple of addresses and ports: </p><blockquote> <pre class="code"> tcpdump -r large.trace -w small.trace \ host &lt;ip1&gt; and port &lt;port1&gt; \ and host &lt;ip2&gt; and port &lt;port2&gt;. </pre> </blockquote> <p></p> </li> <li> <p>If you can't reduce the problem to a connection, try to identify either a host pair or a single host triggering it, and filter down the trace accordingly.</p> </li> <li> <p>You can try to extract a smaller time slice from the trace using the <a href="http://www.tcpdump.org/related.html"><tt>TCPslice</tt></a> utility. For example, to extract the first 100 seconds from the trace: </p><blockquote> <pre class="code"> tcpslice +100 &lt;in &gt;out </pre> </blockquote> <p></p> Alternatively, <tt>tcpdump</tt> extracts the first <tt>n</tt> packets with its option <tt>-c &lt;n&gt;</tt>. </li> </ul> <h2>Getting More Information After a Crash.</h2> <p> If Bro crashes, a <em>core dump</em> can be very helpful to nail down the problem. Examining a core is not for the faint of heart but can reveal extremely useful information ...</p> <p> First, you should <tt>configure</tt> Bro with the option <tt>--enable-debug</tt> and recompile; this will disable all compiler optimizations and thus make the core dump more useful (don't expect great performance of this version though; compiling Bro without optimization has a noticeable impact on its CPU usage.). Then enable core dumps if you don't have already (e.g., <tt>ulimit -c unlimited</tt> if you're using a <tt>bash</tt>). </p> <p> Once Bro has crashed, start <tt>gdb</tt> with the Bro binary and the file containing the dump. (Alternatively, you can also run Bro directly inside <tt>gdb</tt> instead of working from a core file.) The first helpful information to include with your tracker ticket is a stack backtrace, which you get with <tt>gdb's</tt> <tt>bt</tt> command: </p> <blockquote> <pre class="code"> gdb bro core [...] > bt .... </pre> </blockquote> <p>If the crash occurs inside Bro's script interpreter, the next thing to do is identifying the line of script code processed just before the abnormal termination. Look for methods in the stack backtrace which belong to any of the script interpreter's classes; roughly speaking, these are all classes with names ending in <tt>Expr</tt>, <tt>Stmt</tt>, or <tt>Val</tt>. Then climb up the stack with <tt>up</tt> until you reach the first of these methods. The object to which <tt>this</tt> is pointing, will have a <tt>Location</tt> object, which in turn contains the file name and line number of the corresponding piece of script code. Continuing the example from above, here's how to get that information: </p> <blockquote> <pre class="code"> >up >... >up >print this->location->filename >print this->location->first_line </pre> </blockquote> <p> If the crash occurs while processing input packets but you cannot directly tell which connection is responsible (and thus not extract its packets from the trace as suggested above), try getting the 4-tuple of the connection currently being processed from the core dump. To this end again examine the stack backtrace, this time looking for methods belonging to the <tt>Connection</tt> class. The connection class has members <tt>orig_addr/resp_addr</tt> and <tt>orig_port/resp_port</tt> storing (pointers to) the IP addresses and ports respectively: </p> <blockquote> <pre class="code"> >up >... >up >printf "%08x:%04x %08x:%04x\n", \ *this->orig_addr, this->orig_port, \ *this->resp_addr, this->resp_port </pre> </blockquote> <p> Note that these values are stored in <a href="http://en.wikipedia.org/wiki/Endianness#Endianness_in_networking">network byte order</a> so you will need flip the bytes around if you are on a low-endian machine (which is why the above example prints them in hex). For example, if an IP address prints as <tt>0100007f</tt>, that's <tt>127.0.0.1</tt>. </p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-6156180218121411295?l=blog.icir.org'/></div>Robin Sommerhttp://www.blogger.com/profile/00359901142211806482noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-39356753278852762312008-12-18T11:11:00.000-08:002008-12-18T11:17:56.088-08:00New Project: Relationship Oriented NetworkingIn January we will begin a new project that considers a "Relationship Oriented Network". That is, an architecture that utilizes social graphs across protocols and services to provide users with more convenient and trustworthy communication. A description of the project is <a href="http://www.icir.org/mallman/papers/RON-description.pdf">available</a>. This project is joint work with Case Western Reserve University. Thoughts on such topics are very much welcome.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-3935675327885276231?l=blog.icir.org'/></div>Mark Allmanhttp://www.blogger.com/profile/16307174487858112101noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-64540887532160175652008-12-18T11:05:00.000-08:002008-12-18T11:11:40.188-08:00Draft Paper on Port RandomizationOne technique proposed to mitigate the problems blind attackers can cause by injecting traffic into some connection is to carefully choose the transport layer ephemeral port number. This makes it difficult for an attacker to spoof traffic to some valid endpoint and have that traffic acted upon. A number of port selection schemes have been developed. We add to this list and evaluate the known techniques in the following draft paper. Comments welcome. <p> <br> <p> Mark Allman. <a href="http://www.icir.org/mallman/share/ports-dec08.pdf"><span style="font-style: italic;">Comments On Selecting Ephemeral Ports</span></a>, December 2008.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-6454088753216017565?l=blog.icir.org'/></div>Mark Allmanhttp://www.blogger.com/profile/16307174487858112101noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-75007385581203455982008-12-08T18:20:00.001-08:002008-12-08T18:20:32.232-08:00Bro Issue Tracker<p>The Bro team is happy to announce the new <a href="http://tracker.icir.org/bro">Bro Issue Tracker</a>. Feel free to submit your favorite bug there (and the other one too!)</p> <div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-7500738558120345598?l=blog.icir.org'/></div>Robin Sommerhttp://www.blogger.com/profile/00359901142211806482noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-79358635229264853592008-12-08T14:06:00.001-08:002009-02-04T10:16:49.468-08:00Bro Workshop 2009<p><em>Update: The workshop has a <a href="http://www.icir.org/robin/bro/workshop09">home page</a> now.</em></p> <p><em>Update: The workshop has filled up already but we have set up a <a href="http://www.regonline.com/BRO2009">waiting list</a> in case space becomes available.</em></p> <p>The Bro team and the Lawrence Berkeley National Lab are pleased to announce the "Bro Workshop 2009", a 2.5-day Bro training event that will take place in Berkeley, CA, on Feb 10-12 2009.</p> <p>The workshop is primarily targeted at site security personnel wishing to learn more about how Bro works, how to use its scripting language and how to generally customize the system based on a site's local policy. </p> <p>Similar to the 2007 workshop, the agenda will be an informal mix of tutorial-style presentations and hands-on lab sessions. No prior knowledge about using Bro is assumed though attendees should be familiar with Unix shell usage as well as with typical networking tools like tcpdump and Wireshark.</p> <p>All participants are expected to bring a Unix-based (Linux, Mac OS X, FreeBSD) laptop with a working Bro configuration. We will provide sample trace files to work with.</p> <p>The 2009 workshop will be hosted by the Lawrence Berkeley National Lab. The registration is now <a href="http://www.regonline.com/BRO2009">now open</a>. We will soon provide a web site with more detailed location information. To facilitate a productive lab environment, the number of attendees will be limited to 30 people. A nominal registration fee of $50 will be charged.</p> <p>We also expect to have time for 2-3 case-study presentations from people using Bro in their environments. If you have something interesting to talk about, please contact <a href="http://www.icir.org/robin">Robin</a> via mail. </p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-7935863522926485359?l=blog.icir.org'/></div>Robin Sommerhttp://www.blogger.com/profile/00359901142211806482noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-73816585990601300092008-10-31T10:48:00.000-07:002009-04-13T10:57:50.869-07:00CCS'08 paper on measuring spam conversion ratesAt this week's <a href="http://www.sigsac.org/ccs/CCS2008/">CCS conference</a> we presented a measurement study of spam conversion rates, based on infiltration of a real-world botnet responsible for billions of spams: the Storm botnet. <ul> <li>C. Kanich, C. Kreibich, K. Levchenko, B. Enright, G. Voelker, V. Paxson, S. Savage. <a href="http://www.icir.org/christian/publications/2008-ccs-spamalytics.pdf">Spamalytics: An Empirical Analysis of Spam Marketing Conversion</a>. 15th ACM Conference on Computer and Communications Security 2008, Alexandria, VA, USA. [<a href="http://www.icir.org/christian/spamalytics/">HTML</a>, <a href="http://www.icir.org/christian/publications/2008-ccs-spamalytics.pdf">PDF</a>, <a href="http://www.icir.org/christian/publications/2008-ccs-spamalytics.bib">BibTeX</a>] </li> </ul> This is joint work with <a href="http://www.cs.ucsd.edu/groups/sysnet/">UCSD</a> as part of our <a href="http://www.ccied.org">CCIED</a> effort.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-7381658599060130009?l=blog.icir.org'/></div>Christian Kreibichhttp://www.blogger.com/profile/05102947565390977065noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-67170154202976603792008-10-17T14:40:00.000-07:002008-10-17T15:00:05.730-07:00Bro 1.4 releasedWe've released a <a href="ftp://bro-ids.org/bro-1.4.tar.gz">new distribution</a> of our <a href="http://bro-ids.org/">Bro intrusion detection system</a>, version 1.4.  This release includes significant new functionality as well as numerous refinements and fixes, per the <a href="ftp://bro-ids.org/bro-change-log.txt">changelog entries</a>.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-6717015420297660379?l=blog.icir.org'/></div>Vern Paxsonhttp://www.blogger.com/profile/13097847730032158664noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-7043615395782538352008-10-16T12:33:00.001-07:002008-10-16T12:33:10.851-07:00cFlow: A High-Performance Cluster Front-End<p> <a href="http://www.cpacket.com/">cPacket Networks</a> has just announced their new product <em>cFlow</em>, a high-performance load-balancer that implements the traffic distribution scheme we developed for the <a href="http://www.icir.org/robin/papers/raid07.pdf">Bro Cluster</a>. As our initial research prototypes were not suitable for a reliable production deployment, the <a href="http://www.lbl.gov">Lawrence Berkeley National Lab</a> collaborated with the cPacket team to develop this appliance, which delivers a load balancing front-end at full 10 GigE line rate. cPacket did a great job with this, and the cFlow will become a key component of the Lab's new, high-performance intrusion detection infrastructure. See the <a href="http://www.cpacket.com/cPcFlow.html">full press release</a> for more information. </p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-704361539578253835?l=blog.icir.org'/></div>Robin Sommerhttp://www.blogger.com/profile/00359901142211806482noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-71844440538456871992008-09-30T11:05:00.000-07:002008-09-30T11:16:31.629-07:00draft-weaver-dnsext-comprehensive-resolver-00.txt<A HREF="http://www.ietf.org/internet-drafts/draft-weaver-dnsext-comprehensive-resolver-00.txt">http://www.ietf.org/internet-drafts/draft-weaver-dnsext-comprehensive-resolver-00.txt</A> <P>Abstract: DNS resolvers are vulnerable to many attacks on their network communication, ranging from blind attacks to full men-in-the-middle. Although a full man-in-the-middle can only be countered with cryptography, there are many layers of defenses which apply to less powerful attackers. Of particular interest are defenses which only require changing the DNS resolvers, not the authoritative servers or the DNS protocols. This document begins with a taxonomy of attacker capabilities and desires, and then discusses defenses against classes of attackers, including detecting non-disruptive attacks, entropy budgeting, detecting entropy stripping, semantics of duplication, and cache policies to eliminate "race-until-win" conditions. Proposed defenses were evaluated with traces of network behavior.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-7184444053845687199?l=blog.icir.org'/></div>Nicholas Weaverhttp://www.blogger.com/profile/17126451524439541478noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-36687009874587229652008-08-22T09:55:00.000-07:002008-08-22T10:03:49.220-07:00Some More Thoughts on Protecting DNS<P>I posted the following to the namedroppers list, and I'm crossposting here for comments. Again, this is "in progress", and largely shaped by discussions with many people, NOT a finished work. Comments are greatly appreciated. <P>One thought (again, I don't know how much this has been hashed out) is how robust do DNS resolvers REALLY need to be? <P>Any comments on the following? <BR><BR> <P>I personally believe that resolvers should be robust to anything short of a man-in-the-middle ("Aware & Blocking"), yet man-in-the-middle is almost irrelevant for purposes of defending DNS. [1] Thus as long as the DNS resolvers are strong to anything short of the man-in-the-middle, its good in practice. <P>At the same time, such robustness must ONLY involve changes to the resolvers: the resolvers should be able to protect themselves, without relying on the authoritative servers making changes (although authoritative servers may suffer more load, especially servers which return some out-of-standard nonsenses.). [2] <P>And probabilistic protection is perfectly good. We don't need perfect protection against blind attacks, we just need to ensure that the attacker resources involved are far better spent elsewhere. <BR><BR> <P>My thoughts: <P>Against blind attacks, I believe the following principles should apply: <UL><LI>No birthday attacks, of course. <LI>>=20b of entropy for purposes of protecting the transaction [3] <LI>>=40b of entropy for purposes of protecting the cache [4] <LI>Detecting when network entropy (port #) is reduced or eliminated by an in-path network device, allowing the resolver to accurately estimate the entropy it is generating in the requests. <LI>Detect and respond when there is .001% of a chance that a blind attack created one or more corrupt cache entries by either revalidating or voiding the cache. <LI>NO "race until win" scenarios for ANY given mapping in the cache. ALL blind attacks should be either "Race once per TTL" or "Race until another race until win". Blind attacks should always cost time as well a packets. [5] </UL> <P>ALL of the previous principles seem doable using existing techniques (port and 0x20 randomization, duplication, a single global counter to count unsolicited replies, and some seemingly simple data acceptance policies) <BR><BR> <P>Against transparent attacks, I believe the following should apply: <P>If a resolver, within its normal transaction timeout, receives a second or subsequent reply with a differing value but which would have been otherwise accepted (matching on TXID, port, server, 0x20, etc), this must be considered an attack on both the transaction and the cache. [6] <P>If the resolver is an intermediary, it MUST forward the second response back to the original requester, with the TTL for the "new" value set to 1 second. <P>For the resolver's cache, any entry which MAY have been potentially affected by the second reply MUST be treated as corrupted by an attack. Thus, depending on how much information is recorded and available, various cache entries may need to be voided or undone (up to all cache entries for the domain in question, if more precise record keeping is unavailable). Even if this would not be considered an attack, it doesn't actually make sense to cache anything which may have been dependent on this response. <P>For the final client, it is up to the client to determine what to do, but the strong suggestion is to consider this an attack and abort any transaction involving this name. <P>However, if the end client does not treat this as an attack and abort subsequent TCP connections to the final IP, this loss of transaction protection means that the few authorities which trigger this alert through "normal" behavior will simply see their results not cached rather than not accepted by the client. <HR> <P>[1] If an attacker can man-in-the-middle the naming stream of a victim, he can probably man-in-the-middle the data stream. If the end protocol desired is weak to a man-in-the-middle, reliable naming does no good. If the end protocol is robust to a man-in-the-middle, it never really trusted the DNS record. <P>[2] This is why I'm not a believer in DNSSEC. It has both bad network effects (both the resolver and authority needs to change behavior, yet the changed behavior only protects the intersection of the two sets, so neither resolvers nor authorities have strong internal incentives to deploy), yet does not actually provide, to my mind, all that much meaningful system security because the other options available to a man-in-the-middle in practice. <P>[3] Blind transaction attacks, when combined with protections that provide "race once per TTL per name", as far as I can tell, only work against some seriously broken protocols. By specifying a different level of protection for transactions and the cache, this allows duplication to protect the cache while still successfully resolving (but NOT caching) sites which return different values on back-to-back queries when duplication is needed to meet the entropy budget. <P>[4] Anyone who wants to launch a TB DOS to poison my cache has better things to do. <P>[5] I believe that the proper policy on accepting data into the cache can provide this, combined with treating a failure to lookup a name as an event with a ~30 second TTL. This property is an important COMPLEMENT to increased entropy, not a substitute. "Race until win" does not reduce the number of packets an attacker requires, only the time period. <P>[6] This will occur with high probability whenever there is a blind attack that doesn't also block the authoritative server or create traffic with a DOS condition. It will ALSO occur with high probability if an attacker is able to directly observe the request to craft a reply, but is not fully in path. More importantly, a preliminary survey survey suggests that only a few authorities actually do return such nonsense.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-3668700987458722965?l=blog.icir.org'/></div>Nicholas Weaverhttp://www.blogger.com/profile/17126451524439541478noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-68171561877719026912008-08-19T09:08:00.000-07:002008-08-20T10:03:59.923-07:00Entropy, Blind Attacks, and DNS<P>The following is work-in-progress. Part of the point of a blog is to look for feedback. So feedback is greatly appreciated. Its also to keep others from making my mistakes when thinking about the problem. Additionally, there may be things wrong in this post. Anything wrong is my fault. Feedback can be sent in email to nweaver at ICSI dot Berkeley dot EDU. Minor edits added 8/20 <HR> <P>This post will focus on DNS blind attacks, detection strategies, and responses for protecting DNS resolvers. But first some background. There are at least four major properties of DNS attacks. <P><B>Blind</B> vs <B>Aware</B>: In a blind attack, the attacker does not know the entropy sources (eg, TXID, port selection, captialization) of the request. In an aware attack, the attacker knows this information. <P><B>Transparent</B> vs <B>Blocking</B>: In a transparent attack, the attacker is unable to block the normal authoritative server's response. In a blocking attack, the attacker can block the DNS server's response. <P><B>Direct Record</B> vs <B>glue</B>: In a Direct Record attack, the attacker is only interested in corrupting the actual query, eg, that bad.foo.com point to EVIL. In a glue attack, the attacker is interested in producing corrupted answer, authoritative or additional records which are accepted by the server beyond the server's request, eg, that 123.foo.com points to target.foo.com <I><B>and</B></I> target.foo.com points to EVIL. <P><B>Transaction</B> vs <B>cache</B>: In a transaction attack, the attacker only needs to corrupt the client which made the actual query. A cache attack <I><B>requires</B></I> that the resolver not just forward the attacker's value, but also cache it to use for future responses. <P>For example, Kaminski's attack is a "Blind Glue Cache" attack: the goal is to use a blind attack to cause the resolver to cache a bad authority or additional record, causing subsquent lookups for the target domain to go to the attacker's "authoritative" server. <P>There are many MANY variants possible, but <I><B>I believe</B></I> (if I'm wrong, PLEASE tell me) that all require the victim resolver to cache more than just the requested mapping of A goes to some value, because this enables the attacker to "Race until win against garbage" instead of "Race once and retry after TTL expiration". Normally, it is also a "Transparent" attack, but it could also involve a DOS of the authoritative server or enough traffic that the server's authoritative response is not returned. <P>Likewise, a man-in-the-middle is a "Aware and Blocking" attacker: he sees all packets and can ensure that only his response arrives, and <I><B>nothing short of DNSSEC</B></I> (or equivelent) can prevent a man-in-the-middle attack on DNS. <HR> <P>Blind attacks are actually easy to detect. Any blind attack which has a probability of succeeding will generate a large number of unsolicited DNS replies: DNS answers where the reply does not correspond to a request because it uses a different transaction ID and/or port. In our in-progress DNS cache poisoning detector, <A HREF="http://www.icsi.berkeley.edu/~nweaver/dns-poison.bro">dns-poison.bro</A>, these alerts are collected in the dns_weirds.log as "Unsolicited DNS Replies". I'd assume there is a similar snort rule available. (Note, the bro code is VERY experimental, and should NOT be viewed as authoritative. It is included mostly for interest and experimentation). <P>However, there are some issues that arise. To begin with, there can be false positives in the IDS. The first (marked in dns_weirds.log as "Since there has been no previous DNS traffic on this 4-tuple, we are ignoring it") can occur when the DNS requesting packet was dropped by the monitor so the IDS only sees the reply. The second is that a nontrivial number of servers (~100 when seen from ICSI over a roughly 10 day period) will generate this alert spontaneously, sending invalid replies to accompany valid replies. Thus a LOW rate of alerts is to be expected. <P>But a bigger problem is how to ACT on this information. There have been many proposals (I've been guilty of one myself) that by maintaining a count of failures per remote server, one could build a detection and response cycle against blind attacks into the DNS resolver without having to look for more entropy than the transaction ID. <P>This could work for a blind attacker who's targeting a particular authority: It doesn't require much stateholding (a single counter per authoritative server), and the response is simple: void the cache for any requests involving this authority (block "blind cache" attacks, regardless of glue policy or transparency), and observe that only limited scenarios benefit from a blind, transactional attack. [1] <P>However, there is a blind attack proposed by <A HREF="http://www.ops.ietf.org/lists/namedroppers/namedroppers.2008/msg01424.html">Masataka Ohta</A>, poisted out to me by Wouter Wijngaards which can defeat such a detection and response cycle when only 16 bits of entropy (just the DNS transaction ID) is used, by generating poisoning requests targeting different domains when winning a single domain is sufficient for the attacker's goal. <P>As a real example, assume that the attacker has a list of 1000 domains, with targeting any single domain sufficient for his goal. At a single victim, he generates 1000 queries, on 1000 different authoritative servers, and also launches just 1000 blind responses. With just 16 bits of entropy, there is a 1.5% chance of success, <I>and the successful packet will never tigger the alert</I>. Thus I was <I><B>WRONG</B></I>: although such fine-grained detection is suitable for the IDS, it is <I><B>NOT</B></I> suitable for the DNS resolver as a substitute for more entropy. <P>But good entropy is (mostly) sufficient for countering blind attacks. If there are 32 bits of entropy (from a combination of a strongly random transaction ID, and a random source port), a blind attacker who wants a .1% chance of success would need to send rougly 4 million packets. The exact odds of success for the attacker with N bits of entropy and K attacker packets is 1 - (1 - 2^-N)^K. At 100B per packet, this would require sending 400 MB of data. <P>Add in a random selection of authoritative resolver (what <A HREF="http://unbound.net/index.html">unbound</A> does to gain 2b of entropy) and random capitalization (David Dagon's <A HREF="ftp://ftp.registro.br/internet-drafts/draft-vixie-dnsext-dns0x20-00.txt">0x20 method</A>) and you can easily get to 40b of entropy. Now just that .1% probability of success requires sending 1 billion packets, or 100 GB of data. Even .01% of success requires 10 GB of data. <P>Such an attack represents a significant DoS. If an attacker can send 100 GB of data, with spoofed source address, at your DNS resolver, to have just a .1% chance of corrupting a single cache entry, the attacker can instead make a lot more money sending 100 GB of data at a blackmail victim. <P>Yes, this represents a probabilistic bounds, but it is a very good bounds. Bots are a valuable resource, especially Bots capable of delivering spoofed IP packets. They can send spam, look for stolen credentials, or perform lots of other mayhem. Yet Bots which DoS are more likely to be removed, by both the ISP and end users due to the traffic. Attackers with that sort of resource aren't interested in just petty damage: they have reasons for their actions and wasting money is not one of them. "You don't need to outrun the bear, just the guy next to you". <P>Plus (<I><B>Warning: Unbaked Speculation Ahead, feedback wanted!</B></I>) one might be able to set an arbitrary bound on preventing blind, <I>cache</I> attacks, including Ohta's variant, by keeping a single counter of ALL unsolicited replies (rather than a per-server count which does not work). If it ever reaches the threshhold where an attacker has an X% chance of at least one success, simply invalidate the <I><B>entire</B></I> cache, because you don't know what's been corrupted. <P>This would effect a nontrivial increase in latency and traffic as the cache is repopulated, but even with a very sensitive threshold (eg .01%) and moderately poor entropy (32b), an attacker would need to send 40 MB of spoofed data just to degrade the cache performance a bit. If the cache had 1M active entries it needed to subsequently refetch, the attack would generate a few hundred MB of additional traffic to the DNS resolver from the additional requests. So there would be some amplification, but only a moderate (roughly 4x) amount to gain a very tight bounds on the blind attack. <P>For 40b of entropy, the attacker would have to send nearly 10 GB of data to meet this very sensitive threshold, yet would still only require fetching an additional few hundred MB of data back into the cache, a trivially small amount of amplification: the 10 GB DOS will be a far bigger effect on the server. <P>Finally (<I><B>Warning: Still Rather Unbaked Speculation Ahead. Feedback wanted</B></I>) there are many proposals to duplicate requests to increase entropy. For example David Dagon has proposed using duplication when a remote authoritative server doesn't support 0x20. I believe this can be useful also if the DNS server is behind a NAT or firewall that rewrites ports. If your resolver is behind a firewall or NAT you lose the entropy present in the port number. Since 32b of entropy is a bare minimum, and 40b is comfortable, losing nearly 16b of entropy is a big deal, and something needs to be done to bring the entropy up to a comfortable level. <P>Fortunatly, a resolver can check if its behind a NAT if there is a special authoritative nameserver. We have an ugly prototype: port.{anything}.nettest.icir.org will return the UDP port in the lower 16 bits of the returned address. This does create a phone-home, but a resolver implementation could use such a special name to check for the presence of a NAT or other device which rewrites UDP ports. (Dispite feeling otherwise, NATs and firewalls are not actually malicious, and would not benefit from whitelisting such a test.) <P>Now a resolver could respond in the following way: Instead of a single query, it generates two queries for the same value, returning the first response it gets, but only caching the response <I>if both are identical</I>. This should protect the <I>cache</I>, as forcing the attacker to match <I><B>both</B></I> queries effectively doubles the entropy. Thus if there are only 20 bits of entropy (a 16b ID plus 4 characters of capitalization/resolver selection, because the resolver is behind a NAT), for purposes of cache poising, the blind attacker now faces effectively 40 bits of entropy. <P>However, this <I><B>reduces</B></I> protection against a blind <I>transaction</I> attack. For purposes of corrupting the transaction, the attacker only needs to win one race out of two. Thus instead of facing 20b of entropy for corrupting the transaction, the attacker only needs 19b, as it doubles the chance for success. Since I can come up with only limited scenarios (dealing with already broken websites) where a blind, <I>transaction</I> attack would be useful, this risk of transactional corruption may be acceptable. But if transaction protection is desired, the resolver needs to wait for <I><B>both</B></I> responses, and only return them if they agree, leaving an open issue of what to do with a highly volatile domain which returns different responses to the same request. <HR> <P>Thus the conclusions: <P>1) For IDS purposes, its easy to detect blind cache poisoning attacks, although there are some low rate false positives that operators need to be aware of. <P>2) For purposes of the DNS resolver, "detect and respond" to blind attacks without increasing the entropy is a <I><B>bad</B></I> idea: it doesn't prevent all blind attacks, instead creating a false sense of security. <P>3) But adding entropy, to at least 32b, ideally 40b, and the blind attack is effectively defanged. <P>4) For further benefit, it appears plausible that the blind caching attack against a well-randomized server could be detected and blocked, and it looks plausible to protect the <I>cache</I> but <I><B>not transactions</I></B> from blind attacks even when behind a NAT by using duplicate requests. <P>5) Please give me feedback! It was feedback from experts that convinced me "there is no substitute for entropy". <HR> <P>Much thanks to feedback from Christian Kreibich, Vern Paxson, Robin Sommer, Mattias Vallentin and Wouter Wijngaaards. <HR> <P>[1] The only scenario I can come up with is cookie stealing, or similar hijacking, and can actually be used against a major site. The following example is how TRADITIONAL blind cache poisoning, against a 16b transaction ID as the only entropy, can be used to intercept yahoo mail as a blind <I><B>transactional</B></I> attack, rather than a cache attack. <P>mail.yahoo.com eventually resolves to being login.yahoo.akadns.net which has a ttl of just 60 seconds. Thus the attacker gets the victim to go to a web page the attacker controls. This attacker code has a bit of javascript that opens up an iFrame which points to mail.yahoo.com at a time the attacker choses. <P>When the web browser does the lookup, the attacker sends ~1000 poison attempts at the victim's DNS resolver. If it fails, ah well, no big loss, the attacker closes the iframe (by redirecting to another page) and tries again in 60 seconds. But if it succeeds, the web browser THINKS mail.yahoo.com is the attacker's machine, allowing him to man-in-the-middle the browser and enabling him to get the victim's login cookie etc (which are happily transmitted in the clear!). If DNS is protected by just a 16b transaction ID, the attacker has a 1.5% chance of winning the FIRST race, and if the victim doesn't notice for an hour, the attacker has a 60% chance. <P>Thus, at least for the purposes of protecting Yahoo mail, even DNS transactions need to be protected with significantly more entropy. (However, this is an extreme case, and Yahoo mail is broken in so many other ways because attackers on a wireless network can do the same thing.)<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-6817156187771902691?l=blog.icir.org'/></div>Nicholas Weaverhttp://www.blogger.com/profile/17126451524439541478noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-61976930875738412222008-08-17T21:52:00.001-07:002008-08-17T21:52:11.765-07:00New Time Machine Release & Paper<p>Jointly with our <a href="http://www.net.t-labs.tu-berlin.de/">colleagues at TU Berlin</a>, we have just released a new version of the <a href="http://www.net.t-labs.tu-berlin.de/research/tm/">Time Machine</a>, a high-performance packet bulk-recorder. </p> <p> This is a major release providing many improvements in functionality and performance, including a NIDS interface for automatic control and retrieval. See the <a href="http://www.net.t-labs.tu-berlin.de/research/tm/">web page</a> for more information about the changes. </p> <p> We will present the Time Machine at the <a href="http://conferences.sigcomm.org/sigcomm/2008/">ACM SIGCOMM conference</a> this week in Seattle, WA. The <a href="http://www.icir.org/robin/papers/sigcomm08-tm.pdf">SIGCOMM paper</a> also contains more background information, including a performance evaluation and experiences with interfacing the Time Machine to the <a href="http://www.bro-ids.org">Bro NIDS</a>. </p> <div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-6197693087573841222?l=blog.icir.org'/></div>Robin Sommerhttp://www.blogger.com/profile/00359901142211806482noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-92048488722427926722008-08-06T06:00:00.000-07:002008-08-06T06:04:46.547-07:00HotSec Paper on Network VisibilityWe presented the following paper at HotSec last week: <ul><li>Mark Allman, Christian Kreibich, Vern Paxson, Robin Sommer, Nicholas Weaver. <a href="http://www.icir.org/mallman/papers/awareness-hotsec08.pdf"> <i>Principles for Developing Comprehensive Network Visibility</i></a>. USENIX Workshop on Hot Topics in Security, July 2008. </li></ul><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-9204848872242792672?l=blog.icir.org'/></div>Mark Allmanhttp://www.blogger.com/profile/16307174487858112101noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-45937279809430341882008-07-17T13:57:00.001-07:002008-07-18T12:04:55.378-07:00New Bro Blog from OSU<p> Seth Hall of <a href="http://www.osu.edu/">The Ohio State University</a> started <a href="http://a-bro-blog.blogspot.com/">A Bro Blog</a> to share his experiences as well as some of his Bro scripts. I'm sure there will be plenty of cool stuff to be found there. </p> <small> <p> Update: I learned it's <em>The</em> Ohio State University. :-) </p> </small> <div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-4593727980943034188?l=blog.icir.org'/></div>Robin Sommerhttp://www.blogger.com/profile/00359901142211806482noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-3165747000697189522008-06-30T14:35:00.001-07:002008-06-30T14:36:37.548-07:00The Emerging-Bro Project <p> Matt Jonkman of <a href="http://www.emergingthreats.net/">Emerging Threats</a> just announced an exciting new project, nicknamed <a href="http://www.emergingthreats.net/content/view/80/1/">Emerging-Bro</a>. Led by CS Lee, the goal is to provide their most important, high-threat signatures in Bro's syntax on a regular basis. They also plan to provide their IP blacklists directly for Bro. That's all pretty cool, thanks for your effort guys! </p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-316574700069718952?l=blog.icir.org'/></div>Robin Sommerhttp://www.blogger.com/profile/00359901142211806482noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-77112865200352243182008-06-19T12:53:00.001-07:002008-06-19T16:57:04.380-07:00Bro's Signature Engine<p>Bro relies primarily on its extensive scripting language for the definition of detection policies. In addition, however, Bro also provides an independent <em>signature language</em> for doing low-level, Snort-style pattern matching. While signatures are <em>not</em> Bro's preferred detection tool, they sometimes come in handy and are closer to what many people are familiar with from using other NIDS. This posting gives a brief overview on Bro's signatures and covers some of their technical subtleties. </p> <h2>Basics</h2> <p>The syntax of signatures <a href="http://www.bro-ids.org/wiki/index.php/Reference_Manual:_Signatures">is documented in Bro's reference manual</a>; I won't duplicate that information here. Let's rather look at an example: </p> <blockquote> <pre class="code"> signature my-first-sig { ip-proto == tcp dst-port == 80 payload /.*root/ event "Found root!" } </pre> </blockquote> <p>This signature asks Bro to match the regular expression <tt>.*root</tt> on all TCP connections going to port 80. </p> <p>When the signature triggers, Bro will raise an event <tt>signature_match</tt> of the form: </p> <blockquote> <pre class="code"> event signature_match(state: signature_state, msg: string, data: string) </pre> </blockquote> <p>Here, <tt>state</tt> contains more information on the connection that triggered the match (see <tt><a href="http://svn.icir.org/bro/trunk/bro/policy/bro.init">policy/bro.init</a></tt> for the definition of <tt>signature_state</tt>); <tt>msg</tt> is the string specified by the signature's <tt>event</tt> statement (<tt>Found root!</tt>), and <tt>data</tt> is the last piece of payload which triggered the pattern match. </p> <p> To turn such <tt>signature_match</tt> events into actual alarms, you need to load <tt><a href="http://svn.icir.org/bro/trunk/bro/policy/signatures.bro">signature.bro</a></tt>. This script contains a default event handler which raises <tt>SensitiveSignature</tt> <a href="http://blog.icir.org/2008/03/telling-bro-what-important.html">notices</a> (as well as others; see the beginning of the script). </p> <h2>Things to keep in mind when writing signatures </h2> <ul> <li><p> Each signature is reported at most once for every connection, further matches of the same signature are ignored. </p></li> <li><p>Header conditions are only evaluated for the <em>first packet from each endpoint</em>. If a header condition does not match the initial packets, the signature will not trigger. Bro optimizes for the most common application here, which is header conditions picking the connection to be examined closer with payload statements. </p></li> <li><p>A number of analyzer-specific <a href="http://www.bro-ids.org/wiki/index.php/Reference_Manual:_Signatures#Content_conditions">content conditions</a> perform pattern matching on elements extracted from an application protocol dialogue. For example, <tt>http /.*passwd/</tt> scans URLs requested within HTTP sessions. The thing to keep in mind here is that these conditions only perform any matching when the corresponding application analyzer is actually <em>active</em> for a connection. Note that by default, analyzers are not enabled if the corresponding <em>Bro script</em> has not been loaded.</p> <p> A good way to double-check whether an analyzer "sees" a connection is checking its log file for corresponding entries. If you cannot find the connection in the analyzer's log, very likely the signature engine has also not seen any application data. </p></li> <li><p> As the name indicates, the <tt>payload</tt> keyword matches on packet <em>payload</em> only. You cannot use it to match on packet headers; use <a href="http://www.bro-ids.org/wiki/index.php/Reference_Manual:_Signatures#Header_conditions">header conditions</a> for that. </p></li> <li><p> For UDP and ICMP flows, the <tt>payload</tt> matching is done on a per-packet basis; i.e., any content crossing packet boundaries will not be found. For TCP connections, the matching semantics depend on whether Bro is <em>reassembling</em> the connection (i.e., putting all of a connection's packets in sequence). By default, Bro is reassembling the first 1K of every TCP connection, which means that within this window, matches will be found without regards to packet order or boundaries (i.e., <em>stream-wise matching</em>). </p></li> <li><p> For performance reasons, by default Bro <em>stops matching</em> on a connection after seeing 1K of payload; see the section on options below for how to change this behaviour. The default was chosen with Bro's main user of signatures in mind: the <em><a href="http://bro-ids.org/wiki/index.php/DynamicProtocolDetection">dynamic protocol detection</a></em> works well even when examining just connection heads. </p></li> <li><p> Regular expressions are implicitly anchored, i.e., they work as if prefixed with the <tt>^</tt> operator. For reassembled TCP connections, they are anchored at the first byte of the payload <em>stream</em>. For all other connections, they are anchored at the first payload byte of each packet. To match at arbitrary positions, you can prefix the regular expression with <tt>.*</tt>, as done in the example above. <li><p> To match on non-ASCII characters, Bro's regular expressions support the <tt>\x&lt;hex&gt;</tt> operator. CRs/LFs are not treated specially by the signature engine and can be matched on with <tt>\r</tt> and <tt>\n</tt>, respectively. Generally, Bro follows <a href="http://www.gnu.org/software/flex/manual/html_chapter/flex_7.html">flex's regular expression syntax</a>. See the DPD signatures in <tt><a href="http://svn.icir.org/bro/trunk/bro/policy/sigs/dpd.sig">policy/sigs/dpd.bro</a></tt> for some examples of fairly complex <tt>payload</tt> patterns. </p></li> </p></li> <li><p> The <tt>data</tt> argument of the <tt>signature_match</tt> handler might not carry the full text matched by the regular expression. Bro performs the matching incrementally as packets come in; when the signature eventually fires, it can only pass on the most recent chunk of data. </p></li> </ul> <h2>Options</h2> <p> The following options control details of Bro's matching process: </p> <dl> <dt><tt>dpd_reassemble_first_packets: bool</tt> (default: <tt>T</tt>)</dt> <dd> <p>If true, Bro reassembles the beginning of every TCP connection (of up to <tt>dpd_buffer_size</tt> bytes, see below), to facilitate reliable matching across packet boundaries. If false, only connections are reassembled for which an application-layer analyzer gets activated (e.g., by Bro's dynamic protocol detection). </p> </dd> <dt><tt>dpd_match_only_beginning : bool</tt> (default: <tt>T</tt>)</dt> <dd> <p> If true, Bro performs packet matching only within the initial payload window of <tt>dpd_buffer_size</tt>. If false, it keeps matching on subsequent payload as well. </p> </dd> <dt><tt>dpd_buffer_size: count</tt> (default: <tt>1024</tt>)</dt> <dd> <p> Defines the window size for the two preceding options. In addition, this value determines the amount of bytes Bro buffers for each connection in order to activate application analyzers even after parts of the payload have already passed through. This is needed by the dynamic protocol detection capability to defer the decision which analyzers to use. </p> </dd> </p></li> </dl> <h2>So, how about using Snort signatures with Bro?</h2> <p> There was once a script, <a href="http://bro-ids.org/wiki/index.php/Reference_Manual:_Signatures#snort2bro">snort2bro</a>, which converted Snort signatures automatically into Bro's signature syntax. However, in our experience this didn't turn out to be very useful because by simply using Snort signatures, one can't benefit from the additional capabilities Bro provides; the approaches of the two systems are too different. We therefore stopped maintaining the <tt>snort2bro</tt> script, and there are now many newer Snort options which it doesn't support. While the script is still part of the Bro distribution, I don't recommend using it anymore, and we will likely remove it in future versions. (If, however, anybody feels like updating the script to support the new Snort options, that would certainly still be appreciated ... It won't be exactly trivial though.) </p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-7711286520035224318?l=blog.icir.org'/></div>Robin Sommerhttp://www.blogger.com/profile/00359901142211806482noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-41722614784584510892008-06-09T10:17:00.001-07:002008-06-09T10:17:00.744-07:00Predicting the Resource Consumption of a NIDS <p>Last week at <a href="http://www1.cs.columbia.edu/~sigmet08/">SIGMETRICS 2008</a>, we presented a <a href="http://www.icir.org/robin/papers/sigmetrics08-autoconf-poster.pdf">poster</a> on <em>Predicting the Resource Consumption of Network Intrusion Detection Systems.</em> The <a href="http://www.icir.org/robin/papers/sigmetrics08-autoconf-abstract.pdf">extended abstract</a> describes the work in a bit more detail; the full paper will appear at <a href="http://www.ll.mit.edu/RAID2008/">RAID 2008</a> later this year.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-4172261478458451089?l=blog.icir.org'/></div>Robin Sommerhttp://www.blogger.com/profile/00359901142211806482noreply@blogger.com2tag:blogger.com,1999:blog-8765021052521846228.post-14097882677545195802008-05-30T08:38:00.000-07:002008-05-30T09:14:05.921-07:00Slides from IETF P2PI meeting...<P><B>The following opinions are my own, not that of the rest of the ICSI networking group or any funder.</B> <P>Here are <A HREF="http://www.icsi.berkeley.edu/~nweaver/p2pi_shifting.ppt">my slides</A> for my 5 minute talk at the IETF Peer to Peer Infrastructure meeting in Boston. In them, I argue that bulk-data P2P is not about cost <I>savings</I> but about cost <I>shifting</I>: moving the cost of providing content from the content provider to the recipient or the recipient's ISP. In particular, this cost shifting is very inefficient, greatly increasing aggregate costs, as ISP transit costs significantly more than content provider transit. This is, I believe, the root of the conflict between bulk data P2P and ISPs. <P>I also believe that caches are a non-starter, as they are less transport efficient than HTTP caches, are lawsuit bait for illegal content, and don't have a business rationale for the ISP to provide one for legal content.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-1409788267754519580?l=blog.icir.org'/></div>Nicholas Weaverhttp://www.blogger.com/profile/17126451524439541478noreply@blogger.com0tag:blogger.com,1999:blog-8765021052521846228.post-13677089356772395652008-05-02T10:51:00.000-07:002008-06-11T13:54:28.919-07:00Measurement Framework Papers at PAMWe presented two papers at PAM in Cleveland this week. Both of them involve new frameworks and systems for taking network measurements. The papers are: <ul><li><a name="2008">Mark Allman, Vern Paxson. </a><a href="http://www.icir.org/mallman/papers/rem-overview-pam08.pdf"> <i>A Reactive Measurement Framework</i></a>. Passive and Active Measurement Conference, April 2008.</li><li>Mark Allman, Lann Martin, Michael Rabinovich, Kenneth Atchinson. <a href="http://www.icir.org/mallman/papers/open-meas-pam08.pdf"> <i>On Community-Oriented Internet Measurement</i></a>. Passive and Active Measurement Conference, April 2008.</li></ul>Both of these represent early work and comments are certainly welcome and appreciated.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8765021052521846228-1367708935677239565?l=blog.icir.org'/></div>Mark Allmanhttp://www.blogger.com/profile/16307174487858112101noreply@blogger.com0