<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"><id>tag:blogger.com,1999:blog-7985496991125228536</id><updated>2013-02-26T22:09:07.919-05:00</updated><title type="text">CrowdStrike</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.crowdstrike.com/" /><author><name>CrowdStrike Inc.</name><uri>http://www.blogger.com/profile/10460599760417303380</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/-5TqAHiRx9Q4/T2NsTotLVQI/AAAAAAAAAA8/i8nSMpAppCk/s220/logo_dkgr200.png" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Crowdstrike" /><feedburner:info uri="crowdstrike" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-2228857858038732211</id><published>2013-01-23T18:23:00.004-05:00</published><updated>2013-01-23T18:24:38.933-05:00</updated><title type="text">Empowering Information Sharing: Release of pyNSSFClient</title><content type="html">&lt;h2&gt;Pat Winkler, Sr. Research Engineer&lt;/h2&gt;Malware is one of the common tools used by adversaries, whether they're getting a foothold in your network, moving laterally through your systems, or exfiltrating sensitive data. &amp;nbsp;Having access to new malware samples can be key to understanding what trespassers are doing on your systems and how they got there. &amp;nbsp;By gathering many thousands of new samples a day, we can see the evolution of these tools as well as investigate how they work. &lt;br /&gt;&lt;br /&gt;One of the lesser-known facts about the computer security business is that vendors exchange malware samples with each other, often through mutual sharing arrangements. &amp;nbsp;Unfortunately, despite this practice existing for many years, there isn't a lot of standardization on how this process should happen. &amp;nbsp;One of the attempts to solve many of the problems related to sample sharing is the Norman Sample Sharing Framework (NSSF), obviously written by folks at &lt;a href="http://www.norman.com/"&gt;Norman&lt;/a&gt;. &amp;nbsp;In order to interact with companies using this framework, you must have an NSSF client that supports the NSSF API. &amp;nbsp;Norman has links to their PHP implementation (which has both client and server code) as well as a Perl implementation written by Mario Bono at &lt;a href="http://www.ikarus.at/"&gt;Ikarus Security Software&lt;/a&gt;. &amp;nbsp;We use Python extensively at CrowdStrike for our automated malware analysis work, so we have written a Python implementation of the NSSF client code and made the source code available at our GitHub at: &lt;a href="https://github.com/CrowdStrike/pyNSSFClient"&gt;https://github.com/CrowdStrike/pyNSSFClient&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Assuming you have credentials to access an NSSF server (or have set up one yourself), this code allows you to simply interact with that server to get lists of new file hashes and/or download samples. &amp;nbsp; &lt;br /&gt;The key functionality is all within the SampleShare class in sample_share.py. &amp;nbsp;This class has basic command line support for testing purposes, which can be used to get lists of hashes or download samples.&lt;br /&gt;&lt;br /&gt;You may notice that we use &lt;a href="http://www.stack.nl/~dimitri/doxygen/"&gt;Doxygen&lt;/a&gt;-style code documentation instead of Python docs. &amp;nbsp;We use a variety of languages at CrowdStrike, and Doxygen lets us have a common code documentation format and tooling.&lt;br /&gt;&lt;br /&gt;Feel free to fork the code on Github and add your contributions. Or send us your resume and work on it at CrowdStrike -- &lt;a href="mailto:mission@crowdstrike.com"&gt;we're hiring&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/2228857858038732211/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2013/01/empowering-information-sharing-release.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/2228857858038732211" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/2228857858038732211" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/Ql0HbufusUY/empowering-information-sharing-release.html" title="Empowering Information Sharing: Release of pyNSSFClient" /><author><name>Pat</name><uri>http://www.blogger.com/profile/14081558395695153394</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2013/01/empowering-information-sharing-release.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-7806077229486073154</id><published>2013-01-09T14:18:00.000-05:00</published><updated>2013-01-10T20:35:19.796-05:00</updated><title type="text">I/O You Own: Windows 8 Update </title><content type="html">&lt;div class="MsoNormal" style="margin-bottom: 12pt; text-align: left;"&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;h2&gt;Aaron LeMasters, Sr. Research Engineer&lt;/h2&gt;At &lt;a href="http://www.syscan.org/index.php/archive/view/year/2012/city/sg/pg/program" target="_blank"&gt;SyScan 2012&lt;/a&gt; last year, I debuted research on how to bypass the Operating System’s normal input/output (I/O) disk driver path and use the crash dump driver stack (i.e., “crash dump I/O path”) to read the master boot record (MBR). This technique subverted the TDL4 rootkit and would be effective against any traditional I/O hooking rootkit/malware.&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt; I recently presented an &lt;a href="#BSides Jackson Presentation"&gt;overhauled version of this presentation&lt;/a&gt; at BSides Jackson in Jackson, MS. For this updated presentation, I focused on interesting new changes to the Windows 8 crash dump stack and hinted at a new technique to manipulate this crash dump stack. This blog post will cover technical details of the new Windows 8 technique.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;Background: Original Bypass Technique&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;The Windows operating system maintains two separate I/O paths to the boot device – one for normal system operation, the &lt;b&gt;normal I/O path&lt;/b&gt;, which consists of components such as the file system, volume manager, partition manager, and so on; and a second path, the &lt;b&gt;crash dump I/O path&lt;/b&gt;, which is used exclusively for writing a crash dump file to the boot device when the system crashes and for writing hibernation data to the &lt;span class="s2"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;hiberfil.sys&lt;/span&gt;&lt;/span&gt; file when the system hibernates. These two I/O paths are illustrated in Figure 1 below.&lt;span class="s3"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s3"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-yF4401SWRnI/UO2RHyviB0I/AAAAAAAAAN8/LMSsqid9PFg/s1600/AL_Blog1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="275" src="http://4.bp.blogspot.com/-yF4401SWRnI/UO2RHyviB0I/AAAAAAAAAN8/LMSsqid9PFg/s400/AL_Blog1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s3"&gt;       &lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;Each of these paths consists of a series of layered drivers (or “driver stack”) that pass I/O requests back and forth to complete operations. The crash dump driver stack consists of a dump port driver, a dump miniport driver, one or more crash dump filter drivers, and a special driver named &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;crashdmp.sys&lt;/span&gt;&lt;/span&gt; that serves as a crash state manager for the kernel (technically, it lives outside the driver stack).&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;As shown in Figure 1, the crash dump driver stack is almost a mirror copy of the lowest portion of the normal path’s driver stack, with a few twists.&amp;nbsp; The crash dump port driver, provided by Microsoft as part of the operating system, is a special copy of the normal I/O path’s disk port driver, altered to completely bypass the normal I/O path during a system crash. The crash dump miniport driver, provided by the manufacturer, is pre-programmed to operate in conjunction with this special dump port driver in a restricted crash dump environment.&amp;nbsp; These two low-level drivers, in conjunction with the kernel and the &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;crashdmp.sys&lt;/span&gt;&lt;/span&gt; driver, work together to operate the crash dump I/O path completely separate from the normal I/O path.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Only the operating system uses this special “backdoor” path to disk, but I discovered it was possible to use the crash dump driver stack to arbitrarily read or write to disk via a driver that implements a bypass technique. Despite the fact that this bypass technique worked, it involved a few “hackish” feats that made the proof of concept driver less than ideal. As discussed in the SyScan presentation and accompanying whitepaper, the general steps in the technique are:&lt;/div&gt;&lt;ol class="ol1"&gt;&lt;li class="li2"&gt;&lt;b&gt;Identify the Crash Dump Port and Miniport Drivers&lt;/b&gt; – Walk the list of memory-resident kernel modules to locate the dump port and miniport drivers. Once located, call their entry points with special arguments to initialize them.&amp;nbsp;&lt;/li&gt;&lt;li class="li2"&gt;&lt;b&gt;Get Boot Device Information&lt;/b&gt; – Send special IO control codes to the normal I/O path drivers to get information about the boot disk, which we will use when sending our own I/O request.&amp;nbsp;&lt;/li&gt;&lt;li class="li2"&gt;&lt;b&gt;Find &lt;/b&gt;&lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;StartIo()&lt;/span&gt; &lt;/span&gt;&lt;b&gt;or&lt;/b&gt; &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;DispatchCrb()&lt;/span&gt;&lt;/span&gt;&lt;b&gt;Routines&lt;/b&gt; – Scan the dump port driver’s text section for “magic bytes” that allow us to identify these routines that carry out I/O in crash dump mode.&amp;nbsp;&lt;/li&gt;&lt;li class="li2"&gt;&lt;b&gt;Find and Initialize the Dump Port Driver’s Device Extension&lt;/b&gt; – Locate a pointer to this dump port driver’s internal structure and initialize some fields in it to set up our I/O request.&lt;/li&gt;&lt;li class="li2"&gt;&lt;b&gt;Instantiate a SCSI/IDE Request Block&lt;/b&gt; – Using the boot device information obtained in Step 2, fill in a &lt;span style="font-family: Courier New, Courier, monospace;"&gt;&lt;span class="s1"&gt;SCSI_REQUEST_BLOCK&lt;/span&gt; (SRB)&lt;/span&gt; or &lt;span style="font-family: Courier New, Courier, monospace;"&gt;&lt;span class="s1"&gt;IDE_REQUEST_BLOCK&lt;/span&gt; (IRB)&lt;/span&gt; structure that instructs the disk to read 512 bytes from the first sector on disk.&lt;/li&gt;&lt;li class="li2"&gt;&lt;b&gt;6.&lt;span class="Apple-tab-span"&gt; &lt;/span&gt;Call &lt;/b&gt;&lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;StartIo()&lt;/span&gt; &lt;/span&gt;&lt;b&gt;or&lt;/b&gt; &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;DispatchCrb()&lt;/span&gt; &lt;/span&gt;– Pass the SRB/IRB from Step 5 to the I/O routine.&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;div class="p1"&gt;This technique worked sufficiently well for SCSI transport devices in Windows 2000 through Windows 7, but it could cause stability issues. A similar version of the technique tailored to IDE drives was able to transmit I/O requests, but the requests were not successfully completed. Since this was just a side project at the time, I was not able to devote the time and resources necessary to debug the issues with this technique.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Windows 8 has introduced drastic changes to both the &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;crashdmp.sys&lt;/span&gt;&lt;/span&gt; driver and the dump port driver itself (a very rare alteration) that break the original technique described above and render many aspects of it unnecessary. The changes in Windows 8 integrate a read capability into the crash dump stack that can be used in a stable way. Before discussing a new technique to use these features, it is necessary to briefly explore some of the important changes to the crash dump stack in Windows 8.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;New Crash Dump Features in Windows 8&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;To decrease system startup time, Windows 8 introduces a new feature called “hybrid boot.” Hybrid boot is a startup method for quickly resuming the operating system after the system goes into sleep/hibernation mode. It is a hybrid between traditional cold boot and resuming from hibernation.&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;As opposed to normal hibernation, where all user sessions are hibernated to disk, hybrid boot only hibernates the system session. This means that all system drivers, services, plug-and-play devices, and so on, don’t have to be shut down and restarted, providing a much faster resume operation. If you’d like to learn more about hybrid boot, check out this article on the &lt;a href="http://blogs.msdn.com/b/b8/archive/2011/09/08/delivering-fast-boot-times-in-windows-8.aspx" target="_blank"&gt;&lt;i&gt;Building Windows 8&lt;/i&gt;&lt;span class="s2"&gt; &lt;/span&gt;blog&lt;/a&gt;.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;So what does this have to do with the crash dump stack? As previously mentioned, the crash dump stack is responsible not only for writing a crash dump file when a system error occurs, but it also has the task of managing the hibernation file (&lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;hiberfil.sys&lt;/span&gt;&lt;/span&gt;) in conjunction with the kernel and the power manager. Therefore, any changes to how the system hibernates (such as the new hybrid boot feature) will require modifications to the crash dump stack drivers.&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Along with extensive changes to the kernel itself and the power manager, the dump port driver and the &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;crashdmp.sys&lt;/span&gt;&lt;/span&gt; driver were modified to support this new hybrid boot feature. Most importantly, both drivers contain new functions that issue read requests to the boot device when the system is resuming from hibernation. The power manager uses these new read routines when resuming from hibernation to restore hiber context information:&lt;/div&gt;&lt;div class="p3"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;Nt!PopRestoreHiberContext()&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;Nt!PopRequestRead()&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;Crashdmp.sys!CrashdmpReadRoutine()&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;Diskdump.sys!DiskDumpRead()&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class="p1"&gt;Prior to Windows 8, the hibernation context information was not retrieved from disk in this manner. Rather, the power manager handled the entire process. Integrating this aspect of the new hybrid boot feature at the dump port driver level results in an extremely fast resume operation.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;For the purposes of this research and proof of concept driver, this is an important departure from the crash dump stack in prior versions of Windows, which was only capable of writing to disk (either a crash dump file or &lt;span style="font-family: Courier New, Courier, monospace;"&gt;&lt;span class="s1"&gt;hiberfil.sys&lt;/span&gt;)&lt;/span&gt;. In Windows 8, it can now read from disk as well, consequently obsoleting the original bypass technique previously described.&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;So, how do we use the new read feature in the Windows 8 dump port driver for our own purposes? Keep reading.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;Toward a Windows 8 Proof of Concept&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;With the new read capabilities in the dump stack, Microsoft had to expose it to driver developers so that things like whole-disk encryption software would work properly. Whole-disk encryption software typically includes a crash dump filter driver so that when a dump file is written to disk, the software has an opportunity to encrypt its contents.&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Now that data can be additionally read by the crash dump mechanism, Microsoft extended their existing crash dump filter callback API to include a &lt;a href="http://msdn.microsoft.com/en-us/library/windows/hardware/hh439713(v=vs.85).aspx" target="_blank"&gt;read routine callback&lt;/a&gt;. Unfortunately, such a callback has no control over what data is actually being read, so using this approach for our purposes would not work.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;The other option is to use one of the new read routines directly, whose prototypes are shown below:&lt;/div&gt;&lt;div class="p7"&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;Crashdmp.sys!CrashdmpReadRoutine(Type, Offset, Mdl)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;Diskdump.sys!DumpRead(Type, Offset, Mdl)&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;div class="p1"&gt;As it turns out, the first function is simply a wrapper around the second one with additional code to update the dump state context, which we don’t care about. Therefore, the best option seems to be to attempt to use the second function. Further investigation of this function reveals it is also a wrapper around another internal dump port driver function, &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;DiskDumpIoIssue()&lt;/span&gt;&lt;/span&gt;:&lt;/div&gt;&lt;div class="p11"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-VLJBSfyFHJc/UO2RQukFyyI/AAAAAAAAAOE/qRBExcUM5LY/s1600/AL_Blog2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="47" src="http://4.bp.blogspot.com/-VLJBSfyFHJc/UO2RQukFyyI/AAAAAAAAAOE/qRBExcUM5LY/s400/AL_Blog2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;DiskDumpIoIssue()&lt;/span&gt; &lt;/span&gt;kindly handles all of the aspects of issuing I/O requests to the dump miniport, which the original technique had to hack prior to Windows 8:&lt;/div&gt;&lt;ul class="ul1"&gt;&lt;li class="li2"&gt;Initializing a &lt;span style="font-family: Courier New, Courier, monospace;"&gt;&lt;span class="s1"&gt;SCSI_REQUEST_BLOCK &lt;/span&gt;(SRB)&lt;/span&gt; structure to describe the request&lt;/li&gt;&lt;li class="li2"&gt;Mapping an &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;MDL&lt;/span&gt; &lt;/span&gt;to describe the &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;SRB&lt;/span&gt; &lt;/span&gt;data buffer, if required&lt;/li&gt;&lt;li class="li2"&gt;Calling the dump port internal I/O function, &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;StartIo()&lt;/span&gt;&lt;/span&gt;, which calls the dump miniport &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;HwStartIo()&lt;/span&gt; &lt;/span&gt;routine to actually program the device for the operation&lt;/li&gt;&lt;li class="li2"&gt;Polling to wait on result&lt;/li&gt;&lt;li class="li2"&gt;Retrying failed/pending requests&lt;/li&gt;&lt;/ul&gt;&lt;div class="p1"&gt;As is the case with the bypass technique, it is still necessary to do some initialization prior to calling this new function. In addition to initializing the dump stack drivers ourselves, the dump port driver’s device extension must be located and initialized. Since this structure changed significantly in Windows 8, it had to be manually reverse engineered and the initialization techniques changed accordingly.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;At this point, there is enough information to piece together the steps required to use the &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;DiskDumpIoIssue()&lt;/span&gt;&lt;/span&gt; function in Windows 8 (some of the concepts mentioned here will be covered in detail shortly):&lt;/div&gt;&lt;div class="p12"&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Locate and initialize the crash dump miniport driver&lt;/li&gt;&lt;li&gt;Locate, patch and initialize the crash dump port driver&lt;/li&gt;&lt;li&gt;Locate the dump port driver’s new read routine, &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;DiskDumpIoIssue()&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Disable the normal I/O path&lt;/li&gt;&lt;li&gt;Call &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;DiskDumpIoIssue()&lt;/span&gt;&lt;/span&gt; with a disk offset and an MDL that describes the buffer to store the result.&lt;/li&gt;&lt;li&gt;Enable the normal I/O path&lt;/li&gt;&lt;li&gt;Unpatch the dump port driver&lt;/li&gt;&lt;/ol&gt;&lt;div class="p1"&gt;&lt;b&gt;Putting the System into Crash Dump Mode&lt;/b&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;As previously mentioned, the system operates in a restricted environment (“crash dump mode”) when a crash is in progress.&amp;nbsp; This environment, setup by the kernel after a bug check has occurred, severely restricts what operations can be performed on the system and what features are available.&amp;nbsp; In effect, the system is reduced to a single processor running one uninterruptible thread at the highest possible interrupt request level (IRQL).&amp;nbsp; Any I/O that might take place is done synchronously and interrupts are disabled.&amp;nbsp; There are documented mechanisms available to replicate this environment, the most useful of which is Interprocessor Interrupt (IPI) broadcasts.&amp;nbsp; Each of the steps mentioned above that interact with a driver in the crash dump stack must momentarily “enable” crash dump mode using an IPI broadcast.&amp;nbsp; This includes calling the dump port and miniport &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;DriverEntry()&lt;/span&gt;&lt;/span&gt; routines when initializing the drivers and just before sending the&amp;nbsp; I/O request to the dump port driver.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;Disabling/Re-enabling the Normal I/O Path&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;An issue not addressed in the original bypass technique, using two separate driver stacks that operate on the same underlying hardware is problematic at best, since doing so will almost certainly lead to race conditions. Furthermore, arbitrarily initiating I/O through the crash dump stack will trash any I/O already in progress on the device (initiated from the normal I/O path), which can have a range of possible outcomes, from working without issue to deadlocking the system. Fortunately, it is possible to send a special I/O control code to the normal I/O path port driver, instructing it to flush and lock its internal queue. This mechanism makes it possible to halt the normal I/O path, after which, the system can be placed into restricted crash dump mode and I/O can be issued through the crash dump I/O path.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;Patching the Dump Port Driver&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;Another challenge to overcome was the integration of new hibernation features into the dump port driver. Specifically, the dump port driver’s &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;DriverEntry()&lt;/span&gt; &lt;/span&gt;calls an internal function &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;MarkHiberBootPhase()&lt;/span&gt;&lt;/span&gt;, which marks certain memory pages to be included in the hibernation file via &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;nt!PoSetHiberRange()&lt;/span&gt;&lt;/span&gt;.&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;Unfortunately there is no way to sidestep this function call from within the dump port driver’s &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;DriverEntry()&lt;/span&gt;&lt;/span&gt;, and attempts to trick the operating system into thinking it is in a hibernation state before calling it failed (it can almost be accomplished via &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;nt!ZwPowerInformation()&lt;/span&gt; &lt;/span&gt;with the &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;SystemReserveHiberFile&lt;/span&gt; &lt;/span&gt;information type).&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;The issue here is that a special hibernation context structure internal to the kernel must be allocated before any hiber functions (such as &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;nt!PoSetHiberRange()&lt;/span&gt;&lt;/span&gt;) are called, and the only way to trigger this allocation is to actually set the system into a hibernation state by calling &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;nt!NtSetSystemPowerState()&lt;/span&gt;&lt;/span&gt;. This is not an acceptable solution, as we want to make as few changes to the system as possible.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;There are two ways to get around this unfortunate restriction. The first option is to not call &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;DriverEntry()&lt;/span&gt; &lt;/span&gt;at all. This means more upfront work before it is possible to send I/O to the dump port driver. It also means the solution is less portable to future operating systems, because of the need to use static structure offsets which are painstakingly cherry-picked from reverse engineering various drivers.&amp;nbsp;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;The other option is to simply patch the dump port driver’s &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;DriverEntry()&lt;/span&gt;&lt;/span&gt; function to disable the call to &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;MarkHiberBootPhase()&lt;/span&gt;&lt;/span&gt;. Despite my abhorrence of anything patching/hooking related (I can see all of my teammates cringing in disgust), this turned out to be a simple 0x15-byte patch that could be immediately restored after sending the I/O request. And since the system is manually forced into crash dump mode (single processor, single thread, uninterruptible, synchronous I/O, high IRQL), there are no synchronization issues.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;But just to be sure it was impractical, I actually tried sidestepping &lt;span class="s1"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;DriverEntry()&lt;/span&gt;&lt;/span&gt;completely. It turned into a half day’s exercise of shoving pointers into various fields in an undocumented device extension structure to learn their purposes, in between system crashes. Clearly the tedium and uncertainty involved in that approach were not worth it, so patching out the call made the most sense.&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="p1"&gt;This blog post has covered a new technique to read arbitrary data from a storage device using the new crash dump stack in Windows 8, which includes an inherent read capability. Several other critical steps necessary for a reliable proof of concept were discussed, such as crash dump mode and toggling the normal I/O path.&lt;br /&gt;&lt;br /&gt;I would like to give special thanks to Alex Ionescu for his assistance in making this research possible and to my colleagues on the review team for taking the time to critique this post. &lt;/div&gt;&lt;br /&gt;&lt;a name="BSides Jackson Presentation"&gt;&lt;/a&gt;  &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/15921485" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen webkitallowfullscreen mozallowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="http://www.slideshare.net/CrowdStrike/io-you-own-regaining-control-of-your-disk-in-the-presence-of-bootkits" title="I/O, You Own: Regaining Control of Your Disk in the Presence of Bootkits" target="_blank"&gt;I/O, You Own: Regaining Control of Your Disk in the Presence of Bootkits&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="http://www.slideshare.net/CrowdStrike" target="_blank"&gt;CrowdStrike&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;&lt;!--EndFragment--&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/7806077229486073154/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2013/01/io-you-own-windows-8-update.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/7806077229486073154" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/7806077229486073154" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/mBg7A7oZYAc/io-you-own-windows-8-update.html" title="I/O You Own: Windows 8 Update " /><author><name>Jessica DeCianno</name><uri>http://www.blogger.com/profile/00834778723934100219</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-yF4401SWRnI/UO2RHyviB0I/AAAAAAAAAN8/LMSsqid9PFg/s72-c/AL_Blog1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2013/01/io-you-own-windows-8-update.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-4582182848324614010</id><published>2012-11-19T03:00:00.000-05:00</published><updated>2012-11-20T10:50:15.152-05:00</updated><title type="text">HTTP iframe Injecting Linux Rootkit</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;h2&gt;Georg Wicherski, Senior Security Researcher&lt;/h2&gt;On Tuesday, November 13, 2012, a previously unknown Linux rootkit was &lt;a href="http://seclists.org/fulldisclosure/2012/Nov/94"&gt;posted to the Full Disclosure mailing list&lt;/a&gt; by an anonymous victim. The rootkit was discovered on a web server that added an unknown iframe into any HTTP response sent by the web server.&lt;br /&gt;&lt;br /&gt;The victim has recovered the rootkit kernel module file and attached it to the mailing list post, asking for any information on this threat. Until today, nobody has replied on this email thread. CrowdStrike has performed a brief static analysis of the kernel module in question, and these are our results. Our results seem to be in line with &lt;a href="https://www.securelist.com/en/blog/208193935/New_64_bit_Linux_Rootkit_Doing_iFrame_Injections" target="_blank"&gt;Kaspersky's findings&lt;/a&gt;; they also already added detection.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Key Findings&lt;/h3&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;The rootkit at hand seems to be the next step in iframe injecting cyber crime operations, driving traffic to exploit kits. It could also be used in a &lt;i&gt;Waterhole&lt;/i&gt; attack to conduct a targeted attack against a a specific target audience without leaving much forensic trail.&lt;/li&gt;&lt;li&gt;It appears that this is not a modification of a publicly available rootkit. It seems that this is contract work of an intermediate programmer with no extensive kernel experience.&lt;/li&gt;&lt;li&gt;Based on the Tools, Techniques, and Procedures employed and some background information we cannot publicly disclose, a Russia-based attacker is likely.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h3&gt;&lt;/h3&gt;&lt;h3&gt;&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Functional Overview&lt;/h3&gt;&lt;div&gt;The kernel module in question has been compiled for a kernel with the version string &lt;code&gt;2.6.32-5&lt;/code&gt;. The &lt;code&gt;-5&lt;/code&gt; suffix is indicative of a distribution-specific kernel release. Indeed, a quick Google search reveals that the latest Debian squeeze kernel has the version number &lt;code&gt;2.6.32-5&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;The module furthermore exports symbol names for all functions and global variables found in the module, apparently not declaring any private symbol as &lt;code&gt;static&lt;/code&gt; in the sources. In consequence, some dead code is left within the module: the linker can't determine whether any other kernel module might want to access any of those dead-but-public functions, and subsequently it can't remove them.&lt;br /&gt;&lt;br /&gt;The module performs 6 different tasks during start-up:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Resolution of a series of private kernel symbols using a present &lt;code&gt;System.map&lt;/code&gt; file or the kernel's run-time export of all private symbols through &lt;code&gt;/proc/kallsyms&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Initialization of the process and file hiding components using both inline hooks and direct kernel object manipulation&lt;/li&gt;&lt;li&gt;Creating an initial HTTP injection configuration and installing the inline function hook to hijack TCP connection contents&lt;/li&gt;&lt;li&gt;Starting a thread responsible for updating the injection configuration from a command and control server (hereafter "C2")&lt;/li&gt;&lt;li&gt;Ensuring&amp;nbsp;persistence&amp;nbsp;of the rootkit by making sure the kernel module is loaded at system startup&lt;/li&gt;&lt;li&gt;Hiding the kernel module itself using direct kernel object manipulation&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;The remainder of this blog post describes those tasks and the components they initialize in detail.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Ghetto Private Symbol Resolution&lt;/h3&gt;&lt;div&gt;The rootkit hijacks multiple private kernel functions and global variables that don't have public and exported symbols. To obtain the private addresses of these symbols, the rootkit contains code to scan files containing a list of addresses and private symbols. Those &lt;code&gt;System.map&lt;/code&gt; called files are usually installed together with a kernel image in most Linux distributions. Alternatively, the kernel exports a pseudo-file with the same syntax via procfs at &lt;code&gt;/proc/kallsyms&lt;/code&gt; to userland.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;The code contains the function &lt;code&gt;search_export_var&lt;/code&gt; that receives one parameter: the symbol name to resolve. This function merely wraps around the sub-function &lt;code&gt;search_method_export_var&lt;/code&gt; that receives an integer parameter describing the method to use for symbol resolution and the symbol name. It first attempts method &lt;code&gt;0&lt;/code&gt; and then method &lt;code&gt;1&lt;/code&gt; if the previous attempt failed.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;search_method_export_var&amp;nbsp;&lt;/code&gt;then is a simple mapping of &lt;code&gt;1&lt;/code&gt; to &lt;code&gt;search_method_exec_command&lt;/code&gt; or &lt;code&gt;2&lt;/code&gt; to &lt;code&gt;search_method_find_in_file&lt;/code&gt;. Any other method input will fail. The attentive reader will notice that therefore the rootkit will always attempt to resolve symbols using &lt;code&gt;search_method_exec_command&lt;/code&gt;, because method &lt;code&gt;0&lt;/code&gt; is not understood by &lt;code&gt;search_method_export_var&lt;/code&gt; and &lt;code&gt;2&lt;/code&gt; is never supplied as input.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;search_method_exec_command&lt;/code&gt;&amp;nbsp;uses the pseudo-file&amp;nbsp;&lt;code&gt;/proc/kallsyms&lt;/code&gt;&amp;nbsp;to retrieve a list of all symbols. Instead of accessing these symbols directly, it creates a usermode helper process with the command line &lt;code&gt;"/bin/bash", "-c", "cat /proc/kallsyms &amp;gt;&amp;nbsp;/.kallsyms_tmp" &lt;/code&gt;to dump the symbol list into a temporary file in the root directory. It then uses a function shared with &lt;code&gt;search_method_find_in_file&lt;/code&gt; to parse this text representation of addresses and symbols for the desired symbol. Due to the layout of the call graph, this will happen for every symbol to be resolved.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-m8oQKnx3UO4/UKZaeWurpzI/AAAAAAAAAC0/JzAhuoIGbZ4/s1600/symres.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="207" src="http://3.bp.blogspot.com/-m8oQKnx3UO4/UKZaeWurpzI/AAAAAAAAAC0/JzAhuoIGbZ4/s400/symres.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Symbol Resolution Method Identifier Confusion&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;The alternative (but effectively dead) function&amp;nbsp;&lt;code&gt;search_method_find_in_file&lt;/code&gt;&amp;nbsp;is, unfortunately, as ugly. Despite the fact that the System.map file is a regular file that could be read without executing a usermode helper process, the author found an ingenious way to use one anyway.&lt;br /&gt;&lt;br /&gt;Since multiple kernels might be installed on the same system, the&amp;nbsp;&lt;code&gt;System.map&lt;/code&gt; file(s) (generated at kernel build time) include the kernel version as a suffix. Instead of using a kernel API to determine the currently running kernel version, the rootkit starts another usermode helper process executing &lt;code&gt;"/bin/bash", "-c", "uname -r &amp;gt; /.kernel_version_tmp"&lt;/code&gt;. &lt;code&gt;uname&lt;/code&gt;&amp;nbsp;is a userland helper program that displays descriptive kernel and system information.&lt;br /&gt;&lt;br /&gt;So instead of using the kernel version this module is built for at build time (it's hardcoded in other places, as we'll see later), or at least just calling the same system call that &lt;code&gt;uname&lt;/code&gt; uses to obtain the kernel version, they start a userland program and redirect its output into a temporary file.&lt;br /&gt;&lt;br /&gt;The kernel version obtained in this way is then appended to the &lt;code&gt;System.map&lt;/code&gt; filename so that the correct file can be opened. Recall that this code path is never taken due to a mistake at another place, though.&lt;br /&gt;&lt;br /&gt;When starting up, the rootkit first iterates over a 13-element array of fixed-length, 0-padded symbol names and resolves them using the previously described functions. The name of the symbol and its address are then inserted into a linked list. Once a symbol's address needs to be used, the code iterates over this linked list, searching for the right symbol and returning its address.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Berserk Inline Code Hooking&lt;/h3&gt;&lt;div&gt;To hook private functions that are called without indirection (e.g., through a function pointer), the rootkit employs inline code hooking. In order to hook a function, the rootkit simply overwrites the start of the function with an &lt;code&gt;e9&lt;/code&gt; byte&lt;i&gt;.&lt;/i&gt; This is the opcode for a &lt;code&gt;jmp rel32&lt;/code&gt; instruction, which, as its only operand, has &lt;i&gt;4&amp;nbsp;bytes&lt;/i&gt; relative offset to jump to.&lt;br /&gt;&lt;br /&gt;The rootkit, however, calculates an &lt;i&gt;8-byte &lt;/i&gt;or 64-bit offset in a stack buffer and then copies 19 bytes (8 bytes offset, 11 bytes unitialized) behind the e9 opcode into the target function. By pure chance the jump still works, because amd64 is a little endian architecture, so the high extra 4 bytes offset are simply ignored.&lt;br /&gt;&lt;br /&gt;To facilitate proper unhooking at unload time, the rootkit saves the original 5 bytes of function start (note that this would be the correct &lt;code&gt;jmp rel32&lt;/code&gt; instruction length) into a linked list. However, since in total 19 bytes have been overwritten, unloading can't work properly:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;.text:000000000000A32E &amp;nbsp; &amp;nbsp; &amp;nbsp; xor &amp;nbsp; &amp;nbsp; eax, eax&lt;br /&gt;.text:000000000000A330 &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; &amp;nbsp; ecx, 0Ch&lt;br /&gt;.text:000000000000A335 &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; &amp;nbsp; rdi, rbx&lt;br /&gt;.text:000000000000A338 &amp;nbsp; &amp;nbsp; &amp;nbsp; rep stosd&lt;br /&gt;.text:000000000000A33A &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; &amp;nbsp; rsi, rbp&lt;br /&gt;.text:000000000000A33D &amp;nbsp; &amp;nbsp; &amp;nbsp; lea &amp;nbsp; &amp;nbsp; rdi, [rbx+8]&lt;br /&gt;.text:000000000000A341 &amp;nbsp; &amp;nbsp; &amp;nbsp; lea &amp;nbsp; &amp;nbsp; rdx, [rbx+20h]&lt;br /&gt;.text:000000000000A345 &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; &amp;nbsp; cl, 5&lt;br /&gt;.text:000000000000A347 &amp;nbsp; &amp;nbsp; &amp;nbsp; rep movsd&lt;br /&gt;.text:000000000000A349 &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; &amp;nbsp; [rbx], rbp&lt;br /&gt;.text:000000000000A34C &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; &amp;nbsp; esi, 14h&lt;br /&gt;.text:000000000000A351 &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; &amp;nbsp; rdi, rbp&lt;br /&gt;.text:000000000000A354 &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; &amp;nbsp; rax, cs:splice_func_list&lt;br /&gt;.text:000000000000A35B &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; &amp;nbsp; [rax+8], rdx&lt;br /&gt;.text:000000000000A35F &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; &amp;nbsp; [rbx+20h], rax&lt;br /&gt;.text:000000000000A363 &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; &amp;nbsp; qword ptr [rbx+28h], offset splice_func_list&lt;br /&gt;.text:000000000000A36B &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; &amp;nbsp; cs:splice_func_list, rdx&lt;br /&gt;.text:000000000000A372 &amp;nbsp; &amp;nbsp; &amp;nbsp; call &amp;nbsp; &amp;nbsp;set_addr_rw_range&lt;br /&gt;.text:000000000000A377 &amp;nbsp; &amp;nbsp; &amp;nbsp; lea &amp;nbsp; &amp;nbsp; rax, [rbp+1]&lt;br /&gt;.text:000000000000A37B &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; &amp;nbsp; byte ptr [rbp+0], 0E9h&lt;br /&gt;.text:000000000000A37F &amp;nbsp; &amp;nbsp; &amp;nbsp; lea &amp;nbsp; &amp;nbsp; rsi, [rsp+38h+target_offset]&lt;br /&gt;.text:000000000000A384 &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; &amp;nbsp; ecx, 19&lt;br /&gt;.text:000000000000A389 &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; &amp;nbsp; rdi, rax&lt;br /&gt;.text:000000000000A38C &amp;nbsp; &amp;nbsp; &amp;nbsp; rep movsb&lt;br /&gt;.text:000000000000A38E &amp;nbsp; &amp;nbsp; &amp;nbsp; mov &amp;nbsp; &amp;nbsp; rdi, rax&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;To support read-only mapped code, the rootkit contains page-table manipulation code. Since the rootkit holds the global kernel lock while installing an inline hook, it could simply have abused the &lt;a href="http://en.wikipedia.org/wiki/Control_register#CR0"&gt;write-protect-enable-bit in cr0&lt;/a&gt; for the sake of simplicity, though.&lt;br /&gt;&lt;br /&gt;Since the rootkit trashes the hooked function beyond repair and is not considering instruction boundaries, it can never call the original function again (a feature that most inline hooking engines normally posses). Instead, the hooked functions have all been duplicated (one function even twice) in the sourcecode of the rootkit.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;File and Would-be Process Hiding&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;Unlike many other rootkits, this rootkit has a rather involved logic for hiding files. Most public Linux rootkits define a static secret and hide all files and directories, where this secret is part of the full file or directory name. This rootkit maintains a linked list of file or directory names to hide, and it hides them only if the containing directory is called &lt;code&gt;"/"&lt;/code&gt; or &lt;code&gt;"sound"&lt;/code&gt; (the parent directory of temporary files and the module file, respectively).&lt;br /&gt;&lt;br /&gt;The actual hiding is done by inline hooking the vfs_readdir function that's called for enumerating directory contents. The replacement of that function checks if the enumerated directory's name is either&amp;nbsp;&amp;nbsp;&lt;code&gt;"/"&lt;/code&gt;&amp;nbsp;or&amp;nbsp;&lt;code&gt;"sound"&lt;/code&gt;&amp;nbsp;as explained above.&lt;br /&gt;&lt;br /&gt;If that's the case, the function provides an alternative function pointer to the normally used &lt;code&gt;filldir&lt;/code&gt; or &lt;code&gt;filldir64&lt;/code&gt; functions. This alternative implementation checks the linked list of file names to hide and will remove the entry if it matches.&lt;br /&gt;&lt;br /&gt;Interestingly, it will also check a linked list of process names to hide, and it will hide the entry if it matches, too. That, however, doesn't make sense, since the actual directory name to hide would be the &lt;i&gt;process id&lt;/i&gt;. Also, the parent directory for that would be &lt;code&gt;"/proc"&lt;/code&gt;, which isn't one of the parent directories filtered. Therefore, the process hiding doesn't work at all:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Afplcrye0dE/UKZ_ufdvYmI/AAAAAAAAADE/1E9WWZBEXUE/s1600/psnames.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-Afplcrye0dE/UKZ_ufdvYmI/AAAAAAAAADE/1E9WWZBEXUE/s1600/psnames.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Improperly Hidden Kernel Threads&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;The list of hidden files is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;sysctl.conf&lt;/li&gt;&lt;li&gt;module_init.ko (the actual rootkit filename)&lt;/li&gt;&lt;li&gt;zzzzzz_write_command_in_file&lt;/li&gt;&lt;li&gt;zzzzzz_command_http_inject_for_module_init&lt;/li&gt;&lt;/ul&gt;The real module's name gets added to the linked list of file names to hide by the module hiding code.&lt;br /&gt;&lt;br /&gt;Interestingly, the rootkit also contains a list of parent path names to hide files within. However, this list isn't used by the code:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;/usr/local/hide/first_hide_file&lt;/li&gt;&lt;li&gt;/ah34df94987sdfgDR6JH51J9a9rh191jq97811&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Since only directory listing entries are being hidden but access to those files is not intercepted, it's still possible to access the files when an absolute path is specified.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Command and Control Client&lt;/h3&gt;&lt;div&gt;As part of module initialization, the rootkit starts a thread that connects to a single C2 server. The IP address in question is part of a range registered to Hetzner, a big German root server and co-location provider.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The rootkit uses the public &lt;a href="http://ksocket.sourceforge.net/"&gt;ksocket library&lt;/a&gt; to establish TCP connections directly from the Linux kernel. After the connection has been successfully initiated, the rootkit speaks a simple custom protocol with the server. This very simple protocol consists of a 1224-byte blob sent by the rootkit to the server as an authentication secret. The blob is generated from &lt;i&gt;"encrypting"&lt;/i&gt;&amp;nbsp;1224 null bytes with a 128-byte static password, the C2 address it's talking to, and, interestingly, an IP address registered to Zattoo Networks in Zurich, Switzerland, that is not otherwise used throughout the code.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-j-FhMmK1BqE/UKaDk5a-BZI/AAAAAAAAADc/Kq3wgQKkvXI/s1600/c2conn.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="18" src="http://3.bp.blogspot.com/-j-FhMmK1BqE/UKaDk5a-BZI/AAAAAAAAADc/Kq3wgQKkvXI/s400/c2conn.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;C2 Connection Attempt&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The server is then expected to respond with the information about whether an iframe or a JavaScript snippet should be injected, together with the code to be injected. The server's response must contain a similarily generated authentication secret for the response to be accepted. If this check passes, the rootkit then copies the injection information into a global variable.&lt;br /&gt;&lt;br /&gt;This protocol is obviously vulnerable to simply generating the secret blob once using dynamic analysis and replaying it, and therefore it merely serves for a little obfuscation. We didn't invest further time investigating this specific &lt;i&gt;"encryption"&lt;/i&gt; algorithm.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;TCP Connection Hijacking&lt;/h3&gt;In order to actually inject the iframes (or JavaScript code references) into the HTTP traffic, the rootkit inline hooks the &lt;code&gt;tcp_sendmsg&lt;/code&gt; function. This function receives one or multiple buffers to be sent out to the target and appends them to a connections outgoing buffer.&lt;br /&gt;&lt;br /&gt;The TCP code will then later retrieve data from that buffer and encapsulate it in a TCP packet for transmission. The replacement function is largely a reproduction of the original function included in the kernel sources due to the inline hooking insufficiencies explained above.&lt;br /&gt;&lt;br /&gt;A single call to the function&amp;nbsp;&lt;code&gt;formation_new_tcp_msg&lt;/code&gt;&amp;nbsp;was added near the head of the original function; if this function returns one, the remainder of the original function is skipped and internally a replacement message is sent instead. This function always considers only the first send buffer passed, and we'll implicitly exclude all further send buffers passed to a potential &lt;code&gt;sendmsg&lt;/code&gt; call in the following analysis.&lt;br /&gt;&lt;br /&gt;The&amp;nbsp;&lt;code&gt;formation_new_tcp_msg&lt;/code&gt;&amp;nbsp;function invokes a decision function that contains 4 tests, determining whether injection on the message should be attempted at all:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;An integer at &lt;code&gt;+0x2f0&lt;/code&gt; into the current configuration is incremented. Only if its value modulo the integer at &lt;code&gt;+0x2e8&lt;/code&gt; in the current configuration is equal to zero, this test passes.&amp;nbsp;This ensures that only on every &lt;i&gt;n&lt;/i&gt;-th send buffer an injection is attempted.&lt;/li&gt;&lt;li&gt;Ensure that the size of all the send buffers to be sent is below or equal to&amp;nbsp;19879 bytes.&lt;/li&gt;&lt;li&gt;Verify that originating port (server port for server connections) is :80.&lt;/li&gt;&lt;li&gt;Ensure that the destination of this send is not 127.0.0.1.&lt;/li&gt;&lt;li&gt;Make sure that none of the following three strings appears anywhere in the send buffer:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;"403 Forbidden"&lt;/li&gt;&lt;li&gt;"304 Not Modified"&lt;/li&gt;&lt;li&gt;"&amp;nbsp;was not found on this server."&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Make sure the destination of this send is not in a list of 1708 blacklisted IP addresses, supposedly belonging to search engines per the symbol name &lt;code&gt;search_engines_ip_array&lt;/code&gt;.&lt;/li&gt;&lt;/ol&gt;There are several shortcomings in the design of these tests that ultimately led to the discovery of this rootkit as &lt;a href="http://seclists.org/fulldisclosure/2012/Nov/94"&gt;documented in the Full Disclosure post&lt;/a&gt;. Since the check to only attempt an inject once every n-th send buffer is not performed per every m-th connection and before all other tests, it will trigger on more valid requests than one might expect when defining the modulus.&lt;br /&gt;&lt;br /&gt;Also, doing a negative check on a few selected error messages instead of checking for a positive "200" HTTP status led to the discovery, when an inject in a "400" HTTP error response was found.&lt;br /&gt;&lt;br /&gt;The rootkit then tries to parse a HTTP header being sent out by looking for the static header strings "Content-Type", "Content-Encoding", "Transfer-Encoding" and "Server". It matches each of the values of these headers against a list of known values, e.g., for Content-Type:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;text/html&lt;/li&gt;&lt;li&gt;text/css&lt;/li&gt;&lt;li&gt;application/x-javascript&lt;/li&gt;&lt;/ul&gt;The Content-Type of the response and the attacker specified Content-Type of the inject have to match for injection to continue. The code then searches for an attacker-specified substring in the message and inserts the inject after it.&lt;br /&gt;&lt;br /&gt;What is notable is the support for both &lt;code&gt;chunked&lt;/code&gt; Transfer-Encoding and &lt;code&gt;gzip&lt;/code&gt; Content-Encoding. The &lt;code&gt;chunked&lt;/code&gt; encoding handling is limited to handling the first chunk sent because the HTTP headers parsed need to present in the same send buffer. However, it will adjust the length of the changed chunk correctly.&lt;br /&gt;&lt;br /&gt;When encountering a&amp;nbsp;&amp;nbsp;&lt;code&gt;gzip&lt;/code&gt;&amp;nbsp;Content-Encoding, the rootkit will use the zlib kernel module to decompress the response, potentially patch it with the inject, and then recompress it. While this is a technically clever way to make sure your inject ends up in even compressed responses, it will potentially severely degrade the performance of your server.&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;Reboot Persistence&lt;/h3&gt;&lt;div&gt;After running most of the other initialization tasks, the rootkit creates a kernel thread that continously tries to modify &lt;code&gt;/etc/rc.local&lt;/code&gt; to load the module at start-up. The code first tries to open the file and read it it all into memory. Then it searches for the loading command in the existing file.&lt;/div&gt;&lt;br /&gt;If it's not found, it appends the loading command "insmod&amp;nbsp;/lib/modules/2.6.32-5-amd64/kernel/sound/module_init.ko" by concatenating the "insmode" command with the directory path and filename. However, all those 3 parts are hardcoded (remember that the kernel version now hardcoded was determined dynamically for symbol resolution earlier?).&lt;br /&gt;&lt;br /&gt;If opening the file fails, the thread will wait for 5 seconds. After successfully appending the new command, the thread will wait for 3 minutes before checking for the command and potentially re-adding it again.&lt;br /&gt;&lt;br /&gt;Additionally, the rootkit installs an inline hook for the vfs_read function. If the read buffer (no matter which file it is being read from) contains the fully concatenated load command, the load command is removed from the read buffer by copying the remainder of the buffer over it and adjusting the read size accordingly. Thereby, the load command is hidden from system administrators if the rootkit is loaded.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-c6xVri0YRjo/UKaA7qP4O4I/AAAAAAAAADM/_vEd359neKQ/s1600/persistance.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="112" src="http://4.bp.blogspot.com/-c6xVri0YRjo/UKaA7qP4O4I/AAAAAAAAADM/_vEd359neKQ/s400/persistance.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Successful Persistence Command Hiding&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The screenshot above showcases a problem already with this technique of persistence: since the command is appended to the end of rc.local, there might actually be shell commands that result in the command not being executed as intended. On a default Debian squeeze install,&amp;nbsp;&lt;code&gt;/etc/rc.local&lt;/code&gt; ends in an &lt;code&gt;exit 0&lt;/code&gt; command, so that the rootkit is effectively never loaded.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Module Hiding&lt;/h3&gt;&lt;div&gt;Hiding itself is achieved by simple direct kernel object manipulation. The rootkit iterates about the kernel linked list &lt;code&gt;modules&lt;/code&gt; and removes itself from the list using &lt;code&gt;list_del&lt;/code&gt;. In consequence, the module will never be unloaded and there will be no need to remove the inline hooks installed earlier. In fact, the &lt;code&gt;remove_splice_func_in_memory&lt;/code&gt; function is unreferenced dead code.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;&lt;div&gt;Considering that this rootkit was used to non-selectively inject iframes into nginx webserver responses, it seems likely that this rootkit is part of a generic cyber crime operation and not a targeted attack. However, a Waterhole attack, where a site mostly visited from a certain target audience is infected, would also be plausible. Since no identifying strings yielded results in an Internet search (except for the ksocket library), it appears that this is not a modification of a publicly available rootkit. Rather, it seems that this is contract work of an intermediate programmer with no extensive kernel experience, later customized beyond repair by the buyer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Although the code quality would be unsatisfying for a serious targeted attack, it is interesting to see the cyber-crime-oriented developers, who have partially shown great skill at developing Windows rootkits, move into the Linux rootkit direction. The lack of any obfuscation and proper HTTP response parsing, which ultimately also led to discovery of this rootkit, is a further indicator that this is not part of a sophisticated, targeted attack.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Based on the Tools, Techniques, and Procedures employed and some background information we cannot publicly disclose, a Russia-based attacker is likely. It remains an open question regarding how the attackers have gained the root privileges to install the rootkit. However, considering the code quality, a custom privilege escalation exploit seems very unlikely.&lt;/div&gt;&lt;/div&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/4582182848324614010/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/11/http-iframe-injecting-linux-rootkit.html#comment-form" title="29 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/4582182848324614010" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/4582182848324614010" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/Fj7YgnUl-P0/http-iframe-injecting-linux-rootkit.html" title="HTTP iframe Injecting Linux Rootkit" /><author><name>Georg Wicherski</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-8_iN3AqRDAM/T4yFIk5EVJI/AAAAAAAAABE/XnlCbAOwp6g/s1600/oxff.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-m8oQKnx3UO4/UKZaeWurpzI/AAAAAAAAAC0/JzAhuoIGbZ4/s72-c/symres.png" height="72" width="72" /><thr:total>29</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/11/http-iframe-injecting-linux-rootkit.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-8862378702654094902</id><published>2012-11-16T13:46:00.000-05:00</published><updated>2012-11-19T09:33:28.829-05:00</updated><title type="text">New Chinese Leadership: How it Impacts Cyber Security</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;h2&gt;by Lindsey Novom, Senior Intelligence Analyst&lt;/h2&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;The CrowdStrike Intelligence Team is excited to showcase some of the non-technical analysis that we conduct every day. This analysis provides our customers with up-to-date information on strategic issues that might impact the adversaries that target their critical systems. Ten days ago, when all eyes were on the U.S. Presidential election, CrowdStrike Intelligence Analysts were consumed with another electoral process.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On November 15, 2012, the 18th National People’s Congress (NPC) completed its 10-day long conclave, which traditionally meets every 5 years in Beijing to usher in the next top leader of China. The next president of China, who is also the General Secretary of the Chinese Communist Party (CCP) and Chairman of the Central Military Commission, is Xi Jinping (习近平).&lt;br /&gt;&lt;br /&gt;&lt;h3 style="text-align: left;"&gt;Chinese Politics&lt;/h3&gt;&lt;br /&gt;Before diving deep into a biographical analysis of the new President to dissect his personality and political views, it's imperative to first understand how China operates as a political entity to understand the big picture of China’s politics.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Despite the fact that China is a one-party state controlled by the CCP, the CCP is not homogenous in its politics. The saying in China is, “one party, two coalitions.” The CCP is comprised of two distinct factions: the populists and the princelings.&lt;br /&gt;&lt;br /&gt;The populist faction reflects strong allegiance to the CCP and additionally represents the disadvantaged social groups in China (e.g., farmers, migrant workers, urban poor). Some of the top leaders of the populist faction got their start in the Chinese Communist Youth League and became labeled tuanpai, which means "league faction.”&lt;br /&gt;&lt;br /&gt;Former President Hu Jintao continues to lead the populist faction alongside of former Premier Wen Jiabao. Conversely, a princeling is a child of China’s first generation of revolution heroes and leaders. The princelings primarily start their careers in China’s economically advanced coastal cities.&lt;br /&gt;&lt;br /&gt;As a result of their privileged aristocratic lifestyles, the princelings typically promote economic reform and represent entrepreneurs’ interests. Former President Jiang Zemin formed this elitist faction with the help of the following two leaders: Wu Bangguo, former chairman of the national legislature, and Jia Qinglin, former head of a national political advisory body. &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Politburo Standing Committee is the sole decision-making body of the CCP, housing the top 7 to 9 leaders of China. In the eyes of the CCP, the president is seen as an equal amongst the Standing Committee members.&lt;br /&gt;&lt;br /&gt;China’s current political system is a collective leadership as reflected in the Standing Committee, preventing one leader from usurping too much power as historically reflected during the Mao Zedong era. The president must build consensus amongst the Standing Committee members in order to set policy agendas and reach policy solutions.&lt;br /&gt;&lt;br /&gt;How are the president and Standing Committee members selected? Backroom negotiations. A select group of elite party elders and outgoing party leaders handpick the president, as well as the 7 to 9 Standing Committee members who will then be appointed to serve on the upcoming 5-year term.&lt;br /&gt;&lt;br /&gt;Each Standing Committee member is appointed based on his close patron relationship to a current or past leader. It's an unspoken rule that each appointed Standing Committee member pays tribute to his patron by promoting the patron’s political ideology and policy stance. These patrons are primarily made up of the aforementioned party “elders,” Mr. Jiang, Mr. Wu, Mr. Jia, Mr. Wen, and Mr. Hu, all of whom battle to maintain political power within the CCP.&lt;br /&gt;&lt;br /&gt;During Hu Jintao’s leadership, the Standing Committee was split 5-4, with 4 seats representing the populist coalition and the remaining 5 reflecting the elitist faction. With the completion of the 10-day conclave of the new 18th NPC, China announced the shift from 9 to 7 seats, which suggests reining in power and eliminating threatening actors, including Liu Yuanchao and Wang Yang, who were proponents of political reform and change.&lt;br /&gt;&lt;br /&gt;&lt;h3 style="text-align: left;"&gt;The Standing Committee&lt;/h3&gt;&lt;br /&gt;The newest lineup of the 7 Standing Committee members only includes two members who are tuanpai, although one of them is a close comrade of Jiang Zemin, which creates a 6-1 princeling to tuanpai split.&lt;br /&gt;&lt;br /&gt;Below are the the 7 Standing Committee members who will lead China for the next five years:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-XB9_wXYshAM/UKaOH4t8ZnI/AAAAAAAAABY/eeLoorwKdJ0/s1600/Xi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-XB9_wXYshAM/UKaOH4t8ZnI/AAAAAAAAABY/eeLoorwKdJ0/s1600/Xi.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h4 style="text-align: center;"&gt;&lt;b&gt;Xi Jinping (President, General Secretary, Chairman)&amp;nbsp;&lt;span style="font-family: &amp;quot;Kaiti SC Black&amp;quot;;"&gt;习近平&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;Princeling: Xi’s father, Xi Zhongxun, was a revolutionary leader under Mao Zedong. Xi Jinping has experience running both rural and metropolitan regions. He experienced rural politics as county deputy secretary in Zhengding, Hebei province, as well as led economically advanced regions, including Fujian, Zhejiang, and Shanghai. Xi Jinping is expected to support policies that develop the private sector, including liberalizing foreign investment, trade, and China’s financial system.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-KswgGAP9yAk/UKaOUOw7R-I/AAAAAAAAABg/8MZilzfX3iY/s1600/li.png" imageanchor="1"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-KswgGAP9yAk/UKaOUOw7R-I/AAAAAAAAABg/8MZilzfX3iY/s1600/li.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:OfficeDocumentSettings&gt;  &lt;o:AllowPNG/&gt; &lt;/o:OfficeDocumentSettings&gt;&lt;/xml&gt;&lt;![endif]--&gt; &lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:WordDocument&gt;  &lt;w:View&gt;Normal&lt;/w:View&gt;  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;  &lt;w:TrackMoves/&gt;  &lt;w:TrackFormatting/&gt;  &lt;w:PunctuationKerning/&gt;  &lt;w:ValidateAgainstSchemas/&gt;  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;  &lt;w:DoNotPromoteQF/&gt;  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;  &lt;w:LidThemeAsian&gt;JA&lt;/w:LidThemeAsian&gt;  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;  &lt;w:Compatibility&gt;   &lt;w:BreakWrappedTables/&gt;   &lt;w:SnapToGridInCell/&gt;   &lt;w:WrapTextWithPunct/&gt;   &lt;w:UseAsianBreakRules/&gt;   &lt;w:DontGrowAutofit/&gt;   &lt;w:SplitPgBreakAndParaMark/&gt;   &lt;w:EnableOpenTypeKerning/&gt;   &lt;w:DontFlipMirrorIndents/&gt;   &lt;w:OverrideTableStyleHps/&gt;   &lt;w:UseFELayout/&gt;  &lt;/w:Compatibility&gt;  &lt;m:mathPr&gt;   &lt;m:mathFont m:val="Cambria Math"/&gt;   &lt;m:brkBin m:val="before"/&gt;   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;   &lt;m:smallFrac m:val="off"/&gt;   &lt;m:dispDef/&gt;   &lt;m:lMargin m:val="0"/&gt;   &lt;m:rMargin m:val="0"/&gt;   &lt;m:defJc m:val="centerGroup"/&gt;   &lt;m:wrapIndent m:val="1440"/&gt;   &lt;m:intLim m:val="subSup"/&gt;   &lt;m:naryLim m:val="undOvr"/&gt;  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="276"&gt;  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;  &lt;w:LsdException Locked="false" SemiHidden="false" UnhideWhenUsed="false"    QFormat="true" Name="heading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt; &lt;/w:LatentStyles&gt;&lt;/xml&gt;&lt;![endif]--&gt; &lt;!--[if gte mso 10]&gt;&lt;style&gt; /* Style Definitions */ table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:12.0pt;  font-family:Cambria;  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:minor-latin;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt;&lt;![endif]--&gt;   &lt;!--StartFragment--&gt; &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;h4 style="text-align: center;"&gt;Li Keqiang (Premier of the NPC)李克强&lt;/h4&gt;&lt;br /&gt;Populist: Li was a member of the Communist Youth League and is considered part of President Hu Jintao's tuanpai faction.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-bzZMxs_qDic/UKaOfRkk6yI/AAAAAAAAABo/SRUIgcow7W8/s1600/zhang.png" imageanchor="1"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-bzZMxs_qDic/UKaOfRkk6yI/AAAAAAAAABo/SRUIgcow7W8/s1600/zhang.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;h4 style="text-align: center;"&gt;Zhang Dejiang, &amp;nbsp;张德江, Princeling&lt;/h4&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-8AcOEZY94xs/UKaOnLiiyMI/AAAAAAAAABw/BWoGgsJ9xXk/s1600/yu.png" imageanchor="1"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-8AcOEZY94xs/UKaOnLiiyMI/AAAAAAAAABw/BWoGgsJ9xXk/s1600/yu.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span style="font-family: Cambria;"&gt;Yu Zhengshen,&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Songti SC Black&amp;quot;;"&gt;俞正声,&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Cambria;"&gt;Princeling&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: Cambria;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span style="font-family: Cambria;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-aA8nXkeyL8M/UKaO9GFSHAI/AAAAAAAAAB4/v5N8NLR4KQc/s1600/Liu.png" imageanchor="1"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-aA8nXkeyL8M/UKaO9GFSHAI/AAAAAAAAAB4/v5N8NLR4KQc/s1600/Liu.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h4 style="text-align: center;"&gt;Liu Yunshan, 刘云山, Tuanpai&lt;/h4&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-4uYXjOW_FQM/UKaPEfQVO7I/AAAAAAAAACA/wi1atwhZgcU/s1600/Wang.png" imageanchor="1"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-4uYXjOW_FQM/UKaPEfQVO7I/AAAAAAAAACA/wi1atwhZgcU/s1600/Wang.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;Wang Qishan, 王岐山, Princeling&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-jRSw5NZoBcQ/UKaPQMxDnXI/AAAAAAAAACI/vxPxNC-CgvE/s1600/zhangg.png" imageanchor="1"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-jRSw5NZoBcQ/UKaPQMxDnXI/AAAAAAAAACI/vxPxNC-CgvE/s1600/zhangg.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h4 style="text-align: center;"&gt;Zhang Gaoli, 张高丽, Tuanpai (however, Jiang Zemin’s protégé)&lt;/h4&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;o:DocumentProperties&gt;  &lt;o:Revision&gt;0&lt;/o:Revision&gt;  &lt;o:TotalTime&gt;0&lt;/o:TotalTime&gt;  &lt;o:Pages&gt;1&lt;/o:Pages&gt;  &lt;o:Words&gt;407&lt;/o:Words&gt;  &lt;o:Characters&gt;2322&lt;/o:Characters&gt;  &lt;o:Company&gt;CrowdStrike&lt;/o:Company&gt;  &lt;o:Lines&gt;19&lt;/o:Lines&gt;  &lt;o:Paragraphs&gt;5&lt;/o:Paragraphs&gt;  &lt;o:CharactersWithSpaces&gt;2724&lt;/o:CharactersWithSpaces&gt;  &lt;o:Version&gt;14.0&lt;/o:Version&gt; &lt;/o:DocumentProperties&gt; &lt;o:OfficeDocumentSettings&gt;  &lt;o:AllowPNG/&gt; &lt;/o:OfficeDocumentSettings&gt;&lt;/xml&gt;&lt;![endif]--&gt; &lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:WordDocument&gt;  &lt;w:View&gt;Normal&lt;/w:View&gt;  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;  &lt;w:TrackMoves/&gt;  &lt;w:TrackFormatting/&gt;  &lt;w:PunctuationKerning/&gt;  &lt;w:ValidateAgainstSchemas/&gt;  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;  &lt;w:DoNotPromoteQF/&gt;  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;  &lt;w:LidThemeAsian&gt;JA&lt;/w:LidThemeAsian&gt;  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;  &lt;w:Compatibility&gt;   &lt;w:BreakWrappedTables/&gt;   &lt;w:SnapToGridInCell/&gt;   &lt;w:WrapTextWithPunct/&gt;   &lt;w:UseAsianBreakRules/&gt;   &lt;w:DontGrowAutofit/&gt;   &lt;w:SplitPgBreakAndParaMark/&gt;   &lt;w:EnableOpenTypeKerning/&gt;   &lt;w:DontFlipMirrorIndents/&gt;   &lt;w:OverrideTableStyleHps/&gt;   &lt;w:UseFELayout/&gt;  &lt;/w:Compatibility&gt;  &lt;m:mathPr&gt;   &lt;m:mathFont m:val="Cambria Math"/&gt;   &lt;m:brkBin m:val="before"/&gt;   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;   &lt;m:smallFrac m:val="off"/&gt;   &lt;m:dispDef/&gt;   &lt;m:lMargin m:val="0"/&gt;   &lt;m:rMargin m:val="0"/&gt;   &lt;m:defJc m:val="centerGroup"/&gt;   &lt;m:wrapIndent m:val="1440"/&gt;   &lt;m:intLim m:val="subSup"/&gt;   &lt;m:naryLim m:val="undOvr"/&gt;  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="276"&gt;  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt; &lt;/w:LatentStyles&gt;&lt;/xml&gt;&lt;![endif]--&gt; &lt;!--[if gte mso 10]&gt;&lt;style&gt; /* Style Definitions */ table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:12.0pt;  font-family:Cambria;  mso-ascii-font-family:Cambria;  mso-ascii-theme-font:minor-latin;  mso-hansi-font-family:Cambria;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt;&lt;![endif]--&gt;   &lt;!--StartFragment--&gt; &lt;/div&gt;&lt;div class="MsoNormal"&gt;Did the change in leadership affect China’s national cybersecurity and espionage policies?&amp;nbsp;At this time it’s hard to say because China’s cyber information agencies and organizations are cloaked in secrecy.&amp;nbsp;&amp;nbsp;Equally as important, what is known about China’s cyber espionage programs?&amp;nbsp;The PLA, Ministry of Science and Technology, National Crypto Management Center, State Secrecy Bureau, Ministry of Public Security, certain state-owned information security companies, and universities help wage China’s cyber espionage campaign.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;h3 style="text-align: left;"&gt;Cyber Espionage and the State&amp;nbsp;&lt;/h3&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;According to the &lt;a href="http://project2049.net/documents/countering_chinese_cyber_operations_stokes_hsiao.pdf"&gt;Project 2049 Institute&lt;/a&gt;, the State Informatization Leading Group (SILG,&amp;nbsp;&lt;span color:black="color:black" mso-bidi-font-family:="mso-bidi-font-family:" mso-hansi-font-family:="" new="" roman="roman" serif="serif" style="font-family: '} ';" times=""&gt;网&lt;/span&gt;&lt;span black="black" color:black="color:black" mso-ascii-font-family:="" mso-bidi-font-family:="" mso-hansi-font-family:="mso-hansi-font-family:" sc="" serif="serif" songti="" style="font-family: '} ';"&gt;络&lt;/span&gt;&lt;span color:black="color:black" mso-bidi-font-family:="" mso-hansi-font-family:times="mso-hansi-font-family:times" new="" roman="roman" serif="serif" style="font-family: '} ';" times=""&gt;与信息安全&lt;/span&gt;&lt;span lang="ZH-CN" style="font-family: 宋体;"&gt;组&lt;/span&gt;), comprised of senior representatives of the CCP Central Committee, Politburo, State Council, and PLA, advises senior political leaders on computer network operations policies.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Specifically, the Second Bureau of the General Staff Department’s Third Department within the People’s Liberation Army (PLA) in Shanghai primarily targets and exploits U.S. computer networks, which is comparable to the U.S.’s National Security Agency (NSA).&amp;nbsp;The PLA wages cyber warfare and espionage through its “Third Department” that houses high-level computer programmers, linguists, and code breakers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;The Third Department’s central electronic intelligence unit within the Chinese military is the Beijing North Computing Center (BNCC), which is the Chinese equivalent to the Pentagon’s U.S. Cyber Command.&amp;nbsp;The BNCC is involved in exploitation of foreign networks and denying an adversary access to his networks.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;The PLA and aforementioned Chinese government entities leverage relationships with regional universities with strong information security programs to acquire sensitive data and local talent for its national agenda in the cyber arena.&amp;nbsp;For example, Sichuan University’s Institute of Information Security supports the Chengdu information security base and Shanghai Jiaotong University’s School of Information Security supports the Shanghai base.&amp;nbsp;There's active cooperation between Peking University’s department of Computer Science Laboratory of Information Security and the security unit of the General Staff of the Ministry of Public Security and the Ministry of Security and Secrecy Bureau. &amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;h3 style="text-align: left;"&gt;Conclusion&lt;/h3&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;China is waging a consolidated cyber warfare effort against the U.S. government, certain U.S. industries, think tanks, media outlets, and academic institutions.&amp;nbsp;The web of China’s cyber espionage network is elaborate, intricate, and prosperous.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;It's imperative for the U.S. to engage China’s new leadership on cyber espionage.&amp;nbsp;It will not only take the U.S. government to fight against China’s cyber espionage at the national policy level, but it's also imperative for the private sector to lead the fight against foreign cyber adversaries.&lt;br /&gt;&lt;br /&gt;To that end, one of the most effective ways to arm your organization is to leverage intelligence in a cyber defense strategy. At CrowdStrike, intelligence powers everything we do. For information on how you can leverage the CrowdStrike Intelligence Team to power your business decisions and enterprise defense, please contact us at &lt;a href="mailto:intelligence@CrowdStrike.com"&gt;intelligence@CrowdStrike.com&lt;/a&gt;. &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;!--EndFragment--&gt;&lt;br /&gt;CrowdStrike would like to acknowledge the incredible work by the &lt;a href="http://project2049.net/"&gt;Project 2049 Institute&lt;/a&gt;&amp;nbsp;and we encourage you to read their reporting if you are interested in the Chinese strategic agenda.&lt;br /&gt;&lt;!--EndFragment--&gt;&lt;br /&gt;&lt;!--EndFragment--&gt;&lt;br /&gt;&lt;!--EndFragment--&gt;&lt;br /&gt;&lt;!--EndFragment--&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/8862378702654094902/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/11/new-chinese-leadership-how-it-impacts.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/8862378702654094902" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/8862378702654094902" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/__8QTXNdLcM/new-chinese-leadership-how-it-impacts.html" title="New Chinese Leadership: How it Impacts Cyber Security" /><author><name>Lindsey Novom</name><uri>http://www.blogger.com/profile/06388393172643750263</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-XB9_wXYshAM/UKaOH4t8ZnI/AAAAAAAAABY/eeLoorwKdJ0/s72-c/Xi.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/11/new-chinese-leadership-how-it-impacts.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-9148036544031934128</id><published>2012-11-08T11:10:00.000-05:00</published><updated>2012-11-28T16:32:53.340-05:00</updated><title type="text">HUNT or BE HUNTED</title><content type="html">&lt;h2&gt;&lt;/h2&gt;&lt;h2&gt;IDENTIFY: *NEW* Offerings from CrowdStrike Services&amp;nbsp;&lt;/h2&gt;&lt;h2&gt;by Christopher Scott, Principal Consultant&lt;/h2&gt;&lt;div&gt;In my former life as Principal Cyber Security Systems Engineer for a DoD contractor, I was witness to many targeted attacks. &amp;nbsp;During my tenure, we enlisted the help of another "well known" player that focuses on dealing with&amp;nbsp;targeted&amp;nbsp;attacks and provides incident response services. &amp;nbsp;After extensive research, I believed that we were using the latest and greatest technology and intelligence.&lt;br /&gt;&lt;br /&gt;Then I met George Kurtz, who introduced me to cutting-edge technology powered by real-time intelligence. I immediately saw the unprecedented capabilities and understood how this view of security will &lt;a href="http://www.georgekurtz.com/2012/02/crowdstrike-launches-in-stealth-mode.html" target="_blank"&gt;fundamentally change&lt;/a&gt; the threat landscape. After one meeting, I knew that CrowdStrike was going to become the answer to securing businesses and protecting intellectual property. Without question, it was time to follow Shawn Henry's lead and &lt;a href="http://www.youtube.com/watch?v=4JMgbMtpJjA&amp;amp;feature=plcp" target="_blank"&gt;join the mission&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Six months ago, Shawn&amp;nbsp;enthusiastically took the reins of the newly formed CrowdStrike Services with the intention of building it into the world-class organization that exists today. The team has significantly increased in size and has evolved capabilities across three offerings: IDENTIFY, RESPOND, and STRIKE.&lt;br /&gt;&lt;br /&gt;The division has recruited top talent in the areas of targeted attack detection, mitigation and remediation, as well as professional services delivery. With a wide breadth of knowledge across the security spectrum, the team can be rapidly deployed to address many aspects of incident response and threat identification.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;So, what differentiates CrowdStrike Services from other companies that offer similar capabilities?&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;Behind CrowdStrike Services lies a government-quality Intelligence team that powers everything we do, from Services to Technology. During every engagement, CrowdStrike uses real-time adversary intelligence to enhance IR operations and proactive defense. The day has now arrived when we can tell you more than the 'what'. We focus on linking the WHO, WHAT, and WHY. This key differentiator empowers CrowdStrike Services to protect your intellectual property and go beyond the malware to IDENTIFY targeted attackers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With the power and mission of the Intelligence team behind us, we're pleased to offer a full range of IDENTIFY services offerings to both the public and private sector. Focusing on the who, what, and why, the IDENTIFY offerings leverage proactive security to hunt adversaries who bypass defense in depth. Over the course of the three-part HUNT or BE HUNTED blog series we'll provide a detailed look into each service offering and walk through scenarios to show them in action.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's a look at what's to come.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;IDENTIFY: SHAPE (Strategic Hunting and Pursuit of the Enemy) Assessment&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;CrowdStrike's SHAPE Assessment helps IDENTIFY existing compromised systems, while providing counterintelligence and recommendations to help mitigate future targeted attacks. Through hunting operations, which leverage targeted host and network-based visibility as well as victim threat profiling, we identify the adversary and find out what they're after.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;IDENTIFY: DNS Monitoring&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Supported by CrowdStrike Intelligence, DNS Monitoring allows for CrowdStrike Services to IDENTIFY intrusions into our clients' networks. By tracking DNS changes worldwide, we are able to successfully detect and mitigate targeted attacks.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;IDENTIFY: Email Monitoring&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Consuming CrowdStrike Intelligence, Email Monitoring provides an additional layer of security to IDENTIFY the commonly used attack vector of spear phishing. Using techniques different from SPAM &amp;nbsp;or AV technology, this service is able to quickly IDENTIFY common attack methods without disruption to business process.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Blending our real-world experience with the above offerings, CrowdStrike Services fundamentally change how organizations IDENTIFY advanced attackers on their networks. The CrowdStrike team has an unmatched ability to hunt the adversary, remove them from the network, and proactively keep them out.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For more information on CrowdStrike Services or any of our IDENTIFY offerings, please contact us at &lt;a href="mailto:services@crowdstrike.com"&gt;services@crowdstrike.com&lt;/a&gt; or 888.512.8906 x 700.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;**********&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;LIVE Webcast: REGISTER NOW!&lt;/b&gt;&lt;/div&gt;&lt;div&gt;For an in-depth and interactive look into a current threat actor, &lt;a href="https://attendee.gotowebinar.com/register/222705326866011136" target="_blank"&gt;REGISTER NOW&lt;/a&gt; for our upcoming live webcast featuring Adam Meyers, Director of Intelligence, and Jeff Wilson, Principal Security Consultant.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Invasion of the Adversary: HUNT or BE HUNTED&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Tuesday, November 27th | 2pm EST / 11am PST&lt;/div&gt;&lt;div&gt;&lt;a href="https://attendee.gotowebinar.com/register/222705326866011136" target="_blank"&gt;Register Now&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/9148036544031934128/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/11/hunt-or-be-hunted.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/9148036544031934128" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/9148036544031934128" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/p0eU61sUqWw/hunt-or-be-hunted.html" title="HUNT or BE HUNTED" /><author><name>Jessica DeCianno</name><uri>http://www.blogger.com/profile/00834778723934100219</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/11/hunt-or-be-hunted.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-3012418146564235206</id><published>2012-10-29T17:33:00.003-04:00</published><updated>2012-10-29T17:38:19.061-04:00</updated><title type="text">Former Air Force Information Ops Commander joins CrowdStrike as Senior Director for Strategic Operations</title><content type="html">&lt;br /&gt;&lt;h2&gt;&lt;b style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;by George Kurtz, President &amp;amp; CEO&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;&lt;br /&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="vertical-align: baseline; white-space: pre-wrap;"&gt;I am proud to announce that Colonel Mike Convertino, USAF (Retired), has joined CrowdStrike as the Senior Director for Strategic Operations where he will focus on planning and executing offensive/active defense and information operations strategies for our customers. &amp;nbsp;Mike is an ardent and vocal advocate of taking the cyber fight to the adversary and co-authored a&lt;span style="color: #cccccc;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.au.af.mil/AU/AWC/AWCGATE/maxwell/mp40.pdf"&gt;&lt;span style="color: #cccccc; vertical-align: baseline; white-space: pre-wrap;"&gt;paper&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline; white-space: pre-wrap;"&gt; while at Air War College in 2007 calling for adding cyber capabilities and strategies to the Air Force to ‘fly and fight’ in cyberspace. &amp;nbsp;As Commander of the 318th Information Operations Group, the premier information warfare group within the Air Force, Mike established a consistent track record of taking the lead in developing information operations techniques, tactics, and procedures (TTPs) and the tools to execute them for use by the combat air forces and other agencies.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b style="font-weight: normal;"&gt;&lt;span style="vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal;"&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; vertical-align: baseline; white-space: pre-wrap;"&gt;During Mike’s tenure in the military and in the private sector he has seen firsthand the economic and national security devastation from intrusions from a multitude of adversaries and understands what needs to be done to turn the tables on them. &amp;nbsp;The nation suffers from a plethora of complex national cyber security policy issues, and our core belief is that the private sector can provide invaluable help to the government in addressing the adversary problem. &amp;nbsp;At CrowdStrike we believe that industry can’t rely on the government alone to address targeted intrusions and continued theft of our intellectual property. &amp;nbsp;Our key mission is to use our advanced technology and the best intelligence professionals handpicked from government and private sector to deny, deceive, and disrupt adversary intrusion operations while increasing their costs and assisting our customers in responding, mitigating and providing attribution of targeted attacks and intrusions. &amp;nbsp;&amp;nbsp;Adversaries change their tactics on a daily basis; however, &amp;nbsp;CrowdStrike provides our customers with the most detailed and comprehensive adversary threat intelligence to stay one step ahead of our enemies. &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b style="font-weight: normal;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal; text-align: start; white-space: normal;"&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal;"&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal; text-align: start; white-space: normal;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="vertical-align: baseline; white-space: pre-wrap;"&gt;We are honored to have Mike on our team, and we know that he believes deeply in our company’s important mission. Mike’s addition to our team will help us refine and expand our capability and evolve our focus on identifying and disrupting adversary operations. &amp;nbsp;&amp;nbsp;Our mission has always been to provide government-quality intelligence, &amp;nbsp;active defense, and aggressive attribution options to the private sector. &amp;nbsp;&amp;nbsp;While Adam Meyers continues to build out a world class &lt;a href="http://www.youtube.com/watch?feature=player_detailpage&amp;amp;v=cKBI274JGw0"&gt;Intelligence offering&lt;/a&gt;&lt;/span&gt;&lt;span style="vertical-align: baseline; white-space: pre-wrap;"&gt;, Mike will focus on assisting customers in leveraging CrowdStrike's proprietary technology to hunt for adversaries on their networks and strike back as appropriate.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal;"&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal; text-align: start; white-space: normal;"&gt;&lt;span style="vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal;"&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal; text-align: start; white-space: normal;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="vertical-align: baseline; white-space: pre-wrap;"&gt;Currently, we are in the process of hiring additional consultants that have deep experience with strategic and tactical intelligence analysis, malware reverse engineering, intrusion analysis, incident response and forensic investigations, and conducting information operations against nation-state adversaries. &amp;nbsp;If you are interested in joining CrowdStrike and working with an exemplary team, please submit your resume to &lt;/span&gt;&lt;span style="color: #103cc0; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;a href="mailto:mission@crowdstrike.com"&gt;mission@crowdstrike.com&lt;/a&gt;&lt;/span&gt;&lt;span style="vertical-align: baseline; white-space: pre-wrap;"&gt;. &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b style="font-weight: normal;"&gt;&lt;b style="font-weight: normal; text-align: start; white-space: normal;"&gt;&lt;br /&gt;&lt;span style="vertical-align: baseline; white-space: pre-wrap;"&gt;Thank you again for your support and positive feedback as we try to move the security industry forward. &amp;nbsp;If you would like to keep up with the latest news on &lt;/span&gt;&lt;a href="http://www.crowdstrike.com/"&gt;CrowdStrike&lt;/a&gt;&lt;span style="vertical-align: baseline; white-space: pre-wrap;"&gt; please follow us on Twitter &lt;/span&gt;&lt;a href="http://twitter.com/CrowdStrike"&gt;@CrowdStrike&lt;/a&gt;&amp;nbsp;or &lt;a href="https://twitter/George_Kurtz"&gt;@&lt;/a&gt;&lt;/b&gt;&lt;/b&gt;&lt;a href="http://twitter/George_Kurtz"&gt;George_Kurtz&lt;/a&gt;&lt;b style="font-weight: normal;"&gt;&lt;b style="font-weight: normal;"&gt;. Or you can also reach me on &lt;a href="http://www.linkedin.com/in/georgekurtz"&gt;LinkedIn&lt;/a&gt;.&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;b style="font-weight: normal;"&gt;&lt;b style="font-weight: normal; text-align: start; white-space: normal;"&gt;&lt;span style="font-family: Times, Times New Roman, serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;br /&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"&gt;&lt;b style="font-weight: normal;"&gt;&lt;b style="font-weight: normal; text-align: start; white-space: normal;"&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;i&gt;About Mike Convertino:&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;i&gt;&lt;b style="font-weight: normal;"&gt;&lt;b style="font-weight: normal; text-align: start; white-space: normal;"&gt;&lt;span style="vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal;"&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal;"&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal;"&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal;"&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;i&gt;&lt;span style="vertical-align: baseline; white-space: pre-wrap;"&gt;Mike holds degrees in electrical engineering, information systems management, and international security studies and has over 26 years of experience leading large IT operations and security organizations. He was assigned to the Joint Staff where he oversaw negotiations on technical standards for the rapid electronic sharing of intelligence between the military and the intelligence community after 9/11.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal;"&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal;"&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;i&gt;&lt;span style="vertical-align: baseline; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal;"&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal;"&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;i&gt;&lt;span style="vertical-align: baseline; white-space: pre-wrap;"&gt;Mike was highly decorated for his long career in cyber defense and beyond, earning the Nation Medal for his work in the Bosnia conflict, several Meritorious Service Medals, and the Legion of Merit at retirement. &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;b id="internal-source-marker_0.8881453245412558" style="font-weight: normal;"&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;i&gt;&lt;span style="vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="vertical-align: baseline; white-space: pre-wrap;"&gt;After the Air Force, Mike joined Microsoft as the Senior Director of Network Security. &amp;nbsp;While at Microsoft, he was responsible for all Microsoft internal cyber forensic investigations worldwide, as well as live security monitoring of all Microsoft networks including online services such as Hotmail, Office 365, Xbox Live, Azure, and Dynamics CRM as well as Microsoft’s corporate network.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style="font-weight: normal;"&gt;&lt;b style="font-weight: normal; text-align: start; white-space: normal;"&gt;&lt;span style="font-family: Times, Times New Roman, serif;"&gt;&lt;span style="font-size: 21px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/3012418146564235206/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/10/former-air-force-information-ops.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/3012418146564235206" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/3012418146564235206" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/W99KuvhdjGI/former-air-force-information-ops.html" title="Former Air Force Information Ops Commander joins CrowdStrike as Senior Director for Strategic Operations" /><author><name>Dmitri Alperovitch</name><uri>http://www.blogger.com/profile/04664482520090342173</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-2jXCUCGBKo4/T2NtqkSssSI/AAAAAAAAAAQ/yVbc5mSXZo8/s220/dmitri-alperovitch.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/10/former-air-force-information-ops.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-6651821339677045505</id><published>2012-10-29T09:50:00.000-04:00</published><updated>2012-10-29T09:50:53.801-04:00</updated><title type="text">Unpacking Dynamically Allocated Code</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;h3&gt;&lt;/h3&gt;&lt;h2&gt;&lt;b style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;by Jason Geffner, Sr. Security Researcher&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;&lt;h3&gt; Background&lt;/h3&gt;&lt;br /&gt;Today, most malware is obfuscated to make it more difficult for traditional antivirus engines to detect the malicious code and to make it more arduous for analysts to understand the malware's functionality. Although many automated tools exist for deobfuscating (or "unpacking") malware, they have their limitations and analysts often need to manually unpack malware.&lt;br /&gt;&lt;br /&gt;Analysts typically follow three steps when unpacking malware:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Trace to the malware's Original Entry Point (OEP)&lt;/li&gt;&lt;li&gt;Dump the process's memory&lt;/li&gt;&lt;li&gt;Reconstruct the Import Table&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;However, analysts' tools for dumping memory and reconstructing a module's Import Table are only designed to work when the unpacked code is written to an existing PE section in memory. In rare cases where an unpacking stub writes the unpacked content to a dynamically allocated region of memory (especially when that region is before the module's Base Address), common memory dumping and Import Table reconstruction tools fail.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This blog post discusses a method to fully unpack a malware sample whose unpacking stub writes the unpacked code and Import Address Table to dynamically allocated memory.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt; Problem&lt;/h3&gt;&lt;br /&gt;For this blog post, we'll be working with a file with MD5 hash&amp;nbsp;&lt;a href="https://www.virustotal.com/file/9b8cb3a0ea90bf54ea5f46d34eed716de50885bf06639416d226f9eb7856c014/analysis/"&gt;65EE9D8CB2ACB1F95CDA5F66F4591918&lt;/a&gt;; it's a &lt;a href="http://www.microsoft.com/security/portal/Threat/Encyclopedia/Entry.aspx?Name=Rogue%3AWin32%2FFakePAV"&gt;rogue antivirus program&lt;/a&gt; packed with &lt;a href="http://www.aspack.com/asprotect.html"&gt;ASProtect&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Although tracing to the OEP for this sample is out of the scope of this blog post, suffice it to say that on a given run of this sample, the OEP was found to be at Virtual Address &lt;span style="font-family: Courier New, Courier, monospace;"&gt;0x011B1038&lt;/span&gt;. However, this OEP address is below the executable module's base address of&amp;nbsp;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;0x03000000&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Odrj1FBsWDc/UIhykV-4_2I/AAAAAAAAAEU/nthkvglOvWc/s1600/olly_memory_map.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="124" src="http://1.bp.blogspot.com/-Odrj1FBsWDc/UIhykV-4_2I/AAAAAAAAAEU/nthkvglOvWc/s320/olly_memory_map.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Since the DOS header for our module begins &lt;span style="font-family: Courier New, Courier, monospace;"&gt;0x01E4EFC8&lt;/span&gt; bytes &lt;i&gt;after&lt;/i&gt; the OEP, even if we could reconstruct the Import Table, we can't just dump the unpacked code to create a working binary. Furthermore, since the unpacking stub has already applied relocations, we can't just copy &amp;amp; paste the OEP's memory region after the main module's sections, dump it all, and hope to get a working executable even after PE header patching.&lt;br /&gt;&lt;br /&gt;Note that although some packers' stubs such as &lt;a href="http://web.archive.org/web/20080221015740/http://northfox.uw.hu/down/mew11.zip"&gt;MEW&lt;/a&gt;'s&amp;nbsp;will leave the original DOS header and PE header in-place at the beginning of the unpacked code's&amp;nbsp;dynamically allocated&amp;nbsp;memory region, ASProtect does not persist this information; as such, we cannot simply dump just the OEP's memory region to create a working executable.&lt;br /&gt;&lt;br /&gt;How then can we dump this process's unpacked memory to create a valid executable?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt; Solution&lt;/h3&gt;&lt;br /&gt;As mentioned above, most unpacking tools expect the code to be unpacked into an existing PE section. Therefore, we'd ideally like to "trick" the unpacking stub to unpack the malware's code into an existing PE section instead of into dynamically allocated memory. Let's start by creating such a section in the malware's executable.&lt;br /&gt;&lt;br /&gt;We can use a tool such as &lt;a href="http://www.woodmann.com/collaborative/tools/index.php/LordPE"&gt;LordPE&lt;/a&gt; to create the new section. We begin by opening a copy of the file in LordPE's PE Editor:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-fL3Bx30GgJM/UIiucLC0a5I/AAAAAAAAAE0/oyJRLqLFC2E/s1600/lordpe1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://1.bp.blogspot.com/-fL3Bx30GgJM/UIiucLC0a5I/AAAAAAAAAE0/oyJRLqLFC2E/s320/lordpe1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;We then click the Sections button to open the Section Table window:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-dVK_0UPuaME/UIi0NUvx5RI/AAAAAAAAAFc/siM9-0bMC4s/s1600/lordpe2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="122" src="http://2.bp.blogspot.com/-dVK_0UPuaME/UIi0NUvx5RI/AAAAAAAAAFc/siM9-0bMC4s/s320/lordpe2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;We then right-click anywhere in the Section Table window and choose "add section header":&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-rZWP4Xxs4cU/UIi0ShRT8RI/AAAAAAAAAFk/co9oOReU_pI/s1600/lordpe3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="220" src="http://3.bp.blogspot.com/-rZWP4Xxs4cU/UIi0ShRT8RI/AAAAAAAAAFk/co9oOReU_pI/s320/lordpe3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The new section header will be added at the end of the Section Table as ".NewSec". We scroll down to it, right click on it, and choose "edit section header...":&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-wdC5gyc-bDY/UIi20FaYrfI/AAAAAAAAAF0/GK7NuStJPX4/s1600/lordpe4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="214" src="http://3.bp.blogspot.com/-wdC5gyc-bDY/UIi20FaYrfI/AAAAAAAAAF0/GK7NuStJPX4/s320/lordpe4.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Note that LordPE set the Relative Virtual Address of the section to be &lt;span style="font-family: Courier New, Courier, monospace;"&gt;0x003CB000&lt;/span&gt;; we'll need to use that address later. If we refer to the OllyDbg screenshot earlier in this blog post, we see that the size of the OEP's memory region (beginning at Virtual Address &lt;span style="font-family: Courier New, Courier, monospace;"&gt;0x01170000&lt;/span&gt;) is &lt;span style="font-family: Courier New, Courier, monospace;"&gt;0x0005A000&lt;/span&gt; bytes. Since our goal is to get the OEP's code unpacked into this new section we're creating, we set the Virtual Size of ".NewSec" to&amp;nbsp;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;0x0005A000&lt;/span&gt;&amp;nbsp;bytes:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-_P7FFZgLt00/UIi7D0yZmeI/AAAAAAAAAGQ/hd4z0YLsCng/s1600/lordpe5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="214" src="http://4.bp.blogspot.com/-_P7FFZgLt00/UIi7D0yZmeI/AAAAAAAAAGQ/hd4z0YLsCng/s320/lordpe5.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;LordPE already set the characteristics ("Flags") of ".NewSec" to &lt;span style="font-family: Courier New, Courier, monospace;"&gt;0xE00000E0&lt;/span&gt; (readable, writable, executable), so we click OK to apply the section size changes. We then close the Section Table window and in the main PE Editor window we set the Size of Image field to (&lt;span style="font-family: Courier New, Courier, monospace;"&gt;0x003CB000&lt;/span&gt; + &lt;span style="font-family: Courier New, Courier, monospace;"&gt;0x0005A000&lt;/span&gt;) = &lt;span style="font-family: Courier New, Courier, monospace;"&gt;0x00425000,&lt;/span&gt; in order to account for our newly added section:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-rTGUqEUrJUE/UIi6GyzeNWI/AAAAAAAAAGE/jFVoRvHMm5Y/s1600/lordpe6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="158" src="http://3.bp.blogspot.com/-rTGUqEUrJUE/UIi6GyzeNWI/AAAAAAAAAGE/jFVoRvHMm5Y/s320/lordpe6.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;We now click the Save button to save our changes.&lt;br /&gt;&lt;br /&gt;Now that we've modified the file such that that we have an existing PE section into which the unpacking stub can unpack the malware's code, we need to trick the malware to unpack into this section.&lt;br /&gt;&lt;br /&gt;If we look at the OEP's memory region (beginning at Virtual Address&amp;nbsp;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;0x1170000&lt;/span&gt;) with &lt;a href="http://technet.microsoft.com/en-us/sysinternals/dd535533.aspx"&gt;VMMap&lt;/a&gt;, we can see that its Type is "&lt;i&gt;Private&lt;/i&gt; Data":&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-CIg5z0q0LGU/UIirCcf8P_I/AAAAAAAAAEk/4-UUJwUUNhA/s1600/vmmap.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="208" src="http://3.bp.blogspot.com/-CIg5z0q0LGU/UIirCcf8P_I/AAAAAAAAAEk/4-UUJwUUNhA/s320/vmmap.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;According to VMMap's help file, "&lt;i&gt;Private &lt;/i&gt;memory is memory allocated by VirtualAlloc and not suballocated either  by the Heap Manager or the .NET run time." This indicates that the OEP's memory region was allocated by the process's unpacking stub via &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa366887(v=vs.85).aspx"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;VirtualAlloc(...)&lt;/span&gt;&lt;/a&gt;. Additionally, we know from our analysis above that the size of this allocated region is&amp;nbsp;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;0x0005A000&lt;/span&gt;&amp;nbsp;bytes. We can thus run the new version of our target with the added section in a debugger, set a breakpoint on &lt;span style="font-family: Courier New, Courier, monospace;"&gt;VirtualAlloc(...)&lt;/span&gt;, and wait for it to be called with a requested size of&amp;nbsp;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;0x0005A000&lt;/span&gt;&amp;nbsp;bytes.&lt;br /&gt;&lt;br /&gt;If we set a logging breakpoint on &lt;span style="font-family: Courier New, Courier, monospace;"&gt;VirtualAlloc(...)&lt;/span&gt;, we see it called twice with a size of&amp;nbsp;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;0x0005A000&lt;/span&gt;&amp;nbsp;bytes:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-cv_whhxEZgo/UIl2emekN0I/AAAAAAAAAGg/CuhpOCSRQao/s1600/olly_log.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-cv_whhxEZgo/UIl2emekN0I/AAAAAAAAAGg/CuhpOCSRQao/s320/olly_log.png" width="288" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;If we track the returned value from these two &lt;span style="font-family: Courier New, Courier, monospace;"&gt;VirtualAlloc(...)&lt;/span&gt; calls, we see that the malware's code is unpacked into the memory allocated by the second call to &lt;span style="font-family: Courier New, Courier, monospace;"&gt;VirtualAlloc(...)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;We now restart the process, set a breakpoint on &lt;span style="font-family: Courier New, Courier, monospace;"&gt;VirtualAlloc(...)&lt;/span&gt;, and the second time it's called with an allocation size of &lt;span style="font-family: Courier New, Courier, monospace;"&gt;0x0005A000&lt;/span&gt; bytes we change the return value in &lt;span style="font-family: Courier New, Courier, monospace;"&gt;EAX&lt;/span&gt; to actually point to the Virtual Address of our new section:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-JU9TvLIcanQ/UImN6fDTqxI/AAAAAAAAAGw/9-Hi2qXsYCc/s1600/olly_hook.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="112" src="http://4.bp.blogspot.com/-JU9TvLIcanQ/UImN6fDTqxI/AAAAAAAAAGw/9-Hi2qXsYCc/s320/olly_hook.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This causes the unpacking stub to treat our new section as the &lt;span style="font-family: Courier New, Courier, monospace;"&gt;0x0005A000&lt;/span&gt;&amp;nbsp;bytes that would have been returned by &lt;span style="font-family: Courier New, Courier, monospace;"&gt;VirtualAlloc(...)&lt;/span&gt;, causing the unpacking stub to unpack the malware's code into our new section instead of a dynamically allocated region of memory. We can now trace to the OEP, successfully dump the memory, and reconstruct the Import Table:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-QHWmbU4JqBg/UImPhlpY2qI/AAAAAAAAAG4/4Wd77qtvIB4/s1600/olly_oep.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="112" src="http://4.bp.blogspot.com/-QHWmbU4JqBg/UImPhlpY2qI/AAAAAAAAAG4/4Wd77qtvIB4/s320/olly_oep.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-e-pr3ZyWXnk/UImQcAwRuiI/AAAAAAAAAHA/N0hK4eGCnMo/s1600/imprec.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="264" src="http://1.bp.blogspot.com/-e-pr3ZyWXnk/UImQcAwRuiI/AAAAAAAAAHA/N0hK4eGCnMo/s320/imprec.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;We can now analyze the unpacked file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt; Conclusion&lt;/h3&gt;&lt;br /&gt;This blog post demonstrates that reverse engineering is not just a reliance on tools. A professional reverse engineer requires knowledge of the hardware, the underlying operating system, and a good deal of creativity in order to solve challenging problems.&lt;br /&gt;&lt;br /&gt;No matter what the bad guys do to make our work more difficult, we will always&amp;nbsp;persevere, outsmart them, and in the end, use our skills to bring pain to the adversary.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Want to make reverse engineering easier? &lt;a href="http://blog.crowdstrike.com/2012/08/crowdre-alpha-release.html"&gt;Try CrowdRE&lt;/a&gt;!&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/6651821339677045505/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/10/unpacking-dynamically-allocated-code.html#comment-form" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/6651821339677045505" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/6651821339677045505" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/DGzqi7w0ykE/unpacking-dynamically-allocated-code.html" title="Unpacking Dynamically Allocated Code" /><author><name>Jason Geffner</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-Odrj1FBsWDc/UIhykV-4_2I/AAAAAAAAAEU/nthkvglOvWc/s72-c/olly_memory_map.png" height="72" width="72" /><thr:total>10</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/10/unpacking-dynamically-allocated-code.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-3753565331135395963</id><published>2012-09-04T16:43:00.001-04:00</published><updated>2012-09-05T01:00:30.410-04:00</updated><title type="text">FinSpy Mobile: iOS and Apple UDID leak</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;h2 style="text-align: left;"&gt;&lt;b style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;by Alex Radocea, Sr. Engineer&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;&lt;br /&gt;Last week, Morgan Marquis-Boire and Bill Marczak from The Citizen Lab &lt;b&gt;&lt;a href="https://citizenlab.org/2012/08/the-smartphone-who-loved-me-finfisher-goes-mobile/"&gt;published&lt;/a&gt;&amp;nbsp;&lt;/b&gt;a fascinating glance at real-world mobile espionage tool created by &lt;a href="http://www.finfisher.com/FinFisher/en/index.php"&gt;Gamma International&lt;/a&gt;&amp;nbsp;under its &amp;nbsp;'FinFisher' product line. &amp;nbsp;The report covers the mobile component of FinFisher dubbed 'FinSpy Mobile' which supports iOS, Android, Windows, Blackberry, and Symbian phones. &amp;nbsp;Gamma International in response to the article, issued a press release stating that FinFisher's "&lt;b&gt;&lt;a href="http://www.bloomberg.com/news/2012-08-29/spyware-matching-finfisher-can-take-over-iphone-and-blackberry.html"&gt;information was stolen from its sales demonstration server at an unknown time by unknown methods.&lt;/a&gt;"&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;CrowdStrike analyzed the iOS version of FinSpy to identify details of any attacks against the iOS platform itself which would facilitate the installation of the FinSpy tool. &amp;nbsp;The technical overview from The Citizen Lab identifies some notable attributes which imply either a bypass or exploit of the iOS security architecture.&lt;br /&gt;&lt;br /&gt;One of the first points to catch our attention was that the applications in the FinSpy package use Ad-hoc distribution. &amp;nbsp;Ad-hoc distribution is typically used for testing, and one of the &lt;a href="http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Conceptual/DevPortalGuide/DistributinganApp/DistributinganApp.html#//apple_ref/doc/uid/TP40011159-CH31-SW1"&gt;three application distribution methods&lt;/a&gt;&amp;nbsp;available from Apple, the second being &lt;a href="https://developer.apple.com/programs/ios/enterprise/"&gt;In-House&lt;/a&gt;&amp;nbsp;apps and the most well-known distribution method being through the iTunes App Store (which also includes Business-to-Business a.k.a B2B apps). &amp;nbsp;Ad-hoc distribution requires that the individual target device's Unique Device Identifier (UDID) must be known&amp;nbsp;when the Ad-hoc distribution profile is created,&amp;nbsp;long before execution/installation time. &amp;nbsp;This makes Ad-hoc distribution less than ideal for in-the-wild exploitation and would seem to support Gamma International's statement regarding the sales demonstration server. &amp;nbsp;That is of course until the recent 'anti-sec'&amp;nbsp;&lt;a href="http://pastebin.com/nfVT7b0Z"&gt;leak&lt;/a&gt; of over a million UDIDs with customer name/device name correlation. &lt;br /&gt;&lt;br /&gt;While the limitation of knowing the UDID in advance points to some other distribution channel, the FinSpy installation mechanism writes to a number of files that are not directly accessible from within the third-party application container. &amp;nbsp;The third-party application container is a sandbox that is part of iOS which enables the device to run third party applications safely and separately from each other and the operating system, this is a security feature of iOS. &amp;nbsp;This indicates some form of security bypass or exploit is required to install the package by reaching outside of the sandbox. &amp;nbsp;Additionally, these files are not writable using the 'mobile' user privileges, with which third-party applications execute. &amp;nbsp;Lastly, these files are located in the read-only portion of the filesystem, the system partition, requiring the remounting of the partition with read/write&amp;nbsp;privileges&amp;nbsp;requiring superuser access. &amp;nbsp;In essence, the Ad-hoc distributed apps run in the third-party App container and without kernel code execution, there is no way to directly bypass the App sandbox. Even if somehow one managed to get around the filesystem permissions, there would still be no way from the sandbox to directly use system calls to write to those file paths.&lt;br /&gt;&lt;br /&gt;The trojan application which exfiltrates data, named 'SyncData.app', runs persistently and silently while exfiltrating information from data sources not reachable by third-party Apps.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Payload Expansion&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;The FinSpy Mobile 'installation' begins by instantiating the install_manager.app, which contains a routine which decodes and drops four additional binaries.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-kjuTmXdANtg/UEUQigE72WI/AAAAAAAAAAM/-QcyqdpBKqw/s1600/Screen+Shot+2012-09-03+at+1.17.52+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-kjuTmXdANtg/UEUQigE72WI/AAAAAAAAAAM/-QcyqdpBKqw/s1600/Screen+Shot+2012-09-03+at+1.17.52+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Specifically, the application bundle of the install_manager.app contains a&amp;nbsp;'data' file which has been obfuscated with a simple fixed-key XOR loop. &amp;nbsp;Once decoded, the data file is actually a zip compressed file which expands into four more applications, and a LaunchDaemon configuration. &lt;br /&gt;&lt;br /&gt;In the pseudocode that follows throughout this post, "${suid_tmpcache}" refers to a path generated as follows:&lt;br /&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Yezop4PXMtM/UEUhNAcsShI/AAAAAAAAABM/p_keC_ewaUU/s1600/getsuidcaches.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-Yezop4PXMtM/UEUhNAcsShI/AAAAAAAAABM/p_keC_ewaUU/s1600/getsuidcaches.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;On a jailbroken device, running this as the mobile user would result in the path "/var/mobile/Library/Caches". &amp;nbsp;On a non-jailbroken device, where the user partition is mounted "nosuid" to ignore setuid executables, this results in "/tmp/" as the destination path, which is writeable from the third-party app container.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-tPjGKepMjEU/UEUX0LT2esI/AAAAAAAAAAs/uP_yPcw1nS8/s1600/Screen+Shot+2012-09-03+at+1.48.56+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="353" src="http://2.bp.blogspot.com/-tPjGKepMjEU/UEUX0LT2esI/AAAAAAAAAAs/uP_yPcw1nS8/s640/Screen+Shot+2012-09-03+at+1.48.56+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;br /&gt;The '_im_expandPayload()' routine which decodes the binaries also marks the executable bit of each of the decompressed App bundle's binary files and attempts to set their ownership to the root user. &amp;nbsp;NSFileManager fails gracefully if not running with root privileges and will still mark the files as executable.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-JUKjKs_P8Yg/UEUieCJvJNI/AAAAAAAAABc/_Nhzn2Ghje0/s1600/Screen+Shot+2012-09-03+at+2.34.39+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-JUKjKs_P8Yg/UEUieCJvJNI/AAAAAAAAABc/_Nhzn2Ghje0/s1600/Screen+Shot+2012-09-03+at+2.34.39+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3 style="text-align: left;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/h3&gt;&lt;h3 style="text-align: left;"&gt;&lt;b&gt;Privilege Escalation Mechanism?&lt;/b&gt;&lt;/h3&gt;&lt;div&gt;So how does the trojan break out of the sandbox? &amp;nbsp;Is there a kernel exploit inside? &amp;nbsp;After extraction,&amp;nbsp;the trampoline App is executed, followed by the the execution of the installer App.&lt;br /&gt;&lt;br /&gt;The infrastructure points at trampoline as a privilege escalation exploit, specifically the arguments which are supplied to the trampoline.app are&amp;nbsp;redundant and&amp;nbsp;unnecessary&amp;nbsp;unless a&amp;nbsp;privilege&amp;nbsp;escalation is&amp;nbsp;occurring.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Install Manager Running Trampoline&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-gMPPxNrcYB8/UEUhMvX47II/AAAAAAAAABE/XrdKLwjh9fE/s1600/execute_trampoline.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="328" src="http://4.bp.blogspot.com/-gMPPxNrcYB8/UEUhMvX47II/AAAAAAAAABE/XrdKLwjh9fE/s640/execute_trampoline.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;i&gt;&lt;b&gt;Trampoline&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;As is turns out, the trampoline in this sample is a no-op 'placeholder', there is nothing inside and the App has no effect. &amp;nbsp;Checking the standard control flow techniques, including&amp;nbsp;&lt;a href="http://theiphonewiki.com/wiki/index.php?title=Incomplete_Codesign_Exploit"&gt;clever ones&lt;/a&gt;,&amp;nbsp;shows no alternate entry points. &amp;nbsp;No interposers, no interesting relocation entries, initializers, constructors, destructors, dyld exploits, or other tricks.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The following is the pseudocode for the main routine, the argc comparison is off by one, causing a non-exploitable NULL pointer dereference.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-SOJrRH2KawE/UEUqkslzo6I/AAAAAAAAAB0/Yv5LY3iJRXE/s1600/Screen+Shot+2012-09-03+at+3.09.05+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-SOJrRH2KawE/UEUqkslzo6I/AAAAAAAAAB0/Yv5LY3iJRXE/s1600/Screen+Shot+2012-09-03+at+3.09.05+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;i&gt;&lt;b&gt;Installer&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;The installer app copies over the payloads to their final paths in "/Applications", "/System/Library/LaunchDaemons", and "/System/Library/CoreServices/".&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-roQrRzowdjA/UEUsZdbZvTI/AAAAAAAAACE/opHX6Ha6Auo/s1600/Screen+Shot+2012-09-03+at+3.16.48+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-roQrRzowdjA/UEUsZdbZvTI/AAAAAAAAACE/opHX6Ha6Auo/s1600/Screen+Shot+2012-09-03+at+3.16.48+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;i&gt;&lt;b&gt;Files Copied&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;.../org.logind.ctp.archive/SyncData.app &lt;/b&gt;to&lt;b&gt;&amp;nbsp; /Applications/SyncData.app&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;.../org.logind.ctp.archive/com.apple.logind.plist &amp;nbsp; &lt;/b&gt;to&lt;b&gt; &amp;nbsp; &amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; /System/Library/LaunchDaemons/com.apple.logind.plist&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;.../org.logind.ctp.archive/logind.app &amp;nbsp;&lt;/b&gt;to&lt;b&gt;&amp;nbsp; /System/Library/CoreServices/logind.app&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Followed by the execution of the 'login' App with "/bin/launchctl" &amp;nbsp;&lt;b&gt;/System/Library/LaunchDaemons/com.apple.logind.plist&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Due to the usage of getuid() and geteuid() in 'installer', it seems that 'installer' is expected to be run as a setuid root binary. &amp;nbsp;A weaponized version of the trampoline App would likely exploit the system to make 'installer' a setuid root binary. &amp;nbsp;Supporting evidence for this is mentioned later, which shows how the temporary directory lookup checks if the Caches directory is mounted nosuid. &amp;nbsp;The /tmp directory is also part of the user partition, and would be also be mounted nosuid on a standard non-jailbroken device.&lt;br /&gt;&lt;br /&gt;What's important to note is that setuid root privileges on 'installer' won't be sufficient. &amp;nbsp;The exploit must remount the filesystem. &amp;nbsp;Even then, the sandbox container would prevent the writes to these filepaths, the kernel exploit in trampoline would also need to modify the sandbox container&amp;nbsp;for the already-running 'Install Manager' App,&amp;nbsp;or patch the kernel sandboxing code. &amp;nbsp;On a jailbroken device from the iPhone Dev Team, kernel sandboxing code is already hot-patched so this is not necessary.&lt;/div&gt;&lt;/div&gt;&lt;h3 style="text-align: left;"&gt;&lt;b&gt;Persistence mechanism?&lt;/b&gt;&lt;/h3&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-uX--ZQgci38/UEVIosjG2PI/AAAAAAAAACU/8WS39rB7jf4/s1600/Screen+Shot+2012-09-03+at+5.17.22+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-uX--ZQgci38/UEVIosjG2PI/AAAAAAAAACU/8WS39rB7jf4/s1600/Screen+Shot+2012-09-03+at+5.17.22+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;As outlined by The Citizen Lab post, Logind will launch SyncData on every new device boot. &amp;nbsp;In this manner persistence is established, SyncData will run without any restrictions to data available on the device. &amp;nbsp;Launchd runs the logind App with full root privileges and the SyncData App will run without a sandbox profile. &amp;nbsp;No additional exploit is necessary for persistence on a jailbroken device, and Ad-hoc distribution would take care of code-signing on a standard install.&lt;/div&gt;&lt;h3 style="text-align: left;"&gt;&lt;b&gt;Takeaways&lt;/b&gt;&lt;/h3&gt;The FinSpy Mobile iOS sample contains no exploit or security bypass of iOS, since 'trampoline' is incomplete. &amp;nbsp;The installation mechanism in this sample is consistent with what would be used in a demonstration. &amp;nbsp;However portions of it could easily be weaponized with an existing jailbreak for out of date devices or a new kernel exploit. &amp;nbsp;The architecture of the FinSpy demo package is consistent with a commercial grade implant which supports&amp;nbsp;interchangeable&amp;nbsp;exploits.&lt;br /&gt;&lt;br /&gt;Although this sample is not fully weaponized, the exfiltration payloads are dangerous and can be trivially distributed onto a jailbroken or a non-jailbroken 'paired device' using Mobile Device Management (MDM). &amp;nbsp;The missing components would be the command and control and SMS backend, which may have also been on the sales demonstration server, and thus compromised.&lt;br /&gt;&lt;br /&gt;In the wild, this demonstration code can already trivially run on a jailbroken device. &amp;nbsp;A paired jailbroken device can have the logind and SyncData Apps dropped directly on the system to later exfiltrate data, making this sample sufficiently dangerous. &lt;br /&gt;&lt;br /&gt;It is entirely likely that FinSpy has been used in support of non-demonstrative exploitation and collection. &amp;nbsp;CrowdStrike is currently looking for such samples, and will report if any are found, if anyone knows of such samples we would love to hear about them. &amp;nbsp;It is also noteworthy that with the release of the alleged UDIDs today, if those do prove to be legitimate devices, there are now over one million targets which can be targeted using the FinSpy Ad-Hoc distribution mechanism coupled with an existing or new exploit/jailbreak.&lt;br /&gt;&lt;br /&gt;As mentioned previously, annotations are available on &lt;a href="http://crowd.re/"&gt;CrowdRE&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt; September 4th, 2012 7:43 PST:&lt;br /&gt;Two astute readers correctly point out that NSTask fails inside the third-party sandbox, since NSTask uses the fork system call which is filtered. This is true on both standard installs and jailbroken installs for any Apps that do not have the backgrounding entitlement. Install Manager does not use the entitlement.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-yldfYBfZ_8U/UEa9lrC1RJI/AAAAAAAAACk/hvsev_9R_6A/s1600/Screen+Shot+2012-09-04+at+7.48.33+PM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="118" src="http://4.bp.blogspot.com/-yldfYBfZ_8U/UEa9lrC1RJI/AAAAAAAAACk/hvsev_9R_6A/s320/Screen+Shot+2012-09-04+at+7.48.33+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;install_manager.app entitlements&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;I will also join George Kurtz and my colleague Georg Wicherski at an upcoming Hacking Exposed:&amp;nbsp;Mobile Targeted Threats webinar held next Wednesday September 12 at&amp;nbsp;11am PT/ 2pm ET. I will be discussing this threat and mitigation strategies in more detail as a guest speaker. Register for it now at &lt;a href="http://www.hackingexposed7.com/"&gt;www.hackingexposed7.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/3753565331135395963/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/09/finspy-mobile-ios-and-apple-udid-leak.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/3753565331135395963" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/3753565331135395963" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/xyjfO60BYzQ/finspy-mobile-ios-and-apple-udid-leak.html" title="FinSpy Mobile: iOS and Apple UDID leak" /><author><name>Alex Radocea</name><uri>http://www.blogger.com/profile/09432718396756882361</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-kjuTmXdANtg/UEUQigE72WI/AAAAAAAAAAM/-QcyqdpBKqw/s72-c/Screen+Shot+2012-09-03+at+1.17.52+PM.png" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/09/finspy-mobile-ios-and-apple-udid-leak.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-3765680441798001895</id><published>2012-08-08T10:31:00.000-04:00</published><updated>2012-08-08T12:56:42.618-04:00</updated><title type="text">CrowdRE: Alpha++ Release</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;h3 style="text-align: left;"&gt;&lt;/h3&gt;&lt;h3 style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-family: Arial;"&gt;by Adam Meyers, Director of Intelligence&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;&lt;h3 style="text-align: left;"&gt;    &lt;span style="font-size: large;"&gt;Alpha++ Release&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Since CrowdStrike released our free &lt;a href="http://crowd.re/"&gt;Crowdsourced Reverse Engineering (CrowdRE)&lt;/a&gt; service in June, the team has been hard at work building new features that we were very excited to unveil at Black Hat USA 2012. &amp;nbsp;The new features are a direct result of some of the great feedback that the community provided and we encourage more feedback on these new features. &amp;nbsp;In an effort to lead by example the CrowdStrike Intelligence Team has committed nearly all of our current annotations to CrowdRE, you can immediately benefit from our reverse engineering efforts. &amp;nbsp;We just created and posted the video below&amp;nbsp;that demonstrates some of the latest features and how to set up the CrowdRE environment.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/peiQvkWkws0/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/peiQvkWkws0&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/peiQvkWkws0&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style="text-align: left;"&gt;    &lt;/h3&gt;&lt;h3 style="text-align: left;"&gt;     Mac/Linux Versions&lt;/h3&gt;&lt;div&gt;When CrowdRE was released at REcon in &lt;a href="http://blog.crowdstrike.com/2012/06/join-crowd.html"&gt;June&lt;/a&gt; the immediate feedback was to provide a Linux and Mac versions of the plugin, Jason Geffner during the &lt;a href="http://blog.crowdstrike.com/2012/06/recon-crowdre-presentation-be-social.html"&gt;presentation&lt;/a&gt; surveyed the audience and it was a mixed result of what version to focus on. Since there was interest for Mac and Linux, we decided to release both versions! &amp;nbsp;To access the newest plugin visit http://crowd.re and you will see the following page:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img alt="" border="0" height="205" src="http://4.bp.blogspot.com/-DZt2JxhpRqQ/UAnYHt5BFGI/AAAAAAAAAA8/Lm0J3opkvMc/s400/Screen+Shot+2012-07-20+at+6.12.54+PM.png" title="CrowdStrike CrowdRE Download Page" width="400" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 style="text-align: left;"&gt;     Groups&lt;/h3&gt;&lt;div&gt;The other feedback we received was that users did not want to share their annotations with everyone, and while CrowdRE was built to share reversing intelligence with as many people as possible, we understand that sometimes this data does need to be compartmentalized. &amp;nbsp;The group feature is a way to limit the distribution of your annotations to a limited subset of CrowdRE users. &amp;nbsp;This feature is simple to use and you may have seen the place holder for it in the CrowdRE UI over the last few weeks. &amp;nbsp;The way this works is to:&lt;/div&gt;&lt;div&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;Create a group&lt;/li&gt;&lt;li&gt;Add/invite friends to the group to share annotations with&lt;/li&gt;&lt;li&gt;Crowd Reverse annotations with your group&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;CrowdRE users can create different groups for different projects and share annotations to those groups; this allows for example the formulation of working groups for particular malware families. &amp;nbsp;An example might be to create a Zeus working group, in this situation members of that group may share annotations&amp;nbsp;exclusively amongst themselves from Zeus reverse engineering projects to ensure all participants have the latest analysis. &amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style="text-align: left;"&gt;     Private Commits&lt;/h3&gt;&lt;div style="text-align: left;"&gt;CrowdStrike built CrowdRE to encourage sharing in the reverse engineering community, however we understand that sometimes the annotations or functions we are reversing are something that users do not wish to share. &amp;nbsp;As a result of lots of feedback about the usefulness of fuzzy hashing but the reluctance to share this sensitive data to the community, we are also introducing private commits in this version. &amp;nbsp;Private commits can be useful both for sharing annotations between different machines, or to take advantage of fuzzy hashing without publicizing what is being reversed. &amp;nbsp;Using private commits the user can keep annotated functions to themselves and not share them into the CrowdRE community.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style="text-align: left;"&gt;     Karma&lt;/h3&gt;&lt;div&gt;The new release of CrowdRE also introduces what we have dubbed a 'Karma' rating. &amp;nbsp;Historically the problem with sharing in a community setting is that people will take without giving. &amp;nbsp;With this release of CrowdRE we set out to recognize those members of the community who are contributing the greatest and most usable annotations. &amp;nbsp;We chose Karma based on the concepts associated with Karma in eastern philosophies, typically deed or action - committing annotations is a good action in CrowdRE and quality annotations are even better. &amp;nbsp;As such users will build a Karma score based on their commits and as we progress as a community we will look at interesting ways to award and recognize high Karma scores. &amp;nbsp;Personally I was just unseated as the highest Karma score and I am working on some new annotations to reclaim the crown!&lt;br /&gt;&lt;br /&gt;CrowdStrike would like to pay special thanks to &lt;a href="http://twitter.com/ilfak" target="_blank"&gt;Ilfak Guilfanov&lt;/a&gt; and his &lt;a href="http://www.hex-rays.com/" target="_blank"&gt;Hex-Rays&lt;/a&gt;&amp;nbsp;team for all the support they provided to the CrowdRE team to help navigate some of the unique challenges of building a portable IDA Pro plugin.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Please provide feedback, we are still really excited about CrowdRE and looking to build in the features that the community requests. &amp;nbsp;We loved all the feedback we have&amp;nbsp;received&amp;nbsp;already and can't wait to start working on new features! &amp;nbsp;Join the CrowdRE community &lt;a href="http://crowd.re/"&gt;here&lt;/a&gt;, and we look forward to sharing with you! &amp;nbsp;Please see this helpful video to get started with CrowdRE.&lt;/div&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/3765680441798001895/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/08/crowdre-alpha-release.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/3765680441798001895" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/3765680441798001895" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/VaHUcEOs-WA/crowdre-alpha-release.html" title="CrowdRE: Alpha++ Release" /><author><name>Adam Meyers</name><uri>http://www.blogger.com/profile/04581009553578077342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-DZt2JxhpRqQ/UAnYHt5BFGI/AAAAAAAAAA8/Lm0J3opkvMc/s72-c/Screen+Shot+2012-07-20+at+6.12.54+PM.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/08/crowdre-alpha-release.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-6512103654657120774</id><published>2012-07-20T13:00:00.004-04:00</published><updated>2012-07-20T15:02:55.142-04:00</updated><title type="text">Upcoming Black Hat USA 2012: Android 4.0.1 Exploitation</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;h3 style="text-align: left;"&gt;           &lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial;"&gt;by Georg Wicherski, Senior Security Researcher&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This February in the&amp;nbsp;&lt;a href="http://www.youtube.com/watch?v=8d7pC9WmQ-U"&gt;"Hacking Exposed: Mobile RATs"&lt;/a&gt;&amp;nbsp;talk&amp;nbsp;at the RSA conference, we released a demonstration of an end to end compromise of an Android 2.2 phone using a vulnerability in Webkit that we had weaponized. The demo consisted of sending a spearphish SMS message to the device with a link to a website hosting the exploit. Once the user clicked on the link, we stealthily compromise the browser through the Webkit vulnerability and then used another root privilege escalation exploit to gain root access to the device. &amp;nbsp;Afterwards, we installed a Chinese RAT we had commandeered that would proceed to track the user's real-time location and intercept phone calls and text messages. All that was done without any end-user interaction or awareness, beyond having clicked on the original spearphish link.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;At the time, the demo only worked on Android Froyo phones because in later versions of Android, Google had introduced&amp;nbsp;&lt;i"&gt;&lt;i&gt;partial&lt;/i&gt;&amp;nbsp;Address Space Layout Randomization (ASLR) and No Execute (NX) exploit&amp;nbsp;mitigations. However, after a few weeks of additional effort in collaboration with Accuvant LABS' Joshua "jduck" Drake, we are pleased to announce that a new Webkit exploit will be discussed at BlackHat USA 2012. Using the same vulnerability, we successfully circumvented all extra security protections present on Android 4.0.1 (Ice Cream Sandwich). The fix for the vulnerability at hand has been merged into Android since 4.0.2 and our exploit would not work on Android 4.1 (Jelly Bean), since Google completed ASLR work to include randomization of dynamic linker in that version.&lt;/i"&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-H-9l6MF-tvw/UAl5r3IKsmI/AAAAAAAAABU/tMSQyi65FCc/s1600/a.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="57" src="http://4.bp.blogspot.com/-H-9l6MF-tvw/UAl5r3IKsmI/AAAAAAAAABU/tMSQyi65FCc/s400/a.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;div class="p1"&gt;Reverse Shell initiated by the Browser on Android 4.0.1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Since the bug is hard to turn into an information leak, we do Return Oriented Programming within the dynamic linker, which is located at a fixed address, and subsequently execute shellcode from executable memory allocated by the ROP chain. This allows us to do anything that the browser has privileges to do on Android 4.0.1 (e.g. track the location without user interaction) or chain a local root exploit / "Jailbreak" allowing us to take 100% control of the phone.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The details of our linker ROP and how we solved this seemingly hard challenge to pivot from this insanely hard bug will be presented by CrowdStrike's Georg Wicherski as a guest feature in &lt;a href="https://www.blackhat.com/html/bh-us-12/bh-us-12-briefings.html#Ridley"&gt;Stephen Ridley's and Stephen Lawler's "Advanced ARM Exploitation"&lt;/a&gt;&amp;nbsp;(on a &lt;a href="http://dontstuffbeansupyournose.com/2012/03/01/a-lackluster-hack-cluster-arm-exploitation-lab-preview/"&gt;"Lackluster Hackcluster"&lt;/a&gt;) at 10:15am on July 25th at Black Hat. The actual demo will also be a surprise in another talk!&lt;/div&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/6512103654657120774/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/07/upcoming-black-hat-usa-2012-android-401.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/6512103654657120774" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/6512103654657120774" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/_g_USjCWZ3Q/upcoming-black-hat-usa-2012-android-401.html" title="Upcoming Black Hat USA 2012: Android 4.0.1 Exploitation" /><author><name>Georg Wicherski</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-8_iN3AqRDAM/T4yFIk5EVJI/AAAAAAAAABE/XnlCbAOwp6g/s1600/oxff.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-H-9l6MF-tvw/UAl5r3IKsmI/AAAAAAAAABU/tMSQyi65FCc/s72-c/a.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/07/upcoming-black-hat-usa-2012-android-401.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-880500245874692220</id><published>2012-06-22T15:20:00.001-04:00</published><updated>2012-06-22T23:51:19.331-04:00</updated><title type="text">Streamlining the Reverse Engineering Process with CrowdRE</title><content type="html">&lt;h3&gt;   &lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial; font-weight: 700;"&gt;by Jason Geffner, Senior Security Researcher&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3&gt;   &lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial; font-weight: 700;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3&gt;                        Background&lt;/h3&gt;&lt;br /&gt;As is commonly known in the industry, and as evident from recent high-profile malware samples such as Stuxnet and Flame, malicious binaries are continuing to increase in complexity and grow in size. While a single analyst can statically reverse engineer a small downloader or dropper in a matter of minutes, it can take weeks or even months of man-hours to analyze a massive binary developed by a well-funded adversary. To streamline the reverse engineering process, CrowdStrike has developed &lt;a href="http://crowd.re/"&gt;CrowdRE&lt;/a&gt;, a platform that allows analysts around the world to perform collaborative reverse engineering. This post will focus on the CrowdRE plugin for &lt;a href="http://hex-rays.com/products/ida/index.shtml"&gt;IDA Pro&lt;/a&gt;, which allows analysts to leverage the power of the cloud to analyze a given binary.&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;We'll demonstrate the functionality of CrowdRE on a malware sample from a Chinese-based intrusion set that we at CrowdStrike call "Comment Panda" (the group is also known in the industry as "Comment Team" or "Comment Group"). This adversary was responsible for the &lt;a href="http://www.mcafee.com/us/resources/white-papers/wp-operation-shady-rat.pdf"&gt;Shady RAT&lt;/a&gt; intrusions that were revealed by our co-founder and CTO &lt;a href="http://www.crunchbase.com/person/dmitri-alperovitch" target="_blank"&gt;Dmitri Alperovitch&lt;/a&gt; last year, and is known to encode Command-and-Control (C2) commands inside of HTML comment tags. In this &lt;a href="http://www.crowdstrike.com/services.html"&gt;CrowdStrike Services&lt;/a&gt; scenario, a customer finds this malware sample on their network and needs it analyzed immediately, so CrowdStrike assigns two analysts to concurrently reverse engineer the sample. Both analysts disassemble the sample in IDA on their own computers. The first analyst is told to focus on functions related to auto-start-execution-points (ASEPs) and cryptography, while the second analyst agrees to focus on functions related to network communications.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;                        First Analyst's Workflow&lt;/h3&gt;&lt;br /&gt;The first analyst notices a function that writes an entry into &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows&lt;/span&gt;. He names the local stack variables, writes descriptive comments for the function, and&amp;nbsp;names the function &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;RegisterASEP()&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-lc0LKQXPZRw/T-E6RUKTgzI/AAAAAAAAAAw/f9bLPbazYY8/s1600/RegisterASEP.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-lc0LKQXPZRw/T-E6RUKTgzI/AAAAAAAAAAw/f9bLPbazYY8/s400/RegisterASEP.png" style="background-color: transparent;" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;He then finds what appears to be a numeric constant related to the generation of AES tables. Upon further investigation, the analyst determines that this malware in fact uses &lt;a href="http://www.opensource.apple.com/source/libsecurity_apple_csp/libsecurity_apple_csp-5/lib/rijndaelGladman.c"&gt;Gladman's implementation of the AES/Rijndael decryption algorithm&lt;/a&gt; with a fixed 128-bit decryption key. As above, the analyst annotates the AES functions:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-N0BlOBtu7Pk/T-JE4KdrXsI/AAAAAAAAACA/CEL33IJhtzs/s1600/AesDecrypt_new.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="237" src="http://3.bp.blogspot.com/-N0BlOBtu7Pk/T-JE4KdrXsI/AAAAAAAAACA/CEL33IJhtzs/s400/AesDecrypt_new.png" style="background-color: transparent;" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;He then uploads his work to the CrowdRE cloud by pressing Ctrl-F2 to load the CrowdRE plugin, and then pressing the "Upload annotations..." button. This brings up a dialog of all the functions in the IDB, allowing the analyst to choose which functions' annotations to upload to the CrowdRE cloud. The analyst chooses &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;gen_tabs()&lt;/span&gt;, &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;set_key(...)&lt;/span&gt;, &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;rEncrypt(...)&lt;/span&gt;, &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;rDecrypt(...)&lt;/span&gt;, &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;AESDecrypt(...)&lt;/span&gt;,&amp;nbsp;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;RegisterASEP()&lt;/span&gt;, and &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;ConstructAesKey(...)&lt;/span&gt;&amp;nbsp;(several of those function names based on the &lt;a href="http://www.opensource.apple.com/source/libsecurity_apple_csp/libsecurity_apple_csp-5/lib/rijndaelGladman.c"&gt;AES library code&lt;/a&gt; used by the malware), and presses "Upload annotations":&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Pe7qZfNK5_M/T-KEBqC75mI/AAAAAAAAACU/X-9RzXglW0I/s1600/UploadAnnotations_new.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="316" src="http://4.bp.blogspot.com/-Pe7qZfNK5_M/T-KEBqC75mI/AAAAAAAAACU/X-9RzXglW0I/s400/UploadAnnotations_new.png" style="background-color: transparent;" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;                        Second Analyst's Workflow&lt;/h3&gt;&lt;br /&gt;Meanwhile, the second analyst is busy at work. He spots two functions in the malware that call API functions such as &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa384247%28v=vs.85%29.aspx"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;HttpSendRequestA(...)&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa385103%28v=vs.85%29.aspx"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;InternetReadFile(...)&lt;/span&gt;&lt;/a&gt;. The analyst reviews the first function, names the local stack variables, makes some comments in the disassembly, and names the function&amp;nbsp;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;DownloadFileFromWebServer()&lt;/span&gt;:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-IsUbvVv5WpU/T-EtaieFu-I/AAAAAAAAAAY/JeXXd0-jInY/s1600/DownloadFileFromWebServer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="310" src="http://3.bp.blogspot.com/-IsUbvVv5WpU/T-EtaieFu-I/AAAAAAAAAAY/JeXXd0-jInY/s400/DownloadFileFromWebServer.png" style="background-color: transparent;" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;He then analyzes the second function and finds that it downloads a file, appears to call a function to decrypt or deobfuscate the downloaded file, and saves the output to disk. This decryption/deobfuscation function is highlighted in yellow below:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-GhGs9WyDY7s/T-FT0A7VHYI/AAAAAAAAABY/7PVOj7ePeqY/s1600/404343.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-GhGs9WyDY7s/T-FT0A7VHYI/AAAAAAAAABY/7PVOj7ePeqY/s640/404343.png" style="background-color: transparent;" width="526" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Given that the first analyst was tasked with analyzing cryptographic functions, the second analyst now queries the CrowdRE cloud to see if any annotations are available for &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;sub_404814(...)&lt;/span&gt;. He navigates to &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;sub_404814(...)&lt;/span&gt; in his IDB and presses Ctrl-F2 to bring up the CrowdRE Function History for that function:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-kqCqj1ZYzT0/T-KZz7fURkI/AAAAAAAAACg/BAvgGxt5V7I/s1600/sub_404814.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="317" src="http://1.bp.blogspot.com/-kqCqj1ZYzT0/T-KZz7fURkI/AAAAAAAAACg/BAvgGxt5V7I/s400/sub_404814.png" style="background-color: transparent;" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The Function History pane above shows that the first analyst has already analyzed &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;sub_404814(...)&amp;nbsp;&lt;/span&gt; and submitted annotations for it twice, with the most recent one showing that the input arguments to the function are actually pointers, not &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;int&lt;/span&gt;s. This Function History pane can be moved around like any other IDA window pane -- it can be docked into a chosen location in IDA, or dropped into IDA's window tab bar to create a new tab, or even popped out into its own floating window. Whenever the user navigates to a different function in IDA's disassembly view, the pane's content is automatically updated to show the Function History of the current function being analyzed.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;The second analyst can simply double-click on the annotation of his choice (or press "Import annotation...") to see the details of what was previously uploaded for this function:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-VP_sIUTCQog/T-PwUlnFuPI/AAAAAAAAADg/9IhclTrzOC4/s1600/DownloadAnnotations_new2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-VP_sIUTCQog/T-PwUlnFuPI/AAAAAAAAADg/9IhclTrzOC4/s400/DownloadAnnotations_new2.png" style="background-color: transparent;" width="336" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;In the Download Annotations window above, the second analyst can now choose what to import from the CrowdRE cloud, such as the function's name and prototype, comments, stack variable names and types, and register variable names and types. Notice that not only are the standard variable types available, but even the user-defined variable types are found in the cloud and can be imported into the second analyst's IDB. When the first analyst uploaded his annotations to the CrowdRE cloud, the plugin detected that he had created and was using user-defined &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;struct&lt;/span&gt;s such as &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;GAesKey&lt;/span&gt; and uploaded those &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;struct&lt;/span&gt; definitions to the cloud automatically during the annotation upload. In fact, the plugin recursively uploads &lt;i&gt;all&lt;/i&gt; dependencies of &lt;i&gt;every&lt;/i&gt; variable type used in an uploaded function.&lt;br /&gt;&lt;br /&gt;Once the desired options are checked and "Import" is pressed, the changes are applied to the second analyst's IDB:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-PuPZs8be-s8/T-P0CJPfqaI/AAAAAAAAADw/u7gZjYde1Uk/s1600/AesDecrypt_imported2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="317" src="http://4.bp.blogspot.com/-PuPZs8be-s8/T-P0CJPfqaI/AAAAAAAAADw/u7gZjYde1Uk/s400/AesDecrypt_imported2.png" style="background-color: transparent;" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;However, as can be seen above, there are several other functions remaining for analysis, so the second analyst decides to do a batch import of annotations for multiple functions in his IDB. He presses the "Batch import annotations..." button to see what's available from the CrowdRE cloud for all of the functions in his IDB:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-kEwKUyWArxE/T-KlbNXEqhI/AAAAAAAAADE/0QsjsuA6hOw/s1600/BatchImportAnnotations_new.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/-kEwKUyWArxE/T-KlbNXEqhI/AAAAAAAAADE/0QsjsuA6hOw/s400/BatchImportAnnotations_new.png" style="background-color: transparent;" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;When performing a batch import, the most recent annotations for each checked function are imported into the user's IDB. To cherry-pick specific annotations from a function's history of all uploaded annotations, the user can follow the previous steps above of navigating to a specific function in the IDB to see every uploaded annotation in that function's history in the Function History window pane.&lt;br /&gt;&lt;br /&gt;In this case, the second analyst sees that the most recent annotations are all from the first analyst, and since he's a trusted source, the second analyst simply imports all functions from the CrowdRE cloud that were previously analyzed and uploaded by the first analyst. (Note in the screenshot above that &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;AesDecrypt(...)&lt;/span&gt; is the current name of the function at &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;0x00404814&lt;/span&gt; since its annotations were imported in the steps above.)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-zLdUIfElemo/T-P5IURlytI/AAAAAAAAAD8/IAaQ_XcGn68/s1600/AesDecrypt_imported3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="317" src="http://2.bp.blogspot.com/-zLdUIfElemo/T-P5IURlytI/AAAAAAAAAD8/IAaQ_XcGn68/s400/AesDecrypt_imported3.png" style="background-color: transparent;" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Now the second analyst can continue reverse engineering this malware with the first analyst's function annotations&amp;nbsp;propagated&amp;nbsp;throughout the second analyst's IDB.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;                   Conclusion&lt;/h3&gt;&lt;br /&gt;Although still pre-beta, CrowdRE has some other great features as well, such as fuzzy-matching of functions (for matching functions across different variants of a given malware family for malware analysis, or matching functions between an older version and a newer version of the same DLL for vulnerability analysis)&amp;nbsp;and type conflict resolution.&lt;br /&gt;&lt;br /&gt;We're very excited about the new features that we're developing and looking to share with the community soon, such as support for Linux and Mac OS, social ratings of other users' annotations in the cloud (so you can see what other people think is reliable), access control lists (to allow only specific people to see your annotations), better fuzzy matching of functions, and much more!&lt;br /&gt;&lt;br /&gt;If you have any questions or feature requests, we'd love to hear from you! You can e-mail us at &lt;a href="mailto:crowdre@crowdstrike.com"&gt;crowdre@crowdstrike.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;P.S. The functions discussed above are already in the CrowdRE cloud, so if you come across a Comment Panda variant, you'll be able to use the CrowdRE IDA plugin to import the annotations above via fuzzy matching functionality!&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/880500245874692220/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/06/streamlining-reverse-engineering.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/880500245874692220" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/880500245874692220" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/flyIKj7ezT8/streamlining-reverse-engineering.html" title="Streamlining the Reverse Engineering Process with CrowdRE" /><author><name>Jason Geffner</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-lc0LKQXPZRw/T-E6RUKTgzI/AAAAAAAAAAw/f9bLPbazYY8/s72-c/RegisterASEP.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/06/streamlining-reverse-engineering.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-6910681142966774724</id><published>2012-06-22T12:28:00.000-04:00</published><updated>2012-06-22T12:29:44.289-04:00</updated><title type="text">REcon CrowdRE Presentation</title><content type="html">&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: small; font-weight: normal;"&gt;&lt;strong style="display: inline !important; margin-bottom: 4px; margin-left: 0px; margin-right: 0px; margin-top: 12px;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;strong style="display: inline !important; margin-bottom: 4px; margin-left: 0px; margin-right: 0px; margin-top: 12px;"&gt;&lt;a href="http://www.slideshare.net/CrowdStrike/be-social-use-crowdre" target="_blank" title="Be Social. Use CrowdRE."&gt;Be Social. Use CrowdRE.&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;&lt;div id="__ss_13412246" style="width: 510px;"&gt; &lt;iframe allowfullscreen="" frameborder="0" height="426" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/13412246" style="border-width: 1px 1px 0; border: 1px solid #CCC;" width="510"&gt;&lt;/iframe&gt; &lt;br /&gt;&lt;div style="padding: 5px 0 12px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/6910681142966774724/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/06/recon-crowdre-presentation-be-social.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/6910681142966774724" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/6910681142966774724" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/zz94UAAe_Ck/recon-crowdre-presentation-be-social.html" title="REcon CrowdRE Presentation" /><author><name>Sven Krasser</name><uri>http://www.blogger.com/profile/04671120150186972774</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/06/recon-crowdre-presentation-be-social.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-1845585172609775408</id><published>2012-06-15T10:19:00.002-04:00</published><updated>2012-06-16T12:38:25.013-04:00</updated><title type="text">Join the Crowd!</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-d8rG9PR9hSc/T9s7FzKRBqI/AAAAAAAAACk/yQYJsP59LO0/s1600/logo_dark_lrg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-d8rG9PR9hSc/T9s7FzKRBqI/AAAAAAAAACk/yQYJsP59LO0/s1600/logo_dark_lrg.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/-mPuEGNHGl3w/T9junY5A0oI/AAAAAAAAAAc/ssoRSwCPGK8/s1600/logo-small.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;       &lt;/div&gt;&lt;h3&gt;      &lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial; font-weight: 700;"&gt;by Georg Wicherski, Senior Security Researcher&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Reversing complex software quickly is challenging due to the lack of professional tools that support collaborative analysis. The CrowdRE project aims to fill this gap. Rather than using a live distribution of changes to all clients, which has proven to fail in the past, it leverages the architecture that is being used with success to organize source code repositories: a system that manages a history of changesets as commit messages. The central component is a cloud based server that keeps track of commits in a database.&amp;nbsp; Each commit covers one or more functions of an analyzed binary and contains information like annotations, comments, prototype, struct and enum definitions and the like. Clients can search the database for commits of functions by constructing a query of the analyzed binary's hash and the function offset.&amp;nbsp; Different concurring commits for a function are possible; in such cases it is up to the user to decide which commit is better.&lt;br /&gt;&lt;div class="p1"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;This basic concept is sufficient for a collaborative workflow on a per-function basis for a shared binary. One exciting feature is a similarity hashing scheme that considers the basic block boundaries of a function. Each function is mapped on a similarity preserving hash of fixed size. A database query for such a functions similarity hash returns a set of functions sorted by their similarity value, and the analyst can choose amongst them. This is extremely helpful when analyzing variants based on the same code or generations of a malware family, for example.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;/div&gt;Another interesting feature is the synchronization of used types. It is customary for reversers to document C++ class structures and vtables in IDA structs. This also greatly enhances the Hex-Rays decompiler output. CrowdRE will automatically identify all referenced types from a function (being it function parameter types or local variable types). Those types are then bundled with your commit. When annotations are pulled from the cloud, it will automatically also offer to pull the referenced types of that specific commit (with the definition at the time of the commit). If you already have a local type with a colliding name and its definition differs, CrowdRE will offer you various conflict resolution strategies.&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;The CrowdRE client is now freely available as an IDA Pro plugin. CrowdStrike maintains a central cloud for the community to share their commits amongst each other. It is our goal to help build a public database of known, well annotated functions to speed up the analysis of standard components, somewhat similar to what BinCrowd (which is offline nowadays) offered but with support for multiple co-existing commits for the same function. We will also support list-based commit visibility to give users control over who else can see and import their contributions.&amp;nbsp; In the coming days we will release a series of how-to blog posts and videos to explain different use cases of CrowdRE.&amp;nbsp; CrowdRE continues to be used heavily by the CrowdStrike Intelligence and Services Teams and we look forward to sharing out our commits to help the community reverse as a crowd!&amp;nbsp; Please contact &lt;a href="mailto:CrowdRE@crowdstrike.com"&gt;CrowdRE@crowdstrike.com&lt;/a&gt; for more information or to provide us feedback.&amp;nbsp; This is an alpha version and we'd love your comments on how we can improve upon it!&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;We originally developed CrowdRE for internal use but decided to release it for free when we realized that the broader security community can benefit from it as well.  In addition, we think it's important to encourage information sharing  and collaboration among the security industry. Our adversaries are  collaborating, shouldn't the security community do the same?&lt;/div&gt;CrowdRE is now available at&amp;nbsp;&lt;a href="http://crowdre.crowdstrike.com/"&gt;crowd.re&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ed3BoIX-0O4/T9tcGs2hWDI/AAAAAAAAAJU/77PDcwQGL90/s1600/crowdre.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-ed3BoIX-0O4/T9tcGs2hWDI/AAAAAAAAAJU/77PDcwQGL90/s320/crowdre.png" width="311" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/1845585172609775408/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/06/join-crowd.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/1845585172609775408" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/1845585172609775408" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/gkmINQsxHP0/join-crowd.html" title="Join the Crowd!" /><author><name>Georg Wicherski</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-8_iN3AqRDAM/T4yFIk5EVJI/AAAAAAAAABE/XnlCbAOwp6g/s1600/oxff.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-d8rG9PR9hSc/T9s7FzKRBqI/AAAAAAAAACk/yQYJsP59LO0/s72-c/logo_dark_lrg.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/06/join-crowd.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-1230304282220103984</id><published>2012-06-12T07:19:00.002-04:00</published><updated>2012-06-20T01:51:36.079-04:00</updated><title type="text">CrowdStrike Intelligence -  Adversary-based Approach</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;h3 style="text-align: justify;"&gt;            &lt;b&gt;&lt;span style="font-family: Arial;"&gt;by Adam Meyers, Director of Intelligence.&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/h3&gt;&lt;h3 style="text-align: justify;"&gt;     &lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;&lt;h3 style="text-align: justify;"&gt; &lt;b&gt;Treating the problem, not the symptoms&lt;/b&gt;&lt;/h3&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Having spent the better part of the last 10 years dealing with various cyber adversaries, it is frustrating to see so many organizations focus on the symptoms of what at CrowdStrike we like to call the adversary problem. &amp;nbsp;An adversary is so much more than the most recent spearphish that drops a Remote Access Tool (RAT) such as Poison Ivy, or a new dynamic DNS hostname that is being used for Command and Control (C2). &amp;nbsp;The adversary is a culmination of all his tools used for exploitation and post-exploitation, the techniques used to laterally propagate across the network, and the procedures that he runs through once he has a firm foothold on the enterprise. &amp;nbsp;These components individually treated are the proverbial whack-a-mole that has frustrated so many of us in the cyber security space for years. &amp;nbsp;&lt;i&gt;&lt;b&gt;Whack&lt;/b&gt;&lt;/i&gt; - mitigate a malware instance on a workstation on one side of the network. &amp;nbsp;&lt;i&gt;&lt;b&gt;Whack&lt;/b&gt;&lt;/i&gt; - block a C2 IP or domain at the gateway. &amp;nbsp;&lt;i&gt;&lt;b&gt;Whack&lt;/b&gt;&lt;/i&gt; - change all the users on a domains passwords because the adversary compromised a domain controller. &amp;nbsp;You can play this game all day, and for years we have. &amp;nbsp;This is a war - and taking a step back to view the battlefield the way a modern commander would engage an enemy can give us some interesting perspective. &amp;nbsp;&lt;/div&gt;&lt;h3 style="text-align: justify;"&gt;            &lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;&lt;h3 style="text-align: justify;"&gt; &lt;b&gt;Intelligence Enhanced Security&lt;/b&gt;&lt;/h3&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Breaking the vicious cycle of Whack-a-Mole requires changing the approach we use in combating adversaries - we must train ourselves to think proactively. &amp;nbsp;Most organizations are focused on playing defense - and defense by nature tends to be a response driven approach. &amp;nbsp;Something bad happens and we do something about it - &lt;i&gt;&lt;b&gt;if&lt;/b&gt;&lt;/i&gt; we are there in time. &amp;nbsp;Proactively looking at security requires intelligence - using intelligence to understand not only where the adversary is today but where he has been and what his objectives are. &amp;nbsp;Understanding the adversaries intent will allow us to determine where he wants to be, and we can use this information in creative ways. &amp;nbsp;To this end CrowdStrike focuses on&amp;nbsp;incorporating&amp;nbsp;intelligence collection and analysis into every aspect of our work, the more intelligence we have, the better we are positioned to defend our clients today and those we will have tomorrow.&lt;/div&gt;&lt;h3 style="text-align: justify;"&gt;            &lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;&lt;h3 style="text-align: justify;"&gt; &lt;b&gt;Global View&lt;/b&gt;&lt;/h3&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Today's military commanders can step as far back as outer space, looking at the battlefield from the aerial or satellite based perspective to get a better understanding of their situation. &amp;nbsp;The fog of war can confuse the situation on the ground in the cyber domain as in any other. &amp;nbsp;Using the global intelligence team, CrowdStrike Services teams have the ability to utilize a view of the battlefield from 50,000 feet - this provides them with intelligence relative to other customers and incidents&amp;nbsp;occurring&amp;nbsp;across the globe. &amp;nbsp;During proactive defense this intelligence allows various CrowdStrike service teams to coordinate across sectors and customers to take impactful actions to disrupt the adversaries ability to observe, orient, decide, and act.&lt;/div&gt;&lt;h3 style="text-align: justify;"&gt;            &lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;&lt;h3 style="text-align: justify;"&gt; &lt;b&gt;Adversary&amp;nbsp;Differentiation&lt;/b&gt;&lt;/h3&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;In terms of the adversary being the sum of all of the malware, C2 infrastructure, tools, and techniques the CrowdStrike Intelligence team spends a lot of time focusing in on and differentiating the adversaries we see. &amp;nbsp;We categorize the adversary by a term pretty commonly used in intelligence circles - Tactics, Techniques, and Procedures (TTPs). &amp;nbsp;During extensive investigation and reverse engineering the CrowdStrike team focuses in on a very unique set of attributes that allow us an extremely granular view of an adversary. &amp;nbsp;Minute differences in code flow and other proprietary indicators provide the team a wealth of intelligence to group into TTP's. &amp;nbsp;These TTP's are&amp;nbsp;additive&amp;nbsp;to the intelligence provided to the CrowdStrike Services teams in the field allowing them an&amp;nbsp;unprecedented&amp;nbsp;ability to conduct proactive incident response.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In the coming months I look forward to unveiling some of the ongoing operations we are running right now to, as my colleague Shawn Henry likes to say, &lt;a href="http://blog.crowdstrike.com/2012/06/crowdstrike-services-bolsters-services.html" target="_blank"&gt;"bring pain to the adversary."&lt;/a&gt; &amp;nbsp;We have developed some innovative techniques to level the playing field and make the adversary earn every bit, nibble, and if he's lucky byte. &amp;nbsp;It is a supreme honor to lead Intelligence, one of the three gems along with Technology (lead by Dmitri Alperovitch) and Services (lead by Shawn Henry) in the CrowdStrike "Triple Crown". &amp;nbsp;Together the CrowdStrike team goes into battle every day against&amp;nbsp;unremitting&amp;nbsp;and unflinching adversaries who will stop at nothing to compromise the informational crown jewels of businesses, governments, and those who put their personal safety on the line to speak out against inhumane regimes. &amp;nbsp;If you are motivated to do good and think you have what it takes to join the CrowdStrike Intelligence Team, we would love to hear from you at mission@crowdstrike.com.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;h3 style="text-align: justify;"&gt;        &lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;&lt;h3 style="text-align: justify;"&gt; &lt;b&gt;Intelligence as a Service&lt;/b&gt;&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;The CrowdStrike Intelligence Team generates in-depth technical analysis that provide organizations with unprecedented insight of the adversary's TTP's. &amp;nbsp;Our intelligence reports are geared towards all levels of an organization from the executive who needs to understand the threat, to the front line technician struggling to fight through an adversary attack against the enterprise. &amp;nbsp; Our existing customers who are already part of the CrowdStrike mission and have access to our detailed intelligence reports reap immediate tactical and strategic benefits from the level of depth and perspective we provide regarding the adversary. &amp;nbsp;For inquires regarding subscribing to the CrowdStrike Intelligence Service, please contact&amp;nbsp;&lt;a href="mailto:intelligence@crowdstrike.com"&gt;intelligence@crowdstrike.com&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;If you are interested in more information about CrowdStrike's Intelligence Team, please watch the Q&amp;amp;A video with me seen below&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/cKBI274JGw0/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/cKBI274JGw0&amp;fs=1&amp;source=uds" /&gt;   &lt;param name="bgcolor" value="#FFFFFF" /&gt;   &lt;param name="allowFullScreen" value="true" /&gt;   &lt;embed width="320" height="266"  src="http://www.youtube.com/v/cKBI274JGw0&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/1230304282220103984/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/06/crowdstrike-intelligence-adversary.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/1230304282220103984" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/1230304282220103984" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/ieO0yo9r_d4/crowdstrike-intelligence-adversary.html" title="CrowdStrike Intelligence -  Adversary-based Approach" /><author><name>Adam Meyers</name><uri>http://www.blogger.com/profile/04581009553578077342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/06/crowdstrike-intelligence-adversary.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-6048706308407668827</id><published>2012-06-08T07:40:00.002-04:00</published><updated>2012-06-09T10:13:17.415-04:00</updated><title type="text">CrowdStrike Services Bolsters Services Leadership With The Addition of Wendi Rafferty, VP of Services</title><content type="html">&lt;span id="internal-source-marker_0.323473949367742" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: Arial;"&gt;by Shawn Henry, President CrowdStrike Services, Inc. &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;It’s been an exciting couple of months!&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The heart and breadth of any organization is the quality of its leadership, and I am delighted to announce we recently added an icon to our executive team.  Wendi Rafferty, who was formerly responsible for managing Mandiant’s Western Region operations, has joined CrowdStrike as Vice President of the Services Division and will be reporting directly to me.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Wendi is a technical leader with over ten years of diverse experience in Information Security, Incident Response, and Network Intrusion Investigations.  She also served active duty in the United States Air Force as a Special Agent performing computer crime investigations for the Air Force Office of Special Investigations.  People with those credentials make us infinitely better, and for that I am grateful.&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;What’s happened since I started?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;On April 2, 2012, I started my career at CrowdStrike after 24 years with the FBI.   The decision to move here wasn’t something I took lightly.  I thought about it for several months before I finally pulled the trigger.  After all, it was a start-up, with a few dozen employees, a handful of engagements, and a $26 million dollar investment.  I was a top-level executive in an organization with 36,000 people, an $8 Billion dollar annual budget, and one of the world’s most recognized brands.  What could possibly happen at CrowdStrike everyday to keep me interested?  Surely I’d be bored to tears and maybe I should have chosen one of those larger firms post my tenure at the FBI that was promising me top-level control along with some excitement?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Well, I’ve been here eight weeks now, and much of it has been a blur.  There have been a lot of strategy sessions, conversations, and meetings with Fortune 500 companies, a Board of Directors' meeting, coordination with international partners, domestic and international travel, and a ton of media coverage.  We’ve not only talked about what we’re doing, though, we’ve actually executed on it.  Be careful what you wish for, as it has been one wild ride after another!&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Reinforcing the mission and a sense of pride - I’m still in the fight!&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;While CrowdStrike is different from the FBI in many ways, I still find so many similarities.  Everyday, for example, we’re engaged against our adversary, helping those who are facing the difficult challenge of protecting their network.  It is the part of the FBI mission that I enjoyed the best and was most concerned about losing, but I continue to live it every single day. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Take last night, for example, when I was talking to three of our consultants, each in a different part of the country.  One was analyzing a victim’s network real-time; another was forensically dissecting one of their hard-drives, and a third was tearing through the malware.  Together they identified adversary TTPs, each building on intelligence from the other two.  Together they strategized on the best method to dismember the adversary’s infrastructure, to raise the cost to the enemy, and to harden the victim’s network. &lt;/div&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;The team is only as good as its players - and we have some athletes!&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The sense of confidence I had while listening to this team was exceptional, they’re extremely talented, and have many years of experience.  They are indicative of the tremendous expertise and ability CrowdStrike has attracted in just the past two months.  Just what is it we’ve attracted?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Resume after resume of people interested in joining our mission continue to stream in on a daily basis.  There has been an outpouring of incredibly skilled incident responders, malware reverse engineers, cyber analysts, and network engineers.  Many come with military, government, and Fortune 500 experience.  Many of the interested are amazingly technical and specialized applicants, others not so much. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The emergency room nurse who wanted to join our team heartened me.  She had no technical skills, but she was motivated by our vision of protecting the innocent, and wanted to see if there was a role for her to help.  Then there was the US government contractor stationed in Afghanistan who wanted to come to CrowdStrike to support our mission in anyway possible and help bring the pain to the adversary.  Hey, maybe we do need that emergency room nurse after all?!   &lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Fortunately, the technological resumes far outnumber the others.  But they all seem to have one thing in common and that is the remarkable desire to contribute to the CrowdStrike mission, protecting the resiliency of computer networks, and using offensive methods to turn the tables on our opponents.   All of that passion inspires me, and reinforces the decision I made just a couple of months ago.&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;And so it continues - what’s next?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Probably the best part of the journey thus far has been watching this institution grow.  Some days slowly, other days fast, but always-moving forward.  I get to see the innovation, listen to the strategy, participate in the execution, and I like that - a lot!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Our enemies continue their vicious assault, and we stand shoulder-to-shoulder with the victims, providing resiliency and confidence.  I see the CrowdStrike crescendo rising, a steep ascent, and I get to be there at another front row seat to a slice of history.  Wow, I can only imagine what the next few months hold?!  &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you are up for the challenge of bringing pain to the adversary, please send your resumes to &lt;a href="mailto:mission@crowdstrike.com"&gt;mission@crowdstrike.com&lt;/a&gt;. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you are interested in more information about CrowdStrike, please watch the Q&amp;amp;A video with me seen below&lt;/div&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://2.gvt0.com/vi/iPVBxJgfqOY/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/iPVBxJgfqOY&amp;fs=1&amp;source=uds" /&gt;          &lt;param name="bgcolor" value="#FFFFFF" /&gt;          &lt;param name="allowFullScreen" value="true" /&gt;          &lt;embed width="320" height="266"  src="http://www.youtube.com/v/iPVBxJgfqOY&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/6048706308407668827/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/06/crowdstrike-services-bolsters-services.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/6048706308407668827" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/6048706308407668827" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/_56PXmAWWS4/crowdstrike-services-bolsters-services.html" title="CrowdStrike Services Bolsters Services Leadership With The Addition of Wendi Rafferty, VP of Services" /><author><name>Dmitri Alperovitch</name><uri>http://www.blogger.com/profile/04664482520090342173</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-2jXCUCGBKo4/T2NtqkSssSI/AAAAAAAAAAQ/yVbc5mSXZo8/s220/dmitri-alperovitch.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/06/crowdstrike-services-bolsters-services.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-6759012608789010413</id><published>2012-05-02T16:31:00.000-04:00</published><updated>2012-05-02T16:31:11.310-04:00</updated><title type="text">ARMv7/Thumb2 Inline Code Hooking</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;h3&gt;   &lt;span style="font-size: small;"&gt;&lt;span style="font-family: Arial; font-weight: 700;"&gt;by Georg Wicherski, Senior Security Researcher&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;At &lt;a href="http://2012.hackitoergosum.org/"&gt;Hackito Ergo Sum 2012&lt;/a&gt;, I presented about &lt;a href="http://download.crowdstrike.com/papers/hes-exploiting-a-coalmine.pdf"&gt;Exploitation of the RenderArena allocator in WebKit (PDF)&lt;/a&gt;&amp;nbsp;with a focus on the Android Mobile platform. Since one of the techniques for hijacking a &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;vtable&lt;/span&gt; (and subsequently achieve code execution) requires careful heap massaging, we developed an internal tool to hook the various heap allocation functions inline and log all allocations and frees in memory with as minimal overhead as possbile. Since the gist of the talk was the reliable exploitation of this specific bug class, I did not go to deep on how we built this tool. Since some people asked about its internals, the basic ideas are presented here.&lt;br /&gt;&lt;br /&gt;The general idea was to log all heap (de-)allocations while maintaining allocation order in a multi-threaded environment (such as the Android Browser) by introducing as little per allocation overhead as possible. Since using a debugger to set a breakpoint on the respective heap functions does incur too much such overhead, I decided for a different approach:&lt;br /&gt;&lt;br /&gt;To log every allocation in a timely manner, each such function is hot-patched at runtime with a non-intrusive call to a helper function that logs information about the caller to a memory buffer. Only when this memory buffer is full, it escapes to the analysis software for flushing the buffer over the network to an analysts computer. This method adds so little overhead to memory allocation that the program under analysis remains interactively usable, i.e. we can still use the Browser normally. Of course this approach is extensible to hot-patching other functions besides the normal system heap allocator and, in fact, for the talk we also instrumented a special Webkit sub-allocator (please refer to the &lt;a href="http://download.crowdstrike.com/papers/hes-exploiting-a-coalmine.pdf"&gt;slides&lt;/a&gt; for more information).&lt;br /&gt;&lt;br /&gt;The code to log information is generic in the sense that we can sample one arbitrary register at any point to be hooked. This is usually sufficient for capturing function parameters and return values at the beginning / end of certain functions or arbitrary. If you know a little bit more of the function you are looking at, you can even sample arbitrary values (because ARM is a RISC architecture, which requires any value to be processed to be loaded into a register at some point). The native code to log a single register sample collected looks like this:&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-8kNAbGpOQkk/T41n1huzLdI/AAAAAAAAAB0/zI-mvjVw9us/s1600/hesblog-1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="343" src="http://2.bp.blogspot.com/-8kNAbGpOQkk/T41n1huzLdI/AAAAAAAAAB0/zI-mvjVw9us/s400/hesblog-1.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Native Code to Log a Single Sample&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div&gt;Besides logging the desired register value (passed in &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;R0&lt;/span&gt;) and the calling function, it logs a user defined tag (that is useful for distinguishing multiple hooked locations) and the current thread id (obtained from the TLS, which in turn is located by a call to a magic location defined by the EABI). If your ARM assembly is a little bit rusty, here is IDA's correspondending decompilate (note that &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;ldrex&lt;/span&gt; and &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;strex&lt;/span&gt; denote race-condition-safe memory loads and stores respectively — the &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;strex&lt;/span&gt; instruction will fail if the memory location has been accessed since the correspondending &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;ldrex&lt;/span&gt;, hence the surrounding loop):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-C0dteMThJUg/T41oFhOLjCI/AAAAAAAAACU/6AIOacUEiu4/s1600/hesblog-2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="212" src="http://4.bp.blogspot.com/-C0dteMThJUg/T41oFhOLjCI/AAAAAAAAACU/6AIOacUEiu4/s400/hesblog-2.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Decompilation of Log Code&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Note that the original code was done in hand-written assembly, but with sufficient manual added type and pseudo-calling-convention information added, IDA is doing a good job of reconstructing equivalent C code.&lt;br /&gt;&lt;br /&gt;Unfortunately for us, there typically is no slack space in real-world code that would allow us to insert simple branches to our logging functions. Therefore for inline hooking, typically the code at the desired location to be probed is overwritten with a branch to a trampoline. This trampoline then needs to compensate for the overwritten instruction, so it usually consists of:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;A call to the desired hook (the logging function in our case) with potentially required state saving and restoring to preserve the expected state of the original code&lt;/li&gt;&lt;li&gt;Semantically equivalent code to the code overwritten, often just a potentially fixed up copy of the original instructions&lt;/li&gt;&lt;li&gt;A branch to the code following the overwritten instructions to continue the original code&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;An example of two such trampolines that have been generated is depicted below. All this code is generated at runtime by disassembling the original code, determining necessary fix-up steps and of course generating code to sample the desired register by copying it into &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;R0&lt;/span&gt; for the log function. The instructions in cyan are the original instrucions copied over.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;These trampolines highlight some of the caveats one encounters when dealing with hooking RISC code. The first trampoline contains only arithmetic instructions that do not require any modification and were just copied over as they were (based on a simple length disassembly, as thumb2 supports mixing of 16bit and 32bit instruction lengths). However the branch to the original code is so &lt;i&gt;far&lt;/i&gt; that it cannot be performed by a regular jump but must be done by a full 32bit load into the program counter.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The second trampoline highlights some&amp;nbsp;necessary&amp;nbsp;fix-ups to copied instructions: because the constant loads it performs are relative to the &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;PC&lt;/span&gt; register and again too far away to be addressed by these instructions, the values have been copied to the new trampoline and the instructions have been adjusted to reference these copies.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-JukRHIF4XNI/T41n4SavOZI/AAAAAAAAACE/u7MndMQsf_I/s1600/hesblog-3.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-JukRHIF4XNI/T41n4SavOZI/AAAAAAAAACE/u7MndMQsf_I/s400/hesblog-3.png" width="373" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Example JIT'ed Probe Trampolines&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The code for generating these trampolines grew a little more complex than anticipated to cover the corner-cases encountered. It now consists of three passes:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Disassemble the original to-be-overwritten code and look for special instructions (thankfully the Thumb2 instruction set is very regular)&lt;/li&gt;&lt;li&gt;Length Reassembly of original code to calculate relative addresses and offsets&lt;/li&gt;&lt;li&gt;Actual reassembly of original code, fixing relative references and adding branches to original code&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;The decompilation of this code then looks very trivial, as the semantics of that code are indeed simple:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Q1d9CbOHenM/T41n4qnOKmI/AAAAAAAAACI/27lBV3N0OBI/s1600/hesblog-4.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="66" src="http://3.bp.blogspot.com/-Q1d9CbOHenM/T41n4qnOKmI/AAAAAAAAACI/27lBV3N0OBI/s400/hesblog-4.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Decompilation of Example Trampoline&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;This tool has&amp;nbsp;proven&amp;nbsp;extremely valuable in prototyping attacks by whitehat researchers as we used existing visualization tools to render a view of the heap at any given point in time. It can however be leveraged for benign purposes as well, e.g. some Windows malware analysis sandboxes are based on the same inline hooking approach on the x86 architecture. Although at first looking simple when designed on paper, this project has been difficult to implement due to all the corner cases encountered.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/6759012608789010413/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/05/armv7thumb2-inline-code-hooking.html#comment-form" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/6759012608789010413" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/6759012608789010413" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/QDJ8_QNuX0w/armv7thumb2-inline-code-hooking.html" title="ARMv7/Thumb2 Inline Code Hooking" /><author><name>Georg Wicherski</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/-8_iN3AqRDAM/T4yFIk5EVJI/AAAAAAAAABE/XnlCbAOwp6g/s1600/oxff.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-8kNAbGpOQkk/T41n1huzLdI/AAAAAAAAAB0/zI-mvjVw9us/s72-c/hesblog-1.png" height="72" width="72" /><thr:total>10</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/05/armv7thumb2-inline-code-hooking.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-2570539038056544514</id><published>2012-04-18T00:37:00.000-04:00</published><updated>2012-04-18T06:34:21.308-04:00</updated><title type="text">CrowdStrike Services: My New Mission</title><content type="html">&lt;div class="MsoNormal" style="margin-bottom: .25in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;"&gt;&lt;b&gt;&lt;span style="font-family: Arial;"&gt;by Shawn Henry, President CrowdStrike Services, Inc.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0.25in; text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 14pt;"&gt;The world has changed...and I've had a front row seat.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0.25in; text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;I started with the FBI 24 years ago. It was a different time and a different place; things seemed much simpler then. Whether we were investigating street gangs, organized crime groups, or foreign spies, we often knew who the bad guys were. Identifying them was the easy part; the difficulty was determining exactly what they were doing and how they were doing it. What a difference a couple of decades makes.&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;Times have dramatically changed. Technology has made the world a much smaller place. Twenty years ago when I investigated a bank robbery the pool of suspects was limited to the number of people in the general vicinity of the bank at the time it was robbed. Logical, right? If someone took the money, they had to BE THERE! Now, not so much. Banks are robbed electronically everyday, and the suspect pool is a little larger, limited only by the number of people on planet Earth with a computing device and an Internet connection. According to &lt;a href="http://www.internetworldstats.com/stats.htm"&gt;&lt;span class="Apple-style-span" style="color: orange;"&gt;internetworldstats&lt;/span&gt;&lt;/a&gt;, that number is close to 2.3 billion. So much for "canvassing the neighborhood."&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0.25in; text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 14pt;"&gt;So now what?&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0.25in; text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;Today's most successful thieves don't carry guns, and they don't slip through basement windows in the middle of the night with a satchel. The successful thieves of today are running rampant through your computer networks, unfettered, every single day. They watch what you do, and they know what you know. Your "secrets" are not. If all they do is steal your most sensitive information, consider yourself lucky. We used to say a burglar who came into your home while you were there was one step away from being a murderer; likewise, today's cyber thieves are just one step away from being saboteurs. Their presence on and access within your networks often means they've got total control...the ability to alter, delete, or even destroy your data and your communications network.&amp;nbsp;&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;Sometimes they make a lot of noise, oftentimes not. Regardless, they are there....or were....or will be shortly. They work for foreign governments, criminal syndicates, and....coming soon to a network near you....terrorist organizations. As their tactics have changed over the years, so must ours.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0.25in; text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 14pt;"&gt;Why the move to the private sector? &amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;I was part of the US government cyber strategy and operations for a long time. There are brilliant minds and dedicated people serving society with passion and commitment to securing our digital future. I was proud to be associated with them, and consider many my friends. Too often, though, WHAT we do is not able to keep up with what we MUST do. You can only be punched in the face so many times before you fall to your knees.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;So I retire from the FBI and I'm excited to move to the next phase of my life with &lt;a href="http://www.crowdstrike.com/"&gt;&lt;span class="Apple-style-span" style="color: orange;"&gt;CrowdStrike&lt;/span&gt;&lt;/a&gt;. Not due to animosity toward any government agency and not because I don't have the will to fight any longer. On the contrary, this fight is my passion. I am dedicated to the mission. I have always said the private sector needs to be a bigger part of the solution, and with CrowdStrike I'll have more flexibility and opportunity to make a difference from this side of the fence.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0.25in; text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 14pt;"&gt;CrowdStrike&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;Why CrowdStrike? Because they BELIEVE in the mission; their idea of protecting the innocent through relentless identification and pursuit of the enemy runs parallel to what I've done for the past 24 years. Smart people with energy and enthusiasm, a stable of subject-matter technical experts, and leadership in the C-suite with a strategic vision. I can continue to hunt the adversary, though from a new perspective and with different mates at my side. That's an opportunity I wasn't certain I'd have post-Bureau...but I think I've found it. I get to work with "meat-eaters" again, not vegetarians! (Not that there's anything wrong with that)&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 0.25in; text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 14pt;"&gt;The way forward&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;Five years ago we set up the National Cyber Investigative Joint Task Force (NCIJTF) because I felt we were not effectively sharing information across the government on the cyber threat. I saw the need to bring together the capabilities, responsibilities, and authorities of multiple US government agencies. The main purpose was to share intelligence, in an expeditious way that was actionable and would provide an advantage against our adversaries; all the agency-partners had a common mission and focus, so it worked. I see a future where the adoption of that type of model in the private sector will be a new innovation in cybersecurity, and one of my many personal missions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;While we consider these types of cyber intelligence models interesting, today I am focused on building out a world-class services organization dedicated to helping enterprises respond to the incidents that are beating them down daily by enabling them to be proactive, predictive, and preventative in nature. This new offering is the last gem in CrowdStrike’s “Triple Crown” of &lt;b&gt;Technology, Intelligence, &lt;/b&gt;and now &lt;b&gt;Services &lt;/b&gt;that George Kurtz mentioned in his latest &lt;a href="http://kurtz.blog.crowdstrike.com/2012/04/crowdstrike-launches-crowdstrike.html"&gt;&lt;span class="Apple-style-span" style="color: orange;"&gt;blog&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #2238c8;"&gt; &lt;/span&gt;post. Our goals for the services organization at the outset are simple; to provide our customers with a sense of trust when they are at their most vulnerable, and to instill in them the confidence that their most sensitive information will be protected to the fullest extent possible. Our initial offerings are focused on Incident Response Services, Enterprise Adversary &amp;amp; Malware Assessment, and Response and Recovery, with more to come.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: Arial;"&gt;CrowdStrike provides me the opportunity to continue this fight, from "the other side", using intelligence and technology to get in FRONT of the problem rather than merely reacting to it. I’m looking for sophisticated cyber warriors to join me. If you’ve got the skill, the energy, and the passion for a compelling and highly important mission, contact us at &lt;a href="mailto:mission@crowdstrike.com"&gt;&lt;span class="Apple-style-span" style="color: orange;"&gt;mission@crowdstrike.com&lt;/span&gt;&lt;/a&gt;. The stakes are high...our economic and national security is at stake...and I'm proud to say, "I'm all in!"&lt;/span&gt;&lt;/div&gt;&lt;div class="column"&gt;&lt;div class="column"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/4JMgbMtpJjA" width="560"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: ArialMT; font-size: 12pt;"&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/2570539038056544514/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/04/crowdstrike-services-my-new-mission.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/2570539038056544514" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/2570539038056544514" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/uC3a466fE38/crowdstrike-services-my-new-mission.html" title="CrowdStrike Services: My New Mission" /><author><name>Dmitri Alperovitch</name><uri>http://www.blogger.com/profile/04664482520090342173</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://4.bp.blogspot.com/-2jXCUCGBKo4/T2NtqkSssSI/AAAAAAAAAAQ/yVbc5mSXZo8/s220/dmitri-alperovitch.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/4JMgbMtpJjA/default.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/04/crowdstrike-services-my-new-mission.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-847769262952011526</id><published>2012-03-29T12:04:00.002-04:00</published><updated>2012-04-17T21:09:47.707-04:00</updated><title type="text">Kelihos.C: Same Code, New Botnet</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;&lt;div wrap=""&gt;&lt;h3&gt; &lt;span style="font-size: small;"&gt;&lt;span style="font-family: 'Arial'; font-weight: 700;"&gt;by Tillmann Werner, Senior Security Researcher&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;Last week, CrowdStrike took control over the Kelihos.B botnet in a &lt;a href="http://blog.crowdstrike.com/2012/03/p2p-botnet-kelihosb-with-100000-nodes.html" target="_blank"&gt;joint effort&lt;/a&gt; with other security experts. The infected machines are since trapped on our sinkhole and the botnet cannot be commanded anymore.&lt;/div&gt;&lt;div wrap=""&gt;&lt;br /&gt;&lt;/div&gt;&lt;div wrap=""&gt;In a &lt;a href="http://blog.seculert.com/2012/03/kelihosb-is-still-live-and-social.html" target="_blank"&gt;blog post&lt;/a&gt; that was published earlier today, IT security firm Seculert claims that the Kelihos.B botnet is still under control of the criminal who created it and that it is even possible for these criminals to regain access to the sinkholed bots.&lt;/div&gt;&lt;div wrap=""&gt;&lt;br /&gt;&lt;/div&gt;&lt;div wrap=""&gt;CrowdStrike researchers continue to monitor the comand-and-control infrastructure, which is partially live again after having been down for some days, and confirmed that the servers do not speak the Kelihos.B protocol anymore. We are aware of a new version of the bot, Kelihos.C, that has been released shortly after we started the sinkholing operation, and which is spreading via social networks. This new version introduces slight changes to the message format used to propagate peer information and commands. We believe that the modifications are so minimal that the new version is still likely to get detected by anti-virus software with signatures for Kelihos.B. However, as a result of these changes, the new botnet is incompatible to and thus completely separate from the Kelihos.B version sinkholed by us.&lt;/div&gt;&lt;div wrap=""&gt;&lt;br /&gt;&lt;/div&gt;&lt;div wrap=""&gt;Since both Kelihos.B and Kelihos.C are dropped by a third-party installer, it is possible that the&amp;nbsp;capability&amp;nbsp;to update infected machines via this dropper might exist, however thorough analysis of the dropper revealed no way to remotely command it. &lt;b&gt;Bottom line: There is no known means for the attacker to regain control over the sinkholed Kelihos.B machines at this point.&lt;/b&gt;&lt;/div&gt;&lt;div wrap=""&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-0ti2UA50uSU/T3R5u81oMiI/AAAAAAAAAC8/SURJ4lMgoiI/s1600/domain.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-0ti2UA50uSU/T3R5u81oMiI/AAAAAAAAAC8/SURJ4lMgoiI/s320/domain.png" width="312" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;" wrap=""&gt;Figure 1: Fall-back domain in Kelihos.C&lt;/div&gt;&lt;div wrap=""&gt;&lt;br /&gt;&lt;/div&gt;&lt;div wrap=""&gt;Additionally it is interesting to note that all of the fast-flux domains used by Kelihos.B are no longer maintained and do not resolve. The new botnet (Kelihos.C) has two fast-flux domains as fall-back handles associated with it, namely &lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;coyluhbehim.com&lt;/span&gt; and &lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;tiffavo.com&amp;nbsp;&lt;/span&gt;blocking these domains at the perimeter is advisable.&lt;span style="font-family: 'Courier New',Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/847769262952011526/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/03/kelihosc-same-code-new-botnet.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/847769262952011526" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/847769262952011526" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/YwUBSnjY4O8/kelihosc-same-code-new-botnet.html" title="Kelihos.C: Same Code, New Botnet" /><author><name>Tillmann Werner</name><uri>http://www.blogger.com/profile/11542677705187345973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-0ti2UA50uSU/T3R5u81oMiI/AAAAAAAAAC8/SURJ4lMgoiI/s72-c/domain.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/03/kelihosc-same-code-new-botnet.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-7826974083273115346</id><published>2012-03-28T09:00:00.000-04:00</published><updated>2012-03-28T11:35:06.523-04:00</updated><title type="text">P2P Botnet Kelihos.B with 100.000 Nodes Sinkholed</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;This past Wednesday, &lt;a href="http://www.crowdstrike.com/"&gt;CrowdStrike&lt;/a&gt; has teamed up with security experts from &lt;a href="http://www.secureworks.com/" target="_blank"&gt;Dell SecureWorks&lt;/a&gt;, the &lt;a href="http://honeynet.org/" target="_blank"&gt;Honeynet Project&lt;/a&gt; and &lt;a href="http://www.kaspersky.com/" target="_blank"&gt;Kaspersky&lt;/a&gt; to take out a peer-to-peer botnet which we believe is the newest offspring of a family that has been around since 2007: Kelihos.B, a successor of Kelihos, &lt;a href="http://en.wikipedia.org/wiki/Waledac_botnet" target="_blank"&gt;Waledac&lt;/a&gt; and the &lt;a href="http://en.wikipedia.org/wiki/Storm_botnet" target="_blank"&gt;Storm Worm&lt;/a&gt;. Traditionally, the botnets in this family are known for spamming, but the newest version is also capable of stealing bitcoin wallets from infected computers. There is an infographic at the bottom of this post that contains the most important facts and numbers at one glance.&lt;br /&gt;&lt;br /&gt;Just like its brothers, Kelihos.B relies on a self-organizing, dynamic  peer-to-peer topology to make its infrastructure more resilient against  takedown attempts. It further uses a distributed layer of command-and-control servers with hosts registered in countries like Sweden, Russia, and Ukraine that are in turn controlled by the botmaster. These systems can easily be replaced by others by announcing a different list of job servers to the bots. Figure 1 shows a scheme of this architecture.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-5DDcSI3q0vo/T3G2H_tiBXI/AAAAAAAAAB0/Y6WIvL8hAPs/s1600/normal.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-5DDcSI3q0vo/T3G2H_tiBXI/AAAAAAAAAB0/Y6WIvL8hAPs/s320/normal.png" width="251" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Figure 1: Architecture of the Kelihos.B Botnet&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;But peer-to-peer botnets are fairly complex distributed systems - and complex systems are usually hard to secure. We identified some flaws in the architecture that allow us to inject specially crafted messages into the botnet. We used this technique to propagate our own peer entries in a way such that it ruled out all others and effectively redirected all bots to a CrowdStrike controlled sinkhole. In addition, the team took proactive measures to prevent the adversary from regaining control. The botnet is since trapped in our sinkhole system, as shown in figure 2.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-cGIHiylbF70/T3HRYqtAQYI/AAAAAAAAAB8/0-O06JdfK5o/s1600/infrastructure_sinkholed.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="275" src="http://4.bp.blogspot.com/-cGIHiylbF70/T3HRYqtAQYI/AAAAAAAAAB8/0-O06JdfK5o/s320/infrastructure_sinkholed.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Figure 2: Sinkholed Botnet&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;We are currently working with our partners to inform affected ISPs around the world about infections on their networks so they can take appropriate actions. So far we have identified over 110.000 different machines. This number is almost three times larger than the previous version of the Kelihos botnet. What is interesting is that we counted less unique IP addresses than bot IDs in the beginning of the operation. This is due to multiple infected machines with Internet access over a common gateway. As expected, the ID/IP address relation changes after some time as dial-up hosts change their addresses whereas the bot ID remains the same.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Figure 3 shows how the  numbers develop over time. The blue graph displays the total number of  IP addresses seen on the sinkhole. Green is the number of bot IDs. The  number of job requests per hour is depicted in red; the graph shows a  typical pattern which results from computers being turned off over  night.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-j5pcee2d9dA/T3GUmnGw6CI/AAAAAAAAABU/hX_nsNjtTPw/s1600/hits2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="198" src="http://1.bp.blogspot.com/-j5pcee2d9dA/T3GUmnGw6CI/AAAAAAAAABU/hX_nsNjtTPw/s400/hits2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Figure 3: IP count, ID count, job request per hour&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The graph in figure 4 illustrates how effective the takeover was. It displays the number of bots (per hour) we have seen for the first time. The steep start is proof that our injected peer entries propagated rapidly within the botnet.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-NsDAkv2hAd0/T3GVnRZXEnI/AAAAAAAAABc/4VELDAPxVnU/s1600/new2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="120" src="http://1.bp.blogspot.com/-NsDAkv2hAd0/T3GVnRZXEnI/AAAAAAAAABc/4VELDAPxVnU/s400/new2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Figure 4: New bots on the sinkhole per hour&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The geographic distribution of the infected machines is somewhat unusual. With almost one quarter, Poland has by far the most infections.:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-1VDtbNh9Tik/T3LOxjUftMI/AAAAAAAAAC0/T98Uq1dpnDw/s1600/chart-dark.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="266" src="http://1.bp.blogspot.com/-1VDtbNh9Tik/T3LOxjUftMI/AAAAAAAAAC0/T98Uq1dpnDw/s320/chart-dark.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Figure 5: Infection distribution&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;To our knowledge, Kelihos.B was mostly spread via so-called pay-per-install services (PPI). Since the bots report the version of the operating system they are running on to the sinkhole, we can track these as well. Surprisingly enough, 84% of all systems run Windows XP. Here are the numbers:&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;pre wrap=""&gt;     91950  Windows XP&lt;br /&gt;      9428  Windows 7&lt;br /&gt;      5335  Windows 7 with Service Pack 1&lt;br /&gt;      1307  Windows Vista with Service Pack 2&lt;br /&gt;      1100  Windows Vista with Service Pack 1&lt;br /&gt;       671  Windows Vista&lt;br /&gt;       253  Windows Server 2003&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;It seems like there were different versions of the bot coexisting in the botnet. One possible explanation is that the operators partitioned their resources and rented them out to different affiliates for spam campaigns and the like, but had the bots share the network infrastructure as it becomes less likely for a bot to get disconnected from the peer-to-peer network the bigger its size is. We have found as much as 18 different version numbers in our sinkhole logs.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;We are working with our partners to inform ISPs about infections in their network and make sure that Kelihos.B remains safely sinkholed. The command-and-control infrastructure has been abandoned by the gang that was operating the botnet two days after we started our operation. One down, many more to go...&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/--5IRP4zI3-Y/T3MvlLtHRbI/AAAAAAAAAAU/uq-d7LWOvws/s1600/Botnet_Infographic_v01-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/--5IRP4zI3-Y/T3MvlLtHRbI/AAAAAAAAAAU/uq-d7LWOvws/s320/Botnet_Infographic_v01-1.jpg" width="84" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Figure 6: Kelihos.B Infographic&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/7826974083273115346/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/03/p2p-botnet-kelihosb-with-100000-nodes.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/7826974083273115346" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/7826974083273115346" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/58Feijy2DkU/p2p-botnet-kelihosb-with-100000-nodes.html" title="P2P Botnet Kelihos.B with 100.000 Nodes Sinkholed" /><author><name>Tillmann Werner</name><uri>http://www.blogger.com/profile/11542677705187345973</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-5DDcSI3q0vo/T3G2H_tiBXI/AAAAAAAAAB0/Y6WIvL8hAPs/s72-c/normal.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/03/p2p-botnet-kelihosb-with-100000-nodes.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7985496991125228536.post-4230888463952714117</id><published>2012-02-22T10:55:00.000-05:00</published><updated>2012-04-17T21:10:37.752-04:00</updated><title type="text">CrowdStrike Launch</title><content type="html">&lt;h3 class="post-title entry-title"&gt;   &lt;/h3&gt;&lt;h3&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 'Arial'; font-weight: 700;"&gt;by George Kurtz, President &amp;amp; CEO&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h3 class="post-title entry-title"&gt;&lt;a href="http://www.georgekurtz.com/2012/02/crowdstrike-launches-in-stealth-mode.html"&gt;CrowdStrike launches in stealth-mode with $26 million Series A round led b Warburg Pincus&lt;/a&gt;&lt;/h3&gt;&lt;div class="post-header"&gt;&lt;/div&gt;&lt;div style="border-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin: 0px 0px 1.625em; outline-width: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"&gt;&lt;div&gt;As I mentioned in a previous post, I was delighted to announce that I had joined&amp;nbsp;&lt;a href="http://www.warburgpincus.com/" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: orange; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;Warburg Pincus&lt;/a&gt;,  a leading global private equity firm focused on growth investing, as an  Executive in Residence. So far my time as an EIR at Warburg has been  fantastic. The past few months have exposed me to many new companies and  technologies that really got my creative juices flowing and pushed me  to get back into the start-up game with Warburg Pincus as my partner.&lt;/div&gt;&lt;/div&gt;&lt;div style="border-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin: 0px 0px 1.625em; outline-width: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"&gt;&lt;div&gt;Today, I am proud to announce the stealth-mode launch of my newest venture that I co-founded with&amp;nbsp;&lt;a href="http://www.crunchbase.com/person/dmitri-alperovitch" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: orange; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;Dmitri Alperovitch&lt;/a&gt;&amp;nbsp;(CTO) and&amp;nbsp;&lt;a href="http://www.crowdstrike.com/" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: orange; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;Gregg Marston&lt;/a&gt;&amp;nbsp;(CFO)  – CrowdStrike. CrowdStrike is a security technology company focused on  helping enterprises and governments protect their most sensitive  intellectual property and national security information. Utilizing  Big-Data technologies, CrowdStrike is developing a new and innovative  approach to solving today’s most demanding cyber-security challenges.  CrowdStrike’s core mission is to fundamentally change how organizations  implement and manage security in their environment.&lt;/div&gt;&lt;/div&gt;&lt;div style="border-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin: 0px 0px 1.625em; outline-width: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"&gt;&lt;div&gt;&lt;b style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Why CrowdStrike:&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="border-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin: 0px 0px 1.625em; outline-width: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"&gt;&lt;div&gt;The seemingly daily barrage of disclosures about companies that have had  their crown jewels stolen in recent years reinforced a key principle  for us –&amp;nbsp;&lt;b style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;i style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 15px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;these companies don’t have a malware problem, they have an adversary problem&lt;/i&gt;.&lt;/b&gt;&amp;nbsp;Many  just don’t know it. Today’s attacks are sophisticated, targeted, and  long ranging in scope. Unfortunately, almost every security solution  focuses on the tens of thousands of pieces of malware, exploits, and  vulnerabilities that are seen in the wild every day. Yet, those are just  the interchangeable and, in many cases, disposable tools that the  adversaries use to achieve their ultimate objective – theft of  intellectual property, trade secrets, and other business proprietary  information.&lt;/div&gt;&lt;/div&gt;&lt;div style="border-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin: 0px 0px 1.625em; outline-width: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"&gt;&lt;div&gt;As many of you know the security industry is building “Maginot-line”  style of defenses – attempting to prevent all adversaries from getting  inside the perimeter of the network or host system. More importantly, a  well-financed, trained, and highly determined attacker will always get  in. More than likely, they are already in. There is no silver bullet  that will stop a determined adversary, so while the security industry  attempts to build bigger fences, the enemy is bringing higher ladders to  the fight. Moreover, the industry continues to focus on the malware or  exploits which is akin to focusing on the gun as opposed to the shooter  committing the crime. The person or organization pulling the trigger (or  deploying the malware) is the one that you ultimately need to focus on.  The type of gun or ammunition they may be using is interesting, but in  most cases not strategically relevant.&lt;/div&gt;&lt;/div&gt;&lt;div style="border-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin: 0px 0px 1.625em; outline-width: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"&gt;&lt;div&gt;Based upon investigations we have led, such as&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Operation_Aurora" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: orange; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;Operation Aurora&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.reuters.com/article/2011/02/10/us-energy-cyber-china-idUSTRE7190XP20110210" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: orange; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;Night Dragon&lt;/a&gt;, and&amp;nbsp;&lt;a href="http://www.vanityfair.com/culture/features/2011/09/operation-shady-rat-201109" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: orange; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;Shady RAT&lt;/a&gt;,  and knowing the limitations of existing technologies, we are horrified  at the amount of IP being stolen and financial damage inflicted every  day. It is evident that we are dealing with economic predators who are  systematically destroying value in countries around the world. Even  worse, we may very well see the enemy engage in destructive and  disruptive attacks designed to take down critical infrastructure or  modify key processes and data in a covert undetectable fashion.&lt;/div&gt;&lt;/div&gt;&lt;div style="border-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin: 0px 0px 1.625em; outline-width: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"&gt;&lt;div&gt;&lt;b style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;The Missing Link: Attribution &amp;amp; Raising the Costs to the Adversary&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="border-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin: 0px 0px 1.625em; outline-width: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"&gt;&lt;div&gt;Attribution is the key strategic piece missing from all existing  security technologies – providing the answer to the “who?” vs. the  “what?” Knowing who is after your IP is critical in determining what  assets you want to protect and how. Protecting everything is impossible –  you may as well be protecting nothing. However, knowing the enemy is  the first step in the process of determining the priority of allocation  of scarce resources to defend the key assets and tailoring your response  to the Tactics, Techniques and Procedures (TTPs) of the adversary.  Knowing their capabilities, objectives, and the way they go about  executing on them is the missing piece of the puzzle in today’s  defensive security technologies. The key to success is raising  adversary’s costs to exceed the value of the data they may be trying to  exfiltrate and the only way to accomplish that is by forcing them to  change the way they conduct the human-led parts of their intrusions,  such as reconnaissance, lateral movement, identification of valuable  assets, and exfiltration. Other parts of the operation, such as  vulnerability weaponization, malware delivery, and command and control  can be mass-produced and changed at will with little cost. However,  attackers are creatures of habit and while they are fast to change their  weapons, they are slow to change their methods.&amp;nbsp;&lt;b style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;By  identifying the adversary and revealing their unique TTPs (i.e. modus  operandi), we can hit them where it counts – at the human-dependent and  not easily scalable parts of their operations.&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="border-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin: 0px 0px 1.625em; outline-width: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"&gt;&lt;div&gt;&lt;b style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;The CrowdStrike Mission:&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="border-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin: 0px 0px 1.625em; outline-width: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"&gt;&lt;div&gt;As the President and CEO of CrowdStrike, one of the most exciting  aspects of this new venture for me is assembling a “dream team” of  security visionaries to address this important mission and challenge.  Our team is comprised of people who are “big thinkers” that have the  technical prowess to execute and carry out our mission goals without the  encumbrances that face legacy security solutions. Our team of  visionaries are the rebels who believe the current state of security is  fundamentally broken and want to do something about it. More  importantly, these are the patriots who are tired of seeing our  intellectual property and competitive advantage wiped away under the  thinly veiled cover of an Internet address. The recent stories  surrounding Nortel provide a shinning example of how the adversaries can  embed themselves into a multi-national organization for the better part  of a decade without detection while systematically accessing their most  coveted intellectual property. If we sit back idly and do nothing about  these types of attacks, we certainly face a crisis of epic proportions  and economic consequences that we have yet to fully comprehend.  CrowdStrike does not accept the status quo, and we intend to do  something about it. If you share our passion and vision about this  crisis, and believe you have what it takes to join our fight then please  send an email to &lt;a href="mailto:mission@crowdstrike.com" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: orange; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;mission@crowdstrike.com&lt;/a&gt;.  We are looking for kick ass coders, consultants, and experts who like  us have been fighting and responding to nation-state targeted  intrusions.&lt;/div&gt;&lt;/div&gt;&lt;div style="border-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin: 0px 0px 1.625em; outline-width: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"&gt;&lt;div&gt;I will leave you with one final thought. The ancient Chinese military  strategist Sun Tzu in his teachings emphasized the need to “know your  enemy”. For if “you know your enemy and know yourself,” he wrote, “you  need not fear the result of a hundred battles.” Isn’t it time we apply  these simple time honored lessons in the cyber security battlefield of  the twenty-first century?&lt;/div&gt;&lt;/div&gt;&lt;div style="border-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin: 0px 0px 1.625em; outline-width: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"&gt;&lt;div&gt;If you would like to keep up with the latest news on&amp;nbsp;&lt;a href="http://www.crowdstrike.com/" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: orange; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;CrowdStrike&lt;/a&gt;&amp;nbsp;please follow us on Twitter&amp;nbsp;&lt;a href="http://twitter.com/CrowdStrike" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: orange; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;@CrowdStrike&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div style="border-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin: 0px 0px 1.625em; outline-width: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"&gt;&lt;div&gt;&lt;b style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;If you are attending the RSA conference next week, you can look for us at the following events we are speaking at:&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="border-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin: 0px 0px 1.625em; outline-width: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"&gt;&lt;div&gt;&lt;i style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 15px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Monday February 27: America’s Growth Capital 8th Annual Information Security Conference&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="border-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin: 0px 0px 1.625em; outline-width: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"&gt;&lt;div&gt;10:15-11:00 am&amp;nbsp;&lt;a href="http://www.americasgc.com/news-events/index.asp?id=41" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: orange; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;Mobile Security The Changing Threat and Remediation Landscape (panel with George Kurtz)&lt;/a&gt;&lt;/div&gt;&lt;div&gt;3:30-4:15 pm&amp;nbsp;&lt;a href="http://www.americasgc.com/news-events/index.asp?id=41" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: orange; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;Combating State-Sponsored Adversaries (panel with Dmitri Alperovitch)&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="border-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin: 0px 0px 1.625em; outline-width: 0px; padding: 0px; text-align: justify; vertical-align: baseline;"&gt;&lt;div&gt;&lt;i style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 15px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Wednesday February 29: RSA Conference&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="border-width: 0px; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin: 0px 0px 1.625em; outline-width: 0px; padding: 0px; text-align: center; vertical-align: baseline;"&gt;&lt;div style="text-align: justify;"&gt;8:00-9:10 am&amp;nbsp;&lt;a href="http://365.rsaconference.com/community/connect/blog/2012/01/31/rsac2012-podcast-exp-201-cyber-battlefield-the-future-of-conflict" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: orange; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;Cyber Battlefield: The Future of Conflict&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;10:40-11:30 am&amp;nbsp;&lt;a href="http://365.rsaconference.com/community/connect/blog/2012/02/21/rsac2012-podcast-hot-203-hacking-exposed-mobile-rat-edition" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: orange; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;Hacking Exposed: Mobile RAT Edition&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.crowdstrike.com/feeds/4230888463952714117/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.crowdstrike.com/2012/03/crowdstrike.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/4230888463952714117" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7985496991125228536/posts/default/4230888463952714117" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Crowdstrike/~3/dE4VzGsNK3g/crowdstrike.html" title="CrowdStrike Launch" /><author><name>CrowdStrike Inc.</name><uri>http://www.blogger.com/profile/10460599760417303380</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/-5TqAHiRx9Q4/T2NsTotLVQI/AAAAAAAAAA8/i8nSMpAppCk/s220/logo_dkgr200.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://blog.crowdstrike.com/2012/03/crowdstrike.html</feedburner:origLink></entry></feed>
