<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.7" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Try before you buy</title>
	<link>http://jc.ngo.org.uk/blog</link>
	<description>It'll all be over in 60 days</description>
	<pubDate>Mon, 10 Sep 2007 03:01:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.7</generator>
	<language>en</language>
			<item>
		<title>Spam false positives from British Airways</title>
		<link>http://jc.ngo.org.uk/blog/2007/08/21/spam-false-positives-from-british-airways/</link>
		<comments>http://jc.ngo.org.uk/blog/2007/08/21/spam-false-positives-from-british-airways/#comments</comments>
		<pubDate>Tue, 21 Aug 2007 07:42:26 +0000</pubDate>
		<dc:creator>nik</dc:creator>
		
		<category>spam</category>

		<guid isPermaLink="false">http://jc.ngo.org.uk/blog/2007/08/21/spam-false-positives-from-british-airways/</guid>
		<description><![CDATA[I note that British Airways e-receipt e-mails are probably going astray for a lot of people.
I&#8217;ve had to book a few flights with BA recently.  Up until a couple of weeks ago their acknowledgment e-mails came through fine.  And then I stopped receiving them.  Taking the time to delve in to the [...]]]></description>
			<content:encoded><![CDATA[<p>I note that <a href="http://www.britishairways.com/">British Airways</a> e-receipt e-mails are probably going astray for a lot of people.</p>
<p>I&#8217;ve had to book a few flights with BA recently.  Up until a couple of weeks ago their acknowledgment e-mails came through fine.  And then I stopped receiving them.  Taking the time to delve in to the mail logs yesterday I noticed this:</p>
<pre>Aug 20 07:47:45 jc sm-mta[15347]: l7KElEmk015347: ruleset=check_mail, 
&nbsp;&nbsp;arg1=website +LHS=RHS@bounce.baplc.com, 
&nbsp;&nbsp;relay=ceba-mgw04.baplc.com [163.166.43.64], 
&nbsp;&nbsp;reject=553 5.1.8 website +LHS=RHS@bounce.baplc.com&#46;.. 
&nbsp;&nbsp;Domain of sender address website+LHS=RHS@bounce.baplc.com does not exist</pre>
<p>(I&#8217;ve redacted the left and right hand side of the actual e-mail address it was being sent to)</p>
<p>If that&#8217;s just so much gibberish to you, it says that BA are sending e-mails with a return path of &#8230;@bounce.baplc.com.  Working through the logs shows that they&#8217;ve been doing this for some time.</p>
<p>But at some point in the last few weeks, someone at BA has removed the bounce.baplc.com entry from their DNS.  So my, and countless other systems around the world, will begin rejecting messages.</p>
<p>This rejection is quite correct.  Since bounce.baplc.com doesn&#8217;t exist, my system (and any other system with the same configuration) will have nowhere to send any bounces that might occur. And sending messages from domains that do not exist is also an exceedingly common spammer tactic.</p>
<p>I&#8217;ve used the &#8220;Report problems with our site&#8221; feature to report this to BA, but I don&#8217;t have high hopes of anyone listening.
</p>
<p class="akst_link"><a href="javascript:void(akst_share('118', 'http%3A%2F%2Fjc.ngo.org.uk%2Fblog%2F2007%2F08%2F21%2Fspam-false-positives-from-british-airways%2F', 'Spam+false+positives+from+British+Airways'));" title="E-mail this, post to del.icio.us, etc." id="akst_link_118">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://jc.ngo.org.uk/blog/2007/08/21/spam-false-positives-from-british-airways/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Issues with SPF and Korean ISPs</title>
		<link>http://jc.ngo.org.uk/blog/2007/02/28/issues-with-spf-and-korean-isps/</link>
		<comments>http://jc.ngo.org.uk/blog/2007/02/28/issues-with-spf-and-korean-isps/#comments</comments>
		<pubDate>Wed, 28 Feb 2007 09:16:40 +0000</pubDate>
		<dc:creator>nik</dc:creator>
		
		<category>spam</category>

		<guid isPermaLink="false">http://jc.ngo.org.uk/blog/2007/02/28/issues-with-spf-and-korean-isps/</guid>
		<description><![CDATA[If you publish SPF records, send mail to Korean ISPs, and use SPF mechnisms other than ip4:, you may face a problem.

Apparently (and this is second-hand, so treat it with some caution), the Korean Information Security Agency (KISA) is producing an RBL of domains to blacklist.  This is complemented by a whitelist, called WhiteDomain, [...]]]></description>
			<content:encoded><![CDATA[<p>If you publish <a href="http://www.openspf.org/">SPF records</a>, send mail to Korean ISPs, and use SPF mechnisms other than <tt>ip4:</tt>, you may face a problem.</p>
<p><a id="more-116"></a></p>
<p>Apparently (and this is second-hand, so treat it with some caution), the <a href="http://www.kisa.or.kr/maine.jsp">Korean Information Security Agency</a> (KISA) is producing an RBL of domains to blacklist.  This is complemented by a whitelist, called WhiteDomain, seeded by using published SPF records.</p>
<p>There&#8217;s a webpage for the <a href="https://www.kisarbl.or.kr/">KISA RBL</a>, with both English and Korean versions.  It looks like there&#8217;s more content on the Korean version than on the English version,  but most of it&#8217;s text on images which Google can&#8217;t translate, and my Korean&#8217;s not up to much.</p>
<p>Many Korean ISPs are using this RBL and whitelist </p>
<p>However, the process for seeding WhiteDomain is only correctly handling SPF records that use the <tt>ip4:</tt> mechanism.  Other mechanisms (like <tt>a:</tt>, <tt>ptr:</tt>, and <tt>mx:</tt>) are being ignored.  So if your SPF record doesn&#8217;t use the <tt>ip4:</tt> mechanism (and there are many legitimate reasons for not doing so) you are going to find your e-mail blacklisted by many Korean ISPs.</p>
<p>This is broken for a couple of reasons.  First, the <a href="http://www.openspf.org/RFC_4408">SPF specification</a> is <a href="http://www.openspf.org/RFC_4408#function">quite clear</a> about what a conforming SPF implementation must do:</p>
<blockquote><p>4. The check_host() Function</p>
<p>The check_host() function fetches SPF records, parses them, and interprets them to determine whether a particular host is or is not permitted to send mail with a given identity. Mail receivers that perform this check MUST correctly evaluate the check_host() function as described here.</p></blockquote>
<p>An implemenation that claims to process SPF, but that does not follow parts of the specification is broken, pure and simple.</p>
<p>Second, there&#8217;s nothing preventing spammers from publishing their own SPF records, authorizing their mail relay.  If WhiteDomain is being seeded purely by SPF (and I don&#8217;t know for certain that it is, so take this with an appropriately sized piece of salt) it&#8217;s likely to become less and less useful over time.
</p>
<p class="akst_link"><a href="javascript:void(akst_share('116', 'http%3A%2F%2Fjc.ngo.org.uk%2Fblog%2F2007%2F02%2F28%2Fissues-with-spf-and-korean-isps%2F', 'Issues+with+SPF+and+Korean+ISPs'));" title="E-mail this, post to del.icio.us, etc." id="akst_link_116">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://jc.ngo.org.uk/blog/2007/02/28/issues-with-spf-and-korean-isps/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sendmail 8.14.0: Logging the GreetPause firing time</title>
		<link>http://jc.ngo.org.uk/blog/2007/02/10/sendmail-8140-logging-the-greetpause-firing-time/</link>
		<comments>http://jc.ngo.org.uk/blog/2007/02/10/sendmail-8140-logging-the-greetpause-firing-time/#comments</comments>
		<pubDate>Sat, 10 Feb 2007 10:17:18 +0000</pubDate>
		<dc:creator>nik</dc:creator>
		
		<category>sendmail</category>

		<category>perl</category>

		<category>spam</category>

		<category>open source</category>

		<guid isPermaLink="false">http://jc.ngo.org.uk/blog/2007/02/10/sendmail-8140-logging-the-greetpause-firing-time/</guid>
		<description><![CDATA[Following on from yesterday&#8217;s discussion of new features in Sendmail 8.14.0, today I&#8217;m writing about Sendmail&#8217;s GreetPause feature, and some additional logging for it that&#8217;s been added in Sendmail 8.14.0.

Sendmail has supported pausing before displaying the greeting as an anti-spam measure since 8.13.0.
To use it, add a line like:
FEATURE(`greet_pause&#039;, `10000&#039;)
to your sendmail.mc file, and rebuild [...]]]></description>
			<content:encoded><![CDATA[<p>Following on from <a href="http://jc.ngo.org.uk/blog/2007/02/08/sendmail-8140-heloname/">yesterday&#8217;s discussion of new features in Sendmail 8.14.0</a>, today I&#8217;m writing about Sendmail&#8217;s GreetPause feature, and some additional logging for it that&#8217;s been added in Sendmail 8.14.0.</p>
<p><a id="more-108"></a></p>
<p>Sendmail has supported <a href="http://en.wikipedia.org/wiki/Anti-spam_techniques_%28e-mail%29#Greeting_delay">pausing before displaying the greeting</a> as an anti-spam measure since <a href="http://www.sendmail.org/releases/8.13.0.html#RS">8.13.0</a>.</p>
<p>To use it, add a line like:</p>
<pre>FEATURE(`greet_pause&#039;, `10000&#039;)</pre>
<p>to your <tt>sendmail.mc</tt> file, and rebuild the <tt>sendmail.cf</tt> file.  The delay is specified in milliseconds, so that example will cause Sendmail to delay for 10 seconds before displaying the greeting banner.</p>
<p>What that feature was introduced, Sendmail would log connections that fell foul of this check with this line:</p>
<p><tt>rejecting commands from <i>host</i> [<i>ip-addr</i>] due to pre-greeting traffic</tt></p>
<p>This is helpful in determining how many times the check fired (and therefore how many connections it&#8217;s stopping).  The hostname and IP address information can also be mined from the logs and used to update any blacklists or firewall rules you&#8217;re maintaining &#8212; if the site is going to trigger this block then you may as well prevent from connecting, and save some connection slots.</p>
<p>However, it doesn&#8217;t tell give you any idea of what would happen if you were to increase or decrease the greeting pause time.  Suppose you have the delay set to 10 seconds.  It may be the case that all the violators are trying to send data within the first second.  In which case a 10 second delay is going to penalise all connections for an unnecessary 9 seconds.</p>
<p>On the other hand, it might be the case that blocks because of a 10 second greet pause delay are spread out over the entire 10 seconds.  In which case there isn&#8217;t much opportunity to reduce the delay, and it could be argued that increasing the delay makes sense.</p>
<p>To be able to answer questions like this I sent in a patch, and from Sendmail 8.14.0 (or 8.13.5 if you enabled the _FFR_LOG_GREET_PAUSE feature) Sendmail now reports:</p>
<p><tt>rejecting commands from <i>host</i> [<i>ip-addr</i>] due to pre-greeting traffic after <i>num</i> seconds</tt></p>
<p>This is sufficient information to produce a histogram that shows the frequency of the delay at the time that connections are rejected because they triggered this check.  Here&#8217;s an example of what such a report might look like.</p>
<pre># == 1 connection
 Delay&nbsp;&nbsp; Count&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Histogram
&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp;12)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;############
&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp; 9)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#########
&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp;14)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;##############
&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp; 9)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#########
&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp;11)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;###########
&nbsp;&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp;27)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;###########################
&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp; 8)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;########
&nbsp;&nbsp;&nbsp;&nbsp; 7&nbsp;&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp;13)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#############
&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp; 6)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;######
&nbsp;&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp;11)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;###########</pre>
<p>In this example it&#8217;s clear that the pre-greeting checks are firing evenly across the range of delays &#8212; with the exception at 5 seconds.  There&#8217;s a definite spike there.  That could be inidicative of a particular popular piece of spam-ware that&#8217;s configured to only wait 5 seconds before sending mail.</p>
<p>Here&#8217;s the Perl script that produced that report.  Happy spam hunting.</p>
<pre>#!/usr/bin/perl
&nbsp;
use strict;
use warnings;
&nbsp;
use List::Util qw(max);
&nbsp;
# Read maillog from stdin, produce histogram showing greetpause
# distribution
&nbsp;
my %pauses&nbsp;&nbsp;&nbsp;&nbsp;= ();
my $max_count = 0;
&nbsp;
while(&lt;&gt;) {
&nbsp;&nbsp;&nbsp;&nbsp;next unless $_ =~ /pre-greeting traffic after (\d+) seconds/;
&nbsp;&nbsp;&nbsp;&nbsp;$pauses{$1}++;
&nbsp;&nbsp;&nbsp;&nbsp;$max_count = max($pauses{$1}, $max_count);
}
&nbsp;
my $scale = int($max_count / 40) + 1;
&nbsp;
print &quot;# == $scale connection&quot;, $scale == 1 ? &#039;&#039; : &#039;s&#039;, &quot;n&quot;;
&nbsp;
print &quot; Delay\t Count\t\tHistogramn&quot;;
foreach my $delay (sort keys %pauses) {
&nbsp;&nbsp;&nbsp;&nbsp;printf &quot;%6d\t(%6d)\t%s\n&quot;, $delay, $pauses{$delay},
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;#&#039; x ($pauses{$delay} / $scale);
}</pre>
<p class="akst_link"><a href="javascript:void(akst_share('108', 'http%3A%2F%2Fjc.ngo.org.uk%2Fblog%2F2007%2F02%2F10%2Fsendmail-8140-logging-the-greetpause-firing-time%2F', 'Sendmail+8.14.0%3A+Logging+the+GreetPause+firing+time'));" title="E-mail this, post to del.icio.us, etc." id="akst_link_108">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://jc.ngo.org.uk/blog/2007/02/10/sendmail-8140-logging-the-greetpause-firing-time/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sendmail 8.14.0: HeloName</title>
		<link>http://jc.ngo.org.uk/blog/2007/02/08/sendmail-8140-heloname/</link>
		<comments>http://jc.ngo.org.uk/blog/2007/02/08/sendmail-8140-heloname/#comments</comments>
		<pubDate>Thu, 08 Feb 2007 08:47:43 +0000</pubDate>
		<dc:creator>nik</dc:creator>
		
		<category>sendmail</category>

		<category>spam</category>

		<category>open source</category>

		<guid isPermaLink="false">http://jc.ngo.org.uk/blog/2007/02/08/sendmail-8140-heloname/</guid>
		<description><![CDATA[Sendmail 8.14.0 was recently released, and it includes a small handful of patches that I sent in.  The documentation explains what these options do, but doesn&#8217;t explain why you might want to use them.  So I thought I&#8217;d do that in a series of entries here.
First, the new HeloName option.

When Sendmail needs to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sendmail.org/releases/8.14.0.php">Sendmail 8.14.0</a> was recently released, and it includes a small handful of patches that I sent in.  The documentation explains what these options do, but doesn&#8217;t explain why you might want to use them.  So I thought I&#8217;d do that in a series of entries here.</p>
<p>First, the new <tt>HeloName</tt> option.</p>
<p><a id="more-107"></a></p>
<p>When Sendmail needs to deliver mail to a different server, it connects to the remote server, waits for it to send the greeting banner, and then sends:</p>
<pre>HELO the.host.name</pre>
<p>(or <tt>EHLO the.host.name</tt>, but I&#8217;m keeping this simple).  Sendmail uses the local, fully qualified hostname of the host when it does this.  So if you host is called <tt>foo.example.com</tt> Sendmail will send <tt>HELO foo.example.com</tt>.</p>
<p>What happens next depends on how the remote system is configured.  It is very typical for the remote site to do a <a href="http://www.sendmail.org/releases/8.14.0.php">DNS lookup on the provided hostname</a>, to make sure that it exists.  This is a common anti-spam measure.  If the given hostname doesn&#8217;t exist then the rest of the connection will be rejected.</p>
<p>Further, it&#8217;s also common to do the <a href="http://en.wikipedia.org/wiki/Anti-spam_techniques_(e-mail)#PTR.2FReverse_DNS_checks">reverse lookup</a>.  So if <tt>foo.example.com</tt> resolves to the IP address 1.2.3.4, the remote site will then look up <tt>4.3.2.1.in-addr.arpa</tt>, and verify that that resolves back to <tt>foo.example.com</tt>.  Again, if it doesn&#8217;t, the connection is refused.  This is a less common anti-spam technique, but it&#8217;s still found in regular use at hundreds of thousands of sites around the world.</p>
<p>You&#8217;ve probably worked out how this can cause problems.  It&#8217;s common, especially in corporate environments, for hosts to have multiple hostnames, especially if they are internet facing hosts.  There&#8217;ll be one name by which the host is known internally (and is only published in the internal, corporate DNS), and one name (and associated IP address) by which the host is known externally.</p>
<p>This can lead to situations where the mail server connects to the remote server, and sends:</p>
<pre>HELO my.internal.name</pre>
<p><tt>my.internal.name</tt> is not published in the public DNS, so the remote server rejects the rest of the connection.</p>
<p>It may be even more complicated than that &#8212; for example, the internet facing mail relay might be behind a firewall that carries out Network Address Translation (NAT) &#8212; in which case, even if the server is configured to use the correct hostname in the HELO step, that hostname might not resolve back to the right IP address, and again, the connection may be refused.</p>
<p>Prior to the <tt>HeloName</tt> option being added to Sendmail you could use the <tt>confDOMAIN_NAME</tt> configuration option to specify the full domain name to use.</p>
<p>This works, but has other side-effects.  In particular, the value of <tt>confDOMAIN_NAME</tt> appears in <tt>Received:</tt> headers, and if you set it obscures the actual hostname, which can make analysis of messages through the <tt>Received:</tt> headers more difficult.</p>
<p>This is the situation I ran in to at $work.  We have many Internet facing mail servers relaying mail to the outside world.  Each server knows its own internal hostname, but has no knowledge of the hostname it presents to the outside world, nor does it know the IP address that the packets it sends will finally have (all the servers are behind NAT devices).</p>
<p>I considered configuring each server with this information, but decided that that would be a bad idea.  It would have meant tightly coupling our configuration information with configuration information maintained by an entirely separate group (the Networks Team).  Should they decide to renumber a NAT&#8217;d IP address they would need to ensure that we were informed, and that the change was co-ordinated.</p>
<p>That&#8217;s extra work, extra complexity, and extra opportunity for things to go wrong.</p>
<p>Each server&#8217;s IP address is already in a large A record, <tt>mail.example.com</tt>.  I considered adjusting <tt>confDOMAIN_NAME</tt> and related settings so that each outbound mail relay considered itself to be <tt>mail.example.com</tt>, but rejected that idea on the previously mentioned issues relating to <tt>Received:</tt> lines and the extra complexity it introduces when debugging.</p>
<p>So, plan C.  Specifically, I wrote a small patch for Sendmail that introduces a new configuration option, <tt>HeloName</tt>.  If set, Sendmail will use the value of this option when it sends <tt>HELO/EHLO</tt>, instead of the fully qualified hostname (or <tt>confDOMAIN_NAME</tt> setting).</p>
<p>Our Sendmail configuration files now contain this directive:</p>
<pre>define(`confHELO_NAME&#039;, `mail.example.com&#039;)</pre>
<p>This is sufficient for all our outbound mail relays to <tt>HELO</tt> with the same name.  This name contains all their IP addresses.  And the <tt>Received:</tt> headers still contain the correct internal hostnames, to make troubleshooting easier.</p>
<p>If we&#8217;d been using a closed source MTA this wouldn&#8217;t have been possible.
</p>
<p class="akst_link"><a href="javascript:void(akst_share('107', 'http%3A%2F%2Fjc.ngo.org.uk%2Fblog%2F2007%2F02%2F08%2Fsendmail-8140-heloname%2F', 'Sendmail+8.14.0%3A+HeloName'));" title="E-mail this, post to del.icio.us, etc." id="akst_link_107">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://jc.ngo.org.uk/blog/2007/02/08/sendmail-8140-heloname/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Alerting users that their PCs are compromised</title>
		<link>http://jc.ngo.org.uk/blog/2007/01/09/alerting-users-that-their-pcs-are-compromised/</link>
		<comments>http://jc.ngo.org.uk/blog/2007/01/09/alerting-users-that-their-pcs-are-compromised/#comments</comments>
		<pubDate>Tue, 09 Jan 2007 15:34:01 +0000</pubDate>
		<dc:creator>nik</dc:creator>
		
		<category>spam</category>

		<category>phishing</category>

		<guid isPermaLink="false">http://jc.ngo.org.uk/blog/2007/01/09/alerting-users-that-their-pcs-are-compromised/</guid>
		<description><![CDATA[A great deal of spam is sent by &#8220;botnets&#8220;.  These are (typically) Windows PCs that have been compromised in some manner, and are now illicitly controlled by a third party.  This third party uses the network of thousands of PCs that they have compromised to:

Send spam
Host phishing sites
Carry out denial of service attacks

There [...]]]></description>
			<content:encoded><![CDATA[<p>A great deal of spam is sent by &#8220;<a href="http://en.wikipedia.org/wiki/Botnet">botnets</a>&#8220;.  These are (typically) Windows PCs that have been compromised in some manner, and are now illicitly controlled by a third party.  This third party uses the network of thousands of PCs that they have compromised to:</p>
<ol>
<li>Send spam</li>
<li>Host phishing sites</li>
<li>Carry out denial of service attacks</li>
</ol>
<p>There are many DNS based Black Lists (<a href="http://en.wikipedia.org/wiki/DNSBL">DNSBLs</a>) operated by numerous groups that aim to list the IP addresses of systems that have been compromised in this way.  This allows mail server operators to configure their systems to query these DNSBLs and reject messages that are being sent from a compromised system.</p>
<p>The problem with this approach is that it&#8217;s not visible to the owner of the compromised system.  They might notice that it&#8217;s behaving a little slower, or that their network connection doesn&#8217;t seem as fast as it was, but they&#8217;re not going to know why, because there&#8217;s no easy mechanism to alert them.</p>
<p>In a perfect world, Internet Service Providers would monitor these DNSBLs, notice when IP addresses of their customers appear on them, and terminate (or provide limited) service to that customer, along with appropriate assistance to help them clean their system.</p>
<p>In practice this rarely happens.</p>
<p>It occured to me that one way to make the fact that their PC has been compromised more visible to end users would be by enlisting the help of companies that host or provide online game environments.</p>
<p>For example, consider <a href="http://www.secondlife.com/">Second Life</a>, <a href="http://www.eve-online.com/">Eve</a>, or <a href="http://www.worldofwarcraft.com/">World of Warcraft</a>.  All huge, multi-player games/environments, to which millions of people connect every day.</p>
<p>If the companies that host these environments were to check the IP addresses of connecting systems against these DNSBLs, they could provide a warning to the player that it&#8217;s highly likely that their PC has been compromised, and that they should make sure their anti-virus is up to date, and so on.</p>
<p>Further, suppose you&#8217;ve got a PC and an <a href="http://www.xbox.com/">XBox</a> or Nintendo <a href="http://www.wii.com/">Wii</a> at home<sup>1</sup>.  Both of those game systems support online play.  And through a networking quirk that I don&#8217;t need to go in to here (NAT), it&#8217;s highly likely that the PC and the games console(s) are going to appear online with the same IP address.</p>
<p>So if the PC appears on a DNSBL the Wii or XBox is going to appear on that DNSBL too.  This provides an opportunity for Microsoft and Nintendo to check the IP address, and again, place a warning in the &#8220;dashboard&#8221; (<a href="thttp://en.wikipedia.org/wiki/Xbox_360#Dashboard">XBox dashboard</a>, <a href="http://en.wikipedia.org/wiki/Nintendo_Wi-Fi_Connection">Nintendo Wi-Fi Connection</a>) that their systems display to the user as they go online.</p>
<p>This could significantly raise the awareness of owners/operators of compromised PCs.</p>
<p><small><sup>1</sup> Guess what I got for Christmas :-)</small>
</p>
<p class="akst_link"><a href="javascript:void(akst_share('98', 'http%3A%2F%2Fjc.ngo.org.uk%2Fblog%2F2007%2F01%2F09%2Falerting-users-that-their-pcs-are-compromised%2F', 'Alerting+users+that+their+PCs+are+compromised'));" title="E-mail this, post to del.icio.us, etc." id="akst_link_98">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://jc.ngo.org.uk/blog/2007/01/09/alerting-users-that-their-pcs-are-compromised/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Identity theft</title>
		<link>http://jc.ngo.org.uk/blog/2006/12/14/identity-theft/</link>
		<comments>http://jc.ngo.org.uk/blog/2006/12/14/identity-theft/#comments</comments>
		<pubDate>Thu, 14 Dec 2006 21:35:03 +0000</pubDate>
		<dc:creator>nik</dc:creator>
		
		<category>spam</category>

		<category>guardian</category>

		<category>phishing</category>

		<category>identitytheft</category>

		<guid isPermaLink="false">http://jc.ngo.org.uk/blog/2006/12/14/identify-theft/</guid>
		<description><![CDATA[I&#8217;ve just discovered that I&#8217;ve been an unwitting participant in an identity theft.
But not, perhaps, in the way that you might imagine.

As already chronicled, some of my writing recently made it in to The Guardian.  As is the way of these things The Guardian like to pay their writers, so I sent off my [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just discovered that I&#8217;ve been an unwitting participant in an identity theft.</p>
<p>But not, perhaps, in the way that you might imagine.</p>
<p><a id="more-96"></a></p>
<p>As already chronicled, <a href="http://technology.guardian.co.uk/online/insideit/story/0,,1954392,00.html">some of my writing</a> recently made it in to <a href="http://www.guardian.co.uk/">The Guardian</a>.  As is the way of these things The Guardian like to pay their writers, so I sent off my details to their billing department and waited for the money to come rolling in (as you do).</p>
<p>It turns out that, by an odd coincidence, I&#8217;m not the only Nik Clayton to write for The Guardian.  I&#8217;m not even the first.  This other <a href="http://www.nickclayton.com/">Nick Clayton</a> (note the extra &#8220;c&#8221;) has written a number of columns for them, and they&#8217;re also about technology matters.</p>
<p>This much became apparent when I received an e-mail from The Guardian&#8217;s billing department today confirming that they had dispatched payment for two articles that Nick had written to me.  This e-mail contained Nick&#8217;s name and address details, and the payment details (amounts) for the articles he&#8217;s written.  But it also contains my bank details (account number and sort code).  The money hasn&#8217;t been deposited in to my account yet, but I imagine it soon will be.</p>
<p>A bit of Googling turned up Nick&#8217;s site, and a bit more Googling turned up a phone number, so I&#8217;ve called him, and had the slightly surreal experience of:</p>
<blockquote><p>Good evening.  Could I speak to Nick Clayton?</p></blockquote>
<blockquote><p>Speaking</p></blockquote>
<blockquote><p>Hi.  It&#8217;s Nik Clayton here&#8230;</p></blockquote>
<p>Now I know how <a href="http://www.davegorman.com/search.htm">Dave Gorman</a> must feel.</p>
<p>I&#8217;ve tried calling The Guardian&#8217;s billing department but the number given in the e-mail redirects to voice mail at the moment, so I&#8217;ll be in touch with them again tomorrow morning.</p>
<p>There are at least four risks here.</p>
<p>First, The Guardian&#8217;s billing department will apparently change the sort code, bank account, and e-mail address details that they hold for writers on the basis of a single unauthenticated e-mail.  My message to them was:</p>
<blockquote><p>Charles Arthur asked me to send my payment details for</p>
<p>http://technology.guardian.co.uk/online/insideit/story/0,,1954392,00.html</p>
<p>to you.</p>
<p>Sort code is XX XX XX, the account number is XXXXXXXX.</p>
<p>Please let me know if there are any problems.</p></blockquote>
<p>Second, when they pay their writers they send out an e-mail that contains, in clear, the writer&#8217;s name, reference number, full address, sort code, bank account number, and the values of the payments.  This may well be enough to carry out a social engineering attack.</p>
<p>Third, this could easily have gone the other way, and my bank account details could have been forwarded to Nick Clayton.  Had he been nefarious I imagine that (given that we share the same name) these could have been used to carry out a very effective identity theft.</p>
<p>Fourth, had I not been quite so honest I could probably have got away with this for some time &#8212; at the very least, continuing to earn interest on the money that The Guardian have paid.</p>
<p>Hmm.  I wonder if The Guardian would like to use this as the basis for an article&#8230;
</p>
<p class="akst_link"><a href="javascript:void(akst_share('96', 'http%3A%2F%2Fjc.ngo.org.uk%2Fblog%2F2006%2F12%2F14%2Fidentity-theft%2F', 'Identity+theft'));" title="E-mail this, post to del.icio.us, etc." id="akst_link_96">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://jc.ngo.org.uk/blog/2006/12/14/identity-theft/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Trigger happy hosting / spam @ The Guardian</title>
		<link>http://jc.ngo.org.uk/blog/2006/11/24/trigger-happy-hosting-spam-the-guardian/</link>
		<comments>http://jc.ngo.org.uk/blog/2006/11/24/trigger-happy-hosting-spam-the-guardian/#comments</comments>
		<pubDate>Fri, 24 Nov 2006 17:16:51 +0000</pubDate>
		<dc:creator>nik</dc:creator>
		
		<category>spam</category>

		<category>guardian</category>

		<guid isPermaLink="false">http://jc.ngo.org.uk/blog/2006/11/24/trigger-happy-hosting-spam-the-guardian/</guid>
		<description><![CDATA[Two spam related pieces of information today.
The first concerns what happens if you&#8217;re hosted at an ISP with an anti-spam policy, an itchy-trigger finger, and a support desk that is devoid of clue.
It appears as though the fine folk over at The Weekly had their infrastructure on a shared server at their ISP, HostingPlex.  [...]]]></description>
			<content:encoded><![CDATA[<p>Two spam related pieces of information today.</p>
<p>The first concerns what happens if you&#8217;re hosted at an ISP with an anti-spam policy, an itchy-trigger finger, and a support desk that is devoid of clue.</p>
<p>It appears as though the fine folk over at <a href="http://www.theweekly.co.uk/">The Weekly</a> had their infrastructure on a shared server at their ISP, <a href="http://www.hostingplex.com/">HostingPlex</a>.  That same server was then used by a spammer to send spam, which was caught by SpamCop.  Rather than track down the actual culprits, HostingPlex have locked The Weekly&#8217;s account, and are demanding US$150 to reinstate access to the server, while ignoring repeated e-mails from The Weekly that contain what appears to be pretty straightforward evidence of their innocence.</p>
<p>I paraphase somewhat, you can <a href="http://www.theweekly.co.uk/dunces/">read the The Weekly&#8217;s side of the story for yourself</a>.</p>
<p>In other news, &#8220;<a href="http://jc.ngo.org.uk/blog/2006/11/17/thoughts-on-stopping-spam/">Thoughts on stopping spam</a>&#8221; appeared, somewhat edited, <a href="http://technology.guardian.co.uk/online/insideit/story/0,,1954392,00.html">as an article in The Guardian</a> yesterday.</p>
<p><a id="more-88"></a><br />
<em>Update:</em> I hadn&#8217;t realised that this piece had made it in to the print edition as well as on the website.  Photographic proof (largely for my mother) below.</p>
<p><a href="http://jc.ngo.org.uk/blog/wp-content/uploads/2006/11/stopping-spam-guardian.png"><img src="http://jc.ngo.org.uk/blog/wp-content/uploads/2006/11/stopping-spam-guardian-small.png" /></a>
</p>
<p class="akst_link"><a href="javascript:void(akst_share('88', 'http%3A%2F%2Fjc.ngo.org.uk%2Fblog%2F2006%2F11%2F24%2Ftrigger-happy-hosting-spam-the-guardian%2F', 'Trigger+happy+hosting+%2F+spam+%40+The+Guardian'));" title="E-mail this, post to del.icio.us, etc." id="akst_link_88">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://jc.ngo.org.uk/blog/2006/11/24/trigger-happy-hosting-spam-the-guardian/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CAPTCHA farming</title>
		<link>http://jc.ngo.org.uk/blog/2006/11/21/captcha-farming/</link>
		<comments>http://jc.ngo.org.uk/blog/2006/11/21/captcha-farming/#comments</comments>
		<pubDate>Tue, 21 Nov 2006 16:51:04 +0000</pubDate>
		<dc:creator>nik</dc:creator>
		
		<category>spam</category>

		<guid isPermaLink="false">http://jc.ngo.org.uk/blog/2006/11/21/captcha-farming/</guid>
		<description><![CDATA[Charles Arthur&#8217;s wondering why spam came through his CAPTCHA system, and concludes that people are probably being paid to sit there and fill out CAPTCHAs.
There are a couple of other possibilities.  The first is that the CAPTCHA system he&#8217;s using might be compromised.  Some OCR systems can be surprisingly effective on them.
The second [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.charlesarthur.com/blog">Charles Arthur</a>&#8217;s wondering why spam came through his <a href="http://en.wikipedia.org/wiki/Captcha">CAPTCHA</a> system, and concludes that people are probably being paid to sit there and fill out CAPTCHAs.</p>
<p>There are a couple of other possibilities.  The first is that the CAPTCHA system he&#8217;s using might be compromised.  Some OCR systems can be surprisingly effective on them.</p>
<p>The second is his CAPTCHAs are being reproduced on another site for humans to solve.   The canonical example would be where a visitor to a porn site is shown a CAPTCHA and asked to solve it before they can, er, continue.  Unbeknownst to them, however, the CAPTCHA is actually coming from Charles&#8217; system, and the solution is then used to send him spam.  This is &#8220;CAPTCHA farming&#8221;.</p>
<p>Searching for &#8220;<a href="http://www.google.co.uk/search?q=captcha+porn&#038;ie=utf-8&#038;oe=utf-8&#038;rls=org.mozilla:en-US:official&#038;client=firefox-a">CAPTCHA porn</a>&#8221; turns up a number of stories about this over the past few years.
</p>
<p class="akst_link"><a href="javascript:void(akst_share('87', 'http%3A%2F%2Fjc.ngo.org.uk%2Fblog%2F2006%2F11%2F21%2Fcaptcha-farming%2F', 'CAPTCHA+farming'));" title="E-mail this, post to del.icio.us, etc." id="akst_link_87">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://jc.ngo.org.uk/blog/2006/11/21/captcha-farming/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Thoughts on stopping spam</title>
		<link>http://jc.ngo.org.uk/blog/2006/11/17/thoughts-on-stopping-spam/</link>
		<comments>http://jc.ngo.org.uk/blog/2006/11/17/thoughts-on-stopping-spam/#comments</comments>
		<pubDate>Fri, 17 Nov 2006 17:52:21 +0000</pubDate>
		<dc:creator>nik</dc:creator>
		
		<category>spam</category>

		<category>guardian</category>

		<guid isPermaLink="false">http://jc.ngo.org.uk/blog/2006/11/17/thoughts-on-stopping-spam/</guid>
		<description><![CDATA[I was pinged on IRC earlier today by someone who was having an e-mail discussion with Charles Arthur of the Guardian, in response to this article on Six steps to stopping spam.  Since I spend a lot of my day job doing anti-spam engineering for a large organisation, Robbie thought that I might have [...]]]></description>
			<content:encoded><![CDATA[<p>I was pinged on IRC earlier today by someone who was having an e-mail discussion with Charles Arthur of the <a href="http://www.guardian.co.uk/">Guardian</a>, in response to this article on <a href="http://technology.guardian.co.uk/weekly/story/0,,1948268,00.html">Six steps to stopping spam</a>.  Since I spend a lot of my day job doing anti-spam engineering for a large organisation, Robbie thought that I might have some useful comment.</p>
<p>I&#8217;ve fired an e-mail off, which I reproduce below, in the hope that it might be useful to a wider audience.</p>
<p><a id="more-86"></a></p>
<hr />Charles,</p>
<p>I see Robbie&#8217;s introduced me.  In my $dayjob I run the anti-spam  engineering for a very large (200,000+ users) financial institution.</p>
<p>There are a few things that I&#8217;d like to comment on in your article,  <a class="moz-txt-link-freetext" href="http://technology.guardian.co.uk/weekly/story/0,,1948268,00.html">http://technology.guardian.co.uk/weekly/story/0,,1948268,00.html</a>.  I  realise some of these are quotes from other people.</p>
<p>Oh, and in the spam-fighting community there&#8217;s the notion of the FUSSP  &#8212; that&#8217;s the Final Ultimate Solution to the Spam Problem.  So called  because periodically people pop up proclaiming that spam is now a solved  problem, if only everybody would adopt their scheme.  There&#8217;s a  taxonomoy of these at</p>
<p><a class="moz-txt-link-freetext" href="http://www.rhyolite.com/anti-spam/you-might-be.html">http://www.rhyolite.com/anti-spam/you-might-be.html</a></p>
<p>On &#8220;challenge-response&#8221; systems.  These are a phenomenally bad idea.  Primarily this is because on most spam the From: address is forged.  So  you receive a spam, and end up sending a challenge to the wrong person.   In effect, you are spamming them with your challenges.  This doesn&#8217;t help.</p>
<p>Even if spam didn&#8217;t forge addresses, by using a C-R system you are  essentially out-sourcing your anti-spam operation to a myriad of third  parties.  Do you trust all those third parties to reliably accept the  challenge?  I know a number of people who will automatically junk any  challenges they receive, and, similarly, a number of people who will  automatically reply to any challenge they receive, irrespective of  whether or not they sent the original message.</p>
<p>Oh, and there&#8217;s also the issue of C-R deadlock.  Support you and I both  run a C-R system.  I send you a message, and don&#8217;t whitelist you.  You  send me a challenge.  I send you a challenge in response to your  challenge&#8230; and neither one is ever responded to.</p>
<p>On ISP&#8217;s blocking other port 25 mail &#8212; this is a very appropriate  action to carry out.  However, it needs to be carried out in conjunction  with a second step &#8212; that is, accepting mail submission on port 587.  This is a standard port assignment, designed for exactly this situation.     Submission on port 25 and 587 are very similar &#8212; the difference is  that port 587 submission is <strong class="moz-txt-star"><span class="moz-txt-tag">*</span>designed<span class="moz-txt-tag">*</span></strong> to require authentication.</p>
<p>So the big, ISP to ISP type communication continues on port 25, and  individuals, such as Philip Parker, would configure their mail program  to send mail to their university using port 587, authenticating with his  university&#8217;s mail servers.</p>
<p>This has still to catch on in a big way, although some of the larger  ISPs are moving to support it (in the same way that port 25 blocking is  still in relative infancy).</p>
<p>On limiting e-mails sent per day &#8212; your correspondents are correct that  no single limit is going to be appropriate for everybody.  However, two  modifications make this more acceptable.</p>
<p>First, provide a mechanism for customers to change their limit, possibly  subject to some review.  Start them off with a low limit, let them  increase it to some capped value if necessary.</p>
<p>Second, change the granularity, so that instead of messages per day it  becomes messages per hour, or similar.</p>
<p>On writing a worm that kills botnets.  Hopefully the legal ramifications  of this are obvious, and don&#8217;t need to be stated.</p>
<p>What is missing, though, is the notion that ISPs might hold their  customers to greater account.  If your contract with the ISP allowed  them to levy a charge for any damage to their network or reputation  caused by your failure to keep your computer botnet free then customers  might start to realise the true cost, and invest more time and attention  in keeping their systems clean.</p>
<p>The &#8220;Adopt IPv6&#8243; comments seem misguided.  IPv6 helps solve many  problems (and Marshall&#8217;s comments in the article are quite correct) but  it will not significantly help in the fight against spam.</p>
<p>Something that wasn&#8217;t covered is better detection of abuse by ISPs, with  more help for cleaning customers who have become infected.</p>
<p>Botnet traffic patterns are relatively obvious (e.g., a customer host  that&#8217;s gone from sending 20 e-mails a day to 20,000).  When this is  detected the majority of the customer&#8217;s internet access should be shut  down.  Attempts by them to browse any web site should redirect them to a  site at the ISP that explains why their access has been curtailed, and  allows them to download tools that can help them clean their PC.</p>
<p>Obviously, this needs to be backed up with a mechanism to rapidly unlock  customers who are caught because their traffic patterns have changed  legitimately, but those should be few and far between.</p>
<p>Finally, to respond to your comment to Robbie:</p>
<p>Charles Arthur wrote:<br />
>> thanks for your letter. Interesting, though it seems to me that<br />
>> increasing the time taken for mail transfer from a few milliseconds<br />
>> to several hours would have very serious effects; and you&#8217;d have to<br />
>> be certain you were tarpitting the right IPs.<br />
>><br />
>> Most of all, it wouldn&#8217;t stop spam from botnets, which are<br />
>> individual PCs.</p>
<p>I assume Robbie&#8217;s talking about delaying all inbound connections.</p>
<p>Broadly, there are three ways to do this.</p>
<p>If you&#8217;re a public spirited individual, and you have a lot of resources  at your disposal, you may use various public lists of spamming IP  addresses, and wait for connections from those IP addresses.  Then you  just respond to them v-e-r-y  s-l-o-w-l-y.</p>
<p>Surprisingly, that does tend to work, at least a little, as it results  in the spammers needing larger and larger botnets to send the same  amount of spam.  Sadly, it seems that acquiring larger and larger  botnets is not proving to be too much of a problem, so this is, at best,  a delaying tactic.</p>
<p>You may choose to adopt what&#8217;s called &#8220;greylisting&#8221;.  Essentially, you  have your servers maintain a record of IP address/sender address that  you see.</p>
<p>If you receive a connection from an IP address and sender that you&#8217;ve  not previously heard from, you temporarily reject the message, and note  that you&#8217;ve done so.</p>
<p>If you receive a connection from an IP address and sender that you&#8217;ve  previously heard from, you accept the message (or, at least, allow it to  go through to the next stage of the spam filtering).</p>
<p>The thinking here is that most spam-sending software, when it receives a  temporary rejection, will treat that as a permanent failure, and move on.</p>
<p>Well behaved, non-spam sending software will, on the other hand, hang on  the message, and try to send it to you again at some point in the near  future.</p>
<p>This is, as you noted, introducing a deliberate delay in to the mail  flow, which may not be acceptable.  Note, though, that you only do this  once per IP/sender address combination, so it&#8217;s only the first message  that is ever delayed.</p>
<p>The third way to do this is to insert delays at the protocol level,  taking advantage of the fact that much spam sending software tries to  get spam out as quickly as possible, and will ignore any deliberate  delays you introduce.  These delays, which may be of the order of a few  seconds, or tens of seconds, don&#8217;t introduce significant delay in to the  mail flow for legitimate senders, but are much more damaging to botnets.</p>
<p>I hope all that&#8217;s helpful.  Please don&#8217;t hesitate to get in touch if  you&#8217;ve got any other spam related (or general e-mail) queries.</p>
<p>N <!--more-->
</p>
<p class="akst_link"><a href="javascript:void(akst_share('86', 'http%3A%2F%2Fjc.ngo.org.uk%2Fblog%2F2006%2F11%2F17%2Fthoughts-on-stopping-spam%2F', 'Thoughts+on+stopping+spam'));" title="E-mail this, post to del.icio.us, etc." id="akst_link_86">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://jc.ngo.org.uk/blog/2006/11/17/thoughts-on-stopping-spam/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
