[Written on February 27th 2004]
[Updated on April 5th 2005]

Fake steganography and fake security (again):
Data Stash v1.1b and v1.5



Steganography strength (is it easy to see there is hidden data?): Low
Cryptography strength (is it easy to recover the hidden data?): Low




1. Introduction



A company called Skyjuice Software from Singapour is selling some softwares. I like their nice logo made with the kanji character for "water". One of their programs is supposed to be a steganography software, it's called Data Stash v1.1b. It costs from 20 US$ to 350 US$ depending on the license.

If you don't want to read the technical details, here is an abstract: it's another one of these programs doing fake steganography and fake encryption, and the security level is zero (yawn).



2. Reading the doc



The documentation on their website is surprisingly devoid of snake oil. Very down-to-earth and descriptive, no exagerated claim of "world-class" or "military grade" security. Damn. I cannot even have some fun.

For example, they say "Password protection using Blowfish encryption". Well. That sounds serious. But it's actually a joke, as we will see later. They don't encrypt your data.

And there is this claim: "Supports a wide variety of file formats" and that the carrier file can be "any file you'd like to use", which makes me guess it's still another of this kind of fake steganography that adds "hidden" information at the end of the carrier file, without checking any file format, with the hope that it won't mess up with anything. Then they say that: "The receptacle file remains fully functional, looks and behaves similar to what it was before". You wish.

Okay. Enough with this claim. I've read it too many times. Adding some stuff at the end of files does mess with some of them. A few file formats actually have fields that are defined from the end of the file, not the beginning. For example, ID tags in MP3 audio files. Here is a demonstration. It's a MP3 with or without data "hidden" with DataStash, playing in Windows Media Player. As you can see, when you add some bytes at the end with this "steganography" program, the player becomes unable to read the information inside the ID tag, like the title of the album, song and group names. Because it cannot read it, it displays the name of the file instead. It's just a simple example, there may be many more, and especially some cases where the file actually becomes totally unreadable.


Original MP3
MP3 with hidden information




2. How data is hmmm... "hidden"



No need to copy/paste some hexa dump here. This program works exactly the same way as two other ones I analyzed some time ago called Safe and Quick File Hide, and Steganography. Basically, the "hidden" files are actually included in a ZIP archive, and this ZIP archive is fused at the end of your carrier file.

But the funny part is coming now.

Let's test the Blowfish encryption option. If it was real, nobody should be able to decrypt the "hidden" information, because Blowfish is a serious strong crypto algorithm. You may see that there is hidden data (which, by the way, is enough to consider a steganography algorithm to be broken), but you would be unable to extract it if you don't have the password.

Of course here it's not the case. They think they encrypt your data, but they don't. Same basical error than with this odd program called Steganography.

On the following table I will compare the "hidden" information (a small text file called "hiddenmessage.txt") fused after a small JPG image file. For the first one I won't set a password. For the second one I will set a password, so the "hidden" data should become encrypted with Blowfish. Let's have a look. In white, the end of the JPG file. In yellow, the "hidden" ZIP file (how hidden!). In red, some stuff added by Data Stash at the end.


No password

Offset  0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

0110   03 01 00 02 11 03 11 00  3F 00 87 B0 01 2A 7F FF   ........?._.*._
0120   D9 50 4B 03 04 14 00 00  00 08 00 21 00 5B 30 45   +PK.......!.[0E
0130   E5 98 AD 06 00 00 00 04  00 00 00 20 00 00 00 7A   _........ ...z
0140   6F 75 62 2F 64 61 74 61  73 74 61 73 68 2F 68 69   oub/datastash/hi
0150   64 64 65 6E 6D 65 73 73  61 67 65 2E 74 78 74 4B   ddenmessage.txtK
0160   4C 4C 4C 04 00 50 4B 01  02 14 00 14 00 00 00 08   LLL..PK.......
0170   00 21 00 5B 30 45 E5 98  AD 06 00 00 00 04 00 00   .!.[0E_.......
0180   00 20 00 00 00 00 00 00  00 00 00 20 00 00 00 00   . ......... ....
0190   00 00 00 7A 6F 75 62 2F  64 61 74 61 73 74 61 73   ...zoub/datastas
01A0   68 2F 68 69 64 64 65 6E  6D 65 73 73 61 67 65 2E   h/hiddenmessage.
01B0   74 78 74 50 4B 05 06 00  00 00 00 01 00 01 00 4E   txtPK..........N
01C0   00 00 00 44 00 00 00 00  00 00 BC 01 B2 00 BC 01   ...D......+._.+.
01D0   B2 00 01 00 00 00 21 01  00 00 36 25 16 36 AE C7   _.....!...6%.6
01E0   36 40 B6 DA 2C B3 E3 68  FA 74                     6@+,ht
Password "a"

Offset  0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

0110   03 01 00 02 11 03 11 00  3F 00 87 B0 01 2A 7F FF   ........?._.*._
0120   D9 50 4B 03 04 14 00 00  00 08 00 21 00 5B 30 45   +PK.......!.[0E
0130   E5 98 AD 06 00 00 00 04  00 00 00 20 00 00 00 7A   _........ ...z
0140   6F 75 62 2F 64 61 74 61  73 74 61 73 68 2F 68 69   oub/datastash/hi
0150   64 64 65 6E 6D 65 73 73  61 67 65 2E 74 78 74 4B   ddenmessage.txtK
0160   4C 4C 4C 04 00 50 4B 01  02 14 00 14 00 00 00 08   LLL..PK.......
0170   00 21 00 5B 30 45 E5 98  AD 06 00 00 00 04 00 00   .!.[0E_.......
0180   00 20 00 00 00 00 00 00  00 00 00 20 00 00 00 00   . ......... ....
0190   00 00 00 7A 6F 75 62 2F  64 61 74 61 73 74 61 73   ...zoub/datastas
01A0   68 2F 68 69 64 64 65 6E  6D 65 73 73 61 67 65 2E   h/hiddenmessage.
01B0   74 78 74 50 4B 05 06 00  00 00 00 01 00 01 00 4E   txtPK..........N
01C0   00 00 00 44 00 00 00 00  00 61 FB E1 2C 63 B8 18   ...D.....a_,c+.
01D0   2B F0 01 00 00 00 21 01  00 00 36 25 16 36 AE C7   +_....!...6%.6
01E0   36 40 B6 DA 2C B3 E3 68  FA 74                     6@+,ht


You already guessed what's wrong. Only the underlined bytes have changed. In other words, you set up a password, thinking you are using the secure Blowfish algorithm, and your data is not encrypted! I don't even know what these changing bytes contain, but I suspect it's the password itself, or some hash of it, probably encrypted (because nothing else changes). So you use a password to encrypt the password. A new concept, probably.

Well, enough laughs. If you want to extract the "hidden" data, with or without a password, just extract the yellow bytes in an hexa editor, rename this with a .zip extension, and open it with Winzip. Wow, that was tough to crack.

[Update 2005 April 5th : the new version 1.5 was very weak too, and once again didn't use Blowfish to encrypt the data. So the hidden files were very easy to retrieve. I didn't really have the time to write a technical article about it. The author was notified and DataStash is right now under re-development.]



Have a nice day!




     Guillermito, February 27th 2004





[Back]