<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>0xdabbad00</title>
		<description></description>		
		<link>http://0xdabbad00.com</link>
		<atom:link href="http://0xdabbad00.com/feed.xml" rel="self" type="application/rss+xml" />
		
			<item>
				<title>Developing Solutions</title>
				<description>&lt;p&gt;For the past decade I&amp;#39;ve been a &amp;quot;software developer&amp;quot;.  But what I really do is &lt;strong&gt;develop solutions&lt;/strong&gt;, which often happen to involve writing some code, but sometimes it doesn&amp;#39;t.  This post is about advice I used to give to new hires that were fresh out of college or were summer interns.&lt;/p&gt;

&lt;h1 id=&quot;code-romance&quot;&gt;Code Romance&lt;/h1&gt;

&lt;p&gt;I decided to write about this after reading &amp;quot;&lt;a href=&quot;http://www.amazon.com/Why-Dont-We-Learn-History/dp/0985081139&quot;&gt;Why Don&amp;#39;t We Learn from History?&lt;/a&gt;&amp;quot; by B. H. Liddel Hart (a great book), when I read the following passage (emphasis mine) about the &lt;a href=&quot;http://en.wikipedia.org/wiki/Arthur_Wellesley,_1st_Duke_of_Wellington&quot;&gt;Duke of Wellington&lt;/a&gt;, who had defeated Napolean:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;quot;It was because he saw the value of peace that he became so unbeatable in war. For he kept the end in view, instead of &lt;strong&gt;falling in love with the means&lt;/strong&gt;. Unlike Napolean, he was not infected by the romance of war, which generates illusions and self-deceptions. That was how Napolean had failed and Wellington prevailed.&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We&amp;#39;ve all heard the phrase &amp;quot;If all you have is a hammer, everything looks like a nail.&amp;quot;  But carpenters don&amp;#39;t romanticize about hammering.  Software developers do romanticize about writing code though.  We think writing lines of code shows that we did something.  We&amp;#39;ve somewhat moved beyond counting lines of code as a way to measure productivity, but you shouldn&amp;#39;t think in terms of code at all.  &lt;/p&gt;

&lt;p&gt;Software developers ultimately create solutions. That can mean fixing a bug, adding a feature, improving scalability, or many other things, but ultimately you are solving a problem.  The merit of your solution has nothing to do with how hard it was for you to do.  Usually it&amp;#39;s the speed that you fixed it, the ability to maintain it, and other characteristics, which usually are the result of doing something in the simplest way possible, and the simplest solution may mean not writing code.&lt;/p&gt;
 &lt;br&gt;...&lt;a href="http://0xdabbad00.com/2015/05/31/developing_solutions/"&gt;Read more ...&lt;/a&gt; </description>
				<pubDate>Sun, 31 May 2015 22:00:00 -0600</pubDate>
				<link>http://0xdabbad00.com/2015/05/31/developing_solutions/</link>
				<guid isPermaLink="true">http://0xdabbad00.com/2015/05/31/developing_solutions/</guid>
			</item>
		
			<item>
				<title>Password Authentication for Go Web Servers</title>
				<description>&lt;p&gt;The stackoverflow question &amp;quot;&lt;a href=&quot;http://stackoverflow.com/questions/25218903/how-are-people-managing-authentication-in-go&quot;&gt;How are people managing authentication in Go?&lt;/a&gt;&amp;quot; has had a few thousand views.  Go&amp;#39;s framework&amp;#39;s (&lt;a href=&quot;http://beego.me/&quot;&gt;beego&lt;/a&gt;, &lt;a href=&quot;https://goji.io/&quot;&gt;goji&lt;/a&gt;, &lt;a href=&quot;http://revel.github.io/&quot;&gt;revel&lt;/a&gt;, &lt;a href=&quot;http://martini.codegangsta.io/&quot;&gt;martini&lt;/a&gt;, &lt;a href=&quot;https://github.com/codegangsta/negroni&quot;&gt;negroni&lt;/a&gt;, &lt;a href=&quot;http://gin-gonic.github.io/gin/&quot;&gt;gin&lt;/a&gt;) do not have anything you should use built-in.  Other languages have a common capability for a &amp;quot;classic&amp;quot; password authentication scheme.&lt;/p&gt;

&lt;p&gt;A &amp;quot;classic&amp;quot; scheme requires a username (could be email address) and password, that is stored in a database (with the password hashed).  A cookie is stored in the user&amp;#39;s browser to identify them, so they don&amp;#39;t need to retype their credentials, and that cookie information is verified on the server.  &lt;strong&gt;This post will look at what is available in Go (golang).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This will not get into the debate about not using passwords at all (such as using &lt;a href=&quot;http://sakurity.com/blog/2015/04/10/email_password_manager.html&quot;&gt;password reset emails only&lt;/a&gt;, using &lt;a href=&quot;https://www.scriptjunkie.us/2014/10/replacing-passwords-with-easyauth/&quot;&gt;client certificates&lt;/a&gt;, or using things like OAuth).  It&amp;#39;s mostly just to help those auditing existing systems.&lt;/p&gt;
 &lt;br&gt;...&lt;a href="http://0xdabbad00.com/2015/04/23/password_authentication_for_go_web_servers/"&gt;Read more ...&lt;/a&gt; </description>
				<pubDate>Thu, 23 Apr 2015 14:00:00 -0600</pubDate>
				<link>http://0xdabbad00.com/2015/04/23/password_authentication_for_go_web_servers/</link>
				<guid isPermaLink="true">http://0xdabbad00.com/2015/04/23/password_authentication_for_go_web_servers/</guid>
			</item>
		
			<item>
				<title>Go code auditing</title>
				<description>&lt;p&gt;In the book &amp;quot;&lt;a href=&quot;http://www.amazon.com/Art-Software-Security-Assessment-Vulnerabilities/dp/0321444426&quot;&gt;The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities&lt;/a&gt;&amp;quot; from 2007, the authors &lt;a href=&quot;https://twitter.com/mdowd&quot;&gt;Mark Dowd&lt;/a&gt;, John McDonald, and &lt;a href=&quot;https://twitter.com/justinschuh&quot;&gt;Justin Schuh&lt;/a&gt;, discuss where to look for common trouble spots that affect all web platforms.  They discuss CGI (when a web server used to directly call an executable), Perl, PHP, Java, ASP, and ASP.NET. They focus on a couple of fairly common application features, where when things go wrong, they usually go horribly wrong, so you should look for these techniques specifically.  This post hopes apply that same methodology to Go (golang).  This post builds on my previous post &lt;a href=&quot;http://0xdabbad00.com/2015/04/12/looking_for_security_trouble_spots_in_go_code/&quot;&gt;Looking for security trouble spots in Go code&lt;/a&gt; which was focused on looking for problems that would be specific to Go.&lt;/p&gt;
 &lt;br&gt;...&lt;a href="http://0xdabbad00.com/2015/04/18/go_code_auditing/"&gt;Read more ...&lt;/a&gt; </description>
				<pubDate>Sat, 18 Apr 2015 14:00:00 -0600</pubDate>
				<link>http://0xdabbad00.com/2015/04/18/go_code_auditing/</link>
				<guid isPermaLink="true">http://0xdabbad00.com/2015/04/18/go_code_auditing/</guid>
			</item>
		
			<item>
				<title>Application White-Listing Expectations</title>
				<description>&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;: Lower your expectations.&lt;/p&gt;

&lt;p&gt;In infosec, one definition of an exploit is something that takes advantage of a flaw.  To be a &amp;quot;flaw&amp;quot;, it must be unexpected behavior, and to &amp;quot;take advantage&amp;quot;, it must result in greater privileges.&lt;/p&gt;

&lt;p&gt;Many discussions of exploits, bypasses, or attacks on white-listing systems show what they would claim is unexpected behavior because I believe many &lt;strong&gt;people&amp;#39;s expectations of application white-listing are too high&lt;/strong&gt;.  For example, there are many posts about using powershell to bypass white-listing solutions.  How did they get the powershell script there in the first place and give it execution?  Many of these posts can be summarized as &amp;quot;Given arbitrary code execution, I was able to get arbitrary code execution.&amp;quot;  If you obtained no new privileges, is this an exploit? Was any of this unexpected?  Perhaps you gained an easier persistence mechaninism, so that&amp;#39;s a new privilege, but after the point where you have arbitrary code execution, you&amp;#39;ve probably passed the point where application white-listing should be considered useful.&lt;/p&gt;
 &lt;br&gt;...&lt;a href="http://0xdabbad00.com/2015/04/16/application_white-listing_expectations/"&gt;Read more ...&lt;/a&gt; </description>
				<pubDate>Thu, 16 Apr 2015 14:00:00 -0600</pubDate>
				<link>http://0xdabbad00.com/2015/04/16/application_white-listing_expectations/</link>
				<guid isPermaLink="true">http://0xdabbad00.com/2015/04/16/application_white-listing_expectations/</guid>
			</item>
		
			<item>
				<title>Looking for security trouble spots in Go code</title>
				<description>&lt;p&gt;Different languages have certain areas where mistakes are commonly made, and which code auditors focus on.  With C, you might grep for &lt;code&gt;strcpy&lt;/code&gt; and &lt;code&gt;memcpy&lt;/code&gt;.  With ruby, you might look for regex that use &lt;a href=&quot;http://guides.rubyonrails.org/security.html#regular-expressions&quot;&gt;^ and $ instead of \A and \z&lt;/a&gt;.  The use of those functions or idioms are not always vulnerabilities, but are good places to check first.  I decided to look for such trouble spots for Go (golang).  &lt;strong&gt;I did not find any&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;Go has a lot going for it in terms of security, such as &lt;a href=&quot;https://golang.org/doc/faq#no_pointer_arithmetic&quot;&gt;no pointer arithmetic&lt;/a&gt;, no manual memory management, a standard library that seems fairly well thought out and purposefully excludes things that are misused (ex. &lt;a href=&quot;https://code.google.com/p/go/issues/detail?id=5597&quot;&gt;no ECB mode for AES&lt;/a&gt;), and put together by a team of seasoned veterans.  However, one must also consider that part of the reason it does not have known trouble spots is perhaps due to it being such a young language that it has not had time for a lot of mistakes to pile up, or for it to be misused in unexpected ways. &lt;/p&gt;

&lt;p&gt;With that, let&amp;#39;s look at some issues that have been found.  &lt;/p&gt;
 &lt;br&gt;...&lt;a href="http://0xdabbad00.com/2015/04/12/looking_for_security_trouble_spots_in_go_code/"&gt;Read more ...&lt;/a&gt; </description>
				<pubDate>Sun, 12 Apr 2015 14:00:00 -0600</pubDate>
				<link>http://0xdabbad00.com/2015/04/12/looking_for_security_trouble_spots_in_go_code/</link>
				<guid isPermaLink="true">http://0xdabbad00.com/2015/04/12/looking_for_security_trouble_spots_in_go_code/</guid>
			</item>
		
			<item>
				<title>Choosing Libraries for Go Web Servers</title>
				<description>&lt;p&gt;One of the hardest things about coming to a new language is figuring out which libraries you should use, especially for young languages like Go, where there are a bunch of competing options with no clear winners.  As an example, for Node, there was an &lt;a href=&quot;https://github.com/npm/npm/issues/7048&quot;&gt;issue&lt;/a&gt; opened for it&amp;#39;s npm package manager because there were 127 different bcrypt libraries.  &lt;/p&gt;

&lt;p&gt;This post will show some of the different choices I made in the libraries I use for the back-end to my end-point protection product at &lt;a href=&quot;https://summitroute.com/&quot;&gt;Summit Route&lt;/a&gt;.  As quick summary, I use the &lt;a href=&quot;http://goji.io/&quot;&gt;goji&lt;/a&gt; web framework, some middleware, and the database library &lt;a href=&quot;https://github.com/go-gorp/gorp&quot;&gt;gorp&lt;/a&gt; (with Postgres for my database).&lt;/p&gt;
 &lt;br&gt;...&lt;a href="http://0xdabbad00.com/2015/04/03/choosing_libraries_for_go_web_servers/"&gt;Read more ...&lt;/a&gt; </description>
				<pubDate>Fri, 03 Apr 2015 14:00:00 -0600</pubDate>
				<link>http://0xdabbad00.com/2015/04/03/choosing_libraries_for_go_web_servers/</link>
				<guid isPermaLink="true">http://0xdabbad00.com/2015/04/03/choosing_libraries_for_go_web_servers/</guid>
			</item>
		
			<item>
				<title>Go Everyday</title>
				<description>&lt;p&gt;I&amp;#39;ve been coding in Go everyday for the past 3 months, for &lt;a href=&quot;https://summitroute.com&quot;&gt;Summit Route&lt;/a&gt;. This post describes how I use Go and what works for me, some of which differs from what I&amp;#39;ve seen in a lot of other tutorials.  Tutorials give you the quick solution that might not be the best when you use it every day.  This might help some others and the experts might give me some better ideas.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#tip1&quot;&gt;Tip 1: Use the Go Package Manager for Revision Locking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#tip2&quot;&gt;Tip 2: Use direnv for per project GOPATHs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#tip3&quot;&gt;Tip 3: Use the Atom editor with the go-plus plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#tip4&quot;&gt;Tip 4: Use the latest Go&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#tip5&quot;&gt;Tip 5: Debug with gdb&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
 &lt;br&gt;...&lt;a href="http://0xdabbad00.com/2014/12/27/go_everyday/"&gt;Read more ...&lt;/a&gt; </description>
				<pubDate>Sat, 27 Dec 2014 13:00:00 -0700</pubDate>
				<link>http://0xdabbad00.com/2014/12/27/go_everyday/</link>
				<guid isPermaLink="true">http://0xdabbad00.com/2014/12/27/go_everyday/</guid>
			</item>
		
			<item>
				<title>Summit Route</title>
				<description>&lt;p&gt;For those that have followed this blog, I want to direct you to my new blog at &lt;a href=&quot;https://SummitRoute.com/blog/&quot;&gt;&lt;a href=&quot;https://SummitRoute.com/blog/&quot;&gt;https://SummitRoute.com/blog/&lt;/a&gt;&lt;/a&gt;.  I founded the company Summit Route over a month ago for a couple of reasons, but one of which was to build an application white-listing solution, which I&amp;#39;ve complained about wanting on this &lt;a href=&quot;http://0xdabbad00.com/2013/01/21/there-are-no-good-execution-white-listing-solutions-for-windows/&quot;&gt;blog&lt;/a&gt; &lt;a href=&quot;http://0xdabbad00.com/2013/01/22/value-of-white-listing/&quot;&gt;before&lt;/a&gt;.  No one else makes what I think is needed, and with every retail company being slaughtered by hackers lately, I decided I was sick of replacing my credit cards and I&amp;#39;d fix these problems myself. :) &lt;/p&gt;

&lt;p&gt;My new blog includes a weekly summary of the important cyber news that has happened during the week in posts I title &amp;quot;Downclimb&amp;quot;.  It also will include some original technical pieces, such as my latest post &amp;quot;&lt;a href=&quot;https://summitroute.com/blog/2014/10/20/modifying_code_signed_files/&quot;&gt;Modifying code-signed files&lt;/a&gt;&amp;quot;.&lt;/p&gt;

&lt;p&gt;Please add my new blog to your RSS feeds.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;
 &lt;br&gt;...&lt;a href="http://0xdabbad00.com/2014/10/20/summit-route/"&gt;Read more ...&lt;/a&gt; </description>
				<pubDate>Mon, 20 Oct 2014 00:00:00 -0600</pubDate>
				<link>http://0xdabbad00.com/2014/10/20/summit-route/</link>
				<guid isPermaLink="true">http://0xdabbad00.com/2014/10/20/summit-route/</guid>
			</item>
		
			<item>
				<title>Endpoint Threat Detection Standards</title>
				<description>&lt;p&gt;The most vocal player in the endpoint threat detection standards game is Mitre.  Unfortunately, they are also the least useful as they don&amp;#39;t provide any tools that use the formats they create.  For a long time this meant no one used their formats, but it seems recently the US government (who paid Mitre to make these formats) has started forcing companies to supply data in these formats.  The docs on these formats are lengthy and never give a simple explanation, so this is my simplification.&lt;/p&gt;

&lt;h3&gt;Terms&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Stateful properties&lt;/b&gt;: These  are the currently running processes, files that exist, registry keys that exist, etc.  These can be acquired by running periodic scans on a system, or running one scan after an incident.  Think of this as data you obtain from a memory image or hard-drive image.
&lt;li&gt;&lt;b&gt;Events&lt;/b&gt;: These are acquired by monitoring a system. These are generated as processes are created or terminated, files are created, written to, read from, or deleted, etc.  Think of this as &lt;b&gt;procmon&lt;/b&gt; data from the Sysinternals tools.
&lt;/ul&gt;

&lt;h3&gt;Formats&lt;/h3&gt;

&lt;h4&gt;OpenIOC&lt;/h4&gt;

&lt;p&gt;&lt;a href=&quot;http://www.openioc.org/&quot;&gt;OpenIOC&lt;/a&gt; = stateful properties + a threat name.  It is a Mandiant format that is useful for incident response.&lt;/p&gt;

&lt;h4&gt;CybOX&lt;/h4&gt;

&lt;p&gt;CybOX = stateful properties + event data.  It&amp;#39;s not really meant to be used by itself, but rather should be used as part of one of Mitre&amp;#39;s other formats.  There are 88 object types possible that range from common things like files and processes, down to oddly specific things like &amp;quot;PDF File&amp;quot; and &amp;quot;Windows hook&amp;quot;.  Although mostly focused on Windows, some objects are Unix specific.&lt;/p&gt;

&lt;h4&gt;MAEC&lt;/h4&gt;

&lt;p&gt;MAEC = CybOX + a threat name.  It is used with some Advanced Threat Protection products, such Cuckoo Sandbox.&lt;/p&gt;

&lt;h4&gt;STIX&lt;/h4&gt;

&lt;p&gt;STIX = MAEC + whatever you want.  The STIX samples on Mitre&amp;#39;s site look like MAEC data plus lot&amp;#39;s of meta-data including long html descriptions of pieces of the content.&lt;/p&gt;

&lt;h4&gt;TAXII&lt;/h4&gt;

&lt;p&gt;This is just how you should send STIX data.  It is a publish/subscribe model built on HTTP/S.  Luckily, Mitre actually made an &lt;a href=&quot;https://github.com/TAXIIProject/yeti&quot;&gt;example implementation&lt;/a&gt; of this.&lt;/p&gt;
 &lt;br&gt;...&lt;a href="http://0xdabbad00.com/2014/05/28/endpoint-threat-detection-standards/"&gt;Read more ...&lt;/a&gt; </description>
				<pubDate>Wed, 28 May 2014 00:00:00 -0600</pubDate>
				<link>http://0xdabbad00.com/2014/05/28/endpoint-threat-detection-standards/</link>
				<guid isPermaLink="true">http://0xdabbad00.com/2014/05/28/endpoint-threat-detection-standards/</guid>
			</item>
		
			<item>
				<title>The Future of Endpoint Threat Detection and Response</title>
				<description>&lt;p&gt;The current direction of the infosec industry, with regards to malware prevention and detection, is using two very similar technologies (with horrible acronyms).  These are:
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Advanced Threat Protection (ATP)&lt;/b&gt; which includes products like FireEye, Palo Alto&amp;#39;s Wild Fire, LastLine, and &lt;a href=&quot;http://www.cuckoosandbox.org/&quot;&gt;Cuckoo Sandbox&lt;/a&gt;.  These &amp;quot;detonate&amp;quot; samples in &amp;quot;sandboxes&amp;quot; (virtual machines).
&lt;li&gt;&lt;b&gt;Endpoint Threat Detection &amp;amp; Response (ETDR)&lt;/b&gt;, which was coined by Gartner&amp;#39;s Anton Chuvakin (&lt;a href=&quot;http://blogs.gartner.com/anton-chuvakin/2013/07/26/named-endpoint-threat-detection-response/#comments&quot;&gt;here&lt;/a&gt;), and includes Mandiant&amp;#39;s MIR, CarbonBlack, CounterTack&amp;#39;s Sentinel, CrowdStrike&amp;#39;s Falcon, and Immunity&amp;#39;s &lt;a href=&quot;http://immunityproducts.blogspot.com/2014/04/revamping-el-jefe.html&quot;&gt;El Jefe&lt;/a&gt;.  These can be further categorized:
    &lt;ul&gt;
    &lt;li&gt;Tools that do scans, such as Mandiant&amp;#39;s MIR.  This tells you what exists at the time of the scan, which are &amp;quot;&lt;b&gt;stateful properties&lt;/b&gt;&amp;quot;.
    &lt;li&gt;Tools that do real-time monitoring, such as CarbonBlack, CounterTack, and El Jefe. These tell you what is happening as it happens (with perhaps a few minutes of delay.  These are referred to as &amp;quot;&lt;b&gt;events&lt;/b&gt;&amp;quot;.  These are the newer products.
    &lt;/ul&gt;
&lt;/ul&gt;&lt;/p&gt;
 &lt;br&gt;...&lt;a href="http://0xdabbad00.com/2014/05/27/the-future-of-endpoint-threat-detection-and-response/"&gt;Read more ...&lt;/a&gt; </description>
				<pubDate>Tue, 27 May 2014 00:00:00 -0600</pubDate>
				<link>http://0xdabbad00.com/2014/05/27/the-future-of-endpoint-threat-detection-and-response/</link>
				<guid isPermaLink="true">http://0xdabbad00.com/2014/05/27/the-future-of-endpoint-threat-detection-and-response/</guid>
			</item>
		
	</channel>
</rss>
