Memory of a Fluorescent Light

When I was growing up the bedroom closet in my grandparents’ house had a fluorescent light. Not the modern compact fluorescent type, either—this was a long tube. The light was slow to turn on. You’d flip the switch and it would sometimes flicker for 3 or 5 seconds and make audible clicking noises before turning on fully. We used to open the closet and turn on the light just so we could see how long it would take.

Posted in All | Leave a comment

HTTPS User Guide

In light of my previous post where I talk about how it’s relatively easy to commit a man-in-the-middle attack, I feel like I should explain how people can protect themselves.

If you’re typing information that you consider private (typing your SSN or typing a password, especially for webmail or your bank), use this checklist:

  1. Go to the login page (the page that asks you to type your password), but don’t type anything yet!
  2. Look at the address bar at the top of your web browser.
  3. Inspect the web page address and make sure it’s correct. For example, if you’re logging into Bank of America’s website then the address should be https://www.bankofamerica.com/ and not https://www.bankofamerica.youcantrustus.com/ and not https://www.bankofamerica.com@3468664375/ (the difference between these is subtle, but extremely important)
  4. There should either be blue or green text, and/or a blue or green background in the address bar. Sometimes your browser will even show you the name of the company who operates the website; this gives you an extra level of trust.
  5. There should not be a red X, a broken lock, a black slash, a yellow caution triangle, etc.

That’s it. Beyond that you’re trusting that the owner of the website you’re using knows what they’re doing and is competent.

Posted in All, Computers | Leave a comment

Man-in-the-Middle Attacking

Fair warning: This is somewhat technical.

Introduction

I recently wondered how hard it is to perform a man-in-the-middle attack. The login forms for Facebook, Twitter, Pandora and countless others submit login credentials using HTTPS, however, the forms themselves are served using HTTP (by default, anyway—many web sites allow users to choose an HTTPS login form).

The theoretical danger with a man-in-the-middle attack is that a malicious user could alter the content of web pages as they’re sent down to your computer. Login forms could be changed to submit credentials insecurely, thereby exposing your username and password. But just how feasible is it?

Step 1 – Trick the Victim’s Computer Into Routing Traffic Through Your Computer

This turned out to be much easier than I was expecting. I used a program called Ettercap1, but there are other options. It has a GUI. I scanned my local network, picked out the IP of some poor sod (actually just another one of my computers), and chose the ARP poisoning option. Boom, all of poor sod’s internet traffic was being routed through my computer.

Step 2 – Serve the Victim An Altered Login Page

One way to accomplish this is to use DNS spoofing to make the victim think the attacker’s computer is “www.example.com”2. Then run a web server on the attacker’s computer that serves content that looks like www.example.com, but behaves maliciously. Ettercap has a plugin that makes DNS spoofing easy. I played around with it and it works quite well. However, I didn’t want to bother with installing a web server on my computer or recreating www.example.com.

I wanted to do something a bit more elegant. I wanted to alter the web page on the fly, as it transferred through my computer on the way to the victim’s computer. Again, Ettercap makes this easy. It supports simple, text-based filters that allow you to search and replace any data on any port. I wrote a filter that 1) changes the login page of www.example.com so that the form is POSTed over HTTP and 2) saves the form submission to a text file3.

I cleared the web browser cache on the victim’s computer (to ensure I was using the altered login page), browsed to http://www.example.com/, logged in, checked the attacker’s computer, and indeed, my username and password were captured to a text file. Harrowing!

Firesheep

There’s been a fair amount of hubbub recently about Firesheep. It’s a point and click interface for session hijacking popular websites. It uses passive listening to capture network traffic from other computers on the network. It looks for session information for various websites, displays a list of discovered identities, and allows the user to impersonate a discovered identity by double-clicking on the victim’s name.

So that’s scary, but mostly just an annoyance. The potential for a criminal to benefit from Firesheep is limited—web sites that matter, like banks, tend to be more responsible and use HTTPS for all traffic. Want to know what really scares me?

Point and click Man-in-the-Middle

It’s easy for me to imagine a program that sits quietly on a network, performing man-in-the-middle attacks on users who visit websites for banks, investment firms, webmail. It could proxy all web pages, rewriting HTTPS links to HTTP. If the user wasn’t watching for the “HTTPS” indicator on their browser’s address bar, they’d be none the wiser. I don’t think it would take long for someone to collect credentials for a few hundred bank or email accounts.

Then what? I don’t know. Maybe ACH transfer money to a single account and withdraw? They’d track down the account owner. You’d have to run and hide. An entertaining prank might be to transfer a ton of money to a single account (not yours). They’d certainly have a hard time explaining that one.

I think it’s only a matter of time before this happens. Protect yourself: always look for the green or blue HTTPS indicators on your browser’s address bar anytime you’re doing something sensitive.

Footnotes
  1. Due to a bad patch in Ubuntu’s build of Ettercap, I had to build it myself (without the patch).
  2. example.com isn’t a real domain, of course. I don’t want to divulge the domain I actually used.
  3. The filter was actually more complicated than that, but I refrain from giving out information that could aid people with bad intentions.
Posted in All, Computers | Leave a comment

Miscellanea

  • The Paul Fredrick website is well done. Their filters for narrowing down shirt selection work well. Also, after checking out they prompted me if I wanted to share my purchase on Facebook, with a little picture of what I bought. Way to stay current!
  • The Miscellaneous Symbols Unicode block has some fun stuff.
  • The Stuxnet computer worm is out of this world. Briefly:
    • Targets Windows-based control and monitoring software running used for some sort of industrial equipment used in nuclear power plants in Iran
    • Exploits 4 previously unknown vulnerabilities in Windows (and 2 other known vulnerabilities)
    • Able to update itself via peer-to-peer
    • Reprograms external programmable logic controllers (PLCs)
    • Digitally signed using two stolen certificates

    People speculate that it would have taken many man-months to create, as well as knowledge of the Siemens software and hardware that it interfaces with. There is further speculation that it was created by the Israeli government to disrupt Iran’s nuclear program.

  • The assassination of Mahmoud Al-Mabhouh is thrilling. Briefly:
    • Al-Mabhouh was a co-founder of the military wing of Hamas
    • Al-Mabhouh had just arrived in Dubai
    • He normally traveled with bodyguards, but they were not able to book passage on the same flight as him because it was full
    • Was killed in his hotel room only 6 hours after arriving
    • There are 29 suspects who worked together in the assassination plot. For example, some suspects reprogrammed the electronic door lock to Al-Mabhouh’s room while other suspects distracted tourists at the hotel
    • Suspects carried forged or stolen British, Canadian, French, German and Irish passports
    • Suspects arrived from different countries, stayed at different hotels, and departed to different countries
    • Suspects arrived less than a day before the assassination, and departed less than a day after

    People speculate that Mossad, Israel’s Institute for Intelligence and Special Operations, is behind the killings.

Posted in All | Leave a comment

Using Amazon Mechanical Turk for Translating Computer Software

Summary

It’s possible to translate software using Amazon Mechanical Turk, but it’s not ideal.

What is Amazon Mechanical Turk?

It’s a web site run by Amazon (yes, the shopping company). Anyone can create an account and post some questions or a set of tasks. You agree to pay a certain amount for each completed task. Then someone else finds your task in the list, decides it’s worth their time, and does whatever is requested.

The tasks could be anything. Here’s an example that’s well-suited to Mechanical Turk: “Draw bounding boxes around objects in images — Draw a box around counter: table consisting of a horizontal surface over which business is transacted.” And then there is a picture of a kitchen and you’re supposed to draw an outline around the counter.

It’s a pretty cool concept.

What I Did

Late last year I decided that I wanted to try translating software (often described as “localizing”) using Mechanical Turk. I chose to translate Meebo’s Android IM application into Spanish. The application is written in a way that allows it to be localized: Individual chunks of text (usually called “strings”) exist in a single xml file. The source code of the application references this xml file whenever it needs to show a string to the user.

I posted each string to Mechanical Turk as a separate task. I offered $0.10 for short strings and $0.20 for longer strings. To attempt to increase the quality of the results I specified that shorter strings should be translated by 3 different people and longer strings should be translated by 5 different people. That way I could verify that everyone gave the same response, and pick and choose between different phrasing and word choice.

It worked, but I don’t have a high degree of confidence in the translation. I ended up having to use an online English-Spanish dictionary, Google Translate, and my own rusty knowledge of Spanish to decide between different versions of strings. I’m sure I didn’t do justice to my high school Spanish teachers, and I’m sure the result isn’t perfect.

Lessons Learned

  • It’s easy to translate text poorly. It’s hard to translate text well. It’s an art. There are many subtle nuances in each word choice, and it’s very difficult to preserve those when translating to another language. And translating computer text is usually different than translating a book.
  • Translators do a better job with context. For example, should the word “login” be translated as a noun or a verb? Should “sign in” mean that you’re connecting to another computer, or that you’re writing your name on a sign-in sheet at a bridal show?
  • Having the same person translate all strings will provide better consistency between the strings.

Better Options

  • If you can afford it, pay a professional software translation team. Professionals know what verb tenses to use for buttons versus menu titles versus dialog titles, etc. You’ll have better consistency if you have just one or two people translate an entire language.
  • Have your users translate for you. If you’re a popular open source project this will work well. The translators may or may not be as talented as a professional who translates software for a living, but if they’re users of the software then they’ll be self-motivated to translate it, and will hopefully maintain the translation into the future.
  • Have your translators create a glossary of words commonly used in your application (“username,” “e-mail,” “buddy”) and translate this glossary first. That way current and future translators can reference this glossary and maintain consistency across their translations.
Posted in All, Computers | 3 Comments

2010 Song of Summer

I picked a Song of Summer for this summer: “Sweet Disposition” by The Temper Trap.

I actually had a hard time picking between the first three songs on their album Conditions: “Sweet Disposition,” “Love Lost” and “Fader.” They’re all really great songs. The entire album is great.

Posted in All | Leave a comment

Planned One Laptop Per Child Tablet

I’ve mentioned the One Laptop Per Child (OLPC) project before. It’s very interesting to me.

Originally the project set out to create a $100 laptop (that may have even been the original name of the project?). They did manage to create a functional laptop with quite impressive educational software, but the cost for the laptop remains $200. Recently the founder of the project, Nicholas Negroponte, announced plans for a $75 tablet computer with a 9″ touch screen. The touch screen would also be a dual-mode display, which can function like the Amazon Kindle and use little power in well-lit environments, or can be backlit like traditional LCD screens. Not only that, Negroponte hopes that the screen will be constructed of some sort of ultra-durable plastic rather than glass.

My question: Is this guy crazy? Granted OLPC paved the way for our current netbook market. But I don’t think the touch screen he describes has been done before. That’s a lot of features to pack into an inexpensive device… I don’t know, I don’t think it’s going to happen. Not at $75, anyway.

This reminds me of a few years ago when Negroponte made an effort to use Windows on the XO instead of Linux. Many of the developers behind the project disagreed with him. There is a great summary of the events (and the OLPC and Sugar projects) here. Negroponte may be a driving force behind the project, but he doesn’t seem to be 100% grounded in reality.

Posted in All, Computers | Leave a comment

Good Weather

The last few days have been busy!

  • Thursday – Work then Conan O’Brien in San Francisco
  • Friday – Work then climbing at the gym
  • Saturday – Biking then Muir Beach for Ben’s birthday party
  • Sunday – Running then Rivers of Chocolate then cleaned my car, cleaned the floors of our apartment, and took out the trash and recycling
Posted in All | Leave a comment

Meebo Announces XAuth

On Monday Meebo announced something called XAuth (not to be confused with the X Windows authorization program). What is it? It’s a small JavaScript library intended to be used by website developers to tailor a web page to a specific user, with the end goal of creating a better user experience.

One of the stronger use cases in my mind is:

  1. You’re logged into Facebook, but you never use Twitter
  2. You read a news article on newsobserver.com
  3. The News & Observer website could intelligently decide to show you a “share this on Facebook” button (because you use Facebook), and could decide not to show you a “Tweet This” button (because you don’t use Twitter)

The specification allows more flexibility than that. Website operators decide what information to share, and users are able to opt-out entirely.

More information:

Press:

Posted in All, Computers | Leave a comment

AOL, AIM and Openness

When I started working on Pidgin eight years ago (eight years‽ holy crap!) my main focus was the code used to connect to AIM and ICQ. The protocol is called ‘OSCAR,’ and it is a proprietary protocol created by AOL.

As IM protocols go, OSCAR is actually quite decent. Flexible, extensible, reasonably concise. Could maybe be simpler.

Background

AOL’s history with public access to their IM network has had its ups and downs.

  • In 1998 a few AOL employees released a GPLv2-licensed IM program called ‘TiK.’
  • Sometime in 1999 this project was abandoned by the AOL employees. Some non-AOL employees created a TiK project on SourceForge and continued development.
  • Things were good.
  • In 2001 AOL made changes to their protocol in an attempt to block unofficial clients. Some people believe these changes were made to block Jabber<–>AIM transports, and that Pidgin (named ‘Gaim’ at the time) got caught in the crossfire. Pidgin developers were able to keep the program working for the most part, and AOL relaxed their efforts to block unofficial clients.
  • Things were good again.
  • In 2008 AOL announced Open AIM. Open AIM was a lot of things: A set of SDKs for interfacing with AIM and the AIM servers. Documentation for the OSCAR protocol. A forum for users to ask questions.
  • Things were great… for a time.

Recent Changes

Sometime in January, February or March of this year AOL decided to shut down the Open AIM program. No more SDKs, no more protocol documentation, and no more developer outreach.

More specifically, the OSCAR documentation provided by AOL described a method of authentication (using a “startOSCARSession” API request) that required the use of a developer application key. The current Open AIM website implies that new keys cannot be created.

Now What?

Does this mean the use of startOSCARSession is deprecated? If so, what auth scheme should we use, instead? Should we go back to BUCP, the authentication scheme used by AIM 5.9? Should we try to reverse engineer the authentication scheme used by current version of AIM? Should we go back to masquerading as the official AIM client and stop politely identifying ourselves as ‘Pidgin’?

To quote the great Yoda, “the shroud of the dark side has fallen.”

Posted in All, Computers, Pidgin | 7 Comments