<?xml version="1.0" encoding="UTF-8"?>
<step>
  <created-at type="datetime">2008-03-19T20:47:41-07:00</created-at>
  <deleted-at type="datetime" nil="true"></deleted-at>
  <id type="integer">17378</id>
  <lesson-id type="integer">7009</lesson-id>
  <lesson-version-id type="integer">16230</lesson-version-id>
  <position type="integer">1</position>
  <updated-at type="datetime">2009-07-30T09:05:16-07:00</updated-at>
  <contents type="array">
    <content type="TextContent">
      <asset-id type="integer" nil="true"></asset-id>
      <created-at type="datetime">2008-03-19T20:47:41-07:00</created-at>
      <deleted-at type="datetime" nil="true"></deleted-at>
      <description>&lt;div style="text-align: center;"&gt;Alternate data streams have been around since the beginning of the NTFS file system.&amp;nbsp; Apparently it was originally created to provide compatibility with HFS. (an old Mac file system.) &lt;br&gt;&lt;/div&gt;&lt;p&gt;&lt;br&gt;ADS allows you to fork file data into existing files without affecting their functionality, size, or display.&lt;br&gt;Sexy? I think so! The only thing someone using this covertly has to worry about is timestamps.&lt;br&gt;&lt;br&gt;Lets just get right to it:&lt;br&gt;If you wanted to fork A.exe into B.txt it would look like this:&lt;br&gt;&lt;/p&gt;&lt;p&gt;open the command prompt:&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br&gt;type A.exe &amp;gt; B.txt:A.exe&lt;br&gt;&lt;br&gt;...and then to execute A.exe:&lt;br&gt;&lt;br&gt;start ./ B.txt:A.exe&lt;br&gt;&lt;br&gt;Thats all folks. &lt;br&gt;If you arent scared at this point you werent paying attention or you arent a system or network admin.&lt;br&gt;&lt;br&gt;Allow me to throw some scenarios for the use of this type of thing:&lt;br&gt;&lt;br&gt;1. Hacker Harry gains entry to a network. Harry realizes that further entry may be gained by investigating the network further, but for that Harry needs tools... tools that any admin will notice are sitting on a server.&amp;nbsp; Harry then finds a nice little driver directory and uses the lovely dlls to fork a plethora of tools for further use without changing the drivers functionality, size or raising any eyebrows from the admins.&lt;br&gt;&lt;br&gt;2.&amp;nbsp; Johnny malware writer wants his program to hide inside of a target machine and do his evil bidding but doesnt want the user to find and destroy it.&amp;nbsp; Johhny has the evil program hide itself into the system by forking into a known windows application like notepad.&amp;nbsp; Johnny can then call the program from that location.&lt;br&gt;&lt;br&gt;3. Slick Adrian decided to make a secret web page, accessable only to him containing sensitive information he wouldnt otherwise trust to be on his server.&amp;nbsp; He made a php page and forked it in a jpg and was able to call it from the web using a url syntax like:&lt;br&gt;http://whatever.org/image.jpg:secret.php&lt;br&gt;&lt;br&gt;4. Frisky Tom wanted to hide his porn collection.&amp;nbsp; He forked all his dirty movies into word documents.&amp;nbsp; He could even specify which player to open them:&lt;br&gt;C:\&amp;gt;"C:\Program Files\Windows Media Player\wmplayer.exe" "C:\MY_MATH_HW.doc:UBER_PRON.avi"&lt;br&gt;What a forking perv!&lt;br&gt;&lt;br&gt;&lt;br&gt;Here are some other things to keep in mind:&lt;br&gt;&lt;br&gt;1. Theres no size limit to the streams in ADS.&lt;br&gt;&lt;br&gt;2. You can put more than one stream on a normal file.&lt;br&gt;&lt;br&gt;3. ADS can also be used with directories. &lt;br&gt;Be aware that if you make one against the root of a drive I believe its impossible to remove (barring a reformat)&lt;br&gt;&lt;br&gt;4. A user can only create an ADS where they have write access.&lt;br&gt;&lt;br&gt;5. Windows File Protection does not protect from adding streams to system files. &lt;br&gt;&lt;br&gt;6. MS has nothing on the OS or resource kits for detecting ADS. You're gonna have to go third party!&amp;nbsp; Lucky you theres some good stuff out there, LADS being a popular one: http://www.heysoft.de/nt/lads.zip&lt;br&gt;&lt;br&gt;7. Streams can only be executed if called directly and usually with the full path to the file given. In other words, you dont execute a stream accidentally.&lt;br&gt;&lt;br&gt;8. ADS only work on NTFS file systems.&amp;nbsp; If you push a file with a stream on it to a FAT filesystem the stream dies, not the file. &lt;br&gt;&lt;br&gt;&lt;br&gt;Anyways, have fun with this. I hope Ive opened a whole new world of possibilities for you for better or worse.&amp;nbsp; Please remember this is just a basic intro into ADS, please see the references and do your own research!&lt;br&gt;&lt;br&gt;Ive also attached a video so you can see this type of thing in action. Its not very long but it gets the point across.&lt;/p&gt;&lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt;</description>
      <id type="integer">33928</id>
      <lesson-id type="integer">7009</lesson-id>
      <position type="integer">1</position>
      <step-id type="integer">17378</step-id>
      <style-id type="integer">1</style-id>
      <updated-at type="datetime">2009-07-30T09:06:18-07:00</updated-at>
    </content>
    <content type="MediaContent">
      <asset-id type="integer">8111</asset-id>
      <created-at type="datetime">2009-07-30T09:06:27-07:00</created-at>
      <deleted-at type="datetime" nil="true"></deleted-at>
      <description nil="true"></description>
      <id type="integer">33929</id>
      <lesson-id type="integer">7009</lesson-id>
      <position type="integer">3</position>
      <step-id type="integer">17378</step-id>
      <style-id type="integer">1</style-id>
      <updated-at type="datetime">2009-07-30T09:06:27-07:00</updated-at>
    </content>
  </contents>
</step>
