Attacks Against SSH 1 And SSL
AndyR writes: "SecurityPortal has a very interesting article by Kurt Seifried in which he writes "dsniff 2.3 allows you to exploit several fundamental flaws in two extremely popular encryption protocols, SSL and SSH." He makes many very strong arguments about key validity and the problem with not having a trusted third party signing keys." Don't throw away SSH just yet, it's still a lot better than nothing.
If the patents really are an issue, then perhaps I can help. I designed a strong password authentication scheme around the same time that SRP was introduced. There were a couple of techniques in common with SRP but I think the overall structure should probably be different enough to avoid the patents. So, if anyone is really interested in moving this stuff forward then I'd be more than happy to provide you with a detailed explaination. Just e-mail orasis@acm.org
Credit card companies have fairly sophisticated fraud detection, as these things go, but never underestimate the ingenuity of criminals. It can be easy, but it usually isn't.
Real organized crime can sell the credit card numbers to trusted parties, who won't get caught spending, and they can get numbers from trusted sources. Put the two in a blender and you've got several apparently unconnected spates of fraud - with some common victims. Everything has been delivered to mail drops, it's pretty hard to chase, and much easier for the credit card companies to pass the "savings" along to you, the customer.
I've heard of many many people becoming the victims of card fraud. I've heard of relatively few - even scanning police blotters - who got caught for the same crimes. In between is a full percentage point above prime rate.
The number of people willing and able to exploit - and profit from - man-in-the-middle attacks is considerably fewer.
Boss of nothin. Big deal.
Son, go get daddy's hard plastic eyes.
Expanding a vast wasteland since 1996.
Lacking of security mind cam be a major invulnerability indeed.
A lot of people has installed sshd to enable security telnet-replacement. It surprises me when I found that a lot of people enable BOTH Password authentication and RSA authentication.
Their rationale is that they want to have higher security in RSA, and convenience in password authentication. Say they setup RSA authenication between their client at home and server at work, but the same user can also login from some other machine with password in case the machine hasn't been setup for RSA connection.
In fact password authentication effectively breaks the RSA in this case. Why would the hacker bother to temper with the RSA while the system can be intruded by tempering with the weaker password authentication?
Say you've implmented a very secured physical key-lock on a door, but you also allow people open the door by entering keycode on the keypad in case people forgot to bring key to open the lock(it happens). Enable both password and RSA authentication in sshd is more or less the same thing.
Of course, it's a way to restrict a group of people using RSA and another group using password authen., but it makes no sense enable both of them for a user.
More worse, many people still enable both authen, regardless what what I recommended....Is that concept so hard to understand?
how about smartcards????s c.html
http://www.citi.umich.edu/projects/smartcard/
http://www.citi.umich.edu/projects/smartcard/ssh-
-andros_jr shhh.incogni.to
There WERE known exploits (read: script-kiddies friendly) for SSH1 protocol against its RSA-based encryption (if you compiled ssh1 with it). SSH2 doesn't use it.
Beside, as the other guys said, they just haven't
spoof for ssh2 is just not available, YET.
yawn. I have seen windows machines that have no open ports run arbitary code. There is something wrong with their TCP/IP stack. It's sad but true. Unfortunately you have to take my word for it and you never would so you will continue to run a toy operating system.
How we know is more important than what we know.
Fine, someone go fetch me a two year old child.
:)
I tried the local two year olds, but they didn't seem to have attention span enough to wait for me to finish the problem, or they didn't understand the words I was using.
Tough luck. Next time, he should probably go for some better exaggerations.
Dsniff can be used by u17r4 37337 h4X0r5 to make scr1pts that the k1dd135 can use to do simple local attacks. Once they 0wn3d a router they can download said 5cr1pt and 0wn all the un1x b0x35 on the subnet that have users stupid enough to accept the new keys.
--- Justin Dearing http://www.justaprogrammer.net/ We're just programmers.
I consider myself somewhat knowledgable about cryptography in general and SSL in particular. I read the articles by Kurt Seifried, especially the "foundation" articles dates Sep 30, 1999 and Oct 7, 1999. He is very cagey about actually demonstrating an attack, but I think his points are either technically wrong or technically useless.
First, the technically useless. Every security product/protocol I am aware of is vulnerable to so-called social engineering attacks. That's their whole point! They go around the security perimeter and get "behind" the protection to get humans to give away information. It is certianly fair to analyze the ease to which some products/protocols facilitate this, but I didn't see much of that. Instead, the articles discuss a company called DigitalBond with a solution that perhaps is also vulnerable to social engineering attacks.
Now lets look at the technical attacks and claims, which are contained in the Sep 30th article. I'll only comment on the weaknesses he alleges are in SSL. His first claim is that you should not order from a store that uses the http GET method. He doesn't say why, and I cannot think of any reason. If the form is submitted with an SSL-secured action (action="https:...") then both are equally secure.
His next claim is that the user must inspect the certificate of the server every for every SSL connection. He does not say what attack he can mount if the user doesn't do this. I am guessing that he believes the man-in-the-middle can substitute his own certificates and appear to be legitimate. This is firstly not an attack on the SSL protocol, only perhaps on implementations, and secondly it does not work with the implentations I have tested, IE 5+ and Netscape 4.7+. These implementations verify that the hostname you asked the browser to connect to matches the hostname specified in the CN field of the certificate. Of course, you must trust that the CA will do some checking to make sure hostnames actualy belong to the entity getting the certificate, but that is way outside the scope of the SSL protocol. These "flaws" cannot be the basis for later claims of insecurities. These implementations do not rely entirely on having savvy users carefully inspect every certificate.
I'd like to check up on earlier broswer versions to see if they also behave similarly. I'd be particularly interested in browsers that were in play at the time the article was written, say fall of 1999.
--greg
I always do electrical work with the power on. Of course, I turn the power off first. And then I work as if I still had the power on. Cuz ya never know, it might be on.
-russ
Don't piss off The Angry Economist
Printed means of distributing fingerprints should not be overlooked; you could include the fingerprint in small print in printed advertisements. Or perhaps a printed publication listing current correct fingerprints for major e-commerce sites; a "yellow pages" of the internet. It seems "backwards" but it solves a lot of problems. No, wait - I claim copyright on that idea!
Alternatively, a government-run key signing authority, that only signs keys requested by companies and requires signatures of the company owners/CEOs would be another way of dealing with this. Or perhaps a government "tree of trust" - with Governments able to issue signing keys to certificate authorities, with the proviso that if they are abused the company will be shut down, and the abusers hung, drawn and quartered.
Then you can be assured the signing authority is as good as the Government. Personally, in a world so corrupt that alcohol is legal and marijuana illegal, I still wouldn't trust it :-)
How about it, politics?
If the guide is not respected, or the material not cared for, confusion will result, no matter how clever one is.
ssh is always a good idea but what is wrong with having an opie install for when you are on the road and can't install ssh on the term that you are using.
Information wants to be free like speech wants to be free, not like we want beer to be free.
It is amazing how insecure most real life (for lack of a better term) things are.
Last time I was at Bank of America they asked me to change my PIN# to one with 4 digits, instead of the usual max of 6 numbers. In the network world, you find administrators that configure systems to require more characters in a password than before, *never* less.
Take a look at Credit Cards. That's like: "I'm lazy, here's my login and password. Take only what you're supposed to." You try to tell a sysadmin that and he would flip out.
So yes, "real life" is a lot riskier. Why do we babble over our SSH bits-per-key, when in the real world we give our passwords away to the waitress?
-Justin
Yeah, or hack the firewall at your house.
cat
... than SSH1?
Rohan
I am really getting tired of Kurt. He sends out false alarms and really stupid and sometimes incorrect information. Kind of reminds me of another person (anti-online).
"For example -- this is oversimplified but essentially correct -- user Alice wants to
talk to server Bob, and Charlie wants to snoop in on her session so he can read her
mail. Alice initiates a connection with Bob, Charlie sees this and intercepts it.
Charlie talks to Bob and pretends to be Alice; on the other side he talks to Alice
and pretends to be Bob. Alice sends her public key out, which Charlie intercepts;
Charlie then sends his own public key to Bob. Bob then sends his public key to
Alice, which is again intercepted by Charlie; Charlie sends his own public key on to
Alice. "
Yeah no kidding. Everyone has known this from the beginning. Can you please tell us something we DON'T know?
You have to check with the person who's site it is or the owner of the SSH server.
Get the fingerprint directly from them, then you won't have this problem. His little stupid analogy only works when you don't know the person's fingerprint.
So learn their fingerprint...duh.
http://www.fs.net
Well even using ssh in 'secure' network can still introduce the issue of someone snagging passwords along the wire via other methods such as someone using ssh and then using ftp instead of scp or sftp so I would guesstimate that 80% of the times it is always going to be users that are the weak link and not the protocols.
So as of now I will wait for the next security based document pimping IPSec, Secure Tunneling, Diameter, SSH over SSL over Biometric based authentication, then point out the clueless (l)user who just did something stupid like use a protocol which doesn't provide any encyption down the strech.
Thanks for the memories
Read again carefully. Nothing is the difference. It's just that he hasn't coded up an attack for ssh2 yet. But it could be done in a similar way, just a few more details (I am guessing).
Smthng
telnet over ssl (with certs :) ).
Get stunnel from stunnel.org, and you can SSLize lots of stuff.
ssh has too much stuff thrown into it, so it's harder to get right.
Link
Of course you can use S/Key for one-time passwords when using SSH and PAM.
this is not a problem in ssh.
/etc/ssh/ssh_host_key
this is not a problem in ssl.
It is a very old, very well known attack approach, which both already guard against (that's what the 'host key changed' message is all about in ssh). If you see that message and haven't been notified (and sent a new key fingerprint to veryfy against by the admins), you *MUST* assume that a man-in-the-middle attack is being employed - it's what the message means!
Someone in the middle of your connection pretends to be the server to you, and pretends to be the client to your server. Poof, two valid connections, he forwards your data (he has it in plaintext, as he is your server), and you notice only one thing to tell you that something is amiss - that he *did't* know the right server key (ssh has caches it from previous connections to that server's IP, ssl can check the CA's notes about whose key it is) and had to send you a different one.
So your client warns you that the key has been changed. You need to get the key fingerprint from the server admin (out-of-band, not over the same potentially compromised network) and compare it to the one you recieved (you did do that when you first connected to the machine too, right? it should have come along with your account credentials, if not you needed to ask for it if you cared a bit about security) and make sure it matches the new print the server is offering.
to get a fingerprint for a host, use ssh-keygen -l -f
SSL is in a similar situation - the key bears the DNS name if the site it is for, and your browser will warn you if it recieves a key for the wrong site, or not signed by a recognized CA. You didn't turn those off did you? If not, then one or the other will come up when confronted with a man-in-the-middle attack (either he'll send a properly signed key, but not for the right site, or he'll have a forged and unsigned key for the site you were really going to) and you'll know what you're facing.
for ssl, if in doubt, click the little padlock in your browser, and read the key - see that it's for the site you think it is, and signed by a recognized CA.
If you don't use these tools correctly, you may as well not use them at all. Everything is in place to detect these attacks (which are not new), but if people simply ignore warning messages that indicate the presence of known attacks, there's not much else that can be done
The Matrix is going down for reboot now! Stopping reality: OK. The system is halted.
of course it has to run as root - how else could it give your your own account perms when you connect to it (instead of whatever menail ones it would otherwise have)?
The Matrix is going down for reboot now! Stopping reality: OK. The system is halted.
I guess this has consequences for VPN systems using SSH1/SSL technology as well?
I disagree, the strength of your locks reflect your assessment of risk. If sufficiently valuable in the real world, locks are replaced with security guards and automatic rifles. Most people don't have anything that valuable, and find it more cost effective to place limits on their credit cards, check up on protection from their credit card companies and take up insurance policies.
If there were no banks and no insurance policies, would you, with your life savings under your mattress, still say that your locks are to keep honest people honest?
Besides, this SSH and SSL attack is very well documented, known and understood for a long time to be a limitation of the system. If your life savings are on the line, use callback, challenge response, or don't use remote logins at all.
their browsers do... and warn them... unless they click OK and continue anyway.
In which case they deserve whatever they get.
The Matrix is going down for reboot now! Stopping reality: OK. The system is halted.
My point exactly :-).
"A child of five would understand this. Send someone to fetch a child of five."
These vunrubilities have always existed. It comes from the fact that SSH is not signed by a certificate authority, and as such you cannot trust the server on the other end. If someone cracks DNS etc to direct you to another server, you won't know about it, except for a warning that the key is different from last time.
SSL is similar, but it is signed on the server side, usually not on the client.
This isn't anything new, it's just not there are publically available tools to exploit this.
--
enterfornone - logging in for a change
In the end nothing is 100% secure...
Well, on my school's network many of the computers have some kind of load-sharing, where any given name might send a person to more than one computer. Since this is the case, the key "changes" quite a bit. There is, of course an easy solution to this, but if someone wants to go to the least-busy computer, they might expect to see a key change quite frequently.
-winter fantom
Not the best news to start the day with... considering I use SSH on all of my machines. You can bet quite a few people will be following these developments *grumble*
Moz.
see a Text Widget
well, to simplify matters quite a bit (though allowing a miniscule chance that a malicous key could generate the same fingerprint, this would be *really* hard to do), just send them the key fingerprint and let them compare the fingerprint shown by their client during that first connection with what you told them to expect.
The Matrix is going down for reboot now! Stopping reality: OK. The system is halted.
Only the ssh.com implementation.
OpenSSH supports SSH2 for free (beer and speech).
"don't fall into the fallacy of believing that Perl can solve social problems. Maybe Perl 6 can, but that's a ways off"
The program ssh2 is non-free. The protocol is not and is already implemented in openssh. Just use the command "ssh -2" if you are using openssh.
*nod* However, if yon waiter uses your credit card illegally, it's usually pretty easy to track down when it started and who the guilty party is. Most credit card 'thefts' like this are done by people with a minimum of the daily recommended intake of intelligence.
/.'ers do. It's the clueless masses that get all of their tech news from Headline News that panic over this.
/.?
However, with online security, all too frequently, the people who are intercepting transmissions or forging them are quite intelligent (or have read the user docs for their script kiddie toy). Therefore it takes a little more then the standard protocols to insure a minimum level of safety.
No protocol is 100% safe. We accept that. Well, most of us
Oh well. Wonder how long it will be before the next "X isn't secure" story on
Kierthos
Mr. Hu is not a ninja.
OpenSSH supports the SSH2 protocol, it has for a while now.
--
Free Mac Mini
SSL2 doesn't have client certificates; that's SSL3. The article says
To which the obvious answer is: pull your finger out and issue client certs to your users. If it's that important that you know who they are, then the effort must be worth it. This article is basically just an enormous troll.
nal 11
Well, SSH1 goes up to 1 right? Whereas SSH2 goes up to 2. That means it's one more secure.
nal 11
Hmm, interesting point.. I'll have to think about this one...
You usually use the phone for that.
And how is he going to hack the router? The same way as he's hacking Bobs machine?
Most of our systems have the same ssh keys they had when we were running Debian 1.3, for example. The upgrade to OpenSSH which was in Debian 2.1 didn't change the keys. Motherboard and disk upgrades have not changed the keys.
Only YOU should be changing the keys.
Oh yeah, Windows boxes are inherently more insecure, Because Dogma Says So. Way to confuse a good point (about the lack of testing of SSH Clients on Win32) with some stupid /bot rage, "G".
Anyway, I've 'secured' this Windows box the same way you Linux boys always recommend doing it -- shutting off all services, no NBT (==no RPC), and no IIS. And I didn't need to read your sig to know not to run trojans, and lock down IE and not run as Administrator.
Meanwhile, RedHat keeps finding nice root holes in basic good ol' standbys such as LPD and BIND. I mean, Fucking A, look at the RedHat advisory list: modutils, pine, bash, nfs-util, ed(!)/vim/emacs/joe, PAM, 'usermode', traceroute, openldap, gpm, and so on. All bread-n-butter stuff in the Unix world, and still br0ken. (I won't even comment on the fact that the standard EDitor has a security hole.)
Oh yeah, but you know the Linux drill -- firewall, kill all the network services, don't allow interactive access. Sounds exactly as secure as Windows!
This is incredably stupid logic. What hacker who broke in wouldn't install a backdoor? And to brute force a SSH key would take literally three google (2^1024, or about 10^309) attempts at login for 1024 bit key. Any admin who didn't notice that deserves the death penalty for stupidity.
-David T. C.
If corporations are people, aren't stockholders guilty of slavery?
What many people may not realize in this discussion is that the problem of MITM attacks against SSH1/SSH2 is the direct result of the host-based security model that SSH tries to impose on users. UserAuthentication is the worst because it discloses the password to anyone who convinces a client to accept his host key. Strong password protocols like SRP are able to resist these MITM attacks because they are zero-knowledge, i.e. they don't reveal any information about the password while they prove their knowledge of it to the server. There have been a number of postings that elaborately describe schemes to ensure that you have the right host key, be it by writing down the key fingerprint or FTP'ing around of file of known host keys. But this complexity makes it easier to screw things up, and is made unnecessary by strong password protocols. srp-1.7.1 is now available at http://srp.stanford.edu/. It implements secure Telnet-over-TLS with SRP support as well as Kerberos V5 and X11-session-forwarding.
Some notes to slashdotters:
The article is long, why? Because I had to explain what SSL and SSH are, most people do not know how public key crypto/etc works. If I do not explain this trying to explain the security problems and why it's an issue would be pointless.
Before it was hard to attack SSL/SSH connections and do man in the middle. You'd have to write your own software or find some, which as a rule wasn't publically available (you could see it demo'ed at security conferences/etc but I don't remember anyone ever putting it up for anon ftp or on the web). Well now it is trivally easy to find, and the entry level for attacks just got a lot lower. Users should be aware of this.
Unfortunately I can't offer any really good solutions (go get software package foo and everything will be better). For now dsniff only does SSH1 attacks, so going to SSH2 should help (until somone modifies dsniff, as I point out in the article). How can you verify SSH keys, print out lists of key signatures and tape them to every workstation and teach users to verify them? Not likely. Ditto for SSL, how many of you actually look at the certs servers hand to you, and how many of you have clicked on OK or Continue when the cert is out of date or issued by a non trusted entity (i.e. a self signed cert).
SRP is free worldwide for both commercial and non-commercial use. And, AFAIK, now that people are becoming increasingly aware of the security advantages they offer when used with memorized passwords, they are starting to see increasingly widespread use in a variety of settings (not just secure Telnet/FTP).
Melissa/ILOVEYOU are fundamentally due to problems in Outlook, not Windows. Yes, they run under the Windows Scripting Host (WSH). Y'know what WSH basically is? It's Microsoft's take on Perl. If Pine or Mutt were designed to automatically run attached shell or perl scripts, at least as much harm could be done by those scripts as by those Windows worms.
Installation of a new sshd shouldn't change it. The host key is stored in it's own file [generally in /etc/ssh_host_key*]. Upgrading, changing, rebooting... Unless the backup of /etc is changed, or the system is compromised [thus necessitating a new key], then there is no reason for it to ever be changed!
---
man sig
---
the pen is mightier then the sword. the sword is mightier then the court. the court is mightier then the pen.
- They don't show up the first time you connect to a new site
- When the warning appears, the user doesn't have any way of knowing whether or not the key change is legitimate, and most will simply ignore it, rendering it useless.
You can always write down host key fingerprints, but a system that depends on this kind of user vigilance for user security will never scale.Been there, done that (this week). All the systems where I've changed out the sshd still have the same key. The key itself is stored in a separate file and isn't going to be affected by changing the binaries.
I just got through a few of those this week as well, and the systems still have the same key. Again, the key file is not part of the OS, and as such it isn't affected.
Okay, I haven't seen this one for a while, but I've still gone through it and had the key come through intact. IIRC, the most extreme case was switching a system from running on a sun4c machine to running on a macppc box. I moved the harddrive over, booted from CD, and installed the new binaries from there. When I rebooted from the harddrive, the machine came up with the same key.
The only case I've seen where the key changed was when a machine that wasn't important enough to back-up went down and was replaced with an entirely new machine. The only thing the new box had in common with the old one was the hostname.
Basically, you should only see key changes in extreme circumstances like that, and in the less extreme case of a CNAME changing to point to a different box, you would hope for some warning, too.
T. M. Pederson
"...and so the moral of the story is: Always Make Backups."
T. M. Pederson
"Lies, Damn Lies, and Documentation"
Some people like to change keys periodically (every 2 years or so) on the pretext that doing so limits the vunerability of having a host key brute-forced. (ie, it might be changed by the time the cracker broke it, or at least the cracker would be locked out eventually.) I don't like this, as it increases the complexity of using the software, and trains users to ignore key changes.
As other posters mentioned, ssh doesn't nicely deal with multiple meanchines all being referenced by the same DNS name. (It looks like the key changes, when you're really just getting a different machine.)
For SSL, why would anyone with the ability to perform such an attack bother with a single session? With the amount of time you would take getting all aspects of the attack coordinated, why not just take on the server directly? The only way I would see this pay off is if you where going after SSH, but the shear number of SSL connections that you would have to filter through would make this an excercise in futility.
--WooooHoooo--
"What I look forward to is continued immaturity followed by death."
it is never the users. It is the policies of the network. If you don't run an ftp server, and a telnet server then you can't have people using unencrypted protocols. But people insist on running these protocols. Ok, so maybe it is the users now and then, like postit notes on the computer.
How we know is more important than what we know.
There is also a project underway to allow OpenSSH to use keys distributed by DNSSEC.
This attack then comes back to user apathy (i.e not bothering to verify key fingerprints). An alternative (not yet implemented) is some form of PKI, which has its own problems (complexity, centralised trust, revocation issues).
What, prey tell, is wrong with "Windows ssh clients"? I'm behind a corporate firewall and use an ssh client to connect to a server outside of the network. How is that any less secure than connecting to the server using a Linux or BSD ssh client?
Syllable : It's an Operating System
For administering a private network, SSH and SSL
:-).
are perfectly secure. You can surely trust keys certificates that you generate yourself. As most of the dsniff tools rely on being on the same segment of ethernet, with careful key management they're not really a threat. Ever tried changing a ssh host key and then sshing into it ? You get the largest, scariest warning that makes you feel totally paranoid.
Also, if you are connecting to a server for the first time - fingerprints allow you to check the validity of the keys.
The problem is with connections to machines you can't personally validate, where DNS spoofing could be used, for example with e-commerce sites. But this is what CAs are for. So where's the problem (until a CA gets cracked that is
because windoze boxen are inheritently insecure. Just read my tag line, I bet you get at least three "cute" flash games and the like every month. Even if you don't, I'm sure you don't have the Outlook security patch installed (the one that makes it impossible to open exe's and vbs scripts and the other 100 - yes there's a list - file formats that are infectable). Patching binaries on windoze is trivial. Intercepting keypresses on windoze is trivial.
How we know is more important than what we know.
Yeah, but the point I am trying to make is that
server certificates and a decent random number generator are enough to establish a shared secret, and thus secure communication.
Obviously, the server will have no prove of the identity of the client.
This is definitely FUD. The SSH documentation deals specifically with this issue. This is a good thing and SSH's handling of the situation is more secure than a central signing authority.
What he's basically advocating is removing the need for people to have secure methods for exchanging keys. Instead of having the chance of a "man-in-the-middle" attack during the first connection (which, if you've exchanged the fingerprint of the server with the admin of the server involved, is eliminated), he'd rather that we trust some other person with our security.
What if:
If any of these happen then your security is FUBAR. Bear in mind that the key could potentially be used to attack e-commerce sites, and is therefore pretty valuable. If the secret of the key being leaked is kept well enough, it is quite possible that no-one will ever find out - except for the odd sum of money missing from random credit cards worldwide.
Compare that to SSH, where upon connecting to the server, you are notified that you are connecting to an unknown host key, and it gives you its fingerprint to check against what you have recorded it should be. If the key ever changes, you are presented with a huge warning message saying that the host key has changed, and that a man in the middle attack may be in progress.
If you were using this commercially, you generally would be using SSH between two machines that you admin yourself, or between one that you admin and one that your peer's company admins, and you can verify the keys, set them up in each systems ssh_known_hosts file, and rest secure that you are not vulnerable to man-in-the-middle attacks.
Personally, I think he's trying to promote the idea that "security needs trusted arbitraries" to the corporate IT world - I wonder if Kurt Seifried has received any "donations" from any large key authorities recently?
Let's face it - if people use security that doesn't need key authorities, then they'll go away.
Every security system that uses a trusted authority is vulnerable to a purchase-key attack, and don't let anyone convince you otherwise!
If the guide is not respected, or the material not cared for, confusion will result, no matter how clever one is.
The other way around MITM is to use a strong password protocol to authenticate the key exchange. Since they reveal no information to a spoofing server, there are no known attacks that can be mounted, even if you can redirect the client to a hacked server, and even if the user knows nothing about security - protocols like SRP simply don't expose password information that way to the peer.
I'd like to see the results too. SRP will tend to resist MITM attacks because of its design, so it seems unlikely that dsniff will be able to attack SRP Telnet (either classic or TLS-enabled) or SRP FTP with any effectiveness.
They can launch a man-in-the-middle attack on the phone line too, you know.
Credit Card companies don't pay when numbers get stolen! the vendors do, and the Credit Card companies charge them fees on top of the cost of the theft.
If you were the store owner and not the patron, you most certainly would care if people were stealing your customers credit card numbers!
get your dirty sig off me, you filthy APE!
This usually happens when a new version of the OS is installed on a given server, and the sysadmin is careless about not moving the contents of the SSH host key to the new server.
There are some protections against this attack. When the host key is changed, ssh for Unix gives you a warning that you would have to be blind to miss. If you want better protection than that, the best solution is to hack OpenSSH or what not to only accept a key with a given key fingerprint for a given IP. In other words, if the host key is changed, the hacked client will not connect to the host in question.
- Sam
The secret to enjoying Slashdot is to realize that it should not be taken too seriously.
xp0rnstar (sil@antioffline.dot.com) says:
...
>Man in the middle attacks have been rampant for some time now
Indeed?
Is this documented somewhere (CERT quarterly reports, for instance), or is it based on the availability of tools (which ones are there, aside from dsniff), and what sort of documented losses have occurred?
Rick.
Yes all these people with thier credit card numbers stolen all ate dinner at the same restaurant within, say a week of each other. I don't know, that seems pretty easy to me. Easy to track the person that stole them and sold them.
Even with online use, it can be easy to track something like that down.
In Summary: Man in the middle attacks are a tough problem, but solvable so long as the end user pays attention
;)
To summarize the summary: use OpenSSH
(OpenSSH by default refuses to let you attach to a changed server key by default, causing you to either disable that behavior (bad), pull the old key out of your known_hosts (bad but usually tolerable), or verify the new server key OOB (good))
Your Working Boy,
Things like Melissa/ILOVEYOU are simply impossible on Linux.
/home/user, or reading your address book and sending mails, or doing something a lot more evil or damaging. More fine-grained security is needed. As it is now, the windows and linux security models are very equal in this sense.
They are theoretically just exactly as possible as in windows!!
IF an application such as outlook that allows such silly script execution became popular, and linux users were stupid enough to execute unknown attachments, nothing in the linux security model would prevent it from doing just the same things as in windows.
Linux as well as Windows has a lame security model that gives all programs all rights the user that launched the program had. Sure, the program can't wipe out your system files since you're not logged on as root/admin, but nothing stops it from deleting your personal files in
How does Bob know Alice's address in the first place? Alice has to tell him. If Charlie is launching a man-in-the-middle attack, he can modify Alice's message, so that Bob opens up his firewall to Charlie's address instead.
This article is very misleading. It implies (to my reading at least) that a connection secured at the server side only is not secure in some general sense.
This is not true, as far as I understand these things. Consider connecting to Amazon (say). You verify the certificate and give your credit card number. This is enough to guarantee that:
(1) you are connected to the person that has the private key associated with Amazon (ie that this is Amazon or they have had a security breach - the private key cannot be obtained by sniffing alone)
(2) man in the middle attacks are not possible.
What is not guaranteed is that you are you - all the server knows is that someone is giving your credit card number. But that's OK - no-one else has that number (at least, they didn't get it by sniffing this transaction).
This *is* a problem if you are using SSL to secure a link to your own computer for root access, for example, because then it is important that you are you. In that case you do need the server verify the client. But that's not the same as shopping...
If anyone thinks I'm wrong I would love to know!
Cheers,
Andrew
http://www.acooke.org
I don't think any of these should change the key, unless you have a really lazy administrator. The private key is generally set up to be readable only by root. Presumably, the root user can copy it to a new machine at will.
Slashdot is jumping the shark. I'm just driving the boat.
because windoze boxen are inheritently insecure.
You're a stupid fucking troll, aren't you?
Slashdot is jumping the shark. I'm just driving the boat.
Interesting thought. I was just thinking whether we should be more secure if we used public keys as 'net addresses, so that the address and the authentication are coupled together (I know, I know, this is puuure fiction). Sending data to one address then ensures no-one is tapping that line.
In your scheme, the following might occur:
- client: hey router, pass this package on to the server, will ya?
- evil router: OK (looks inside the package, finds a key request. Starts producing a fake key) Hey client, I just got this package from server. Any idea what's in it? Open it, quick!
- client: none of your biz! (turns side to router and opens package) Aah, finally, the keys from server! (encodes a package o'data) Hey router, pass this package on to the server, will'ya?
- evil router: Well, OK.
This would for instance mean that your ISP can still check out on you if you use SSH and if they desperately want to do so (government!).
It's... It's...
"We can confirm that Debian does *not* ship the version with the trojan horse. Our version predates it." [CA-2002-28]
There's the rub. Do you really verify the certificate? Does your browser warn you if there are problems? Would you notice if the certificate was for a slightly differently spelled domain? Do you check if the certificate is on a revocation list?
Any user who doesn't always check these things very carefully is vulnerable to being spoofed by a fake server.
- Alan
One thing that is important about the man-in-the-middle attack is that usually the only time there is the request for the certificate is the first time you connect to the machine. The interloping machine has no means of knowing, in general, whether or not you already have a valid certificate, so when you go to connect and get the "is this certificate ok" message, if it is not the first time you are connecting to that machine you will know something is up and can try to figure out what is going on or get some help. The method of exchanging certificates is a vulnerability, but you need to start trust someone/something to get going and it doesn't seem like this vulnerability is that profound to a knowledgeable user. Sorry about the earlier empty post.
It's psychosomatic. You need a lobotomy. I'll get a saw.
Bob : 245.345.0.20
Alice : 245.345.0.40
Charlie: 245.345.0.50
Now Alice wants on Bob's machine so he (Bob) opens up the firewall to allow Alice to access his server (don't forget; SSH isn't about encrypting and decrypting email, its a real time connection. And hey; if you need security and therefor use SSH but no firewall I think you're missing the point). Their keys get intercepted by Charlie. Charlie tries to access Bobs machine but is rejected by his firewall. Now what?
First, do schemes like OPIE and S/Key also suffer from this? (I just found the Answer...YES)
Is SSH2 any better? (Yes, SSH2 is less vulnurable to Man in the Middle attacks...but it is just a matter of time before it, too is made vulnerable.)
ttyl
Farrell
CAN-CON 2019 - Ottawa's only book oriented Science Fiction Convention! October 18-20, Sheraton Hotel, Ottawa, Canada h
So sshd has to run as root? Isn't that a big ol' hole waiting for the next kiddie with a sploit?
This is why a combination of cryptography and stegonography is needed. And even then, it is not 100%.
Just being cap'n obvious...
---
-
ping -f 255.255.255.255 # if only
Following in the same thread as the other two replies above me, I fail to see why using windows ssh clients is INHERENTLY more insecure than using a linux one. Yes, problems may arise if trojan binaries are run .. that danger is also possible if you use Linux as well thought.
Someone with a mind to security would NOT run such unknown programs, I know I don't. I use SSH to talk to different Linux machines on the company network (ethernet, but unencrypted passwords are still BAD to bandy around) and also to my own Linux machine outside of it (for obvious reasons). I don't run Telnet or FTP services on any of the machines I administrate either, because they encourage luser tendencies.
So, how did you burn yourself on a windows box to be so bitter about it?
--
Delphis
Didn't read the article?
The article doesn't have anything to do with cracking SSL/SSH encryption, but discusses the classic man-in-the-middle attack.
One of the main things that secure protocols are designed to stop is that man-in-the-middle attack.
The basic idea is to exchange session keys and verification data before a random public key. That way, the attacker can't substitute other public keys, because the attacker would have to be able to generate data based on information which has not yet been sent.
The article isn't actually talking about the described attack at all, but about spoofing servers. Identification of servers is a substantially different problem, and is a human-engineering one rather than a protocol one: what makes a server the one you are trying to connect to?
The attack is where the attacker wants to convince you that you're talking to the server you think you are by having you actually talk to that server, except that you are not talking directly. Most encrypted protocols do a good job of insuring that you are connected directly, over an encrypted channel to whatever it is you seem to be talking to. Whether the server you're talking directly to is the one you want to talk to is up to the user and other parts of the system.
SSH is as secure as you make it. If you validate server keys rigorously, MIM attacks are impossible. If you regenerate your keys frequently, it's even less likely that you will be compromised. Until quantum-based encryption becomes reality, the 'perfect' security system is just theory. Until then, SSH is certainly good enough for me.
TCP/IP and UDP provide no built-in encryption or authentication, and it will be a very long time before there is widespread use of IPSec.
IPSec isn't a solution either. Well, Bruce Schneier certainly doesn't think so, anyway. Check out this at Counterpane.
Sample quote:
We strongly discourage the use of IPsec in its current form for protection of any kind of valuable information, and hope that future iterations of the design will be improved. However, we even more strongly discourage any current alternatives, and recommend IPsec when the alternative is an insecure network. Such are the realities of the world.
Out of curiousity, is there a way to use one time passwords with SSH? I know this isn't a solution to the problems talked about here, but it would be safer when using Putty (or some other PC-based SSH client) from a cyber cafe, or some other completely untrustworthy machine...
_ The bureaucracy is expanding to meet
the needs of an expanding bureaucracy.
The broswer checks that the hostname in the CN field of the certificate matches the hostname it thinks it is connecting to. This blocks the mitm attack.
If we want to go along man-in-the-middle argument and take it to its painful conclusion then I could demonstrate several ways that even citification authorities could be compromised. Let's divide the network up into client and vendor, just for simplification.
Firstly the CA has to get their key to the vendor in a secure manner. With ssl I guess it comes in the browser distribution but that's hackable - especially if you can con a luser into downloading their software from a mirror site. A small number clever mods and they'll accept certifiates signed by "Tom's Dodgy Porn Emporium" as authoritative. Who checks browser software nowadays?
Then the vendor needs to contact the Certification Authority and convince them that he is the person that one should issue a certificate too. For this to be secure there needs to be another secure exchange between the vendor and CA - otherwise the vendor would be doing nothing that I couldn't do from my bedroom. If there is no secure exchange channel then the vendor will have to log on to the CA's site and check that no extra certificates haven't been added since yesterday - as a sysadmin I can categorically state that I hate and don't do daily routine checks.
Then the client needs to get the correct certificate for the CA. In the case of SSL that's usually bundled in the browser - again prone to the same problems as the vendor/browser transfer.
Finally there's the reliance that the CA's integrity: If they go down the pan then so do you.
Think of it this way: for the CA model to work one needs at least three instances of secure/trusted information exchange plus a reliance on the CA. Each individual compromise might be harder to accomplish but given all these complications, I'd rather just give bob a bell and asking him what his fingerprint is. Preferably call him/her on the digital cellphone, though - analog lines are so prone to listening/man-in-the-middle interception.
In short there's no subsitute for awareness. I remember that famous quote "if I can get you to su and do something simply by telling you to, then we have a mammoth security problem", and it's so true in this instance.
ps: By the same author "Newsflash: water is wet!"
If you want better protection than that, the best solution is to hack OpenSSH or what not to only accept a key with a given key fingerprint for a given IP. In other words, if the host key is changed, the hacked client will not connect to the host in question. In OpenSSH the directive StrictHostKeyChecking does exactly this, provided the IP in question is in your known_hosts file.
Ha! I kill me!
I find the quest for the holy grail of perfect encryption/perfect protocol rather odd.
Why do we put locks on doors? To stop people walking in an stealing our stuff, So lets lock the windows, fair enough better security, people are less likely to break in that good. Fit an alarm?
So why not fit better locks? etc etc every upgrade costs money, and as it gets more expensive I get less return on my money. However this is completely ignoring one factor, insurance!
My SSL connection to buy a porn flick via my credit card... Hmm, how much do I care about it being broken.. well a thief just wants my number, my gf might be interested in my buying porn.
My GF does not have the skills to break the encryption, so SSL is secure. A thief, well so long as the Credit Card company pays up if someone else uses it I really don't care.
A tool should be fit for the job, SSL with real world insurance is seccure for credit cards, the day they don;t pay out, SSL falls!
James
Shopper John wants to make a purchase at the Acme store. He gives his credit card to clerk Mike, who's handles the transaction with the credit company. In the meantime, he makes note of the number and expiration date. The flaw isn't merely digital...it's also in the way transactions usually too intimately involve more people than it should.
But isn't the purpose of the Doomsday machine lost if you keep it a secret!
We've known since the beginning that SSH was maleable. Most people know not to use it for high security -- it's just there to keep the casual observer from grabbing passwords/keys. It's there to slow down someone who really wants to get to you, not stop them.
Sheesh.
-Chris
...More Powerful than Otto Preminger...
What this guy needs is a "freshman shooters course". Every FAQ, HOWTO, Guide for Lamers states that the most dangerous process is the key exchange. If you don't trust the channel don't exchange keys. JUST DON'T DO IT!!! Grab a disquette, write the key, pick an envelope and send it to Alice's Aunt in the name of your dog. That's if you and Alice are thousands of kilometers apart and you are damn paranoid. On smaller distances it is much simpler. On local networks it should not be a great problem. Depends on the sysadmin and your colleagues but hey, Alice is a desk away... If you are a sysadmin it SHOULDN'T be a problem. If this doesn't happen then what are you administering?
That's the main problem. Key trnasfer. And this is the same problem as transferring and storing cypher books, passwords and many other things. In the rest SSH has shown that problems drop several orders of magnitude.
Now a problem. Why do I need a third party here? I need thrid parties only for a very specific set of problems. I can come to Alice and drop the key in her computer. Now in cases of extreme paranoidism I may ask a third party to do that job for me. For example, I know that Alice's Uncle is really angered for kicking his car. And I still remember what he said about me and Alice with that old rifle in my nose. But I do trust that Alice's Aunt will deliver her my diskette...
Other case is chenging info with a party I do know too much. For example a commercial transaction with some e-shop. We may use a third party we trust to process our transactions.
However, in these two cases we have a problem. We should trust the third parties. And the level of trust depends on how good I know them, if the channel between me and them is secure and what do I need them for. Interknowledge is something quite relative. We see many third parties in e-commerce and even don't know a thing about them. It does not matter too much if we just wanna buy a computer and we don't want our credit/debit card numbers being stollen. The problem of the channel gets up to the same level as Alice's problem. What if someone intercepts this "certificates" and keys? In the end, the need. Do I need them for e-commerce? Sure. For my local network. No thanks! Wanna come? Cool, where's the AK-47? It's our private property and no one has a damn to do here. I can myself run over the workstations and exchange the keys...
Besides there is a problem of centralization. Certifications are a form of centralization. What may happen when huge corps, states, mobs, large and small nets, individuals and computers will be tighten to such a thing? Forcing certifications over everything is the biggest error possible. That will break exactly the fundament of public key encryption, that each individual has the possibility to set its own key for private exchange of information. Such move will be the revival of such things like CLIPPER...
Listen, if they can decrypt one of my keys to get a secure transaction, then let them have my credit card number. That is all I have to say. Not like I cannot get the money back or anything like that. I still feel that nothing is 100% secure, but I can say that SSl is nothing to fool around with. Especially if you are building it straight from source and you are your own authority. Crack it?? Maybe, but I will leave that up to some 14 year old in Germany. VPNs are ok and they have their own leaks as well. There are more hacks for VPNs than there are for SSL/SSH1
Firstly, as mentioned in the article, you can subvert DNS at the initiating end of the chain so that the initiator of the SSH actually talks to the hacker's PC instead of the target; since the hacker is proxying the connection the remote end doesn't matter. Subverting DNS? As easy as adding a line to the hosts file, although access to BIND's files is obviously better.
Secondly, if you have access to the router (see The Default Logins DB), you can redirect traffic through your workstation transparently. There is a nice article on this in the current issue of Phrack for Cisco (and presumably compatible) routers. Everyone trusts a router, remember?
Not trivial, maybe, but it's definately possible to do this in the wild with the right tools if you are determined enough. Remember; most hacks are internal, and most serious hacks are leveraged to increasingly higher levels of priviledge from the original exploit.
UNIX? They're not even circumcised! Savages!
The host's private key *may* change if you upgrade the OS, wiping out the existing installation first, and don't bother to back up the private key. This is a sign of laziness and/or cluelessness on the part of the sysadmin. In general, the host's private key never changes, so this article is actually scarier than the reality.
___
___
If you think big enough, you'll never have to do it.
Fine, someone go fetch me a two year old child.
Yeah... because, heck - who needs a whole solution to rest the security of their business on?
I don't relate to your analogy - I think "don't trust the power cables to be safe just because they are switched off" is more like it, but it is still rubbish.
How about, trusting a certificate authority to certify keys is like trusting a Government to decide what is right and wrong rather than using the old "respect and love your neighbour" approach that has worked in the past. Most people are happy (or at least, full and content), and the Government makes a lot of money, but the people are not free.
No, I've got one that's much better - "it's like trusting a secretary of another company with sealing the envelopes of important letters"
If the guide is not respected, or the material not cared for, confusion will result, no matter how clever one is.
how can I say this nicely.. there are open bugs in windoze that will never be fixed and never be reported because the only people who know about them are using them for their own personal gain. I'm not saying that the windoze SSH client is inherently more insecure than the linux one (after all, you can get ssh source and compile it on win32.. oh but wait, there is the fact that virtually no-one does any testing on win32 and as such there could be holes that are windoze specific that no-one has found, but I'm sure you use a proprietory ssh client anyways), what I'm telling you is that windoze machines are inherently more insecure. I am telling you in no uncertain terms that if you run a windoze box you are not even closed to secure.
As for security minded people not running trojans.. it's a part of email culture. My friends don't think so I'm not going to think either. And it's only this one time.
How we know is more important than what we know.
Hasn't anyone here read applied cryptography? The man-in-the-middle attack has been known about for years. This is not a "new" attack as reported in the article. This is however the first I've seen a ready to use implementation of the attack.
I would rather get fired than have management dictate security issues to me. Thankfully I've never run into that kind of pigheadedness. If the geek says it aint safe, it aint safe.
How we know is more important than what we know.
I don't think twice about giving my credit card to a waiter at a restraunt, although its rather easy for the waiter to use the information to charge false expenses to my account (and it has happened to other people before). Its nice to have security holes pointed out, but really, locks are to keep honest people honest, any transaction is potentially insecure, and it pays to double check any financial records you receive to find any false charges or transactions. I don't fear this hole, statistically speaking, I suspect real life is a lot riskier.
As long as one side is authenticated via public key crypto, a man in the middle attack is not possible, period. If the server's Diffie-Hellman half is signed, then either you have a clear, secure connection to the server at the end (assuming no man in the middle) or the man in the middle has a clear, secure connection, which he could have made anyway on his own. The server is never tricked into thinking an attacker is you, and you are never tricked into thinking an attacker is the server.
In other words, if one (or both) or the Diffie-Hellman halfs are signed, an attack against the secure channel will 1) fail or 2) be easily noticed by the victim - when his connection doesn't work.
In your article you wrote:
;) )?
> Hopefully this will spur on the adoption of
> secure network protocols such as DNSSEC and
> IPSec.
Please do tell me why the SSL protocol/system is less secure than the IPSEC and DNSSEC protocols/system? Or is someone soon going to write another long article and introduce a similar software for IPSEC and DNSSEC, and say "End of IPSEC". If you can't then how about telling us the real reasons why you wrote your article.
I fail to see how IPSec will be less vulnerable to such MITM attacks. Esp if you still want to serve up web pages to anonymous users.
I don't know much about DNSSEC, but my guess is that attacks are just as valid given your scenarios where invalid certs are accepted voluntarily (click Yes and all that).
For example, with SSL, say the clients don't present a cert, you can only do a MITM attack if you can get a suitable server cert from Verisign, or the clients press OK.
Assuming the clients don't "press OK", if Verisign/Network Solutions also operates the DNSSEC system/authority, how will DNSSEC add security as it'll be operated by the same bunch who hypothetically gave you a similar SSL cert (and also the same bunch who were using Mail-to "authentication" for their domain hijacking service
The only thing new I see in your article is that there is software to make the first few steps easier.
However, it still requires some screw ups. So I fail to see anything interesting in that respect.
I can't comment much on SSH for I don't use SSH - I took a brief look at it some time back, went "Ick!" and walked away, and there's been evidence that I was right to do so.
Cheerio,
Link.
one thing i do for that not compleltly paranoid(who are not on a publicly accessable network at all) is copy the hosts public key onto a floppy that the users can carry around. (and hope does not break. id love to find burnable credit card sized cd-roms)
there can be other variations of this trick, like a web site to go to (on a different host) etc. that would at least make it much harder to spoof successfully.
So use the same key on all of the servers who would have the same host name.
-- The act of censorship is always worse than whatever is being censored. Always.
Although the article is essentialy correct, not that it brings up anything new that hasn't been known for years. The fact remains that Diffie-Hellman is not used for key verification but key exchange and generation. Diffie-Hellman generates a symetric key for use with other algorithms, as was its design. Only later was it modified for use in PGP and other such applications as ElGamal. This is indicitive of the problem with much of the discussion of security these days. Every two bit hack thinks he can simplify the whole thing down to, something like public/private keys are insecure. Without actually understanding the nature of the problem.
Most of the Red Hat updates list are for insecure temporary file usage. Who knows what programs are doing *that* under Windows. Probably no-one not exploiting it ever will.
-- The act of censorship is always worse than whatever is being censored. Always.
I'm behind a firewall on a VPN, please explain to me how this causes my Windows SSH client to be any less secure against this form of attack than any other? No? I didn't think you could.
Syllable : It's an Operating System
...dsniff qualifies as "script kiddie" material. It's a collection of tools that require a reasonable amount of understanding of network protocols in order to use effectively.
- Toby
If you don't run an ftp server, and a telnet server then you can't have people using unencrypted protocols. But people insist on running these protocols.
/etc/inetd.conf, then either reboot or kill -1 [pid] where [pid] is the process id of the inetd daemon).
Sometimes it is the users, particularly those users with authority over you (like the ones who sign your paycheck). If they demand a service despite your protestations that the service in question compromises security, you are left with little choice but to provide the service knowing full well that it creates a security hole in your network, or look for a new job. In this case it is the user's fault, not the administrator's whose advice is being ignored or overridden.
That being said, you make an excellent point. The first thing anyone should do when building a new system is install ssh (including sshd) and disable telnet and ftp (on Linux/Unix: comment out the two entries in
As we've seen in this article, running ssh isn't a panacea, but it is a hell of a lot better than using no encryption at all
The Future of Human Evolution: Autonomy
He didn't mean windows ssh clients, but the OS itself. (Wrong word choice, but that's the idea he was trying to convey, and I agree with that btw). Windows is inherently insecure, and the ssh client can only be as secure as the OS it runs on. OTOH, Linux has a quite good security model. Things like Melissa/ILOVEYOU are simply impossible on Linux.
___
___
If you think big enough, you'll never have to do it.
Sigh. You just have to be careful the first time you connect your two sites with SSH. After that the other host already has the public key, and if a third party then tries to intercept and replace it then ssh detects it and cries foul. TA
The ad baner at the top of the page is for VeriSign:
"Secure your site with 128 bit SSL Encryption"
You've mentioned how to get the victim to talk to you, that's the first step and there's a variety of ways (like for example, just using TCP highjacking) but the hard part is when you start to do that transaction. You have to take that code, decrypt it, re-encrypt it, send it on it's way. It's a lot of code, and if it has bugs it can spell disaster. But frankly, it's a non-issue if ssh is doing it's job. If when the message comes up "the remote server key has been changed, SOMEONE COULD BE MONITORING YOU RIGHT NOW" any admin worth his salt will say "I didn't change the server key, hey Tony! Did you change the server key?" and eventually just step over to the machine in question and login to the console. If it's a remote machine they'll probably pick up the phone and give someone a call. There's some sort of secondary chanell they can go through to identify what is happening.
How we know is more important than what we know.
If each administrative domain could maintain its own key-signing/authentication service, then at least enterprises, ISPs, and the like could provide solid security between their own systems. Contact between such entities could be preceeded by "out-of-band" authentication or exchange of keys (e.g. something like a PGP key signing party, a phone call, or an exchange of keys signed by a trusted third party).
The flexibility of the current approach could be maintained, with added levels of trust ranging from completely secure to completely open to "man-in-the-middle" attack.
There is still the possibility of abuse, however, as the "trusted third party" (particularly in the case of ISPs) could easilly be subverted by a law enforcement or spook agency into signing counterfeit keys. Indeed, they could legally be required to do so with legislation akin to the wiretapping laws requiring phone companies to provide technical facilities that facilitate evesdropping by law enforcement on demand.
The Future of Human Evolution: Autonomy
I just can't see how having signed keys for SSH would help anyone. Unlike SSL, you don't just connect to an arbitrary host with SSH. Someone set up an account for you, and sent you a password. Didn't they also send you the fingerprint? If they didn't, then security isn't that important to them.
I know quite a few people that don't bother to lock their cars. They don't care about security. Are cars broken because they don't care?
See that "Preview" button?
The interlock protocol, invented by ron rivest and adi shamir, has a good chance of foiling the man-in-the-middle attack. Here's how it works:
- Alice sends bob her public key.
- Bob sends alice his public key.
- Alice encryptions her message using bob's public key. She sends half of the encrypted message to bob.
- Bob encrypts his message using alice's public key. He sends half of the encrypted message to alice.
- Alice sends the other half of her encrypted message to bob.
- Bob puts the two halves of alice's message together and decrypts it with his private key. Bob sends the other half of his encrypted message to alice.
- Alice puts the two halves of bob's message together and decrypts it with her private key.
The improtant point is that half of the message is useless without the other half; it can't be decrypted. Bob cannot read any part of alice's message until step 6; Alice cannot read any part of bob's message until step 7. There are a number of ways to do this:- If the encryption algorithm is a block algorithm, half of each block (e.g., every other bit) could be sent in each half message.
- Decryption of the message could be dependent on an initialisation vector, which could be sent with the second half of the message.
- The first half of the message could be a one-way hash function of the encrypted message and the encrypted message itself could be the second half.
To see how this causes a problem for Mallory, let's review his attempt to subvert the protocol. He can still substitute his own public keys for alice's and bob's in steps 1 and 2. But now, when he intercepts half of alice's message in step 3, he cannot decrypt it with his private key and re-encrypt it with bob's public key. he must invent a totally new message and send half of it to bob. When he intercepts half of bob's message to alice in step 4, he has the same problem.Has anyone tested dsniff 2.3 against the Stanford SRP? SRP has several different aspects from SSH, and is advocated by many as a more secure alternative to SSH. It wraps legacy applications like telnet and ftp around an encrypted package. Also, I would be curious from anyone who uses SRP to see if dsniff can be modified to exploit SRP. Thanks!
I only use protocol 2 & do not allow password authentication.
I must have the users public key installed in their authorized_keys2 file BEFORE they are even allowed. Currently they have to mail it to me on a floppy for me to add it.
However it would still be vulnerable to a man in the middle attack (which is what the paper is about) until i figure out to keep OpenSSH from sending the public key to any client that tries to connect. Instead I want to send them a floppy with the public key on it and use it instead.
Oh and under OpenSSH client it creates a fingerprint of the destinations public key under the first connection, so this attack only works the first time a user connects to the machine. Otherwise the fingerprints won't match.
Kevin
So what should we sshd users do? Sounds like the following would be prudent:
-
When you have trusted (eg. physical) access to your host machine, put its public key on a floppy and take it with you.
-
Add that key to the client machine's known_hosts file yourself, thereby skipping that first insecure connection.
-
Also save a copy of the private key somewhere. Then if you reinstall ssh, you don't have to change keys.
-
Never make a connection if the key has changed.
Sounds somewhat labour intensive. Can any of this be automated? If you have several hosts, can you safely use the same key pair for all of them?--
Patrick Doyle
Patrick Doyle
I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
For those that want to check out dsniff itself, the URL is:
http://www.monkey.org/~dugsong/dsniff/
Clever stuff...
--
Blaming GW Bush for the Iraq war is like blaming Ronald McDonald for the poor quality of food.
I'm also pretty sure that rebooting the system isn't supposed to change the key. So what else is there that can legitimately change a key?
(And yes, I *did* try to RTFM. Checked the SSH specification, but that just says that hosts MUST have keys and MAY have multiple keys. STFW didn't help either; bunch of tech support announcements that some host somewhere was changing its key.)
Actually even quantum-based security requires a a channel which is non-interceptable to work
Really? What about this then? Using entangled photons appears to actually get around this problem.
Good point, probably quite a few. (Athough, %TEMP% under Windows 2000 is not a shared directory.)
I don't think you can plausibly apply the interlock protocol to SSH. When I log into a server, I expect a conversation in which each side reads the message from the other before generating their own messages. If that's the fundamental top-level conversation, any attempt to impose an interlock underneath that, unbeknownst to the communicating parties, can be spoofed.
Interlock only works if the actual communicating parties know they're interlocking. No attempt at automated interlock is going to work, because the MITM can separately spoof two separate interlocked conversations.
No, the correct answer is strong password protocols like SRP and B-SPEKE, as another poster has already observed ("Encrypted Key Exchange").
--
Xenu loves you!
Yes, I guess the fact the QuantumG's ORIGINAL post (#31) was talking about the SSH clients themselves was why I was responding to the remarks made about windows ssh clients.
I *do* agree that windows machines are not as easy to secure as their Linux counterparts. Linux is the OS of choice for me and I keep all my important information on Linux. I administer a number of Linux machines as I believe they make better servers for efficiency, security and stability than windows machines.
This topic though talks about vulnerabilities of SSH/SSL, and while it may be that programs running under windows MAY be more susceptible to attack and possibly even be suspect themselves, the actual USE OF SSH/SSL (in terms of encrypting network traffic) is not really any different between OS's - windows is no more vulnerable than Linux in that respect I think. Client programs (of ANY kind) being secure is a slightly different problem - it's certainly related! - but it's a different problem.
--
Delphis
Strong password protocols are the Correct Answer to this problem. If one party (the client) can't carry around the keys needed for strong authentication of both parties, if all you can carry is a password in your head, then strong password protocols like SRP, B-SPEKE, and some others on their way (AMP) are the correct route to strong security. The most effective attack known on these protocols is
1. Decide which end you want to spoof - client or server
2. Choose a guess at the password
3. Do a protocol run.
3a. If you're pretending to be the client, try and log on using the password you've guessed.
3b. If you're pretending to be the server, somehow persuade the client to try and log onto you thinking you're the real server.
4a. If you guessed the password correctly, congratulations! You've successfully spoofed your way in.
4b. If you did not guess the password correctly, you lose! And you have learned *nothing* except that your guess was wrong.
5. If you want to have another guess, you'll have to return to step 1 and persuade the other end to play with you again. They may tire of this game before you do.
(Caveat. Password files have to be kept secret for this: compromise that and you can spoof the client into thinking your the server, while running a dictionary search against them on your supercomputers. Guard password files)
Strong password protocols are Right and Good and should be used everywhere that stronger authentication is not available. Remember to use key stretching on your passwords too.
--
Xenu loves you!
I meant to say: explanation of key stretching, and the paper about it.
--
Xenu loves you!
Under some circumstances, an intruder who is able to observe an SSL-encrypted session, and subsequently interrogate the server involved in the session, may be able to recover the session key used in that session, and then recover the encrypted data from that session.
The vulnerability can only be exploited if the intruder is able to make repeated session-establishment attempts to the same vulnerable web server which was involved in the original session. In addition, the server must return error messages that distinguish between several modes of failure. Although the number of session-establishment requests is large, it is significantly more efficient than a brute-force attack against the session key. Note that, although web servers comprise the majority of vulnerable servers, other PKCS#1-enabled servers may be vulnerable.
Note that the server's public and private key are not at risk from this vulnerability, and that an intruder is only able to recover data from a single session per attack. Compromising a single session does not give an intruder any additional ability to compromise subsequent sessions. Further, as mentioned above, this vulnerability does not affect all PKCS#1-enabled products.
Snipped from CERT advisory CA-98.07.PKCS
Here is an OpenSSL issue
OpenSSL bypassing
Last but not least there is ssldump, an SSLv3/TLS network protocol analyzer which identifies TCP connections on the chosen network interface and attempts to interpret them as SSLv3/TLS traffic. When it identifies SSLv3/TLS traffic, it decodes the records and displays them in a textual form to stdout. If provided with the appropriate keying material, it will also decrypt the connections and display the application data traffic.
Someone said they'd never heard of issues with SSL made me want to get the info on this so apologies for making a redundant post if it seems this way. This does not include issues with Mozilla, Netscape and IE and SSL since it would've taken a lot more space...
home sweet home
Thanks for the memories
Encrypted key exchange algorithms such as SRP and SPEKE provide strong password authentication which is resistant to all known passive and man-in-the-middle attacks. An added benefit is that they authenticate the server to the client as well as the other way around. And all this is done without PKI and without even requiring particularly strong passwords.
/etc/shadow, passwd and requiring all users to change their password to move to the new system is never going to be very popular with system administrators.
Why are they not in widespread use? It might have something to do with the fact that (AFAIK) all these algorithms are patented. SRP is patented by Stanford but apparently they allow it to be used without licensing fees in free software.
Another problem is that these algorithms cannot be used with the existing password databases. Replacing critical components such as
----
Stop worrying about the risks of nuclear power and start worrying about the risks of not using nuclear power.
In Summary: Man in the middle attacks are a tough problem, but solvable so long as the end user pays attention.
No one seriously concerned about security should be surprised. (If you are suprised, perhaps your serious concern should lead you to do a bit of research.)
I was a bit dismayed to find the error, (Regarding man in the middle attacks on SSH) "If this is the first time you are connecting to a host and you do not have the server's public key locally, you will be none the wiser." Actually, the first time you connect to a host, SSH 1 generously mentions "Host key not found from the list of known hosts. Are you sure you want to continue connecting (yes/no)?" (You can disable this behavior, but that's a Bad Idea (tm).) If you're really concerned, you can get the server's public key through a secure channel.
Search 2010 Gen Con events
But anyone can get a server certificate. Sure, it won't have to same user-info as that in the server, but how many users check that?
Now, W is talking to Z, and since Z was presumably smart enough to supply a question it can answer, W will never know that its speaking to Z instead of X.
/etc/ssh_host_key.pub to the ~/.ssh/known_hosts key you just got; if they're different, watch out! It would have to be a very smart sniffer program to realize 'cat /etc/ssh_host_key.pub' and all other variations should get the 'fake' key substituted in.
Not entirely true.
If you are using SSH to connect to a machine, the automated key exchange and authentication may be 'impossible' to do without being vulnerable to man-in-the-middle attacks. However, once you've logged in, compare the
bah. I have seen a few people intercept SSH before but only at demonstrations. I knew all of these guys and they said they have never wanted for accounts - there's enough unencrypted traffic to not bother going after the encrypted traffic. If there is one box that no-one connects to without using ssh, it is almost always connected to from an insecure box and, at present, there is nothing to stop tty sniffing. I wont even bother mentioning people who use windoze ssh clients. On most "secure" networks, ssh is the strong link in the weak chain. As for SSL, I have never seen an intercept of SSL by anyone who didn't have the SSL certificate.
How we know is more important than what we know.
First it was firewalls, then intrusion detection systems, then VPNs, and now certification authorities (CAs) and public-key infrastructure (PKI). "If you only buy X," the sales pitch goes, "then you will be secure." But reality is never that simple, and that is especially true with PKI.
Certificates provide an attractive business model. They cost almost nothing to make, and if you can convince someone to buy a certificate each year for $5, that times the population of the Internet is a big yearly income. If you can convince someone to purchase a private CA and pay you afee for every certificate he issues, you're also in good shape. It's no wonder so many companies are trying to cash in on this potential market.With that much money at stake, it is also no wonder that almost all the literature and lobbying on the subject is produced by PKI vendors. And this literature leaves some pretty basic questions unanswered: What good are certificates anyway? Are they secure? For what?
Taken from a prior document written by Bruce Schneier which can be found here.
Man in the middle attacks have been rampant for some time now so I don't know why anyone would use an article such as this for 'clarity's' sake where security is concerned. Sure it assists in dealing with issues and bringing them to light but when you need that much of a level of trust the easiest way to circumvent ANY man in the middle attack or any other form of an authentication issue can be achieved simpler via way of verifying a PGP key id over the phone before any trusted information is encrypted and sent down the wire using any key.
Would've made a nice longer post but Monday morning hangovers leave me feeling pissy
My Slashdot Spoof
Thanks for the memories
What is the problem with SSL?
The client (web-browser) has the public key of the CA (certificate authority), so it can verify the server's identity. It can then use the public key of the server to send a random number to the server, and ONLY somebody knowing the server's private key, will know this number. This establishes a shared secret between the server and the client, and should prevent the man-in-the-middle attack that is described in the article.