« Conference Stuff | Main | Black Energy Crypto »

2010.02.25

TrackBack

TrackBack URL for this entry:
http://www.typepad.com/services/trackback/6a00d835018afd53ef01310f3b050b970c

Listed below are links to weblogs that reference MITB (Man in the Browser) Protection Layers:

Comments

Feed You can follow this conversation by subscribing to the comment feed for this post.

technique 2 is absolutely worthless as it is a simple replacement and the hacker can see everything that the user is doing and inputting. if you have the input and output, all you need is a little time before you know what it is.

how you can break the virtual keyboard encryption:

1) install keylogger,
2) wait for person to go bank website (this will still be able to be keylogged / post'd)
3) look for long strings of jibberish
4) look for a string the person types which matches in syntax NOT related to length. in your example, A -> BC that is probably the worst way of making an encryption stronger, "lets just increase the key size!"

this encryption is broken, I should not have to go into why. it is a similar situation to DES encryption, and the reason why DES is not used 100% of the time, but only after things like RSA encryption is used to send the keys for DES. only difference is that rather than being the straight key, you are sent all the information (included the decrypted output) after submitting the encrypted text.
example:
if you send something to lex, his name is encrypted to CCHEGWS, however on the following page do you want to see "you are going to send CCHEGWS $YW*@NDH, is this okay?"

no, you will want plaintext. Thus, simple regex will kill the encryption.

Furthermore, you can say that numbers would be much harder to decrypt, but even this can be easily done. the numbers inputted to the site might be encrypted. but once you send the money and look at your bank account, do you want that encrypted? (i.e. you have $d@34 in your account, not you have $5827 in your account)

of course you don't, it will be impossible to track your finances. and even if you do, someone else definitely will not, blame the bank website on why they went bankrupt, and sue the bank to make millions. So the bank wont do that either.

so, how do you decrypt numbers? simple, you compare the string entered and its time to the recent transactions and their time. this will make numbers the easiest thing to do. you can even do this for the regular wars and not even need to brute force anything.

as for SMS verification, once a hacker is in the browser, he/she can contact support, and tell them you got a new cell phone, change the number to some google voice number (easily and anonymously made), and use that to verify. Thus making this an equally moot point. As someone in security, you should know phone verification is something that is very simple to get through.

if they don't allow google voice numbers. you can implement a few techniques using craigslist to do it, or you can just buy a prepaid phone anonymously and have it ready.

--------

The only way to get out of a MITB attack is to get out of the browser. Banks need their own applications/encryptions which do not rely on external things. anyone executing a man in the browser attack can look exactly like the user, and can see everything the user can. however, this will still be plagued by regular trojans, so even this will not be enough and is an inconvience to the user.

IMO, the best way to do it would be for a VPN to a secure bank server and doing all the banking server side with the bank heavily logging the connection. and by getting a new username/pass every time you want a new session. this can be done by a text message because once you login, you can have the bank server stop that user/pass from ever logging in again. and they can have it killed after 20 minutes if there is no login.

that means that you always have a new user/pass when logging in. the only time the attacker would be able to login is in between the time the text is sent, and you login. heavily logging login attempts will make the bank aware that someone would be trying to get into their account, and that they have some sort of trojan installed. The bank would be able to inform the user of this, and the user can have their computer reformatted/cleaned.

Another way, and possibly the best, of the banks protecting themselves would be to release their own linux system on a thumb drive. the only way people can login to the account is by booting off this drive to a very simple linux system (which is quick to boot and has networking), and have ti be the only way to connect to your bank. make the drive read-only and there is no way that an attacker can get in to your account without using network-based attacks (which are much MUCH rarer).

Well, I do keep my banking application on its own virtual machine that I use for nothing else (I only have it turned on for the time I'm using the banking application). I'm sure this is very good practice but not everybody is a sysadmin...

Johan
------
End of the day there will be some application running on the vulnerable system making all these transactions. You are assuming that this application would be more secure than browser. I don't think so! It's not very difficult in windows to change values in the memory of any external process. Attacker can hook into windows message queue and wait for the user to do some transactions, and right before these values are going to be encrypted, change the legitimate account information with one of his money mules accounts. Similarly it's not difficult to launch this application in hidden mode and problematically perform the complete transaction.

Daniel
------
Paper based codes are just like 'Safety Pass' based random code. We already know how attacker might hijack such codes with simple social engineering. Apart from that, it can't protect user against transaction manipulation MITB.

Thanks guys for these suggestions. But I find slight problems with each of the above techniques..Let me explain one by one.

Ali
----
The only problem I found is that user might also end up handing this secret question to the attacker.

1. User gets a fake SMS from the attacker, pretending to be bank and asking about this secret question. Just like user fooled into giving these secret questions to the attacker while MITB attack. He may hand it over again.

2. User might select a secret question which is already compromised or already known to the attacker.

But yes this technique would further improve things a bit but on the cost of more inconvenience to the user. If user would have to enter it again and again. He might get used to it so much that he would simply learn to enter it always.


Am I more secure using an application that establishes its own VPN tunnel with the bank server, instead of using a web browser? I have always felt more secure, because there is no browser involved...

I think an easier method is what some European banks do. Send a One time key paper to the user. This paper just contains random keys like xcdse23. A user starts at the top left and each time one of these keys is used, they cross it out and move on to the next one. This has a few benfits, it is pretty cheap. I think it is easier then having the user do a Ceasar Cipher. I know that this One Time key approach is using the definition a little off, because you would need enough characters to encrypt all the data.

Atif,

Good article, you have treated the topic very well. I would like to propose another solution to technique_1.

Solution --> Instead of just asking for plain acknowledgment via SMS, the bank should ask for an answer to a "secret question". With that done, even if the attacker successfully changes the Safety Pass (using MITB) to his own mobile, he cannot answer that secret question and hence can't do the illegal transaction.

It may not be the perfect solution but so far I don't see any problem with it.

cheers,
Ali

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been saved. Comments are moderated and will not appear until approved by the author. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment

Comments are moderated, and will not appear until the author has approved them.

Enter your email address:

Delivered by FeedBurner

Bookmark and Share

Twitter Updates

    follow me on Twitter

    In The News