TTSSH: An SSH Extension to Teraterm
Various traffic
analysis vulnerabilities have been discovered in the SSH protocol. TTSSH
has been modified to provide as much protection as anyone knows how to provide.
The modified version is TTSSH 1.5.4.
Many people ask me whether or not TTSSH will support SSH protocol version 2.
It does not and it will not. There is an SSH2-capable Teraterm available from
Yutaka
Hirata. Note that I have not used it and cannot vouch for the code.
Putty
is also a good free SSH2-capable Windows SSH client.
What TTSSH Is
TTSSH is a free SSH client for Windows. It is implemented as an extension DLL
for Teraterm Pro.
Teraterm Pro is a superb free terminal emulator/telnet client for Windows,
and its source is available. TTSSH adds SSH capabilities to Teraterm Pro without
sacrificing any of Teraterm's existing functionality. TTSSH is also free to
download and use and its
source is available too,
with an open source/free software license. Furthermore,
TTSSH has been developed entirely in Australia, and can be exported from here to
anywhere in the world (apart from places where people aren't allowed to own
cryptographic software at all :-( ). There is even some documentation.
To be more precise, the current version of TTSSH (1.5.4) includes the following
features:
- Compatible with SSH protocol version 1.5
- Ciphers: 3DES, Blowfish, DES (RC4 and IDEA are also included but must not be used)
- Server authentication using the ssh_known_hosts database (including the option
of adding a server's key to the database)
- Authentication using password, RSA, rhosts, rhosts+RSA, TIS challenge/response
- Compression support
- Connection forwarding, including full support for X connection forwarding
Note that TTSSH is just an SSH client and does not include any other SSH tools
(scp, ssh-keygen, ssh-agent, etc). Furthermore, because it's tied into Teraterm, it's only
suitable for interactive use. For non-interactive uses such as interprocess
communication, you want
a straight port of the Unix client.
What's New
- March 21, 2001: TTSSH 1.5.4
has been released. This version provides some protection against traffic
analysis by padding the transmitted SSH password with NULs.
- February 15, 2001: I have released source and binary code for
TTSSH 1.5.3. This version is identical to 1.5.2 and 1.5.1 except
that it completely disables the use of RC4 and IDEA algorithms because of security problems
with those algoirthms as used in SSH1.
- February 15, 2001: Recently there have been many advisories reported
regarding weaknesses in the SSH1 protocol and various implementations. Only one of them affects TTSSH:
a vulnerability using IDEA. (There are also various
vulnerabilities involving RC4 but TTSSH disables that by default.) The immediate solution is to
use the "Setup | SSH ..." menu to disable IDEA (and make sure RC4 is still disabled).
- September 22, 2000: RSA's patent on the RSA algorithm has
expired. Therefore, it is now completely legal to use the standard
"international" TTSSH package within the USA.
- July 12, 2000: I released TTSSH source version 1.5.2
under a BSD license. This means anyone is now free to do almost anything
they want with the source code. I did not change the actual code; TTSSH 1.5.1
is still the latest binary release.
- January 18, 2000: I revised the warning about the
RSAREF security bug, based on further examination of the LIBEAY32 code.
- December 7, 1999: A
security bug has been found in RSAREF.
- October 18, 1999: TTSSH 1.5.1 released. This fixes
a few bugs in port forwarding introduced in version 1.5. Thanks to Dean
Thompson and Attila Filetoth. The bugs in 1.5 do not introduce
vulnerabilities, but only because I was lucky. I've released the new
version because I don't like depending on luck (and it should make
some of the forwarding features work again).
- September 27, 1999: TTSSH 1.5 released. This includes several bug
fixes and TIS authentication (thanks to Dean Thompson for help with that). See below
for a list of bug fixes.
SSHv2 is NOT supported; I just don't have the resources
to do it, especially since I can only work on it during the few weeks each year I'm
outside the US, and that time is important to me for other reasons. I'd be happy for
someone else to pick up the code and add it :-). NOTE: if you are perfectly happy with
v1.4, you shouldn't bother upgrading.
- December 7, 1998: TTSSH 1.4 released! I've fixed most of
the known bugs, added proper support for X forwarding and UI for all the
forwarding options, and added a couple of other doodads ("/ssh-autologin" option,
in particular --- see the
documentation page for details.
- November 3, 1998: A lot of people have been asking me when
TTSSH will support SSH 2.x. Unfortunately SSH 2.x is a very big, complex
protocol and looks a lot of work to implement from scratch. Also,
it looks like it will be hard to integrate all its features into Teraterm without
significantly modifying the design of the main Teraterm application. There's no way
I'll have enough time overseas in the foreseeable future to undertake this project,
sorry. I hope there are other people with more time and freedom...
- July 7, 1998, version 1.3: An overseas friend (thanks jch!)
was able to insert the
CORE-SDI patch
to guard against the SSH insertion attack. At the same time he fixed a few bugs.
Download now!
Note that, due to an oversight, the version number in the file was not updated.
To check the version, note that TTXSSH.DLL version 1.3 is 158,208 bytes long.
- June 24, 1998: I finally wrote
some documentation.
- June 24, 1998: I'd just like to remind everyone that I cannot fix any
bugs at this time, because I will not jeopardize the worldwide distribution of TTSSH by
touching the code while I'm in the United States. (I'd also like to avoid prosecution and/or
deportation.)
- June 24, 1998: To work around a bug that prevents TTSSH from seeing
when a new configuration file is specified by the "/F" option, I have created a new
version of TTSSH.EXE. See the
documentation page for details.
- June 6, 1998, version 1.2: Connection forwarding added and a few bugs
fixed. Since I'm returning to the USA tomorrow, this will be the last release for
several months unless an overseas maintainer is found.
- June 3, 1998, version 1.1: RSA, rhosts, rhosts+RSA support added.
Default authentication options dialog box added. ttxssh.exe added.
Numerous bugs fixed (thanks DK).
- June 1, 1998, version 1.02: Another bug fix. Non-SSH sessions used to crash
at the end of the session.
- June 1, 1998, version 1.01: Oops! I released the debug version by mistake and it
didn't work for many people. Replaced it with the correct release version.
- May 20, 1998, version 1.0: Initial release.
How to Obtain and Install TTSSH
Currently TTSSH is only available for Win32 platforms (Windows 95 and NT).
Support for Windows 3.1 is plausible but I don't have the tools to build it.
Perhaps someone will be able to help with this. Furthermore, it's only
available for Intel platforms. Again, I don't have the tools to compile it
anywhere else, and someone else may be able to help.
The following instructions will also serve to update an old version of TTSSH.
Just say "yes" whenever it asks to overwrite a file.
- Download and install
Teraterm Pro
2.3 if you haven't already.
- Download the TTSSH software package.
- Unzip it into the directory where you've already installed Teraterm 2.3.
This will create files LIBEAY32.DLL, TTXSSH.DLL and TTSSH.EXE.
- Run "TTSSH.EXE" and the extension should be available.
You should see a new "SSH" option in the "New Connection" dialog box and new menu items
"Setup / SSH...", "Setup / SSH Authentication..." and "Help / About TTSSH...".
- If you have problems, make sure there is a copy of MSVCRT.DLL in your
SYSTEM32 directory. The latest build of TTSSH requires this (this was an
error in the build process, sorry).
How to Use TTSSH
There is now a TTSSH documentation page.
What the Government Wants You to Know
This code contains cryptographic software covered by US ITAR regulations
and by the laws of various countries. Its distribution and use may be
restricted by these laws and regulations. In particular, it is probably
illegal to make the binary code publically available at a US site.
What I Want You to Know
All the usual free software legalese applies. There are no warranties
of any kind. The software is provided entirely "as is", and use is entirely
at the discretion and risk of the user. Enjoy!
Who to Thank
- This code started with Ian Goldberg's Top Gun SSH for the Pilot.
- It makes use of Eric Young's cryptographic library, taken from SSLeay 0.8.1.
His copyright notice is included as LIBEAY.TXT. The LIBEAY32
used by TTXSSH is a plain "out-of-the-box" build.
- This code uses the GNU zlib library (version 1.0.4). That library is
(C) 1995-1996 Jean-loup Gailly and Mark Adler.
- The TTSSH 1.3 upgrade was done by Jonathan Hardwick, zephyr prince.
- Dean Thompson helped me test the TIS support, and helped with some logistical
issues with the 1.5 release.
- Attila Filetoth spotted some bugs in the port forwarding code.
- Finally, this would not have been possible without the cooperation of T.
Teranishi. Many thanks!
What to Do About Bugs
TTSSH has been tested in Windows 95 and NT 4.0. Mileage with other platforms
may vary, but I'm interested in getting bug reports. However, please only send me bug
reports for the latest version of TTSSH!
Bugs fixed in version 1.5.1 over 1.4:
- Starting non-SSH sessions by using "New Connection" from an SSH session now works.
- Disconnecting and then starting a new SSH session in the same window now works.
- Port forwarding options on the command line should now work correctly.
- Rejected connections to forwarded ports now display the attacker IP address correctly.
- Machines with multiple network interfaces should now be able to connect to local
forwarded ports correctly.
- Added some buffering to decrease the chances of locking up during heavy forwarding
traffic (i.e. to work around the lack of flow control in the SSHv1 forwarding protocol).
- Fixed possible crash during protocol initialization.
- Authentication options now correctly reflect which options are enabled at the server.
- Removed unnecessary client-server round trip delay when remote forwardings are
configured.
- Maximum packet size limited to 4MB and other fixes to protect against network
denial of service active attacks crashing TTSSH.
- Default to non-privileged port so that users going through firewalls don't have
as many problems.
Known bugs:
- Sometimes the remote host will disconnect and the window will not close even if
you've specified "close window on disconnect". This happens when a dialog box or
message box is showing when the disconnect is detected. This is actually a Teraterm
"feature", and there's nothing I can do about it.
- Using multiple extensions at once (e.g. having SSH and SSL installed at the same time)
does not work.
What the Terms and Conditions Are
You can download and use TTSSH for absolutely free. If you want to redistribute it,
that should be fine, but check the README.TXT file included in the package.
Note that the terms for the source package are a bit looser, so if you build your
own version of TTSSH then you have even more rights.