<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Checkmate &#187; Disk Forensics</title>
	<atom:link href="http://niiconsulting.com/checkmate/category/disk-forensics/feed/" rel="self" type="application/rss+xml" />
	<link>http://niiconsulting.com/checkmate</link>
	<description>An Information Security Blog by NII Consulting</description>
	<lastBuildDate>Fri, 02 Dec 2011 08:26:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Dump password of application pool user from IIS &gt;= 6.0</title>
		<link>http://niiconsulting.com/checkmate/2010/11/19/dump-password-of-application-pool-user-from-iis-6-0/</link>
		<comments>http://niiconsulting.com/checkmate/2010/11/19/dump-password-of-application-pool-user-from-iis-6-0/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 13:07:15 +0000</pubDate>
		<dc:creator>Dhiraj Ranka</dc:creator>
				<category><![CDATA[Disk Forensics]]></category>
		<category><![CDATA[application pool]]></category>
		<category><![CDATA[dump password]]></category>
		<category><![CDATA[least privilege]]></category>
		<category><![CDATA[sharepoint]]></category>

		<guid isPermaLink="false">http://niiconsulting.com/checkmate/?p=292</guid>
		<description><![CDATA[IIS Application pools are used to separate sets of IIS worker processes that share the same configuration and application boundaries. Application pools used to isolate our web application for better security, reliability, and availability and performance and keep running with out impacting each other . The worker process serves as the process boundary that separates [...]]]></description>
			<content:encoded><![CDATA[<p>IIS Application pools are used to separate sets of IIS worker processes  that share the same configuration and application boundaries.  Application pools used to <strong>isolate </strong> our web application for better  security, reliability, and availability and performance and keep  running with out impacting each other . The worker process serves as the  process boundary that separates each application pool so that when one  worker process or application is having an issue or recycles, other  applications or worker processes are not affected.<br />
One Application Pool can have multiple worker process. (Ref:<a href="http://technet.microsoft.com/en-us/library/cc735247%28WS.10%29.aspx">http://technet.microsoft.com/en-us/library/cc735247%28WS.10%29.aspx</a>)</p>
<p><strong>Main Point to Remember: </strong><br />
1.  Isolation of Different Web Application<br />
2.  Individual worker process for different web application<br />
3. More reliably web application<br />
4. Better Performance</p>
<p>It may happen that while managing or testing multiple web applications we create many application pool(s) in the IIS. Thus, there is always the possibility that we may forget the password of an account that we have used for the some application pool. In order to retrieve the credentials we can use the utility called <strong>APPCMD</strong>.</p>
<p><span id="more-292"></span></p>
<p><span style="color: #a6a6a6; font-size: 18pt;">Let&#8217;s Start</span><strong><br />
</strong><br />
<strong> 1. </strong>Let us assume that we have forgotten the password of the account that is used by a &#8220;<strong>Demo User</strong>&#8221; application pool.</p>
<div id="attachment_299" class="wp-caption alignnone" style="width: 310px"><a href="http://niiconsulting.com/checkmate/wp-content/uploads/2010/11/AppPool.jpg"><img class="size-medium wp-image-299" src="http://niiconsulting.com/checkmate/wp-content/uploads/2010/11/AppPool-300x227.jpg" alt="" width="300" height="227" /></a><p class="wp-caption-text">Application Pool</p></div>
<p><strong>2.</strong> Open the command prompt by browsing Start menu -&gt; Accessories -&gt; Command Prompt. Right click on Command prompt and select &#8220;<strong>Run as Administrator</strong>&#8221; option from the context menu.</p>
<p><em>Tip: You can also select CMD and press <strong>CTRL + Shift + Enter </strong>to Start Command Prompt as Administrator or with Machine Administrator rights </em><strong> </strong></p>
<p><strong>3.</strong> Browse the following path on command prompt &#8220;<strong>%systemroot%\system32\inetsrv</strong>&#8221; and run <strong>APPCMD list apppool &#8220;Demo User&#8221; /text:*</strong></p>
<p>(The directory will most likely be<strong> C:\Windows\System32\inetsrv</strong>)</p>
<p><strong> </strong></p>
<p>Replace <strong>&#8220;Demo User&#8221; </strong>with the App Pool name of which you want to retrieve the password.</p>
<div id="attachment_300" class="wp-caption alignnone" style="width: 310px"><a href="http://niiconsulting.com/checkmate/wp-content/uploads/2010/11/Command.jpg"><img class="size-medium wp-image-300" src="http://niiconsulting.com/checkmate/wp-content/uploads/2010/11/Command-300x32.jpg" alt="" width="300" height="32" /></a><p class="wp-caption-text">Command</p></div>
<p><strong>4.</strong> Under the <strong>[processModel]</strong> section you will get the username and password which is in <strong>Clear Text</strong> .</p>
<div id="attachment_301" class="wp-caption alignnone" style="width: 242px"><a href="http://niiconsulting.com/checkmate/wp-content/uploads/2010/11/Output.jpg"><img class="size-medium wp-image-301" src="http://niiconsulting.com/checkmate/wp-content/uploads/2010/11/Output-232x300.jpg" alt="" width="232" height="300" /></a><p class="wp-caption-text">Output showing credentials</p></div>
<p><span style="color: #a6a6a6; font-size: 18pt;">Remediation &amp; POC<br />
</span><br />
The remediation for this is very simple; use service accounts like Network Service, Network, etc. So, even if someone has access to the system and tries same steps as above to retrieve the user account password, he wont be able to do that.</p>
<p><strong>1.</strong> Application pool &#8220;<strong>Dos</strong>&#8221; with Network Service account</p>
<div id="attachment_312" class="wp-caption alignnone" style="width: 310px"><a href="http://niiconsulting.com/checkmate/wp-content/uploads/2010/11/AppPoolNS.jpg"><img class="size-medium wp-image-312" title="AppPoolNS" src="http://niiconsulting.com/checkmate/wp-content/uploads/2010/11/AppPoolNS-300x227.jpg" alt="" width="300" height="227" /></a><p class="wp-caption-text">Application Pool for Network Service</p></div>
<p><strong>2.</strong> Running the same command as we ran in earlier in this post i.e. <strong>APPCMD list apppool &#8220;Dos&#8221; /text:*</strong></p>
<div id="attachment_313" class="wp-caption alignnone" style="width: 310px"><a href="http://niiconsulting.com/checkmate/wp-content/uploads/2010/11/CommandNS.jpg"><img class="size-medium wp-image-313" title="CommandNS" src="http://niiconsulting.com/checkmate/wp-content/uploads/2010/11/CommandNS-300x34.jpg" alt="" width="300" height="34" /></a><p class="wp-caption-text">Command</p></div>
<p><strong>3.</strong> Checking the output</p>
<div id="attachment_314" class="wp-caption alignnone" style="width: 235px"><a href="http://niiconsulting.com/checkmate/wp-content/uploads/2010/11/OutputNS.jpg"><img class="size-medium wp-image-314" title="OutputNS" src="http://niiconsulting.com/checkmate/wp-content/uploads/2010/11/OutputNS-225x300.jpg" alt="" width="225" height="300" /></a><p class="wp-caption-text">Output for Network Service</p></div>
<p><span style="color: #a6a6a6; font-size: 18pt;">Note<br />
</span></p>
<p>The above technique which we have tested against IIS 6.0 will also work with IIS 7.0 and IIS 7.5, as these versions also provide support for the utility for legacy reasons.</p>
<p>I guess this highlights why <strong>least-privilege</strong> is so important when assigning privileges to application services on servers. In a scenario where the server is compromised, the  Final word for IIS administrators, always use a least-privilege user account for SharePoint or any other web application installation or deployment, simply means that Application Pool account should not have more permissions than needed.</p>
<p>&#8211;</p>
<p>Dhiraj</p>
]]></content:encoded>
			<wfw:commentRss>http://niiconsulting.com/checkmate/2010/11/19/dump-password-of-application-pool-user-from-iis-6-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Carving Issues</title>
		<link>http://niiconsulting.com/checkmate/2006/12/07/data-carving-issues/</link>
		<comments>http://niiconsulting.com/checkmate/2006/12/07/data-carving-issues/#comments</comments>
		<pubDate>Thu, 07 Dec 2006 16:15:46 +0000</pubDate>
		<dc:creator>Chetan Gupta</dc:creator>
				<category><![CDATA[Disk Forensics]]></category>
		<category><![CDATA[Fundamentals]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.niiconsulting.com/checkmate/2006/12/data-carving-issues/</guid>
		<description><![CDATA[by Chetan Gupta, NII Consulting Many a times as an investigator, I have to deal with the issue of carving data from unallocated spaces in a partition. There are many commercial data carving tools such as Encase, Winhex, Accessdata FTK, DataLifter, ILookInvestigator. Well, I have tried most of these and must say most of them [...]]]></description>
			<content:encoded><![CDATA[<p>by <strong>Chetan Gupta, <a href="http://www.niiconsulting.com//">NII Consulting</a></strong></p>
<p>Many a times as an investigator, I have to deal with the issue of carving data from<br />
unallocated spaces in a partition. There are many commercial data carving tools such as Encase, Winhex, Accessdata FTK, DataLifter, ILookInvestigator. Well, I have tried most of these and must say most of them have their share of pros and cons.<span id="more-38"></span> Encase has the widest  range of file types supported and also gives the ability to add more file types (you need to   know the header and footer for sure). But if the file system is heavily fragmented, then data carving becomes less effective.<br />
There are three main issues with data carving:</p>
<p>1. Most of the tools would be able to find the header but the footer may not be found in the same or the consecutive cluster. Then, the file would be carved with the minimum file size  specified by the investigator. Thus, the carved files may contain some gibberish at the end or may be incomplete and therefore unviewable.</p>
<p>2. The names of the carved files cannot be ascertained as the Master File Table or Superblock (in Linux) are not used during data carving process.<br />
3. As data carving is based on guess work, results may include many false hits and thus data carving may not be as reliable as required. Footer analysis and discarding overlapping file signatures may help reduce this problem.</p>
<p>Depending upon the situation, the investigator can choose his tool for carving. However, he  must understand the capabilities of the tool and the file signatures supported by it. in my experience, Encase  V5 has the most extensive signature database for carving among all tools. Foremost, Scalpel  and Winhex allow you to add custom signatures to the tool which is extremely useful. Sadly, FTKv1.50 doesn&#8217;t support adding additional signatures. Not sure, if they have added this capability in the coming versions.</p>
<p>Running foremost is pretty easy under Linux:</p>
<p># foremost -T -t all -o Output_directory  -i input_file<br />
-T &#8212; Put unique timestamp in the output directory name<br />
-t &#8212; File types to be carved. The file types supported can be tweaked by using the -c option and specifying the configuration file</p>
<p>The syntax of Scalpel is almost similar to that of foremost with minor changes. However, it   makes two passes over the unallocated data &#8211; the first pass in which it tries to identify the   files and the second pass in which it actually carves out the file. My experience with scalpel  hasn&#8217;t been great as with large files it would stop midway in the second phase throwing up some error.</p>
<p>Two interesting tools of note are <em>filesig </em>and <em>headergrab</em> which are both available <a target="_blank" href="http://www.filesig.co.uk">here</a>.<br />
From the horse&#8217;s mouth:<br />
Filesig Manager is a file signature and keyword management tool, acting as an examiners central repository of File Indentification information.<br />
The information within can be readily exported to the majority of mainstream forensic examination tools. Some of the features to date include:</p>
<p>* Export to Datalifter (Standard and Adv Signatures).<br />
* Export to DiskCat.<br />
* Export to File Extractor Pro.<br />
* Export to Encase version 3 and 4.<br />
* Export to iLook.<br />
* Export to ProDiscover.<br />
* Export to Simple Carver.<br />
* Export to WinHex Forensic.</p>
<p>Header Grab:<br />
Header Grab is a research tool, which allows the user to quickly extract the first eight bytes and last four bytes from every file within the specified folder.<br />
This is interesting as by generating few starting and ending bytes from multiple files of same type, we can identify the actual header and footer for the file type and is very useful in creating your own signature database!</p>
<p>They are available for free download at http://www.filesig.co.uk</p>
<p>For efficient data carving, the tools need to have built-in intelligence to identify the boundaries of a file. If the file is fragmented then it needs to have a mechanism to find the remaining fragment either by a hit and trial method (checking all the remaining clusters for the fragments of the file which may be highly time consuming) or by making intelligent guesses ( Eg checking the next 10 clusters for the remaining fragments of the file first and looking for the specific type of data associated with the file type for eg different segment headers of the file as in a Word Document) and then testing the resultant file.</p>
<p>A significant step towards solving these issues was taken by Digital Forensic Research Workshop (DFRWS) when they organized a data carving challenge available <a target="_blank" href="http://www.dfrws.org/2006/challenge/">here</a>. The challenge threw up some interesting results and some new tools by various researchers.</p>
<p>Happy data carving!</p>
]]></content:encoded>
			<wfw:commentRss>http://niiconsulting.com/checkmate/2006/12/07/data-carving-issues/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bad Superblock, corrupt inode tables and loads of bad luck!</title>
		<link>http://niiconsulting.com/checkmate/2006/12/07/bad-superblock-corrupt-inode-tables-and-loads-of-bad-luck/</link>
		<comments>http://niiconsulting.com/checkmate/2006/12/07/bad-superblock-corrupt-inode-tables-and-loads-of-bad-luck/#comments</comments>
		<pubDate>Thu, 07 Dec 2006 15:58:06 +0000</pubDate>
		<dc:creator>Chetan Gupta</dc:creator>
				<category><![CDATA[Case Studies]]></category>
		<category><![CDATA[Disk Forensics]]></category>
		<category><![CDATA[Fundamentals]]></category>

		<guid isPermaLink="false">http://www.niiconsulting.com/checkmate/2006/12/bad-superblock-corrupt-inode-tables-and-loads-of-bad-luck/</guid>
		<description><![CDATA[by Chetan Gupta, NII Consulting Well, last week was abuzz with activity when we had to recover data from a corrupt Linux hard disk. Thought it would be pretty easy but as soon as I loaded the hard disk, I knew something was amiss. I was in for a shock as the disk had severe [...]]]></description>
			<content:encoded><![CDATA[<p>by <strong>Chetan Gupta, <a href="http://www.niiconsulting.com//">NII Consulting</a></strong></p>
<p>Well, last week was abuzz with activity when we had to recover data from a corrupt Linux hard disk. Thought it would be pretty easy but as soon as I loaded the hard disk, I knew something was amiss.<span id="more-37"></span> I was in for a shock as the disk had severe damage in the beginning sectors. Still, encase was able to load the disk but could not show the file structure! Atleast it was showing the three partitions!<br />
What do we do?<br />
Well, the first step was to image the hard disk so that If I do mess up the hard disk, I can restore it to what was there originally. So, loaded FTK imager and used it to image it the hard disk into split raw files (since raw files are easier to use with Sleuthkit and other open source tools..)<br />
I had in my mind that encase will allow me to load raw files and anlayze so I thought I was on safe grounds! Well, the raw files filled up most of my forensic disk since they amounted to about 120 Gb of space! Neways, the idea was to run disk repairing tools on the conked hard disk and side-by-side run data recovery tools on the image. Well, not all plans execute to perfection&#8230;. this one sure didn&#8217;t! As soon as I loaded the split raw image into Encase, it crashed! Sure, it has problems with large split files. Then, I said to myself, &#8220;No problem, There&#8217;s sleuth kit for me&#8221;. What was not expected was that sleuthkit did not recognise the file system on the three partitions.</p>
<p>A simple strings on the first split image showed up interesting results &#8211; most of the files were quite intact although their beginning and end hardly recognizable from the big junk of words&#8230;and I saw the last fsck log which clearly stated that both primary and secondary superblocks were corrupt! WoW!</p>
<p>Anyways I tried rebuilding the superblock and inode table but to no avail. However, after the repair operation, I could run fsstat on the third partition but again it showed up 99% of the inodes to be free! I tried using fsck and using one of the secondary superblocks but it did not help. I guess the secondary superblock structures had got corrupted too!<br />
Then I said to myself,&#8221; May be data carving is the best option in this situaton&#8221;. I concatenated the split files, and created a huge raw file so as to feed my open source data carving monsters (read foremost and scalpel)! Foremost did carve out some data but largely false hits and scalpel never got going. It would stop midway during the all-important second pass! Next step was to use all available file carving tools (from winhex to encase to FTK) and collating valid files obtained from them. It was tedious but nevertheless, I could recover a lot of files (read gif, bmp, jpeg html, and mail files).</p>
<p>Data carving could be quite frustrating if the filesystem is hugely fragmented. I would discuss data carving in some more detail in my forthcoming article.</p>
<p>Hope you enjoyed reading this one though!</p>
]]></content:encoded>
			<wfw:commentRss>http://niiconsulting.com/checkmate/2006/12/07/bad-superblock-corrupt-inode-tables-and-loads-of-bad-luck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hiding data with Host Protected Area (HPA) in Linux</title>
		<link>http://niiconsulting.com/checkmate/2006/09/15/hiding-data-with-hpahost-protected-area-in-linux/</link>
		<comments>http://niiconsulting.com/checkmate/2006/09/15/hiding-data-with-hpahost-protected-area-in-linux/#comments</comments>
		<pubDate>Fri, 15 Sep 2006 10:49:35 +0000</pubDate>
		<dc:creator>Kush</dc:creator>
				<category><![CDATA[Disk Forensics]]></category>
		<category><![CDATA[Fundamentals]]></category>

		<guid isPermaLink="false">http://www.niiconsulting.com/checkmate/2006/09/hiding-data-with-hpahost-protected-area-in-linux/</guid>
		<description><![CDATA[By Kush Wadhwa, NII Consulting Have you ever thought of hiding data in such a manner that it cannot be deleted even after the hard disk is formatted? Well, in this this article , we&#8217;ll look at just that; we will see how you can hide and unhide crucial data on your hard disk. The [...]]]></description>
			<content:encoded><![CDATA[<p>By <strong>Kush Wadhwa</strong>, <a href="http://www.niiconsulting.com">NII Consulting</a></p>
<p>Have you ever thought of hiding data in such a manner that it cannot be deleted even after the hard disk is formatted? Well, in this this article , we&#8217;ll look at just that; we will see how you can hide and unhide crucial data on your hard disk. The technique which is used to hide the data is known as HPA which stands for Host Protected Area. Let us first discuss HPA&#8230;</p>
<p><strong>HPA</strong> &#8211; The Hidden Protected Area (also known as the Host Protected Area and as the Predesktop Area) is a special area (usually a few gigabytes in size) located at the end of a hard disk.</p>
<p>Since we have to calculate the hard disk space which is to be put in HPA, heres a little about hard disks sectors.</p>
<p><strong>Sectors -</strong> A sector is the smallest unit that can be accessed on a hard disk. Each platter, or circular disk of a hard disk is divided into tracks, which run around the disk. These tracks get longer as they move from the middle towards the outside of the disk, so there are more sectors along the tracks near the outside of the disk than the ones towards the center of disk.</p>
<p>1 Sector=512 bytes</p>
<p>Let us first see how many sectors are there in my hard disk which can be easily done using hdparm command.</p>
<p><img align="middle" alt="hpdarm command" src="http://www.niiconsulting.com/checkmate/wp-admin/images/0906/figure-1.jpg" /></p>
<p>From the above figure we can see that the total number of sectors present in the hard disk is  78165359 sectors. Converting given number of sectors in Gigabytes, we get 37.27214766 GB. To hide the data make separate partition (<strong>Note: This partition should be the last partition</strong>). HPA cannot be made in the beginning or in the middle of hard disk. Using sfdisk -luS  note the starting sector of the last partition. Let the starting sector of last partion be 64776751.Now I just want 64776751 sectors to be accessible and rest of the sectors should be in HPA mode. For putting the sectors in HPA mode I will use a small C code with a name <strong>setmax.c</strong> which can be downloaded from the link below.</p>
<p>http://www.win.tue.nl/~aeb/linux/setmax.c</p>
<p>To compile this program I will use gcc</p>
<p>[root@hack3rs root]#gcc -o setmax setmax.c</p>
<p>To  compile it in statically,<br />
[root@hack3rs root]#gcc -static -o setmax setmax.c</p>
<p>Since  64776751 sectors have to be made accessible we will do as follows:<br />
[root@hack3rs root]#./setmax &#8211;delta 64776751 /dev/hdc (depending on your device name).</p>
<p>&#8211;delta option will make temporary HPA. If you want to make permanent HPA then use &#8211;max option with setmax.<br />
Congratulations! you have hidden your last 8388608 sectors which is equivalent to 4GB. You can make sure if your hard disk is in HPA mode or not by using <strong>disk_stat</strong> which comes with sleuthkit. Sleuthkit can be downloaded from its official site http://www.sleuthkit.org. The general syntax of disk_stat is disk_stat . Here device name can be /dev/{hda,hdb,hdc,sda,sdb,sdc}. Be sure not to write the partition name.<br />
<strong>Unhiding your host protected area(Specially written for digital forensics team)</strong></p>
<p>When digital forensics team is inspecting the machine, they  should make sure if the hard disk is in HPA mode or not. If the hard disk is in HPA mode, then its quite possible that data is stored in that area and that data could help them solve the case. So let us first detect the hard disk is in HPA or not. As said earlier this can be easily done using disk_stat. This will show you <strong>Maximum Disk Sector</strong> and<strong> Maximum User Sector.</strong></p>
<p><strong>Maximum Disk Sector: </strong>This gives the total number of sectors present in hard disk.</p>
<p><strong>Maximum User Sector: </strong>This gives the total number of sectors which user can access.</p>
<p>As per example above I got the followin result</p>
<p><strong>Maximum Disk Sector</strong>:  78165359<br />
<strong>Maximum User Sector</strong>:<strong>  </strong>64776751</p>
<p>** HPA Detected (Sectors 64776751 &#8211; 78165359) **</p>
<p>This means that sectors from 64776751 to 78165359 are in HPA mode. Now again use setmax to unhide HPA.</p>
<p>[root@hack3rs root]#./setmax &#8211;delta 78165359 /dev/hdc</p>
<p>This will make all your hard disk accessible. I hope you all enjoyed reading the article.</p>
<p>Happy Experimenting!</p>
]]></content:encoded>
			<wfw:commentRss>http://niiconsulting.com/checkmate/2006/09/15/hiding-data-with-hpahost-protected-area-in-linux/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Computer Forensics Volunteer Project</title>
		<link>http://niiconsulting.com/checkmate/2006/08/28/computer-forensic-volunteer-project/</link>
		<comments>http://niiconsulting.com/checkmate/2006/08/28/computer-forensic-volunteer-project/#comments</comments>
		<pubDate>Mon, 28 Aug 2006 08:38:46 +0000</pubDate>
		<dc:creator>Bhushan Shah</dc:creator>
				<category><![CDATA[Compromise Detection]]></category>
		<category><![CDATA[Disk Forensics]]></category>
		<category><![CDATA[Fundamentals]]></category>
		<category><![CDATA[Incident Response]]></category>
		<category><![CDATA[Network Forensics]]></category>

		<guid isPermaLink="false">http://www.niiconsulting.com/checkmate/2006/08/computer-forensic-volunteer-project/</guid>
		<description><![CDATA[by Bhushan Shah, NII Consulting Mrs Carol L. Stimmel has taken upon her to start a Computer Forensic Volunteer Project to provide low-cost services to those who cannot assert advantage from our skills. Here is a bit taken from the press release:- “As expert members of the international computer forensics community which provides unique and [...]]]></description>
			<content:encoded><![CDATA[<p>by <strong><a href="mailto:bhushan@niiconsulting.com">Bhushan Shah</a>, </strong><a href="http://www.niiconsulting.com">NII Consulting </a></p>
<p>Mrs Carol L. Stimmel has taken upon her to start a Computer Forensic Volunteer Project to provide low-cost services to those who cannot assert advantage from our skills.</p>
<p>Here is a bit taken from <a href="http://www.prweb.com/releases/2006/8/prweb426937.htm">the press release:-</a></p>
<p>“As expert members of the international computer forensics community which provides unique and highly desirable services to the legal system, we assume a responsibility to provide services to those in need yet unable to pay. As a result, the Computer Forensics Volunteer Project (CFVP) provides pro bono and low-cost forensic services to individuals and organizations who normally would not be able to take advantage of the distinct litigation advantage provided by these techniques.”</p>
<p>On behalf of <a href="http://www.niiconsulting.com/">NII Consulting</a> I have volunteered to take part in the project and would like to help people who cannot afford such services.</p>
]]></content:encoded>
			<wfw:commentRss>http://niiconsulting.com/checkmate/2006/08/28/computer-forensic-volunteer-project/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Understanding Index.dat (Internet History Data File in Windows)</title>
		<link>http://niiconsulting.com/checkmate/2006/08/11/understanding-indexdat-internet-history-data-file-in-windows/</link>
		<comments>http://niiconsulting.com/checkmate/2006/08/11/understanding-indexdat-internet-history-data-file-in-windows/#comments</comments>
		<pubDate>Fri, 11 Aug 2006 11:41:28 +0000</pubDate>
		<dc:creator>Bhushan Shah</dc:creator>
				<category><![CDATA[Anti-Forensics]]></category>
		<category><![CDATA[Compromise Detection]]></category>
		<category><![CDATA[Disk Forensics]]></category>
		<category><![CDATA[Fundamentals]]></category>

		<guid isPermaLink="false">http://www.niiconsulting.com/checkmate/2006/08/understanding-indexdat-internet-history-data-file-in-windows/</guid>
		<description><![CDATA[by Bhushan Shah, NII Consulting The index.dat is a file which contains the list of the websites that one has visited. It comes from “indexing” which is used to speed up query responses. The autocomplete feature in Internet Explorer compares the addresses to the index.dat to find an appropriate match. The size and life of [...]]]></description>
			<content:encoded><![CDATA[<p>by<strong> <a href="mailto:bhushan@niiconsulting.com">Bhushan Shah</a></strong>, <a href="http://www.niiconsulting.com">NII Consulting </a></p>
<p>The index.dat is a file which contains the list of the websites that one has visited. It comes from “indexing” which is used to speed up query responses.</p>
<p>The autocomplete feature in Internet Explorer compares the addresses to the index.dat to find an appropriate match. The size and life of the index.dat depends on the user and the options under: &#8211; Internet Explorer: Tools&gt; Internet Options (Days to keep pages in history).<span id="more-32"></span></p>
<p>There are three kinds of index.dat files.</p>
<ol>
<li>Daily</li>
<li>Weekly</li>
<li>Master</li>
</ol>
<p><strong>    1</strong>. <strong><em>Daily index.dat:-</em></strong></p>
<p>This file contains the data of one visiting websites for the day.</p>
<p>This index.dat file can be found in C:\Documents and Settings\*profile*\Local Settings\History\History.IE5\*folder*</p>
<p>The folders name information is given below:-</p>
<p><strong>            MSHist012006081020060811</strong></p>
<p><strong>        MSHist01</strong> is common for all folders.</p>
<p>Next comes “from” date – <strong>20060810</strong> i.e. 2006/08/10 (yyyy/mm/dd)</p>
<p>Lastly comes the “to” date – <strong>20060811</strong> i.e. 2006/08/11 (yyyy/mm/dd)</p>
<p><strong>    2</strong>.<strong><em> Weekly index.dat:-</em></strong></p>
<p>This file contains the history of the user for the week.</p>
<p><strong><em> </em></strong>This index.dat file can be found in C:\Documents and Settings\*profile*\Local                       Settings\History\History.IE5\*folder*</p>
<p>The folders name information is given below:-</p>
<p><strong>            MSHist012006073120060807<br />
</strong><strong><br />
MSHist01</strong> is common for all folders.</p>
<p>Next comes “from” date – <strong>20060731</strong> i.e. 2006/07/31 (yyyy/mm/dd)</p>
<p>Lastly comes the “to” date – <strong>20060807 </strong>i.e. 2006/08/07 (yyyy/mm/dd)</p>
<p><strong>    3</strong>. <strong><em>Master index.dat</em></strong></p>
<p>This file is located in C:\Documents and Settings\*profile*\Local Settings\History\History.IE5 i.e. the root of History.IE5</p>
<p><strong>Index.dat Viewing Utilities:-</strong></p>
<p><strong><br />
</strong>There are a few utilities on the WWW to analyze index.dat. They help in organizing the data from it in an easy to view and customable manner. Here is a list of a few such tools:-</p>
<ul>
<li><a href="http://www.digital-detective.co.uk/intro.asp">Netanalysis</a></li>
<li><a href="http://www.scanraid.com/indexdat.htm">IndexDat-Zap</a></li>
<li><a href="http://www.systenance.com/indexdat.php">Index.dat Analyzer</a></li>
</ul>
<p><strong>Deleting index.dat:-</strong></p>
<p><strong>             </strong>This file is “locked” by the operating system, which means that one cannot delete it with the normal “Del” command.</p>
<p><em>    Note: Once it is very big in size it can start affecting the browser performance</em>.</p>
<p>There are a few tools online available to delete this file but the easiest way I found to delete this file is to replace it with another file. I.e. Make a new text file, name it as index.dat and save it. Now, for every index.dat there is replace it with the file that you made i.e. the empty index.dat.</p>
<p>Alternatively, you could use tools like <a href="http://ccollomb.free.fr/unlocker/">Unlocker</a>. This is a very nice free tool to view which applications are sharing the file and also to kill or unlock those applications so as to delete or modify it.</p>
]]></content:encoded>
			<wfw:commentRss>http://niiconsulting.com/checkmate/2006/08/11/understanding-indexdat-internet-history-data-file-in-windows/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>LINReS &#8211; An open source Linux Incident Response Tool!</title>
		<link>http://niiconsulting.com/checkmate/2006/07/18/linres-an-open-source-linux-incident-response-tool/</link>
		<comments>http://niiconsulting.com/checkmate/2006/07/18/linres-an-open-source-linux-incident-response-tool/#comments</comments>
		<pubDate>Tue, 18 Jul 2006 14:22:40 +0000</pubDate>
		<dc:creator>Chetan Gupta</dc:creator>
				<category><![CDATA[Disk Forensics]]></category>
		<category><![CDATA[Fundamentals]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.niiconsulting.com/checkmate/2006/07/linres-an-open-source-linux-incident-response-tool/</guid>
		<description><![CDATA[By Chetan Gupta, NII Consulting In accordance with NII&#8217;s mantra of innovation and research, we have developed our own tool to conduct initial response on compromised Linux systems. This tool is appropriately titled LINReS which stand for &#8220;Linux INcident Response Script&#8221;. LINReS is a Live Response script designed to run on suspect/compromised Linux systems. LINReS [...]]]></description>
			<content:encoded><![CDATA[<p>By Chetan Gupta, <strong><a target="_blank" href="http://www.niiconsulting.com/checkmate/wp-admin/www.niiconsulting.com">NII Consulting</a> </strong></p>
<p>In accordance with NII&#8217;s mantra of innovation and research, we have developed our own tool to conduct initial response on compromised Linux systems. This tool is appropriately titled LINReS which stand for &#8220;<strong>L</strong>inux <strong>IN</strong>cident <strong>Re</strong>sponse <strong>S</strong>cript&#8221;.<br />
LINReS is a Live Response script designed to run on suspect/compromised Linux systems. LINReS consists of mostly statically compiled binaries  and includes the various shared libraries that may be required to run  the binaries (a few which are not statically compiled). All in all, no  binary from the compromised system is used by this tool which mitigates  the risk of collecting information on a trojaned system.<span id="more-31"></span></p>
<p>This script follows a simple client-server modeling where the  suspect system acts as the server and forensics workstation of the  investigator (running MS-Windows) acts as a client and receives all the  incident response data from the suspect system.</p>
<p>LINReS calls three different scripts which collect volatile and  non-volatile data from the suspect system that caters to the  requirements of the &#8216;Initial Response&#8217; phase in the Incident Response  Methodology. The data collected by the scripts is sent to a forensics  workstation through three different Netcat connections. The Netcat  connections are automatically created by the script. On the client side,  three listeners have to be setup by the investigator manually or it  could be automated by a simple Windows batch script provided in the toolkit.</p>
<p>More information about the tool is available at:<br />
<a class="moz-txt-link-freetext" href="http://www.niiconsulting.com/innovation/linres.html">http://www.niiconsulting.com/innovation/linres.html</a></p>
<p>Download LINReS:<br />
LINReS is available for download at the following links:<br />
<a class="moz-txt-link-freetext" href="http://prdownloads.sourceforge.net/linres/LINReS.tar.gz?download">http://prdownloads.sourceforge.net/linres/LINReS.tar.gz?download</p>
<p>http://prdownloads.sourceforge.net/linres/LINReS_RHEL3_v1.1.tar.gz?download</a></p>
<p>We have tested this tool successfully on RHEL3 and RHEL4 and would soon be releasing variants for the other flavours of Linux.</p>
<p>We sincerely hope that this tool would be useful to forensic investigators and anybody who has been assigned the task of conducting investigations on a  Linux system. We would appreciate any feedback on LINReS and look forward to adding onto and improving its functionality.</p>
<p>Happy testing!</p>
]]></content:encoded>
			<wfw:commentRss>http://niiconsulting.com/checkmate/2006/07/18/linres-an-open-source-linux-incident-response-tool/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Article on Dissecting NTFS Hidden Streams</title>
		<link>http://niiconsulting.com/checkmate/2006/07/17/article-on-dissecting-ntfs-hidden-streams/</link>
		<comments>http://niiconsulting.com/checkmate/2006/07/17/article-on-dissecting-ntfs-hidden-streams/#comments</comments>
		<pubDate>Mon, 17 Jul 2006 16:23:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Disk Forensics]]></category>
		<category><![CDATA[Fundamentals]]></category>

		<guid isPermaLink="false">http://www.niiconsulting.com/checkmate/2006/07/article-on-dissecting-ntfs-hidden-streams/</guid>
		<description><![CDATA[NII Consulting&#8217;s Chetan Gupta (GCFA) has published an article at ForensicFocus on the Alternate Data Streams in NTFS, and how these can be detected. This article discusses a &#8220;&#8230;particular feature of this file system which was designed to offer compatibility with Macintosh Hierarchical File System (HFS) and store additional data called metadata for a file. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.niiconsulting.com">NII Consulting&#8217;s</a> Chetan Gupta (GCFA) has published an article at <a href="http://www.forensicfocus.com/dissecting-ntfs-hidden-streams">ForensicFocus on the Alternate Data Streams in NTFS</a>, and how these can be detected.</p>
<p>This article discusses a &#8220;&#8230;particular feature of this file system which was designed to offer compatibility with Macintosh Hierarchical File System (HFS) and store additional data called metadata for a file. This feature is known as Alternate Data Streams (ADS).  The Macintosh file system stores its data in two parts, the resource fork and the data fork. The data fork is where the data is actually contained and the resource fork tells the operating system how to interpret the data fork. Alternate Data Streams is the Microsoft way of implementing resource fork. The ADS is a hidden stream in addition to the regular data stream which contains the main data for the file. This hidden stream contains metadata for the file such as the file access/modification times, attributes etc. &#8221;<br />
<a href="http://www.forensicfocus.com/dissecting-ntfs-hidden-streams">Click here to read more</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://niiconsulting.com/checkmate/2006/07/17/article-on-dissecting-ntfs-hidden-streams/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rainbow Tables Simplified (Password Cracking for Windows)</title>
		<link>http://niiconsulting.com/checkmate/2006/07/17/rainbow-tables-simplified-password-cracking-for-windows/</link>
		<comments>http://niiconsulting.com/checkmate/2006/07/17/rainbow-tables-simplified-password-cracking-for-windows/#comments</comments>
		<pubDate>Mon, 17 Jul 2006 12:27:16 +0000</pubDate>
		<dc:creator>Bhushan Shah</dc:creator>
				<category><![CDATA[Disk Forensics]]></category>
		<category><![CDATA[Fundamentals]]></category>
		<category><![CDATA[Network Forensics]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.niiconsulting.com/checkmate/2006/07/rainbow-tables-simplified-password-cracking-for-windows/</guid>
		<description><![CDATA[By Bhushan Shah, NII Consulting Windows passwords are stored in the registry (encrypted) in the form of a hash. LMHash was the first hash function used by Microsoft to secure their passwords. Eventually when the security issues popped up (as LMHash is quite insecure) they had to come up with NLTM and the most recent [...]]]></description>
			<content:encoded><![CDATA[<p>By <strong><a href="mailto:bhushan@niiconsulting.com">Bhushan Shah</a>, <a href="http://www.niiconsulting.com//">NII Consulting</a></strong><strong><em><br />
</em></strong></p>
<p>Windows passwords are stored in the registry (encrypted) in the form of a hash. LMHash was the first hash function used by Microsoft to secure their passwords. Eventually when the security issues popped up (as LMHash is quite insecure) they had to come up with NLTM and the most recent one being NTLM Version 2.</p>
<p><strong>A hash function</strong> &#8211; is a way of creating a small digital &#8220;fingerprint&#8221; from any kind of data. The function chops and mixes the data to create the fingerprint, often called a hash value.</p>
<p><strong>The LMHash</strong> &#8211; LM hash or LAN Manager hash is one of the formats that Microsoft LAN Manager and Microsoft Windows use to store Windows user passwords that are less than 15 characters long.</p>
<p><span id="more-28"></span></p>
<p><strong>NTLM </strong>- Microsoft introduced the NTLM protocol which simply adds case sensitivity and removes the password-division.  Dictionary attacks on this protocol are still very good for weak passwords, but Microsoft claims that 100 2GHz machines would still take 5.5 years to obtain the password by brute force. This protocol doesn&#8217;t offer any signing or encryption of the exchange of messages between the client and the server.  Thus, the protocol is susceptible to message injection by an attacker, allowing &#8220;chosen plaintext&#8221; attacks.</p>
<p><strong>NTLM Version 2</strong> &#8211; This protocol expands the key space to 128-bits, increasing the difficulty of exhaustive brute force attacks (according to Microsoft).  The protocol also enables the establishment of a secure channel (signing and/or encryption) between the client and the server prior to the challenge/response.  The secure channel is established using a key set created specifically for that purpose (ie, not the password-derived key) and effectively eliminates chosen-plaintext attacks.  Encryption can also effectively obscure the messages, preventing the offline cracking attempts that work so well against LM and NTLM authentication.</p>
<p>Windows Password cracking is not as easy as it sounds. Generally the traditional password crackers will try a dictionary attack or try to brute force the password.</p>
<p><strong>Dictionary Attacks- </strong></p>
<p>The dictionary attack is actually self explanatory. What it means that it tries every word in the dictionary. This makes the actual attack almost instantaneous but for a big dictionary you need a lot of storage. The success rate of a dictionary attack is minimal if the password contains special characters and it is also dependent on the number of words in the dictionary.</p>
<p><strong>Brute Force Attacks-</strong></p>
<p>A brute force attack is one where you try and defeat the password by trying a large number of possibilities. I.e. working thorough all possible keys in order to get the password. Such an attack has a better success rate but would take excruciatingly long time to get a password and at times is not feasible.</p>
<p><em>Theoretical Limits</em>: -</p>
<p>“There is a physical argument that a 128 bit key is secure against brute force attack. It is argued that, by the laws of physics, in order to simply flip through the possible values for a 128-bit key (ignoring doing the actual computing to check it), one would need a device consuming at a minimum 10 gigawatts (about the equivalent of eight large, dedicated nuclear reactors) running continuously for 100 years. The full actual computation—checking each key to see if you have found a solution—would consume many times this amount.</p>
<p>However, this argument assumes that the register values are changed using conventional set and clear operations which inevitably generate entropy. It has been shown that computational hardware can be designed not to encounter this theoretical obstruction”</p>
<p>Now, as these methods are not always feasible and extremely time consuming <em><a href="http://www.objectif-securite.ch/">Philippe Oechslin</a></em> came up with a method based on time-memory trade-off using Rainbow Tables.</p>
<p>“In 1980 Martin Hellman described a cryptanalytic time-memory trade-off which reduces the time of cryptanalysis by using pre-calculated data stored in memory. This technique was improved by Rivest before 1982 with the introduction of distinguished points which drastically reduces the number of memory lookups during cryptanalysis. This improved technique has been studied extensively but no new optimizations have been published ever since.” (3)<br />
This is a cryptanalytic attack which is based on exhaustive search need and a lot of computing power or a lot of time to complete. When the same attack has to be carried out multiple times, it may be possible to execute the exhaustive search in advance and store all results in memory. Once this pre-computation is done, the attack can be carried out almost instantly. We can also call it a pre-calculated attack</p>
<p><strong>Rainbow Tables-</strong></p>
<p>When you brute force a password you try different possibilities on one machine, you start to wonder if it is really necessary to try all possible passwords again and again on each new machine. This is the basis on which the rainbow tables were created. What seems more feasible is to save the brute force results and use the saves results to accelerate the cracking process to crack other passwords.</p>
<p>It is possible to crack windows passwords with the help of rainbow tables in a matter of seconds. Now, you would be wondering how the rainbow tables would crack a password in a matter of seconds where brute forcing the same password took a few days or a month even. And now you wonder how these tables can crack the password so quickly and with a better success rate.</p>
<p>This article might help you understand how the rainbow tables are built.</p>
<p>In order for the trade-off to work, the passwords and the hashes have to be organized in chains.  To get this you need to define a reduction function that converts password hashes into passwords. Starting at the password you can generate a hash from the password with the hash function and then generate a new password from this hash with the reduction function. You can do this over and over again until you get about 10000 hashes and passwords. This chain can only be created in the forward direction.</p>
<p><img align="middle" src="http://www.niiconsulting.com/checkmate/wp-admin/images/0106/rainbowtable.gif" /></p>
<p><em>(http://lasecwww.epfl.ch/~oechslin/projects/ophcrack/)</em></p>
<p>Now, you can drop the whole chain except for the first and the last password that you store in the table. When you need to crack a hash, you calculate a chain starting from this hash. For every password that appears in the chain, you check if it is not the end of a chain that you stored in the table. When you find a matching end of a chain in the table, you know that the hash is probably part of this chain. Actually, the element just before the hash in that chain is the password you are looking for. You cannot go backwards, but you can look up the beginning of the chain in the table (this is why you stored it together with the end) and you just generate the whole chain from scratch until you get to the password.</p>
<p>“An interesting fact of rainbow tables is that the cracking time can be reduced by the square of the available memory, e.g., if you double the size of the tables, you can crack four times as fast. As an illustration, the online password cracker at (lasecwww.epfl.ch/~oechslin/projects/ophcrack) cracks alphanumerical windows passwords in about 2 seconds with a table set of 1.1G bytes. It takes about 16 seconds with a table set of 388M bytes available from the same web page. “3</p>
<p><em>Limitations-</em></p>
<p>This method for password cracking can only be used where the hashes are calculated in advance. In operating systems apart from the Windows operating system password hash is calculated by adding a random amount of salt (that is, the hash function takes an additional parameter as input). This salt is stored together with the hash {where Hash = password + salt}, such that a password can later be verified to match the hash.</p>
<p>Since we don’t know the value of salt being used with the hash in advance, we cannot create a table in advance.</p>
<p>MS-Windows and a few firewalls and routers and databases use salt-less hashing making the attack possible.</p>
<p>Tools-</p>
<ul>
<li><a href="http://ophcrack.sourceforge.net/">Ophcrack</a>      – This tool uses rainbow tables to crack passwords.(Based on Rainbow tables and not Rainbowcrack)<br />
(This is a bootable Linux CD + Windows(setup) with 3 options &#8211; Local SAM, Remote SAM or Encrypted SAM)</li>
</ul>
<p>Another implementation of the rainbow tables called rainbowcrack is used in tools like-</p>
<ul>
<li>Rainbowcrack      Project &#8211; <a href="http://www.antsight.com/zsl/rainbowcrack/">http://www.antsight.com/zsl/rainbowcrack/</a></li>
</ul>
<ul>
<li>Cain &#8211;      <a href="http://www.oxid.it/cain.html">http://www.oxid.it/cain.html</a>      &#038;</li>
</ul>
<ul>
<li>@Stakes      LC5 &#8211; <a href="http://www.webproxy.com/products/lc/">http://www.webproxy.com/products/lc/</a></li>
</ul>
<p>These tools use a less efficient way of storing chains in tables and ends up with tables that are more than twice as big, making it more that four times slower for the same amount of memory. (Not considering the memory and RAM)</p>
<p>If you would like a demo for this method it can be found <a title="here" href="http://lasecwww.epfl.ch/%7Eoechslin/projects/ophcrack/index.php">here.<br />
</a></p>
<p>There are a few free tables can be found at:-</p>
<ul>
<li><a href="http://wired.s6n.com/files/jathias/">http://wired.s6n.com/files/jathias/</a></li>
</ul>
<ul>
<li><a href="http://www.antsight.com/zsl/rainbowcrack/">http://www.antsight.com/zsl/rainbowcrack/</a></li>
</ul>
<ul>
<li><a href="http://rainbowtables.shmoo.com/">http://rainbowtables.shmoo.com/</a></li>
</ul>
<p>References:-<br />
<a name="_Ref140903440"></a></p>
<ol>
<li>Making a Faster Cryptanalytic Time-Memory Trade-Off, Philippe Oechslin</li>
<li><a href="http://www.microsoft.com">http://www.microsoft.com</a></li>
<li><a href="http://www.niiconsulting.com/checkmate/wp-admin/post.php#%20http://en.wikipedia.org/wiki/Brute-force_attack">http://en.wikipedia.org/wiki/Brute-force_attack</a></li>
<li><a href="http://www.objectif-securite.ch/">http://www.objectif-securite.ch/</a></li>
<li><a href="http://lasecwww.epfl.ch/%7Eoechslin/projects/ophcrack/index.php">http://lasecwww.epfl.ch/~oechslin/projects/ophcrack/index.php</a></li>
<li><a href="http://www.rainbowcrack.com/">http://www.rainbowcrack.com/</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://niiconsulting.com/checkmate/2006/07/17/rainbow-tables-simplified-password-cracking-for-windows/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>UserAssist Revisited!</title>
		<link>http://niiconsulting.com/checkmate/2006/07/16/userassist-revisited/</link>
		<comments>http://niiconsulting.com/checkmate/2006/07/16/userassist-revisited/#comments</comments>
		<pubDate>Sun, 16 Jul 2006 09:54:14 +0000</pubDate>
		<dc:creator>Chetan Gupta</dc:creator>
				<category><![CDATA[Anti-Forensics]]></category>
		<category><![CDATA[Disk Forensics]]></category>

		<guid isPermaLink="false">http://www.niiconsulting.com/checkmate/2006/07/userassist-revisited/</guid>
		<description><![CDATA[By Chetan Gupta, NII Consulting In my previous article on Userassist, I had mentioned how UserAssist records user access of specific objects on the system and how it would greatly aid forensic investigations. Although, I had shown how to decrypt the keys, the important thing that was missing was how to interpret the 16 bytes [...]]]></description>
			<content:encoded><![CDATA[<p>By <strong>Chetan Gupta, <a href="http://www.niiconsulting.com">NII Consulting</a></strong></p>
<p>In my <a target="_blank" href="http://www.niiconsulting.com/checkmate/2006/05/xp-built-in-spyware-utility/">previous</a> article on Userassist, I had mentioned how UserAssist records user access of specific objects on the system and how it would greatly aid forensic investigations.<br />
Although, I had shown how to decrypt the keys, the important thing that was missing was how to interpret the 16 bytes of data associated with the entries. (Thanks to Harlan Carvey for providing his valuable inputs on this.)</p>
<p>Here is a cool piece of code I found <a target="_blank" href="http://www.autohotkey.com/forum/topic9154.html">here</a> that allows to decrypt the entries.<span id="more-26"></span><br />
Note: Use Autohotkey to run this script . Autohotkey is available <a target="_blank" href="http://www.autohotkey.com/download/AutoHotkeyInstall.exe">here</a></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
<code> ;;Author: Kostic Dejan<br />
;;Date: 07.04.2006</code></p>
<p>Gui, Add, ListView, vLst w700 h500 altsubmit, Path|Name|Data<br />
Loop,HKCU,</p>
<p>Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<br />
{5E6AB780-7743-11CF-A12B-00AA004AE837}\count<br />
{<br />
RegRead, rval<br />
LV_Add(&#8220;&#8221;,&#8221;{5E6AB780-7743-11CF-A12B-00AA004AE837}&#8221;,a_loopregname,rval)<br />
}<br />
Loop,HKCU,<br />
Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<br />
{75048700-EF1F-11D0-9888-006097DEACF9}\count<br />
{<br />
RegRead, rsv<br />
LV_Add(&#8220;&#8221;,&#8221;{75048700-EF1F-11D0-9888-006097DEACF9}&#8221;,a_loopregname,rsv)<br />
}<br />
Gui,add,button,gdec,&#038;Decrypt<br />
Gui, Show<br />
LV_ModifyCol(1,&#8221;100&#8243;)<br />
LV_ModifyCol(2,&#8221;485&#8243;)<br />
LV_ModifyCol(3,&#8221;100&#8243;)<br />
return<br />
<code>dec:<br />
SetBatchLines,-1<br />
LV_Delete()<br />
SplashImage,,b1 c1,,Decrypting`nPlease wait...<br />
Loop,HKCU,</code></p>
<p>Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{5E6AB780-<br />
7743-11CF-A12B-00AA004AE837}\count<br />
{<br />
RegRead, rval<br />
d2:=StringMod(a_loopregname,26-13)<br />
LV_Add(&#8220;&#8221;,&#8221;{5E6AB780-7743-11CF-A12B-00AA004AE837}&#8221;,d2,rval)<br />
}<br />
Loop,HKCU,<br />
Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-<br />
EF1F-11D0-9888-006097DEACF9}\count<br />
{<br />
RegRead, rsv<br />
d3:=StringMod(a_loopregname,26-13)<br />
LV_Add(&#8220;&#8221;,&#8221;{75048700-EF1F-11D0-9888-006097DEACF9}&#8221;,d3,rsv)<br />
}<br />
SplashImage,off<br />
return</p>
<p>StringMod(_string, _chars=&#8221;")     ;made by PhiLho, adapted by me<br />
{<br />
Loop Parse, _string<br />
{<br />
char := Asc(A_LoopField)<br />
o := Asc(&#8220;A&#8221;) * (Asc(&#8220;A&#8221;) <= char &#038;&#038; char <= Asc("Z")) + Asc("a") * (Asc("a") <=</p>
<p>char &#038;&#038; char <= Asc("z"))<br />
If (o > 0)<br />
{<br />
char := Mod(char &#8211; o + _chars, 26)<br />
char := Chr(char + o)<br />
}<br />
Else<br />
{<br />
char := A_LoopField<br />
}<br />
rStr := rStr char<br />
}<br />
Return rStr<br />
}</p>
<p>GuiClose:<br />
ExitApp<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Now something on anti-forensics (I hate to mention this). Most users would like to delete these entries in order to erase their tracks.<br />
Here is how you can do it:</p>
<ol>
<li>Another cool piece of code from autohotkey forums (Credits: Serenity)</li>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
<code>        ; Microsoft Internet Toolbar<br />
regdelete, HKCU,<br />
Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{5E6AB780-7743-11CF-            A12B-00AA004AE837}\count<br />
; ActiveDesktop<br />
regdelete, HKCU,<br />
Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-            9888-006097DEACF9}\count</code></p>
<p>; Disable logging and encryption<br />
regwrite, REG_DWORD, HKCU,<br />
Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\Settings, NoLog, 1<br />
regwrite, REG_DWORD, HKCU,<br />
Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\Settings, NoEncrypt,1<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<li>Using User Assist Spy</li>
<p>A tool that looks in your registry and lists some information about all the programs and documents you have ever accessed with your current installation of Windows. It also allows you to delete the information and disable future logging.<br />
It is available <a target="_blank" href="http://www.utdallas.edu/~jbs024000/download/userass-1.2.1.0.zip">here.</a></p>
<li>Manual Way</li>
</ol>
<ul>
<li>Delete the count key entries and,</li>
<li>Add settings to disable encryption or logging</li>
<ul>
<li>Add a new subkey called &#8220;Settings&#8221; under &#8220;UserAssist&#8221; key</li>
<li>Add a new DWORD value called &#8220;NoLog&#8221; to disable the UserAssist entries being further added or a DWORD value called &#8220;NoEncrypt&#8221; to disable the ROT-13 encryption of any UA entries that may be added in the registry. Both these DWORD values must be set to 1 for them to work properly</li>
</ul>
</ul>
<p>I hope the mist around the UserAssist feature is somewhat more clearer now!<br />
Do write in your comments on this.</p>
]]></content:encoded>
			<wfw:commentRss>http://niiconsulting.com/checkmate/2006/07/16/userassist-revisited/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

