Show HN: Snapception – Intercept all snapchats received over the network
github.com
github.com
To see why this is a problem, see the ECB-encrypted Tux image on http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#...
Oops.
Of course ECB is still a very bad choice, because there are plenty of other ways to attack it. But recovering Snapchat images without the key would not be nearly as trivial as that example might suggest.
Yeah, ECB is BAD.
But once it reaches the end device it is impossible for snapshat to deliver on its promises of ephemeral messaging. To display the data the device needs to be able to decrypt it. If it can be decrypted it can be copied.
It's very much the same conceptual impossibility that DRM faces.
So in the end it doesn't really matter whether it's ECB or something better. It remains a DRM scheme.
ROT13, AES-ECB or some state-of-the-art crypto, it's all the same if the end-device needs to have the key to decrypt it anyway.
Somewhat misleading in light of:
> Anyway, for Snapception to intercept your snapchats, you must be connected to the computer via a proxy and have installed its CA
Interesting, nevertheless, because it exposes that:
> they use one, hardcoded key for all video and image encryption
it has over 5000 friends, and its popularity puts me to shame :(
[1] https://www.owasp.org/index.php/Certificate_and_Public_Key_P...
Edit: I just realized that this proxy requires the device users to load a CA cert. That makes things a little more difficult but still not impossible. Through creative social/software engineering, you might be able to persuade the users of your rogue access point to load the CA cert "in order to use this free service".
If Snapchat required each user have a separate public/private keypair (which would be transferred through other means, maybe even in-person), like what SSH uses, then they would be less amenable to being MITM'd via a single centralised trusted authority.
You will need the android id of the phone, which I don't think you can easily get as a man in the middle?
http://developer.android.com/reference/android/provider/Sett...
That would take some time to brute force I guess. Especially if the only way to check each guess is to try and decrypt and look for a valid (part of an) image header.
Of course there are always security holes, but they should really not be that gaping.
Besides I always though that sounded like a bad idea as an aim, it is more just an observation of one of the common consequences of moving fast, which probably should be looked at and reduced by having some extra members of staff dedicated to breaking less things, so that moving fast doesn't get too expensive.
..edit, found out they hard coded the string as constant in the app, smh.
Oh lordy. I wonder if they eval() arbitrary input from users as well.
Of course you can break Snapchat if you can get users to install your CA cert. Snapchat is no different from every other application in that respect.
Wouldn't any service then be subject to "interception"?
The issue comes if someone can get you to accept their CA. In both this case and for MITM attacks on TLS. At that point it's game over.
Snapchat is full of (supposedly private) information that is not available anywhere else. Attackers will be far more determined.
[1] http://moyix.blogspot.de/2014/07/breaking-spotify-drm-with-p...
Once you know that, you don't need to repeat the initial analysis every time. You can just set up a hook to record all the data that flows through that function after it's decrypted.
Snagchat?
At this point though I've heard it used in the other way that it may as well be an alternate definition.
For tools and toys that are not performance sensitive, python is great. It's a lot more expressive and requires a lot less boilerplate code.
I've re-written projects from C->Python before and had them work with 30% the number of LoC. I've re-written projects from Python->C before and had a 10-fold speed increase.
Right tool for the right job and all that...