Skip to content

Spammers Killed My Catchall Address

It’s amazing what you find when digging through old backups. Another item I found was my ancient collection of mailboxes for my catchall address. In early February 2007 I finally surrendered to the spammers that were hammering my mail server. There was no hint that the spam rate was going to decrease, so the catchall went away.

This chart shows the change, from 61 messages in January 2002, to more than 85,000 in January 2007. It took until May 2002 to break 100; 11 months later to break 1,000; then until October 2004 to shatter the 10K barrier with 12,428.

If I get a few minutes free (ha!) I’ll re-enable to catchall to see how much garbage comes through.

Comment Spam Rate

As I mentioned yesterday when I noticed I passed the 30,000 spam comment threshold, the comment spam rate on the blog has gone through the roof. I dug out some of my old backups of my WordPress database and generated this chart showing how many spam comments I’ve received. This chart is from December 14, 2006 (8,105 spam comments) through today (31,601 spam comments).

This chart shows the daily rate of how many spam comments have been received. The peak before today was December 14-19, when I was getting 143 spam messages per day. Since yesterday the rate has been 1,154 per day.

Akismet 30,000th Spam Comment

I just deleted my 30,000th comment spam. I have no idea how high the count would have been had I not put into place several techniques that automatically block bad commenters. Those that fall into my traps don’t even get entered into the Akismet system, and so aren’t counted.

(Addendum 9:32pm: The count is now up to 30,447. That comes to one new spam comment every 63 seconds.)

Protecting WordPress With Fingerprints

I. Background

Recent attacks against the WordPress Content Management System have prompted reminders of the recommendation that you should make sure you are running the newest version of the WordPress system. When you download WordPress, you can also download the WordPress MD5 signature so that you can double check that the downloaded file has not been damaged during the download.

There are many algorithms available that can compute a file’s signature. The signature is generated by reading the file and running the data in the file through an algorithm. If even one character in a file is changed, such as a space added, or a comma replaced with a period, the signature will change to a radically different string. So, if the signature you generate on your computer after downloading a file is different from the signature that the vendor provides, that likely means the file has been corrupted during the download. A common time this is seen is when you upload a compressed file (.zip or .gz) to a web server in ascii (text) mode instead of in binary mode.

So, let’s say you’re upgrading or installing WordPress on your server. You compare the MD5 signature provided by WordPress (for 2.5.1 the MD5 signature is b1a40387006e54dcbd963d0cb5da0df4). What you would do under Linux is type the command md5sum wordpress-2.5.1.tar.gz and you should get that random-looking sequence of characters. If you don’t get b1a40387006e54dcbd963d0cb5da0df4, there is a problem.

But what happens after you uncompress and install the software? What if a cracker gets in and messes with your system? This is where file integrity comes into play. Historically (like the 1980’s and 1990’s) computer viruses would attach themselves to applications and documents on your computer, so there were two steps of protection: (1) a virus scanner which looked for actual code in files on the system; and (2) a file scanner to see if files has been changed.

Today that second form of scanning has fallen out of favor. But with the increasing number and complexity of WordPress attacks, I think having a fingerprint of the more than 500 files that are a part of WordPress is a valid security method. Fingerprinting WordPress can also help protect you against hardware failure.

I’ve written a set of scripts that can be run on a Linux system. (You could also add the WordPress files to your TripWire settings or other file integrity tool.) You simply provide the full directory path to the base of your WordPress install, and then two files will be generated in the correct format: a MD5 and a SHA fingerprints of the “official” WordPress files downloaded from WordPress.org.

Then you regularly run the check program. Suggestion: add the check program to a cron schedule so it will run automatically.

This is version 1.0 of this system. Definitely let me know if you find any problems or have any suggestions with this.

II. Installation

This system has only been tested on Linux (specifically CentOS 4.6). Please let me know if your system works or not. It only requires md5sum and shasum. This tool requires a familiarity with the Linux shell.

  1. Download the software.
  2. Generate the md5sum and shasum fingerprints for the .gz file. The MD5 fingerprint is “1bc778dc72741dbaa942b9fcd81e832b” and the sha fingerprint is “e4f1ef0f53397d820d8c07fee1786823d6a70cb2” Important: If you are unable to verify the fingerprints for the download, don’t continue! You will just be frustrated!
  3. Create a new directory on the web server.
  4. Unzip the software in that directory.
  5. Make sure that both version-check-251.sh and wordpress-check.sh are able to be executed. (chmod 700 or 755).
  6. Find the full path to your WordPress installation. This will vary based on each server setup. If you go to the folder that has your wp-config.php file and type the “pwd” command, that is probably the directory information you need. Common directories are /var/www/html/www.example.com/ or /var/www/docs/www.example.com/ or /var/htdocs/www.example.com/. The version-check-251.sh script will tell you if it can’t find the WordPress files.
  7. Change to the directory that you installed the scripts in.
  8. Type: “./version-check-251.sh (the full path found in step 4)”.
  9. Then type “./wordpress-check.sh” to check the fingerprints with the actual files in your installation. If there are any problems, it will be very obvious. Hopefully you will only see status messages.
  10. If you want to have the check script run by cron, use the wordpress-check-cron.sh script. The only difference in the two scripts is the cron script doesn’t print status messages.

III. Common Causes of Fingerprint Failures

If you’ve made any changes to any of the files, you will get an error. Simply update the domain-name.md5sum.txt and domain-name.shasum.txt files. The command to generate the new fingerprint is:

md5sum full-path-to-the-file
or
shasum full-path-to-the-file

Another common problem is not updating the default and classic themes (/wp-content/themes/) when updating WordPress.

And lastly, it is possible that Akismet may release a newer version of the plugin before WordPress itself is updated. Simply generate a new fingerprint of the new version of the plugin.

Updates

When WordPress gets updated, I will release a new version of the fingerprints. To stay informed about updates, subscribe to my RSS feed.

Comment Spam Increase This Week

Has anyone else noticed a large increase in the amount of comment spam that Akismet is missing this week? I’ve tagged and deleted more comment spam in the past week than I have in the past 6 months. I would guess across all of my WordPress sites, I’m manually tagging 10 messages a day. That is a huge increase. Are the spammers simply attacking at a higher rate? Or is Akismet not as effective as it used to be?

And why can’t Akismet learn that a comment in the format of: “eight words, all lowercase, all at least 7 letters long, a link inside an anchor tag, then the close tag, then a URL” is spam?

A setting you can make to help under WordPress 2.5: Go to the Settings tab, then the Discussion sub-tab. Under “Comment Moderation” have a “1” for “Hold a comment in the queue if it contains __ or more links.”

Announcing Login Error Cleanup

I have released a new WordPress plugin today Login Error Cleanup. When you attempt to login to a WordPress account, you are given fairly specific error messages if you enter the username or password incorrectly. This can be helpful to an attacker if they are trying to guess usernames and/or passwords. This plugin simply returns the message “Error” if the combination submitted is not valid.

This plugin is generally only going to be useful for people running a blog that only has a few authors. “Security by obscurity” is generally not the greatest security method, but it has its place. You would want to use this plugin if the default WP super user is not the regular and expected “admin” user login, and your day to day blogging and commenting is done as a regular author user. If your admin user is not “admin,” an attacker will have a more difficult time hacking and cracking your WordPress. If anything, automated attacks would be much more likely to fail.

What Is This? A WordPress Attack Using “PLM”

One of my sites had this very odd entry in it’s log from overnight: (actual URL changed)

http://www.example.com/2005/06/24/title-in-here/%2B%25255bPLM=0%25255d%2BGET%2Bhttp:///2005/06/24/title-in-here/%2B%25255b0,16925,26735%25255d%2B-%25253e%2B%25255bN%25255d%2BPOST%2Bhttp:/wp-comments-post.php%2B%25255b0,0,349%25255d

If you do the hexadecimal recoding a couple times you end up with:

http://www.example.com/2005/06/24/title-in-here/+[PLM=0]+GET+http:///2005/06/24/title-in-here/+[0,16925,26735]+->+[N]+POST+http:/wp-comments-post.php+[0,0,349]

And if you assume the plus marks are actually spaces:

http://www.example.com/2005/06/24/title-in-here/ [PLM=0] GET http:///2005/06/24/title-in-here/ [0,16925,26735] -> [N] POST http:/wp-comments-post.php [0,0,349]

What is this trying to do? The only software I can find referring to PLM is Fred’s ImageMagick Scripts, which I don’t think is right.

Updated information 2008-03-29 11:55am

There have been a lot of requests like this. The first request was on March 7th, 2008 at 11:39:46, and the most recent (the one listed above) was March 29, 2008 at 03:43:01. From these IP addresses:
1 125.93.180.155
1 198.136.32.82
2 212.35.107.52
1 216.171.98.77
1 218.75.120.75
1 24.179.9.153
1 60.247.100.2
1 61.180.239.250
1 71.107.24.99
3 75.127.78.171
1 77.108.76.170
1 78.39.204.114
1 82.198.250.80
1 82.236.218.101
1 85.5.237.228
1 98.25.110.0

The user agent is also varied:
3 “Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; .NET CLR 1.1.4322)”
5 “Mozilla/4.0 (compatible; Powermarks/3.5; Windows 95/98/2000/NT)”
6 “Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8b2) Gecko/20050224 Firefox/1.0+”
4 “Mozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.3a) Gecko/20021207 Phoenix/0.5”
1 “Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0”

Is this actually not an attack, but just some web browsing tool or toolbar that is doing funky things?

Updated information 2008-03-29 12:05pm

Hmmm, another of of my sites also has this type of request in its log.

Huge New Spam Run Starting Up

While checking my logs from overnight, I saw a huge increase in the amount of spam attempts coming in. Generally I have between 50 and 100 spam attempts per hour coming in. Yesterday, the number started increasing, and is currently running at around 3,000 rejected attempts per hour. Here’s the chart of the number of blocked attempts over the past three days:

And here is the data just for Friday, March 21, showing the botnet was activated at 8:50pm Eastern time:

“Guess who’s searching for you?” style spam is back

A few years ago, there was some spam scam outfit that would send out emails proclaiming “An individual at our website at our website is looking for information regarding: (your email address)” You’d go to the site, pay some money, and find out they really didn’t have any info about you.

I received a spam very much like that today, from EHB126.com. Links inside the scam all refer to ehb125.com. Whois lookups show that all numbers from EHB101.com to EHB136.com are registered to the same outfit: ConsumerBase LLC, 1007 Church St. 5th Floor, Evanston, IL 60201, at (847) 866-9600.

From the spam footer:

We support ethical practices. This email was sent to -address- by ConsumerBase LLC because you have not previously unsubscribed to our email solicitations. By clicking on any link in this email, except the unsubscribe one below, you are reaffirming your interest in receiving future emails. Please know that we respect your right to be taken off our email lists. Removal is automatic through our system. Please click here to start that process.

Well, let’s see how much is wrong with that statement. (1) They’ve not mailed me before. (2) They confirm they use opt-out to gather their spam lists, not opt-in. (3) Removal is automatic, yet the unsubscribe link only starts the process?

I also have never gave “Affirmative Consent” that my email address could be used by this company. In fact the address they sent their garbage to has never been used for any kind of subscription. And interestingly enough, “Affirmative Consent” is exactly 180 degrees backwards from what the footer of this messages seems to proclaim. “Affirmative Consent” sounds like confirmed opt-in, not opt-out.

Andy Sernovitz has also run across ConsumerBase before: ConsumerBase, ethics aren’t a game.

I have proactively blocked email from all domains in the range of EHB101.com through EHB136.com from abusing my server. IP addresses include: 69.30.254.114 to .125; and 69.30.202.18 to .44 (but not some in the .30 range)
ehb101.com has address 69.30.254.120
ehb101.com has address 69.30.254.118
ehb101.com has address 69.30.254.114
ehb101.com has address 69.30.254.119
ehb101.com has address 69.30.254.116
ehb101.com has address 69.30.254.117
ehb101.com has address 69.30.254.115
ehb101.com has address 69.30.254.121
ehb101.com mail is handled by 10 ehb101.com.
ehb102.com has address 69.30.254.115
ehb102.com mail is handled by 10 ehb102.com.
ehb103.com has address 69.30.254.116
ehb103.com mail is handled by 10 ehb103.com.
ehb104.com has address 69.30.254.117
ehb104.com mail is handled by 10 ehb104.com.
ehb105.com has address 69.30.254.118
ehb105.com mail is handled by 10 ehb105.com.
ehb106.com has address 69.30.254.119
ehb106.com mail is handled by 10 ehb106.com.
ehb107.com has address 69.30.254.120
ehb107.com mail is handled by 10 ehb107.com.
ehb108.com has address 69.30.254.121
ehb108.com mail is handled by 10 ehb108.com.
ehb109.com has address 69.30.254.122
ehb109.com mail is handled by 10 ehb109.com.
ehb110.com has address 69.30.254.123
ehb110.com mail is handled by 10 ehb110.com.
ehb111.com has address 69.30.254.124
ehb111.com mail is handled by 10 ehb111.com.
ehb112.com has address 69.30.254.125
ehb112.com mail is handled by 10 ehb112.com.
ehb113.com has address 69.30.202.43
ehb113.com mail is handled by 10 ehb113.com.
ehb114.com has address 69.30.202.18
ehb114.com mail is handled by 10 ehb114.com.
ehb115.com has address 69.30.202.19
ehb115.com mail is handled by 10 ehb115.com.
ehb116.com has address 69.30.202.20
ehb116.com mail is handled by 10 ehb116.com.
ehb117.com has address 69.30.202.21
ehb117.com mail is handled by 10 ehb117.com.
ehb118.com has address 69.30.202.22
ehb118.com mail is handled by 10 ehb118.com.
ehb119.com has address 69.30.202.23
ehb119.com mail is handled by 10 ehb119.com.
ehb120.com has address 69.30.202.24
ehb120.com mail is handled by 10 ehb120.com.
ehb121.com has address 69.30.202.25
ehb121.com mail is handled by 10 ehb121.com.
ehb122.com has address 69.30.202.26
ehb122.com mail is handled by 10 ehb122.com.
ehb123.com has address 69.30.202.27
ehb123.com mail is handled by 10 ehb123.com.
ehb124.com has address 69.30.202.28
ehb124.com mail is handled by 10 ehb124.com.
ehb125.com has address 69.30.202.29
ehb125.com mail is handled by 10 ehb125.com.
ehb126.com has address 69.30.202.30
ehb126.com mail is handled by 10 ehb126.com.
ehb127.com has address 69.30.202.44
ehb127.com mail is handled by 10 ehb127.com.
ehb128.com has address 69.30.202.34
ehb128.com mail is handled by 10 ehb128.com.
ehb129.com has address 69.30.202.35
ehb129.com mail is handled by 10 ehb129.com.
ehb130.com has address 69.30.202.36
ehb130.com mail is handled by 10 ehb130.com.
ehb131.com has address 69.30.202.37
ehb131.com mail is handled by 10 ehb131.com.
ehb132.com has address 69.30.202.38
ehb132.com mail is handled by 10 ehb132.com.
ehb133.com has address 69.30.202.39
ehb133.com mail is handled by 10 ehb133.com.
ehb134.com has address 69.30.202.40
ehb134.com mail is handled by 10 ehb134.com.
ehb135.com has address 69.30.202.41
ehb135.com mail is handled by 10 ehb135.com.
ehb136.com has address 69.30.202.42
ehb136.com mail is handled by 10 ehb136.com.

The IP addresses are all assigned to Wholesaleinternet.com. Abuse report filed with them.

TV Converter Box Coupon

I still watch TV using regular old rabbit ears. We have two TVs in the house, one in the living room, and one in the basement. They work fine, and are each over 15 years old. So a couple months ago when the U.S. Department of Commerce allowed people to apply for up to two $40 coupons for a digital to analog converter for older TV sets, I applied. The coupons are only good for three months, and there is a limited supply of them. I received the coupons today, but they expire on June 6, 2008. It took the government nearly two weeks to get them shipped out. Bizarre. Or government efficiency, you decide.

The “coupons” look like gift cards (or credit cards). They are bright red and are labeled “TV Converter Box Coupon Program.” There is a hologram on the front that says “Security” in a circle, with an eagle’s head in the center, and the letter “s” repeated in the background. The back of the coupon says “It is illegal to sell, duplicate or tamper with this coupon. This coupon will not be replaced if lost or stolen. Retailer Support Center: www.ntiadtv.gov.

If you’d like to apply for your coupons, or learn more about this program, go to www.DTV2009.gov.