‹header›
‹date/time›
Click to edit Master text styles
Second level
Third level
Fourth level
Fifth level
‹footer›
‹#›
(Introduce yourself.)
(Name the presentation)
Steganography comes from the Greek root words “steganos” and “graphein”, which literally means “covered writing”
Steganography is the act of hiding a secret message within a cover-medium.
The primary goal of steganography is to hide the fact that communication is taking place.
Steganography is NOT the same thing as cryptography.
Steganography is used to hide the presence of a message or communication, whereas cryptography is used to obscure a message or communication so that it cannot be understood. It’s common practice to use cryptography to obscure a message prior to using steganography to hide it.
(List the terms shown in the slide.)
A simple example of steganography is to use a specially crafted cover-text to hide the message. This steganographic system relies on prior knowledge of the system in order to decode the message.
In this case, we use the first letter of each word in the cover-text.
Using this method, you have to specially craft your cover-text, which may result in improbable sentences or suspect communication which could potentially give you away.
(List traditional methods as shown in the slide.)
Microdots are tiny dots or holes drawn or punched into the paper.
Our previous example is an example of a traditional method of steganography. Traditional methods have generally relied on the secrecy of the encoding method.  An excellent example of this is shaving a messenger’s head, tattooing a message on it, then waiting for the hair to grow back before sending the messenger.  With traditional methods, once the system is known, it is trivial to detect thus breaking the steganographic system.
When most people think of modern methods of steganography, they consist of ways to digitally embed the message data into cover data, however those are not the only methods available.
(List Modern Methods as shown in slide.)
A goal of modern digital methods is that they attempt to only be detectible if a shared secret or key is known.  This is similar to the common understanding in cryptography that the security of a cryptographic system should lie solely in the key information because the protocol and algorithm should be assumed to be publicly known.  Like cryptography, you should assume that the steganographic protocol and algorithm are publicly known.
Some of the more popular plain text methods in the days of print media were to design a steganographic system by pre-determining which characters or words in a given cover text were to be used to re-construct the message, much like our previous example of selecting the first letter from each word. Now that electronic media is prevalent, other methods have arisen such as introducing white-space characters like extra spaces and tabs. Many applications like word processors and web browsers tend to compress sequences of multiple white-space characters so that they do not display and appear to the naked eye.  The applications can detect these and know they are there, but a human just looking at the display most likely will not.
Snow uses spaces and tabs as bits, representing ones and zeros, and will append up to 7 white space characters to the end of every line of a text file. Snow gets it’s name from it’s method, which stands for steganographic nature of white-space.  What they’re referring to is that human eyes probably won’t detect it. Snow uses the ICE encryption algorithm to encrypt the message prior to embedding it in the cover-medium.
Because hypertext is usually marked-up plaintext, most plaintext methods can be applied to the hypertext. You can also use hypertext tags that will not display in a browser to hide messages, such as the html comment tag (<!–- comment -->), hidden form fields, etc. Also, the placement or existence of certain content in the presentation of a webpage can be used to convey a message, such as if an image exists or appears in a certain place or if the navigation menu is ordered in a certain way.
Messages can be hidden in audio files or in the audio itself.
The human-inaudible audio spectrum can be used to transmit a message that a computer would be able to detect, or Musical tones and lengths of notes in the actual audio can be used to convey messages. Morse code is a simple example of an audible encoding that could potentially be included in a musical track, such as creating the entire musical score out of quarter and eighth notes, representing dashes and dots. And of course, you can digitally embed a message into the bits of the data file itself.
Digitally embedding a message in a cover-medium generally involves two basic steps:
Identifying the cover-medium’s redundant bits
Deciding which of the redundant bits to use to embedding your message by modifying those.
In most digital mediums I’ve used steganography with, the redundant bits are generally one or more of the least-significant bits of each data byte or each represented value in the cover-medium.
Media formats in general tend to be very inaccurate data formats because they don’t need to be accurate.  The human ear is not very good at differentiating sounds. For example, recording the same orchestra performance with two separate recording devices will produce vastly different recordings when viewed digitally, but will generally sound similar if recorded in a similar manner. Changes in an audio bit-stream can be done so slightly that when played back the human ear won’t be able to distinguish the difference between the cover-audio file and the stego-audio file. With Audio, you can use the least-significant bits from each byte of the data as the redundant bits with which to embed data.
(Go over the content of the slide)
As you can see, only four of the eight bytes of data actually changed values.
Obviously using this method, the cover-medium needs to be at least 8 times the size of the message in order to make embedding the entire message possible.
S-Tools 4 is a Windows application.
It can operate on both audio and image files, but we’ll be using it for an audio example using a WAV file.
Using S-Tools is literally a drag-and-drop affair.
Drag your cover-medium file directly into the window.
Note in the bottom right-hand corner how much data your host file can hold.
anomaly1.wav is about 270k.  If you’ll notice, the amount of embedded data it can hold is roughly 1/8th of that.
Drag the message that you are embedding directly onto the cover-medium as displayed in S-Tools, which will bring up the Hiding data dialog. Notice that it supports multiple types of encryption with which to obscure your message prior to embedding it. After selecting the type of encryption you want to use and entering a pass phrase, it will perform the steganographic process and the hidden data object will appear.
Right click the hidden data window to save your output file.
Note that the waveforms are nearly identical.  Only very detailed manual analysis or a digital analysis would uncover the difference.
(Click on the speakers and play the files!!!)
As you can hear, the audio files are identical to the human ear.
Extracting a message is basically a reverse of the process.
Drag the stego-medium file into S-Tools.
Right-click on it and select reveal.
Type in your pass-phrase and SELECT THE SAME ENCRYPTION ALGORITHM USED WHEN EMBEDDING!
Hidden file will be revealed, right-click on it to save it.
Video is similar to audio in the methods you can use to hide your message.
You can also use some of the hypertext techniques since video is a visual medium such as presence or absence of objects in the recorded environment. Other visual clues can be used to convey a message such as hand or foot positions or eye blinks from the recorded subjects. And of course you can digitally embed a message in the bits of the video file itself.
Some methods for embedding a message in cover-imagery include:
Using slightly different colors.
Digital watermarking.
Digitally embedding a message into the data of an image file.
A good example of using slightly different colors to hide a message is the logo for the SNOW tool we discussed earlier. Notice the ample amount of white-space above the word SNOW in the logo.  There is actually an image hidden there. This is the image’s color table from Photoshop 7.  Most digital image manipulation tools will have something similar to view an images color palette. By looking at the color palette for the image, we can see there are actually two separate white values with only a single bit difference (FFFFFF & FFFFFE).  The difference between the two whites is indistinguishable to the human eye.
By changing the color value for the second white value to something with more contrast, the image becomes visible.
Yes, it’s supposed to be a polar bear in a snowstorm.
Before we get into digitally embedding a message into an image’s data, we need to cover some basics. Images vary between resolutions and how many colors they can display and as such some images are better suited to steganography than others.
An images BPP value tells us how many colors an image can display.
Using steganography with 8-bit images have a lot of hurdles to overcome.
8-bit images use an index of colors rather than using actual color values to represent colors, and store the actual color values in a color table.
This is also sometimes referred to as it’s color-map.
This color-mapping creates an entire set of unique problems to overcome when manipulating bits in the image. A single bit change in a pixel value could potentially map to a completely different color which could drastically change the way the image looks. We won’t be discussing methods for using steganography with 8-bit images in this presentation and will instead be focusing on 24-bit images.
24-bit images are preferable to 8-bit images because each pixel has more bits within which to hide a message. In a 24-bit image, each pixel is represented by 3 bytes, one byte each for Red, Green, and Blue, which allows the color values to be stored directly in the image and does not require the use of a color-table. Slightly manipulating color values stored this way will result in a color who’s value is extremely close to the original. A 24-bit 1024x768 image provides over 2 million pixels within which to hide a message, each pixel being three bytes each. Obviously, a file with the characteristics that we’re talking about will be a fairly large image and is still rather uncommon on the Internet.
Images this large may stand out or attract attention unless compressed.
Compression may also be required to make an image this large feasible to transfer on low-speed connections or networks.
Types of image compression are categorized as lossy and lossless.
Lossless compression allows the user to reconstruct the entire original image upon decompression, thus it does not interfere with a stego-image’s integrity. Lossy compression however will loose some of the original image’s data, therefore it will interfere with your communication when uncompressed. Some examples of formats using lossless compression are GIF and BMP.  An example of a lossy compression format is JPEG. If you were to convert your stego-image from a GIF to a JPEG and back it will more than likely compromise the integrity of your stego-medium.
Small color palettes don’t allow much opportunity for embedding data because there is not a lot of variation between values in the cover-image. Large areas of solid colors are also difficult to embed within because the effects of manipulation are easily spotted.
Images with a LARGE color palette are desirable for cover-images.
Lots of subtle color variations allow more opportunity for hiding the embedded data.
Landscapes and Portraits generally make excellent cover-images.
Images that distract you make excellent cover-images.  Who would be thinking about looking for hidden data when viewing this image?
Similar to the audio example we discussed earlier, you can use the least-significant bits of each byte to embed a message. Because each pixel’s color value is represented by three bytes, you can hide three bits of data in each pixel. This allows for a relatively large amount of data to be embedded within an image, however it’s still only 1/8th the size of the cover-image. Compressing your message prior to embedding it can allow for an even larger amount of data to be hidden.
(Go over the contents of the slide)
Note again that when using the least significant bits of each byte, only about half of the values are actually changed.  On average this ratio holds true. If needed, even the second least-significant bits could be used without the differences becoming noticeable to the human eye, which would double the amount of data an image could potentially hold.
There are a wide range of methods used to identify which redundant bits from a cover-medium you want to use.
These methods usually make up what could be compared to the algorithm component in cryptography and include methods like
Using all of them
Using a key or bit mask for selection
Random distribution or complex formulas, and
Selection based on cover-image analysis which is usually done in an attempt to thwart Steganalysis.
I’m not going to cover the various methods of identifying which redundant bits to use to embed a message because it could most likely fill an entire hour by itself.
* This is outguess’ description blurb.  Basically it says it’s a generic steganographic engine.
Outguess was designed as more of a steganography framework.
The core of Outguess does the work of encrypting the message and inserting the message into the cover-medium. Separate, independent “data-handlers” for individual cover-medium types handle the identification of redundant bits and selection of which redundant bits to use.
Outguess employs a number of techniques to help prevent the detection of steganography in potential stego-mediums. The primary thing it does for imagery is preserve image data statistics so that statistical analysis the images will not identify steganographic manipulations. Studying the other techniques that Outguess uses in an attempt to reduce the chances of detection are left as an exercise for the curious.
To embed: outguess –k “my password” –d message.txt cover.jpg stego.jpg
To retrieve: outguess –k “my password” –r stego.jpg message.txt
Messages can be embedded into existing network traffic that a host is generating or a host is forwarding.
Also, network traffic can be generated specifically for the steganographic communication.
Some protocol headers have fields that are reserved for future use, only used under certain circumstances, or become irrelevant or un-needed as it traverses the network stack.
Depending on the data type, you may even be able to use the data payload as a cover-medium.
Some things to avoid when attempting to use steganography with network traffic: Using optional header fields or header fields that are likely to change in transit could result data loss. Header fields like IP options which might be stripped, changed, or modified in transit or upon fragment reassembly are poor choices of locations to hide your data.
The variations in types of network traffic provide for many potential uses of steganography. Using TCP sessions provide the potential for full-duplex communications due to it’s connection-oriented nature. Multicast UDP or ICMP, for example, could be used for broadcast of a steganographic message.
Some examples of usable network header fields include:
The IPID field in the IP header (RFC 791)
TCP SYN packet’s initial sequence number (ISN) (RFC 793).  Nomad’s Ncovert tool’s method simulates a SYN scan and uses this field.
Various ICMP types have different amounts of unused space in their headers (RFC 792)
Routing control messages have various fields that can be used.
Some examples of usable payloads include:
ICMP Echo Request/Reply’s payload which only requires that the payload match to be functional, usually disregarding the actual content of the payload
Video or Audio traffic can allow for slight changes without damaging the integrity of the data as we’ve demonstrated earlier in our audio example.
Yesterday intropy had an idea for this tool and I coded it up last night so we’d have another demo and some code to release. It will basically take your message, convert it to hex, and send it as part of a GET request to a web server, which should log the request. You can then use it to parse the web server logs on the receiving side to extract your message.
Encryption not only provides another layer of protection for your message, it also makes the hidden message more difficult to detect.  It has been discussed previously that uploading a stego-image back to the digital camera that took the original cover-image could help obscure it .  Pictures “still in the camera” may be less suspicious than pictures in a directory called “steg” on your computer. By destroying the original cover-medium, there is less chance of an attacker being able to find it and compare it to the stego-medium to analyze the differences.
Steganographic systems inherently leave detectable traces in a cover-medium’s characteristics, potentially allowing an attacker to detect it. This detection reveals that covert communication is taking place, thus defeating the main goal of steganography.
Steganalysis is the processes and methods of attempting to defeat steganography through analyzing potential stego-mediums for the traces of steganographic modifications. Earlier I briefly touched on attempting to prevent against identification of your stego-medium through analysis. These two competing aspects, Steganography and Steganalysis, foster an arms race of technology and techniques. Steganalysis is a topic that can get as in-depth, if not more, than steganography itself and would make a good topic for a future presentation.
These papers are excellent introductions to Steganography and a few of them get a little more technical than this presentation and are highly recommended if you are interested in further exploring technology. The noted RFC’s are a bland read but you all already know them by heart anyway, right?  Take a look through these and other network protocol RFC’s and you’ll be amazed at the abundance of unused and reserved space in the protocol headers as well as header fields that are used for singular purposes and may be able to be used or modified without impact to their function.
This is a list of tools that we’ve mentioned or covered in this presentation as well as a few you may want to evaluate on your own.