Re: spamassassin rule to combat phishing

2014-10-29 Thread francis picabia
I've tested the rule:

uri URI_MYDOMAIN_PHISH
m;^https?://(?:[^./]+\.)*example\.com[^/?];i


is catching this sample newletter link:

Oct 29 09:38:50.368 [24608] dbg: rules: ran uri rule
URI_MYDOMAIN_PHISH == got hit: http://example.com;

Complete email body content in test of newsletter link:

a target=_blank
href=http://www.environmental-expert.com/redirectnewsletter_login.asp?UR=
L=http://www.environmental-expert.comloginemail=u...@example.comloginc=
ode=123456utm_source=Articles_Waste_Recycling_01112014utm_medium=em=
ailutm_campaign=newslettersutm_content=logoclickimg
src=http://www.environmental-expert.com/newsletter/images/logo_dark_smal=
l.gif
width=200 height=83 border=0/a


I wonder how the RE can be tweaked to not match this case?
I still don't understand the ?: part.


Re: spamassassin rule to combat phishing

2014-10-29 Thread francis picabia
On Wed, Oct 29, 2014 at 10:27 AM, francis picabia fpica...@gmail.com
wrote:

 I've tested the rule:

 uri URI_MYDOMAIN_PHISH
 m;^https?://(?:[^./]+\.)*example\.com[^/?];i


 is catching this sample newletter link:

 Oct 29 09:38:50.368 [24608] dbg: rules: ran uri rule
 URI_MYDOMAIN_PHISH == got hit: http://example.com;

 Complete email body content in test of newsletter link:

 a target=_blank
 href=http://www.environmental-expert.com/redirectnewsletter_login.asp?UR=
 L=http://www.environmental-expert.comloginemail=u...@example.comloginc=
 ode=123456utm_source=Articles_Waste_Recycling_01112014utm_medium=em=
 ailutm_campaign=newslettersutm_content=logoclickimg
 src=http://www.environmental-expert.com/newsletter/images/logo_dark_smal=
 l.gif
 width=200 height=83 border=0/a


 I wonder how the RE can be tweaked to not match this case?
 I still don't understand the ?: part.


I don't know if it is the best solution, but adding  to the non-matching
clause has helped for the false positve and still catches the phishing
example:

uri URI_MYDOMAIN_PHISH   m;^https?://(?:[^./]+\.)*example\.com[^/?];i


Re: spamassassin rule to combat phishing

2014-10-28 Thread francis picabia
On Mon, Oct 27, 2014 at 4:55 PM, John Hardin jhar...@impsec.org wrote:

 On Mon, 27 Oct 2014, francis picabia wrote:

uri  URI_EXAMPLE_EXTRA  m;^https?://(?:www\.)?example\.com[^/?];i


 However another spoofed message was received today and the rule
 did not capture it.

 If I want to detect something in the form of:
 random_server.example.com.junk
 I need to wildcard the first bit.  Would that be:

 uri  URI_EXAMPLE_EXTRA  m;^https?://(?:.*\.)?example\.com[^/?];i

 I don't understand what the question mark and colon does inside the ( )
 I thought it followed an optional char or expression.  Should it be
 like this?

 uri  URI_EXAMPLE_EXTRA  m;^https?://(.*\.)?example\.com[^/?];i


 (?:) means group, don't remember the match. () remembers what's matched
 for future use in the RE (e.g. to check for repeated strings like
 abcabcabcabc.

 Try this:

   uri  URI_EXAMPLE_EXTRA  m;^https?://(?:[^./]+\.)*example\.com[^/?];i


Once again, thanks for the RE coding.

I found a false positive it captured with my attempt at this :

 a href=
http://www.newslettersite.com/redirectnewsletter_login.asp?URL=http://www.secondsite.com/PYB/contact_us.asploginemail=u...@example.comlogincode=123456utm_source=Articles_Air_01112014utm_medium=emailutm_campaign=newsletterutm_content=contactus


I've tested your rule with that and it does not tag for the above.
Great.  Hopefully useful to others facing domain spoofs in phishing.


Re: spamassassin rule to combat phishing

2014-10-28 Thread francis picabia
On Tue, Oct 28, 2014 at 11:47 AM, francis picabia fpica...@gmail.com
wrote:



 On Mon, Oct 27, 2014 at 4:55 PM, John Hardin jhar...@impsec.org wrote:

 On Mon, 27 Oct 2014, francis picabia wrote:

uri  URI_EXAMPLE_EXTRA  m;^https?://(?:www\.)?example\.com[^/?];i


 However another spoofed message was received today and the rule
 did not capture it.

 If I want to detect something in the form of:
 random_server.example.com.junk
 I need to wildcard the first bit.  Would that be:

 uri  URI_EXAMPLE_EXTRA  m;^https?://(?:.*\.)?example\.com[^/?];i

 I don't understand what the question mark and colon does inside the ( )
 I thought it followed an optional char or expression.  Should it be
 like this?

 uri  URI_EXAMPLE_EXTRA  m;^https?://(.*\.)?example\.com[^/?];i


 (?:) means group, don't remember the match. () remembers what's matched
 for future use in the RE (e.g. to check for repeated strings like
 abcabcabcabc.

 Try this:

   uri  URI_EXAMPLE_EXTRA  m;^https?://(?:[^./]+\.)*example\.com[^/?];i


 Once again, thanks for the RE coding.

 I found a false positive it captured with my attempt at this :

  a href=
 http://www.newslettersite.com/redirectnewsletter_login.asp?URL=http://www.secondsite.com/PYB/contact_us.asploginemail=u...@example.comlogincode=123456utm_source=Articles_Air_01112014utm_medium=emailutm_campaign=newsletterutm_content=contactus
 

 I've tested your rule with that and it does not tag for the above.
 Great.  Hopefully useful to others facing domain spoofs in phishing.

 I thought this was a representative test case, but apparently
there is something triggering a false positive when the
email is a newsletter which embeds a user's email within URLs.

In the sample I've seen, there are 34 such possible links which may have
triggered the issue, but I don't know which.

I ran the quarantined sample through spamassassin -D and it shows:

Oct 28 16:24:01.391 [28945] dbg: rules: ran uri rule URI_MYDOMAIN_PHISH
== got hit: http://example.com;

On prior lines in the trace I see other uri rules getting hits, but it
seems to be about different URLs.  The entire body of the email is base64
encoded.  Extracting that part and running base64 -d I am not finding
the hit described by SA trace.

This is my method:

zcat spam-jUVZBDml0wS5.gz | grep 'http://example.com'

So the URL is not in the non-base64 part.

zcat spam-jUVZBDml0wS5.gz  /tmp/spamfull
cp /tmp/spamfull /tmp/spam64
vi /tmp/spam64  (to remove headers)
base64  -d /tmp/spam64  | grep 'http://example.com'

(no matchs)

Double checked with:

spamassassin -D -lint  /tmp/spamfull 21 | grep http://example.com

nothing is output except the line above with URI_MYDOMAIN_PHISH.

Is there any suggestion on how to nail down where the match is happening?


Re: spamassassin rule to combat phishing

2014-10-27 Thread francis picabia
On Fri, Sep 19, 2014 at 2:59 PM, John Hardin jhar...@impsec.org wrote:

 On Fri, 19 Sep 2014, francis picabia wrote:

  On Tue, Sep 16, 2014 at 5:27 PM, John Hardin jhar...@impsec.org wrote:

  On Tue, 16 Sep 2014, francis picabia wrote:

  Hello,


 We just received the most authentic looking phishing I've seen. It was
 professionally written, included a nice signature in the style used by
 people at my workplace, and the target link was an exact replica of an
 ezproxy website we run.

 The URL domain was only different by a few letters.  I'm thinking we
 will
 see more of these.  So here is a question perhaps someone can solve and
 many of us can benefit from...

 How can I make a uri rule which matches

 example.com.junk/
 but does not match
 example.com/


   uri  URI_EXAMPLE_EXTRA  m;^https?://(?:www\.)?example\.com[^/?];i



 That's a great one liner. I'm glad I asked.  Thank you for this.


 Warning: I did not actually test it. Please test it before putting it into
 production.


Yes, understood.  I did test and it seemed to work OK.

However another spoofed message was received today and the rule
did not capture it.

If I want to detect something in the form of:
random_server.example.com.junk
I need to wildcard the first bit.  Would that be:

uri  URI_EXAMPLE_EXTRA  m;^https?://(?:.*\.)?example\.com[^/?];i

I don't understand what the question mark and colon does inside the ( )
I thought it followed an optional char or expression.  Should it be
like this?

uri  URI_EXAMPLE_EXTRA  m;^https?://(.*\.)?example\.com[^/?];i


Re: spamassassin rule to combat phishing

2014-10-27 Thread John Hardin

On Mon, 27 Oct 2014, francis picabia wrote:


  uri  URI_EXAMPLE_EXTRA  m;^https?://(?:www\.)?example\.com[^/?];i


However another spoofed message was received today and the rule
did not capture it.

If I want to detect something in the form of:
random_server.example.com.junk
I need to wildcard the first bit.  Would that be:

uri  URI_EXAMPLE_EXTRA  m;^https?://(?:.*\.)?example\.com[^/?];i

I don't understand what the question mark and colon does inside the ( )
I thought it followed an optional char or expression.  Should it be
like this?

uri  URI_EXAMPLE_EXTRA  m;^https?://(.*\.)?example\.com[^/?];i


(?:) means group, don't remember the match. () remembers what's matched 
for future use in the RE (e.g. to check for repeated strings like 
abcabcabcabc.


Try this:

  uri  URI_EXAMPLE_EXTRA  m;^https?://(?:[^./]+\.)*example\.com[^/?];i


--
 John Hardin KA7OHZhttp://www.impsec.org/~jhardin/
 jhar...@impsec.orgFALaholic #11174 pgpk -a jhar...@impsec.org
 key: 0xB8732E79 -- 2D8C 34F4 6411 F507 136C  AF76 D822 E6E6 B873 2E79
---
  ...the Fates notice those who buy chainsaws...
  -- www.darwinawards.com
---
 4 days until Halloween


Re: spamassassin rule to combat phishing

2014-09-19 Thread francis picabia
On Tue, Sep 16, 2014 at 5:27 PM, John Hardin jhar...@impsec.org wrote:

 On Tue, 16 Sep 2014, francis picabia wrote:

  Hello,

 We just received the most authentic looking phishing I've seen. It was
 professionally written, included a nice signature in the style used by
 people at my workplace, and the target link was an exact replica of an
 ezproxy website we run.

 The URL domain was only different by a few letters.  I'm thinking we will
 see more of these.  So here is a question perhaps someone can solve and
 many of us can benefit from...

 How can I make a uri rule which matches

 example.com.junk/
 but does not match
 example.com/


   uri  URI_EXAMPLE_EXTRA  m;^https?://(?:www\.)?example\.com[^/?];i


 That's a great one liner. I'm glad I asked.  Thank you for this.


spamassassin rule to combat phishing

2014-09-16 Thread francis picabia
Hello,

We just received the most authentic looking phishing I've seen.
It was professionally written, included a nice signature in the style
used by people at my workplace, and the target link was an exact
replica of an ezproxy website we run.

The URL domain was only different by a few letters.  I'm thinking
we will see more of these.  So here is a question perhaps someone
can solve and many of us can benefit from...

How can I make a uri rule which matches

example.com.junk/
but does not match
example.com/

The goal is to score fake URLs containing our domain, and thus
an email with a link to something like http://example.com.tk/ wouldn't be
delivered.


Re: spamassassin rule to combat phishing

2014-09-16 Thread John Hardin

On Tue, 16 Sep 2014, francis picabia wrote:


Hello,

We just received the most authentic looking phishing I've seen. It was 
professionally written, included a nice signature in the style used by 
people at my workplace, and the target link was an exact replica of an 
ezproxy website we run.


The URL domain was only different by a few letters.  I'm thinking we 
will see more of these.  So here is a question perhaps someone can solve 
and many of us can benefit from...


How can I make a uri rule which matches

example.com.junk/
but does not match
example.com/


  uri  URI_EXAMPLE_EXTRA  m;^https?://(?:www\.)?example\.com[^/?];i

The goal is to score fake URLs containing our domain, and thus an email 
with a link to something like http://example.com.tk/ wouldn't be 
delivered.


--
 John Hardin KA7OHZhttp://www.impsec.org/~jhardin/
 jhar...@impsec.orgFALaholic #11174 pgpk -a jhar...@impsec.org
 key: 0xB8732E79 -- 2D8C 34F4 6411 F507 136C  AF76 D822 E6E6 B873 2E79
---
  From the Liberty perspective, it doesn't matter if it's a
  jackboot or a Birkenstock smashing your face. -- Robb Allen
---
 Tomorrow: the 227th anniversary of the signing of the U.S. Constitution