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

<channel>
	<title>Thoughts on Security</title>
	<atom:link href="http://www.scriptjunkie.us/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.scriptjunkie.us</link>
	<description>Something about Network Security. Exploits, research … profit!</description>
	<lastBuildDate>Wed, 08 May 2013 23:24:43 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Breaking and Building a Secure Network &#8211; BSides San Antonio</title>
		<link>http://www.scriptjunkie.us/2013/05/breaking-and-building-a-secure-network-bsides-san-antonio/</link>
		<comments>http://www.scriptjunkie.us/2013/05/breaking-and-building-a-secure-network-bsides-san-antonio/#comments</comments>
		<pubDate>Wed, 08 May 2013 23:17:56 +0000</pubDate>
		<dc:creator>scriptjunkie</dc:creator>
				<category><![CDATA[Defense]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[pigs don't fly]]></category>
		<category><![CDATA[secure]]></category>
		<category><![CDATA[virtual machines]]></category>

		<guid isPermaLink="false">https://www.scriptjunkie.us/?p=792</guid>
		<description><![CDATA[This past weekend I gave a talk at BSides San Antonio titled &#8220;Pigs Don&#8217;t Fly &#8211; Why owning a typical network is so easy, and how to build a secure one.&#8221; I took a top-down look at the security barriers in a typical organizational network, the many techniques attackers use to break them, and how [...]]]></description>
				<content:encoded><![CDATA[<p>This past weekend I gave a talk at BSides San Antonio titled &#8220;Pigs Don&#8217;t Fly &#8211; Why owning a typical network is so easy, and how to build a secure one.&#8221; I took a top-down look at the security barriers in a typical organizational network, the many techniques attackers use to break them, and how to build networks and hosts that were not vulnerable by doing a few things almost nobody does that will break the attack playbook.</p>
<p>First, a good understanding of how attackers actually break security barriers is necessary. I broke down the different levels of access into the following order: local user, local admin, lateral movement, and domain admin, along with internal network and internal server. To obtain any new level of access requires breaking a security barrier, provides a higher privilege level, and provides higher levels of access to critical data and systems; the objective for attackers. </p>
<p>The following graph summarizes the playbook to gain and escalate privileges on a primarily Windows network, the most common of which are in bold:<br />
<a href="http://www.scriptjunkie.us/wp-content/uploads/2013/05/AttackGraph.png"><img src="http://www.scriptjunkie.us/wp-content/uploads/2013/05/AttackGraph.png" alt="Attack Graph" width="620" height="419" class="aligncenter size-full wp-image-796" /></a><br />
I went over these in greater detail in the talk, but I want to concentrate on how to stop them for this blog post.</p>
<p>Just as critical as access methods for attackers are methods of delivering attacks and getting data into and out of a network without being caught. A wide variety of control and data exfiltration methods have been used, and can basically be summarized as <strong>any way your systems and users can communicate with the outside world, attackers can use as well</strong>.</p>
<p>So how can you stop this from happening? By doing the following:</p>
<ol>
<li>Isolate your network. The gold standard is to air-gap your network from the internet, disable the USB driver, and enforce strong physical security.</li>
<p>Failing that, block direct communication out from all your workstations and servers via firewalls, forcing the use of proxies that whitelist every aspect of communication you can:<br />
<a href="http://www.scriptjunkie.us/wp-content/uploads/2013/05/C2-Methods-and-Blocks.png"><img src="http://www.scriptjunkie.us/wp-content/uploads/2013/05/C2-Methods-and-Blocks.png" alt="C2 Methods and Blocks" width="600" height="352" class="aligncenter size-full wp-image-803" /></a></p>
<li>Never use passwords.</li>
<p>Despite the fact that they are the easiest to implement and therefore default authentication method for everything, passwords should be considered <strong>pure evil</strong> on your network. They can only provide a false sense of security, and they break down about 1000 different ways:</p>
<ul>
<li>Your admins will leave them lying around in scripts and shared drives that attackers will find.</li>
<li>They will be dumped from memory by mimikatz and similar tools.</li>
<li>They will be keylogged.</li>
<li>They will be guessed since your users will choose predictable passwords.</li>
<li>They will be forgotten by users and then made easy to reset by an attacker.</li>
<li>Users and admins will save them in password documents since they can&#8217;t remember them.</li>
<li>When anyone clicks a phishing link, they won&#8217;t inspect the URL and will enter their passwords into a page that looks like a real login or give them up to someone who sounds like tech support on the phone.</li>
<li>Everyone will re-use them so that anyone who finds the next RockYou password dump posted to pastebin or compromises a user&#8217;s home computer and gets their Facebook password will also have access to your network. It is easy to ignore this vector, since your pentesters will never hack your users&#8217; home computers, but real attackers do not care.</li>
<li>If an attacker can see the network traffic of a user authenticating, which can be done by a simple website with NTLM authentication, that challenge-response authentication can be cracked offline at high speed.</li>
<li>An attacker without any access to your network can cause great pain and suffering locking out all your accounts by entering invalid credentials. If that is not the case, the attacker will be able to attempt high-speed online brute force password guessing and compromise many accounts. You can&#8217;t win.</li>
<li>Passwords provide a huge window of exposure, as whenever compromised, they can be abused forever, or at least for months until the next forced password change.</li>
<li>But worst of all, their hashes will be stored en mass and can be re-used just like passwords. If an attacker can get some level of admin privileges for just a moment, he will dump every hash database he can get access to. He will then be able to impersonate any of those users whenever he wants to by passing the hash, spreading across your network and owning all your systems and data.</li>
</ul>
<p><div id="attachment_833" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.scriptjunkie.us/wp-content/uploads/2013/05/passwords.jpg"><img src="http://www.scriptjunkie.us/wp-content/uploads/2013/05/passwords.jpg" alt="The Devil" width="570" height="296" class="size-full wp-image-833" /></a><p class="wp-caption-text">Passwords are pretty much the devil</p></div><br />
All of these problems with passwords can be solved with the following rules:</p>
<ul>
<li>Force smart card logon for all users and admins</li>
<li>Force Kerberos by denying all incoming NTLM</li>
<li>Deny network and RDP logon to any non-smart card accounts</li>
</ul>
<p>If these suggestions are implemented, they will solve the above problems. They will completely prevent passing-the-hash; hashes will never be used. There will be no hash/private credential database to steal in bulk. Private keys remain in the smart card and cannot be keylogged or stolen out of memory. Users cannot re-use or choose weak passwords that can be cracked, guessed, or bruteforced, and users cannot give them up to social engineers over the telephone or web. Admins cannot leave passwords in shared drives or scripts. It&#8217;s easier on users’ memory. Only active logons can be hijacked, only temporarily (tickets are only good for up to 10 hours), and only by attackers with SYSTEM-level access on a system that your administrators log into interactively. Credential exposure is dramatically smaller, and by isolating your admins&#8217; workstations and using remote management tools that do not leave reusable credentials on remotely managed systems, it can be effectively mitigated. As an added bonus, NTLM relaying will also not be possible.</p>
<li>Whitelist all executable code.</li>
<p>Don&#8217;t allow any code to run unless you or someone you trust has approved it. Whitelist all executables, and lock down scripts, like powershell, vbs, and bat files. This breaks the persistence mechanisms of every public attack toolkit out there, as well as most methods of lateral movement, etc.</p>
<li>Use strong exploit mitigations.</li>
<p>Force full mandatory DEP (AlwaysOn) and full mandatory ASLR on all modules via the registry. This can break things, but it will also break most memory corruption exploits. EMET can add additional mitigations, and other attacks can be mitigated by disabling vulnerable addons, like Java.</p>
<li>VM-isolate target applications.</li>
<p>Stronger than exploit mitigations is putting your applications that are likely to be attacked, such as document editors and viewers and browsers, into a VM sandbox. You can do this with some commercial products, or by rolling your own with seamless desktop integration and desktop VM software.</p>
<li>Don&#8217;t use file shares.</li>
<p>Windows shares and shared drives are basically a hacker&#8217;s dream. They were designed long ago with apparently little concern for security, and hackers will easily use them to spread to different systems and escalate privileges:</p>
<ul>
<li>Executable planting: Literally anything you double-click on a shared drive could be an executable with the name and icon of a document or folder and will give attackers access to your system.</li>
<li>Shortcut hijacking: Any shortcut file can spawn a full command line, not only opening whatever program or document you intend, but also spawning a malware executable or script that will infect your system. So any shortcut you can edit on a shared drive is a method to infect anyone who clicks on it.</li>
<li>DLL preloading: Even if you show file extensions and verify you are double-clicking on a legitimate file, many if not most applications use insecure library loading and will execute code in a DLL that just happens to have the right name.</li>
<li>Script infecting: Any script that is run from a shared drive could be infected by a user with write access, owning every system it is run on.</li>
</ul>
<p>So what can you do about this? Don&#8217;t use shared drives as a way for your users to share files. Instead use a web content management system (CMS) such as WordPress, Joomla, SharePoint, or MediaWiki. In contrast with accessing shared drives, accessing a CMS is like accessing a website; your computer is not designed to trust it, won&#8217;t automatically load DLL&#8217;s from it, and your browser will clearly show you what file type you are downloading and warn you before you run something you don&#8217;t intend to. </p>
<p>Having said that, shared drives that only admins can write to are still OK, and network drives that only one user can access, such as home drives are also still OK, since they do not introduce holes in any security barrier.
</ol>
<p>So go forth and build secure networks. Put in a little extra work up front, and don&#8217;t fall for the easy defaults; you will regret it in the end.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scriptjunkie.us/2013/05/breaking-and-building-a-secure-network-bsides-san-antonio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using the GUI in Metasploit 4.6</title>
		<link>http://www.scriptjunkie.us/2013/04/using-the-gui-in-metasploit-4-6/</link>
		<comments>http://www.scriptjunkie.us/2013/04/using-the-gui-in-metasploit-4-6/#comments</comments>
		<pubDate>Sun, 14 Apr 2013 01:10:04 +0000</pubDate>
		<dc:creator>scriptjunkie</dc:creator>
				<category><![CDATA[Metasploit]]></category>
		<category><![CDATA[armitage]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[msfgui]]></category>

		<guid isPermaLink="false">https://www.scriptjunkie.us/?p=766</guid>
		<description><![CDATA[Unfortunately, Rapid7 recently informed me that they would no longer be including msfgui from the official distribution of Metasploit (along with Armitage). But don't worry, because even though it is now a separate program, msfgui is still supported and still provides (in my humble opinion) the best way of harnessing all the power of Metasploit.]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.scriptjunkie.us/wp-content/uploads/2013/04/msfgui46.png"><img src="http://www.scriptjunkie.us/wp-content/uploads/2013/04/msfgui46.png" alt="Screenshot of msfgui" width="600" height="383" class="aligncenter size-full wp-image-774" /></a><br />
Unfortunately, Rapid7 recently informed me that they would no longer be including msfgui from the official distribution of Metasploit (along with <a href="http://blog.strategiccyber.com/2013/04/11/metasploit-4-6-now-with-less-open-source-gui/">Armitage</a>). This means that the only bundled interface will be the new web interface and the console version, which are backed by Rapid7. But don&#8217;t worry, because even though it is now a separate program, msfgui is still supported and still provides (in my humble opinion) the best way of harnessing all the power of Metasploit. After all, it is 100% open-source as always and will never require registration or serve advertisements. </p>
<p>The new home for the msfgui source code will be <a href="https://github.com/scriptjunkie/msfgui">https://github.com/scriptjunkie/msfgui</a> &#8211; if you can use git, checking out that repository will be the best way of keeping an up-to-date copy.</p>
<p>Msfgui is now available in an installer for Windows. It will still integrate directly with Metasploit, and if you do have Metasploit enabled as a service, should connect without any hassle on any platform. I do not have an updater for Windows. The windows installer can be downloaded from here: <a href="https://github.com/scriptjunkie/msfgui/blob/master/msfgui-installer.exe?raw=true">https://github.com/scriptjunkie/msfgui/blob/master/msfgui-installer.exe?raw=true</a></p>
<p>The past three years have seen msfgui provide a solid interface, expand in capabilities, and be used world-wide, even in <a href="http://www.youtube.com/watch?v=EBTgKTpbNwM">languages</a> I can&#8217;t even <a href="http://www.youtube.com/watch?v=CBuGIhh4JzY">identify</a>. With any luck, the next few years will bring even more!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scriptjunkie.us/2013/04/using-the-gui-in-metasploit-4-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Saving shells with PrependMigrate</title>
		<link>http://www.scriptjunkie.us/2013/03/saving-shells-with-prependmigrate/</link>
		<comments>http://www.scriptjunkie.us/2013/03/saving-shells-with-prependmigrate/#comments</comments>
		<pubDate>Sun, 24 Mar 2013 20:21:49 +0000</pubDate>
		<dc:creator>scriptjunkie</dc:creator>
				<category><![CDATA[Metasploit]]></category>

		<guid isPermaLink="false">https://www.scriptjunkie.us/?p=749</guid>
		<description><![CDATA[One of the more frustrating experiences in infosec is getting a session back &#8211; just to have it die a second later. Often, exploited processes are simply unstable; after smashing the heap or some other data structures, the process crashes not long after starting the shellcode. Sometimes the process freezes and the user exits the [...]]]></description>
				<content:encoded><![CDATA[<p>One of the more frustrating experiences in infosec is getting a session back &#8211; just to have it die a second later.<br />
<iframe src="http://securityreactions.tumblr.com/post/43721120316/in-the-middle-of-dumping-hashes-when-my-meterpreter" width="600" height="450"></iframe></p>
<p>Often, exploited processes are simply unstable; after smashing the heap or some other data structures, the process crashes not long after starting the shellcode. Sometimes the process freezes and the user exits the program just because it isn&#8217;t working. Sometimes the program just exits normally. I ran into this issue when injecting a payload to existing command-line executables that exited quickly, like ipconfig. They would spawn off the payload in a new thread, but would exit before I even saw a connection. In any case, it&#8217;s bad news for the pentester. As a result, a lot of exploits in Metasploit set a default AutoRunScript to &#8220;migrate -f&#8221; and migrate out of the process as soon as a session is established. </p>
<p>But it can take too long to even get to that point, even for the most basic reverse/bind meterpreter. To get there, the shellcode may load some DLL&#8217;s, must establish the network connection, transfer either 750k or 950k of meterpreter DLL, reflectively load and initialize that, load any extensions, and establish an SSL session. Only then does the controller execute the migrate script, which only actually moves to the new process on the 5th remote procedure call. The entire process may complete in a few seconds over a high speed, low latency link, but since it requires at least 8 complete round-trips and significant data transfer, there is no guarantee of success if it is happening in a process that might soon exit or crash. It would be a lot nicer to simply <em>start</em> the shellcode in a new process, without waiting for any of that and escape immediately. </p>
<p>As far as I can tell, <a href="http://www.corelan.be/">corelanc0d3r</a> was the first to write a shellcode-migrating stub, <a href="http://dev.metasploit.com/redmine/issues/4943">here</a>. I wrote a different version, with a few improvements, such as avoiding any delay and implementation for x64. After a number of revisions with the Metasploit team increasing flexibility and decreasing size, it finally landed in the main tree a couple of weeks ago. To use it, just set the PrependMigrate option to true:</p>
<pre>
Payload advanced options (windows/meterpreter/reverse_tcp):

...

   Name           : InitialAutoRunScript
   Current Setting: migrate -f
   Description    : An initial script to run on session creation (before 
      AutoRunScript)

   Name           : PrependMigrate
   Current Setting: false
   Description    : Spawns and runs shellcode in new process

   Name           : PrependMigrateProc
   Current Setting: 
   Description    : Process to spawn and run shellcode in
</pre>
<p>And it will take closer to 0.01 seconds than 10 seconds to escape the process once your shellcode starts. Enjoy your shells!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scriptjunkie.us/2013/03/saving-shells-with-prependmigrate/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Economics in One Lesson</title>
		<link>http://www.scriptjunkie.us/2013/03/economics-in-one-lesson/</link>
		<comments>http://www.scriptjunkie.us/2013/03/economics-in-one-lesson/#comments</comments>
		<pubDate>Wed, 13 Mar 2013 01:45:11 +0000</pubDate>
		<dc:creator>scriptjunkie</dc:creator>
				<category><![CDATA[/dev/urandom]]></category>

		<guid isPermaLink="false">https://www.scriptjunkie.us/?p=744</guid>
		<description><![CDATA[This is off the security topic, but I was really excited to find this online, so deal with it. Everyone who votes needs to understand this. We have all heard the fallacies before, and it&#8217;s hard not to disagree. When people need jobs, why can&#8217;t the government create jobs with public works projects? Don&#8217;t all [...]]]></description>
				<content:encoded><![CDATA[<p>This is off the security topic, but I was really excited to find <a href="http://library.mises.org/books/Henry%20Hazlitt/Economics%20in%20One%20Lesson.pdf">this</a> online, so deal with it. Everyone who votes needs to understand this. We have all heard the fallacies before, and it&#8217;s hard not to disagree. When people need jobs, why can&#8217;t the government create jobs with public works projects? Don&#8217;t all those cheap imports from foreign countries, low-wage immigrants, or machines take our jobs and make us worse off? Soon they won&#8217;t need us anymore! We can reduce the cost of rent, gas, or anything else with price controls. Won&#8217;t that help everybody? Don&#8217;t economic incentive programs stimulate the economy and create jobs?</p>
<p>So we elect those into office who will fix these problems. And those who disagree are labelled heartless and corrupt, putting the interests of the big and rich over the poor and helpless. But it&#8217;s not true.</p>
<p>Economics in One Lesson is one of the best things I&#8217;ve ever read that explains how this stuff actually works in a way that&#8217;s really interesting (at least to me). So please, put down your article about Lady Gaga and take a few hours to read this, or maybe half of it. Then like me, you&#8217;ll probably think it&#8217;s interesting and finish reading anyway or at least you&#8217;ll understand basic facts about life and I won&#8217;t be worried when you vote.</p>
<p>So here it is, read it: <a href="http://library.mises.org/books/Henry%20Hazlitt/Economics%20in%20One%20Lesson.pdf">http://library.mises.org/books/Henry%20Hazlitt/Economics%20in%20One%20Lesson.pdf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.scriptjunkie.us/2013/03/economics-in-one-lesson/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Authenticated Remote Code Execution Methods in Windows</title>
		<link>http://www.scriptjunkie.us/2013/02/authenticated-remote-code-execution-methods-in-windows/</link>
		<comments>http://www.scriptjunkie.us/2013/02/authenticated-remote-code-execution-methods-in-windows/#comments</comments>
		<pubDate>Sun, 03 Feb 2013 15:50:01 +0000</pubDate>
		<dc:creator>scriptjunkie</dc:creator>
				<category><![CDATA[/dev/urandom]]></category>
		<category><![CDATA[Defense]]></category>
		<category><![CDATA[lateral movement]]></category>
		<category><![CDATA[psexec]]></category>
		<category><![CDATA[remote desktop]]></category>
		<category><![CDATA[remote management]]></category>
		<category><![CDATA[wmi]]></category>

		<guid isPermaLink="false">https://www.scriptjunkie.us/?p=725</guid>
		<description><![CDATA[All of the below are supported ways of remotely executing code that are built-in to Windows. If psexec isn't working since a service is not running or ports are blocked, you can try all these other options; defenders who want to detect intruders moving through the network need to detect all of these; incident responders might want to look for evidence of these...]]></description>
				<content:encoded><![CDATA[<p>All of the below are supported ways of remotely executing code that are built-in to Windows. If psexec isn&#8217;t working since a service is not running or ports are blocked, you can try all these other options; defenders who want to detect intruders moving through the network need to detect all of these; incident responders might want to look for evidence of these, etc.</p>
<p>1. Service Control Manager (SCM)<br />
This method is used by psexec and all of its clones to start the executable that psexec creates.<br />
Result:<br />
A command to be run on demand and/or boot as SYSTEM (or less privileged accounts, but why would you do that?).<br />
Example:<br />
step 1/2; a new service can be created:<br />
<code>    sc REMOTECOMPUTERNAME create myservicename binPath= executableToRun start= auto</code><br />
alternatively, an existing service can be reconfigured:<br />
<code>    sc REMOTECOMPUTERNAME config existingservice binPath= executableToRun start= auto</code><br />
step 2/2; executableToRun will run on the remote system on boot as SYSTEM, or when instructed by:<br />
<code>    sc REMOTECOMPUTERNAME start myservicename</code><br />
variants exist for specifying DLL to load instead of executable, etc.<br />
Implementation details:<br />
Writing to the svcctl named pipe (a.k.a. srvsvc) on remote computer over SMB. (TCP port 139 or 445 owned by kernel, forwarded to srvsvc pipe)<br />
srvsvc pipe hosted by Server service in svchost.exe running as SYSTEM.</p>
<p>2. Task scheduler<br />
Result:<br />
A command to be run at designated time(s) as SYSTEM.<br />
Example:<br />
<code>    AT \\REMOTECOMPUTERNAME 12:34 "command to run"</code><br />
Implementation details:<br />
Writing to atsvc named pipe on remote computer over SMB. (TCP port 139 or 445 owned by kernel, forwarded to atsvc pipe)<br />
atsvc pipe hosted by Task Scheduler (Schedule) service in svchost.exe running as SYSTEM.</p>
<p>3. WMI<br />
Result:<br />
An immediate command execution under the administrative account used.<br />
Example:<br />
<code>    WMIC /node:REMOTECOMPUTERNAME PROCESS call create "command to run"</code><br />
Implementation details:<br />
Connecting to remote procedure call interface (RpcSs service in svchost.exe directly listening on TCP port 135)</p>
<p>4. Remote Registry<br />
Result:<br />
A command to be run or DLL to be loaded when specific events occur, such as boot or login or process execution, as active user or SYSTEM.<br />
Example:<br />
<code>    REG ADD \\REMOTECOMPUTERNAME\HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v myentry /t REG_SZ /d "command to run"</code><br />
Command will run every time a user logs in as the user. Other options include creating or modifying services which can run as SYSTEM on the next reboot, loading a DLL into most new processes with the AppInit_DLLs registry value, using IFEO to hijack different commands, and many more.<br />
Implementation Details:<br />
Writing to the winreg named pipe on remote computer over SMB. (TCP port 139 or 445 owned by kernel, forwarded to winreg pipe)<br />
The winreg pipe is hosted by Remote Registry service in svchost.exe</p>
<p>5. Remote File Access<br />
Result:<br />
An executable will be run or DLL will be loaded when specific events occur, such as boot or login or process execution, as active user or SYSTEM.<br />
Example:<br />
<code>    xcopy executabletorun.exe "\\REMOTECOMPUTERNAME\C$\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\e.exe"</code><br />
Command will run every time a user logs in as the user. Other options include DLL hijacks or writing an MOF to the %WINDOWS%\system32\wbem\mof that will be executed automatically by WMI in older OS&#8217;s.<br />
Implementation Details:<br />
Writing to remote administrative shares using SMB. (TCP port 139 or 445 owned by kernel)</p>
<p>6. Remote Desktop<br />
Best known for interactive GUI logins, the remote desktop protocol also allows for direct command execution.<br />
Result:<br />
Interactive desktop access and/or command execution with the privileges of the user account used.<br />
Example:<br />
<code>    rdesktop 1.2.3.4</code><br />
Opens an interactive remote desktop session.<br />
Implementation Details:<br />
    Hosted by the TermService service (&#8220;Remote Desktop Services&#8221;) in svchost.exe by a server socket listening on TCP port 3389.</p>
<p>7. Windows Remote Management<br />
Note: this is not enabled by default! But it is common enough, and the capability is built-in to recent Windows versions. Often used through powershell.<br />
Result:<br />
Immediate command execution under the administrative account used.<br />
Example:<br />
<code>    winrs -r:REMOTECOMPUTERNAME command to run</code><br />
Implementation Details:<br />
Hosted by Windows Remote Management service (svchost.exe), listens on TCP/80 or TCP/5985 and can share port with IIS.</p>
<p>Honorable mentions:<br />
VNC, SCCM, SSH, and <a href="http://en.wikipedia.org/wiki/Comparison_of_remote_desktop_software">a lot of third party software</a>. Any of your favorites I am missing? Let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scriptjunkie.us/2013/02/authenticated-remote-code-execution-methods-in-windows/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Running Code From A Non-Elevated Account At Any Time</title>
		<link>http://www.scriptjunkie.us/2013/01/running-code-from-a-non-elevated-account-at-any-time/</link>
		<comments>http://www.scriptjunkie.us/2013/01/running-code-from-a-non-elevated-account-at-any-time/#comments</comments>
		<pubDate>Wed, 02 Jan 2013 02:34:16 +0000</pubDate>
		<dc:creator>scriptjunkie</dc:creator>
				<category><![CDATA[/dev/urandom]]></category>
		<category><![CDATA[persistence]]></category>
		<category><![CDATA[S4U]]></category>
		<category><![CDATA[schtasks]]></category>
		<category><![CDATA[service-for-user]]></category>

		<guid isPermaLink="false">https://www.scriptjunkie.us/?p=717</guid>
		<description><![CDATA[You may have found yourself in a situation where you have access to a system through a limited user account, or could not or did not want to bypass UAC (AlwaysOn setting for example) and you needed to continue running code even when the account logged off and/or the system rebooted (and even if you [...]]]></description>
				<content:encoded><![CDATA[<p>You may have found yourself in a situation where you have access to a system through a limited user account, or could not or did not want to bypass UAC (AlwaysOn setting for example) and you needed to continue running code even when the account logged off and/or the system rebooted (and even if you don&#8217;t have the account&#8217;s password). For example, as a pentester you may need to set up persistent access after everyone has logged off for the day or as a software developer you may want to run background tasks for maintenance and update. However, most of the backdoors that I have seen that don&#8217;t require admin permissions typically use a registry value or a startup folder entry, or another method that will only run code once the current user logs in and will die once the user logs off. Every &#8220;legitimate&#8221; piece of software that runs code outside of a logon that I have looked into, such as software updaters, requires administrative permissions to install a service or scheduled task that runs as SYSTEM.</p>
<p>I don&#8217;t know whether this is due to ignorance on the part of the authors, or if so few systems run for any significant period of time without the main user being logged in that the authors don&#8217;t care, or maybe most limited user accounts don&#8217;t have the requisite permissions or administrative permissions are just too easy to get. But there are many UAC-protected or shared systems in many homes and businesses and a huge number of backdoors that are now written to run under limited user accounts.</p>
<p>So how do you do it? First, create a scheduled task to run your command with default options as the current user (this will by default create a scheduled task that only runs when you are logged in):</p>
<p><code>schtasks /create /tn mytask /SC HOURLY /TR "calc"</code></p>
<p>Then export the task as XML:</p>
<p><code>schtasks /query /XML /tn mytask &gt; temp.xml</code></p>
<p>and delete the task:</p>
<p><code>schtasks /delete /tn mytask /f</code></p>
<p>Then open the xml file, and replace the line<br />
<code>&lt;LogonType&gt;InteractiveToken&lt;/LogonType&gt;</code><br />
 with<br />
<code>&lt;LogonType&gt;S4U&lt;/LogonType&gt;</code></p>
<p>This can be done with the following commands assuming powershell is on the system:<br />
<code>powershell -Command "Get-Content '.\temp.xml' | foreach {$_ -replace 'InteractiveToken', 'S4U' }" &gt; new.xml<br />
move /y new.xml temp.xml</code></p>
<p>Now recreate the task from the modified XML file:</p>
<p><code>schtasks /create /xml temp.xml /tn mytasks</code></p>
<p>and remove your temp file:</p>
<p><code>del /f /q temp.xml</code></p>
<p>Your task will now run in the background every hour regardless of whether you are logged on. Since it will not run interactively, it will not have the cached credentials that an interactive logon will have, so you may not be able to access all of the network resources you were able to before, but you will be running!</p>
<p>What this does is use the Service-for-User or S4U logon type (See <a href="http://technet.microsoft.com/en-us/library/cc722152.aspx">http://technet.microsoft.com/en-us/library/cc722152.aspx</a> and <a href="http://msdn.microsoft.com/en-us/magazine/cc188757.aspx">http://msdn.microsoft.com/en-us/magazine/cc188757.aspx</a> for an in-depth discussion of S4U from the perspective of Kerberos). The system must be at least Windows Vista to schedule these types of tasks, and the &#8220;Logon as batch job policy&#8221; must be set for the user. On a Windows 7 Home Premium test system, this was the case for a non-UAC elevated admin, but not for a limited user by default. Of course every Windows domain could be different, so check first before you rely on it.</p>
<p>And enjoy running your scheduled scripts whenever you want, even if you cannot or do not want to elevate to administrative permissions. Also, if you make software that requires administrative permissions to install, please make it work as a limited user; there really are not many excuses left.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scriptjunkie.us/2013/01/running-code-from-a-non-elevated-account-at-any-time/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Attack Test</title>
		<link>http://www.scriptjunkie.us/2012/12/attack-test/</link>
		<comments>http://www.scriptjunkie.us/2012/12/attack-test/#comments</comments>
		<pubDate>Sun, 23 Dec 2012 03:18:48 +0000</pubDate>
		<dc:creator>scriptjunkie</dc:creator>
				<category><![CDATA[/dev/urandom]]></category>
		<category><![CDATA[Defense]]></category>

		<guid isPermaLink="false">https://www.scriptjunkie.us/?p=697</guid>
		<description><![CDATA[Well, the Mayan Apocalypse came and went, and since we&#8217;re all still here, it&#8217;s time to get back to computer security. It shouldn&#8217;t be a surprise that the most likely way you&#8217;ll get exploited is through your browser, so you should routinely check for vulnerabilities there. I was inspired by some of the free browser [...]]]></description>
				<content:encoded><![CDATA[<p>Well, the Mayan Apocalypse came and went, and since we&#8217;re all still here, it&#8217;s time to get back to computer security. It shouldn&#8217;t be a surprise that the most likely way you&#8217;ll get exploited is through your browser, so you should routinely check for vulnerabilities there.</p>
<p>I was inspired by some of the free browser vulnerability checkers out there, such as the <a href="https://www.mozilla.org/en-US/plugincheck/">Firefox plugin check</a> or the <a href="https://browserscan.rapid7.com/scanme">Rapid7 browser scan</a>, so I thought I&#8217;d put together a little bit of a different version. Nothing quite drives the point home like running through all the steps and demonstrating a compromise with a real exploit kit (without the evil), so I put together my own, based on Metasploit&#8217;s browser autopwn. It will launch the automatic exploits and even spawn a couple social engineering attacks after a minute if those fail, so you could even use it as a risk-free test for a friend or family member.</p>
<p>So as you visit your relatives this Christmas, feel free to give <a href="http://attacktest.com">attacktest.com</a> a try and see if they are vulnerable to the most common exploits available. You might also see if their security software of choice detects the attacks; since these are all public, off-the-shelf exploits, they might get stopped by an antivirus. (which doesn&#8217;t mean you aren&#8217;t vulnerable, of course) If any of the attacks do work, it&#8217;ll show you a screenshot it took, but it won&#8217;t leave any backdoors on your system or read documents or other files. Of course, if you&#8217;re paranoid, feel free to reverse engineer them, but you can trust me.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scriptjunkie.us/2012/12/attack-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hoarder, HIPS bypasses, and Ambush</title>
		<link>http://www.scriptjunkie.us/2012/10/hoarder-hips-bypasses-and-ambush/</link>
		<comments>http://www.scriptjunkie.us/2012/10/hoarder-hips-bypasses-and-ambush/#comments</comments>
		<pubDate>Mon, 01 Oct 2012 02:57:24 +0000</pubDate>
		<dc:creator>scriptjunkie</dc:creator>
				<category><![CDATA[Defense]]></category>

		<guid isPermaLink="false">https://www.scriptjunkie.us/?p=672</guid>
		<description><![CDATA[I gave an updated Ambush Presentation at Derbycon today... On the attack side, I demonstrated Hoarder, which is a proof of concept to bypass standard hook-based host intrusion prevention systems by avoiding making any calls to OS DLLs at all, and only making raw syscalls to the kernel. It works in two steps. First, the getdlls program opens the target executable and recursively reads it and all of its required DLLs into C language byte arrays.]]></description>
				<content:encoded><![CDATA[<p>I gave an updated Ambush Presentation at Derbycon today. Reverse engineers can feel right at home stepping through the <a href="/files/ambushpreso/" target="_blank">IDA-inspired slides</a>. Hit the spacebar or the right arrow key to move forward, and z or the left arrow key to move backwards. If you are not familiar with Ambush, check out <a href="http://ambuships.com/" target="_blank">http://ambuships.com/</a>. Recently supported in Ambush is a Windows standalone install method, and we have fixed a few bugs and some of the install gotchas so nothing should stop you from experiencing the awesome now.</p>
<p>On the attack side, I demonstrated Hoarder, which is a proof of concept to bypass standard hook-based host intrusion prevention systems by avoiding making any calls to OS DLLs at all, and only making raw syscalls to the kernel. It works in two steps. First, the getdlls program opens the target executable and recursively reads it and all of its required DLLs into C language byte arrays. It then identifies all of the required DLL aliases and generates source code for the loader to know how to connect the DLLs. </p>
<p class="attachment-entry"><a href="/wp-content/uploads/2012/10/4-getdlls.png"><img width="300" height="203" src="/wp-content/uploads/2012/10/4-getdlls.png" class="attachment-medium" alt="Output of getdlls" title="getdlls" /></a></p>
<p>In the second step, the sources generated need to be compiled with the rest of the hoarder sources into the final product. These include a small bit of assembly to make a direct syscall to allocate memory and a modified version of Stephen Fewer&#8217;s Reflective Loader to handle the DLL loading, such as section mapping, export forwarding, and relocating if necessary. These have been carefully written along with the required data structures to not make any external function calls. A lot of unusual compilation settings were also used to avoid any boilerplate compiler-inserted code or other standard libraries that would end up calling external DLLs. To do this with your own projects in MSVC, you will need to turn off C++ exceptions, turn off any optimization that will use functions like memset for example, and not use a WinMain or main method, but instead manually set the entry point to your own start function.</p>
<p class="attachment-entry"><a href="/wp-content/uploads/2012/10/5-hoarded.png"><img width="300" height="295" src="/wp-content/uploads/2012/10/5-hoarded.png" class="attachment-medium" alt="screenshot of hoarded helloworld.exe in IDA, showing no imported functions" title="hoarded" /></a></p>
<p>You now effectively have a completely statically compiled executable on Windows.</p>
<p>[insert applause here]<br />
But wait, don&#8217;t get too excited just yet &#8211; Hoarder still won&#8217;t invalidate Ambush or user-mode hooks in general:<br />
First, right now this only works on toy examples, and many difficulties remain before using it on real malware. Any operation that relies on the Process Environment Block and associated data structures matching the DLLs that are loaded into memory will break, as well as any operation that relies on the modules actually mapping to real file handles, or other details that happen with a real loader. This includes most programs&#8217; functionality. In fact, I had to disable even calling the DllMain methods of the loaded DLLs to avoid crashing. This means that all the global variables and other initialization code was also messed up, breaking everything but the simplest functions. Even if those concerns were addressed, without a dramatic amount of work, the hoarded executable will be tied to a specific OS version, architecture, and service pack because otherwise the syscalls will be wrong. All this means that almost any real program will still have serious issues. Hoarder ended up being a learning exercise illustrating just how difficult it really is to avoid making DLL function calls. From an attack perspective, I am still interested in seeing whether the above can be addressed, but it will clearly be a major effort. So in the meantime, Ambush will remain effective against the entire spectrum of attacks and malware behavior. If we take into consideration the research done in <a href="https://www.blackhat.com/html/bh-us-12/bh-us-12-briefings.html#Branco" target="_blank">&#8220;A Scientific (But Non Academic) Study of How Malware Employs Anti-Debugging, Anti-Disassembly and Anti-Virtualization Technologies,&#8221;</a> the fact that the overwhelming majority of malware out there does not even implement defenses against existing hooks, Ambush should remain effective against most malware long into the future.</p>
<p>Second, even if a complete hoarder is finished, Ambush will remain an effective defense against first-stage attacks, including shellcode. As I pointed out in the talk, we are slowly seeing the decline of memory corruption exploits in real attacks. For example, three out of four of the zero-days that Stuxnet used were non-memory corruption exploits, along with the vaunted Flame-dropping exploit and all of the recent Java 0days. Without directly executing shellcode, an attacker cannot simply make direct syscalls or avoid hooks. Even if an exploit is used that leads to direct native shellcode execution, although syscalls hypothetically could be used, the inherent complexity and platform-specificity of them makes direct-syscall shellcode unlikely. It is a lot of work to attempt to re-implement functionality such as downloading and executing a file with syscalls.</p>
<p>Third, Ambush will remain effective as a platform for distributing signatures to block exploits. If details of the vulnerability are known, Ambush can usually be used to prevent exploits themselves, or get an alert when one is attempted even if a patch has been applied. This once again lets you extend your ability to detect attempted compromises.</p>
<p>As always, send me a note if you are interested in using or working on any of the above.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scriptjunkie.us/2012/10/hoarder-hips-bypasses-and-ambush/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vulnerable systems setup</title>
		<link>http://www.scriptjunkie.us/2012/09/vulnerable-systems-setup/</link>
		<comments>http://www.scriptjunkie.us/2012/09/vulnerable-systems-setup/#comments</comments>
		<pubDate>Wed, 19 Sep 2012 01:58:01 +0000</pubDate>
		<dc:creator>scriptjunkie</dc:creator>
				<category><![CDATA[/dev/urandom]]></category>
		<category><![CDATA[Vulnerabilities]]></category>

		<guid isPermaLink="false">https://www.scriptjunkie.us/?p=666</guid>
		<description><![CDATA[I frequently get asked how to set up a test lab to practice hacking on... So I looked through some release timelines and oldversion.com postings to figure out which versions of your favorite browser, plugins, and PDF reader would be installed if you had up-to-date versions of each on January 1st of the past three years, and where you can get them from. Enjoy.]]></description>
				<content:encoded><![CDATA[<p>I frequently get asked how to set up a test lab to practice hacking on. Usually I point the curious in the direction of VMWare or VirtualBox and tell them to set up VM&#8217;s. There are plenty of guides explaining how to do this, but one step that is often missing is how to configure realistic VM&#8217;s for vulnerable configurations. You might want to know how the exploit you are trying would work against different systems, or how it would work against targets at the time it was released. So I looked through some release timelines and oldversion.com postings to figure out which versions of your favorite browser, plugins, and PDF reader would be installed if you had up-to-date versions of each on January 1st of the past three years, and where you can get them from. This may also be useful if you are putting together a CTF or other challenge:</p>
<p>For your beginning-of-2010 vulnerable system you should have:<br />
IE 8 with MS09-072/KB294871 update <a href="http://support.microsoft.com/kb/294871">http://support.microsoft.com/kb/294871</a><br />
Flash player 10.0.32.18<br />
<a href="http://www.oldversion.com/download-Macromedia-Flash-Player-10.0.32.18.html">http://www.oldversion.com/download-Macromedia-Flash-Player-10.0.32.18.html</a><br />
Java SE 6 Update 17<br />
<a href="http://www.oldversion.com/download-Java-Platform-Java-6-Update-17.html">http://www.oldversion.com/download-Java-Platform-Java-6-Update-17.html</a><br />
Acrobat Reader 9.2<br />
<a href="http://www.oldversion.com/download-Acrobat-Reader-9.2.html">http://www.oldversion.com/download-Acrobat-Reader-9.2.html</a></p>
<p>For beginning-of-2011 you should have:<br />
IE 8 with MS10-090/KB2416400 update <a href="http://support.microsoft.com/kb/2416400">http://support.microsoft.com/kb/2416400</a><br />
Flash player 10.1<br />
<a href="http://www.oldversion.com/download-Macromedia-Flash-Player-10.1-%28Non-IE-Browsers%29.html">http://www.oldversion.com/download-Macromedia-Flash-Player-10.1-%28Non-IE-Browsers%29.html</a><br />
Java SE 6 Update 23<br />
<a href="http://www.oldversion.com/download-Java-Platform-Java-6-Update-23.html">http://www.oldversion.com/download-Java-Platform-Java-6-Update-23.html</a><br />
Acrobat Reader 10.0<br />
<a href="http://www.oldversion.com/download-Acrobat-Reader-10.0.0.html">http://www.oldversion.com/download-Acrobat-Reader-10.0.0.html</a><br />
or 9.5.0<br />
<a href="http://www.oldversion.com/download-Acrobat-Reader-9.5.0.html">http://www.oldversion.com/download-Acrobat-Reader-9.5.0.html</a></p>
<p>For beginning-of-2012 you should have:<br />
IE 8 (most popular) or 9 with MS11-099/KB2618444 update <a href="http://support.microsoft.com/kb/2618444">http://support.microsoft.com/kb/2618444</a><br />
Flash player 11.1.102.55<br />
<a href="http://www.oldversion.com/download-Macromedia-Flash-Player-11.1.102.55-%2832-bit%29-%28Non-IE%29.html">http://www.oldversion.com/download-Macromedia-Flash-Player-11.1.102.55-%2832-bit%29-%28Non-IE%29.html</a><br />
Java SE 6 Update 30<br />
<a href="http://www.oldversion.com/download-Java-Platform-Java-6-Update-30.html">http://www.oldversion.com/download-Java-Platform-Java-6-Update-30.html</a><br />
Acrobat Reader 10.1.1<br />
<a href="http://www.oldversion.com/download-Acrobat-Reader-10.1.1.html">http://www.oldversion.com/download-Acrobat-Reader-10.1.1.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.scriptjunkie.us/2012/09/vulnerable-systems-setup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shellcode sizes in Metasploit</title>
		<link>http://www.scriptjunkie.us/2012/08/shellcode-sizes-in-metasploit/</link>
		<comments>http://www.scriptjunkie.us/2012/08/shellcode-sizes-in-metasploit/#comments</comments>
		<pubDate>Sat, 11 Aug 2012 15:05:53 +0000</pubDate>
		<dc:creator>scriptjunkie</dc:creator>
				<category><![CDATA[Exploits]]></category>
		<category><![CDATA[Metasploit]]></category>

		<guid isPermaLink="false">https://www.scriptjunkie.us/?p=646</guid>
		<description><![CDATA[When working on DNS tunneling shellcode, I was wondering how small the shellcode needed to be to work with most exploits. In case you have the same question, this is how you find out how much space, for example, all Windows exploits have, or see how many exploits a given payload will work with, although [...]]]></description>
				<content:encoded><![CDATA[<p>When working on DNS tunneling shellcode, I was wondering how small the shellcode needed to be to work with most exploits. In case you have the same question, this is how you find out how much space, for example, all Windows exploits have, or see how many exploits a given payload will work with, although you should leave extra space for encoders. It is fairly easy to do this from outside the framework since each exploit has a line like &#8220;&#8216;Space&#8217; => 500,&#8221; so I used some quick grep/awk commands. I am sure those better at bash-fu than me can provide improvements. Or it could be easily done from within the framework as well, but this is one way to do it.</p>
<p>How many will work with shellcode, say 500 bytes long?<br />
<code><br />
$ grep -rn "'Space'" /opt/metasploit/msf3/modules/exploits/windows/ | awk '-FS' '{print $2}' | awk '-F>' '{print $2}' | awk -F, '{print $1}' | sort | ruby -e '$stdin.each {|line| puts(500 <= eval(line)) }' | sort -n | uniq -c<br />
     82 false<br />
    510 true<br />
</code></p>
<p>How much space do all the exploits allow for?<br />
<code><br />
$ grep -rn "'Space'" /opt/metasploit/msf3/modules/exploits/windows/ | awk '-FS' '{print $2}' | awk '-F>' '{print $2}' | awk -F, '{print $1}' | sort | ruby -e '$stdin.each {|line| puts(eval(line)) }' | sort -n | uniq -c<br />
      1 148<br />
      1 160<br />
      1 164<br />
      1 210<br />
      1 212<br />
      1 213<br />
      1 228<br />
      1 236<br />
      5 250<br />
      1 253<br />
      3 256<br />
      1 260<br />
      1 284<br />
      1 296<br />
      3 300<br />
      2 336<br />
      1 344<br />
      1 350<br />
      2 370<br />
      1 380<br />
      1 382<br />
      1 384<br />
      1 392<br />
     26 400<br />
      1 407<br />
      1 417<br />
      2 424<br />
      1 434<br />
      1 440<br />
      7 450<br />
      1 460<br />
      1 469<br />
      1 472<br />
      2 476<br />
      2 480<br />
      2 490<br />
      1 498<br />
     35 500<br />
     25 512<br />
      1 526<br />
     12 550<br />
     26 600<br />
      1 614<br />
      1 632<br />
      1 636<br />
      1 640<br />
     10 650<br />
      1 674<br />
      1 698<br />
      8 700<br />
      1 710<br />
      1 728<br />
     22 750<br />
      1 768<br />
     38 800<br />
      1 830<br />
      4 850<br />
      1 870<br />
      1 880<br />
      1 896<br />
      5 900<br />
      3 936<br />
      1 950<br />
      1 962<br />
      1 970<br />
      1 979<br />
      1 987<br />
     58 1000<br />
      2 1012<br />
      2 1014<br />
    141 1024<br />
      1 1026<br />
      1 1104<br />
      1 1200<br />
      1 1216<br />
      1 1321<br />
      1 1456<br />
      1 1500<br />
      1 1508<br />
      1 1800<br />
      1 1871<br />
      1 1900<br />
     12 2000<br />
     36 2048<br />
      2 2052<br />
      2 2339<br />
      4 3000<br />
      1 3500<br />
      9 4000<br />
      3 4096<br />
      1 4100<br />
      1 4108<br />
      1 4150<br />
      1 4500<br />
      1 4658<br />
      1 4720<br />
      1 4724<br />
      3 5000<br />
      1 5100<br />
      1 6000<br />
      4 8000<br />
      1 10240<br />
      2 20480<br />
      1 32767<br />
</code></p>
<p>I needed to use ruby to eval the line since some of the exploits included expressions calculating exactly how large a shellcode could fit, such as "'Space' => ((1024*2)+4),"  Unfortunately for those writing large shellcodes, many of those are not very specific. A lot of developers (I'm guilty too) just put in nice round numbers like 500 or 1000 and didn't test to see just how large a shellcode could actually be fit in. Frustratingly, some exploits even include random numbers in their space calculation: "'Space' => 1024 + (rand(1000)),". This is because the framework will pad payloads with nops to get them to fill the full space, and the developers wanted more randomness for evasion. I think it would make more sense if the number of nops were decided somewhere else. Who wants to rewrite a bunch of exploits?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.scriptjunkie.us/2012/08/shellcode-sizes-in-metasploit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
