<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>NetWorks Group Blog</title>
    <link>https://email.networksgroup.com</link>
    <description>Managed Detection &amp; Response Service, Ethical Hacking Service</description>
    <language>en</language>
    <pubDate>Mon, 17 Sep 2018 18:02:13 GMT</pubDate>
    <dc:date>2018-09-17T18:02:13Z</dc:date>
    <dc:language>en</dc:language>
    <item>
      <title>Improving Security by Introducing a Full Scope Penetration Testing Strategy</title>
      <link>https://email.networksgroup.com/improving-security-by-introducing-a-full-scope-penetration-testing-strategy</link>
      <description>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/improving-security-by-introducing-a-full-scope-penetration-testing-strategy" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/ethical%20hacking_security.jpg" alt="ethical hacking_security" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;p&gt;Hackers and cybercriminals constantly search for vulnerabilities in organizations. In recent years, they have stepped up attacks on networks that contain large amounts of personal data.&lt;/p&gt;</description>
      <content:encoded>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/improving-security-by-introducing-a-full-scope-penetration-testing-strategy" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/ethical%20hacking_security.jpg" alt="ethical hacking_security" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;p&gt;Hackers and cybercriminals constantly search for vulnerabilities in organizations. In recent years, they have stepped up attacks on networks that contain large amounts of personal data.&lt;/p&gt;  
&lt;img src="https://track.hubspot.com/__ptq.gif?a=3002354&amp;amp;k=14&amp;amp;r=https%3A%2F%2Femail.networksgroup.com%2Fimproving-security-by-introducing-a-full-scope-penetration-testing-strategy&amp;amp;bu=https%253A%252F%252Femail.networksgroup.com&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</content:encoded>
      <category>Ethical Hacking</category>
      <category>Information Security</category>
      <category>Penetration Testing</category>
      <pubDate>Mon, 17 Sep 2018 17:37:34 GMT</pubDate>
      <author>mwalker@networksgroup.com (Michael Walker)</author>
      <guid>https://email.networksgroup.com/improving-security-by-introducing-a-full-scope-penetration-testing-strategy</guid>
      <dc:date>2018-09-17T17:37:34Z</dc:date>
    </item>
    <item>
      <title>Security practices that make the life of a hacker harder</title>
      <link>https://email.networksgroup.com/security-practices-that-make-the-life-of-a-hacker-harder</link>
      <description>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/security-practices-that-make-the-life-of-a-hacker-harder" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/EH%20Video%20Calvin%202.png" alt="EH Video Calvin 2" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;p class="title style-scope ytd-video-primary-info-renderer"&gt;&lt;span&gt;Calvin Hedler, Penetration Tester at NetWorks Group explains some of the security practices that make it difficult for a hacker to break into an enterprise environment.&lt;/span&gt;&lt;/p&gt;</description>
      <content:encoded>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/security-practices-that-make-the-life-of-a-hacker-harder" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/EH%20Video%20Calvin%202.png" alt="EH Video Calvin 2" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;p class="title style-scope ytd-video-primary-info-renderer"&gt;&lt;span&gt;Calvin Hedler, Penetration Tester at NetWorks Group explains some of the security practices that make it difficult for a hacker to break into an enterprise environment.&lt;/span&gt;&lt;/p&gt;  
&lt;img src="https://track.hubspot.com/__ptq.gif?a=3002354&amp;amp;k=14&amp;amp;r=https%3A%2F%2Femail.networksgroup.com%2Fsecurity-practices-that-make-the-life-of-a-hacker-harder&amp;amp;bu=https%253A%252F%252Femail.networksgroup.com&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</content:encoded>
      <category>Ethical Hacking</category>
      <category>Penetration Testing</category>
      <pubDate>Tue, 15 May 2018 13:32:00 GMT</pubDate>
      <author>chedler@networksgroup.com (Calvin Hedler)</author>
      <guid>https://email.networksgroup.com/security-practices-that-make-the-life-of-a-hacker-harder</guid>
      <dc:date>2018-05-15T13:32:00Z</dc:date>
    </item>
    <item>
      <title>How do hackers gain and expand a foothold in an enterprise environment?</title>
      <link>https://email.networksgroup.com/calvin-hedler-penetration-tester-at-networks-group-explains-how-hackers-gain-and-expand-foothold-in-an-enterprise-environment</link>
      <description>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/calvin-hedler-penetration-tester-at-networks-group-explains-how-hackers-gain-and-expand-foothold-in-an-enterprise-environment" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/EH%20Video%20Calvin%201%20-1.png" alt="EH Video Calvin 1 -1" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;p class="title style-scope ytd-video-primary-info-renderer"&gt;&lt;span&gt;Calvin Hedler, Penetration Tester at NetWorks Group explains how hackers gain and expand a foothold in an enterprise environment.&lt;/span&gt;&lt;/p&gt;</description>
      <content:encoded>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/calvin-hedler-penetration-tester-at-networks-group-explains-how-hackers-gain-and-expand-foothold-in-an-enterprise-environment" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/EH%20Video%20Calvin%201%20-1.png" alt="EH Video Calvin 1 -1" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;p class="title style-scope ytd-video-primary-info-renderer"&gt;&lt;span&gt;Calvin Hedler, Penetration Tester at NetWorks Group explains how hackers gain and expand a foothold in an enterprise environment.&lt;/span&gt;&lt;/p&gt;  
&lt;img src="https://track.hubspot.com/__ptq.gif?a=3002354&amp;amp;k=14&amp;amp;r=https%3A%2F%2Femail.networksgroup.com%2Fcalvin-hedler-penetration-tester-at-networks-group-explains-how-hackers-gain-and-expand-foothold-in-an-enterprise-environment&amp;amp;bu=https%253A%252F%252Femail.networksgroup.com&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</content:encoded>
      <category>Ethical Hacking</category>
      <category>Penetration Testing</category>
      <pubDate>Wed, 09 May 2018 14:21:44 GMT</pubDate>
      <author>chedler@networksgroup.com (Calvin Hedler)</author>
      <guid>https://email.networksgroup.com/calvin-hedler-penetration-tester-at-networks-group-explains-how-hackers-gain-and-expand-foothold-in-an-enterprise-environment</guid>
      <dc:date>2018-05-09T14:21:44Z</dc:date>
    </item>
    <item>
      <title>Spear-phishing: Are they preventable ?</title>
      <link>https://email.networksgroup.com/spear-phishing-are-they-preventable-</link>
      <description>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/spear-phishing-are-they-preventable-" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/security%20lock.jpg" alt="security lock" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;h1&gt;Spear-Phishing Attacks: Are They Preventable?&lt;/h1&gt; 
&lt;p&gt;Phishing attacks are increasing at alarming rates.&lt;span&gt;&amp;nbsp;Surveys show that&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.techrepublic.com/article/report-71-of-smbs-are-not-prepared-for-cybersecurity-risks/"&gt;71% of businesses&lt;/a&gt;&amp;nbsp;are not prepared to&amp;nbsp;manage these type of attacks.&amp;nbsp;Many businesses are finding that their defenses are limited and people in the highest offices are vulnerable.&lt;/p&gt;</description>
      <content:encoded>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/spear-phishing-are-they-preventable-" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/security%20lock.jpg" alt="security lock" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;h1&gt;Spear-Phishing Attacks: Are They Preventable?&lt;/h1&gt; 
&lt;p&gt;Phishing attacks are increasing at alarming rates.&lt;span&gt;&amp;nbsp;Surveys show that&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.techrepublic.com/article/report-71-of-smbs-are-not-prepared-for-cybersecurity-risks/"&gt;71% of businesses&lt;/a&gt;&amp;nbsp;are not prepared to&amp;nbsp;manage these type of attacks.&amp;nbsp;Many businesses are finding that their defenses are limited and people in the highest offices are vulnerable.&lt;/p&gt;  
&lt;img src="https://track.hubspot.com/__ptq.gif?a=3002354&amp;amp;k=14&amp;amp;r=https%3A%2F%2Femail.networksgroup.com%2Fspear-phishing-are-they-preventable-&amp;amp;bu=https%253A%252F%252Femail.networksgroup.com&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</content:encoded>
      <category>Information Security</category>
      <pubDate>Tue, 01 May 2018 17:27:03 GMT</pubDate>
      <author>communications@networksgroup.com (NetWorks Group)</author>
      <guid>https://email.networksgroup.com/spear-phishing-are-they-preventable-</guid>
      <dc:date>2018-05-01T17:27:03Z</dc:date>
    </item>
    <item>
      <title>The Dangers of PCI-Only Pen Tests</title>
      <link>https://email.networksgroup.com/the-dangers-of-pci-only-pen-tests</link>
      <description>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/the-dangers-of-pci-only-pen-tests" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/Blogs/castle-195105_1920.jpg" alt="castle-195105_1920" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;h2&gt;The Dangers of PCI-Only Pen Tests&amp;nbsp;&lt;/h2&gt; 
&lt;p&gt;In my 11 years of helping customers pen test their network, oftentimes I have seen that&amp;nbsp; companies choose to test only the bare minimum. I understand that companies have a need to satisfy some compliance like PCI or reassure customers and security budgets can be tight. However, why not get more value out of your pen test?&lt;/p&gt;</description>
      <content:encoded>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/the-dangers-of-pci-only-pen-tests" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/Blogs/castle-195105_1920.jpg" alt="castle-195105_1920" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;h2&gt;The Dangers of PCI-Only Pen Tests&amp;nbsp;&lt;/h2&gt; 
&lt;p&gt;In my 11 years of helping customers pen test their network, oftentimes I have seen that&amp;nbsp; companies choose to test only the bare minimum. I understand that companies have a need to satisfy some compliance like PCI or reassure customers and security budgets can be tight. However, why not get more value out of your pen test?&lt;/p&gt;  
&lt;img src="https://track.hubspot.com/__ptq.gif?a=3002354&amp;amp;k=14&amp;amp;r=https%3A%2F%2Femail.networksgroup.com%2Fthe-dangers-of-pci-only-pen-tests&amp;amp;bu=https%253A%252F%252Femail.networksgroup.com&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</content:encoded>
      <category>Penetration Testing</category>
      <category>Threat Management</category>
      <pubDate>Tue, 17 Apr 2018 15:09:04 GMT</pubDate>
      <author>sarmstrong@networksgroup.com (Scot Armstrong)</author>
      <guid>https://email.networksgroup.com/the-dangers-of-pci-only-pen-tests</guid>
      <dc:date>2018-04-17T15:09:04Z</dc:date>
    </item>
    <item>
      <title>Are Employees Dodging Security?</title>
      <link>https://email.networksgroup.com/are-employees-dodging-security</link>
      <description>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/are-employees-dodging-security" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/Images/executive-2051421_1920.jpg" alt="executive-2051421_1920" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;h2&gt;&lt;strong&gt;Are Employees Dodging Security? &lt;/strong&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;span style="font-weight: 400;"&gt;My team regularly assists clients in battling with users trying to access non-business related sites or remote locations that may have been deemed not work appropriate. Before we blame the end-user for not respecting the rules our organizations have set, we must remember that not all end users are aware of the risks involved when they visit these nefarious locations. On top of that, not everyone is able to utilize only &amp;nbsp;business related information for the full 8 hours of the workday! But there are plenty of clean websites that usually aren’t blocked that are known clean sites and can get your mind off work for some time. We need to continue to block sites that are known bad despite the battle it may take.&lt;/span&gt;&lt;/p&gt;</description>
      <content:encoded>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/are-employees-dodging-security" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/Images/executive-2051421_1920.jpg" alt="executive-2051421_1920" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;h2&gt;&lt;strong&gt;Are Employees Dodging Security? &lt;/strong&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;span style="font-weight: 400;"&gt;My team regularly assists clients in battling with users trying to access non-business related sites or remote locations that may have been deemed not work appropriate. Before we blame the end-user for not respecting the rules our organizations have set, we must remember that not all end users are aware of the risks involved when they visit these nefarious locations. On top of that, not everyone is able to utilize only &amp;nbsp;business related information for the full 8 hours of the workday! But there are plenty of clean websites that usually aren’t blocked that are known clean sites and can get your mind off work for some time. We need to continue to block sites that are known bad despite the battle it may take.&lt;/span&gt;&lt;/p&gt;  
&lt;img src="https://track.hubspot.com/__ptq.gif?a=3002354&amp;amp;k=14&amp;amp;r=https%3A%2F%2Femail.networksgroup.com%2Fare-employees-dodging-security&amp;amp;bu=https%253A%252F%252Femail.networksgroup.com&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</content:encoded>
      <category>Information Security</category>
      <category>Threat Management</category>
      <pubDate>Thu, 12 Apr 2018 15:29:23 GMT</pubDate>
      <author>nbrigmon@networksgroup.com (Nick Brigmon)</author>
      <guid>https://email.networksgroup.com/are-employees-dodging-security</guid>
      <dc:date>2018-04-12T15:29:23Z</dc:date>
    </item>
    <item>
      <title>When 911 emergency call system is struck by cyberattack</title>
      <link>https://email.networksgroup.com/when-911-emergency-call-system-is-struck-by-cyberattack</link>
      <description>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/when-911-emergency-call-system-is-struck-by-cyberattack" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/911%20cyber%20attack.jpg" alt="911 cyber attack" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;h1&gt;When a 911 Emergency Call System Is Struck by a Cyberattack&lt;/h1&gt; 
&lt;div&gt;
  Cyberattacks are occurring with greater frequency and they can wreck havoc in a business or an organization. When an emergency system is attacked, however, the results can be potentially life-threatening.&amp;nbsp; 
&lt;/div&gt;</description>
      <content:encoded>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/when-911-emergency-call-system-is-struck-by-cyberattack" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/911%20cyber%20attack.jpg" alt="911 cyber attack" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;h1&gt;When a 911 Emergency Call System Is Struck by a Cyberattack&lt;/h1&gt; 
&lt;div&gt;
  Cyberattacks are occurring with greater frequency and they can wreck havoc in a business or an organization. When an emergency system is attacked, however, the results can be potentially life-threatening.&amp;nbsp; 
&lt;/div&gt;  
&lt;img src="https://track.hubspot.com/__ptq.gif?a=3002354&amp;amp;k=14&amp;amp;r=https%3A%2F%2Femail.networksgroup.com%2Fwhen-911-emergency-call-system-is-struck-by-cyberattack&amp;amp;bu=https%253A%252F%252Femail.networksgroup.com&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</content:encoded>
      <category>Information Security</category>
      <category>Threat Management</category>
      <pubDate>Mon, 09 Apr 2018 14:23:53 GMT</pubDate>
      <author>communications@networksgroup.com (NetWorks Group)</author>
      <guid>https://email.networksgroup.com/when-911-emergency-call-system-is-struck-by-cyberattack</guid>
      <dc:date>2018-04-09T14:23:53Z</dc:date>
    </item>
    <item>
      <title>Atlanta Ransomware Attack: Lessons Learned</title>
      <link>https://email.networksgroup.com/atlanta-ransomware-attack-lessons-learned</link>
      <description>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/atlanta-ransomware-attack-lessons-learned" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/hacker%20hoodie.jpg" alt="hacker hoodie" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;h1&gt;Atlanta Ransomware Attack: Lessons Learned&lt;/h1&gt; 
&lt;p&gt;Every ransomware attack is devastating to the organizations affected. But they have the potential to teach valuable lessons to you and your organization about malware and endpoint security, and they can help you reflect on your current threat management strategies. Read on to learn about the recent Atlanta ransomware attack and how you can build on the knowledge gained to shore up your company's security.&lt;/p&gt;</description>
      <content:encoded>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/atlanta-ransomware-attack-lessons-learned" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/hacker%20hoodie.jpg" alt="hacker hoodie" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;h1&gt;Atlanta Ransomware Attack: Lessons Learned&lt;/h1&gt; 
&lt;p&gt;Every ransomware attack is devastating to the organizations affected. But they have the potential to teach valuable lessons to you and your organization about malware and endpoint security, and they can help you reflect on your current threat management strategies. Read on to learn about the recent Atlanta ransomware attack and how you can build on the knowledge gained to shore up your company's security.&lt;/p&gt;  
&lt;img src="https://track.hubspot.com/__ptq.gif?a=3002354&amp;amp;k=14&amp;amp;r=https%3A%2F%2Femail.networksgroup.com%2Fatlanta-ransomware-attack-lessons-learned&amp;amp;bu=https%253A%252F%252Femail.networksgroup.com&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</content:encoded>
      <pubDate>Thu, 05 Apr 2018 13:30:44 GMT</pubDate>
      <author>jvarma@networksgroup.com (Jyothish Varma)</author>
      <guid>https://email.networksgroup.com/atlanta-ransomware-attack-lessons-learned</guid>
      <dc:date>2018-04-05T13:30:44Z</dc:date>
    </item>
    <item>
      <title>Security Threat Detection &amp; Response for Healthcare Organizations</title>
      <link>https://email.networksgroup.com/cyber-threat-detection-response-for-healthcare-organizations</link>
      <description>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/cyber-threat-detection-response-for-healthcare-organizations" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/Blogs/Dave%20Howard%20on%20security%20for%20healthcare%20organizations.png" alt="Dave Howard on security for healthcare organizations" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;p&gt;Why should Healthcare organizations should care about &lt;a href="https://www.networksgroup.com/managed-detection-response/"&gt;Managed Threat Detection &amp;amp; Response&lt;/a&gt;?&lt;/p&gt;</description>
      <content:encoded>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/cyber-threat-detection-response-for-healthcare-organizations" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/Blogs/Dave%20Howard%20on%20security%20for%20healthcare%20organizations.png" alt="Dave Howard on security for healthcare organizations" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;p&gt;Why should Healthcare organizations should care about &lt;a href="https://www.networksgroup.com/managed-detection-response/"&gt;Managed Threat Detection &amp;amp; Response&lt;/a&gt;?&lt;/p&gt;  
&lt;img src="https://track.hubspot.com/__ptq.gif?a=3002354&amp;amp;k=14&amp;amp;r=https%3A%2F%2Femail.networksgroup.com%2Fcyber-threat-detection-response-for-healthcare-organizations&amp;amp;bu=https%253A%252F%252Femail.networksgroup.com&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</content:encoded>
      <category>Managed Detection &amp; Response</category>
      <category>Healthcare</category>
      <pubDate>Tue, 20 Mar 2018 15:36:51 GMT</pubDate>
      <author>dhoward@networksgroup.com (David Howard)</author>
      <guid>https://email.networksgroup.com/cyber-threat-detection-response-for-healthcare-organizations</guid>
      <dc:date>2018-03-20T15:36:51Z</dc:date>
    </item>
    <item>
      <title>Aggressor 101: Unleashing Cobalt Strike for Fun and Profit</title>
      <link>https://email.networksgroup.com/aggressor-101-unleashing-cobalt-strike-for-fun-and-profit</link>
      <description>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/aggressor-101-unleashing-cobalt-strike-for-fun-and-profit" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/cobalt%20blue.jpg" alt="cobalt blue" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt;  
&lt;div class="section-content"&gt; 
 &lt;div class="section-inner sectionLayout--insetColumn"&gt; 
  &lt;p class="graf graf--p graf-after--h3"&gt;I use Cobalt Strike a lot. It’s my team’s go-to tool for compromising Windows environments, and that’s what I find myself doing more often than not during red team engagements. One of the reasons I enjoy it so much is that it abstracts a lot of the common things that we need to do on engagements, giving us more flexibility to focus on our objectives, and how best to accomplish them.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;Even so, I’m obsessed with making our workflow even more efficient, and giving us the power to accomplish objectives even faster. One of the best ways to do this is with Aggressor Script, Cobalt Strike’s native scripting language. I should also add a caveat to this post: I am not a software developer. I do not have a formal background in developing, nor do I focus on efficiency or speed when I’m writing Aggressor.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p graf--trailing"&gt;Recently, I was able to attend the (excellent) SpecterOps Adversary Tactics: Red Team Operations course, which gave me the opportunity to talk to various red teamers, getting their perspectives on preferred tools, and how they use them. One of the things that surprised me somewhat was how few people make use of the power that Aggressor Script can provide. A sentiment that I heard a lot was that even red teams already paying for Cobalt Strike haven’t implemented much Aggressor Script into their workflows. I’d like to change that.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/div&gt;   
&lt;div class="section-divider"&gt;  
&lt;/div&gt; 
&lt;div class="section-content"&gt; 
 &lt;div class="section-inner sectionLayout--insetColumn"&gt; 
  &lt;h4 class="graf graf--h4 graf--leading"&gt;&lt;strong class="markup--strong markup--h4-strong"&gt;An Introduction to Aggressor&lt;/strong&gt;&lt;/h4&gt; 
  &lt;p class="graf graf--p graf-after--h4"&gt;&lt;a href="https://www.cobaltstrike.com/aggressor-script/index.html" class="markup--anchor markup--p-anchor"&gt;&lt;strong class="markup--strong markup--p-strong"&gt;Aggressor Script&lt;/strong&gt;&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is based on&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://sleep.dashnine.org/manual/" class="markup--anchor markup--p-anchor"&gt;&lt;strong class="markup--strong markup--p-strong"&gt;Sleep&lt;/strong&gt;&lt;/a&gt;, a language created by Raphael Mudge (also the author of Cobalt Strike). Sleep is basically a Perl-like language which runs on the JVM. Before you start complaining, I believe that the power that Aggressor Script gives you in Cobalt Strike far outweighs any issues some might have with writing Perl, or dealing with Java.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;This post will assume that you’re comfortable using Cobalt Strike, and that you know the various concepts behind operating with it. This will not be an introduction to Cobalt Strike.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;With that out of the way, what does Aggressor Script actually look like? I find the syntax to be pretty simple, especially if you’re used to writing Perl, though many concepts will be perfectly understandable if you’ve written code before. Here’s a simple “Hello, world!” script, written in Aggressor:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt; 
    &lt;blockquote&gt; 
     &lt;pre&gt;# helloworld.cna
# Prints "Hello, world!"
# 001SPARTaN
sub hello {
    println("Hello, world!");
}
hello();&lt;/pre&gt; 
    &lt;/blockquote&gt; 
   &lt;/div&gt; 
  &lt;/div&gt;  
  &lt;p class="graf graf--p graf-after--figure"&gt;Pretty easy. We create a new function named “hello” with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;sub hello {...}&lt;/code&gt;&amp;nbsp;, and print text to the console with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;println("Hello, world!")&lt;/code&gt;&amp;nbsp;. Statements in Aggressor must end with a semicolon, and functions must be defined&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;em class="markup--em markup--p-em"&gt;before&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/em&gt;they’re called. Because the function doesn’t take any arguments, calling it with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;hello()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;will run the code.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;Now that we have our first script, how do we actually use it? First, open up Cobalt Strike, and connect to your teamserver. Once your client is connected, go to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;View-&amp;gt;Script Console&lt;/strong&gt;, and type&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;load /path/to/helloworld.cna&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(the full path is required). With that, you should see something like the following:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt;
     &amp;nbsp; 
   &lt;/div&gt; 
  &lt;/div&gt;  Hello, world!   
  &lt;p class="graf graf--p graf-after--figure"&gt;The cool thing about the script console is that it lets you test stuff out without having to write a full script, too. We can create the same function using the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;e&lt;/code&gt;command in the script console to evaluate Aggressor snippets. To do this, we can take the same code, and instead put it on a single line. In the script console, type&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;e sub hello {println("Hello, world!");}&lt;/code&gt;&amp;nbsp;, and hit enter. This won’t return anything, but we can then run our&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;hello()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;function by running&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;e hello()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in the script console.&lt;span style="background-color: transparent;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded"&gt;  
   &lt;/div&gt; 
  &lt;/div&gt;  
  &lt;p class="graf graf--p graf-after--figure"&gt;Just like that, we can test out bits of Aggressor. When I’m writing Aggressor scripts, I constantly use the script console to prototype small bits of code, and make sure they’re working before I pull them into a larger script. It’s a very useful tool to debug scripts, or to quickly run snippets that don’t necessarily constitute a full scripts.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p graf--trailing"&gt;Now that we’ve gone over how to run Aggressor scripts, let’s explore how to construct more useful scripts.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/div&gt;   
&lt;div class="section-divider"&gt;  
&lt;/div&gt; 
&lt;div class="section-content"&gt; 
 &lt;div class="section-inner sectionLayout--insetColumn"&gt; 
  &lt;h4 class="graf graf--h4 graf--leading"&gt;The Building&amp;nbsp;Blocks&lt;/h4&gt; 
  &lt;p class="graf graf--p graf-after--h4"&gt;In order to build useful Aggressor scripts, we’ll need a bit more to go on than just printing stuff to the console. To do that, we need to learn about the various datatypes in Sleep, and how to work with them. The main datatypes in Sleep are&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;strings&lt;/strong&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;arrays&lt;/strong&gt;, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;hashes&lt;/strong&gt;.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;Strings&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;are denoted with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;$&lt;/code&gt;&amp;nbsp;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;arrays&lt;/strong&gt;with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;@&lt;/code&gt;&amp;nbsp;, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;hashes&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;%&lt;/code&gt;.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;If you’ve written code in another language, these datatypes should be familiar. Strings contain characters or strings of characters; arrays can hold multiple strings, arrays, or hashes (you&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;can&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;mix types in an array); and hashes contain multiple key-value pairs. What do these look like in practice?&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;This is a string with a few words:&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;&lt;code class="markup--code markup--p-code"&gt;$string = "This is a string.";&lt;/code&gt;&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;This is an array with three elements; a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;string&lt;/strong&gt;, a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;number&lt;/strong&gt;, and the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;$string&lt;/code&gt;&lt;strong class="markup--strong markup--p-strong"&gt;variable&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;that we defined before:&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;&lt;code class="markup--code markup--p-code"&gt;@array = @("The first element.", 2, $string);&lt;/code&gt;&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;This is a hash with three elements;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;key1&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;has a value of&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;"value1"&lt;/code&gt;, the value for&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;key2&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the array we defined as&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;@array&lt;/code&gt;, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;key3&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;contains our&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;$string&lt;/code&gt;variable.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;&lt;code class="markup--code markup--p-code"&gt;%hash = %(key1 =&amp;gt; "value1", key2 =&amp;gt; @array, key3 =&amp;gt; $string);&lt;/code&gt;&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;Using the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;x&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;command in the script console, we can examine what these variables contain:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded"&gt;  
   &lt;/div&gt; 
  &lt;/div&gt;  Strings, arrays, and hashes; the primary datatypes in&amp;nbsp;Sleep   
  &lt;p class="graf graf--p graf-after--figure"&gt;As you can see, Sleep has no issues combining datatypes, or dealing with nested arrays or hashes. In fact, it’s often very useful to nest arrays and hashes to create structures for storing things.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;Before we start writing useful Aggressor scripts, I’ll go through how to access data stored in arrays and hashes. These two datatypes behave like they do in other languages. First, data contained in arrays can be accessed by its&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;index&lt;/strong&gt;, or its position in the array. Let’s define an array:&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;&lt;code class="markup--code markup--p-code"&gt;@array = @("First", "Second", "Third");&lt;/code&gt;&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;The index of the first element in an array is 0. To view this value, we can use&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;@array[0]&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt;
     &amp;nbsp; 
   &lt;/div&gt; 
  &lt;/div&gt;  
  &lt;p class="graf graf--p graf-after--figure"&gt;To access the other elements in the array, we can use their indices in the same way:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded"&gt;  
   &lt;/div&gt; 
  &lt;/div&gt;  Fun with&amp;nbsp;arrays!   
  &lt;p class="graf graf--p graf-after--figure"&gt;We can also use these in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;println&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;statements to directly print the values. The dot operator will concatenate two values as a string:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt;
     &amp;nbsp; 
   &lt;/div&gt; 
  &lt;/div&gt;  
  &lt;p class="graf graf--p graf-after--figure"&gt;Hashes work in a similar way, though instead of using the index of an item, you’ll use the key that the value is stored under. Here’s what that looks like:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded"&gt;  
   &lt;/div&gt; 
  &lt;/div&gt;  Fun with&amp;nbsp;hashes!   
  &lt;p class="graf graf--p graf-after--figure graf--trailing"&gt;The key values can be named whatever you’d like, and the value can be any type of data you want. Now that we’ve learned about the datatypes in Aggressor, how do we use this information to do useful things inside of Cobalt Strike?&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/div&gt;   
&lt;div class="section-divider"&gt;  
&lt;/div&gt; 
&lt;div class="section-content"&gt; 
 &lt;div class="section-inner sectionLayout--insetColumn"&gt; 
  &lt;h4 class="graf graf--h4 graf--leading"&gt;Scripting Cobalt&amp;nbsp;Strike&lt;/h4&gt; 
  &lt;p class="graf graf--p graf-after--h4"&gt;At the core of Cobalt Strike is the Cobalt Strike data model. This is where all of the information accessible to operators is stored, and it gives us a large amount of data to use for automating things in Cobalt Strike. The data collected in the data model includes information about the current beacons, credentials gathered from compromised systems, screenshots, downloaded files, and many other things.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;For an example of how to use this data, let’s say we have a single beacon on a system. We can get an array of all the currently connected beacons by using the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;beacons()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;function, a built-in function in Aggressor. We can view this information with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;x beacons()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in the script console.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;If you try this, you’ll get a lot of information about each beacon. Beacons are arranged in an array, and each beacon is stored as a hash in this array. This is what that looks like with a single beacon in the data model:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded"&gt;  
   &lt;/div&gt; 
  &lt;/div&gt;  Beacon data returned with the beacons() function   
  &lt;p class="graf graf--p graf-after--figure graf--trailing"&gt;So what can we do with the information in the data model? Let’s start with a fairly simple task that you might want to do: run a command on all of the beacons that you have connected to a teamserver.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/div&gt;   
&lt;div class="section-divider"&gt;  
&lt;/div&gt; 
&lt;div class="section-content"&gt; 
 &lt;div class="section-inner sectionLayout--insetColumn"&gt; 
  &lt;h4 class="graf graf--h4 graf--leading"&gt;Your First Aggressor Script&lt;/h4&gt; 
  &lt;p class="graf graf--p graf-after--h4"&gt;Let’s build this script out a piece at a time. First, we’ll start with creating a script to run a command on a single beacon. To do this, we’re going to use the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.cobaltstrike.com/aggressor-script/functions.html#bshell" class="markup--anchor markup--p-anchor"&gt;bshell&lt;/a&gt;&lt;strong class="markup--strong markup--p-strong"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;function, a built-in function of Cobalt Strike. Here’s the definition from the official Aggressor Script documentation:&lt;/p&gt; 
  &lt;blockquote class="graf graf--blockquote graf-after--p"&gt;
    bshell — Ask Beacon to run a command with cmd.exe 
  &lt;/blockquote&gt; 
  &lt;blockquote class="graf graf--blockquote graf-after--blockquote"&gt;
    Arguments 
  &lt;/blockquote&gt; 
  &lt;blockquote class="graf graf--blockquote graf-after--blockquote"&gt; 
   &lt;code class="markup--code markup--blockquote-code"&gt;$1&lt;/code&gt; 
   &lt;span&gt;&amp;nbsp;&lt;/span&gt;- the id for the beacon. This may be an array or a single ID. 
   &lt;br&gt; 
   &lt;code class="markup--code markup--blockquote-code"&gt;$2&lt;/code&gt; 
   &lt;span&gt;&amp;nbsp;&lt;/span&gt;- the command and arguments to run 
  &lt;/blockquote&gt; 
  &lt;p class="graf graf--p graf-after--blockquote"&gt;So how do we write a script to utilize this? We’re going to create an&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;alias&lt;/strong&gt;, or a command that you can type into any beacon console to execute custom Aggressor code. Here’s what that looks like:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt; 
    &lt;blockquote&gt; 
     &lt;pre&gt;alias shellcmd {
    bshell($1, $2);
}&lt;/pre&gt; 
    &lt;/blockquote&gt; 
   &lt;/div&gt; 
  &lt;/div&gt;  
  &lt;p class="graf graf--p graf-after--figure"&gt;If you haven’t written Aggressor before, you might be curious about the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;$1&lt;/code&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;$2&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;variables we’re using in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;bshell&lt;/code&gt;. Whenever a function takes arguments in Aggressor, those arguments are passed to the function as numbered variables, named in the order in which they’re passed. For aliases, the first argument is the beacon ID that the alias is being used on, and any arguments after that are things you type after the alias when you run it from a beacon console. In this case, if you type&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;shellcmd whoami&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;into a beacon console,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;$2&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;will be&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;"whoami"&lt;/code&gt;. If you want to rename these variables to something that is easier to keep track of, you can assign them to other variables that you create. For more information on the functions available for use in Aggressor, and the arguments they take,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.cobaltstrike.com/aggressor-script/functions.html" class="markup--anchor markup--p-anchor"&gt;&lt;strong class="markup--strong markup--p-strong"&gt;check out this page&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;To test this new alias out, save the script, and load it into Cobalt Strike (through the script console or through the script manager). You should now be able to type&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;shellcmd &amp;lt;COMMAND&amp;gt;&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;into a beacon console, and it will run the command for you! Note that you will also be able to tab-complete this alias.&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt;
     &amp;nbsp; 
   &lt;/div&gt; 
   &lt;div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded"&gt;  
   &lt;/div&gt; 
  &lt;/div&gt;  Using our custom alias to run&amp;nbsp;whoami   
  &lt;p class="graf graf--p graf-after--figure"&gt;Right now, this isn’t a very impressive script. It does the same thing as the built-in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;shell&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;command, but you have to type more to use it. How can we make our script run a command on&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;em class="markup--em markup--p-em"&gt;all&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/em&gt;beacons, not just a single beacon? First, let’s write a bit of Aggressor to run a set command on multiple beacons, and then we’ll modify it until we can run whatever command we want on multiple beacons.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;To do this, we’ll first need to iterate through all the beacons connected to the teamserver. Cobalt Strike makes this pretty easy. Remember that&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;beacons()&lt;/code&gt;function from earlier? We can use that to iterate through all beacons with a simple&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;foreach&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;loop. Here’s what that looks like:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt; 
    &lt;blockquote&gt; 
     &lt;pre&gt;# Print beacon IDs for all beacons connected to the teamserver
foreach %beacon (beacons()) {
    println("Beacon ID: " . %beacon['id']);
}&lt;/pre&gt; 
    &lt;/blockquote&gt; 
   &lt;/div&gt; 
  &lt;/div&gt;  
  &lt;p class="graf graf--p graf-after--figure"&gt;Here, we’re using a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;foreach&lt;/code&gt;loop to iterate through every beacon returned by the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;beacons()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;function. Remember, beacon information returned by this function is stored as a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;hash&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;for each beacon. From the hash, we’re selecting the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;id&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;key with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;%beacon['id']&lt;/code&gt;, and printing this ID.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;How can we modify this script to instead run a command on every beacon returned by&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;beacons()&lt;/code&gt;? Let’s start by rewriting it to run&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;whoami&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;on every beacon.&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt; 
    &lt;blockquote&gt; 
     &lt;pre&gt;foreach %beacon (beacons()) {
    $bid = %beacon['id'];
    bshell($bid, "whoami");
}&lt;/pre&gt; 
    &lt;/blockquote&gt; 
   &lt;/div&gt; 
  &lt;/div&gt;  
  &lt;p class="graf graf--p graf-after--figure"&gt;Again, this is a pretty simple script, but we need to make it a little more useful. Instead of just running&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;whoami&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;on every beacon, let’s create a beacon alias that will run whatever command we want on every beacon. There are a couple ways to do this, but here’s a good start:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt; 
    &lt;blockquote&gt; 
     &lt;pre&gt;sub runcmd {
    $bid = $1;
    $cmd = $2;
    bshell($bid, $cmd);
}
alias runall {
    # Iterate through all beacons in data model
    foreach %beacon (beacons()) {
        # Call runcmd on each beacon
        runcmd(%beacon['id'], $2);
    }
}&lt;/pre&gt; 
    &lt;/blockquote&gt; 
   &lt;/div&gt; 
  &lt;/div&gt;  
  &lt;p class="graf graf--p graf-after--figure graf--trailing"&gt;To run this script, type&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;runall&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;into a beacon console, followed by a command. Due to the way&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;alias&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;works in Aggressor, if you want to run a command with spaces in it, you’ll need to wrap it in double quotes. There are ways to get around this, but I wanted to keep this post as a basic introduction to Aggressor.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/div&gt;   
&lt;div class="section-divider"&gt;  
&lt;/div&gt; 
&lt;div class="section-content"&gt; 
 &lt;div class="section-inner sectionLayout--insetColumn"&gt; 
  &lt;p class="graf graf--p graf--leading"&gt;Hopefully this post has given you a better idea of how to write basic Aggressor scripts! This is just scratching the surface of what’s possible with Cobalt Strike. You can use&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.cobaltstrike.com/aggressor-script/events.html" class="markup--anchor markup--p-anchor"&gt;&lt;strong class="markup--strong markup--p-strong"&gt;events&lt;/strong&gt;&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to automatically trigger actions. You can alter the Cobalt Strike GUI with additional menu items or even custom visualizations. Aggressor doesn’t have functionality you want? You can even use inline Java object expressions to incorporate functionality from any Java library!&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;It might not be the prettiest language, but Aggressor gives you a tremendous amount of power, and allows you to expand Cobalt Strike however you want to. If you’re a Cobalt Strike user and you’re not writing Aggressor, you’re missing out on one of the most powerful tools available to you. In future posts, I’ll go through more of what makes Aggressor so useful. Until then, I hope this has been a useful introduction.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p graf--trailing"&gt;Questions? Comments? Hit me up on&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://twitter.com/001SPARTaN" class="markup--anchor markup--p-anchor"&gt;&lt;strong class="markup--strong markup--p-strong"&gt;Twitter&lt;/strong&gt;&lt;/a&gt;, or come hang out in the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://bloodhoundgang.herokuapp.com/" class="markup--anchor markup--p-anchor"&gt;&lt;strong class="markup--strong markup--p-strong"&gt;BloodHound Slack&lt;/strong&gt;&lt;/a&gt;, especially the #aggressor channel.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/div&gt;</description>
      <content:encoded>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://email.networksgroup.com/aggressor-101-unleashing-cobalt-strike-for-fun-and-profit" title="" class="hs-featured-image-link"&gt; &lt;img src="https://email.networksgroup.com/hubfs/cobalt%20blue.jpg" alt="cobalt blue" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt;  
&lt;div class="section-content"&gt; 
 &lt;div class="section-inner sectionLayout--insetColumn"&gt; 
  &lt;p class="graf graf--p graf-after--h3"&gt;I use Cobalt Strike a lot. It’s my team’s go-to tool for compromising Windows environments, and that’s what I find myself doing more often than not during red team engagements. One of the reasons I enjoy it so much is that it abstracts a lot of the common things that we need to do on engagements, giving us more flexibility to focus on our objectives, and how best to accomplish them.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;Even so, I’m obsessed with making our workflow even more efficient, and giving us the power to accomplish objectives even faster. One of the best ways to do this is with Aggressor Script, Cobalt Strike’s native scripting language. I should also add a caveat to this post: I am not a software developer. I do not have a formal background in developing, nor do I focus on efficiency or speed when I’m writing Aggressor.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p graf--trailing"&gt;Recently, I was able to attend the (excellent) SpecterOps Adversary Tactics: Red Team Operations course, which gave me the opportunity to talk to various red teamers, getting their perspectives on preferred tools, and how they use them. One of the things that surprised me somewhat was how few people make use of the power that Aggressor Script can provide. A sentiment that I heard a lot was that even red teams already paying for Cobalt Strike haven’t implemented much Aggressor Script into their workflows. I’d like to change that.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/div&gt;   
&lt;div class="section-divider"&gt;  
&lt;/div&gt; 
&lt;div class="section-content"&gt; 
 &lt;div class="section-inner sectionLayout--insetColumn"&gt; 
  &lt;h4 class="graf graf--h4 graf--leading"&gt;&lt;strong class="markup--strong markup--h4-strong"&gt;An Introduction to Aggressor&lt;/strong&gt;&lt;/h4&gt; 
  &lt;p class="graf graf--p graf-after--h4"&gt;&lt;a href="https://www.cobaltstrike.com/aggressor-script/index.html" class="markup--anchor markup--p-anchor"&gt;&lt;strong class="markup--strong markup--p-strong"&gt;Aggressor Script&lt;/strong&gt;&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is based on&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://sleep.dashnine.org/manual/" class="markup--anchor markup--p-anchor"&gt;&lt;strong class="markup--strong markup--p-strong"&gt;Sleep&lt;/strong&gt;&lt;/a&gt;, a language created by Raphael Mudge (also the author of Cobalt Strike). Sleep is basically a Perl-like language which runs on the JVM. Before you start complaining, I believe that the power that Aggressor Script gives you in Cobalt Strike far outweighs any issues some might have with writing Perl, or dealing with Java.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;This post will assume that you’re comfortable using Cobalt Strike, and that you know the various concepts behind operating with it. This will not be an introduction to Cobalt Strike.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;With that out of the way, what does Aggressor Script actually look like? I find the syntax to be pretty simple, especially if you’re used to writing Perl, though many concepts will be perfectly understandable if you’ve written code before. Here’s a simple “Hello, world!” script, written in Aggressor:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt; 
    &lt;blockquote&gt; 
     &lt;pre&gt;# helloworld.cna
# Prints "Hello, world!"
# 001SPARTaN
sub hello {
    println("Hello, world!");
}
hello();&lt;/pre&gt; 
    &lt;/blockquote&gt; 
   &lt;/div&gt; 
  &lt;/div&gt;  
  &lt;p class="graf graf--p graf-after--figure"&gt;Pretty easy. We create a new function named “hello” with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;sub hello {...}&lt;/code&gt;&amp;nbsp;, and print text to the console with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;println("Hello, world!")&lt;/code&gt;&amp;nbsp;. Statements in Aggressor must end with a semicolon, and functions must be defined&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;em class="markup--em markup--p-em"&gt;before&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/em&gt;they’re called. Because the function doesn’t take any arguments, calling it with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;hello()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;will run the code.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;Now that we have our first script, how do we actually use it? First, open up Cobalt Strike, and connect to your teamserver. Once your client is connected, go to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;View-&amp;gt;Script Console&lt;/strong&gt;, and type&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;load /path/to/helloworld.cna&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(the full path is required). With that, you should see something like the following:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt;
     &amp;nbsp; 
   &lt;/div&gt; 
  &lt;/div&gt;  Hello, world!   
  &lt;p class="graf graf--p graf-after--figure"&gt;The cool thing about the script console is that it lets you test stuff out without having to write a full script, too. We can create the same function using the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;e&lt;/code&gt;command in the script console to evaluate Aggressor snippets. To do this, we can take the same code, and instead put it on a single line. In the script console, type&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;e sub hello {println("Hello, world!");}&lt;/code&gt;&amp;nbsp;, and hit enter. This won’t return anything, but we can then run our&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;hello()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;function by running&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;e hello()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in the script console.&lt;span style="background-color: transparent;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded"&gt;  
   &lt;/div&gt; 
  &lt;/div&gt;  
  &lt;p class="graf graf--p graf-after--figure"&gt;Just like that, we can test out bits of Aggressor. When I’m writing Aggressor scripts, I constantly use the script console to prototype small bits of code, and make sure they’re working before I pull them into a larger script. It’s a very useful tool to debug scripts, or to quickly run snippets that don’t necessarily constitute a full scripts.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p graf--trailing"&gt;Now that we’ve gone over how to run Aggressor scripts, let’s explore how to construct more useful scripts.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/div&gt;   
&lt;div class="section-divider"&gt;  
&lt;/div&gt; 
&lt;div class="section-content"&gt; 
 &lt;div class="section-inner sectionLayout--insetColumn"&gt; 
  &lt;h4 class="graf graf--h4 graf--leading"&gt;The Building&amp;nbsp;Blocks&lt;/h4&gt; 
  &lt;p class="graf graf--p graf-after--h4"&gt;In order to build useful Aggressor scripts, we’ll need a bit more to go on than just printing stuff to the console. To do that, we need to learn about the various datatypes in Sleep, and how to work with them. The main datatypes in Sleep are&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;strings&lt;/strong&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;arrays&lt;/strong&gt;, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;hashes&lt;/strong&gt;.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;Strings&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;are denoted with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;$&lt;/code&gt;&amp;nbsp;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;arrays&lt;/strong&gt;with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;@&lt;/code&gt;&amp;nbsp;, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;hashes&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;%&lt;/code&gt;.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;If you’ve written code in another language, these datatypes should be familiar. Strings contain characters or strings of characters; arrays can hold multiple strings, arrays, or hashes (you&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;can&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;mix types in an array); and hashes contain multiple key-value pairs. What do these look like in practice?&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;This is a string with a few words:&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;&lt;code class="markup--code markup--p-code"&gt;$string = "This is a string.";&lt;/code&gt;&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;This is an array with three elements; a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;string&lt;/strong&gt;, a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;number&lt;/strong&gt;, and the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;$string&lt;/code&gt;&lt;strong class="markup--strong markup--p-strong"&gt;variable&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;that we defined before:&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;&lt;code class="markup--code markup--p-code"&gt;@array = @("The first element.", 2, $string);&lt;/code&gt;&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;This is a hash with three elements;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;key1&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;has a value of&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;"value1"&lt;/code&gt;, the value for&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;key2&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the array we defined as&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;@array&lt;/code&gt;, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;key3&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;contains our&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;$string&lt;/code&gt;variable.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;&lt;code class="markup--code markup--p-code"&gt;%hash = %(key1 =&amp;gt; "value1", key2 =&amp;gt; @array, key3 =&amp;gt; $string);&lt;/code&gt;&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;Using the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;x&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;command in the script console, we can examine what these variables contain:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded"&gt;  
   &lt;/div&gt; 
  &lt;/div&gt;  Strings, arrays, and hashes; the primary datatypes in&amp;nbsp;Sleep   
  &lt;p class="graf graf--p graf-after--figure"&gt;As you can see, Sleep has no issues combining datatypes, or dealing with nested arrays or hashes. In fact, it’s often very useful to nest arrays and hashes to create structures for storing things.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;Before we start writing useful Aggressor scripts, I’ll go through how to access data stored in arrays and hashes. These two datatypes behave like they do in other languages. First, data contained in arrays can be accessed by its&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;index&lt;/strong&gt;, or its position in the array. Let’s define an array:&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;&lt;code class="markup--code markup--p-code"&gt;@array = @("First", "Second", "Third");&lt;/code&gt;&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;The index of the first element in an array is 0. To view this value, we can use&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;@array[0]&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt;
     &amp;nbsp; 
   &lt;/div&gt; 
  &lt;/div&gt;  
  &lt;p class="graf graf--p graf-after--figure"&gt;To access the other elements in the array, we can use their indices in the same way:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded"&gt;  
   &lt;/div&gt; 
  &lt;/div&gt;  Fun with&amp;nbsp;arrays!   
  &lt;p class="graf graf--p graf-after--figure"&gt;We can also use these in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;println&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;statements to directly print the values. The dot operator will concatenate two values as a string:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt;
     &amp;nbsp; 
   &lt;/div&gt; 
  &lt;/div&gt;  
  &lt;p class="graf graf--p graf-after--figure"&gt;Hashes work in a similar way, though instead of using the index of an item, you’ll use the key that the value is stored under. Here’s what that looks like:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded"&gt;  
   &lt;/div&gt; 
  &lt;/div&gt;  Fun with&amp;nbsp;hashes!   
  &lt;p class="graf graf--p graf-after--figure graf--trailing"&gt;The key values can be named whatever you’d like, and the value can be any type of data you want. Now that we’ve learned about the datatypes in Aggressor, how do we use this information to do useful things inside of Cobalt Strike?&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/div&gt;   
&lt;div class="section-divider"&gt;  
&lt;/div&gt; 
&lt;div class="section-content"&gt; 
 &lt;div class="section-inner sectionLayout--insetColumn"&gt; 
  &lt;h4 class="graf graf--h4 graf--leading"&gt;Scripting Cobalt&amp;nbsp;Strike&lt;/h4&gt; 
  &lt;p class="graf graf--p graf-after--h4"&gt;At the core of Cobalt Strike is the Cobalt Strike data model. This is where all of the information accessible to operators is stored, and it gives us a large amount of data to use for automating things in Cobalt Strike. The data collected in the data model includes information about the current beacons, credentials gathered from compromised systems, screenshots, downloaded files, and many other things.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;For an example of how to use this data, let’s say we have a single beacon on a system. We can get an array of all the currently connected beacons by using the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;beacons()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;function, a built-in function in Aggressor. We can view this information with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;x beacons()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in the script console.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;If you try this, you’ll get a lot of information about each beacon. Beacons are arranged in an array, and each beacon is stored as a hash in this array. This is what that looks like with a single beacon in the data model:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded"&gt;  
   &lt;/div&gt; 
  &lt;/div&gt;  Beacon data returned with the beacons() function   
  &lt;p class="graf graf--p graf-after--figure graf--trailing"&gt;So what can we do with the information in the data model? Let’s start with a fairly simple task that you might want to do: run a command on all of the beacons that you have connected to a teamserver.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/div&gt;   
&lt;div class="section-divider"&gt;  
&lt;/div&gt; 
&lt;div class="section-content"&gt; 
 &lt;div class="section-inner sectionLayout--insetColumn"&gt; 
  &lt;h4 class="graf graf--h4 graf--leading"&gt;Your First Aggressor Script&lt;/h4&gt; 
  &lt;p class="graf graf--p graf-after--h4"&gt;Let’s build this script out a piece at a time. First, we’ll start with creating a script to run a command on a single beacon. To do this, we’re going to use the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.cobaltstrike.com/aggressor-script/functions.html#bshell" class="markup--anchor markup--p-anchor"&gt;bshell&lt;/a&gt;&lt;strong class="markup--strong markup--p-strong"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;function, a built-in function of Cobalt Strike. Here’s the definition from the official Aggressor Script documentation:&lt;/p&gt; 
  &lt;blockquote class="graf graf--blockquote graf-after--p"&gt;
    bshell — Ask Beacon to run a command with cmd.exe 
  &lt;/blockquote&gt; 
  &lt;blockquote class="graf graf--blockquote graf-after--blockquote"&gt;
    Arguments 
  &lt;/blockquote&gt; 
  &lt;blockquote class="graf graf--blockquote graf-after--blockquote"&gt; 
   &lt;code class="markup--code markup--blockquote-code"&gt;$1&lt;/code&gt; 
   &lt;span&gt;&amp;nbsp;&lt;/span&gt;- the id for the beacon. This may be an array or a single ID. 
   &lt;br&gt; 
   &lt;code class="markup--code markup--blockquote-code"&gt;$2&lt;/code&gt; 
   &lt;span&gt;&amp;nbsp;&lt;/span&gt;- the command and arguments to run 
  &lt;/blockquote&gt; 
  &lt;p class="graf graf--p graf-after--blockquote"&gt;So how do we write a script to utilize this? We’re going to create an&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;alias&lt;/strong&gt;, or a command that you can type into any beacon console to execute custom Aggressor code. Here’s what that looks like:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt; 
    &lt;blockquote&gt; 
     &lt;pre&gt;alias shellcmd {
    bshell($1, $2);
}&lt;/pre&gt; 
    &lt;/blockquote&gt; 
   &lt;/div&gt; 
  &lt;/div&gt;  
  &lt;p class="graf graf--p graf-after--figure"&gt;If you haven’t written Aggressor before, you might be curious about the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;$1&lt;/code&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;$2&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;variables we’re using in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;bshell&lt;/code&gt;. Whenever a function takes arguments in Aggressor, those arguments are passed to the function as numbered variables, named in the order in which they’re passed. For aliases, the first argument is the beacon ID that the alias is being used on, and any arguments after that are things you type after the alias when you run it from a beacon console. In this case, if you type&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;shellcmd whoami&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;into a beacon console,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;$2&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;will be&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;"whoami"&lt;/code&gt;. If you want to rename these variables to something that is easier to keep track of, you can assign them to other variables that you create. For more information on the functions available for use in Aggressor, and the arguments they take,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.cobaltstrike.com/aggressor-script/functions.html" class="markup--anchor markup--p-anchor"&gt;&lt;strong class="markup--strong markup--p-strong"&gt;check out this page&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;To test this new alias out, save the script, and load it into Cobalt Strike (through the script console or through the script manager). You should now be able to type&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;shellcmd &amp;lt;COMMAND&amp;gt;&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;into a beacon console, and it will run the command for you! Note that you will also be able to tab-complete this alias.&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt;
     &amp;nbsp; 
   &lt;/div&gt; 
   &lt;div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded"&gt;  
   &lt;/div&gt; 
  &lt;/div&gt;  Using our custom alias to run&amp;nbsp;whoami   
  &lt;p class="graf graf--p graf-after--figure"&gt;Right now, this isn’t a very impressive script. It does the same thing as the built-in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;shell&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;command, but you have to type more to use it. How can we make our script run a command on&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;em class="markup--em markup--p-em"&gt;all&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/em&gt;beacons, not just a single beacon? First, let’s write a bit of Aggressor to run a set command on multiple beacons, and then we’ll modify it until we can run whatever command we want on multiple beacons.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;To do this, we’ll first need to iterate through all the beacons connected to the teamserver. Cobalt Strike makes this pretty easy. Remember that&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;beacons()&lt;/code&gt;function from earlier? We can use that to iterate through all beacons with a simple&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;foreach&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;loop. Here’s what that looks like:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt; 
    &lt;blockquote&gt; 
     &lt;pre&gt;# Print beacon IDs for all beacons connected to the teamserver
foreach %beacon (beacons()) {
    println("Beacon ID: " . %beacon['id']);
}&lt;/pre&gt; 
    &lt;/blockquote&gt; 
   &lt;/div&gt; 
  &lt;/div&gt;  
  &lt;p class="graf graf--p graf-after--figure"&gt;Here, we’re using a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;foreach&lt;/code&gt;loop to iterate through every beacon returned by the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;beacons()&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;function. Remember, beacon information returned by this function is stored as a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;hash&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;for each beacon. From the hash, we’re selecting the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong class="markup--strong markup--p-strong"&gt;id&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;key with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;%beacon['id']&lt;/code&gt;, and printing this ID.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;How can we modify this script to instead run a command on every beacon returned by&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;beacons()&lt;/code&gt;? Let’s start by rewriting it to run&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;whoami&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;on every beacon.&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt; 
    &lt;blockquote&gt; 
     &lt;pre&gt;foreach %beacon (beacons()) {
    $bid = %beacon['id'];
    bshell($bid, "whoami");
}&lt;/pre&gt; 
    &lt;/blockquote&gt; 
   &lt;/div&gt; 
  &lt;/div&gt;  
  &lt;p class="graf graf--p graf-after--figure"&gt;Again, this is a pretty simple script, but we need to make it a little more useful. Instead of just running&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;whoami&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;on every beacon, let’s create a beacon alias that will run whatever command we want on every beacon. There are a couple ways to do this, but here’s a good start:&lt;/p&gt;  
  &lt;div class="aspectRatioPlaceholder is-locked"&gt; 
   &lt;div class="aspectRatioPlaceholder-fill"&gt; 
    &lt;blockquote&gt; 
     &lt;pre&gt;sub runcmd {
    $bid = $1;
    $cmd = $2;
    bshell($bid, $cmd);
}
alias runall {
    # Iterate through all beacons in data model
    foreach %beacon (beacons()) {
        # Call runcmd on each beacon
        runcmd(%beacon['id'], $2);
    }
}&lt;/pre&gt; 
    &lt;/blockquote&gt; 
   &lt;/div&gt; 
  &lt;/div&gt;  
  &lt;p class="graf graf--p graf-after--figure graf--trailing"&gt;To run this script, type&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;runall&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;into a beacon console, followed by a command. Due to the way&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code class="markup--code markup--p-code"&gt;alias&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;works in Aggressor, if you want to run a command with spaces in it, you’ll need to wrap it in double quotes. There are ways to get around this, but I wanted to keep this post as a basic introduction to Aggressor.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/div&gt;   
&lt;div class="section-divider"&gt;  
&lt;/div&gt; 
&lt;div class="section-content"&gt; 
 &lt;div class="section-inner sectionLayout--insetColumn"&gt; 
  &lt;p class="graf graf--p graf--leading"&gt;Hopefully this post has given you a better idea of how to write basic Aggressor scripts! This is just scratching the surface of what’s possible with Cobalt Strike. You can use&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.cobaltstrike.com/aggressor-script/events.html" class="markup--anchor markup--p-anchor"&gt;&lt;strong class="markup--strong markup--p-strong"&gt;events&lt;/strong&gt;&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to automatically trigger actions. You can alter the Cobalt Strike GUI with additional menu items or even custom visualizations. Aggressor doesn’t have functionality you want? You can even use inline Java object expressions to incorporate functionality from any Java library!&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p"&gt;It might not be the prettiest language, but Aggressor gives you a tremendous amount of power, and allows you to expand Cobalt Strike however you want to. If you’re a Cobalt Strike user and you’re not writing Aggressor, you’re missing out on one of the most powerful tools available to you. In future posts, I’ll go through more of what makes Aggressor so useful. Until then, I hope this has been a useful introduction.&lt;/p&gt; 
  &lt;p class="graf graf--p graf-after--p graf--trailing"&gt;Questions? Comments? Hit me up on&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://twitter.com/001SPARTaN" class="markup--anchor markup--p-anchor"&gt;&lt;strong class="markup--strong markup--p-strong"&gt;Twitter&lt;/strong&gt;&lt;/a&gt;, or come hang out in the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://bloodhoundgang.herokuapp.com/" class="markup--anchor markup--p-anchor"&gt;&lt;strong class="markup--strong markup--p-strong"&gt;BloodHound Slack&lt;/strong&gt;&lt;/a&gt;, especially the #aggressor channel.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/div&gt;   
&lt;img src="https://track.hubspot.com/__ptq.gif?a=3002354&amp;amp;k=14&amp;amp;r=https%3A%2F%2Femail.networksgroup.com%2Faggressor-101-unleashing-cobalt-strike-for-fun-and-profit&amp;amp;bu=https%253A%252F%252Femail.networksgroup.com&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</content:encoded>
      <category>Ethical Hacking</category>
      <category>Penetration Testing</category>
      <pubDate>Thu, 15 Mar 2018 13:54:37 GMT</pubDate>
      <author>chedler@networksgroup.com (Calvin Hedler)</author>
      <guid>https://email.networksgroup.com/aggressor-101-unleashing-cobalt-strike-for-fun-and-profit</guid>
      <dc:date>2018-03-15T13:54:37Z</dc:date>
    </item>
  </channel>
</rss>
