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

<channel>
	<title>Intrepidus Group - Insight</title>
	<atom:link href="http://intrepidusgroup.com/insight/feed/" rel="self" type="application/rss+xml" />
	<link>http://intrepidusgroup.com/insight</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Tue, 11 Jun 2013 14:46:29 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>iOS 7 and Mavericks: New feature roundup from a security perspective</title>
		<link>http://intrepidusgroup.com/insight/2013/06/ios-7-and-mavericks-new-feature-roundup-from-a-security-perspective/</link>
		<comments>http://intrepidusgroup.com/insight/2013/06/ios-7-and-mavericks-new-feature-roundup-from-a-security-perspective/#comments</comments>
		<pubDate>Tue, 11 Jun 2013 14:46:29 +0000</pubDate>
		<dc:creator>dschuetz</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[Security Management]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://intrepidusgroup.com/insight/?p=3795</guid>
		<description><![CDATA[Yesterday Apple unveiled the latest versions of OS X (code-named Mavericks) and iOS 7, at the annual World Wide Developer Conference (WWDC). The general focus was on end-user features and items of interest to developers, but several items appeared to have an impact on security in one way or another. The beta versions of both [...]]]></description>
				<content:encoded><![CDATA[<p>Yesterday Apple unveiled the latest versions of OS X (code-named Mavericks) and iOS 7, at the annual World Wide Developer Conference (WWDC). The general focus was on end-user features and items of interest to developers, but several items appeared to have an impact on security in one way or another.</p>
<p>The beta versions of both operating systems were also released to developers yesterday, but I haven&#8217;t seen them yet (and once I do, I&#8217;d probably be bound by NDA to not talk much about them). So before I go that route (hopefully later this week!), I thought it would be useful to quickly review some of the items I found potentially significant. I&#8217;ll briefly describe the features, then summarize some of the security questions I have at the end. Also, whenever I talk about &#8220;Early Reports,&#8221; I&#8217;m referring to information not specifically announced by Apple, but which have leaked through screenshots and other reports.</p>
<h3>OS X &#8220;Mavericks&#8221;</h3>
<p>Though my focus at Intrepidus has generally been on iOS, I do use OS X on a daily basis, and a few items here seemed worthy of mention (plus, they also pertain to iOS).</p>
<ul>
<li>Passwords in the Cloud &#8212; a secure vault, stored on iCloud, for website logins, credit card numbers, wi-fi passwords, etc. This was cited as using AES-256 encryption, pushed to trusted devices. When used within Safari, it can even auto-suggest random, secure passwords as you create web-based accounts.</li>
<li>Notifications in the lock screen &#8212; when the computer is locked or asleep, notifications (including push notifications) can queue up, and will be displayed to the user the next time they wake up the computer, while the screen is still locked.</li>
<li>The map application can send directions to an iPhone, but how this works wasn&#8217;t explained. My speculation is it&#8217;s an iCloud document, just like you can send Passbook passes from Safari directly to your iOS devices.</li>
</ul>
<h3>iOS 7</h3>
<p>This was the big change. So big, they repeatedly referred to it as &#8220;the biggest change to iOS since the introduction of the iPhone.&#8221; Clearly, there have been big changes in the interface design, but also several new features were introduced as well.</p>
<ul>
<li>AirDrop &#8212; iOS devices can now share information directly with nearby friends over peer-to-peer Wi-Fi. This was introduced in OS X Lion, and doesn&#8217;t require actually being on the same Wi-Fi network.</li>
<li>Notification center on lock screen &#8212; similar to the new feature in Mavericks</li>
<li>Control Center &#8212; provides an easy way to toggle features like Wi-Fi, Airplane mode, and Do Not Disturb, by simply swiping up from the bottom of the screen. This also allows quick access to four applications: Flashlight, Timers, Calculator, and Camera.</li>
<li>Better multitasking &#8212; applications may now actually remain in the background, with the operating system using some careful monitoring and management to reduce the cycles they use to the bare minimum. This also provides a facility called &#8220;push trigger,&#8221; where an application in the background can actually immediately act on data received in a push notification.</li>
<li>Safari: iCloud keychain and parental controls &#8212; I don&#8217;t have any idea what the parental controls would do, but if it provides a way to blacklist and/or whitelist websites, this could be somewhat useful in corporate settings. And, of course, the iCloud keychain (described above for Mavericks) is a major new feature.</li>
<li>App store automatic updates &#8212; this is a good/bad thing, in my mind. People certainly want to stop having to do big updates of many apps every week or two&#8230;but sometimes a new version of an app may be buggy, and users might not want to upgrade immediately. Also, corporations may want to review apps before they&#8217;re updated, to ensure that new features don&#8217;t change the risk profile the app poses to their enterprise.</li>
<li>Activation Lock &#8212; this new feature allows a user to configure an iOS device such that if it&#8217;s been remotely wiped (because it was lost or stolen), then the device cannot be re-activated until the original iCloud credentials are entered. This should provide some additional deterrence against theft, at least, once the feature becomes widespread and well understood.</li>
</ul>
<p>These keynotes always focus on only a few features, and there are always several dozen other features that don&#8217;t get described in detail. In this case, two screens full of features were shown during the keynote, including several that appear to have relevance to security or corporate users:</p>
<ul>
<li>Enterprise single sign on &#8212; definitely interesting</li>
<li>Per-app VPNs &#8212; would be very interesting if each app could be assigned to an arbitrary VPN</li>
<li>Streamline MDM enrollment &#8212; no idea what this could mean, since (for the end user) it&#8217;s already pretty simple</li>
<li>App store volume purchase &#8212; this has been a complicated endeavor since it was first introduced, so changes here could be significant</li>
<li>Managed app configuration &#8212; this might be similar to application profiles in the OS X profile manager (which are an outgrowth of the old MCX system in pre-Lion OS X)</li>
<li>Scan to acquire passbook passes &#8212; probably built-in QR scanner</li>
<li>iBeacons &#8212; Low Energy Bluetooth location</li>
<li>Automatic configuration &#8212; possibly the aforementioned app configuration</li>
<li>Barcode scanning &#8212; may confirm the passbook assumption</li>
<li>Data protection by default &#8212; finally, all apps may have the additional &#8220;encrypted when device is locked&#8221; protection</li>
</ul>
<p>Finally, some interesting bits have already been seen in screenshots on the web:</p>
<ul>
<li>Integration of Vimeo and Flickr accounts for share sheets (similar to existing Twitter and Facebook integration)</li>
<li>Separate iCloud security panel, including integrated two-factor authentication, a separate passcode for the iCloud keychain, and a toggle for &#8220;Keychain Recovery&#8221; subtitled &#8220;Restore passwords if you lose all your devices.&#8221;</li>
</ul>
<h3>Outstanding Questions</h3>
<ul>
<li>How are passwords in the cloud stored, and does anyone else have access to the data (for example, if you forget your key)?</li>
<li>Can we control what notifications appear on the lock screen? For example, allow Twitter, but disallow mail, while allowing both Twitter and email when the device is unlocked?</li>
<li>Does AirDrop on iOS introduce any new problems? Can strangers try to push data to you while in public, even if you&#8217;re not logged into a public Wi-Fi? Could that lead to a phishing vector (for example, sharing a malicious configuration profile over AirDrop)?</li>
<li>Can you change the applications available for quick-launch in the Control Center? Early reports indicate that the Control Center may be enabled for use in the lock screen, and if so, how does that affect apps which encrypt their data?</li>
<li>How much can an application do when woken up by a push trigger? Could an attacker in control of a malicious app and its push server remotely enable the device microphone, for example? Can this be done while the device is locked?</li>
<li>Can automatic app updates be configured, for example, to wait a week after release prior to being applied? Can the feature be disabled altogether? Or better yet, can certain apps be flagged for manual updating only?</li>
<li>For activation lock, can the remote geolocation and messaging features of Find My iPhone remain intact even after the device was wiped? Currently, users are faced with a tough choice, whether to wipe the device and give up any chance of locating it again, or leave it trackable, and able to receive messages, but at risk of someone extracting sensitive information from it. It&#8217;d be nice if one could wipe the device, but still be able to try to track it down and send &#8220;If found, please call me for a reward&#8221; messages to the finder.</li>
</ul>
<p>All in all, there appears to be a great deal of change coming in both OS X, and especially, iOS. This summer will keep us busy exploring all the new features and their security implications, and hopefully the final release will prove to be an improvement in many areas.</p>
]]></content:encoded>
			<wfw:commentRss>http://intrepidusgroup.com/insight/2013/06/ios-7-and-mavericks-new-feature-roundup-from-a-security-perspective/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tizen Security</title>
		<link>http://intrepidusgroup.com/insight/2013/06/tizen-security/</link>
		<comments>http://intrepidusgroup.com/insight/2013/06/tizen-security/#comments</comments>
		<pubDate>Mon, 10 Jun 2013 14:54:25 +0000</pubDate>
		<dc:creator>mmanning</dc:creator>
				<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[Tizen]]></category>

		<guid isPermaLink="false">http://intrepidusgroup.com/insight/?p=3777</guid>
		<description><![CDATA[There is some intense competition between up-and-coming mobile platforms that aim at taking away some of Android&#8217;s marketshare. We have Tizen, Firefox OS, Ubuntu Touch, Sailfish OS, and others but to me these are the big players. Which do you think is going to make a substantial splash? Any? Firefox OS has the backing of [...]]]></description>
				<content:encoded><![CDATA[<p>There is some intense competition between up-and-coming mobile platforms that aim at taking away some of Android&#8217;s marketshare. We have <a href="https://www.tizen.org/" target="_blank">Tizen</a>, <a href="http://www.mozilla.org/en-US/firefox/partners/" target="_blank">Firefox OS</a>, <a href="http://www.ubuntu.com/phone/ubuntu-for-android" target="_blank">Ubuntu Touch</a>, <a href="https://sailfishos.org/" target="_blank">Sailfish OS</a>, and others but to me these are the big players. Which do you think is going to make a substantial splash? Any?</p>
<p>Firefox OS has the backing of the Mozilla Foundation and big players like Facebook, Ubuntu Touch has Canonical, Sailfish OS has&#8230;the Sailfish Alliance? But if we&#8217;re betting on which of these will most likely take off, Tizen has the support of Intel (with McAfee), Samsung, SK Telecom, Vodafone, Huawei, and many others. There are even promises that Samsung will release a high-end Tizen based device in August of this year. So the question is, what&#8217;s a &#8220;tizen,&#8221; and why should I care?</p>
<p style="text-align: center;"><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/img_tizen011.jpg"><img class="aligncenter  wp-image-3786" alt="img_tizen01[1]" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/img_tizen011.jpg" width="480" height="240" /></a></p>
<h1>Tizen TL;DR</h1>
<p>Environmentally, Tizen is a W3C standards compliant HTML5 based platform run on-top of Linux where their applications (called &#8220;widgets&#8221; and &#8220;web apps&#8221;) are developed in HTML5 and JavaScript. (Native applications are also supported, developed in C, and mostly aimed at game developers.) Applications make feature requests to privileged APIs using JavaScript, that maintain your controls over features like contacts, NFC, or the camera.</p>
<h1>History</h1>
<p>Before I go into security, I just want to point out where Tizen has come from, in case you&#8217;ve worked on one of its predecessors before. In 2010, Nokia and Intel announce <a href="https://meego.com/" target="_blank">MeeGo</a>, a Linux, web-based mobile platform. Nokia eventually dropped out of this project and decided to focus on Windows Phone. In 2011, Intel decided to kill MeeGo and make its own platform with the support of the Linux Foundation, called &#8220;Tizen&#8221;. The Tizen 1.0 SDK was released in 2012 along with a specific flavor designed to be a vehicle dashboard called Tizen IVI. Last month, <a href="https://developer.tizen.org/tizen-2.1b-release-notes" target="_blank">Tizen released version 2.1</a> of its platform at its conference in San Francisco along with the announcement of a lot of new supporters that it has snowballed along the way.</p>
<h1>Security Model</h1>
<p>Tizen has a similar sandbox model to its competitors wherein each application runs segregated from other applications. What&#8217;s different in Tizen is how those apps are segregated, and which device component is responsible for enforcement of this sandbox. Each application runs as an instance of the Tizen Web Runtime (WRT) and a Linux Kernel Security Module (&#8220;Smack&#8221;), controls processes and their interactions with the rest of the operating system based on a set of rules. WRT will be covered in more detail a later post; for the sake of this post, the WRT functions similarly to Dalvik VM instances in Android.</p>
<h1>Smack</h1>
<p>Smack is where Tizen can potentially make its mark as an innovative, modern, mobile OS, and this feature sets apart this platform from other mobile OS&#8217;s right now. If you had never heard of Smack before (like me), you can think of it as a simplified competitor to SELinux which I expect you actually have heard of (hint: it&#8217;s enabled but not enforced on the Samsung Galaxy S4). Unlike SELinux, which can have insanely long rule-sets that control how a process interacts with the system, Smack is designed for simplicity.</p>
<p>One of its design metaphors is &#8220;Smack Labels,&#8221; which take an object like a process or file system location, and designate it with an identifier. During runtime, when an application needs to interact with other objects in the system, those labels are reviewed and checked to see if Label A is allowed to interact with Label B. Every app is given its own Smack Label (similar to an Android UID and GID) and Tizen uses these Smack Labels to control how apps, APIs, device functions, and just about everything sandboxed application on the device interacts with another sandboxed application.</p>
<h1>Content Security Framework</h1>
<p>There&#8217;s a lot of stuff to dive into in the Tizen OS, but I wanted to highlight Tizen&#8217;s new Content Security Framework (CSF) introduced in 2.1. If you&#8217;ve worked with Android and understand why malware continues to be a threat, you&#8217;ll soon notice that one of the problems with anti-malware solutions for the platform is that it&#8217;s not possible for them to gain the privileges necessary to properly protect a device. On Tizen, Intel and McAfee have provided a solution to this type of problem, namely this Content Security Framework, which is a security engine that actively looks for malicious activity and is built into the Tizen environment. This engine gives developers the ability to hook into the CSF API and scan applications, device content, and presumably even lower level device functions to let them develop a more empowered malware protection application.</p>
<p>Besides scanning for malware or malicious content, applications which make use of the CSF can also scan URLs used by an application, categorize them, or report back on a domain&#8217;s reputation. You might see where this is going &#8212; all of this has the aim of letting device administrators set policies of what a device is or isn&#8217;t allowed to see, and enforce those policies at a low level.</p>
<h1>Had Enough?</h1>
<p>There&#8217;s too much information to really go through in depth, so I&#8217;m just going to cheat and give you some hints for further reading (and an outline for future blog posts). Most of the research right now is based on theories of how an actual Tizen device will be launched and how secure will it be. Hope to talk more about this soon. <img src='http://intrepidusgroup.com/insight/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<ul>
<li>Tizen applications must be signed by 2 signatures &#8211; the author and the distributer. The distributer is the marketplace in which the developer is publishing their application.</li>
<li>Apps can be encrypted and are dynamically decrypted by the WRT instance of that application (as opposed to on boot).</li>
<li>The Tizen SDK is similar to Android where device access uses something called &#8220;SDB&#8221; (equivalent to ADB) to access the device filesystem and provide debugging functionality.</li>
<li>ASLR is fully implemented (at least in the emulator).</li>
<li>A widget has the ability to set which domains an application is allowed to access (in the form of a whitelist). Developers can even get as specific as setting sub-domains and what types of calls are allowed to be sent to each subdomain.</li>
<li>The Secure Logging function offers the same control as Android&#8217;s BuildConfig.DEBUG value. When an app is packaged for production, logging is automatically removed.</li>
<li>JavaScript renders inside of widgets and web-apps making XSS vectors very juicy.</li>
<li>Zypper is used as a built in package management system letting users install apps like SSH, telnet, apache.</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://intrepidusgroup.com/insight/2013/06/tizen-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kony 2013 &#8211; A different kind of Android reversing</title>
		<link>http://intrepidusgroup.com/insight/2013/06/kony-2013-a-different-kind-of-android-reversing/</link>
		<comments>http://intrepidusgroup.com/insight/2013/06/kony-2013-a-different-kind-of-android-reversing/#comments</comments>
		<pubDate>Thu, 06 Jun 2013 19:39:27 +0000</pubDate>
		<dc:creator>jross</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://intrepidusgroup.com/insight/?p=3749</guid>
		<description><![CDATA[We reverse engineer Android applications pretty much daily here at Intrepidus. We do it so much, in fact, that it almost becomes rote: Grab the APK Run it through apktool/dex2jar/apkanalyser/apkREthingDuJour Look at the files/smali/classes ??? Profit! It&#8217;s rare that we find something that breaks that process (I left out the MiTM of traffic, because I&#8217;m [...]]]></description>
				<content:encoded><![CDATA[<p>We reverse engineer Android applications pretty much daily here at Intrepidus. We do it so much, in fact, that it almost becomes rote:</p>
<ol>
<li>Grab the APK</li>
<li>Run it through apktool/dex2jar/apkanalyser/apkREthingDuJour</li>
<li>Look at the files/smali/classes</li>
<li>???</li>
<li>Profit!</li>
</ol>
<p>It&#8217;s rare that we find something that breaks that process (I left out the MiTM of traffic, because I&#8217;m focusing strictly on the APK analysis for this post).</p>
<p>A recent engagement we did for a customer turned out to be one of those rare finds: an APK that was &#8220;weird&#8221;. While ethics preclude our talking about a customer&#8217;s application specifically, we were able to find other applications in the Google Play store that have the same behavior, and we <strong>can</strong> use them =)</p>
<p>For this post, we&#8217;re going to be looking at the <a href="https://play.google.com/store/apps/details?id=com.konylabs.Scottrade&amp;hl=en">Scottrade Mobile</a> application (you can get the specific APK we used <a href="http://www.mediafire.com/?svcubvdsc71iam5">here</a>). To begin with, we fire up the application on the device. A picture of the main activity is shown below:</p>
<p><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/main_activity.png"><img class="aligncenter size-medium wp-image-3752" alt="main_activity" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/main_activity-168x300.png" width="168" height="300" /></a></p>
<p>Nothing unusual so far. We click on the <em>Account</em> icon at the top of the screen, and as expected a login activity is presented:</p>
<p><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/account_login_activity.png"><img class="aligncenter size-medium wp-image-3753" alt="account_login_activity" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/account_login_activity-168x300.png" width="168" height="300" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Fair enough. We click around a bit. Type some random strings into the account number, check the <em>Remember Account No.</em> checkbox, etc. All we&#8217;re looking to do right now is make sure that any client side storage options are being exercised &#8211; so that when we take a look at what data is persisted by the application, there will be something there.</p>
<p>Having walked through the app a bit, it&#8217;s time to check the file  system on the device. In this case, the application data is stored in <em>/data/data/com.konylabs.Scottrade</em>. We grab them using <em>adb pull.</em> Once we have the APK unpacked back into smali and java classes, and the local files on the device have been pulled out for examination, it&#8217;s time to move on to seeing how the application works.</p>
<p>The first stop we make is the AndroidManifest.xml file. This file is used by the APK to define the package characteristics &#8211; including all permissions used by the app, all the activities and service providers the application creates, etc. Basically this file contains a giant roadmap of the application. Here&#8217;s what the manifest for this application looks like:</p>
<p><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/kony_manifest.png"><img class="aligncenter size-medium wp-image-3754" alt="kony_manifest" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/kony_manifest-300x124.png" width="300" height="124" /></a></p>
<p>Hrmm.. our first hint at oddness. There&#8217;s not much in this manifest &#8211; especially for an application that has as many components as this one does. We already know from walking through the application in run-time that there are many activities present, so how can there only be two defined in the manifest? Looking at the main activity (identified by the <em>&lt;action android:name=&#8221;android.intent.action.MAIN&#8221; /&gt; </em>intent-filter), we see that it maps back to the .Scottrade class. Since the package name is <em>com.konylabs.Scottrade </em>that means we need to look at the com.konylabs.Scottrade.Scottrade.smali file to examine what&#8217;s going on. Here&#8217;s what that file contains:</p>
<p><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/scottrade_smali.png"><img class="aligncenter size-medium wp-image-3756" alt="scottrade_smali" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/scottrade_smali-300x273.png" width="300" height="273" /></a></p>
<p>&nbsp;</p>
<p>Again, more oddness. We&#8217;ve seen the main activity. We know it&#8217;s got a lot of stuff going on &#8211; stock trade graphs with information presumably obtained from the Internet, various images loaded, etc. In fact, the app looked a whole lot like the usual bunch of webviews strung together. So why aren&#8217;t we seeing any of that here?</p>
<p>The answer is in line 2:<br />
<pre>.super Lcom/konylabs/android/KonyMain;</pre><br />
What this translates to in Java is a class inheritance. Inside the com.konylabs.Scottrade.Scottrade.java file would be something like the following:<br />
<pre><pre>public class Scottrade extends KonyMain {
&nbsp;&nbsp;&nbsp;&nbsp;// code goes here</pre></pre><br />
}</p>
<p>And if we look at the Scottrade.class file in JD-GUI, we see that&#8217;s exactly what happens (and in fact, not much else at all):</p>
<p><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/scottrade_class.png"><img class="aligncenter size-medium wp-image-3759" alt="scottrade_class" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/scottrade_class-300x285.png" width="300" height="285" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>So, where does KonyMain live? It&#8217;s at com.konylabs.android.KonyMain.smali. That file is a whopping 5166 lines long! Using dex2jar on Windows 7, and JDK version 7, the KonyMain class file only has a single line of: <em>// INTERNAL ERROR //</em></p>
<p>However, using dex2jar on Linux, with JDK version 6, we get a successful decompilation:</p>
<p><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/konyMain_class.png"><img class="aligncenter size-medium wp-image-3763" alt="konyMain_class" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/konyMain_class-300x198.png" width="300" height="198" /></a></p>
<p>&nbsp;</p>
<p>Again, this file is pretty huge, and not terribly helpful. At this point, it seems like we should look at what Kony Labs is. Turning to Google, we see that they are a <a href="http://www.kony.com/about-us">mobile application company</a>, and offer products that provide a framework for developers such that they can take code they write, and deploy it across multiple mobile platforms. So, what that means for us as reverse engineers is: we need to figure out how the Kony Labs framework is designed. Unfortunately, their application is not open source, nor is a  trial available. While looking for further information we ran across <a href="http://www.wilsonmar.com/android_app_frameworks.htm#Konyz">this site</a>, explaining a bit about the Kony architecture. Specifically:</p>
<blockquote><p><a href="http://www.kony.com/" target="_blank">KonyOne</a>, claims it does everything. Their Eclipse-based cross-platform IDE studio helps the creation of a single code base programmed in the Lua programming language (like JavaScript) from which Kony generates native code in 7 OSs OR HTML5 OR WAP/WML browser apps.</p></blockquote>
<p>Hmm. That&#8217;s interesting. So, it would seem that Kony takes application code written by mobile developers, and throws it all into a Lua wrapper of some kind. Armed with that information, we started looking harder at the structure of the APK, and the files stored in the device file system.</p>
<p>First off, we looked at the device file system structure:</p>
<p><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/device_files.png"><img class="aligncenter size-medium wp-image-3757" alt="device_files" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/device_files-300x87.png" width="300" height="87" /></a></p>
<p>&nbsp;</p>
<p>We see the usual things: cache for webviews, shared_prefs, databases. But <em>files</em> is odd. Looking in there, we see 3 files:<br />
<pre><pre>dsAcceptDecline.kds
dsAppVersion.kds
dsShowStreaming.kds</pre></pre><br />
What is a .kds file? Running the <em>file</em> command on them says they&#8217;re Java Serialization data:<br />
<pre><pre>$ file *
dsAcceptDecline.kds: Java serialization data, version 5
dsAppVersion.kds: Java serialization data, version 5
dsShowStreaming.kds: Java serialization data, version 5</pre></pre><br />
Examining the files in a hex editor doesn&#8217;t help much, but we can tell it&#8217;s got Java Hashtables, and binary objects in it:</p>
<p><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/kds_hexdump.png"><img class="aligncenter size-medium wp-image-3762" alt="kds_hexdump" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/kds_hexdump-300x242.png" width="300" height="242" /></a></p>
<p>&nbsp;</p>
<p>Hrmm&#8230; OK. Ignore that for the moment, let&#8217;s see what else there is to find. Going back to the unpacked APK directory we obtained using APKTool, let&#8217;s check out the usual spots:</p>
<ul>
<li>Anything good in <em>/res/values/strings.xml</em>?<br />
Nope: <a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/strings_xml.png"><img class="aligncenter size-medium wp-image-3764" alt="strings_xml" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/strings_xml-300x64.png" width="300" height="64" /></a></li>
<li>How about <em>/assets</em>?<br />
Aha! Something interesting here:</li>
</ul>
<p><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/assets_list.png"><img class="aligncenter size-medium wp-image-3765" alt="assets_list" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/assets_list-300x91.png" width="300" height="91" /></a></p>
<p>Knowing that Kony wraps everything up in a Lua wrapper, that <em>konyappluabytecode.o.mp3</em> file looks somewhat suspect. Let&#8217;s take a look at the file header and see what it has to say:</p>
<p><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/luabytecode_header.png"><img class="aligncenter size-medium wp-image-3767" alt="luabytecode_header" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/luabytecode_header-300x103.png" width="300" height="103" /></a></p>
<p>As guessed: this is not your usual MP3 file at all! It&#8217;s a LUA bytecode dump! Here&#8217;s where things start getting really interesting.</p>
<p>It turns out, that the entire Android &#8220;application&#8221; is actually stored inside the <em>konyappluabytecode.o.mp3</em> file. Running strings on that file shows evidence of this:</p>
<p><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/luyabytecode_strings_grep.png"><img class="aligncenter size-medium wp-image-3768" alt="luyabytecode_strings_grep" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/luyabytecode_strings_grep-300x153.png" width="300" height="153" /></a></p>
<p>Unfortunately, the Lua bytecode isn&#8217;t readable natively, because it&#8217;s bytecode. Some  looking around revealed a few tools that can be used to disassemble Lua code, but the one that worked best for us was <a href="http://chunkspy.luaforge.net/">ChunkSpy</a>. This handy tool is actually a Lua script, that can be used to convert binary Lua bytecode back into a verbose listing, similar to what you would expect to see in a standard binary debugger. Running the <em>konyappluabytecode.o.mp3</em> file through ChunkSpy was simple enough, once we installed lua 5.1 onto a Linux system. The usage is shown below:</p>
<p><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/chunkspy_usage.png"><img class="aligncenter size-medium wp-image-3769" alt="chunkspy_usage" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/chunkspy_usage-300x240.png" width="300" height="240" /></a></p>
<p>&nbsp;</p>
<p>For our bytecode, all we had to do was run the following command:<br />
<pre>ChunkSpy.lua -o out.txt konyappluabytecode.o.mp3</pre><br />
An example of what the output looks like is shown here:</p>
<p><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/lua_bytecode_dump.png"><img class="aligncenter size-medium wp-image-3770" alt="lua_bytecode_dump" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/06/lua_bytecode_dump-300x155.png" width="300" height="155" /></a></p>
<p>&nbsp;</p>
<p>Where things went from there is the subject of another post, coming soon&#8230;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://intrepidusgroup.com/insight/2013/06/kony-2013-a-different-kind-of-android-reversing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iSniff your Wi-Fi and GPS your House</title>
		<link>http://intrepidusgroup.com/insight/2013/05/isniff-your-wi-fi-and-gps-your-house/</link>
		<comments>http://intrepidusgroup.com/insight/2013/05/isniff-your-wi-fi-and-gps-your-house/#comments</comments>
		<pubDate>Fri, 10 May 2013 13:52:37 +0000</pubDate>
		<dc:creator>dschuetz</dc:creator>
				<category><![CDATA[Geolocation]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Risk Analysis]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Wireless]]></category>

		<guid isPermaLink="false">http://intrepidusgroup.com/insight/?p=3728</guid>
		<description><![CDATA[It&#8217;s been a while since I thought much about location-based services on iOS systems, in particular their privacy implications. Of course &#8220;Locationgate&#8221; happened back in March 2011, when researches called public attention to a database of location points saved on iPhones. A year later, Mark Wuergler reported on a possible information leak where iOS devices [...]]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s been a while since I thought much about location-based services on iOS systems, in particular their privacy implications. Of course <a href="http://darthnull.org/2011/04/25/analysis-of-ios-location-data">&#8220;Locationgate&#8221;</a> happened back in March 2011, when researches called public attention to a database of location points saved on iPhones. A year later, <a href="http://arstechnica.com/apple/2012/03/loose-lipped-iphones-top-the-list-of-smartphones-exploited-by-hacker/">Mark Wuergler reported</a> on a possible <a href="http://arstechnica.com/apple/2012/03/anatomy-of-an-iphone-leak/">information leak</a> where iOS devices disclosed the MAC addresses (more properly, BSSIDs) of the last few access points they&#8217;d linked to.</p>
<p>These two issues were brought together last summer, at the Black Hat Arsenal, when <a href="https://twitter.com/hubert3">Hubert Seiwert (@hubert3)</a> presented a tool called iSniff GPS. The tool was described in more detail <a href="http://www.syscan.org/index.php/download/get/01ae5e17eb08ac1d591537177d4fe2b7/SyScan2013_DAY1_SPEAKER06_Hubert_iSniff_GPS-Virtual_Wardriving-Syscan_2013_Slides.zip">at Syscan in Singapore</a> just a couple of weeks ago, but finally came to my attention in a tweet Wednesday night pointing me to <a href="http://www.scmagazine.com.au/News/342593,tool-reveals-apple-user-locations.aspx">SC Magazine (Australia)</a>.</p>
<p>Intrigued, I spent some time yesterday installing the iSniff tool and putting it through its paces, and have a few thoughts I&#8217;d like to share.</p>
<div id="attachment_3735" class="wp-caption aligncenter" style="width: 310px"><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/05/iSniffSSID.png"><img class="size-medium wp-image-3735" alt="You can easily map access points by name using queries to the WiGLE database." src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/05/iSniffSSID-300x201.png" width="300" height="201" /></a><p class="wp-caption-text">You can easily map access points by name using queries to the WiGLE database.</p></div>
<p>The iSniff GPS tool contains two main components: A sniffer, and a GUI. The sniffer watches for leaked ARP packets, identifies the BSSIDs they&#8217;re probing for, and fetches information about them from Apple. The web-based GUI (built on Django) shows you the devices that have been &#8220;noticed&#8221; on the local network, and lists networks those devices have visited. When a probed network was matched in Apple&#8217;s database, a link will also take you to a visualization of all the data Apple has on file regarding that access point&#8217;s location.</p>
<p>After installing the tool, I took an old access point, connected my laptop directly to it, and joined a few iOS devices to see what happened. The tool was definitely working as designed &#8212; devices immediately appeared in the list, along with a list of BSSIDs each client probed for. Clicking on each client in the list displays a detail screen with latitude and longitude for each network BSSID found in the Apple DB, and a link to display the information on a map. Another tab pivots the data, listing it by network (with the relevant clients next to each), while other tabs offer direct mapping of selected BSSIDs and even searching and mapping of the <a href="http://wigle.net/">wigle.net</a> SSID database.</p>
<div id="attachment_3734" class="wp-caption aligncenter" style="width: 310px"><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/05/iSniffClients.png"><img class="size-medium wp-image-3734" alt="Clients detected, and the APs they queried for (anonymized, obviously)." src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/05/iSniffClients-300x73.png" width="300" height="73" /></a><p class="wp-caption-text">Clients detected, and the APs they queried for (anonymized, obviously).</p></div>
<p>Interestingly enough, none of the access points the devices queried were in Apple&#8217;s database. The access point at work was found in the WiGLE DB (listed both by name and BSSID), but not in the Apple DB. My home access point didn&#8217;t show up in either database, despite having several iOS devices connecting on a daily basis, not to mention multiple visiting family members most of whom have iOS devices as well. [<b>Note:</b> Not entirely correct, see update below.]</p>
<p>However, another network in the building did show up in Apple&#8217;s DB, and I was also able to accurately geolocate several access points near our sister company (iSEC Partners) in Manhattan. Perhaps there hasn&#8217;t been enough traffic by our building in the year since we moved in? We just haven&#8217;t been reported frequently enough to be included in the database?</p>
<div id="attachment_3730" class="wp-caption aligncenter" style="width: 386px"><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/05/Test-AP-Geloocated.png"><img class="size-full wp-image-3730" alt="The red dot is where Apple thinks the AP is (it's actually inside the left edge of the nearby building)" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/05/Test-AP-Geloocated.png" width="376" height="261" /></a><p class="wp-caption-text">The red dot is where Apple thinks the AP is (it&#8217;s actually just inside the adjacent building)</p></div>
<p>That&#8217;d be a great theory, except that the BSSID for the access point I was testing with also appeared in the Apple DB. That seemed really odd, since this AP is almost never on, and when it is, it&#8217;s rarely for more than a few days at a stretch, and almost never accessed by anything other than my own devices. Occasionally it&#8217;ll be set up as &#8220;attwifi&#8221; for testing, and I&#8217;ll get a few people in doctors&#8217; offices connecting (and enjoying free internet access), but that&#8217;s probably no more than a dozen devices, all told, ever. Finally, the AP gets brought to the beach every year (and lots of people use it there) but that&#8217;s obviously a totally different location, and even then, not more than a couple dozen additional devices. And again, only for a week.</p>
<p>So why is an access point, active 24&#215;7 for over a year, not in the database, and another one, in use for maybe 3 or 4 weeks total time over the same year (and one of those weeks in a different state), not in the database? There&#8217;s definitely some odd criteria in play here that I haven&#8217;t yet been able to guess at.</p>
<p>What does all this mean? It&#8217;s clear that the Apple BSSID database has real utility: It helps devices quickly, and more accurately, determine exactly where they are. There might be a way that Apple could restrict how queries are performed on the database, but it&#8217;s possible that would be difficult to do effectively. And of course, Apple isn&#8217;t the only entity maintaining such a database. Trying to keep your AP information out of a publicly-accessible database just isn&#8217;t going to happen.</p>
<p>On the other hand, the leakage of the BSSID data when a device joins another network is a little harder to justify. What exactly is the utility the user gets from this? A faster recognition by the device that it&#8217;s on a network it knows? What services benefit from this, and to what degree? It may well be acting in accordance with <a href="http://www.ietf.org/rfc/rfc4436.txt">RFC 4436</a>, but that doesn&#8217;t necessarily make it right (and very few, if any, Android devices exhibit the same behavior).</p>
<p>Ultimately, the real question is whether the daily benefit to the end user outweighs the risk that the location of their home, or school, or workplace, might be disclosed to an eavesdropper at a coffee shop. Which, in a strict risk analysis, probably falls far short of requiring elimination of the leakage. Perhaps it could be mitigated with a user preference setting, but this problem is pretty esoteric even for information security researchers, and I suspect clearly describing the problem (and its implications) to the average user in the space of a few lines on a preference pane would be flat-out impossible.</p>
<p>At any rate, this is a very interesting demonstration of fusing publicly-accessible data from multiple sources to gain information not otherwise explicitly revealed. And that in itself definitely makes the <a href="https://github.com/hubert3/iSniff-GPS">iSniff GPS tool</a> worth checking out.</p>
<p><b>Quick Update, 5/13/2013</b>: I was out of town over the weekend, but now have done a little more checking, based on Hubert&#8217;s comments below and on Twitter.</p>
<p>Turns out, of the two networks at work (open/guest and closed/employees), one of the guest BSSIDs is in Apple&#8217;s DB, but none of the closed BSSIDs are, which still seems odd to me. Of four neighboring business&#8217; BSSIDs checked, all four are in Apple&#8217;s DB. And I looked again for my home AP, and it was in there &#8212; I&#8217;d been querying the wrong MAC address. <img src='http://intrepidusgroup.com/insight/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>So the AppleDB is a little more complete than I&#8217;d thought, though there&#8217;s still something keeping our main work net from showing up.</p>
<p>And I also verified that the ARP queries being sent out by iOS devices upon joining the network are not for our local APs, but for the router / DNS server (which are both the same here). So for places where the router / DNS is also the Wi-Fi access point (many, many places), the ARP disclosure can lead to geolocation via Apple&#8217;s DB. But where the Wi-Fi and router / DNS are split to multiple devices, it&#8217;s a bit harder to find.</p>
]]></content:encoded>
			<wfw:commentRss>http://intrepidusgroup.com/insight/2013/05/isniff-your-wi-fi-and-gps-your-house/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Securing Mobile Hotspots, Part 1</title>
		<link>http://intrepidusgroup.com/insight/2013/05/securing-mobile-hotspots-part-1/</link>
		<comments>http://intrepidusgroup.com/insight/2013/05/securing-mobile-hotspots-part-1/#comments</comments>
		<pubDate>Tue, 07 May 2013 17:19:32 +0000</pubDate>
		<dc:creator>mxs</dc:creator>
				<category><![CDATA[Mobile Device Management]]></category>
		<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[OWASP]]></category>
		<category><![CDATA[Wireless]]></category>

		<guid isPermaLink="false">http://intrepidusgroup.com/insight/?p=3721</guid>
		<description><![CDATA[Mobile hotspots are awesome. They allow the user to connect any WiFi-enabled device to a high-speed 4G network. Anywhere. Maybe that’s one reason we see so many hitting the shelves. A significant number of these devices are equipped with advanced capabilities, such as media sharing or location-based services. But even without these capabilities, mobile hotspots [...]]]></description>
				<content:encoded><![CDATA[<p>Mobile hotspots are awesome. They allow the user to connect any WiFi-enabled device to a high-speed 4G network. Anywhere. Maybe that’s one reason we see so many hitting the shelves. A significant number of these devices are equipped with advanced capabilities, such as media sharing or location-based services. But even without these capabilities, mobile hotspots are a tinkerer’s dream. It’s a WiFi radio, cellular (3G and 4G) radio, embedded OS, and web server, all rolled into one sweet package. So much to look at! Without pointing out particular vulnerabilities that we&#8217;ve found, we’re going to cover several weak points that we see across the board in these devices and provide some advice for testers and developers.</p>
<p><strong>Weak admin controls</strong><br />
While a router’s webapp isn’t a fully internet-exposed attack surface, it isn’t ideal if sharing your hotspot with someone you think you can trust leads to a total compromise of your data. Most hotspots have an admin password &#8212; we like to see a different password for the admin interface and for WPA. Otherwise, what’s the point of an admin interface? &lt;oprah&gt;You get admin, and you get admin, and&#8230;.&lt;/oprah&gt; Once the passwords are different, it shouldn’t be easy to bypass the password prompt altogether. Here is <a href="http://thexploit.com/secdev/t-mobile-4g-hotspot-multiple-vulnerabilities/">a great example</a>. Researcher Dustin Schultz found that an unprivileged user can access the WiFi password and administrative settings by adding a ‘/’ to the end of any URL. We’ve seen this <a href="http://osvdb.org/83986">take many forms</a>, and allow anything from faking the admin cookie to disclosure of the actual admin password.</p>
<p><strong>Common web-app vulns</strong><br />
The router’s web interface is private, right? Right? Unfortunately, <a href="https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)">Cross-Site Request Forgery (CSRF)</a> attacks can originate from outside the network, and ultimately send data on your behalf. If you are logged in as the administrative user, CSRF can be used to change access point security, administrative passwords, or execute denial-of-service (DoS) attacks. CSRF attacks have been well-documented, and the OWASP site has plenty of examples and <a href="https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet">remediations</a>, the most basic of which is to include anti-CSRF tokens with every request. This allows the webserver to verify that the request is coming from the actual page, not from a pre-crafted static request which is embedded in a website.</p>
<p><strong>WiFi Protected Setup</strong><br />
Many modern routers STILL have Wifi-Protected Setup (WPS) enabled by default. The purpose of WPS is to allow users to connect to the Access Point using an 8-digit WPS PIN instead of a WPA(2) network key. Unfortunately, a <a href="https://code.google.com/p/reaver-wps/">very public design flaw</a> in the protocol allows the PIN to be brute forced because it is sent and verified 4 digits at a time. This results in the router giving out the WPA key for the network. Lucky for us, some routers do have an option to disable WPS. Unlucky for us, some of those routers respond to WPS protocol requests even after WPS has been disabled. To mitigate the problem, OEMs should make sure that users have an option to disable WPS and that the device does not respond to requests after it’s disabled.</p>
<p>We’ll be publishing some more issues next week, including command injection, UPnP, and DNS rebinding!</p>
<p>Cheers,<br />
Max and Rohan</p>
]]></content:encoded>
			<wfw:commentRss>http://intrepidusgroup.com/insight/2013/05/securing-mobile-hotspots-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing NFC Input Vectors</title>
		<link>http://intrepidusgroup.com/insight/2013/04/testing-nfc-input-vectors/</link>
		<comments>http://intrepidusgroup.com/insight/2013/04/testing-nfc-input-vectors/#comments</comments>
		<pubDate>Tue, 30 Apr 2013 09:02:42 +0000</pubDate>
		<dc:creator>mmanning</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://intrepidusgroup.com/insight/?p=3698</guid>
		<description><![CDATA[Can we agree that NFC is here to stay? Just about every mobile platform supports it, (I&#8217;m looking at you Apple) including simple feature phones from way back when . Let me just get to the good part: NFC input vectors for pen-testing. The scenario here is a mobile application that supports some kind of NFC exchange. Maybe [...]]]></description>
				<content:encoded><![CDATA[<p>Can we agree that NFC is here to stay? Just about every mobile platform supports it, (I&#8217;m looking at you Apple) including simple feature phones <a title="from" href="http://www.engadget.com/2011/08/18/nokia-gifts-museum-of-london-with-nfc-tags-makes-you-tap-for-mo/">from</a> <a title="way" href="http://www.nfcworld.com/nfc-phones-list/#museum">way</a> <a title="back" href="http://www.gsmarena.com/nokia_600-4118.php">back</a> <a title="when" href="http://en.wikipedia.org/wiki/Nokia_6131">when</a> . Let me just get to the good part: NFC input vectors for pen-testing. The scenario here is a mobile application that supports some kind of NFC exchange. Maybe it&#8217;s a Windows Phone 8 tag reader or something using Android Beam &#8212; whatever. The point is that the mobile app is receiving input from an outside source (the NFC tag), and we want to make sure it&#8217;s properly validating that input. Specifically, when an application reads in the NDEF (or proprietary) content from the NFC tag, how is it used by the application? What happens when we change this value to something unexpected? In an ideal world, it will catch the exception and stop trying to read the tag, but what about in the case of &#8220;less than ideal&#8221; programming.</p>
<h1>Tools</h1>
<p>To get started we need something that can read and write NFC tags. Sorry, iPhone users, but the easiest way to do this as I see it is to use an Android device and a few choice apps:</p>
<h2>NXP NFC TagInfo</h2>
<p>Does exactly what its name implies. It gives you info on an NFC tag. This includes any kind of ASCII characters inside of the NDEF storage container or a hex representation of the values if that&#8217;s your thing. This is step 1 when it comes to learning about the content that&#8217;s on an NFC tag. <a href="https://play.google.com/store/apps/details?id=com.nxp.taginfolite&amp;hl=en">Play store link</a>.</p>
<h2>NXP NFC Tag Writer</h2>
<p>NXP&#8217;s tag writer will read, write, and copy tags. When I say copy, I mean it will copy the NDEF format. That&#8217;s the content that&#8217;s normally on an NFC tag. Hard coded values like the UID can&#8217;t be changed (unless you know where to get <a href="http://via.me/-2gtpp82">sketchy NFC tags</a> and even then you need a libNFC-based tool to interface with it). <a href="https://play.google.com/store/apps/details?id=com.nxp.nfc.tagwriter&amp;hl=en">Play store link</a>.</p>
<h2>NFC Developer</h2>
<p>This is where the fun happens. This app allows you to design just about any NDEF formatted NFC tag you want. The nice part of this is if there is an application implementing a weird custom format, you can create it. It&#8217;s made by Thomas Skjolberg who apparently has a whole workshop on the subject that gets you started with NFC on Android.</p>
<p>Used in partnership with the <a href="http://ndefeditor.com/">ndefeditor.com</a> site, the app lets you generate just about any NFC tag you can think of and then record it to a tag. Or you can use the Eclipse Plugin  that does the same thing inside of Eclipse. Very useful.</p>
<p>Create a new tag in Eclipse by going to New&gt;Other&gt;NDEF File</p>
<p style="text-align: center;"><a href="http://www.antitree.com/wp-content/uploads/2013/04/blog1.png"><br />
</a><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/04/blog1.png"><img class="aligncenter  wp-image-3717" alt="blog1" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/04/blog1.png" width="314" height="299" /></a></p>
<p>Fill the file with whatever contents you want or whatever the application can handle. This may be a specific MIME type like below or a Android Application Resource (AAR)&#8230; or many other things for that matter.<br />
<a href="http://www.antitree.com/wp-content/uploads/2013/04/blog5.png"><br />
</a><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/04/blog5.png"><img class="aligncenter size-medium wp-image-3713" alt="blog5" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/04/blog5-300x192.png" width="300" height="192" /></a></p>
<p>Once you&#8217;re done, it&#8217;ll create a QR code for you that you can scan with the NFC Developer application installed on your device.</p>
<p><a href="http://www.antitree.com/wp-content/uploads/2013/04/blog3.png"><br />
</a><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/04/blog3.png"><img class="aligncenter size-medium wp-image-3716" alt="blog3" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/04/blog3-168x300.png" width="168" height="300" /></a></p>
<p>You&#8217;ll now be able to load your custom NDEF message onto an NFC tag of your choice.</p>
<p><a href="https://play.google.com/store/apps/details?id=com.antares.nfc&amp;hl=en">Link</a></p>
<h2>Tags</h2>
<p>If you&#8217;re using Android, you don&#8217;t necessarily need to write your content to physical tags. It&#8217;s possible to manually create intents that look like the device is receiving an NFC tag. But since we&#8217;re talking about testing any NFC function on *any* platform, you&#8217;ll need to pick up some NFC tags. The NFC protocol itself supports a &#8220;card emulation&#8221; mode where you could theoretically turn your Android phone into a simple NFC tag, but from what I understand, it&#8217;s either extremely hard to do or impossible right now because it&#8217;s based on the NFC secure element that is manufacturer specific. If someone wants to enlighten me on that, please feel free.</p>
<p>You&#8217;ll want a variety of tag types. The main difference you&#8217;ll be concerned about here is just the amount of storage. The Mifare 4K have a reasonably large storage capacity and can still deliver the data in the same way that a Mifare Classic (1K). Maybe there&#8217;s a situation where you&#8217;ll need a special tag type but I haven&#8217;t run into that yet. Either way, here&#8217;s a random <a href="http://rapidnfc.com/cat/15/nfc_starter_packs">link to some tags</a>.<em id="__mceDel"> </em></p>
<h1>Bad Code:</h1>
<p>Lets take a look at some example code for Android that we&#8217;re trying to exploit. This is a portion of code that is reading an NFC tag, and saving to a file name based on that input. You can see that the value of &#8220;strfile1&#8243; is whatever the first NDEF record is. What happens if that payload was something like &#8220;../databases/superimportantcontent.db&#8221;.  Even worse, the app looks at the second value of the NDEF record for the content to write to.<br />
<pre><pre class="lang:java decode:true">Parcelable[] rawMsgs = intent.getParcelableArrayExtra(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NfcAdapter.EXTRA_NDEF_MESSAGES);
NdefMessage msg = (NdefMessage) rawMsgs[0];
String payload = new String(msg.getRecords()[0].getPayload());

String strfile1 = getApplicationContext().getFilesDir().getAbsolutePath() + payload ; //is this bad? :)
File f1 = new File(strfile1);
FileWriter filewriter = new FileWriter(f1);
BufferedWriter out = new BufferedWriter(filewriter);
out.write(msg.getRecords()[1].getPayload());
out.close();</pre></pre><br />
Lets imagine that this app stores a textfile of SSH hosts to connect to. In this case, we could create a custom NFC tag that would have a first record of the path we want to access (&#8220;SSH.txt&#8221;) and the second record would be the values to put inside of this file (your malicious SSH MiTM proxy). Having a user read your custom tag would redirect their connections to you.</p>
<p>Happy hacking.</p>
]]></content:encoded>
			<wfw:commentRss>http://intrepidusgroup.com/insight/2013/04/testing-nfc-input-vectors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOS Configuration Profile Ransomware</title>
		<link>http://intrepidusgroup.com/insight/2013/04/ios-configuration-profile-ransomware/</link>
		<comments>http://intrepidusgroup.com/insight/2013/04/ios-configuration-profile-ransomware/#comments</comments>
		<pubDate>Thu, 11 Apr 2013 15:40:29 +0000</pubDate>
		<dc:creator>dschuetz</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[Phishing]]></category>

		<guid isPermaLink="false">http://intrepidusgroup.com/insight/?p=3686</guid>
		<description><![CDATA[A couple of months ago, at ShmooCon 2013, Tim Medin gave a great short talk titled &#8220;Apple iOS Certificate Tomfoolery.&#8221; One of the most interesting ideas I took away from this talk was the idea of ransomware delivered through a configuration profile. Briefly, configuration profiles can be used to control many aspects of an iOS [...]]]></description>
				<content:encoded><![CDATA[<p>A couple of months ago, at ShmooCon 2013, Tim Medin gave a great short talk titled &#8220;<a href="http://www.shmoocon.org/2013/videos/Shmoocon%202013%20-%20Apple%20iOS%20Certificate%20Tomfoolery.mp4">Apple iOS Certificate Tomfoolery</a>.&#8221; One of the most interesting ideas I took away from this talk was the idea of ransomware delivered through a configuration profile. Briefly, configuration profiles can be used to control <a href="http://developer.apple.com/library/ios/#featuredarticles/iPhoneConfigurationProfileRef/Introduction/Introduction.html">many aspects of an iOS device&#8217;s configuration</a>. They can enable features, disable features, and even hide applications from the user.</p>
<p>This is the tricky bit: Create a configuration profile that disables Safari, disables installation of applications, even disables iCloud backups, and adds a &#8220;READ ME&#8221; web page to the user&#8217;s home screen. Put a password on the profile, so the user has to enter the password in order to remove it. Now, you just need to convince the user to install the profile, and you can do that simply through email or SMS <a href="http://phishme.com">phishing</a>. Once they install it, half their expected functionality suddenly goes away, and if they tap on the &#8220;READ ME&#8221; page, they&#8217;ll see the instructions as to how to pay ransom to receive the password to remove the profile. Win! (well, not for the user).</p>
<p>Now, fortunately, there are a couple of flags that (might) alert the user that something odd is happening. First, in the initial profile installation screen, is the list of contents, which includes &#8220;Profile Removal Password.&#8221; Similarly, tapping on &#8220;More Details&#8221; clarifies that this is a locked profile. Of course, if the email introducing the profile was written well enough, then the user might already expect and accept this. Hopefully we can train them not to. Also, if the user has a passcode on their device, then they have to enter their passcode as well, so it won&#8217;t simply install without the user noticing.</p>
<p><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/04/photo-1.png"><img class="alignleft size-medium wp-image-3687" alt="photo 1" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/04/photo-1-200x300.png" width="200" height="300" /></a></p>
<p><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/04/photo-2.png"><img class="size-medium wp-image-3688 alignright" alt="photo 2" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/04/photo-2-200x300.png" width="200" height="300" /></a></p>
<p>But what if they ignore all the warnings, and install the profile anyway? Well, all might not yet be lost. Turns out, the removal password is included in the profile, in plaintext. The attacker could choose to encrypt the profile, but to do that they need a public key from the target device, which might not be so easily acquired. So, assuming the profile is not encrypted, just pull down the .mobileconfig file from the original phishing email, open it up, and find the password.</p>
<p><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/04/SooperSekrit.png"><img class="aligncenter size-full wp-image-3689" alt="SooperSekrit" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/04/SooperSekrit.png" width="386" height="202" /></a></p>
<p>Of course, the attacker could get really tricky, and serve up a file with a different password each time, placing some kind of key into the ransom notice (&#8220;Pay me $35 to remove this profile. Use the word &#8216;ostrich&#8217; when you send me your bitcoins&#8221;) and then that key would be used to derive the actual removal password. If this is the case, then each time you hit the page you&#8217;d get something different, and so you wouldn&#8217;t be able to recover the correct password. In that case, the only real way to remove it is either to pay the ransom, or, if the device is jailbroken, get in and remove the profile directly from the filesystem.</p>
<p>In iOS 6.x, a new feature was introduced that can prevent the user from installing profiles. This feature is only available in Supervised Mode (via the Configurator application), however, and so isn&#8217;t of much use to the general population.</p>
<p>Want to hear more about configuration profiles and keeping your iOS devices secure? Come to <a href="http://khanfu.com/event/27/1810">my talk</a> at <a href="http://www.sourceconference.com/boston/">SOURCE Boston</a> next Thursday!</p>
]]></content:encoded>
			<wfw:commentRss>http://intrepidusgroup.com/insight/2013/04/ios-configuration-profile-ransomware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.shmoocon.org/2013/videos/Shmoocon%202013%20-%20Apple%20iOS%20Certificate%20Tomfoolery.mp4" length="258185920" type="video/mp4" />
		</item>
		<item>
		<title>APKTool, make me a logcat sandwich</title>
		<link>http://intrepidusgroup.com/insight/2013/03/apktool-make-me-a-logcat-sandwich/</link>
		<comments>http://intrepidusgroup.com/insight/2013/03/apktool-make-me-a-logcat-sandwich/#comments</comments>
		<pubDate>Fri, 08 Mar 2013 19:57:29 +0000</pubDate>
		<dc:creator>benn</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[Mobile Device Management]]></category>
		<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[Reverse Engineering]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://intrepidusgroup.com/insight/?p=3661</guid>
		<description><![CDATA[I recently turned a few friends on to Zed Shaw&#8217;s &#8220;learn python the hard way&#8221; course and it reminded me how bad of a programmer I can be. In fact, I&#8217;m that guy how litters his code with print statements. So it&#8217;s probably no shock then that a lot of times when I&#8217;m trying to [...]]]></description>
				<content:encoded><![CDATA[<p>I recently turned a few friends on to Zed Shaw&#8217;s &#8220;<a href="http://learnpythonthehardway.org/" target="_blank">learn python the hard way</a>&#8221; course and it reminded me how bad of a programmer I can be. In fact, I&#8217;m that guy how litters his code with print statements. So it&#8217;s probably no shock then that a lot of times when I&#8217;m trying to figure out what&#8217;s going on in an Android app we&#8217;re reversing, that I&#8217;ll want to drop in some print statements. I use to do this by adding a few lines of <a href="https://code.google.com/p/smali/" target="_blank">smali</a> directly into a class file, but there were a few things I needed to deal with for that to work how I wanted it. For example, here is what the default &#8220;debug&#8221; log call looks like in smali.<br />
<code>invoke-static {v0, v1}, Landroid/util/Log;-&gt;d(Ljava/lang/String;Ljava/lang/String;)I</code><br />
If you were going to drop this line into the code somewhere, you would need to make sure both v0 and v1 are <a href="http://developer.android.com/reference/java/lang/String.html" target="_blank">Strings</a>. I would typically want &#8220;v1&#8243; to be the string I wanted logged out, and &#8220;v0&#8243; (in this example) to be the log &#8220;Tag&#8221; value so I knew where I was in the code when it was dumped to the log (I may have a dozen or so values getting logged out, so this helps to keep things straight when you see them in the logs). Setting up this Tag string and not stomping on things sometimes meant I needed to increase the local variable count and add some more lines for setting the string and then making sure I got the register/variables correct in that previous logging line. This worked alright if it wasn&#8217;t too late in the night or I had enough <a href="http://joltgum.com/index.html" target="_blank">caffeine</a> in me, but I typically would screw something up and would end up recompiling a bunch of times. I wanted an easier way and something that could deal with logging out things that weren&#8217;t already strings.</p>
<p>Thus I created this <a href="https://github.com/b3nn/IGLogger/blob/master/iglogger.java">simple class file</a> I can drop into the root of any application (yes, this is not as good as a <a href="https://github.com/swdunlop/AndBug" target="_blank">real debugger</a> using JDWP, but sometimes doing things quick and dirty gets the job done quicker for me). I wanted to stay with Android log utility syntax, but simplified a few things. I overloaded the logging object&#8217;s &#8220;d&#8221; method so that it could take just about any variable type I was dealing with. One handy example of this is a byte arrays (which is often what we find decryption keys stored in). The wrapper in IGLogger will convert the byte array into a hex string and dump that to the logs. All you need to add is one statement to the code. If &#8220;v0&#8243; contained a byte array we wanted printed out, just drop this line of code.<br />
<code>invoke-static {v0}, Liglogger;-&gt;d([B)I</code><br />
Since &#8220;<a href="https://github.com/b3nn/IGLogger/blob/master/iglogger.smali" target="_blank">iglogger.smali</a>&#8221; is in the root of the recompiled APK, we can statically invoke it from any other class in the project. In this case, we need to tell the &#8220;d&#8221; method v0 is a byte array &#8220;[B" and sticking with the standard Android logging utility class, we're returning an Integer (although I've thought about just making that a Void... I never check it). You may notice we're not passing a log Tag variable with this statement. IGLogger supports that if you want, but we've added a trick to IGLogger that I find works pretty well. In IGLogger, we'll create a new Throwable object, get the getStackTrace method to find out the last class and method we were in, and put that in our log Tag. If the APK is not obfuscated, this will even include a line number. This same trick allows for a very simple "hey, I got here and this is how" stack trace method to be dumped by placing this one line of code anywhere.<br />
<code>invoke-static {}, Liglogger;-&gt;d()I</code><br />
You might have heard a lot of us here are fans of <a href="http://www.virtuous-ten-studio.com/" target="_blank">Virtuous Ten Studio</a> for working with smali. I have a bunch of these IGLogger print statements in  Extras-&gt;Smali-&gt;CodeSnippets. Makes it really simple to just click and drop in a log statement.</p>
<p>But that wasn&#8217;t good enough for Niko here when we had a massively huge app that was obfuscated. He talked me into automating the process of logging out each class and method that was entered so we could watch the logs and know what code paths were being taken. I ended up rolling this into a Python script I had written to &#8220;fix strings&#8221; in decompiled Android apps. You are probably aware that proper Android apps will have their strings placed into XML files so that it&#8217;s easier to internationalize the application. While this might be nice for developers, it means when we&#8217;re reversing an application, we may end up with some strange hex value instead of a readable string. &#8220;FixStrings.py&#8221; would loop through the decompiled code and add these strings back in as a comment tag when ever they showed up in the smali code. Your mileage may vary with how well this works, but in some apps, it helped us find things easier.</p>
<p>Adding on to that code base, I started to include some code to automatically add IGLogger statements around things I thought could be interesting. This includes a log statement after the &#8220;prologue&#8221; of any method. Also, any time we see two strings being compared, we&#8217;ll log both strings (this is always fun for watching a password being checked or when the app pulls up device info to see if it&#8217;s running on the right hardware). We plan to add a few more things for dumping Intent messages and URLs, but this is a start for now.</p>
<p>This of course will make the app run hella slow, fill up logcat, and in some cases break the application. I&#8217;ve tried to avoid that last one as best I can for now, but it is possible this script will massacre an APK so badly it will be unrunnable. If you run into that issue, you can turn off the lines that will add these automatic logging statements to the code (ie, <i>JonestownThisAPK = False</i>).</p>
<p>The last thing we added to the Python script was some searches to pull out info we may find interesting when assessing an APK file. We dump this into a file called &#8220;apk-ig-info.txt&#8221; and review it after decompiling the APK. Again, this is something we&#8217;re continuing to refine. You can find the code on the Intrepidus Group github repo:</p>
<p><a href="https://github.com/intrepidusgroup/IGLogger" target="_blank">https://github.com/intrepidusgroup/IGLogger</a></p>
<p><a href="https://github.com/intrepidusgroup/APKSmash" target="_blank">https://github.com/intrepidusgroup/APKSmash</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://intrepidusgroup.com/insight/2013/03/apktool-make-me-a-logcat-sandwich/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Armor for Your Android Apps &#8211; ShmooCon follow-up</title>
		<link>http://intrepidusgroup.com/insight/2013/02/armor-for-your-android-apps-shmoocon-follow-up/</link>
		<comments>http://intrepidusgroup.com/insight/2013/02/armor-for-your-android-apps-shmoocon-follow-up/#comments</comments>
		<pubDate>Wed, 27 Feb 2013 18:26:23 +0000</pubDate>
		<dc:creator>niko</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Fun and Games]]></category>
		<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://intrepidusgroup.com/insight/?p=3633</guid>
		<description><![CDATA[Hopefully, everyone’s already decompressed from all the Shmoocon partying by now. I wanted to follow up on the IG Learner app that I presented during my “Armor for your Android Apps” talk and give out a couple of tips on how to approach cracking the challenges (which aren’t all that hard, really). Before I dive [...]]]></description>
				<content:encoded><![CDATA[<p>Hopefully, everyone’s already decompressed from all the Shmoocon partying by now. I wanted to follow up on the IG Learner app that I presented during my “Armor for your Android Apps” talk and give out a couple of tips on how to approach cracking the challenges (which aren’t all that hard, really).<br />
Before I dive into the meat of the lessons, I just wanted to point out that if you didn’t attend the conference but still want the app, you can get it from the Play Store:</p>
<p><a href="https://play.google.com/store/apps/details?id=com.intrepidusgroup.learner">https://play.google.com/store/apps/details?id=com.intrepidusgroup.learner</a></p>
<p style="text-align: center;"><a href="http://intrepidusgroup.com/insight/wp-content/uploads/2013/02/qrcode.png"><img class=" wp-image-3638 aligncenter" alt="qrcode" src="http://intrepidusgroup.com/insight/wp-content/uploads/2013/02/qrcode-300x300.png" width="240" height="240" /></a></p>
<p>So, you’ve got everything installed and running. At this point you have two options &#8211; take the easiest way and hit the walkthrough or try to dig through the lessons yourself. I intended for the walkthrough to serve as a helper thing, but if you’d like to just use it to run through the whole thing, sure, that’s an option, too. The link to the walkthrough is provided at the end of this post.</p>
<p>In if you want to do it yourself but are not sure where to start, here’s a few general tips:</p>
<p>1. You will end up using Android SDK / Android monitor (monitor.bat) very heavily. I am guessing that by now you have that installed on your system anyway.</p>
<p>2. Use dex2jar (<a href="http://code.google.com/p/dex2jar/">http://code.google.com/p/dex2jar/</a>) to convert APK’s Dalvik executables (*.dex) into their Java representation &#8211; since the code is not obfuscated, this will really help you understand the logic of the lessons.</p>
<p>3. Apktool (<a href="http://code.google.com/p/dex2jar/">http://code.google.com/p/dex2jar/</a>) &#8211; this command-line utility lets you decompile APKs and recompile them back. You’ll definitely need this on a few occasions.</p>
<p>4. Jarsigner &#8211; comes with Java SDK, is necessary to install an app on an Android device. Read here about signing of APKs: <a href="http://developer.android.com/tools/publishing/app-signing.html">http://developer.android.com/tools/publishing/app-signing.html</a></p>
<p>5. Virtuous Ten Studio (<a href="http://www.virtuous-ten-studio.com/">http://www.virtuous-ten-studio.com/</a>) &#8211; Smali IDE, complete with syntax highlighting / automatic signing / APK upload. Awesomeness redefined. If you want to bypass 3) and 4) and not have to deal with it, go the VTS way. That said, I’d still recommend familiarizing yourself with the command line versions of the tools &#8211; just so that you understand better what’s happening behing the scenes.</p>
<p>6. Some knowledge of Java is definitely helpful for quick completion of challenges.</p>
<p>7. “adb shell pm list packages” gets you the list of packages installed on the phone. IG Learner is one of them.</p>
<p>Now, let’s go to some specific tips per lesson:</p>
<p>1. Lesson 1. This one is pretty self-explanatory. If you start the Android monitor and look at the log output,  you’ll see the answer to the challenge. Easy as that.</p>
<p>2. Lesson 2. Convert the APK into Java and try to figure out the filename that’s being created. Another hint: default directory for Android app file storage is /data/data/&lt;packagename&gt;/files.</p>
<p>3. You can figure out what the URI scheme is just by looking at the lesson screen and requesting a URI. Now try to look through decompiled code (Either Smali or the Java representation) to figure out what the lesson is expecting. Also, pay attention to extra activities in the app.</p>
<p>4. You should use a local proxy to intercept application traffic (Burp Suite maybe?) Keep in mind that you can’t man in the middle SSL traffic unless the SSL certificate presented by the remote server is verified. And for that (at least, for Lesson 4) you need to update your trusted CA store with the signing certificate of your local proxy. Once you export that certificate (there are multiple ways to do it, using Internet Exporer’s certificate export wizard is one of them), you should be able to import into into the trusted CA store by placing it in the root of /sdcard and importing it through the Android’s Trusted Credentials menu.</p>
<p>5. This lesson is a bit trickier. For one of the ways to solve this, I suggest looking through the Smali code and finding the pin for <a href="https://www.intrepidusgroup.com/">https://www.intrepidusgroup.com</a> SSL certificate that you can get by running Moxie Marlinspike’s pin.py script on our certificate. Then you can replace this with your own intercepting proxy certificate’s pin, recompile the app, and push it back to the phone. You’re good to go.</p>
<p>6. Hard-coded keys are awful. Seriously. When you’re playing around with symmetric encryption as you’re trying to find the correct value of the encrypted string, make sure that you convert that to Base64 for readable output. The logging facilities are there to help you.<br />
The encryption can be done in less than 10 lines of Java code. If you’re struggling with that, check out our GitHub repository for a helper Java class.</p>
<p>7. Content providers are advertised in the Manifest. Mercury (<a href="http://labs.mwrinfosecurity.com/tools/2012/03/16/mercury/">http://labs.mwrinfosecurity.com/tools/2012/03/16/mercury/</a>) is a great framework that lets you easily query those providers. This should be enough to successfully complete the challenge.</p>
<p>8. I’d recommend starting with decompilation of the app and looking at the Lesson8Activity. This may give you an idea of what the Intent handler is expecting. From there you can either download the Lesson8Aux app from the Play Store (<a href="https://play.google.com/store/apps/details?id=com.intrepidusgroup.lesson8auxapp" target="_blank">https://play.google.com/store/apps/details?id=com.intrepidusgroup.lesson8auxapp</a>), decompile it, modify it to throw the correct Intent to the application, or just use the “am” command to do just the same. Whichever is easier for you is fine, but I recommend going the auxiliary app way just to gain some more practice exercises decompiling and recompiling Smali code.</p>
<p>Oh, and yeah, the walkthrough (Huge thanks to our intern Nitin for putting it together!). Here it is:</p>
<p><a title="Walkthrough" href="http://goo.gl/DEJS4">walkthrough</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://intrepidusgroup.com/insight/2013/02/armor-for-your-android-apps-shmoocon-follow-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting ready for ShmooCon</title>
		<link>http://intrepidusgroup.com/insight/2013/02/getting-ready-for-shmoocon/</link>
		<comments>http://intrepidusgroup.com/insight/2013/02/getting-ready-for-shmoocon/#comments</comments>
		<pubDate>Tue, 12 Feb 2013 18:20:36 +0000</pubDate>
		<dc:creator>dschuetz</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Cryptography]]></category>
		<category><![CDATA[Fun and Games]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://intrepidusgroup.com/insight/?p=3619</guid>
		<description><![CDATA[It&#8217;s almost time for another ShmooCon, and as usual, we&#8217;ll be out in force for the conference. We won&#8217;t have a booth this year, but we will be milling about, attending talks, and even giving a couple presentations of our own. We might even have a little puzzle to share&#8230;just ask any one of us [...]]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s almost time for another <a href='http://www.shmoocon.org'>ShmooCon</a>, and as usual, we&#8217;ll be out in force for the conference. We won&#8217;t have a booth this year, but we will be milling about, attending talks, and even giving a couple presentations of our own. We might even have a little puzzle to share&#8230;just ask any one of us for details. (David might have a slightly more visible puzzle contest as well, but, well, there were secrecy oaths, threats of retribution, etc., so the less said about that, the better).</p>
<p>Be sure to check out our talks, too. Roman Faynberg will be presenting <a href="http://khanfu.com/event/24/1699">Armor For Your Android Apps</a>, Saturday at 3:00, a discussion of Android vulnerabilities, with plenty of real-life examples and hair-raising war stories, as well as tips and best practices to avoid such problems in development. There&#8217;s even a HackMe-type app to help demonstrate some of the problems.</p>
<p>At exactly the same time (sorry, we couldn&#8217;t control it!), David Schuetz will be presenting on <a href="http://khanfu.com/event/24/1720">Protecting Sensitive Data on iOS Devices</a>. His talk will try to cut through some of the technical mumbo-jumbo and present best practices for configuration, management, and application develoment on iPads and iPhones, with a goal to making it easy to explain to management-types. </p>
<p>We&#8217;re also hiring! Current openings for [testers | consultants | ninjas | pirates] (sorry, no open positions for samurai or lumberjacks). If you&#8217;re interested, chat with one of us at the con, or send us an email at <a href='mailto:careers@intrepidusgroup.com'>careers@intrepidusgroup.com</a>. </p>
<p>So if you&#8217;re going to be at ShmooCon, stop us in the halls and have a chat. We can&#8217;t wait to see you!</p>
]]></content:encoded>
			<wfw:commentRss>http://intrepidusgroup.com/insight/2013/02/getting-ready-for-shmoocon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
