<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Inliniac</title>
	<atom:link href="http://www.inliniac.net/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.inliniac.net/blog</link>
	<description>Everything inline.</description>
	<lastBuildDate>Wed, 11 Jan 2012 19:09:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>HTTP parsing events in Suricata</title>
		<link>http://www.inliniac.net/blog/2012/01/11/http-parsing-events-in-suricata.html</link>
		<comments>http://www.inliniac.net/blog/2012/01/11/http-parsing-events-in-suricata.html#comments</comments>
		<pubDate>Wed, 11 Jan 2012 19:09:17 +0000</pubDate>
		<dc:creator>Victor Julien</dc:creator>
				<category><![CDATA[ids]]></category>
		<category><![CDATA[oisf]]></category>
		<category><![CDATA[Suricata]]></category>
		<category><![CDATA[flowint]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[malware]]></category>

		<guid isPermaLink="false">http://www.inliniac.net/blog/?p=487</guid>
		<description><![CDATA[With the 1.2rc1 release you will notice no more HTTP errors on the screen. Or SMTP errors. This output has been disabled finally. This was a long time annoyance. As you may still be interested in the errors they are now available through the rule language. In rules/http-events.rules and rules/smtp-events.rules rules for all possible events/errors [...]]]></description>
			<content:encoded><![CDATA[<p>With the 1.2rc1 release you will notice no more HTTP errors on the screen. Or SMTP errors. This output has been disabled finally. This was a long time annoyance.</p>
<p>As you may still be interested in the errors they are now available through the rule language. In rules/http-events.rules and rules/smtp-events.rules rules for all possible events/errors can be found.</p>
<p>Example:<br />
<code>app-layer-event:http.missing_host_header;</code></p>
<p>This will match on HTTP/1.1 requests without a Host header.</p>
<p>Some of these rules might be noisy (they are not in my local network), but rather than disabling them I&#8217;d suggest suppressing then. The reason is that for each time they hit a flowint will be incremented:</p>
<p><code>flowint:http.anomaly.count,+,1;</code></p>
<p>This will allow you to get alerts on streams with high anomaly counts:</p>
<p><code>alert http any any -> any any (msg:"LOCAL really poor HTTP session"; flowint:http.anomaly.count,>,5; sid:123; rev:1;)</code></p>
<p>This will give you an alert if there have been more than 5 anomalies detected.</p>
<p>Blog spammers, malware and other unwanted HTTP users often use HTTP with all kinds of issues, so this may be a helpful tool in detecting those.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.inliniac.net/blog/2012/01/11/http-parsing-events-in-suricata.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Suricata 1.1.1 released</title>
		<link>http://www.inliniac.net/blog/2011/12/07/suricata-1-1-1-released.html</link>
		<comments>http://www.inliniac.net/blog/2011/12/07/suricata-1-1-1-released.html#comments</comments>
		<pubDate>Wed, 07 Dec 2011 18:34:50 +0000</pubDate>
		<dc:creator>Victor Julien</dc:creator>
				<category><![CDATA[ids]]></category>
		<category><![CDATA[IPS]]></category>
		<category><![CDATA[oisf]]></category>
		<category><![CDATA[Suricata]]></category>
		<category><![CDATA[smtp]]></category>

		<guid isPermaLink="false">http://www.inliniac.net/blog/?p=482</guid>
		<description><![CDATA[A maintenance update for the Suricata 1.1 series was just released. It fixed an important issue. In some cases Suricata could crash on SMTP traffic. The full announcement for the 1.1.1 release is here. Naturally, the issue has also been fixed in the 1.2 development branch.]]></description>
			<content:encoded><![CDATA[<p>A maintenance update for the Suricata 1.1 series was just released. It fixed an important issue. In some cases Suricata could crash on SMTP traffic.</p>
<p>The full announcement for the 1.1.1 release is <a href="http://www.openinfosecfoundation.org/index.php/component/content/article/140-suricata-111-available">here</a>.</p>
<p>Naturally, the issue has also been fixed in the 1.2 development branch.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.inliniac.net/blog/2011/12/07/suricata-1-1-1-released.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>File extraction in Suricata</title>
		<link>http://www.inliniac.net/blog/2011/11/29/file-extraction-in-suricata.html</link>
		<comments>http://www.inliniac.net/blog/2011/11/29/file-extraction-in-suricata.html#comments</comments>
		<pubDate>Tue, 29 Nov 2011 16:27:27 +0000</pubDate>
		<dc:creator>Victor Julien</dc:creator>
				<category><![CDATA[ids]]></category>
		<category><![CDATA[IPS]]></category>
		<category><![CDATA[oisf]]></category>
		<category><![CDATA[Suricata]]></category>
		<category><![CDATA[file extraction]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[magic]]></category>

		<guid isPermaLink="false">http://www.inliniac.net/blog/?p=467</guid>
		<description><![CDATA[Today I pushed out a new feature in Suricata I&#8217;m very excited about. It has been long in the making and with over 6000 new lines of code it&#8217;s a significant effort. It&#8217;s available in the current git master. I&#8217;d consider it alpha quality, so handle with care. So what is this all about? Simply [...]]]></description>
			<content:encoded><![CDATA[<p>Today I pushed out a new feature in Suricata I&#8217;m very excited about. It has been long in the making and with over 6000 new lines of code it&#8217;s a significant effort. It&#8217;s available in the current git master. I&#8217;d consider it alpha quality, so handle with care.</p>
<p>So what is this all about? Simply put, we can now extract files from HTTP streams in Suricata. Both uploads and downloads. Fully controlled by the rule language. But thats not all. I&#8217;ve added a touch of magic. By utilizing libmagic (this powers the &#8220;file&#8221; command), we know the file type of files as well. Lots of interesting stuff that can be done there.</p>
<p><strong>Rule keywords</strong></p>
<p>Four new rule keywords were added: <em>filename</em>, <em>fileext</em>, <em>filemagic</em> and <em>filestore</em>.</p>
<p>Filename and fileext are pretty trivial: match on the full name or file extension of a file.</p>
<blockquote><p>alert http any any -&gt; any any (filename:&#8221;secret.xls&#8221;;)<br />
alert http any any -&gt; any any (fileext:&#8221;pdf&#8221;;)</p></blockquote>
<p>More interesting is the filemagic keyword. It runs on the magic output of inspecting the (start of) a file. This value is for example:</p>
<blockquote><p>GIF image data, version 89a, 1 x 1<br />
PE32 executable for MS Windows (GUI) Intel 80386 32-bit<br />
HTML document text<br />
Macromedia Flash data (compressed), version 9<br />
MS Windows icon resource &#8211; 2 icons, 16&#215;16, 256-colors<br />
PNG image data, 70 x 53, 8-bit/color RGBA, non-interlaced<br />
JPEG image data, JFIF standard 1.01<br />
PDF document, version 1.6</p></blockquote>
<p>So how the filemagic keyword allows you to match on this is pretty simple:</p>
<blockquote><p>alert http any any -&gt; any any (filemagic:&#8221;PDF document&#8221;;)<br />
alert http any any -&gt; any any (filemagic:&#8221;PDF document, version 1.6&#8243;;)</p></blockquote>
<p>Pretty cool, eh? You can match both very specifically and loosely. For example:</p>
<blockquote><p>alert http any any -&gt; any any (filemagic:&#8221;executable for MS Windows&#8221;;)</p></blockquote>
<p>Will match on (among others) these types:</p>
<blockquote><p>PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit<br />
PE32 executable for MS Windows (GUI) Intel 80386 32-bit<br />
PE32+ executable for MS Windows (GUI) Mono/.Net assembly</p></blockquote>
<p>Finally there is the filestore keyword. It is the simplest of all: if the rule matches, the files will be written to disk.</p>
<p>Naturally you can combine the file keywords with the regular HTTP keywords, limiting to POST&#8217;s for example:</p>
<blockquote><p>alert http $EXTERNAL_NET any -> $HOME_NET any (msg:&#8221;pdf upload claimed, but not pdf&#8221;; flow:established,to_server; content:&#8221;POST&#8221;; http_method; fileext:&#8221;pdf&#8221;; filemagic:!&#8221;PDF document&#8221;; filestore; sid:1; rev:1;)</p></blockquote>
<p>This will alert on and store all files that are uploaded using a POST request that have a filename extension of pdf, but the actual file is not pdf.</p>
<p><strong>Storage</strong></p>
<p>The storage to disk is handled by a new output module called &#8220;file&#8221;. It&#8217;s config looks like this:<br />
<code><br />
enabled: yes # set to yes to enable<br />
log-dir: files # directory to store the files<br />
force-magic: no # force logging magic on all stored files<br />
</code></p>
<p>It needs to be enabled for file storing to work.</p>
<p>The files are stored to disk as &#8220;file.1&#8243;, &#8220;file.2&#8243;, etc. For each of the files a meta file is created containing the flow information, file name, size, etc. Example:<br />
<code><br />
TIME: 01/27/2010-17:41:11.579196<br />
PCAP PKT NUM: 2847035<br />
SRC IP: 68.142.93.214<br />
DST IP: 10.7.185.57<br />
PROTO: 6<br />
SRC PORT: 80<br />
DST PORT: 56207<br />
FILENAME: /msdownload/update/software/defu/2010/01/mpas-fe_7af9217bac55e4a6f71c989231e424a9e3d9055b.exe<br />
MAGIC: PE32+ executable for MS Windows (GUI) Mono/.Net assembly<br />
STATE: CLOSED<br />
SIZE: 5204</code></p>
<p><strong>Configuration</strong></p>
<p>The file extraction is for HTTP only currently, and works on top of our HTTP parser. As the HTTP parser runs on top of the stream reassembly engine, configuration parameters of both these parts of Suricata affect handling of files.</p>
<p>The stream engine option &#8220;stream.reassembly.depth&#8221; (default 1 Mb) controls the depth into a stream in which we look. Set to 0 for no limit.<br />
The libhtp options request-body-limit and response-body-limit control how far into a HTTP request or response body we look. Again set to 0 for no limit. This can be controlled per HTTP server.</p>
<p><strong>Performance</strong></p>
<p>The file handling is fully streaming, so it&#8217;s very efficient. Nonetheless there will be an overhead for the extra parsing, book keeping, writing to disk, etc. Memory requirements appear to be limited as well. Suricata shouldn&#8217;t keep more than a few kb per flow in memory.</p>
<p><strong>Limitations</strong></p>
<p>Lack of limits is a limitation. For file storage no limits have been implemented yet. So it&#8217;s easy to clutter your disk up with files. Example: 118Gb enterprise pcap storing just JPG&#8217;s extracted 400.000 files. Better use a separate partition if you&#8217;re on a life link.</p>
<p><strong>Future work</strong></p>
<p>Apart from stabilizing this code and performance optimizing it, the next step will be SMTP file extraction. Possibly other protocols, although nothing is set in stone there yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.inliniac.net/blog/2011/11/29/file-extraction-in-suricata.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Suricata 1.1 released, 1.2 on the horizon</title>
		<link>http://www.inliniac.net/blog/2011/11/10/suricata-1-1-released-1-2-on-the-horizon.html</link>
		<comments>http://www.inliniac.net/blog/2011/11/10/suricata-1-1-released-1-2-on-the-horizon.html#comments</comments>
		<pubDate>Thu, 10 Nov 2011 16:51:52 +0000</pubDate>
		<dc:creator>Victor Julien</dc:creator>
				<category><![CDATA[ids]]></category>
		<category><![CDATA[IPS]]></category>
		<category><![CDATA[oisf]]></category>
		<category><![CDATA[Suricata]]></category>

		<guid isPermaLink="false">http://www.inliniac.net/blog/?p=463</guid>
		<description><![CDATA[Today we released Suricata 1.1. This ends a rather long development cycle of more than a year. And it shows. Performance, accuracy and features were all greatly improved. I think it&#8217;s the best Suricata so far. If you&#8217;ve been looking at trying Suricata, now might be a good time to jump in. The long development [...]]]></description>
			<content:encoded><![CDATA[<p>Today we released <a href="http://www.openinfosecfoundation.org/index.php/component/content/article/1-latest-news/139-suricata-11-available">Suricata 1.1</a>. This ends a rather long development cycle of more than a year. And it shows. Performance, accuracy and features were all greatly improved. I think it&#8217;s the best Suricata so far. If you&#8217;ve been looking at trying Suricata, now might be a good time to jump in.</p>
<p>The long development cycles should be something of the past. At our last brainstorm session, at RAID 2011, we decided to change our release policy. The aim of this policy is to do time based releases, roughly a &#8220;stable&#8221; every 2 months and a beta every other month. This way we&#8217;ll be making it much easier for users to stay current without have to run our &#8220;git master&#8221;.</p>
<p>Looking forward, we&#8217;ve started work on the 1.2 release, which should happen in about 2 months. Focus will be on performance. We&#8217;re planning to do a significant refactoring of our pattern matching engine, which should lead both to better performance and improved accuracy. Next to this, we&#8217;ll be finally adding the &#8220;file_data&#8221; keyword along with HTTP file carving &#8212; extracting files from HTTP requests. I am personally very excited about this.</p>
<p>We&#8217;re starting to see more and more community involvement. Not just on the user side, but also on the development side. As seen on the <a href="http://lists.openinfosecfoundation.org/mailman/listinfo/oisf-devel">oisf-devel mailinglist</a>, a large SSL/TLS patch set was contributed by Pierre Chifflier. This will make it&#8217;s way into the 1.2 release as well. Smaller contributions were accepted on PF_RING code and the HTTP code. I am very grateful for the contributions.</p>
<p><a href="http://home.regit.org/">Eric Leblond</a> and I will be doing a talk next week at <a href="http://deepsec.net/">DeepSec</a> on Suricata. If you are able to, please come meet us!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.inliniac.net/blog/2011/11/10/suricata-1-1-released-1-2-on-the-horizon.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Suricata and PCRE performance</title>
		<link>http://www.inliniac.net/blog/2011/10/12/suricata-and-pcre-performance.html</link>
		<comments>http://www.inliniac.net/blog/2011/10/12/suricata-and-pcre-performance.html#comments</comments>
		<pubDate>Wed, 12 Oct 2011 18:26:19 +0000</pubDate>
		<dc:creator>Victor Julien</dc:creator>
				<category><![CDATA[oisf]]></category>
		<category><![CDATA[Suricata]]></category>
		<category><![CDATA[pcre]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://www.inliniac.net/blog/?p=450</guid>
		<description><![CDATA[Update: Will Metcalf pointed out I was missing the &#8211;enable-utf8 &#8211;enable-unicode-properties flags from PCRE, so added these &#038; updated the numbers. Thanks Will. In the Emerging Threats community the following if often heard: &#8220;PCRE is evil&#8221;. With this people refer to signatures that use &#8220;pure&#8221; PCRE matches, meaning without anchoring it to a content pattern [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> Will Metcalf <a href="https://twitter.com/#!/node5/status/124193666377064448">pointed out</a> I was missing the &#8211;enable-utf8 &#8211;enable-unicode-properties flags from PCRE, so added these &#038; updated the numbers. Thanks Will.</p>
<p>In the Emerging Threats community the following if often heard: &#8220;PCRE is evil&#8221;. With this people refer to signatures that use &#8220;pure&#8221; PCRE matches, meaning without anchoring it to a content pattern match.</p>
<p>A while ago Will Metcalf initiated work to get Suricata to support a new PCRE feature by Herczeg Zoltán: <a href="http://sljit.sourceforge.net/pcre.html">SLJIT</a>. Since then, support for this has found it&#8217;s way into the official PCRE release, currently at version <a href="https://lists.exim.org/lurker/message/20111011.103546.de2e9e31.en.html">8.20-RC3</a>.</p>
<p>I decided to run a quick benchmark to see how much difference there would be. The results are quite amazing. In my test I used an older Intel Core2 E6600 2.4Ghz on Ubuntu 10.10, a 416MB pcap full of badness (sandnet traffic) and a slightly older ruleset of 11.972 signatures.</p>
<p>The results:</p>
<p><code>suricata, OS default pcre (8.02)...................: 78s<br />
suricata, pcre-8.20-RC3 (no jit), -O2..............: 80s<br />
suricata, pcre-8.20-RC3 (no jit), -O3 -march=native: 72s<br />
suricata, pcre-8.20-RC3 (jit), -O2.................: 53s</code></p>
<p>I played some more with GCC 4.6.1 and various optimization levels, but this was the best result so far. Quite surprising because in the past I saw some improvements from using the newer GCC over the OS default of 4.4.5.</p>
<p>Want to try the new PCRE without messing up your system?<br />
<code>./configure --prefix=/opt/pcre-8.20-RC3/ --enable-jit --enable-utf8 --enable-unicode-properties<br />
make<br />
sudo make install</code></p>
<p>Then recompile Suricata as well:<br />
<code>./configure --enable-pcre-jit --with-libpcre-libraries=/opt/pcre-8.20-RC3/lib/ --with-libpcre-includes=/opt/pcre-8.20-RC3/include/<br />
make<br />
sudo make install</code></p>
<p>You&#8217;ll need the Suricata code from git to take advantage of this.</p>
<p>Please give it a try, it&#8217;s free performance!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.inliniac.net/blog/2011/10/12/suricata-and-pcre-performance.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>RAID 2011 Thoughts</title>
		<link>http://www.inliniac.net/blog/2011/09/24/raid-2011-thoughts.html</link>
		<comments>http://www.inliniac.net/blog/2011/09/24/raid-2011-thoughts.html#comments</comments>
		<pubDate>Sat, 24 Sep 2011 16:09:24 +0000</pubDate>
		<dc:creator>Victor Julien</dc:creator>
				<category><![CDATA[ids]]></category>
		<category><![CDATA[IPS]]></category>
		<category><![CDATA[oisf]]></category>
		<category><![CDATA[Snort]]></category>
		<category><![CDATA[Suricata]]></category>
		<category><![CDATA[bro ids]]></category>
		<category><![CDATA[raid]]></category>
		<category><![CDATA[sourcefire]]></category>

		<guid isPermaLink="false">http://www.inliniac.net/blog/?p=443</guid>
		<description><![CDATA[The last few days I&#8217;ve been at the Recent Advances in Intrusion Detection (RAID) conference in California. Overall it has been a very pleasant and interesting experience. The nice California weather was certainly helping a lot! I&#8217;ve seen all talks and some were very interesting. However, being a Suricata IDS developer, I was not just [...]]]></description>
			<content:encoded><![CDATA[<p>The last few days I&#8217;ve been at the Recent Advances in Intrusion Detection (RAID) conference in California. Overall it has been a very pleasant and interesting experience. The nice California weather was certainly helping a lot!</p>
<p>I&#8217;ve seen all talks and some were very interesting. However, being a Suricata IDS developer, I was not just interested in research for the hell of it, but I was actively scouting for ideas we could implement into Suricata. In this respect the conference was highly disappointing. Although with some of the talks I thought the idea was applicable in general security, like Erik Bosmans high speed memory tainting detection, I found nothing like that for NIDS.</p>
<p>Most inspiring part of the conference was spending an evening with Seth Hall, one of the Bro IDS engineers. Bro has a very different approach to inspecting the network than Suricata. Actually, I should say Suricata does it differently as Bro has been around much longer than Suricata. <img src='http://www.inliniac.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  The conversation was all about sharing of ideas and experiences, and finding common grounds for actual cooperation.</p>
<p>A couple of notes from that conversation. First, Bro supports Unified2/Barnyard2 <a href="https://github.com/firnsy/barnyard2/pull/1">now</a>, as input (so actually Barnyard2 can output to Bro). This means it can extend it&#8217;s analysis to include Suricata generated events. Second, we might try to have Suricata and Bro work together, where Suricata would be controlled by Brocolli. This way Bro could benefit from Suricata&#8217;s high speed signature matching engine, functionality Bro doesn&#8217;t have, and Suricata could benefit from Bro&#8217;s higher level understanding of the network. Finally, Bro&#8217;s binpack effort to define protocol parsers in a higher level language that can then be compiled into native code looks interesting as well. It would probably take quite a bit of changes to get this all going, but it might just be worth it.</p>
<p>Then there was the panel at the conference with Martin Roesch, Seth Hall and myself. A lot of people expected fireworks, but no such thing happened. Everyone was polite, respectful and friendly. It never really turned into a real discussion though, it was more a Q&#038;A with the audience. Dominique Karg blogged about the panel <a href="http://alienvault.blogspot.com/2011/09/raid-11-menlo-park-ca-notes-and-rants.html">here</a>.</p>
<p>It was good to talk to Martin Roesch. The OISF &#8211; Sourcefire relation has definitely not started well, so it was good to have normal conversations and such. I offered Marty to work together, especially on SCADA detection. As was announced earlier, OISF will maintain the Digital Bond Quickdraw SCADA parsers and keywords, not only for Suricata, but also for Snort. Hopefully we can start a more constructive relationship on this topic, and elsewhere.</p>
<p>Some final thoughts on RAID. It was well organized and it was great to meet so many smart(er) people thinking about generally the same topics as I do. On the negative side I do feel disappointed over the apparent disconnect between the academic world and the more real world focused efforts like Suricata, Snort and tools like Streamdb, Sguil, Snortby, Squert, etc. But maybe I&#8217;m just lacking the vision to put the theory to practice.</p>
<p>The current tools out there may not be considered sufficient by everyone for every task. However, if RAID was a good benchmark, I fear we&#8217;ll have to settle for those for a while. Thats not necessarily a bad thing as fore-mentioned tools are under active development and continue to improve steadily.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.inliniac.net/blog/2011/09/24/raid-2011-thoughts.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrading Sguil 0.7.0 to 0.8.0 from CVS</title>
		<link>http://www.inliniac.net/blog/2011/06/17/upgrading-sguil-0-7-0-to-0-8-0-from-cvs.html</link>
		<comments>http://www.inliniac.net/blog/2011/06/17/upgrading-sguil-0-7-0-to-0-8-0-from-cvs.html#comments</comments>
		<pubDate>Fri, 17 Jun 2011 07:15:14 +0000</pubDate>
		<dc:creator>Victor Julien</dc:creator>
				<category><![CDATA[Sguil]]></category>

		<guid isPermaLink="false">http://www.inliniac.net/blog/?p=435</guid>
		<description><![CDATA[Sguil 0.8.0 was recently released, so it was time for an upgrade. Since I remembered the last major upgrade to be quite a bit of work I wasn&#8217;t looking forward to the new upgrade. However, to my surprise it was a breeze. Here is what I did. On my Sguild server called &#8220;owl&#8221; &#8212; I&#8217;d [...]]]></description>
			<content:encoded><![CDATA[<p>Sguil 0.8.0 was recently released, so it was time for an upgrade. Since I remembered the last major upgrade to be quite a bit of work I wasn&#8217;t looking forward to the new upgrade. However, to my surprise it was a breeze. Here is what I did.</p>
<p>On my Sguild server called &#8220;owl&#8221; &#8212; I&#8217;d like to think it&#8217;s very wise &#8212; I first went to my sguil directory, where the CVS checkout lives. There I did a &#8220;cvs up&#8221;. Next it was time to upgrade the database:</p>
<blockquote><p>
owl:/usr/local/sguil/server/sql_scripts# <strong>./update_0.8.tcl</strong><br />
This script is used for upgrading from Sguil Version 0.7.x<br />
to Sguil Version 0.8.x only.</p>
<p>Use these scripts at your own risk. Be sure to back<br />
up your data before proceeding!!<br />
Do you want to continue? (y/N) <strong>y</strong><br />
Database password: <strong>***</strong><br />
Enter path to sguild.users file: <strong>/etc/sguild/sguild.users</strong><br />
Connecting to database&#8230;Success.<br />
Trying to use database sguildb&#8230;Success.<br />
Sguild DB Versions: 0.13<br />
Migrating your password file (/etc/sguild/sguild.users) to the database:<br />
    Updating user name sanc<br />
    Updating user name victor<br />
Success.</p>
<p>** Finished. The DB has been upgraded. **</p>
<p>owl:/usr/local/sguil/server/sql_scripts#
</p></blockquote>
<p>After this I started the sguild process and it came up just fine. Next I did &#8220;cvs up&#8221; on all sensors, restarted the agents. A final &#8220;cvs up&#8221; on my desktop and sguil.tk was updated as well.</p>
<p>The total upgrade took me only a few minutes and I&#8217;ve not encountered any regressions. Impressive work by Bamm and his team!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.inliniac.net/blog/2011/06/17/upgrading-sguil-0-7-0-to-0-8-0-from-cvs.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vuurmuur IPv6</title>
		<link>http://www.inliniac.net/blog/2011/03/31/vuurmuur-ipv6.html</link>
		<comments>http://www.inliniac.net/blog/2011/03/31/vuurmuur-ipv6.html#comments</comments>
		<pubDate>Thu, 31 Mar 2011 21:14:43 +0000</pubDate>
		<dc:creator>Victor Julien</dc:creator>
				<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Vuurmuur]]></category>

		<guid isPermaLink="false">http://www.inliniac.net/blog/?p=432</guid>
		<description><![CDATA[The last few years Vuurmuur development has been very slow, not to say pretty much stagnant. This had a couple of reasons. The first is that my attention was drawn to other projects, mostly Suricata these days. The second reason is that Vuurmuur pretty much does all I want. The third reason is that despite [...]]]></description>
			<content:encoded><![CDATA[<p>The last few years Vuurmuur development has been very slow, not to say pretty much stagnant. This had a couple of reasons. The first is that my attention was drawn to other projects, mostly Suricata these days. The second reason is that Vuurmuur pretty much does all I want. The third reason is that despite some minor contributions, no other developer has stepped up to take over.</p>
<p>Meanwhile, people continued using Vuurmuur, it made it&#8217;s way into Debian, got removed from it again, made it&#8217;s way into Ubuntu. Lately, every few weeks someone would ask me if Vuurmuur was still being developed. My answer always was &#8220;yes, but very slowly&#8221;.</p>
<p>I plan to change that. The reason? IPv6. I&#8217;ve been using IPv6 on and off over the years, usually through the experimental tunnel service my ISP offered. But a while back my ISP started offering native IPv6 connectivity, which I&#8217;m using on a daily basis now. In the feature set Vuurmuur has, IPv6 is the only glaring omission. So, it&#8217;s time to address that.</p>
<p>Over the next months my idea is to slowly start adding IPv6 support to Vuurmuur. As I&#8217;m already using a simple script the idea is to start with logging support. Then move up from there.</p>
<p>Supporting all current features on IPv6 is going to require a lot of effort. In some cases I&#8217;m not even sure we can. But getting at least a basic IPv6 ruleset going should be fairly straightforward. If you&#8217;re interested in helping out, please let me know. Any help is greatly appreciated!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.inliniac.net/blog/2011/03/31/vuurmuur-ipv6.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Suricata IPS improvements</title>
		<link>http://www.inliniac.net/blog/2011/01/31/suricata-ips-improvements.html</link>
		<comments>http://www.inliniac.net/blog/2011/01/31/suricata-ips-improvements.html#comments</comments>
		<pubDate>Mon, 31 Jan 2011 20:51:25 +0000</pubDate>
		<dc:creator>Victor Julien</dc:creator>
				<category><![CDATA[IPS]]></category>
		<category><![CDATA[oisf]]></category>
		<category><![CDATA[Suricata]]></category>
		<category><![CDATA[TCP]]></category>
		<category><![CDATA[stream reassembly]]></category>
		<category><![CDATA[tcp segmentation]]></category>

		<guid isPermaLink="false">http://www.inliniac.net/blog/?p=429</guid>
		<description><![CDATA[January has been a productive month for Suricata, especially for the IPS part of it. I&#8217;ve quite some time on adding support to the stream engine to operate differently when running inline. This was needed as dropping attacks found in the reassembled stream or the application layer was not reliable. Up until now the stream [...]]]></description>
			<content:encoded><![CDATA[<p>January has been a productive month for Suricata, especially for the IPS part of it. I&#8217;ve quite some time on adding support to the stream engine to operate differently when running inline. This was needed as dropping attacks found in the reassembled stream or the application layer was not reliable. Up until now the stream engine would offer the reassembled stream to the detection engine as soon as it was ACK&#8217;d. This meant that by definition the packets containing the data had already passed the IPS device. Simply switching to sending un-ACK&#8217;d data to the detection engine would have it&#8217;s own set of issues.</p>
<p>To be able to work with un-ACK&#8217;d data, we need to make sure we deal with possible evasions properly. The problem, as extensively documented by Judy Novak and Steven Sturges, is that in TCP streams there can be overlapping packets. Those are being dealt with differently based on the receiving OS. If we would need to account for overlaps in the application layer, we would have to be able to tell the HTTP parser for example: &#8220;sorry, that last data is wrong, please revert and use the new packet instead&#8221;. A nightmare.</p>
<p>The solution I opted for was to not care about destination OS&#8217; for overlaps and such. The approach is fairly simple: once we have accepted a segment, thats what it&#8217;s going to be. This means that if we receive a segment later that (partially) overlaps and has different data, it&#8217;s data portion will simply be overwritten to be the same as the original segment. This way, the IPS and not an obscure mix of the sender (attacker?) and destination OS, determines the data the destination will see.</p>
<p>Of course the approach comes with some drawbacks. First, we need to keep segments in memory for a longer period of time. This causes significantly higher memory usage. Secondly, if we rewrite a packet, it needs to be reinjected on the wire. As we modified the packet payload a checksum recalculation is required.</p>
<p>In Suricata&#8217;s design the application layer parsers, such as our HTTP parser, run on top of the reassembly engine. After the reassembly engine and the app layer parsers are updated, the packet with the associated stream and app layer state is passed on to the detection engine. In the case where we work with ACK&#8217;d data, an ACK packet in the opposite direction triggers the reassembly process. If we detect based on that, and decide we need to drop, all we can do is drop the ACK packet as the actual data segment(s) have already passed. This is not good enough in many cases.</p>
<p>In the new code the data segment itself triggers the reassembly process. In this case, if the detection engine decides a drop is required, the packet containing the data itself can be dropped, not just the ACK. The reason we&#8217;re not taking the same approach in IDS mode is that we wouldn&#8217;t be able to properly deal with the said evasion/overlap issues. The IPS can exactly control what packets pass Suricata. The IDS, being passive, can not.</p>
<p>You can try this code by checking out the current git master. In the suricata.yaml that lives in our git tree you&#8217;ll find a new option in the stream config, &#8220;stream.inline&#8221;. If you enable this, the code as explained above is activated.</p>
<p>Feedback is very welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.inliniac.net/blog/2011/01/31/suricata-ips-improvements.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>One year of (public) Suricata</title>
		<link>http://www.inliniac.net/blog/2010/12/31/one-year-of-public-suricata.html</link>
		<comments>http://www.inliniac.net/blog/2010/12/31/one-year-of-public-suricata.html#comments</comments>
		<pubDate>Fri, 31 Dec 2010 19:36:42 +0000</pubDate>
		<dc:creator>Victor Julien</dc:creator>
				<category><![CDATA[oisf]]></category>
		<category><![CDATA[Suricata]]></category>

		<guid isPermaLink="false">http://www.inliniac.net/blog/?p=425</guid>
		<description><![CDATA[Today exactly one year ago we released the first public version of Suricata, tagged 0.8.0. It was the first beta version. Six months later we released Suricata 1.0.0, the first stable release. Since then we&#8217;ve been doing 3 more releases: 1.0.1, 1.0.2 and 1.1 beta 1. It has been an very exciting year, with a [...]]]></description>
			<content:encoded><![CDATA[<p>Today exactly one year ago we released the first public version of Suricata, tagged 0.8.0. It was the first beta version. Six months later we released Suricata 1.0.0, the first stable release. Since then we&#8217;ve been doing 3 more releases: 1.0.1, 1.0.2 and 1.1 beta 1.</p>
<p>It has been an very exciting year, with a lot of press and community interest for our project. Also, a lot of work has been done in the past year. I already wrote that our performance has increased <a href="http://www.inliniac.net/blog/2010/12/18/suricata-development-update.html">a lot</a>.</p>
<p>There have been over a thousand commits to our source code management system (git), more than all previous development together. Or as git shows it: &#8220;548 files changed, 193714 insertions(+), 39606 deletions(-)&#8221;. Quite impressive. Almost 20 developers have contributed code, some paid by OISF, some from our consortium members, some from the community.</p>
<p>Exactly one year ago, our codebase had a size of 120k lines of code. Today, we&#8217;re looking at 269k lines of code. Admittedly this includes our 2264 unittests (up from 1191), but still a large increase. In short in 2010 we&#8217;ve shown to the world we&#8217;re building a exciting and thriving project!</p>
<p>For 2011 we are in great shape. We have a stable 1.0.2 release and a promising upcoming 1.1 release. Emerging Threats (and also Emerging Threats Pro) has a tuned and optimized Suricata ruleset. Additionally, one of the 1.1 goals is to continue to fully support VRT&#8217;s ruleset. </p>
<p>Soon we&#8217;ll be starting work on Suricata 2.x, so there are exciting times ahead!</p>
<p>Happy New Year everybody! <img src='http://www.inliniac.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.inliniac.net/blog/2010/12/31/one-year-of-public-suricata.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

