<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Heinrich on Security</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/heinrichg/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/heinrichg/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:39:53 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>STRIDE, CIA and the Modern Adversary</title>
      <link>https://docs.microsoft.com/archive/blogs/heinrichg/stride-cia-and-the-modern-adversary</link>
      <pubDate>Tue, 07 Jun 2016 14:54:55 GMT</pubDate>
      <dc:creator><![CDATA[Heinrich Gantenbein (Cybersecurity)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/heinrichg/?p=25</guid>
      <description><![CDATA[The modern adversary isn’t a script kiddie. She/he is a sophisticated professional hired by a nation...]]></description>
      <content:encoded><![CDATA[The modern adversary isn’t a script kiddie. She/he is a sophisticated professional hired by a nation state or criminal organization. Her organization will have done an ROI (Return on Investment) calculation to justify the cost of a targeted attack against a specific entity. This adversary also doesn’t attack linearly against the traditional network based defenses.

The modern adversary uses graph thinking and going through multiple hops to get to the desired target such as credit card numbers or lists of employees. This can even include more than one company: first breach a trusted vendor, second abuse the trust to attack the actual target.

This new reality made me think about the relationship between the goals of security known as CIA (Confidentiality, Integrity and Availability) and the threat modeling categorization approach known as STRIDE (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service and Elevation of Privilege).
<h2>Meaning of each Letter</h2>
STRIDE is what an attacker can do. TID is the attack version of CIA:
<ul>
	<li>Defenders want Confidentiality – attackers use Information Disclosure</li>
	<li>Defenders want Integrity – attackers use Tampering</li>
	<li>Defenders want Availability – attackers use Denial of Service.</li>
</ul>
But, what about Spoofing, Repudiation and Elevation of Privilege? Enter the (modern) non-linear attack:
<ul>
	<li>Spoofing and Elevation of Privilege are the entry points to pry open the doors.</li>
	<li>Repudiation is covering the adversary’s tracks during the initial compromise and the breach. This also happens when you cannot distinguish the attacker’s actions from the legitimate user ones. Note: sometimes repudiation is an attempt by a legitimate user (turned adversary) to dispute transactions (Dear Gullible Bank, I never transferred that money from my account; you owe me $20,000 in damages).</li>
</ul>
<h2>Non-Linear Attack</h2>
Graph thinking does not (primarily) worry about traditional network defenses, such as a firewalls, DMZs, VPNs and similar. Note: these defenses are still useful to some extent.

Let’s construct a fictional scenario (any resemblance to actual attacks is coincidental):
<ul>
	<li>Plan the attack (can take months for intelligence gathering).</li>
	<li>Initial compromise to gain command and control (STIE)
<ul>
	<li>Social engineering attack (Spoofing)</li>
	<li>Deploy malware (Tampering the OS to facilitate Information Disclosure)</li>
	<li>Steal credentials (Information Disclosure in preparation of Spoofing)</li>
	<li>Attempt lateral traversal and escalating to Domain Administrator (Elevation of Privilege)</li>
	<li>Add additional high-privilege user accounts such as domain administrators (Elevation of Privilege and Spoofing)</li>
</ul>
</li>
	<li>Execute the attacker’s mission (Violate CIA through TID)
<ul>
	<li>Retrieve the data (Information Disclosure)</li>
	<li>Execute fraudulent transactions (Tampering)</li>
	<li>Encrypt for ransom demand (Denial of Service)</li>
	<li>Destroy data (Denial of Service and/or Tampering)</li>
	<li>Persist compromise for future exploits</li>
</ul>
</li>
	<li>Hide the tracks and hide Command and Control capability (Repudiation)
<ul>
	<li>Encrypt stolen data during exfiltration to avoid detection</li>
	<li>Erase logs</li>
	<li>Tamper with anti-malware and intrusion detection systems</li>
	<li>Use additional created credentials instead of the original high privilege account(s)</li>
</ul>
</li>
</ul>
<h2>Prioritizing CIA and the Relative Importance of TID</h2>
STRIDE mitigations need to be prioritized. Therefore, you must consider the importance of C, I and A for your scenario:
<ul>
	<li>Many industries (e.g. banking, health care insurance, …) value Confidentiality and Integrity almost equally and Availability much lower (but not at zero).</li>
	<li>In other industries, such as SCADA (Supervisory Control and Data Acquisition) systems or any IoT, Availability trumps all else, followed closely by Integrity with Confidentiality lower. If you wonder why, just think about a nuclear power plant or a connected car: unavailability leads to a catastrophic failure.</li>
</ul>
<h2>Summary</h2>
Each letter of STRIDE maps to an adversaries and/or the defender’s goals. Of course the primary goals can also be useful during the initial compromise to open the door.
<table>
<tbody>
<tr>
<td width="215"><strong>Goal</strong></td>
<td width="300"><strong>Defender</strong></td>
<td width="228"><strong>Attacker</strong></td>
<td width="336"><strong>Threat Category</strong></td>
</tr>
<tr>
<td width="215">Open the Door</td>
<td width="300">Prevent door opening</td>
<td width="228">Compromise</td>
<td width="336"><strong><u>S</u></strong>poofing</td>
</tr>
<tr>
<td width="215"><strong><u>I</u></strong>ntegrity</td>
<td width="300">Preserve</td>
<td width="228">Violate</td>
<td width="336"><strong><u>T</u></strong>ampering</td>
</tr>
<tr>
<td width="215">Hide Activity</td>
<td width="300">Preserve visibility</td>
<td width="228">Hide Activity</td>
<td width="336"><strong><u>R</u></strong>epudiation</td>
</tr>
<tr>
<td width="215"><strong><u>C</u></strong>onfidentiality</td>
<td width="300">Preserve</td>
<td width="228">Violate</td>
<td width="336"><strong><u>I</u></strong>nformation Disclosure</td>
</tr>
<tr>
<td width="215"><strong><u>A</u></strong>vailability</td>
<td width="300">Preserve</td>
<td width="228">Deny</td>
<td width="336"><strong><u>D</u></strong>enial of Service</td>
</tr>
<tr>
<td width="215">Open the Door</td>
<td width="300">Prevent door opening</td>
<td width="228">Compromise</td>
<td width="336"><strong><u>E</u></strong>levation of Privilege</td>
</tr>
</tbody>
</table>
&nbsp;
<h2>Links</h2>
<ul>
	<li>To learn more about STRIDE and threat modeling: <a href="https://download.microsoft.com/download/9/3/5/935520EC-D9E2-413E-BEA7-0B865A79B18C/Introduction_to_Threat_Modeling.ppsx">https://download.microsoft.com/download/9/3/5/935520EC-D9E2-413E-BEA7-0B865A79B18C/Introduction_to_Threat_Modeling.ppsx</a></li>
	<li>SDL Process <a href="https://www.microsoft.com/en-us/sdl/process/design.aspx">https://www.microsoft.com/en-us/sdl/process/design.aspx</a></li>
	<li>Microsoft’s Free Threat Modeling Tool: <a href="https://www.microsoft.com/en-us/download/details.aspx?id=49168">https://www.microsoft.com/en-us/download/details.aspx?id=49168</a></li>
</ul>
<h2>Acknowledgements</h2>
A special thank you goes to my colleagues Michael Howard, John Rodriguez and Walter Dominguez for their valuable feedback.]]></content:encoded>
    </item>
    <item>
      <title>Extending WCF for Legacy Protocol Support</title>
      <link>https://docs.microsoft.com/archive/blogs/heinrichg/extending-wcf-for-legacy-protocol-support</link>
      <pubDate>Thu, 07 Feb 2008 09:44:00 GMT</pubDate>
      <dc:creator><![CDATA[heinrichg]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/heinrichg/2008/02/07/extending-wcf-for-legacy-protocol-support/</guid>
      <description><![CDATA[I recently had a customer with the following project. A new software system is being build based on...]]></description>
      <content:encoded><![CDATA[<p>I recently had a customer with the following project. A new software system is being build based on a SOA approach. Unfortunately, at least one client is a legacy mainframe socket application with a positional message format. The traditional approach for this problem is to write custom threading and socket code. This often leads to unreliable and hard to maintain code that lacks flexibility to support additional message protocols in a coherent manner.<br><p>After a thorough investigation it was decided to utilize the extensibility points in Windows Communications Foundation&rsquo;s (WCF) to implement the solution. I posted a derived (simplified) code sample and a whitepaper on <a href="https://code.msdn.microsoft.com/WcfBinaryTcpExt" mce_href="https://code.msdn.microsoft.com/WcfBinaryTcpExt">https://code.msdn.microsoft.com/WcfBinaryTcpExt</a>. Lenny Fenster and Simon Gurevich helped me with this effort.</p><p>I will discuss a few specific aspects of the source code in more detail at a later date.</p></p>
]]></content:encoded>
    </item>
  </channel>
</rss>