<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hackerman's Hacking Tutorials</title><link>https://parsiya.net/</link><description>Recent content on Hackerman's Hacking Tutorials</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 31 Mar 2026 02:55:00 -0700</lastBuildDate><atom:link href="https://parsiya.net/index.xml" rel="self" type="application/rss+xml"/><item><title>Manual Context is a Bug</title><link>https://parsiya.net/blog/manual-context-is-a-bug/</link><pubDate>Tue, 31 Mar 2026 02:55:00 -0700</pubDate><guid>https://parsiya.net/blog/manual-context-is-a-bug/</guid><description>&lt;p&gt;I wake up and read the news. Daniel Miessler has only declared my job dead three
times this week. Another frontier lab has found a bazillion bugs. Half of
LinkedIn is &amp;quot;SAST is dead.&amp;quot; The war is, well. Welcome to the age of AI.&lt;/p&gt;
&lt;p&gt;In this blog I reflect on &amp;quot;Manual Work is a Bug&amp;quot; and on how AI has changed my
workflow. I introduce the (not so novel concept) of &amp;quot;AI-Docs.&amp;quot; A knowledge base
for both humans and AI. Similar to our manual knowledge base, you should not
have to manually fill the context except during the initial creation; the LLM
should have everything it needs on hand.&lt;/p&gt;</description></item><item><title>AI-Native SARIF</title><link>https://parsiya.net/blog/ai-native-sarif/</link><pubDate>Thu, 11 Dec 2025 19:00:00 -0700</pubDate><guid>https://parsiya.net/blog/ai-native-sarif/</guid><description>&lt;p&gt;The &amp;quot;radical&amp;quot; idea to add prompts and code context directly to SARIF files for
AI triage.&lt;/p&gt;</description></item><item><title>WTF is ... - AI-Native SAST?</title><link>https://parsiya.net/blog/wtf-is-ai-native-sast/</link><pubDate>Fri, 31 Oct 2025 01:00:00 -0700</pubDate><guid>https://parsiya.net/blog/wtf-is-ai-native-sast/</guid><description>&lt;p&gt;Ladies and gentlemen, my name is Parsia and I'm here to ask and answer one
simple question: WTF is AI-Native SAST? (RIP TotalBiscuit).&lt;/p&gt;
&lt;p&gt;Spoiler: It's SAST+AI. But that doesn't make it useless. Quite the opposite,
I'll make the case for passing all your code to AI while tokens are cheap. Don't
believe the marketing, though. Current LLMs need serious hand-holding to go
beyond surface-level bug discovery, and that hand-holding comes from static
analysis.&lt;/p&gt;</description></item><item><title>So You Wanna Use Your Own LLMs in GitHub Copilot Chat</title><link>https://parsiya.net/blog/litellm-ghc-aad/</link><pubDate>Wed, 03 Sep 2025 07:00:00 -0700</pubDate><guid>https://parsiya.net/blog/litellm-ghc-aad/</guid><description>&lt;p&gt;We want to use custom OpenAI compatible API LLMs with GitHub Copilot Chat in VS
Code without API keys. We will use LiteLLM as a proxy for authentication and use
the Azure AI model support in Chat as a hack.&lt;/p&gt;
&lt;!-- More --&gt;
&lt;h1 id="problem-statement"&gt;Problem Statement
&lt;a class="header-link" href="#problem-statement"&gt;&lt;svg class="fill-current o-60 hover-accent-color-light" height="22px" viewBox="0 0 24 24" width="22px" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M0 0h24v24H0z" fill="none"/&gt;&lt;path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/&gt;&lt;/svg&gt;&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;GitHub Copilot Chat in VS Code (moving forward, called &lt;code&gt;Chat&lt;/code&gt;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;) allows custom
LLM deployments, but only supports API keys and not AAD/Entra ID. API keys are
icky and &lt;a href="https://cdn-dynmedia-1.microsoft.com/is/content/microsoftcorp/microsoft/final/en-us/microsoft-brand/documents/secure-future-initiative-protect-identities-and-secrets.pdf" target="_blank" rel="noreferrer noopener"&gt;not cool anymore&lt;/a&gt;. Using this method I can:&lt;/p&gt;</description></item><item><title>Kusto Detective Agency: Echoes of Deception - 0-8 Solves</title><link>https://parsiya.net/blog/2025-kda-echoes/</link><pubDate>Mon, 01 Sep 2025 20:00:00 -0700</pubDate><guid>https://parsiya.net/blog/2025-kda-echoes/</guid><description>&lt;p&gt;Kusto is important at my current employer and one of my work besties does
SecOps. So, I've decided to learn more Kusto. Solves for the first eight tasks
for Kusto Detective Agency challenge Echoes of Deception.&lt;/p&gt;
&lt;!-- More --&gt;
&lt;p&gt;It turns out Kusto is not just a better looking SQL, it does a lot more. E.g.,
it can make a graph and find paths (yes, as I've just searched, T-SQL can also
do this). It makes me wonder if we can do some esoteric data flow static
analysis by converting the AST into rows of data and finding paths from sources
to sinks (or am I reinventing CodeQL, again, lol &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;).&lt;/p&gt;</description></item><item><title>How Burp AI Works</title><link>https://parsiya.net/blog/2025-08-15-how-burp-ai-works/</link><pubDate>Fri, 15 Aug 2025 00:10:43 -0700</pubDate><guid>https://parsiya.net/blog/2025-08-15-how-burp-ai-works/</guid><description>&lt;p&gt;This is a quick peek inside Burp AI. I'll show how to proxy its requests, what
actually happens when you trigger a feature. This knowledge allows us to
redirect Burp AI to your own AI instance. As far as I know, this is not publicly
documented.&lt;/p&gt;
&lt;p&gt;I covered a shorter version in my DEF CON 33 Bug Bounty Village talk
&lt;code&gt;The Year of the Bounty Desktop: Bugs from Binaries&lt;/code&gt;. See the
&lt;a href="https://github.com/parsiya/Presentations/blob/main/defcon-33-bugs-binaries/defcon-33-bugs-binaries-all-slides.pdf" target="_blank" rel="noreferrer noopener"&gt;extended slides (pages 14–22)&lt;/a&gt; (placeholder for video).&lt;/p&gt;</description></item><item><title>Kusto-Mice: Optimizing Kusto joins</title><link>https://parsiya.net/blog/kusto-mice-join-optimization/</link><pubDate>Sun, 18 May 2025 14:52:43 -0700</pubDate><guid>https://parsiya.net/blog/kusto-mice-join-optimization/</guid><description>&lt;p&gt;A few weeks ago I wrestled with a complex Kusto query. I shared what I learned
at work in a presentation. In this blog, I'll use a public example to walk you
through it.&lt;/p&gt;</description></item><item><title>Steam's 'Open in Desktop' Button</title><link>https://parsiya.net/blog/steam-open-desktop/</link><pubDate>Thu, 19 Sep 2024 19:45:53 -0700</pubDate><guid>https://parsiya.net/blog/steam-open-desktop/</guid><description>&lt;p&gt;This is not a bug, but some notes about the new Steam &amp;quot;Open in Desktop&amp;quot; button.
I am going to show how to look for bugs in these kinds of browser-to-desktop
interactions.&lt;/p&gt;</description></item><item><title>Knee Deep in tree-sitter CST</title><link>https://parsiya.net/blog/knee-deep-tree-sitter-2/</link><pubDate>Tue, 09 Apr 2024 12:35:35 -0800</pubDate><guid>https://parsiya.net/blog/knee-deep-tree-sitter-2/</guid><description>&lt;p&gt;We will continue the tree-sitter adventure and tackle the problems we couldn't
solve with just tree-sitter queries. We can get results with a combination of
queries and the Concrete Syntax Tree (CST).&lt;/p&gt;
&lt;p&gt;In the






 
 
 


 
&lt;a href="https://parsiya.net/blog/knee-deep-tree-sitter-queries/" title="previous post" rel="nofollow" target="_blank"&gt;previous post&lt;/a&gt;
, I focused on just using queries. While they're useful for finding specific nodes, they're not enough.&lt;/p&gt;
&lt;p&gt;Code is at &lt;a href="https://github.com/parsiya/knee-deep-tree-sitter" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/knee-deep-tree-sitter&lt;/a&gt;. Don't forget to
populate the submodule, we need it for the last part.&lt;/p&gt;</description></item><item><title>Knee Deep in tree-sitter Queries</title><link>https://parsiya.net/blog/knee-deep-tree-sitter-queries/</link><pubDate>Tue, 19 Mar 2024 16:35:30 -0700</pubDate><guid>https://parsiya.net/blog/knee-deep-tree-sitter-queries/</guid><description>&lt;p&gt;&lt;a href="https://tree-sitter.github.io/tree-sitter/" target="_blank" rel="noreferrer noopener"&gt;tree-sitter&lt;/a&gt; is a parser generator. You can use it to parse source code which
is the first step of static analysis. For example, GitHub uses it to highlight
code, code navigation, and also in CodeQL extractors.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: Queries are great for capturing text from code. But to extract
anything moderately structured we need to traverse the syntax tree.&lt;/p&gt;
&lt;p&gt;And, yes, the title is based on Doom Episode 1 &lt;a href="https://doom.fandom.com/wiki/Knee-Deep_in_the_Dead" target="_blank" rel="noreferrer noopener"&gt;Knee Deep in the Dead&lt;/a&gt;.
I love the title (and the game), because it lets me relive my edgy days.&lt;/p&gt;</description></item><item><title>A Few Fun Semgrep Experiments</title><link>https://parsiya.net/blog/semgrep-fun/</link><pubDate>Sun, 21 Jan 2024 02:32:24 -0800</pubDate><guid>https://parsiya.net/blog/semgrep-fun/</guid><description>&lt;p&gt;I want to use Semgrep as a light code intelligence tool with a few experiments.
I will write custom rules to extract info from code and then process the
results.&lt;/p&gt;
&lt;p&gt;The type of these experiments is inspired by &lt;a href="https://github.com/mjambon" target="_blank" rel="noreferrer noopener"&gt;Martin Jambon&lt;/a&gt; who is
actually a core Semgrep developer. These are supposed to be self-contained but
short experiments. You can see his at &lt;a href="https://github.com/mjambon/dev-random" target="_blank" rel="noreferrer noopener"&gt;https://github.com/mjambon/dev-random&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Some SANS Holiday Hack 2023 Solutions</title><link>https://parsiya.net/blog/sans-holiday-hack-2023/</link><pubDate>Wed, 10 Jan 2024 12:29:17 -0800</pubDate><guid>https://parsiya.net/blog/sans-holiday-hack-2023/</guid><description>&lt;p&gt;As is tradition, I started the SANS Holiday Hack and this time I almost did
everything.&lt;/p&gt;
&lt;p&gt;Previous years' writeups:
&lt;a href="https://parsiya.net/categories/holiday-hack/"&gt;/categories/holiday-hack/&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id="holiday-hack-orientation"&gt;Holiday Hack Orientation
&lt;a class="header-link" href="#holiday-hack-orientation"&gt;&lt;svg class="fill-current o-60 hover-accent-color-light" height="22px" viewBox="0 0 24 24" width="22px" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M0 0h24v24H0z" fill="none"/&gt;&lt;path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/&gt;&lt;/svg&gt;&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;Picked up the fishing pole.&lt;/p&gt;
&lt;p&gt;Cranberry Pi: Type &lt;code&gt;answer&lt;/code&gt;.&lt;/p&gt;
&lt;h1 id="linux-101"&gt;Linux 101
&lt;a class="header-link" href="#linux-101"&gt;&lt;svg class="fill-current o-60 hover-accent-color-light" height="22px" viewBox="0 0 24 24" width="22px" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M0 0h24v24H0z" fill="none"/&gt;&lt;path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/&gt;&lt;/svg&gt;&lt;/a&gt;
&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;Visit Ginger Breddie in Santa's Shack on Christmas Island to help him with
some basic Linux tasks. It's in the southwest corner of Frosty's Beach.&lt;/p&gt;</description></item><item><title>Semgrep's Experimental Rule Syntax</title><link>https://parsiya.net/blog/2023-10-28-semgreps-experimental-rule-syntax/</link><pubDate>Sat, 28 Oct 2023 12:43:08 -0700</pubDate><guid>https://parsiya.net/blog/2023-10-28-semgreps-experimental-rule-syntax/</guid><description>&lt;p&gt;Semgrep has an experimental and (IMO) more readable rule syntax. I am converting
my own reference into a tutorial.&lt;/p&gt;</description></item><item><title>Some SANS Holiday Hack 2022 Solutions</title><link>https://parsiya.net/blog/sans-holiday-hack-2022/</link><pubDate>Thu, 19 Jan 2023 12:29:17 -0800</pubDate><guid>https://parsiya.net/blog/sans-holiday-hack-2022/</guid><description>&lt;p&gt;As is tradition, I started the SANS Holiday Hack and stopped midway. A very fun
static analysis problem came along ;)&lt;/p&gt;
&lt;p&gt;Previous years' writeups:
&lt;a href="https://parsiya.net/categories/holiday-hack/"&gt;/categories/holiday-hack/&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>YAML Wrangling with Rust</title><link>https://parsiya.net/blog/2022-10-16-yaml-wrangling-with-rust/</link><pubDate>Sun, 16 Oct 2022 11:43:58 -0700</pubDate><guid>https://parsiya.net/blog/2022-10-16-yaml-wrangling-with-rust/</guid><description>&lt;p&gt;I will talk about how I parsed Semgrep rules in YAML with Rust, how I created
Rust structs from JSON schemas for Semgrep rules, and finally, what
didn't work. This blog post has different sections with code so you can follow
and experiment.&lt;/p&gt;</description></item><item><title>Code Review Hot Spots with Semgrep</title><link>https://parsiya.net/blog/2022-04-07-code-review-hot-spots-with-semgrep/</link><pubDate>Thu, 07 Apr 2022 12:51:57 -0700</pubDate><guid>https://parsiya.net/blog/2022-04-07-code-review-hot-spots-with-semgrep/</guid><description>&lt;p&gt;I will discuss the (not novel) concept of code review hot spots. Hot spots are
parts of the code that might contain vulnerabilities. They are not suitable for
automatic reporting, so security engineers should review them manually. I will
define what I call a hot spot; I'll find some examples with Semgrep; and finally,
I'll show how I collect these rules.&lt;/p&gt;</description></item><item><title>Security Nightmares of Game Package Managers</title><link>https://parsiya.net/blog/2022-02-07-security-nightmares-of-game-package-managers/</link><pubDate>Mon, 07 Feb 2022 22:37:59 -0800</pubDate><guid>https://parsiya.net/blog/2022-02-07-security-nightmares-of-game-package-managers/</guid><description>&lt;p&gt;Let's talk about the security nightmare of handling hundreds of different game
installations. Over the years I have become the de facto security engineer
responsible for EA's &amp;quot;game package managers&amp;quot; &lt;a href="https://www.origin.com/usa/en-us/store/download" target="_blank" rel="noreferrer noopener"&gt;Origin&lt;/a&gt; and the
&lt;a href="https://www.ea.com/ea-app-beta" target="_blank" rel="noreferrer noopener"&gt;EA App&lt;/a&gt; and we have our own unique issues.&lt;/p&gt;</description></item><item><title>Some SANS Holiday Hack 2021 Solutions</title><link>https://parsiya.net/blog/2022-01-21-some-sans-holiday-hack-2021-solutions/</link><pubDate>Fri, 21 Jan 2022 20:06:21 -0800</pubDate><guid>https://parsiya.net/blog/2022-01-21-some-sans-holiday-hack-2021-solutions/</guid><description>&lt;p&gt;Here are some of my answers to the SANS Holiday Hack 2021. As usual, it's a
pretty fun and accessible challenge.&lt;/p&gt;
&lt;p&gt;Previous writeups:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;





 
 
 


 
&lt;a href="https://parsiya.net/blog/2019-01-15-sans-holiday-hack-challenge-2018-solutions/" title="SANS Holiday Hack 2018 Solutions" rel="nofollow" target="_blank"&gt;SANS Holiday Hack 2018 Solutions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;





 
 
 


 
&lt;a href="https://parsiya.net/blog/2020-01-15-some-sans-holiday-hack-2019-solutions/" title="Some SANS Holiday Hack 2019 Solutions" rel="nofollow" target="_blank"&gt;Some SANS Holiday Hack 2019 Solutions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;





 
 
 


 
&lt;a href="https://parsiya.net/blog/2021-01-17-some-sans-holiday-hack-2020-solutions/" title="Some SANS Holiday Hack 2020 Solutions" rel="nofollow" target="_blank"&gt;Some SANS Holiday Hack 2020 Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>RCE in Visual Studio Code's Remote WSL for Fun and Negative Profit</title><link>https://parsiya.net/blog/2021-12-20-rce-in-visual-studio-codes-remote-wsl-for-fun-and-negative-profit/</link><pubDate>Mon, 20 Dec 2021 03:22:10 -0800</pubDate><guid>https://parsiya.net/blog/2021-12-20-rce-in-visual-studio-codes-remote-wsl-for-fun-and-negative-profit/</guid><description>&lt;p&gt;The Visual Studio Code server in Windows Subsystem for Linux uses a local
WebSocket WebSocket connection to communicate with the &lt;code&gt;Remote WSL&lt;/code&gt; extension.
JavaScript in websites can connect to this server and execute arbitrary commands
on the target system. Assigned &lt;a href="https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2021-43907" target="_blank" rel="noreferrer noopener"&gt;CVE-2021-43907&lt;/a&gt; and zero bounty. I paid 5
USD for the EC2 machine hosting the proof-of-concept.&lt;/p&gt;
&lt;p&gt;It's really funny that PlayStation paid 15K USD for &lt;a href="https://hackerone.com/reports/873614" target="_blank" rel="noreferrer noopener"&gt;almost the same bug&lt;/a&gt;
with 2.2 million subscribers (it was out of scope in their program, too), but
MSFT doesn't pay for an official extension with more than 10 million installs
(obviously, not every install is unique) for one of their most popular products.
But you are not here to listen to my rants. So, read on.&lt;/p&gt;
&lt;p&gt;This post's target audience was &lt;code&gt;Desktop Application Security People&lt;/code&gt; niche. I
want to clarify some issues because more people have read it (edit on 2021-12-21):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I didn't get 5 dollars. I paid 5 dollars out of pocket, so it's -5.&lt;/li&gt;
&lt;li&gt;&amp;quot;I am not angry, I am just disappointed.&amp;quot; I knew it was out-of-scope. This
wasn't some bait-and-switch by Microsoft. I am not angry&lt;/li&gt;
&lt;li&gt;The vuln is &lt;strong&gt;not&lt;/strong&gt; in VS Code. MSFT says it's in the &lt;code&gt;Remote WSL&lt;/code&gt; extension
but I think it's in the way &lt;code&gt;VS Code Server&lt;/code&gt; works with the remote
development extensions.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;HackerNews link: &lt;a href="https://news.ycombinator.com/item?id=29635300" target="_blank" rel="noreferrer noopener"&gt;https://news.ycombinator.com/item?id=29635300&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>A Hands-On Intro to Semgrep's Autofix</title><link>https://parsiya.net/blog/2021-10-25-a-hands-on-intro-to-semgreps-autofix/</link><pubDate>Mon, 25 Oct 2021 20:00:47 -0700</pubDate><guid>https://parsiya.net/blog/2021-10-25-a-hands-on-intro-to-semgreps-autofix/</guid><description>&lt;p&gt;Semgrep's experimental &lt;a href="https://semgrep.dev/docs/experiments/overview/#autofix" target="_blank" rel="noreferrer noopener"&gt;autofix&lt;/a&gt; feature can automagically
modify vulnerable code. A few things can be fixed like this but it's worth
exploring. This post is an introduction to creating fixes for your Semgrep
rules.&lt;/p&gt;
&lt;p&gt;I have included links to the playground for practicing. If you prefer
running the rules via the command-line please see the rules and code at
&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/semgrep-autofix" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/semgrep-autofix&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Modify GitLab Repositories from the CI Pipeline</title><link>https://parsiya.net/blog/2021-10-11-modify-gitlab-repositories-from-the-ci-pipeline/</link><pubDate>Mon, 11 Oct 2021 01:12:58 -0700</pubDate><guid>https://parsiya.net/blog/2021-10-11-modify-gitlab-repositories-from-the-ci-pipeline/</guid><description>&lt;p&gt;You would think modifying a GitLab repository from its CI job should be
straightforward. Well, it's not. Here's how I did it.&lt;/p&gt;</description></item><item><title>Attack Surface Analysis - Part 3 - Resurrected Code Execution</title><link>https://parsiya.net/blog/2021-09-26-attack-surface-analysis-part-3-resurrected-code-execution/</link><pubDate>Sun, 26 Sep 2021 20:50:38 -0700</pubDate><guid>https://parsiya.net/blog/2021-09-26-attack-surface-analysis-part-3-resurrected-code-execution/</guid><description>&lt;p&gt;In part 3 of my attack surface analysis series, I will discuss an undisclosed RCE.
This bug uses a combination of all tricks introduced in






 
 
 

&lt;a href="https://parsiya.net/blog/2021-03-17-attack-surface-analysis-part-2-custom-protocol-handlers/" title="Attack Surface Analysis - Part 2 - Custom Protocol Handlers" rel="nofollow" target="_blank"&gt;part 2 of the series&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We will see command-line switch injection from a custom protocol handler,
loading remote files, reversing a custom scripting engine to instrument the
application, and log file injection. Pretty nice chain if I may say so.&lt;/p&gt;</description></item><item><title>The Thick Client Vulns That Weren't</title><link>https://parsiya.net/blog/2021-07-30-the-thick-client-vulns-that-werent/</link><pubDate>Fri, 30 Jul 2021 20:30:59 -0700</pubDate><guid>https://parsiya.net/blog/2021-07-30-the-thick-client-vulns-that-werent/</guid><description>&lt;p&gt;A few days ago I saw a tweet about thick client vulnerability. I am not linking
to it because it appeared to be someone new to the industry and very excited.&lt;/p&gt;
&lt;span class="caption-wrapper"&gt;
 &lt;img class="caption" src="01-tweet.png" title="The Original Tweet" alt="The Original Tweet"&gt;
 &lt;span class="caption-text"&gt;The Original Tweet&lt;/span&gt;
&lt;/span&gt;

&lt;p&gt;Well, most of these are not vulnerabilities. So, I am compiling
&lt;a href="https://twitter.com/CryptoGangsta/status/1417340945415032839" target="_blank" rel="noreferrer noopener"&gt;my tweets&lt;/a&gt; into a blog post.&lt;/p&gt;
&lt;p&gt;It's important that we only go after actual vulnerabilities and not spread
misinformation.&lt;/p&gt;
&lt;p&gt;Funnily, I have talked about several of these in a separate blog post named






 
 
 

 
&lt;a href="https://parsiya.net/blog/2020-07-25-no-you-are-not-getting-a-cve-for-that/" title="No, You Are Not Getting a CVE for That" rel="nofollow" target="_blank"&gt;No, You Are Not Getting a CVE for That&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Semgrep: The Surgical Static Analysis Tool</title><link>https://parsiya.net/blog/2021-06-22-semgrep-the-surgical-static-analysis-tool/</link><pubDate>Tue, 22 Jun 2021 18:42:06 -0700</pubDate><guid>https://parsiya.net/blog/2021-06-22-semgrep-the-surgical-static-analysis-tool/</guid><description>&lt;h1 id="why-are-we-here"&gt;Why are We Here?
&lt;a class="header-link" href="#why-are-we-here"&gt;&lt;svg class="fill-current o-60 hover-accent-color-light" height="22px" viewBox="0 0 24 24" width="22px" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M0 0h24v24H0z" fill="none"/&gt;&lt;path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/&gt;&lt;/svg&gt;&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;What this blog is about:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Why I like Semgrep.&lt;/li&gt;
&lt;li&gt;Why I think you should use it.&lt;/li&gt;
&lt;li&gt;How I use Semgrep.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What this blog is not about:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What static analysis is.&lt;/li&gt;
&lt;li&gt;Semgrep tutorial.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>The JavaScript Bridge in Modern Desktop Applications</title><link>https://parsiya.net/blog/2021-06-08-the-javascript-bridge-in-modern-desktop-applications/</link><pubDate>Tue, 08 Jun 2021 00:53:25 -0700</pubDate><guid>https://parsiya.net/blog/2021-06-08-the-javascript-bridge-in-modern-desktop-applications/</guid><description>&lt;p&gt;We have an XSS in a desktop application, what happens next? How can you
escalate it to remote code execution? Let's see.&lt;/p&gt;</description></item><item><title>Public Remote File Share in The Cloud</title><link>https://parsiya.net/blog/2021-05-31-public-remote-file-share-in-the-cloud/</link><pubDate>Mon, 31 May 2021 10:20:40 -0700</pubDate><guid>https://parsiya.net/blog/2021-05-31-public-remote-file-share-in-the-cloud/</guid><description>&lt;p&gt;In






 
 
 

&lt;a href="https://parsiya.net/blog/2021-03-17-attack-surface-analysis-part-2-custom-protocol-handlers/" title="Attack Surface Analysis - Part 2 - Custom Protocol Handlers" rel="nofollow" target="_blank"&gt;Part 2 of the Attack Surface Analysis series&lt;/a&gt;
I talked about how passing a remote file with a UNC path can lead to unexpected
results.&lt;/p&gt;
&lt;p&gt;I am documenting how I created a share using an EC2 instance. This guide is for
AWS, but it's a Linux machine running in the cloud. You can easily replicate it.&lt;/p&gt;</description></item><item><title>Testing Extensions in Chromium Browsers - Nordpass</title><link>https://parsiya.net/blog/2021-04-30-testing-extensions-in-chromium-browsers-nordpass/</link><pubDate>Fri, 30 Apr 2021 14:20:40 -0700</pubDate><guid>https://parsiya.net/blog/2021-04-30-testing-extensions-in-chromium-browsers-nordpass/</guid><description>&lt;p&gt;Recently, I looked at the &lt;a href="https://chrome.google.com/webstore/detail/nordpass%C2%AE-password-manage/fooolghllnmhmmndgjiamiiodkpenpbb" target="_blank" rel="noreferrer noopener"&gt;NordPass Password Manager browser extension&lt;/a&gt;.
I could not find any guides on manual testing of browser extensions. I decided
to write my own. So, here we are, &amp;quot;pushing the boundaries of science.&amp;quot;&lt;/p&gt;</description></item><item><title>Attack Surface Analysis - Part 2 - Custom Protocol Handlers</title><link>https://parsiya.net/blog/2021-03-17-attack-surface-analysis-part-2-custom-protocol-handlers/</link><pubDate>Wed, 17 Mar 2021 15:14:00 -0800</pubDate><guid>https://parsiya.net/blog/2021-03-17-attack-surface-analysis-part-2-custom-protocol-handlers/</guid><description>&lt;p&gt;Custom protocol handlers are an obscure attack surface. They allow us to convert
local attacks into remote ones and are an alternative way to






 
 
 


 
&lt;a href="https://parsiya.net/blog/2020-08-13-localghost-escaping-the-browser-sandbox-without-0-days/" title="jump the browser sandbox without 0days" rel="nofollow" target="_blank"&gt;jump the browser sandbox without 0days&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Similar to the first part of this series






 
 
 


 
&lt;a href="https://parsiya.net/blog/2021-01-08-attack-surface-analysis-part-1-application-update-a-novel-way-to-bypass-executable-signature-checks-with-electron/" title="A Novel Way to Bypass Executable Signature Checks with Electron" rel="nofollow" target="_blank"&gt;A Novel Way to Bypass Executable Signature Checks with Electron&lt;/a&gt;
I will analyze this attack surface and discuss a few interesting public bugs. I
wanted to discuss two of my undisclosed bugs but the post is already too long.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2021-04-21 updates&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Startup path limitations and possible workarounds.&lt;/li&gt;
&lt;li&gt;Positive security's excellent blog released a month after this with a near
jar trick.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://positive.security/blog/url-open-rce" target="_blank" rel="noreferrer noopener"&gt;Allow arbitrary URLs, expect arbitrary code execution&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The article has a great trick for passing parameters when we cannot. Use &lt;code&gt;jar&lt;/code&gt;
files in UNC paths: &lt;code&gt;\\ip\path\whatever.jar&lt;/code&gt;. Search for &lt;code&gt;windows-10-19042&lt;/code&gt; in
the page.&lt;/p&gt;</description></item><item><title>Automagically Deploying Websites with Custom Domains to GitHub Pages</title><link>https://parsiya.net/blog/2021-02-17-automagically-deploying-websites-with-custom-domains-to-github-pages/</link><pubDate>Wed, 17 Feb 2021 09:56:33 -0800</pubDate><guid>https://parsiya.net/blog/2021-02-17-automagically-deploying-websites-with-custom-domains-to-github-pages/</guid><description>&lt;p&gt;Recently, I have started moving my non-critical websites to GitHub pages. I am
documenting the process in one place for future me.&lt;/p&gt;</description></item><item><title>Some SANS Holiday Hack 2020 Solutions</title><link>https://parsiya.net/blog/2021-01-17-some-sans-holiday-hack-2020-solutions/</link><pubDate>Sun, 17 Jan 2021 11:33:47 -0800</pubDate><guid>https://parsiya.net/blog/2021-01-17-some-sans-holiday-hack-2020-solutions/</guid><description>&lt;p&gt;This year like last year and unlike 2018, I only did a few of the SANS Holiday
Hack challenges. I got invited into this private bug bounty program with a
desktop application in scope (those are quite rare) so I had to poke at it. To
be fair, I hit the motherlode and submitted $10K of bounties.&lt;/p&gt;
&lt;p&gt;Previous writeups:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;





 
 
 


 
&lt;a href="https://parsiya.net/blog/2019-01-15-sans-holiday-hack-challenge-2018-solutions/" title="SANS Holiday Hack 2018 Solutions" rel="nofollow" target="_blank"&gt;SANS Holiday Hack 2018 Solutions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;





 
 
 


 
&lt;a href="https://parsiya.net/blog/2020-01-15-some-sans-holiday-hack-2019-solutions/" title="Some SANS Holiday Hack 2019 Solutions" rel="nofollow" target="_blank"&gt;Some SANS Holiday Hack 2019 Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Attack Surface Analysis - Part 1 - Application Update:
'A Novel Way to Bypass Executable Signature Checks with Electron'</title><link>https://parsiya.net/blog/2021-01-08-attack-surface-analysis-part-1-application-update-a-novel-way-to-bypass-executable-signature-checks-with-electron/</link><pubDate>Fri, 08 Jan 2021 22:33:32 -0800</pubDate><guid>https://parsiya.net/blog/2021-01-08-attack-surface-analysis-part-1-application-update-a-novel-way-to-bypass-executable-signature-checks-with-electron/</guid><description>&lt;p&gt;A few months ago I found a way to subvert the update process of an Electron
application to get local privilege escalation. The application stores the
updater under a path where standard users have write access. But it also
checked if the executable was signed by the vendor. I managed to bypass the
signing using a backdoored Electron application.&lt;/p&gt;</description></item><item><title>The $15000 PlayStation Bounty</title><link>https://parsiya.net/blog/2021-01-01-the-15000-playstation-bounty/</link><pubDate>Fri, 01 Jan 2021 15:29:00 -0800</pubDate><guid>https://parsiya.net/blog/2021-01-01-the-15000-playstation-bounty/</guid><description>&lt;p&gt;Earlier in December 2020, my &lt;code&gt;PlayStation Now&lt;/code&gt; report was disclosed. You can see
the report at &lt;a href="https://hackerone.com/reports/873614" target="_blank" rel="noreferrer noopener"&gt;https://hackerone.com/reports/873614&lt;/a&gt;. That is my first paid bounty
and my first disclosed report. It was quite exciting. I doubt I can top it.&lt;/p&gt;</description></item><item><title>Customizing Python's SimpleHTTPServer</title><link>https://parsiya.net/blog/2020-11-15-customizing-pythons-simplehttpserver/</link><pubDate>Sun, 15 Nov 2020 20:57:46 -0800</pubDate><guid>https://parsiya.net/blog/2020-11-15-customizing-pythons-simplehttpserver/</guid><description>&lt;p&gt;The other day I customized the Python built-in SimpleHTTPServer with some
routes. I did not find a lot of info about it (most use it to serve files). This
is how I did some basic customization.&lt;/p&gt;</description></item><item><title>The Same-Origin Policy Gone Wild</title><link>https://parsiya.net/blog/2020-11-01-the-same-origin-policy-gone-wild/</link><pubDate>Sun, 01 Nov 2020 20:02:53 -0800</pubDate><guid>https://parsiya.net/blog/2020-11-01-the-same-origin-policy-gone-wild/</guid><description>&lt;p&gt;I will talk about some edge cases of the Same-Origin Policy (SOP). It affects
browser based thickclient platforms so it's not just for web application
security. This is a more detailed dive into this topic that I touched briefly in
the &lt;a href="https://youtu.be/Cgl51ZcACLg?t=90" target="_blank" rel="noreferrer noopener"&gt;localghost&lt;/a&gt; talk.&lt;/p&gt;</description></item><item><title>localghost: Escaping the Browser Sandbox Without 0-Days</title><link>https://parsiya.net/blog/2020-08-13-localghost-escaping-the-browser-sandbox-without-0-days/</link><pubDate>Thu, 13 Aug 2020 20:38:06 -0700</pubDate><guid>https://parsiya.net/blog/2020-08-13-localghost-escaping-the-browser-sandbox-without-0-days/</guid><description>&lt;p&gt;I had the hono(u)r of presenting in the &lt;a href="https://www.appsecvillage.com/agenda/2020/localghost-escaping-the-browser-sandbox-without-0-days" target="_blank" rel="noreferrer noopener"&gt;DEF CON 28 Appsec village&lt;/a&gt;.
Unfortunately, my super-duper awesome &lt;a href="https://hackerone.com/reports/873614" target="_blank" rel="noreferrer noopener"&gt;$15K PlayStation bug&lt;/a&gt; was not
disclosed yet so I did not talk about it. Be sure to read it, it's great.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="parsia-dc2020-appsec-village-localghost.pdf"&gt;Slides in PDF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Youtube link: &lt;a href="https://youtu.be/Cgl51ZcACLg?t=90" target="_blank" rel="noreferrer noopener"&gt;https://youtu.be/Cgl51ZcACLg?t=90&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe src="https://www.youtube-nocookie.com/embed/Cgl51ZcACLg?start=90" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Parsia Hakimian - localghost: Escaping Browser Sandbox Without 0-Days - DEF CON 28SM AppSec Village"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>No, You Are Not Getting a CVE for That</title><link>https://parsiya.net/blog/2020-07-25-no-you-are-not-getting-a-cve-for-that/</link><pubDate>Sat, 25 Jul 2020 16:21:15 -0700</pubDate><guid>https://parsiya.net/blog/2020-07-25-no-you-are-not-getting-a-cve-for-that/</guid><description>&lt;p&gt;An intentionally insecure system is insecure. As &lt;a href="https://devblogs.microsoft.com/oldnewthing/?p=18593" target="_blank" rel="noreferrer noopener"&gt;Raymond Chen says&lt;/a&gt;, &amp;quot;You
can't make up for the absence of any actual vulnerability by piling on style
points and cranking up the degree of difficulty.&amp;quot;&lt;/p&gt;</description></item><item><title>Thick Client Proxying - Part 11 - GOG Galaxy and Extract-SNI</title><link>https://parsiya.net/blog/2020-06-22-thick-client-proxying-part-11-gog-galaxy-and-extract-sni/</link><pubDate>Mon, 22 Jun 2020 09:49:35 -0700</pubDate><guid>https://parsiya.net/blog/2020-06-22-thick-client-proxying-part-11-gog-galaxy-and-extract-sni/</guid><description>&lt;p&gt;In this post we will use our knowledge from






 
 
 


 
&lt;a href="https://parsiya.net/blog/2020-05-09-thick-client-proxying-part-10-the-hosts-file/" title="Thick Client Proxying - Part 10 - The hosts File" rel="nofollow" target="_blank"&gt;Thick Client Proxying - Part 10 - The hosts File&lt;/a&gt;
to proxy GOG Galaxy 2. I will also introduce
&lt;a href="https://github.com/parsiya/extract-sni" target="_blank" rel="noreferrer noopener"&gt;some automation&lt;/a&gt; to make our lives easier.&lt;/p&gt;</description></item><item><title>Go Slices and Their Oddities</title><link>https://parsiya.net/blog/2020-05-17-go-slices-and-their-oddities/</link><pubDate>Sun, 17 May 2020 22:37:21 -0700</pubDate><guid>https://parsiya.net/blog/2020-05-17-go-slices-and-their-oddities/</guid><description>&lt;p&gt;A friend pointed me to this &lt;a href="https://medium.com/@gotzmann/so-you-think-you-know-go-c5164b0d0511" target="_blank" rel="noreferrer noopener"&gt;Go quiz about slices&lt;/a&gt; by
&lt;a href="https://github.com/gotzmann" target="_blank" rel="noreferrer noopener"&gt;Serge Gotsuliak&lt;/a&gt;. It's an interesting exercise and points out the
intricacies of Go slices. I decided to explore it in detail. These oddities
might have security implications.&lt;/p&gt;</description></item><item><title>Thick Client Proxying - Part 10 - The hosts File</title><link>https://parsiya.net/blog/2020-05-09-thick-client-proxying-part-10-the-hosts-file/</link><pubDate>Sat, 09 May 2020 13:01:59 -0700</pubDate><guid>https://parsiya.net/blog/2020-05-09-thick-client-proxying-part-10-the-hosts-file/</guid><description>&lt;p&gt;Welcome to the 10th installment of
&lt;a href="https://parsiya.net/categories/thick-client-proxying/" title="Thick Client Proxying"&gt;Thick Client Proxying&lt;/a&gt;.
A series running since 2016. Woot! Today I will talk about traffic redirection
using the &lt;code&gt;hosts&lt;/code&gt; file.&lt;/p&gt;</description></item><item><title>Towards a Quieter Burp History</title><link>https://parsiya.net/blog/2020-05-01-towards-a-quieter-burp-history/</link><pubDate>Fri, 01 May 2020 23:13:24 -0700</pubDate><guid>https://parsiya.net/blog/2020-05-01-towards-a-quieter-burp-history/</guid><description>&lt;p&gt;This is how I reduce the noise in Burp's HTTP history when testing thick
clients. You can use the methods here to create your own Burp configuration file
or build upon the one I have created. I am going to identify common noisy
requests that appear in Windows and then ignore them in Burp.&lt;/p&gt;</description></item><item><title>The Encrypted Logz - Some Simple Reverse Engineering</title><link>https://parsiya.net/blog/2020-04-17-the-encrypted-logz-some-simple-reverse-engineering/</link><pubDate>Fri, 17 Apr 2020 17:30:22 -0700</pubDate><guid>https://parsiya.net/blog/2020-04-17-the-encrypted-logz-some-simple-reverse-engineering/</guid><description>&lt;p&gt;I was looking at an application (not related to my day job) and I decided to
reverse engineer how it creates logs. I cannot name the app (yet) but hopefully,
this is useful.&lt;/p&gt;</description></item><item><title>The Golang int and the Overlooked Bug</title><link>https://parsiya.net/blog/2020-04-05-the-golang-int-and-the-overlooked-bug/</link><pubDate>Sun, 05 Apr 2020 01:19:36 -0700</pubDate><guid>https://parsiya.net/blog/2020-04-05-the-golang-int-and-the-overlooked-bug/</guid><description>&lt;p&gt;This blog is about a &lt;a href="https://securitylab.github.com/" target="_blank" rel="noreferrer noopener"&gt;GitHub Security Lab&lt;/a&gt; &lt;code&gt;Spot The Bug&lt;/code&gt;
challenge that had an overlooked bug. &lt;a href="https://twitter.com/GHSecurityLab" target="_blank" rel="noreferrer noopener"&gt;Github Security Lab's Twitter account&lt;/a&gt;
tweets code snippets from time to time. The challenge is to spot the bug.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclosure&lt;/strong&gt;: I might be completely wrong because we only have access to the
snippet in the picture and people at the GitHub Security Lab are better than me
in static analysis.&lt;/p&gt;</description></item><item><title>Time Management For Systems Administrators - Lessons Learned</title><link>https://parsiya.net/blog/2020-03-13-time-management-for-systems-administrators-lessons-learned/</link><pubDate>Fri, 13 Mar 2020 19:25:18 -0700</pubDate><guid>https://parsiya.net/blog/2020-03-13-time-management-for-systems-administrators-lessons-learned/</guid><description>&lt;p&gt;A while ago I read &lt;a href="https://everythingsysadmin.com/books.html" target="_blank" rel="noreferrer noopener"&gt;Time Management for System Administrators&lt;/a&gt; by
&lt;a href="https://twitter.com/yesthattom" target="_blank" rel="noreferrer noopener"&gt;Tom Limoncelli&lt;/a&gt;. This blog is my reviewed notes.&lt;/p&gt;
&lt;p&gt;You can find my raw notes in my clone at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://parsiya.io/automation/time-management-sysadmins-notes/" target="_blank" rel="noreferrer noopener"&gt;https://parsiya.io/automation/time-management-sysadmins-notes/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tom is also the author of one of my favorite articles
&lt;a href="https://queue.acm.org/detail.cfm?id=3197520" target="_blank" rel="noreferrer noopener"&gt;Manual Work is a Bug&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have written about it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2018-10-03-reflections-on-manual-work-is-a-bug/" title="Reflections on &amp;#39;Manual Work is a Bug&amp;#39;"&gt;Reflections on 'Manual Work is a Bug'&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2019-04-17-the-dark-side-of-manual-work-is-a-bug/" title="The Dark Side of &amp;#39;Manual Work is a Bug&amp;#39;"&gt;The Dark Side of 'Manual Work is a Bug'&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Old ContextIS Challenge Solutions</title><link>https://parsiya.net/blog/2020-02-09-old-contextis-challenge-solutions/</link><pubDate>Sun, 09 Feb 2020 19:08:07 -0800</pubDate><guid>https://parsiya.net/blog/2020-02-09-old-contextis-challenge-solutions/</guid><description>&lt;p&gt;A few years ago I did the &lt;a href="https://www.contextis.com/en/" target="_blank" rel="noreferrer noopener"&gt;Context Information Security&lt;/a&gt;
challenges. They used it for recruiting so I never published the results.
However, they have now switched to &lt;a href="https://www.hackthebox.eu/" target="_blank" rel="noreferrer noopener"&gt;Hack The Box&lt;/a&gt; and the old
challenges are gone. So I am publishing what I did.&lt;/p&gt;
&lt;p&gt;You can see the page with the old challenges using the Wayback Machine at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://web.archive.org/web/20181012035146/https://www.contextis.com/en/careers/challenges" target="_blank" rel="noreferrer noopener"&gt;http://web.archive.org/web/20181012035146/https://www.contextis.com/en/careers/challenges&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also did some of their &lt;a href="https://parsiya.net/blog/2018-06-05-contextis-xmas-ctf-writeup/" title="xmas 2018 challenges"&gt;xmas 2018 challenges&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Documentation Writing for System Administrators - Notes</title><link>https://parsiya.net/blog/2020-02-06-documentation-writing-for-system-administrators-notes/</link><pubDate>Thu, 06 Feb 2020 23:21:57 -0800</pubDate><guid>https://parsiya.net/blog/2020-02-06-documentation-writing-for-system-administrators-notes/</guid><description>&lt;p&gt;These are my notes for the booklet &lt;code&gt;Documentation Writing for System Administrtors&lt;/code&gt;.
It's from 2003, so some of the tools and procedures are old. However, somethings
never change and it's still useful.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.usenix.org/short-topics/documentation-writing-system-administrators" target="_blank" rel="noreferrer noopener"&gt;https://www.usenix.org/short-topics/documentation-writing-system-administrators&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Some SANS Holiday Hack 2019 Solutions</title><link>https://parsiya.net/blog/2020-01-15-some-sans-holiday-hack-2019-solutions/</link><pubDate>Wed, 15 Jan 2020 00:09:11 -0800</pubDate><guid>https://parsiya.net/blog/2020-01-15-some-sans-holiday-hack-2019-solutions/</guid><description>&lt;p&gt;I did some of the solutions for the SANS Holiday Hack Challenge of 2019. Last
year I participated for the first time. You can find the solutions below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2019-01-15-sans-holiday-hack-challenge-2018-solutions/" title="SANS Holiday Hack 2018 Solutions"&gt;SANS Holiday Hack 2018 Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Using Mozilla Rhino to Run JavaScript in Java</title><link>https://parsiya.net/blog/2019-12-22-using-mozilla-rhino-to-run-javascript-in-java/</link><pubDate>Sun, 22 Dec 2019 20:13:09 -0800</pubDate><guid>https://parsiya.net/blog/2019-12-22-using-mozilla-rhino-to-run-javascript-in-java/</guid><description>&lt;p&gt;This post discusses what I learned about executing JavaScript code in Java
with Mozilla Rhino. By the end of this post, you will know:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What Rhino is.&lt;/li&gt;
&lt;li&gt;How to use Rhino in your Java application (e.g., a Burp extension).&lt;/li&gt;
&lt;li&gt;Some tips and tricks when dealing with Rhino.&lt;/li&gt;
&lt;li&gt;Alternative options to using Rhino.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Code is at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/java-rhino" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/java-rhino&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Developing and Debugging Java Burp Extensions with Visual Studio Code</title><link>https://parsiya.net/blog/2019-12-02-developing-and-debugging-java-burp-extensions-with-visual-studio-code/</link><pubDate>Mon, 02 Dec 2019 19:32:09 -0800</pubDate><guid>https://parsiya.net/blog/2019-12-02-developing-and-debugging-java-burp-extensions-with-visual-studio-code/</guid><description>&lt;p&gt;A few days ago, I released the &lt;a href="https://github.com/parsiya/bug-diaries" target="_blank" rel="noreferrer noopener"&gt;Bug Diaries&lt;/a&gt;
Burp extension. It's a Burp extension that aims to mimic Burp issues for the
community (free) version. For reasons, I decided to rewrite it in Java. This is
the first part of my series on what I learned switching to Java.&lt;/p&gt;
&lt;p&gt;This part discusses how my environment is set up for development with
&lt;a href="https://code.visualstudio.com/" target="_blank" rel="noreferrer noopener"&gt;Visual Studio Code&lt;/a&gt;. Things like
auto-completion, Gradle builds and most importantly debugging.&lt;/p&gt;
&lt;p&gt;Clone the repository to skip some of the steps in the blog. I still recommend
doing them yourself if you are not familiar with Gradle and Burp development,
clone the following repository:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/burp-sample-extension-java" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/burp-sample-extension-java&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Swing in Python Burp Extensions - Part 3 - Tips and Tricks</title><link>https://parsiya.net/blog/2019-11-26-swing-in-python-burp-extensions-part-3-tips-and-tricks/</link><pubDate>Tue, 26 Nov 2019 00:24:37 -0800</pubDate><guid>https://parsiya.net/blog/2019-11-26-swing-in-python-burp-extensions-part-3-tips-and-tricks/</guid><description>&lt;p&gt;In the two previous parts, we learned about Jython Swing. Those blogs take a lot
of time to write. I think each of them took around 10 hours. I do not want to
spend that kind of time but I still want to document what I have learned.&lt;/p&gt;
&lt;p&gt;In this blog I will write tips and tricks with a small code snippet instead of
creating a complete extension.&lt;/p&gt;
&lt;p&gt;Did I tell you I release &lt;a href="https://github.com/parsiya/bug-diaries" target="_blank" rel="noreferrer noopener"&gt;Bug Diaries&lt;/a&gt;,
it's a Python Burp extension that aims to bring Burp issues to the community
version. It's pretty neat.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2019-11-04-swing-in-python-burp-extensions-part-1/" title="Swing in Python Burp Extensions - Part 1"&gt;Swing in Python Burp Extensions - Part 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2019-11-11-swing-in-python-burp-extensions-part-2-netbeans-and-tablemodels/" title="Swing in Python Burp Extensions - Part 2 - NetBeans and TableModels"&gt;Swing in Python Burp Extensions - Part 2 - NetBeans and TableModels&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Swing in Python Burp Extensions - Part 2 - NetBeans and TableModels</title><link>https://parsiya.net/blog/2019-11-11-swing-in-python-burp-extensions-part-2-netbeans-and-tablemodels/</link><pubDate>Mon, 11 Nov 2019 12:00:53 -0800</pubDate><guid>https://parsiya.net/blog/2019-11-11-swing-in-python-burp-extensions-part-2-netbeans-and-tablemodels/</guid><description>&lt;p&gt;In &lt;a href="https://parsiya.net/blog/2019-11-04-swing-in-python-burp-extensions-part-1/" title="Swing
in Python Burp Extensions - Part 1"&gt;part 1&lt;/a&gt; we discussed handcrafting Swing GUI items
in a form. In this part, we will design a GUI using
&lt;a href="https://netbeans.org/" target="_blank" rel="noreferrer noopener"&gt;NetBeans&lt;/a&gt; and then convert it to Jython. Then use it in
a Burp tab. Next, we will create a custom table model based on objects to handle
our issues.&lt;/p&gt;
&lt;p&gt;Code is at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/jython-swing-2" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/jython-swing-2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Swing in Python Burp Extensions - Part 1</title><link>https://parsiya.net/blog/2019-11-04-swing-in-python-burp-extensions-part-1/</link><pubDate>Mon, 04 Nov 2019 00:40:42 -0700</pubDate><guid>https://parsiya.net/blog/2019-11-04-swing-in-python-burp-extensions-part-1/</guid><description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; What I learned from creating handcrafted GUIs for Python Burp
extensions using Swing. Code is at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/jython-swing-1" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/jython-swing-1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Quality of Life Tips and Tricks - Burp Suite</title><link>https://parsiya.net/blog/2019-10-13-quality-of-life-tips-and-tricks-burp-suite/</link><pubDate>Sun, 13 Oct 2019 20:48:26 -0700</pubDate><guid>https://parsiya.net/blog/2019-10-13-quality-of-life-tips-and-tricks-burp-suite/</guid><description>&lt;p&gt;Quality of life patch/update in the context of videogames is a patch that
focuses on fixing bugs instead of introducing new content. New features in these
patches are not ground-breaking but rather making the game easier to play&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;I have been using these things to make my life easier. I am publishing them
gradually and will refine them into one final page similar to the
&lt;a href="https://parsiya.net/cheatsheet/" title="cheatsheet"&gt;cheatsheet&lt;/a&gt;. This page
also pairs really well with &lt;a href="https://parsiya.net/categories/automation/" title="automation"&gt;automation&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Disabling Cascade Fan's Beep</title><link>https://parsiya.net/blog/2019-07-28-disabling-cascade-fans-beep/</link><pubDate>Sun, 28 Jul 2019 13:23:50 -0700</pubDate><guid>https://parsiya.net/blog/2019-07-28-disabling-cascade-fans-beep/</guid><description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open 11 screws.&lt;/li&gt;
&lt;li&gt;Remove the cap on the buzzer.&lt;/li&gt;
&lt;li&gt;Done.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Chaining Three Bugs to Get RCE in Microsoft AttackSurfaceAnalyzer</title><link>https://parsiya.net/blog/2019-06-18-chaining-three-bugs-to-get-rce-in-microsoft-attacksurfaceanalyzer/</link><pubDate>Tue, 18 Jun 2019 13:03:53 -0700</pubDate><guid>https://parsiya.net/blog/2019-06-18-chaining-three-bugs-to-get-rce-in-microsoft-attacksurfaceanalyzer/</guid><description>&lt;p&gt;This is a blog post about how I found three vulns and chained them to get RCE in
the Microsoft
&lt;a href="https://github.com/microsoft/AttackSurfaceAnalyzer" target="_blank" rel="noreferrer noopener"&gt;AttackSurfaceAnalyzer&lt;/a&gt; (ASA
moving forward) GUI version.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ASA uses &lt;a href="https://github.com/ElectronNET/Electron.NET" target="_blank" rel="noreferrer noopener"&gt;Electron.NET&lt;/a&gt; which
binds the internal Kestrel web server to &lt;code&gt;0.0.0.0&lt;/code&gt;. If permission is given to
bypass the Windows OS firewall (or if used on an OS without one), a remote
attacker can connect to it and access the application.&lt;/li&gt;
&lt;li&gt;The web application is vulnerable to Cross-Site Scripting (XSS). A remote
attacker can submit a runID with embedded JavaScript that is executed by
the victim using the ASA Electron application.&lt;/li&gt;
&lt;li&gt;Electron.NET does not have the &lt;code&gt;NodeIntegration&lt;/code&gt; flag set to false. This
allows the JavaScript payload to spawn up processes on the victim's machine.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Thick Client Proxying - Part 9 - The Windows DNS Cache</title><link>https://parsiya.net/blog/2019-04-28-thick-client-proxying-part-9-the-windows-dns-cache/</link><pubDate>Sun, 28 Apr 2019 13:35:00 -0700</pubDate><guid>https://parsiya.net/blog/2019-04-28-thick-client-proxying-part-9-the-windows-dns-cache/</guid><description>&lt;p&gt;This post explains a trick that I have been using for a few years to discover
application endpoints on Windows quickly.&lt;/p&gt;
&lt;p&gt;It's a simple trick:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Clear the DNS cache.&lt;/li&gt;
&lt;li&gt;Take a snapshot of the cache.&lt;/li&gt;
&lt;li&gt;Run the application and use different functionalities.&lt;/li&gt;
&lt;li&gt;Take another snapshot of the cache.&lt;/li&gt;
&lt;li&gt;Compare these two snapshots.&lt;/li&gt;
&lt;li&gt;???&lt;/li&gt;
&lt;li&gt;Discover (most) endpoints.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Code is at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/dns-cache" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/dns-cache&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Disabling Burp's Update Screen - Part 1 - Analysis and Failures</title><link>https://parsiya.net/blog/2019-04-21-disabling-burps-update-screen-part-1-analysis-and-failures/</link><pubDate>Sun, 21 Apr 2019 14:58:50 -0700</pubDate><guid>https://parsiya.net/blog/2019-04-21-disabling-burps-update-screen-part-1-analysis-and-failures/</guid><description>&lt;p&gt;I tried to disable Burp's update nag screen and failed. This blog post describes
the analysis and my effort to date.&lt;/p&gt;
&lt;p&gt;Hacky Workaround: Block outgoing requests to &lt;code&gt;54.246.133.196&lt;/code&gt; but this will
also, block installing extensions from the Burp app store.&lt;/p&gt;
&lt;p&gt;Part two (if there is one) will discuss more things that I tried and did not
work and/or what worked and how you can disable it.&lt;/p&gt;</description></item><item><title>The Dark Side of "Manual Work is a Bug"</title><link>https://parsiya.net/blog/2019-04-17-the-dark-side-of-manual-work-is-a-bug/</link><pubDate>Wed, 17 Apr 2019 19:12:33 -0700</pubDate><guid>https://parsiya.net/blog/2019-04-17-the-dark-side-of-manual-work-is-a-bug/</guid><description>&lt;p&gt;This is a revisit of &lt;a href="https://queue.acm.org/detail.cfm?id=3197520" target="_blank" rel="noreferrer noopener"&gt;Manual Work is a Bug&lt;/a&gt;
during my ramp up at my &lt;a href="https://twitter.com/CryptoGangsta/status/1109185306295746563" target="_blank" rel="noreferrer noopener"&gt;new job&lt;/a&gt;.
I will discuss my experience doing some automation at my previous job and the
flip side to the utopia painted by the article.&lt;/p&gt;</description></item><item><title>Hiding OPTIONS - An Adventure in Dealing with Burp Proxy in an Extension</title><link>https://parsiya.net/blog/2019-04-06-hiding-options-an-adventure-in-dealing-with-burp-proxy-in-an-extension/</link><pubDate>Sat, 06 Apr 2019 15:30:16 -0700</pubDate><guid>https://parsiya.net/blog/2019-04-06-hiding-options-an-adventure-in-dealing-with-burp-proxy-in-an-extension/</guid><description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: No matter what you do, your Burp extension cannot modify requests before they hit the HTTP History panel. You can modify requests after that and before they are sent out. We will discuss two ways to modify them with extensions. While the Match/Replace functionality is special, it has the same limitation (note how it has a separate tab that says &lt;code&gt;auto-modified&lt;/code&gt;?).&lt;/p&gt;
&lt;p&gt;Update October 2019: Latest version using &lt;a href="https://github.com/parsiya/burputils/" target="_blank" rel="noreferrer noopener"&gt;burputils&lt;/a&gt; is at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/burp-filter-options" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/burp-filter-options&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>path.Join Considered Harmful</title><link>https://parsiya.net/blog/2019-03-09-path.join-considered-harmful/</link><pubDate>Sat, 09 Mar 2019 20:43:40 -0500</pubDate><guid>https://parsiya.net/blog/2019-03-09-path.join-considered-harmful/</guid><description>&lt;p&gt;Credit goes to my friend &lt;a href="https://www.linkedin.com/in/stark-riedesel-4162b846" target="_blank" rel="noreferrer noopener"&gt;Stark Riedesel&lt;/a&gt;. Check out his &lt;a href="https://github.com/starkriedesel/" target="_blank" rel="noreferrer noopener"&gt;github profile&lt;/a&gt;. One of these days I will bully him into reviving his blog.&lt;/p&gt;
&lt;p&gt;TL;DR: Instead of &lt;a href="https://golang.org/pkg/path/#Join" target="_blank" rel="noreferrer noopener"&gt;path.join&lt;/a&gt; use &lt;a href="https://golang.org/pkg/path/filepath/" target="_blank" rel="noreferrer noopener"&gt;filepath.Join&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Cheating at Moonlighter - Part 4 - Defense</title><link>https://parsiya.net/blog/2019-01-31-cheating-at-moonlighter-part-4-defense/</link><pubDate>Thu, 31 Jan 2019 21:11:32 -0500</pubDate><guid>https://parsiya.net/blog/2019-01-31-cheating-at-moonlighter-part-4-defense/</guid><description>&lt;p&gt;I am going to talk about defense. This is a mainly non-technical post. It's a bit different from other posts on this topic and in general. With the existence of a trainer and the debug HUD, I decided to can the idea of using Cheat Engine on Moonlighter.&lt;/p&gt;
&lt;p&gt;Other parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2019-01-23-cheating-at-moonlighter-part-1-save-file/" title="Cheating at Moonlighter - Part 1 - Save File"&gt;Cheating at Moonlighter - Part 1 - Save File&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2019-01-27-cheating-at-moonlighter-part-2-changing-game-logic-with-dnspy/" title="Cheating at Moonlighter - Part 2 - Changing Game Logic with dnSpy"&gt;Cheating at Moonlighter - Part 2 - Changing Game Logic with dnSpy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2019-01-29-cheating-at-moonlighter-part-3-enabling-debug-hud/" title="Cheating at Moonlighter - Part 3 - Enabling Debug HUD"&gt;Cheating at Moonlighter - Part 3 - Enabling Debug HUD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Cheating at Moonlighter - Part 3 - Enabling Debug HUD</title><link>https://parsiya.net/blog/2019-01-29-cheating-at-moonlighter-part-3-enabling-debug-hud/</link><pubDate>Tue, 29 Jan 2019 22:52:01 -0500</pubDate><guid>https://parsiya.net/blog/2019-01-29-cheating-at-moonlighter-part-3-enabling-debug-hud/</guid><description>&lt;p&gt;In this part, I am going to use dnSpy to enable the Debug HUD. We will analyze how it's enabled and how it can be accessed.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2019-01-23-cheating-at-moonlighter-part-1-save-file/" title="Cheating at Moonlighter - Part 1 - Save File"&gt;Cheating at Moonlighter - Part 1 - Save File&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2019-01-27-cheating-at-moonlighter-part-2-changing-game-logic-with-dnspy/" title="Cheating at Moonlighter - Part 2 - Changing Game Logic with dnSpy"&gt;Cheating at Moonlighter - Part 2 - Changing Game Logic with dnSpy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Cheating at Moonlighter - Part 2 - Changing Game Logic with dnSpy</title><link>https://parsiya.net/blog/2019-01-27-cheating-at-moonlighter-part-2-changing-game-logic-with-dnspy/</link><pubDate>Sun, 27 Jan 2019 20:47:30 -0500</pubDate><guid>https://parsiya.net/blog/2019-01-27-cheating-at-moonlighter-part-2-changing-game-logic-with-dnspy/</guid><description>&lt;p&gt;In part 1 we messed a bit with Moonlighter but modifying the save file. In this part, we will modify game logic using dnSpy.&lt;/p&gt;
&lt;p&gt;We will modify our damage, player stats and discover a hidden stat.&lt;/p&gt;</description></item><item><title>Cheating at Moonlighter - Part 1 - Save File</title><link>https://parsiya.net/blog/2019-01-23-cheating-at-moonlighter-part-1-save-file/</link><pubDate>Wed, 23 Jan 2019 20:03:08 -0500</pubDate><guid>https://parsiya.net/blog/2019-01-23-cheating-at-moonlighter-part-1-save-file/</guid><description>&lt;p&gt;&lt;a href="http://moonlighterthegame.com/" target="_blank" rel="noreferrer noopener"&gt;Moonlighter&lt;/a&gt; is a nice game. Over the new year break, I played it for 10 hours a day for 2-3 days. It's your typical dungeon crawler with a twist. You have a shop and you can sell items in your shop and do a bit of price manipulation based on supply and demand.&lt;/p&gt;
&lt;p&gt;It has some grinding. At each dungeon level (there are four), you have grind the items needed for crafting the next level equipment. After farming for multiple hours to get a few drops of one item, I decided to cheat at it.&lt;/p&gt;
&lt;p&gt;This post talks about how I discovered the save file and how we can modify it to give ourselves any item in the game. In the next part, I will discuss modifying the game to one-shot enemies and other things. It's a straightforward game for getting into &amp;quot;game hacking.&amp;quot;&lt;/p&gt;</description></item><item><title>Notes on Escaping Python Shells</title><link>https://parsiya.net/blog/2019-01-19-notes-on-escaping-python-shells/</link><pubDate>Sat, 19 Jan 2019 22:29:43 -0500</pubDate><guid>https://parsiya.net/blog/2019-01-19-notes-on-escaping-python-shells/</guid><description>&lt;p&gt;During the &lt;a href="https://parsiya.net/blog/2019-01-15-sans-holiday-hack-challenge-2018-solutions/" title="SANS Holiday Hack Challenge 2018"&gt;SANS Holiday Hack Challenge 2018&lt;/a&gt;, I viewed a talk by &lt;a href="https://twitter.com/markbaggett" target="_blank" rel="noreferrer noopener"&gt;Mark Baggett&lt;/a&gt; about escaping Python shells. These are my notes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Talk: &lt;a href="https://www.youtube.com/watch?v=ZVx2Sxl3B9c" target="_blank" rel="noreferrer noopener"&gt;https://www.youtube.com/watch?v=ZVx2Sxl3B9c&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Code: &lt;a href="https://gist.github.com/MarkBaggett/dd440362f8a443d644b913acadff9499" target="_blank" rel="noreferrer noopener"&gt;https://gist.github.com/MarkBaggett/dd440362f8a443d644b913acadff9499&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It's part of &lt;a href="https://www.sans.org/course/automating-information-security-with-python" target="_blank" rel="noreferrer noopener"&gt;SANS SEC573: Automating Information Security with Python&lt;/a&gt; which looks interesting. Although, I am Go fanatic and will probably will never be able to afford to course anyways. Creating a Go version of the course sounds fun.&lt;/p&gt;</description></item><item><title>SANS Holiday Hack Challenge 2018 Solutions</title><link>https://parsiya.net/blog/2019-01-15-sans-holiday-hack-challenge-2018-solutions/</link><pubDate>Tue, 15 Jan 2019 19:33:21 -0500</pubDate><guid>https://parsiya.net/blog/2019-01-15-sans-holiday-hack-challenge-2018-solutions/</guid><description>&lt;p&gt;SANS Holiday hack challenge 2018 was fun. It was also the first one I tried. I liked the talks and that the challenges were accessible to most skill levels. I mean &lt;a href="https://abiondo.me/2019/01/02/exploiting-math-expm1-v8/" target="_blank" rel="noreferrer noopener"&gt;RCE through the -0 bug in v8 is great and all&lt;/a&gt; but I want people to be able to have fun and learn new skills.&lt;/p&gt;
&lt;p&gt;If being a security consultant has taught me anything, it's that no one has time to read your 100 page report. So here are some quick solutions. I will post my notes from the YouTube videos in different posts.&lt;/p&gt;</description></item><item><title>Cloudflare Concise Christmas Cryptography Challenges 2019 Solutions</title><link>https://parsiya.net/blog/2019-01-03-cloudflare-concise-christmas-cryptography-challenges-2019-solutions/</link><pubDate>Thu, 03 Jan 2019 20:24:15 -0500</pubDate><guid>https://parsiya.net/blog/2019-01-03-cloudflare-concise-christmas-cryptography-challenges-2019-solutions/</guid><description>&lt;p&gt;Cloudflare had a &lt;a href="https://blog.cloudflare.com/christmas-cryptography-challenges-2019/" target="_blank" rel="noreferrer noopener"&gt;Christmas crypto(graphy) challenge&lt;/a&gt;. Here are my solutions. The first two questions were pretty easy but the 3rd sent me down on a rabbit hole. Apparently, only 15 people solved it which places me in the world top 15 cryptographers (that's how it works right?).&lt;/p&gt;</description></item><item><title>Cryptography in Python Burp Extensions</title><link>https://parsiya.net/blog/2018-12-24-cryptography-in-python-burp-extensions/</link><pubDate>Mon, 24 Dec 2018 01:00:14 -0500</pubDate><guid>https://parsiya.net/blog/2018-12-24-cryptography-in-python-burp-extensions/</guid><description>&lt;p&gt;In this post, I will discuss a few tricks for creating Burp extensions in Python that deal with cryptography. Our example is a Burp extension that adds a new tab to decode and decrypt an application's traffic. This allows us to modify payloads on the fly and take advantage of Repeater (and other tabs). I have used similar extensions when testing mobile and thickclient applications.&lt;/p&gt;
&lt;p&gt;The code is at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/python-burp-crypto" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/python-burp-crypto&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>AES-CFB128: PyCrypto vs. Go</title><link>https://parsiya.net/blog/2018-12-22-aes-cfb128-pycrypto-vs.-go/</link><pubDate>Sat, 22 Dec 2018 19:25:10 -0500</pubDate><guid>https://parsiya.net/blog/2018-12-22-aes-cfb128-pycrypto-vs.-go/</guid><description>&lt;p&gt;We have encrypted something with AES-CFB128 in Go. How can we decrypt it with PyCrypto?&lt;/p&gt;
&lt;p&gt;This was originally part of the next blog post (about creating Python Burp extensions) but it grew large enough to be a separate post.&lt;/p&gt;
&lt;p&gt;Disclaimer: I am not knowledgeable enough to explain cryptography to people. Read actual papers/books/articles to figure things out. If you find mistakes here, please let me know.&lt;/p&gt;
&lt;p&gt;Code is at: &lt;a href="https://github.com/parsiya/Go-Security/tree/master/aes-cfb128" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Go-Security/tree/master/aes-cfb128&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Python Utility Modules for Burp Extensions</title><link>https://parsiya.net/blog/2018-12-19-python-utility-modules-for-burp-extensions/</link><pubDate>Wed, 19 Dec 2018 22:48:10 -0500</pubDate><guid>https://parsiya.net/blog/2018-12-19-python-utility-modules-for-burp-extensions/</guid><description>&lt;p&gt;We can create and load Python/Java utility modules in Burp and then use them in extensions. It's a somewhat unknown/unused capability in Burp's Python/Java extensions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Alternatively, the modules can be placed in the same path as the extension and loaded/used the same way. For example, instead of putting the Burp Exceptions file in the modules folder, store it in the extension directory.&lt;/p&gt;</description></item><item><title>Tiredful API - Part 2 - Comparing Site Maps with Burp</title><link>https://parsiya.net/blog/2018-12-17-tiredful-api-part-2-comparing-site-maps-with-burp/</link><pubDate>Mon, 17 Dec 2018 01:11:11 -0500</pubDate><guid>https://parsiya.net/blog/2018-12-17-tiredful-api-part-2-comparing-site-maps-with-burp/</guid><description>&lt;p&gt;In &lt;a href="https://parsiya.net/blog/2018-12-11-tiredful-api-part-1-burp-session-validation-with-macros/" title="Burp Session Validation with Macros"&gt;Part 1 - Burp Session Validation with Macros&lt;/a&gt; I discussed using Burp macros to validate sessions. In this part, I will show how to use Burp's sitemap comparison to detect forced browsing/access control/direct object reference issues and the like.&lt;/p&gt;
&lt;p&gt;The flow is straightforward:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate around the application as user1. Personally, I just do my normal testing for a couple of days.&lt;/li&gt;
&lt;li&gt;Set a session handling rule to do one of the two:
&lt;ol&gt;
&lt;li&gt;Update the cookie from the cookie jar. In this case you login as user2 first and let Burp update cookies.&lt;/li&gt;
&lt;li&gt;Run a macro to create a valid session for user2 and use the token.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Tell Burp to compare site maps.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Also, read these:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://portswigger.net/burp/documentation/desktop/tools/target/site-map/comparing" target="_blank" rel="noreferrer noopener"&gt;https://portswigger.net/burp/documentation/desktop/tools/target/site-map/comparing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.portswigger.net/customer/portal/articles/1969844-using-burp-s-site-map-to-test-for-access-control-issues" target="_blank" rel="noreferrer noopener"&gt;https://support.portswigger.net/customer/portal/articles/1969844-using-burp-s-site-map-to-test-for-access-control-issues&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Tiredful API - Part 1 - Burp Session Validation with Macros</title><link>https://parsiya.net/blog/2018-12-11-tiredful-api-part-1-burp-session-validation-with-macros/</link><pubDate>Tue, 11 Dec 2018 00:15:07 -0500</pubDate><guid>https://parsiya.net/blog/2018-12-11-tiredful-api-part-1-burp-session-validation-with-macros/</guid><description>&lt;p&gt;&lt;a href="https://github.com/payatu/Tiredful-API" target="_blank" rel="noreferrer noopener"&gt;Tiredful API&lt;/a&gt; is an intentionally vulnerable REST API. I am going to use it to practice a bunch of Burp tricks.&lt;/p&gt;
&lt;p&gt;In this part, I want to show how to use Burp macros to detect invalid session and add a custom bearer token header to the requests.&lt;/p&gt;</description></item><item><title>Cheap Integrity Checks with HEAD</title><link>https://parsiya.net/blog/2018-12-04-cheap-integrity-checks-with-head/</link><pubDate>Tue, 04 Dec 2018 22:51:03 -0500</pubDate><guid>https://parsiya.net/blog/2018-12-04-cheap-integrity-checks-with-head/</guid><description>&lt;p&gt;&lt;strong&gt;tl;dr:&lt;/strong&gt; HEAD returns file size in &lt;code&gt;Content-Length&lt;/code&gt; response header.&lt;/p&gt;
&lt;p&gt;A few months ago, I did a side project of creating a Go package for npm. It was before the current dumpster fire that is &lt;a href="https://github.com/dominictarr/event-stream/issues/116" target="_blank" rel="noreferrer noopener"&gt;event-stream&lt;/a&gt;. The idea was to be able to query npm and get information and packages.&lt;/p&gt;</description></item><item><title>Pointers Inside for</title><link>https://parsiya.net/blog/2018-11-18-pointers-inside-for/</link><pubDate>Sun, 18 Nov 2018 16:57:24 -0500</pubDate><guid>https://parsiya.net/blog/2018-11-18-pointers-inside-for/</guid><description>&lt;p&gt;Do not directly assign the for counter/range variables to a slice as pointers. Read this by Jon Calhoun &lt;a href="https://www.calhoun.io/gotchas-and-common-mistakes-with-closures-in-go/#variables-declared-in-for-loops-are-passed-by-reference" target="_blank" rel="noreferrer noopener"&gt;Variables declared in for loops are passed by reference&lt;/a&gt;. &amp;quot;[...] the variables aren't being redeclared with each iteration [...]&amp;quot;.&lt;/p&gt;
&lt;p&gt;I have written so much buggy code that I am going to write this down.&lt;/p&gt;</description></item><item><title>filepath.Ext Notes</title><link>https://parsiya.net/blog/2018-11-10-filepath.ext-notes/</link><pubDate>Sat, 10 Nov 2018 00:59:58 -0500</pubDate><guid>https://parsiya.net/blog/2018-11-10-filepath.ext-notes/</guid><description>&lt;p&gt;The &lt;a href="https://golang.org/pkg/path/filepath/" target="_blank" rel="noreferrer noopener"&gt;filepath&lt;/a&gt; package has some functions for processing paths and filenames. I am using it extensively in a current project. You can do cool stuff with it, like &lt;a href="https://parsiya.net/blog/2018-10-06-gophercises-lessons-learned/#filepath-walk" title="filepath.Walk"&gt;traversing a path recursively with filepath.Walk&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://golang.org/pkg/path/filepath/#Ext" target="_blank" rel="noreferrer noopener"&gt;filepath.Ext&lt;/a&gt; returns the extension of a filename (or path). It returns whatever is after the last dot. It has some gotchas that might have security implications.&lt;/p&gt;
&lt;p&gt;Code is at: &lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/filepath-ext" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/filepath-ext&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Windows Filetime Timestamps and Byte Wrangling with Go</title><link>https://parsiya.net/blog/2018-11-01-windows-filetime-timestamps-and-byte-wrangling-with-go/</link><pubDate>Thu, 01 Nov 2018 08:05:47 -0400</pubDate><guid>https://parsiya.net/blog/2018-11-01-windows-filetime-timestamps-and-byte-wrangling-with-go/</guid><description>&lt;p&gt;For a side project, I have to parse timestamps in a file. These timestamps are in the Windows Filetime format. This post documents what I have learned about them and how they can be converted to a Golang &lt;a href="https://golang.org/pkg/time/#Time" target="_blank" rel="noreferrer noopener"&gt;time.Time&lt;/a&gt; and then converted to any desirable format after that.&lt;/p&gt;
&lt;p&gt;We will start by looking at endian-ness and use a real-world example to practice our newly acquired knowledge.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR: To convert a Windows Filetime to Go's time.Time:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Read 8 bytes in LittleEndian from the file.&lt;/li&gt;
&lt;li&gt;Create a &lt;code&gt;syscall.Filetime&lt;/code&gt;.
&lt;ul&gt;
&lt;li&gt;Assign the first 4 bytes to &lt;code&gt;LowDateTime&lt;/code&gt; field and the other four to &lt;code&gt;HighDateTime&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Convert the resulting Filetime to nanoseconds with &lt;a href="https://godoc.org/golang.org/x/sys/windows#Filetime.Nanoseconds" target="_blank" rel="noreferrer noopener"&gt;Filetime.Nanoseconds()&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Convert the resulting value to &lt;a href="https://golang.org/pkg/time/#Time" target="_blank" rel="noreferrer noopener"&gt;time.Time&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The code is at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/filetime-bytewrangling" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/filetime-bytewrangling&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Blackfriday's Parser and Generating graphs with gographviz</title><link>https://parsiya.net/blog/2018-10-28-blackfridays-parser-and-generating-graphs-with-gographviz/</link><pubDate>Sun, 28 Oct 2018 11:31:34 -0400</pubDate><guid>https://parsiya.net/blog/2018-10-28-blackfridays-parser-and-generating-graphs-with-gographviz/</guid><description>&lt;p&gt;I have been working on a personal automation project. In short, I write most of my notes in markdown so I wanted to grab them and store them in a specific format with annotations (e.g. everything under heading &lt;code&gt;deployment notes&lt;/code&gt; is labeled as such in the final data file). These are not high volume, large files. I have written them manually, I am talking about a 10-20 KB file (with most content being pasted code/request snippets). I am not looking for efficiency.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://godoc.org/gopkg.in/russross/blackfriday.v2" target="_blank" rel="noreferrer noopener"&gt;Blackfriday&lt;/a&gt; is the markdown parser for &lt;a href="https://github.com/gohugoio/hugo" target="_blank" rel="noreferrer noopener"&gt;Hugo&lt;/a&gt;, so I was somewhat familiar with it. Since version 2, it has a markdown parser.&lt;/p&gt;
&lt;p&gt;In this post, I am going to describe what I learned during the process and how I leveraged Blackfriday's markdown parser in some hacky ways to get annotated data. To visualize the AST (Abstract Syntax Tree) generated by Blackfriday, I used &lt;a href="https://github.com/awalterschulze/gographviz" target="_blank" rel="noreferrer noopener"&gt;gographviz&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A simple package &lt;code&gt;parse&lt;/code&gt; and code can be found here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/markdown-parsing" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/markdown-parsing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>DEF CON 26 - Tineola - Youtube Video</title><link>https://parsiya.net/blog/2018-10-26-def-con-26-tineola-youtube-video/</link><pubDate>Fri, 26 Oct 2018 21:56:22 -0400</pubDate><guid>https://parsiya.net/blog/2018-10-26-def-con-26-tineola-youtube-video/</guid><description>&lt;p&gt;The DEF CON 26 video is finally released:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=xKYIde5jh_8" target="_blank" rel="noreferrer noopener"&gt;https://www.youtube.com/watch?v=xKYIde5jh_8&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I sound somewhat comprehensible. That was a nice surprise. Credit goes to Travis for making us do many dry-runs. As usual, I am eternally grateful to Stark for his work.&lt;/p&gt;
&lt;p&gt;Airport and TSA diaries, Elon Musk jokes, we have it all.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/xKYIde5jh_8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;</description></item><item><title>Gophercises - Lessons Learned</title><link>https://parsiya.net/blog/2018-10-06-gophercises-lessons-learned/</link><pubDate>Sat, 06 Oct 2018 00:22:58 -0400</pubDate><guid>https://parsiya.net/blog/2018-10-06-gophercises-lessons-learned/</guid><description>&lt;p&gt;I recently finished &lt;a href="https://gophercises.com" target="_blank" rel="noreferrer noopener"&gt;Gophercises&lt;/a&gt;, a great set of Go practice lessons by &lt;a href="https://www.calhoun.io/" target="_blank" rel="noreferrer noopener"&gt;Jon Calhoun&lt;/a&gt;. I think it took me around a month from start to finish with some stuff in the middle. Most were nice, some were tedious. For example, the last exercise was about &lt;a href="https://gophercises.com/exercises/pdf" target="_blank" rel="noreferrer noopener"&gt;PDF generation&lt;/a&gt; and went to boring quickly.&lt;/p&gt;
&lt;p&gt;After every lesson, I wrote down &amp;quot;Lessons Learned&amp;quot; in the README. This page collects most of them. All code is here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/gophercises" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/gophercises&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Reflections on "Manual Work is a Bug"</title><link>https://parsiya.net/blog/2018-10-03-reflections-on-manual-work-is-a-bug/</link><pubDate>Wed, 03 Oct 2018 00:48:17 -0400</pubDate><guid>https://parsiya.net/blog/2018-10-03-reflections-on-manual-work-is-a-bug/</guid><description>&lt;p&gt;I recently read &lt;a href="https://queue.acm.org/detail.cfm?id=3197520" target="_blank" rel="noreferrer noopener"&gt;Manual Work is a Bug&lt;/a&gt; by Thomas A. Limoncelli. It's a great article in my opinion. I realized I had been doing some of what it mentions.&lt;/p&gt;
&lt;p&gt;If you know me, you know I am a great fan of knowledge bases or &lt;code&gt;clones&lt;/code&gt; as I call them. I have my own external clone at &lt;a href="https://parsiya.io" target="_blank" rel="noreferrer noopener"&gt;parsiya.io&lt;/a&gt;. It's also somewhat &lt;a href="https://parsiya.net/blog/2018-04-24-semi-automated-cloning-pain-free-knowledge-base-creation/" title="Semi-Automated Cloning: Pain-Free Knowledge Base Creation"&gt;automated&lt;/a&gt;. I have had an internal one for more than two years.&lt;/p&gt;
&lt;p&gt;But the automation was not what rhymed with me. It was the documentation.&lt;/p&gt;</description></item><item><title>Tineola: Taking a Bite out of Enterprise Blockchain</title><link>https://parsiya.net/blog/2018-09-27-tineola-taking-a-bite-out-of-enterprise-blockchain/</link><pubDate>Thu, 27 Sep 2018 01:17:59 -0400</pubDate><guid>https://parsiya.net/blog/2018-09-27-tineola-taking-a-bite-out-of-enterprise-blockchain/</guid><description>&lt;p&gt;So I wrote about &lt;a href="https://github.com/tineola/tineola" target="_blank" rel="noreferrer noopener"&gt;Tineola&lt;/a&gt; for our corporate blog. The editors fixed my words so it sounds fancy and actually English. You can read it here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.synopsys.com/blogs/software-security/tineola-enterprise-blockchain/" target="_blank" rel="noreferrer noopener"&gt;https://www.synopsys.com/blogs/software-security/tineola-enterprise-blockchain/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the meanwhile, I have been doing &lt;a href="https://gophercises.com/exercises/" target="_blank" rel="noreferrer noopener"&gt;Gophercises&lt;/a&gt; by &lt;a href="https://www.calhoun.io" target="_blank" rel="noreferrer noopener"&gt;Jon Calhoun&lt;/a&gt;. I am up to 16. I am documenting my learned lessons in the readme of each directory. I will add them all together and put them somewhere here or in &lt;a href="http://hackingwithgo.com" target="_blank" rel="noreferrer noopener"&gt;hackingwithgo.com&lt;/a&gt;. You can see the code here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/gophercises" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/gophercises&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span class="caption-wrapper"&gt;
 &lt;img class="caption" src="tineola-defcon.jpg" title="Babbling about blockchain at DEF CON 26" alt="Babbling about blockchain at DEF CON 26"&gt;
 &lt;span class="caption-text"&gt;Babbling about blockchain at DEF CON 26&lt;/span&gt;
&lt;/span&gt;</description></item><item><title>DVTA - Part 5 - Client-side Storage and DLL Hijacking</title><link>https://parsiya.net/blog/2018-08-25-dvta-part-5-client-side-storage-and-dll-hijacking/</link><pubDate>Sat, 25 Aug 2018 13:49:10 -0400</pubDate><guid>https://parsiya.net/blog/2018-08-25-dvta-part-5-client-side-storage-and-dll-hijacking/</guid><description>&lt;p&gt;Thick clients store ample information on the device. In this part, we are going to investigate DVTA to see what, how, and where it stores data. We are also going to do some basic DLL hijacking. Our tools are procmon, PowerSploit, and dnSpy.&lt;/p&gt;
&lt;p&gt;Previous parts are at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2018-07-15-dvta-part-1-setup/" title="DVTA - Part 1 - Setup"&gt;DVTA - Part 1 - Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2018-07-21-dvta-part-2-cert-pinning-and-login-button/" title="DVTA - Part 2 - Cert Pinning and Login Button"&gt;DVTA - Part 2 - Cert Pinning and Login Button&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2018-07-30-dvta-part-3-network-recon/" title="DVTA - Part 3 - Network Recon"&gt;DVTA - Part 3 - Network Recon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2018-08-02-dvta-part-4-traffic-tampering-with-dnspy/" title="DVTA - Part 4 - Traffic Tampering with dnSpy"&gt;DVTA - Part 4 - Traffic Tampering with dnSpy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Committing Insurance Fraud with Tineola</title><link>https://parsiya.net/blog/2018-08-23-committing-insurance-fraud-with-tineola/</link><pubDate>Thu, 23 Aug 2018 21:18:32 -0400</pubDate><guid>https://parsiya.net/blog/2018-08-23-committing-insurance-fraud-with-tineola/</guid><description>&lt;p&gt;We recently presented our tool at the DefCon 26 conference in Vegas. Amazing time was had. We had a friendly crowd at our talk &lt;a href="https://www.defcon.org/html/defcon-26/dc-26-speakers.html#Riedesel" target="_blank" rel="noreferrer noopener"&gt;Tineola: Taking a Bite Out of Enterprise Blockchain&lt;/a&gt;. You can see our &lt;a href="https://github.com/tineola/tineola/blob/master/docs/Tineola-Slides-Defcon26.pdf" target="_blank" rel="noreferrer noopener"&gt;slides&lt;/a&gt; and &lt;a href="https://github.com/tineola/tineola/blob/master/docs/TineolaWhitepaper.pdf" target="_blank" rel="noreferrer noopener"&gt;whitepaper&lt;/a&gt; in the repository. The tool is released under MIT and is at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/tineola/tineola" target="_blank" rel="noreferrer noopener"&gt;https://github.com/tineola/tineola&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;During the talk, Stark demoed our tool and showed how to completely break the &lt;a href="https://github.com/IBM/build-blockchain-insurance-app" target="_blank" rel="noreferrer noopener"&gt;Build Blockchain Insurance App&lt;/a&gt;. You can see the videos on the &lt;a href="https://media.defcon.org/DEF%20CON%2026/DEF%20CON%2026%20presentations/Stark%20Riedesel%20and%20Parsia%20Hakimian/DEFCON-26-Stark-Riedesel-and-Parsia-Hakimian-Demo-Videos/" target="_blank" rel="noreferrer noopener"&gt;DefCon Media Server&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This blog post will teach you how to use Tineola and commit insurance fraud.&lt;/p&gt;</description></item><item><title>DVTA - Part 4 - Traffic Tampering with dnSpy</title><link>https://parsiya.net/blog/2018-08-02-dvta-part-4-traffic-tampering-with-dnspy/</link><pubDate>Thu, 02 Aug 2018 19:41:54 -0400</pubDate><guid>https://parsiya.net/blog/2018-08-02-dvta-part-4-traffic-tampering-with-dnspy/</guid><description>&lt;p&gt;After doing network recon in part three, it's time to do some traffic manipulation. We will learn how to capture and modify network traffic using dnSpy. This is much easier than trying to intercept and modify traffic after it's transmitted.&lt;/p&gt;
&lt;p&gt;Previous parts are at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2018-07-15-dvta-part-1-setup/" title="DVTA - Part 1 - Setup"&gt;DVTA - Part 1 - Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2018-07-21-dvta-part-2-cert-pinning-and-login-button/" title="DVTA - Part 2 - Cert Pinning and Login Button"&gt;DVTA - Part 2 - Cert Pinning and Login Button&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2018-07-30-dvta-part-3-network-recon/" title="DVTA - Part 3 - Network Recon"&gt;DVTA - Part 3 - Network Recon&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>DVTA - Part 3 - Network Recon</title><link>https://parsiya.net/blog/2018-07-30-dvta-part-3-network-recon/</link><pubDate>Mon, 30 Jul 2018 00:35:57 -0400</pubDate><guid>https://parsiya.net/blog/2018-07-30-dvta-part-3-network-recon/</guid><description>&lt;p&gt;In this part, we will focus on network traffic. More often than not, thick client applications have some sort of network connectivity. They talk to some server(s) to do things.&lt;/p&gt;
&lt;p&gt;Previous parts are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2018-07-15-dvta-part-1-setup/" title="DVTA - Part 1 - Setup"&gt;DVTA - Part 1 - Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2018-07-21-dvta-part-2-cert-pinning-and-login-button/" title="DVTA - Part 2 - Cert Pinning and Login Button"&gt;DVTA - Part 2 - Cert Pinning and Login Button&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>DVTA - Part 2 - Cert Pinning and Login Button</title><link>https://parsiya.net/blog/2018-07-21-dvta-part-2-cert-pinning-and-login-button/</link><pubDate>Sat, 21 Jul 2018 01:38:50 -0400</pubDate><guid>https://parsiya.net/blog/2018-07-21-dvta-part-2-cert-pinning-and-login-button/</guid><description>&lt;p&gt;After setting up the Damn Vulnerable Thick Client Application, we are now ready to hack it.&lt;/p&gt;
&lt;p&gt;In this section, we will bypass the certificate pinning, enable the login button, learn how to modify the code in dnSpy through writing C# code and get a quick intro to Common Intermediate Language (CIL).&lt;/p&gt;
&lt;p&gt;You can see previous parts here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2018-07-15-dvta-part-1-setup/" title="DVTA - Part 1 - Setup"&gt;Damn Vulnerable Thick Client Application - Part 1 - Setup&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>DVTA - Part 1 - Setup</title><link>https://parsiya.net/blog/2018-07-15-dvta-part-1-setup/</link><pubDate>Sun, 15 Jul 2018 21:26:41 -0400</pubDate><guid>https://parsiya.net/blog/2018-07-15-dvta-part-1-setup/</guid><description>&lt;p&gt;I have written a lot about thick clients. However, I have not done more than a few practical examples that I can show my co-workers or anyone else asking questions. Recently, I came across the Damn Vulnerable Thick Client Application by SecVulture at &lt;a href="https://github.com/secvulture/dvta" target="_blank" rel="noreferrer noopener"&gt;https://github.com/secvulture/dvta&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I am not going to use the original version of the application. Someone has created a fork and added more protections. We will use this fork instead:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/nddmars/dvta" target="_blank" rel="noreferrer noopener"&gt;https://github.com/nddmars/dvta&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Neither fork's setup instructions worked for me. As a result, the first part is actually setting up the application and the necessary back-end in only one VM. But don't worry, we will do a bit of reverse engineering with dnSpy to fix an issue.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thanks to SecVulture for creating the app and maintainers of the second repository for adding protections.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Istanbul Tips and Tricks</title><link>https://parsiya.net/blog/2018-07-04-istanbul-tips-and-tricks/</link><pubDate>Wed, 04 Jul 2018 05:56:48 -0400</pubDate><guid>https://parsiya.net/blog/2018-07-04-istanbul-tips-and-tricks/</guid><description>&lt;p&gt;Recently I was in Istanbul for two weeks in June 2018. This blog contains what I learned. Sharing it with the world in case you end up there. &lt;strong&gt;It's a nice city and most people are friendly but unfortunately like any other tourist destination, the opportunist minority ruin it for everyone else&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Disclaimer: I loved the city and most people in it but I hated the Taxis and most shopkeepers. Once we started using public transport, the quality of our experience went up drastically.&lt;/p&gt;
&lt;p&gt;Here's a picture of us before all the negativity :D&lt;/p&gt;
&lt;span class="caption-wrapper"&gt;
 &lt;img class="caption" src="01-main.jpg" title="Survived Istanbul" alt="Survived Istanbul"&gt;
 &lt;span class="caption-text"&gt;Survived Istanbul&lt;/span&gt;
&lt;/span&gt;</description></item><item><title>ContextIS xmas CTF Writeup</title><link>https://parsiya.net/blog/2018-06-05-contextis-xmas-ctf-writeup/</link><pubDate>Tue, 05 Jun 2018 22:34:55 -0400</pubDate><guid>https://parsiya.net/blog/2018-06-05-contextis-xmas-ctf-writeup/</guid><description>&lt;p&gt;In January 2018, &lt;a href="https://www.contextis.com/" target="_blank" rel="noreferrer noopener"&gt;Context Information Security&lt;/a&gt; had a CTF. Here are my write-ups for some of them and write-ups for some I did not figure out. But that's CTF for you. If you manage to walk down the path of designer, you will be fine. Otherwise, you will have a bad time.&lt;/p&gt;
&lt;p&gt;But enough complaining, let's see what happens.&lt;/p&gt;</description></item><item><title>On Username Enumeration</title><link>https://parsiya.net/blog/2018-05-26-on-username-enumeration/</link><pubDate>Sat, 26 May 2018 21:51:48 -0400</pubDate><guid>https://parsiya.net/blog/2018-05-26-on-username-enumeration/</guid><description>&lt;p&gt;Enumeration is &lt;em&gt;identifying valid resources in a target address space&lt;/em&gt;. This sounds academic and I hate academic mumbo jumbo but bear with me.&lt;/p&gt;
&lt;p&gt;Username enumeration is &lt;em&gt;identifying valid user identifiers in an application&lt;/em&gt;. These are typically usernames or account IDs.&lt;/p&gt;
&lt;p&gt;Enumeration is an interesting topic. The concept of enumeration is straightforward but not always obvious. In this post I will explain username enumeration using an example.&lt;/p&gt;</description></item><item><title>Learning Go-Fuzz 2: goexif2</title><link>https://parsiya.net/blog/2018-05-05-learning-go-fuzz-2-goexif2/</link><pubDate>Sat, 05 May 2018 18:01:09 -0400</pubDate><guid>https://parsiya.net/blog/2018-05-05-learning-go-fuzz-2-goexif2/</guid><description>&lt;p&gt;Previously on &lt;code&gt;Learning Go-Fuzz&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2018-04-29-learning-go-fuzz-1-iprange/" title="Learning Go-Fuzz 1: iprange"&gt;&amp;quot;Learning Go-Fuzz 1: iprange&amp;quot;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This time I am looking at a different package. This is a package called &lt;code&gt;goexif&lt;/code&gt; at &lt;a href="https://github.com/rwcarlsen/goexif" target="_blank" rel="noreferrer noopener"&gt;https://github.com/rwcarlsen/goexif&lt;/a&gt;. Being a file parser, it's a prime target for &lt;code&gt;Go-Fuzz&lt;/code&gt;. Unfortunately it has not been updated for a while. Instead, we will be looking at a fork at &lt;a href="https://github.com/xor-gate/goexif2" target="_blank" rel="noreferrer noopener"&gt;https://github.com/xor-gate/goexif2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Code and fuzzing artifacts are at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Go-Security/tree/master/go-fuzz/goexif2" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Go-Security/tree/master/go-fuzz/goexif2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- Links in summary --&gt;</description></item><item><title>Learning Go-Fuzz 1: iprange</title><link>https://parsiya.net/blog/2018-04-29-learning-go-fuzz-1-iprange/</link><pubDate>Sun, 29 Apr 2018 19:25:10 -0400</pubDate><guid>https://parsiya.net/blog/2018-04-29-learning-go-fuzz-1-iprange/</guid><description>&lt;p&gt;&lt;a href="https://github.com/dvyukov/go-fuzz" target="_blank" rel="noreferrer noopener"&gt;Go-Fuzz&lt;/a&gt; is like AFL but for Go. If you have a Go package that parses some input, you might be able fuzz it with Go-Fuzz (terms and conditions apply). Not everything can be fuzzed very easily. For example Go-Fuzz does not like cycling imports, so if one of your sub-packages imports the main package then you are in trouble (I am looking at your &lt;a href="https://github.com/alecthomas/chroma" target="_blank" rel="noreferrer noopener"&gt;Chroma&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The rest of the article will show how to use Go-Fuzz to fuzz a Go library named &lt;code&gt;iprange&lt;/code&gt; at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/malfunkt/iprange" target="_blank" rel="noreferrer noopener"&gt;https://github.com/malfunkt/iprange&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Code and fuzzing artifacts are at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Go-Security/tree/master/go-fuzz/iprange" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Go-Security/tree/master/go-fuzz/iprange&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- Summary Links --&gt;</description></item><item><title>Semi-Automated Cloning: Pain-Free Knowledge Base Creation</title><link>https://parsiya.net/blog/2018-04-24-semi-automated-cloning-pain-free-knowledge-base-creation/</link><pubDate>Tue, 24 Apr 2018 21:18:32 -0400</pubDate><guid>https://parsiya.net/blog/2018-04-24-semi-automated-cloning-pain-free-knowledge-base-creation/</guid><description>&lt;h1 id="tldr"&gt;TL;DR:
&lt;a class="header-link" href="#tldr"&gt;&lt;svg class="fill-current o-60 hover-accent-color-light" height="22px" viewBox="0 0 24 24" width="22px" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M0 0h24v24H0z" fill="none"/&gt;&lt;path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/&gt;&lt;/svg&gt;&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;Instead of creating an index manually for Github, I am using a Hugo blog for my knowledge base (a.k.a. &lt;code&gt;Parsia-Clone&lt;/code&gt;). This blog is about my flow and how I have semi-automated the process. Demo site is at &lt;a href="https://parsiya.io" target="_blank" rel="noreferrer noopener"&gt;https://parsiya.io&lt;/a&gt; (it's served in plaintext because I am making rapid changes and do not want to invalidate CloudFront's cache after every push).&lt;/p&gt;
&lt;h1 id="flow"&gt;Flow
&lt;a class="header-link" href="#flow"&gt;&lt;svg class="fill-current o-60 hover-accent-color-light" height="22px" viewBox="0 0 24 24" width="22px" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M0 0h24v24H0z" fill="none"/&gt;&lt;path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/&gt;&lt;/svg&gt;&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;Flow is pretty simple:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create the page bundle directory and page in the clone with &lt;code&gt;hugo new&lt;/code&gt;. I usually create it under &lt;code&gt;categories\main-category-name&lt;/code&gt;. The command will look like:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;hugo new categories\research\hacking-the-gibson\index.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;hugo serve&lt;/code&gt; to preview the page during the edit.&lt;/li&gt;
&lt;li&gt;Fill front matter and write the page in &lt;code&gt;index.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Any resources such as pictures and files can be in the same directory. This helps in two ways, they can be referenced in the page (like pictures) and seen on Github (like config files).&lt;/li&gt;
&lt;li&gt;When done, &lt;code&gt;git add/commit/push&lt;/code&gt; the clone inside the &lt;code&gt;content&lt;/code&gt; directory.&lt;/li&gt;
&lt;li&gt;???&lt;/li&gt;
&lt;li&gt;Profit. See updated blog, built and deployed by &lt;code&gt;Travis CI&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Deploying my Knowledge Base at parsiya.io to S3 with Travis CI</title><link>https://parsiya.net/blog/2018-04-24-deploying-my-knowledge-base-at-parsiya.io-to-s3-with-travis-ci/</link><pubDate>Tue, 24 Apr 2018 01:02:03 -0400</pubDate><guid>https://parsiya.net/blog/2018-04-24-deploying-my-knowledge-base-at-parsiya.io-to-s3-with-travis-ci/</guid><description>&lt;p&gt;I finally managed to automate deployment of &lt;a href="https://parsiya.io" target="_blank" rel="noreferrer noopener"&gt;parsiya.io&lt;/a&gt; with Travis CI. Not having done this before, I encountered some pitfalls. Additionally I had two extra problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The structure of the blog is different from most Hugo deployments. &lt;a href="https://github.com/parsiya/Parsia-Clone" target="_blank" rel="noreferrer noopener"&gt;Parsia-Clone&lt;/a&gt; only contains the &lt;code&gt;content&lt;/code&gt; directory. Parents and everything else are in the &lt;a href="https://github.com/parsiya/Parsiya.io" target="_blank" rel="noreferrer noopener"&gt;parsiya.io&lt;/a&gt; repo. So while we push to &lt;code&gt;Parsia-Clone&lt;/code&gt;, we need to clone &lt;code&gt;parsiya.io&lt;/code&gt; and build the repository there.&lt;/li&gt;
&lt;li&gt;I am hosting it out of an S3 bucket. All other examples were using github pages.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Update November 2020:&lt;/strong&gt; As of late November 2020, I have switched to Github
actions for both &lt;code&gt;parsiya.net&lt;/code&gt; and &lt;code&gt;parsiya.io&lt;/code&gt;. Please see
&lt;a href="https://github.com/parsiya/Parsia-Clone/blob/main/.github/workflows/deploy.ymlOLD" target="_blank" rel="noreferrer noopener"&gt;deploy.ymlOLD&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update February 2021:&lt;/strong&gt; parsiya.io is now hosted on github pages with a custom
domain instead of an S3 bucket. Please see the workflow file at
&lt;a href="https://github.com/parsiya/Parsia-Clone/blob/main/.github/workflows/gh-pages.yml" target="_blank" rel="noreferrer noopener"&gt;gh-pages.yml&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Adding Custom Chroma Styles to Hugo Themes</title><link>https://parsiya.net/blog/2018-04-15-adding-custom-chroma-styles-to-hugo-themes/</link><pubDate>Sun, 15 Apr 2018 13:38:57 -0400</pubDate><guid>https://parsiya.net/blog/2018-04-15-adding-custom-chroma-styles-to-hugo-themes/</guid><description>&lt;p&gt;Update: &lt;a href="https://github.com/alecthomas/chroma" target="_blank" rel="noreferrer noopener"&gt;Chroma&lt;/a&gt; now &lt;a href="https://github.com/alecthomas/chroma/pull/140" target="_blank" rel="noreferrer noopener"&gt;supports&lt;/a&gt; &lt;code&gt;solarized-dark&lt;/code&gt; families. Currently, this version is not used in Hugo.&lt;/p&gt;
&lt;p&gt;Hugo has switched to &lt;a href="https://github.com/alecthomas/chroma" target="_blank" rel="noreferrer noopener"&gt;Chroma&lt;/a&gt; for syntax highlighting from Pygments. While it still supports Pygments, it appears Chroma is much faster. However, Chroma does not support the &lt;a href="https://github.com/john2x/solarized-pygment/" target="_blank" rel="noreferrer noopener"&gt;solarized dark&lt;/a&gt; theme that is used by &lt;a href="https://github.com/parsiya/Hugo-Octopress" target="_blank" rel="noreferrer noopener"&gt;Hugo-Octopress&lt;/a&gt;. So I had to generate the CSS and add it manually.&lt;/p&gt;
&lt;p&gt;The process is decently simple because Chroma has a &lt;a href="https://github.com/alecthomas/chroma#styles" target="_blank" rel="noreferrer noopener"&gt;built-in tool for converting styles&lt;/a&gt; &lt;code&gt;_tools/style.py&lt;/code&gt;. You can see the files inside my clone:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Clone/tree/master/random/chroma-pygments-convert" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Clone/tree/master/random/chroma-pygments-convert&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- Links before summary --&gt;</description></item><item><title>Blockchain Security Talk at NoVA Hackers</title><link>https://parsiya.net/blog/2018-03-17-blockchain-security-talk-at-nova-hackers/</link><pubDate>Sat, 17 Mar 2018 20:37:29 -0400</pubDate><guid>https://parsiya.net/blog/2018-03-17-blockchain-security-talk-at-nova-hackers/</guid><description>&lt;p&gt;I had a 30 minute talk about Blockchain security at &lt;a href="https://twitter.com/novahackers" target="_blank" rel="noreferrer noopener"&gt;NoVA Hackers&lt;/a&gt; on March 12th 2018.&lt;/p&gt;
&lt;p&gt;NoVA Hackers is a monthly security meetup for in northern Virginia. Very welcoming event.&lt;/p&gt;
&lt;p&gt;You can download the PDF from Google Drive:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://drive.google.com/file/d/1aXJgpGs6TznOx5uO7U1cvkvi-zVEjPSJ/view" target="_blank" rel="noreferrer noopener"&gt;https://drive.google.com/file/d/1aXJgpGs6TznOx5uO7U1cvkvi-zVEjPSJ/view&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hopefully I can do more presentations as I learn more.&lt;/p&gt;
&lt;p&gt;As usual, please let me know where I messed up.&lt;/p&gt;</description></item><item><title>The Great Hiatus</title><link>https://parsiya.net/blog/2018-03-01-the-great-hiatus/</link><pubDate>Thu, 01 Mar 2018 22:22:51 -0500</pubDate><guid>https://parsiya.net/blog/2018-03-01-the-great-hiatus/</guid><description>&lt;p&gt;This is copied to a blog entry on Aug 1 2016.&lt;/p&gt;
&lt;p&gt;I did not blog for almost exactly a year from July 28th 2016 to July 8th 2017.&lt;/p&gt;
&lt;p&gt;This is not something new, if you look at my blog dates you can see I work in clusters. I do a few blogs about something interesting in quick succession and then don't do anything for a while.&lt;/p&gt;
&lt;p&gt;You could call this a problem. Some people recommend holding off posts and then publishing them more steadily. I am not like that, I want to document what I do for future reference right now before I forget.&lt;/p&gt;</description></item><item><title>Extracting PNG Chunks with Go</title><link>https://parsiya.net/blog/2018-02-25-extracting-png-chunks-with-go/</link><pubDate>Sun, 25 Feb 2018 18:27:49 -0500</pubDate><guid>https://parsiya.net/blog/2018-02-25-extracting-png-chunks-with-go/</guid><description>&lt;p&gt;Yesterday I had to extract some data from hidden chunks in PNG files. I realized the PNG file format is blissfully simple.&lt;/p&gt;
&lt;p&gt;I wrote some quick code that parses a PNG file, extracts some information, identifies chunks and finally extracts chunk data. The code has minimal error handling (if chunks are not formatted properly). We also do not care about parsing &lt;code&gt;PLTE&lt;/code&gt; and &lt;code&gt;tRNS&lt;/code&gt; chunks although we will extract them.&lt;/p&gt;
&lt;p&gt;Code is at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Go-Security/blob/master/png-tests/png-chunk-extraction.go" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Go-Security/blob/master/png-tests/png-chunk-extraction.go&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>CAP Theorem and Credit Cards</title><link>https://parsiya.net/blog/2018-02-22-cap-theorem-and-credit-cards/</link><pubDate>Thu, 22 Feb 2018 20:43:14 -0500</pubDate><guid>https://parsiya.net/blog/2018-02-22-cap-theorem-and-credit-cards/</guid><description>&lt;p&gt;CAP Theorem is another of those &lt;code&gt;blockchain buzzwords&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;CAP stands for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Consistency&lt;/strong&gt;: Every read should get up-to-date data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Availability&lt;/strong&gt;: Every request should get a response.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Partition Tolerance&lt;/strong&gt;: If a section of the network is partitioned/cut-off (messages are dropped), the network should continue to work.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;CAP Theorem&lt;/strong&gt;: A distributed network &lt;strong&gt;can only pick two&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Byzantine Generals' Problem</title><link>https://parsiya.net/blog/2018-02-21-byzantine-generals-problem/</link><pubDate>Wed, 21 Feb 2018 15:58:41 -0500</pubDate><guid>https://parsiya.net/blog/2018-02-21-byzantine-generals-problem/</guid><description>&lt;p&gt;In the previous blog post, I talked about &lt;a href="https://parsiya.net/blog/2018-02-18-byzantine-fault-tolerance-and-the-telephone-game/" title="Byzantine Fault Tolerance and the Telephone Game"&gt;Byzantine Fault Tolerance&lt;/a&gt;. It was sort of a jump into the middle of everything. In this post I will take a step back and look at the history behind BFT. This is my short post about the &lt;strong&gt;Byzantine Generals' Problem&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Byzantine Fault Tolerance and the Telephone Game</title><link>https://parsiya.net/blog/2018-02-18-byzantine-fault-tolerance-and-the-telephone-game/</link><pubDate>Sun, 18 Feb 2018 21:14:05 -0500</pubDate><guid>https://parsiya.net/blog/2018-02-18-byzantine-fault-tolerance-and-the-telephone-game/</guid><description>&lt;p&gt;This distributed ledger thing &lt;em&gt;clicked&lt;/em&gt; when I realized &lt;strong&gt;a blockchain is just a distributed network&lt;/strong&gt;. Like any other model, blockchains attempt to solve a few problems and as a result introduce some challenges. &lt;strong&gt;Byzantine Fault Tolerance&lt;/strong&gt; or &lt;strong&gt;BFT&lt;/strong&gt; is one of those buzzwords that go around during nowadays. Blockchains have consensus models that claim to achieve BFT.&lt;/p&gt;
&lt;p&gt;Here are my notes on BFT and how it relates to blockchains. I do not claim these notes to be neither complete nor correct. I am still learning. This is not an academic paper. I am just writing down what worked for me in hopes of helping others. That said, if you have any feedback, you know where to find me.&lt;/p&gt;</description></item><item><title>Notes from NISTIR 8202 - Blockchain Technology Overview January 2018 Draft</title><link>https://parsiya.net/blog/2018-02-08-notes-from-nistir-8202-blockchain-technology-overview-january-2018-draft/</link><pubDate>Thu, 08 Feb 2018 21:52:41 -0500</pubDate><guid>https://parsiya.net/blog/2018-02-08-notes-from-nistir-8202-blockchain-technology-overview-january-2018-draft/</guid><description>&lt;p&gt;I read the &lt;strong&gt;NISTIR 8202 - Blockchain Technology Overview draft&lt;/strong&gt; so you do not have to. These are my notes from the January 2018 version of the document.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;After reading this, you will know enough buzzwords to add &lt;code&gt;Blockchain Expert&lt;/code&gt; to your LinkedIn title/Twitter bio/email signature.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;You can find a copy of the draft at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://csrc.nist.gov/CSRC/media/Publications/nistir/8202/draft/documents/nistir8202-draft.pdf" target="_blank" rel="noreferrer noopener"&gt;https://csrc.nist.gov/CSRC/media/Publications/nistir/8202/draft/documents/nistir8202-draft.pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>VirtualBox Live State File Format</title><link>https://parsiya.net/blog/2018-01-29-virtualbox-live-state-file-format/</link><pubDate>Mon, 29 Jan 2018 00:10:03 -0500</pubDate><guid>https://parsiya.net/blog/2018-01-29-virtualbox-live-state-file-format/</guid><description>&lt;p&gt;In &lt;a href="https://parsiya.net/blog/2018-01-23-mounting-live-snapshots-of-encrypted-vms-in-virtualbox/" title="Mounting Live Snapshots of Encrypted VMs in VirtualBox"&gt;Mounting Live Snapshots of Encrypted VMs in VirtualBox&lt;/a&gt; we mounted a live snapshot and logged into the machine. We also got a sneak peek of what kind of information we can extract from the live snapshot (&lt;code&gt;sav&lt;/code&gt; file).&lt;/p&gt;
&lt;p&gt;In this post I will talk about parts of the live state file format and show some data that can be extracted from these files. The format is not formally documented but we have access to commented source.&lt;/p&gt;
&lt;p&gt;To make it easier, I have uploaded the live state from our previous MysteryVM separately. You can download it from &lt;a href="https://drive.google.com/file/d/1WdlcHsQattvFs8Wu9RdFC5UOaSxqhk0d/view?usp=sharing" target="_blank" rel="noreferrer noopener"&gt;Google Drive&lt;/a&gt; (45 MB).&lt;/p&gt;</description></item><item><title>Mounting Live Snapshots of Encrypted VMs in VirtualBox</title><link>https://parsiya.net/blog/2018-01-23-mounting-live-snapshots-of-encrypted-vms-in-virtualbox/</link><pubDate>Tue, 23 Jan 2018 22:24:39 -0500</pubDate><guid>https://parsiya.net/blog/2018-01-23-mounting-live-snapshots-of-encrypted-vms-in-virtualbox/</guid><description>&lt;h3 id="tldr"&gt;TL;DR
&lt;a class="header-link" href="#tldr"&gt;&lt;svg class="fill-current o-60 hover-accent-color-light" height="22px" viewBox="0 0 24 24" width="22px" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M0 0h24v24H0z" fill="none"/&gt;&lt;path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/&gt;&lt;/svg&gt;&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: We have an encrypted Virtual Machine (VM) disk and the associated
VirtualBox (VBox) live snapshot (taken when user was logged in). Mount the VM
and restore the live snapshot to get access to the data.&lt;/p&gt;
&lt;p&gt;It seems pretty easy, but turns out it's not and looks to be a first of its kind
tutorial (at least public). This is surprising because I can imagine this issue
being a recurring problem in the forensics community.&lt;/p&gt;
&lt;p&gt;A few days ago I did a couple of Forensics challenges. Both involved mounting
images and analyzing the contents of a VM. The second challenge was a disk and a
live snapshot. Part of the challenge involved mounting the snapshot and
restoring the state to log in.&lt;/p&gt;
&lt;p&gt;It's an ongoing challenge so I do not want to spill the beans. Instead, I have
re-created a VM to show what I did. Hopefully this will help the next person
with a similar problem.&lt;/p&gt;</description></item><item><title>Decoding Large Base64 Files with Go</title><link>https://parsiya.net/blog/2018-01-19-decoding-large-base64-files-with-go/</link><pubDate>Fri, 19 Jan 2018 22:45:55 -0500</pubDate><guid>https://parsiya.net/blog/2018-01-19-decoding-large-base64-files-with-go/</guid><description>&lt;p&gt;I am working on this challenge and it has a large base64 file. Each line has 2 characters and it has 150+ million lines.&lt;/p&gt;
&lt;p&gt;Luckily we can use the &lt;a href="https://golang.org/pkg/encoding/base64/#NewDecoder" target="_blank" rel="noreferrer noopener"&gt;Base64 stream decoder&lt;/a&gt;. It reads from an &lt;code&gt;io.Reader&lt;/code&gt; and returns one that can be copied into an &lt;code&gt;io.Writer&lt;/code&gt;. It also takes care of the new lines.&lt;/p&gt;
&lt;p&gt;Sample code is at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Go-Security/blob/master/base64-stream-decoder/b64-stream-decoder.go" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Go-Security/blob/master/base64-stream-decoder/b64-stream-decoder.go&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Simple SSH Harvester in Go</title><link>https://parsiya.net/blog/2017-12-29-simple-ssh-harvester-in-go/</link><pubDate>Fri, 29 Dec 2017 13:40:56 -0500</pubDate><guid>https://parsiya.net/blog/2017-12-29-simple-ssh-harvester-in-go/</guid><description>&lt;p&gt;During my Go SSH adventures at &lt;a href="https://github.com/parsiya/Hacking-with-Go/blob/master/content/04.4.md" target="_blank" rel="noreferrer noopener"&gt;Hacking with Go&lt;/a&gt; I wanted to write a simple SSH harvester. As usual, the tool turned out to be much larger than I thought.&lt;/p&gt;
&lt;p&gt;I realized I cannot find any examples of SSH certificate verification. There are a few examples for host keys here and there. Even the &lt;code&gt;certs_test.go&lt;/code&gt; file just checks the host name. There was a &lt;a href="https://github.com/golang/go/issues/23266" target="_blank" rel="noreferrer noopener"&gt;typo in an error message&lt;/a&gt;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; in the &lt;code&gt;crypto/ssh&lt;/code&gt; package but I think because this is not very much used, had gone unreported.&lt;/p&gt;
&lt;p&gt;Here's my step by step guide to writing this tool by piggybacking on SSH host verification callbacks. Hopefully this will make it easier for the next person.&lt;/p&gt;
&lt;p&gt;You can find the code here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/SSH-Scanner/blob/master/SSHHarvesterv1.go?ts=4" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/SSH-Scanner/blob/master/SSHHarvesterv1.go&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="tldr-verifying-ssh-servers"&gt;TL;DR: verifying SSH servers
&lt;a class="header-link" href="#tldr-verifying-ssh-servers"&gt;&lt;svg class="fill-current o-60 hover-accent-color-light" height="22px" viewBox="0 0 24 24" width="22px" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M0 0h24v24H0z" fill="none"/&gt;&lt;path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/&gt;&lt;/svg&gt;&lt;/a&gt;
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;Create an instance of &lt;a href="https://godoc.org/golang.org/x/crypto/ssh#CertChecker" target="_blank" rel="noreferrer noopener"&gt;ssh.CertChecker&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Set callback functions for &lt;code&gt;IsHostAuthority&lt;/code&gt;, &lt;code&gt;IsRevoked&lt;/code&gt; and optionally &lt;code&gt;HostKeyFallback&lt;/code&gt;.
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;IsHostAuthority&lt;/code&gt;'s callback should return &lt;code&gt;true&lt;/code&gt; for valid certificates.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;IsRevoked&lt;/code&gt;'s callback should return &lt;code&gt;false&lt;/code&gt; for valid certificates.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;HostKeyFallback&lt;/code&gt;'s callback should return &lt;code&gt;nil&lt;/code&gt; for valid certificates.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Create an instance of &lt;a href="https://godoc.org/golang.org/x/crypto/ssh#ClientConfig" target="_blank" rel="noreferrer noopener"&gt;ssh.ClientConfig&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;HostKeyCallback&lt;/code&gt; in &lt;code&gt;ClientConfig&lt;/code&gt; to &lt;code&gt;&amp;amp;ssh.CertChecker.CheckHostKey&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://godoc.org/golang.org/x/crypto/ssh#CertChecker.CheckHostKey" target="_blank" rel="noreferrer noopener"&gt;CheckHostKey&lt;/a&gt; will verify the certificate based on other callback functions.&lt;/li&gt;
&lt;li&gt;The certificate can be accessed in &lt;code&gt;IsRevoked&lt;/code&gt; callback function.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Windows XP 32-bit SP3 Virtual Machines</title><link>https://parsiya.net/blog/2017-12-19-windows-xp-32-bit-sp3-virtual-machines/</link><pubDate>Tue, 19 Dec 2017 19:45:22 -0500</pubDate><guid>https://parsiya.net/blog/2017-12-19-windows-xp-32-bit-sp3-virtual-machines/</guid><description>&lt;p&gt;There used to be Windows XP virtual machines on &lt;a href="https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/" target="_blank" rel="noreferrer noopener"&gt;modern.ie&lt;/a&gt;. I still have a couple of copies around for testing. Unfortunately after XP going out of support, they were removed. But the copies used to be on &lt;a href="https://www.reddit.com/r/AskNetsec/comments/6qea8a/need_a_windows_xp_iso/dkwq0qw/" target="_blank" rel="noreferrer noopener"&gt;Azure CDN&lt;/a&gt; (credit &lt;a href="https://www.reddit.com/user/JoshBrodieNZ" target="_blank" rel="noreferrer noopener"&gt;/u/JoshBrodieNZ&lt;/a&gt;. Seems like they recently removed them too.&lt;/p&gt;
&lt;p&gt;There's still a way to get Windows XP 32-bit VMs from Microsoft (no 64-bit) through Windows XP mode. It contains a VHD (virtual hard disk) with a 32-bit Windows XP SP3.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EDIT 2022-01-12&lt;/strong&gt;: The link below is dead. Looks like Windows XP Mode was tied to Windows 7 and removed when it went EOL.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download Microsoft XP Mode from &lt;a href="https://www.microsoft.com/en-us/download/details.aspx?id=8002" target="_blank" rel="noreferrer noopener"&gt;https://www.microsoft.com/en-us/download/details.aspx?id=8002&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Using 7-zip or any other utility decompress the exe.&lt;/li&gt;
&lt;li&gt;Inside sources, there's another file called &lt;code&gt;xpm&lt;/code&gt;. Decompress it too. With 7-zip, right click on it and select &amp;quot;Extract to ... .&amp;quot;&lt;/li&gt;
&lt;li&gt;One of the extracted files is &lt;code&gt;VirtualXPVHD&lt;/code&gt; and around 1.2 GB. Rename it to &lt;code&gt;VirtualXP.vhd&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;In VirtualBox (or any other virtualization software that supports importing VHDs), create a new Windows XP 32-bit VM and use this file as the hard disk. When you start the VM, it will start a Windows XP setup. My mouse did not work, but you can use shortcut keys to navigate the installer (e.g. Alt+N for Next).&lt;/li&gt;
&lt;li&gt;???&lt;/li&gt;
&lt;li&gt;Profit.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For a step by step guide with pictures, check &lt;a href="https://www.howtogeek.com/howto/12183/how-to-run-xp-mode-in-virtualbox-on-windows-7/" target="_blank" rel="noreferrer noopener"&gt;this post&lt;/a&gt; from howtogeek.com.&lt;/p&gt;</description></item><item><title>Go and pcaps</title><link>https://parsiya.net/blog/2017-12-03-go-and-pcaps/</link><pubDate>Sun, 03 Dec 2017 18:40:26 -0500</pubDate><guid>https://parsiya.net/blog/2017-12-03-go-and-pcaps/</guid><description>&lt;p&gt;I was trying to solve a challenge where the &amp;quot;hidden data&amp;quot; were in ICMP echo payloads. I decided to do it in Go but there were some hiccups on the way. Here are my notes in case (most likely) future me or someone else needs to do the same.&lt;/p&gt;
&lt;p&gt;Code is in my clone at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Go-Security/tree/master/pcap-tutorial" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Go-Security/tree/master/pcap-tutorial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>"Hacking" Car Mechanic Simulator 2015</title><link>https://parsiya.net/blog/2017-11-29-hacking-car-mechanic-simulator-2015/</link><pubDate>Wed, 29 Nov 2017 20:29:30 -0500</pubDate><guid>https://parsiya.net/blog/2017-11-29-hacking-car-mechanic-simulator-2015/</guid><description>&lt;p&gt;Not real hacking!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tl;dr:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open this file with a hex editor:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;\AppData\LocalLow\Red Dot Games\Car Mechanic Simulator 2015\profile#\global&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Search for &lt;code&gt;money&lt;/code&gt; and &lt;code&gt;xp&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Locate the int32 value of each property in little-endian.&lt;/li&gt;
&lt;li&gt;Convert your current XP and money to hex to make the search easier.&lt;/li&gt;
&lt;li&gt;Overwrite them with&lt;code&gt;6F FF FF FF&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;???&lt;/li&gt;
&lt;li&gt;You have &amp;quot;hacked&amp;quot; the game.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It does not get easier than this.&lt;/p&gt;</description></item><item><title>cmd Startup Commands</title><link>https://parsiya.net/blog/2017-11-27-cmd-startup-commands/</link><pubDate>Mon, 27 Nov 2017 23:13:55 -0500</pubDate><guid>https://parsiya.net/blog/2017-11-27-cmd-startup-commands/</guid><description>&lt;p&gt;This blog talks about how to run a command automatically every time you open a new command prompt on Windows.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open registry.&lt;/li&gt;
&lt;li&gt;Navigate to the following location:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;HKCU\Software\Microsoft\Command Processor&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Double click &lt;code&gt;Autorun&lt;/code&gt; and type in your command. For example:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cd /d C:\Users\IEUser\Desktop\Whatever\&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;If the &lt;code&gt;Autorun&lt;/code&gt; property is missing, create one with type &lt;code&gt;REG_SZ&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Now every cmd will automatically cd to the &lt;code&gt;Whatever&lt;/code&gt; directory.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I am going to keep blogging consistently (hopefully). This means breaking my habit of having to write extensive blog posts.&lt;/p&gt;</description></item><item><title>WinAppDbg - Part 4 - Bruteforcing FlareOn 2017 - Challenge 3</title><link>https://parsiya.net/blog/2017-11-15-winappdbg-part-4-bruteforcing-flareon-2017-challenge-3/</link><pubDate>Wed, 15 Nov 2017 18:45:04 -0500</pubDate><guid>https://parsiya.net/blog/2017-11-15-winappdbg-part-4-bruteforcing-flareon-2017-challenge-3/</guid><description>&lt;p&gt;Previous parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2017-11-09-winappdbg-part-1-basics/" title="WinAppDbg - Part 1 - Basics"&gt;Part 1 - Basics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2017-11-11-winappdbg-part-2-function-hooking-and-others/" title="WinAppDbg - Part 2 - Function Hooking and Others"&gt;Part 2 - Function Hooking and Others&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2017-11-11-winappdbg-part-2-function-hooking-and-others/" title="WinAppDbg - Part 3 - Manipulating Function Calls"&gt;Part 3 - Manipulating Function Calls&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We have learned some good stuff. In this part I am going to talk about the original problem that led me to learning WinAppDbg. This is my writeup for challenge 3 &amp;quot;Greek to me&amp;quot; of &lt;a href="https://www.fireeye.com/blog/threat-research/2017/10/2017-flare-on-challenge-solutions.html" target="_blank" rel="noreferrer noopener"&gt;FlareOn 2017&lt;/a&gt;. This is a bruteforce challenge and is rather easy but instead of bruteforcing it the conventional (and straightforward way), I will show how I traversed arbitrary Assembly blobs using WinAppDbg.&lt;/p&gt;
&lt;p&gt;I will (hopefully) mostly talk about solving the challenge and not a lot of recon or other places I was stuck at.&lt;/p&gt;
&lt;p&gt;Code is in my clone:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/winappdbg" title="WinAppDbg code in Parsia-Code" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/winappdbg&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>WinAppDbg - Part 3 - Manipulating Function Calls</title><link>https://parsiya.net/blog/2017-11-15-winappdbg-part-3-manipulating-function-calls/</link><pubDate>Wed, 15 Nov 2017 00:30:25 -0500</pubDate><guid>https://parsiya.net/blog/2017-11-15-winappdbg-part-3-manipulating-function-calls/</guid><description>&lt;p&gt;Previously on WinAppDbg-TV:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2017-11-09-winappdbg-part-1-basics/" title="WinAppDbg - Part 1 - Basics"&gt;Part 1 - Basics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2017-11-11-winappdbg-part-2-function-hooking-and-others/" title="WinAppDbg - Part 2 - Function Hooking and Others"&gt;Part 2 - Function Hooking and Others&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As usual, code is in my clone on Github. Download that directory to your VM and follow along:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/winappdbg" title="WinAppDbg code in Parsia-Code" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/winappdbg&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In part two we learned how to hook functions by hooking IE and Firefox to see pre-TLS traffic. Just looking at function calls is fun but often not enough. We need to be able to modify function parameters and return values.&lt;/p&gt;
&lt;p&gt;In this part we will learn how to do that (and a few other things). We will start with something simple and then move on to more complex examples.&lt;/p&gt;</description></item><item><title>WinAppDbg - Part 2 - Function Hooking and Others</title><link>https://parsiya.net/blog/2017-11-11-winappdbg-part-2-function-hooking-and-others/</link><pubDate>Sat, 11 Nov 2017 12:04:48 -0500</pubDate><guid>https://parsiya.net/blog/2017-11-11-winappdbg-part-2-function-hooking-and-others/</guid><description>&lt;p&gt;In &lt;a href="https://parsiya.net/blog/2017-11-09-winappdbg-part-1-basics/" title="WinAppDbg - Part 1 - Basics"&gt;part one&lt;/a&gt; we talked about the basics of WinAppDbg. In this part we are going to learn a few new things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I wrote a &lt;a href="https://github.com/parsiya/WinAppUtil" title="WinAppDbg repository on Github" target="_blank" rel="noreferrer noopener"&gt;simple python module&lt;/a&gt; to simplify my use of WinAppDbg. It will most likely be modified later, but I have included a version that works with the tutorials at:
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/winappdbg" title="WinAppDbg code in Parsia-Code" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/winappdbg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;We do not need to type the full filename anymore if the executable is in PATH. Note Run Line (&lt;code&gt;win+r&lt;/code&gt;) pulls stuff from more locations than PATH, so we cannot call &lt;code&gt;chrome.exe&lt;/code&gt;. I have written about it &lt;a href="https://parsiya.net/blog/2017-10-23-run-line-vs.-cmd-vs.-powershell/" title="Run Line vs. cmd vs. PowerShell"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DLL enumeration&lt;/strong&gt;: We're going to implement one of procmon's features.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Process/Thread tracing&lt;/strong&gt;: Another procmon feature.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Function Hooking&lt;/strong&gt;: It's very easy in WinAppDbg and we will learn how to do it a couple of different ways.
&lt;ul&gt;
&lt;li&gt;We will hook pre-TLS encryption data for Internet Explorer and Firefox to hack the Gibson.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Copy this directory &lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/winappdbg" title="WinAppDbg code in Parsia-Code" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/winappdbg&lt;/a&gt; to your VM and let's go.&lt;/p&gt;</description></item><item><title>WinAppDbg - Part 1 - Basics</title><link>https://parsiya.net/blog/2017-11-09-winappdbg-part-1-basics/</link><pubDate>Thu, 09 Nov 2017 19:22:24 -0500</pubDate><guid>https://parsiya.net/blog/2017-11-09-winappdbg-part-1-basics/</guid><description>&lt;p&gt;&lt;a href="https://github.com/MarioVilas/winappdbg" title="WinAppDbg repository on Github" target="_blank" rel="noreferrer noopener"&gt;WinAppDbg&lt;/a&gt; by &lt;a href="https://twitter.com/Mario_Vilas" title="Mario Vilas Twitter account" target="_blank" rel="noreferrer noopener"&gt;Mario Vilas&lt;/a&gt; is perhaps one of the most underrated instrumentation frameworks for Windows. In this day and age where everyone write JavaScript code to hook functions (I am looking at you Frida), writing Python code feels great. Just kidding, Frida is pretty cool too.&lt;/p&gt;
&lt;p&gt;Going around the web searching for tutorials did not give me many results. &lt;a href="https://winappdbg.readthedocs.io/en/latest/" title="WinAppDbg documentation on readthedocs" target="_blank" rel="noreferrer noopener"&gt;The docs&lt;/a&gt; are great, they are some of the most practical docs I have seen. But apart from that, I could not find much. There are some random code here and there where people have documented using it but there were no guides to get me started apart from the docs.&lt;/p&gt;
&lt;p&gt;Here's the result of my learning. I am sharing it to fill the gap that I encountered while getting started with the tool. We're going to learn as we go using real-world applications and will write code. We will start from the basics, expanding our code-base as we learn more.&lt;/p&gt;
&lt;p&gt;Code is in my clone at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/winappdbg" title="WinAppDbg code in Parsia-Code" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/winappdbg&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Silly Attack Using Run Line</title><link>https://parsiya.net/blog/2017-10-26-silly-attack-using-run-line/</link><pubDate>Thu, 26 Oct 2017 21:11:55 -0400</pubDate><guid>https://parsiya.net/blog/2017-10-26-silly-attack-using-run-line/</guid><description>&lt;p&gt;&lt;a href="https://parsiya.net/blog/2017-10-23-run-line-vs.-cmd-vs.-powershell/" title="Run Line vs. cmd vs. PowerShell"&gt;Previously&lt;/a&gt; we saw how Windows Run Line searches in &lt;code&gt;App Paths&lt;/code&gt; registry keys before PATH. We can perform a silly attack and create a registry key for an application in path and point it to another command.&lt;/p&gt;
&lt;p&gt;This is a silly attack because we need to be admin to create/edit those keys. But if you ever find yourself in the unlikely situation, you can use this to become delayed admin (i.e. wait for admin to run the app via Run Line).&lt;/p&gt;</description></item><item><title>Run Line vs. cmd vs. PowerShell</title><link>https://parsiya.net/blog/2017-10-23-run-line-vs.-cmd-vs.-powershell/</link><pubDate>Mon, 23 Oct 2017 22:01:50 -0400</pubDate><guid>https://parsiya.net/blog/2017-10-23-run-line-vs.-cmd-vs.-powershell/</guid><description>&lt;p&gt;Note about the differences between search paths when running stuff via the Windows Run Line (&lt;code&gt;win+r&lt;/code&gt;), command line and PowerShell.&lt;/p&gt;
&lt;p&gt;We can type &lt;code&gt;iexplore&lt;/code&gt; in Run Line to open up Internet Explorer but doing the same in a cmd or PowerShell is not successful.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tl;dr&lt;/strong&gt;\
Run Line looks in the following registry location then PATH. Credit Vic Laurie at &lt;a href="https://commandwindows.com/runline.htm" target="_blank" rel="noreferrer noopener"&gt;commandwindows.com&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Search order&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cmd searches first in local directory and then in PATH.&lt;/li&gt;
&lt;li&gt;PowerShell searches first in PATH and then in local directory.&lt;/li&gt;
&lt;li&gt;Run Line searches in &lt;code&gt;App Paths&lt;/code&gt; first.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Usual blabbering and needless digging follows.&lt;/p&gt;</description></item><item><title>Thick Client Proxying - Part 8 - Notes on Proxying Windows Services</title><link>https://parsiya.net/blog/2017-10-08-thick-client-proxying-part-8-notes-on-proxying-windows-services/</link><pubDate>Sun, 08 Oct 2017 15:00:00 -0400</pubDate><guid>https://parsiya.net/blog/2017-10-08-thick-client-proxying-part-8-notes-on-proxying-windows-services/</guid><description>&lt;p&gt;These are my notes about proxying Windows services. Being run from a different account (usually LocalSystem).&lt;/p&gt;
&lt;p&gt;Proxy settings are usually configured per user and are not applicable to Windows services.&lt;/p&gt;
&lt;p&gt;If you have to proxy a Windows service, here are some of the things you can try (and hope they work).&lt;/p&gt;
&lt;p&gt;There are also some issues when using &lt;code&gt;netsh&lt;/code&gt; to set WinHTTP proxies for 32-bit applications on Windows 7 64-bit.&lt;/p&gt;</description></item><item><title>Thick Client Proxying - Part 7 - Proxying .NET Applications via Config File</title><link>https://parsiya.net/blog/2017-10-07-thick-client-proxying-part-7-proxying-.net-applications-via-config-file/</link><pubDate>Sat, 07 Oct 2017 18:30:28 -0400</pubDate><guid>https://parsiya.net/blog/2017-10-07-thick-client-proxying-part-7-proxying-.net-applications-via-config-file/</guid><description>&lt;p&gt;.NET applications use a configuration file to read some settings. It's an XML
file named &lt;code&gt;appName.exe.config&lt;/code&gt;. We can pass a proxy address in this file.&lt;/p&gt;
&lt;p&gt;These apps usually use WinINET or IE proxy settings. Sometimes, they do not. We
can either use an application specific config file or use one for the entire
.NET framework for a machine.&lt;/p&gt;
&lt;p&gt;Look inside the decompiled code (or just grep the binary files) for references
to &lt;code&gt;System.Configuration&lt;/code&gt; &lt;a href="https://msdn.microsoft.com/en-us/library/system.configuration.configuration%28v=vs.110%29.aspx" target="_blank" rel="noreferrer noopener"&gt;MSDN-page&lt;/a&gt;. Applications
use &lt;code&gt;ConfigurationManager&lt;/code&gt; and &lt;code&gt;WebConfigurationManager&lt;/code&gt; classes to access these
settings.&lt;/p&gt;
&lt;!-- links --&gt;</description></item><item><title>Razer Comms</title><link>https://parsiya.net/blog/2017-09-21-razer-comms/</link><pubDate>Thu, 21 Sep 2017 22:45:20 -0400</pubDate><guid>https://parsiya.net/blog/2017-09-21-razer-comms/</guid><description>&lt;p&gt;A couple of years ago I looked at Razer Comms. I found a bunch of stuff that I never reported or pursued. I discovered the application is &lt;a href="http://support.razerzone.com/software/comms" target="_blank" rel="noreferrer noopener"&gt;now retired&lt;/a&gt; so I am publishing these.&lt;/p&gt;
&lt;p&gt;I did not look very hard but Razer Comms was essentially a webapp running via the &lt;a href="https://bitbucket.org/chromiumembedded/cef" target="_blank" rel="noreferrer noopener"&gt;Chromium Embedded Framework&lt;/a&gt;. There were no checks on channel authorizations. You could read every channel including ones protected with passwords.&lt;/p&gt;
&lt;p&gt;You can see my notes at &lt;a href="https://github.com/parsiya/Parsia-Clone/tree/master/research/razer-comms" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Clone/tree/master/research/razer-comms&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>TLDR: Base64</title><link>https://parsiya.net/blog/2017-08-06-tldr-base64/</link><pubDate>Sun, 06 Aug 2017 13:54:45 -0400</pubDate><guid>https://parsiya.net/blog/2017-08-06-tldr-base64/</guid><description>&lt;p&gt;Some quick notes about base64 encoding. URL safe and avoiding a pitfall when using Burp Decoder.&lt;/p&gt;
&lt;p&gt;This document assumes you already know what base64 is and some of the major use-cases.&lt;/p&gt;</description></item><item><title>From Atom to Sublime Text</title><link>https://parsiya.net/blog/2017-07-08-from-atom-to-sublime-text/</link><pubDate>Sat, 08 Jul 2017 11:56:58 -0400</pubDate><guid>https://parsiya.net/blog/2017-07-08-from-atom-to-sublime-text/</guid><description>&lt;p&gt;I have moved from Atom to Sublime. Atom is a nice editor with a lot of features but it has a lot of performance issues for what I want to do.&lt;/p&gt;
&lt;p&gt;Below is my setup for reference. When I want to do it again in a year (or a new machine) I can just use everything here or just use the config files. You can find the config files in my clone:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Clone/tree/master/configs/sublime-text" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Clone/tree/master/configs/sublime-text&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>The Great Hiatus</title><link>https://parsiya.net/blog/2016-08-01-the-great-hiatus/</link><pubDate>Mon, 01 Aug 2016 02:04:23 -0400</pubDate><guid>https://parsiya.net/blog/2016-08-01-the-great-hiatus/</guid><description>&lt;p&gt;This is a blog from the future. This is a copy of my post from March 1st 2018.&lt;/p&gt;
&lt;p&gt;I did not blog for almost exactly a year from July 28th 2016 to July 8th 2017.&lt;/p&gt;
&lt;p&gt;This is not something new, if you look at my blog dates you can see I work in clusters. I do a few blogs about something interesting in quick succession and then don't do anything for a while.&lt;/p&gt;
&lt;p&gt;You could call this a problem. Some people recommend holding off posts and then publishing them more steadily. I am not like that, I want to document what I do for future reference right now before I forget.&lt;/p&gt;</description></item><item><title>Thick Client Proxying - Part 6: How HTTP(s) Proxies Work</title><link>https://parsiya.net/blog/2016-07-28-thick-client-proxying-part-6-how-https-proxies-work/</link><pubDate>Thu, 28 Jul 2016 02:04:23 -0400</pubDate><guid>https://parsiya.net/blog/2016-07-28-thick-client-proxying-part-6-how-https-proxies-work/</guid><description>&lt;p&gt;In order to create our own custom proxies, first we need to know how proxies work. When I wanted to write a custom proxy tool (it's a simple Python script) in &lt;a href="https://parsiya.net/blog/2015-10-19-proxying-hipchat-part-3-ssl-added-and-removed-here/" title="Proxying Hipchat Part 3: SSL Added and Removed Here"&gt;Hipchat part3&lt;/a&gt;, I had to go back and learn how they work. I did not find such a resource online that looked at proxies from an infosec perspective. Most talked about how to configure caching or forwarding proxies and not much about MitM ones. I have briefly talked about it in the section 2 of the same post named &lt;code&gt;How does a Proxy Work?&lt;/code&gt;. In this post I am going to take a deep(er) dive. I actually read some RFCs and they were surprisingly well written.&lt;/p&gt;
&lt;p&gt;If you want to skip the intro, go to &lt;a href="#section-3" title="How HTTP Proxies Work"&gt;section 3&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Gynvael Coldwind - Garage4Hackers - Notes from March 2014</title><link>https://parsiya.net/blog/2016-07-14-gynvael-coldwind-garage4hackers-notes-from-march-2014/</link><pubDate>Thu, 14 Jul 2016 23:03:51 -0400</pubDate><guid>https://parsiya.net/blog/2016-07-14-gynvael-coldwind-garage4hackers-notes-from-march-2014/</guid><description>&lt;p&gt;Back in March 2014, Garage4Hackers had a live stream with Gynvael Coldwind. His talk was named &lt;code&gt;&amp;quot;Data, data, data! I can't make bricks without clay&amp;quot;&lt;/code&gt; or &lt;code&gt;a few practical notes on reverse-engineering&lt;/code&gt;. You can see the recording &lt;a href="https://www.youtube.com/watch?v=Jk5Yad598vs" target="_blank" rel="noreferrer noopener"&gt;on youtube&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here are my notes that I discovered from 2014.&lt;/p&gt;</description></item><item><title>Windows Netsh Interface Portproxy</title><link>https://parsiya.net/blog/2016-06-07-windows-netsh-interface-portproxy/</link><pubDate>Tue, 07 Jun 2016 22:29:49 -0400</pubDate><guid>https://parsiya.net/blog/2016-06-07-windows-netsh-interface-portproxy/</guid><description>&lt;p&gt;I thought I had found the Windows &lt;code&gt;iptables&lt;/code&gt; with &lt;a href="https://technet.microsoft.com/de-de/library/cc731068%28v=ws.10%29.aspx" target="_blank" rel="noreferrer noopener"&gt;Portproxy&lt;/a&gt;
but I was wrong. But I learned something neat in the process and I am
documenting it.&lt;/p&gt;
&lt;p&gt;Portproxy allows you to listen on a certain port on one of your network
interfaces (or all interfaces) and redirect all traffic
&lt;strong&gt;destined to that interface&lt;/strong&gt; to another port/IP.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;to that interface&lt;/code&gt; is the limitation that unfortunately kills it. This will
be a short post.&lt;/p&gt;</description></item><item><title>Go Notes</title><link>https://parsiya.net/go/</link><pubDate>Wed, 01 Jun 2016 20:35:00 -0400</pubDate><guid>https://parsiya.net/go/</guid><description>&lt;p&gt;These notes have moved to
&lt;a href="https://parsiya.io/dev/go/" target="_blank" rel="noreferrer noopener"&gt;https://parsiya.io/dev/go/&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Learning Go</title><link>https://parsiya.net/blog/2016-06-01-learning-go/</link><pubDate>Wed, 01 Jun 2016 20:35:00 -0400</pubDate><guid>https://parsiya.net/blog/2016-06-01-learning-go/</guid><description>&lt;p&gt;I have decided to learn Go (or Golang). I went through the &lt;a href="https://tour.golang.org/" target="_blank" rel="noreferrer noopener"&gt;Tour of Go&lt;/a&gt; and made some notes. Some of the items/code are directly copy pasted from there. The notes are just a cheatsheet to help me look things up quickly while learning. I will update that page as I learn more.&lt;/p&gt;
&lt;p&gt;You can see the notes at &lt;a href="https://parsiya.net/go/" title="Go Notes"&gt;https://parsiya.net/go/&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Thick Client Proxying - Part 5: FileHippo App Manager or the Bloated Hippo</title><link>https://parsiya.net/blog/2016-05-15-thick-client-proxying-part-5-filehippo-app-manager-or-the-bloated-hippo/</link><pubDate>Sun, 15 May 2016 16:55:24 -0400</pubDate><guid>https://parsiya.net/blog/2016-05-15-thick-client-proxying-part-5-filehippo-app-manager-or-the-bloated-hippo/</guid><description>&lt;p&gt;I have talked a lot about this and that but have done nothing in action. Now I will talk about proxying actual applications. I will start with something easy, the &lt;a href="http://filehippo.com/download_app_manager/" target="_blank" rel="noreferrer noopener"&gt;FileHippo App Manager&lt;/a&gt;. This app was chosen because it can be proxied with Burp, it does not use TLS and it has its own proxy settings (also works with Internet Explorer proxy settings). The requests are pretty simple to understand. I like the FileHippo website because it archives old versions of software. For example I loved the non-bloated Yahoo! Messenger 8.0 when I used it (it's pretty popular in some places) and used FileHippo to download the old versions.&lt;/p&gt;
&lt;p&gt;FileHippo App Manager turned out to be more interesting than I thought and this post turned into some .NET reverse engineering using dnSpy. Here's what I talk about in this post:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The app contains the AWS SDK and a fortunately invalid set of AWS Access/Secret keys. Both the SDK and the keys are in dead code.&lt;/li&gt;
&lt;li&gt;Requests have an &lt;code&gt;AccessToken&lt;/code&gt; header which is generated client-side. We will discuss how it is generated.&lt;/li&gt;
&lt;li&gt;The application has a &amp;quot;hidden&amp;quot; DEBUG mode which unfortunately does nothing special. We will discover how to enable it.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Looking for Apps to Proxy</title><link>https://parsiya.net/blog/2016-05-09-looking-for-apps-to-proxy/</link><pubDate>Mon, 09 May 2016 01:37:41 -0400</pubDate><guid>https://parsiya.net/blog/2016-05-09-looking-for-apps-to-proxy/</guid><description>&lt;p&gt;It's been a while since Burp part four and I want to continue writing these. It's time to actually proxy applications. However I have three problems:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I was too busy at work.&lt;/li&gt;
&lt;li&gt;I could not find a lot of interesting applications that are interesting to proxy and can showcase different Burp functionalities that we talked about.&lt;/li&gt;
&lt;li&gt;I found some interesting applications but there were security vulns so I am going through disclosure (unfortunately I may never be able to release them publicly).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The last point was a surprise, these are decently popular apps and I could not believe that no one has looked at them before.&lt;/p&gt;
&lt;p&gt;Nevertheless, I will continue soon.&lt;/p&gt;
&lt;p&gt;In the meanwhile, Burp version &lt;code&gt;1.7&lt;/code&gt; has been &lt;a href="http://releases.portswigger.net/" target="_blank" rel="noreferrer noopener"&gt;released&lt;/a&gt;. Now we have Burp projects. Instead of saving the state everyday, we can use one project file that contains all the items. Pretty cool. Some of the items have changed, especially options. Now it has &lt;code&gt;User Options&lt;/code&gt; and &lt;code&gt;Project Options&lt;/code&gt; but the options by themselves are still there.&lt;/p&gt;</description></item><item><title>Cloudfront and TLS</title><link>https://parsiya.net/blog/2016-04-14-cloudfront-and-tls/</link><pubDate>Thu, 14 Apr 2016 20:45:15 -0400</pubDate><guid>https://parsiya.net/blog/2016-04-14-cloudfront-and-tls/</guid><description>&lt;p&gt;I finally decided to cave in and take advantage of the Amazon Cloudfront free TLS certificate. I know I will end up paying more than what I already do but I pay few bucks each month. Each month I pay one dollar for two hosted zones and another dollar or so for the bandwidth. Even if I was still in my home country, I would have been able to pay this as it is less than a large pizza even where I lived.&lt;/p&gt;
&lt;p&gt;If you are interested in free hosting alternatives, you can use &lt;a href="https://gohugo.io/tutorials/github-pages-blog/" target="_blank" rel="noreferrer noopener"&gt;Github-pages&lt;/a&gt;, &lt;a href="https://gohugo.io/tutorials/hosting-on-bitbucket/" target="_blank" rel="noreferrer noopener"&gt;Bitbucket&lt;/a&gt; or just go with the excellent &lt;a href="https://gitlab.com/pages/hugo" target="_blank" rel="noreferrer noopener"&gt;Gitlab-Pages&lt;/a&gt; (which supports Hugo and whole lot of other static website generators natively).&lt;/p&gt;
&lt;p&gt;It took me a lot of tries and probably burning a good amount of money on Cloudfront invalidation requests (otherwise I had to wait for a day or so to see the changes) but it finally worked. The trick was to setup the origin policy during creation of the distribution as it cannot be modified through the web portal after that.&lt;/p&gt;
&lt;p&gt;Burp part five is still on hold for now because I am doing something else.&lt;/p&gt;</description></item><item><title>Thick Client Proxying - Part 4: Burp in Proxy Chains</title><link>https://parsiya.net/blog/2016-04-07-thick-client-proxying-part-4-burp-in-proxy-chains/</link><pubDate>Thu, 07 Apr 2016 21:17:25 -0400</pubDate><guid>https://parsiya.net/blog/2016-04-07-thick-client-proxying-part-4-burp-in-proxy-chains/</guid><description>&lt;p&gt;In this post I will talk about using Burp as part of a proxy chain. The number of applications that can be proxied by Burp and used with Burp in proxy chains is &lt;em&gt;infinite&lt;/em&gt; for documentation purposes. Instead I am going to demonstrate how to use some of more used tools with Burp in proxy chain. All of this is going to happen on a Windows 7 Virtual Machine (VM).&lt;/p&gt;
&lt;p&gt;These applications/utilities are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.cygwin.com/" target="_blank" rel="noreferrer noopener"&gt;Cygwin&lt;/a&gt;: I will use cURL commands for demonstration purposes.&lt;/li&gt;
&lt;li&gt;IBM Appscan Standard: I will use the evaluation version.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.charlesproxy.com/download/latest-release/" target="_blank" rel="noreferrer noopener"&gt;Charles Proxy&lt;/a&gt;: For when you have to use multiple proxies.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.telerik.com/download/fiddler" target="_blank" rel="noreferrer noopener"&gt;Fiddler&lt;/a&gt;: Same as above.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.soapui.org/downloads/soapui.html" target="_blank" rel="noreferrer noopener"&gt;SoapUI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You don't need Burp Pro to play along and apart from Appscan, all application are free to use. For Appscan we will use the evaluation version which is free for its demo test.&lt;/p&gt;</description></item><item><title>Hugo Octopress Update</title><link>https://parsiya.net/blog/2016-04-03-hugo-octopress-update/</link><pubDate>Sun, 03 Apr 2016 13:13:39 -0400</pubDate><guid>https://parsiya.net/blog/2016-04-03-hugo-octopress-update/</guid><description>&lt;p&gt;I have made a good number of changes to the &lt;a href="https://github.com/parsiya/hugo-octopress" target="_blank" rel="noreferrer noopener"&gt;Hugo-Octopress&lt;/a&gt; theme. As I have been using the theme more and more, I have realized there were a bunch of bugs (some were pointed out on Github).&lt;/p&gt;
&lt;p&gt;Apart from Bugs, I had hardcoded too many settings in the theme. For example, modifying the text in the sidebar could only be accomplished by changing the sidebar template. Ideally user should not need to modify anything in the theme and it should be customizable by just using the config file.&lt;/p&gt;
&lt;p&gt;In the end I created a bunch of issues on Github and then closed them myself. I am not quite sure if this is correct &lt;code&gt;git&lt;/code&gt; but eh :D&lt;/p&gt;</description></item><item><title>Thick Client Proxying - Part 3: Burp Options and Extender</title><link>https://parsiya.net/blog/2016-04-02-thick-client-proxying-part-3-burp-options-and-extender/</link><pubDate>Sat, 02 Apr 2016 20:22:37 -0400</pubDate><guid>https://parsiya.net/blog/2016-04-02-thick-client-proxying-part-3-burp-options-and-extender/</guid><description>&lt;p&gt;Previous parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2016-03-27-thick-client-proxying-part-1-burp-interception-and-proxy-listeners/" title="Burp Tips and Tricks for Non-Webapp Testing - Part 1: Interception and Proxy Listeners"&gt;Burp Tips and Tricks for Non-Webapp Testing - Part 1: Interception and Proxy Listeners&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parsiya.net/blog/2016-03-29-thick-client-proxying-part-2-burp-history-intruder-scanner-and-more/" title="Burp Tips and Tricks for Non-Webapp Testing - Part 2: History, Intruder, Scanner and More"&gt;Burp Tips and Tricks for Non-Webapp Testing - Part 2: History, Intruder, Scanner and More&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Almost there, I will get through &lt;code&gt;Options&lt;/code&gt; and &lt;code&gt;Extender&lt;/code&gt; in this part and we will actually start doing stuff moving forward.&lt;/p&gt;</description></item><item><title>Thick Client Proxying - Part 2: Burp History, Intruder, Scanner and More</title><link>https://parsiya.net/blog/2016-03-29-thick-client-proxying-part-2-burp-history-intruder-scanner-and-more/</link><pubDate>Tue, 29 Mar 2016 19:57:53 -0400</pubDate><guid>https://parsiya.net/blog/2016-03-29-thick-client-proxying-part-2-burp-history-intruder-scanner-and-more/</guid><description>&lt;p&gt;In &lt;a href="https://parsiya.net/blog/2016-03-27-thick-client-proxying-part-1-burp-interception-and-proxy-listeners/" title="Burp Tips and Tricks for Non-Webapp Testing - Part 1: Interception and Proxy Listeners"&gt;part1&lt;/a&gt; I talked about some of Burp's functionalities with regards to testing non-webapps. I did not expect it to be that long, originally I had intended to just shared some quick tips that I use. Now you are forced to read my drivel.&lt;/p&gt;
&lt;p&gt;In this part I will talk about &lt;code&gt;Target &amp;gt; Scope&lt;/code&gt;, &lt;code&gt;Proxy &amp;gt; HTTP History&lt;/code&gt; and &lt;code&gt;Intruder/Scanner&lt;/code&gt;. I will discuss a bit of &lt;code&gt;Scanner&lt;/code&gt;, &lt;code&gt;Repeater&lt;/code&gt; and &lt;code&gt;Comparer&lt;/code&gt; too, but there is not much to discuss for the last three. They are pretty straightforward.&lt;/p&gt;</description></item><item><title>Thick Client Proxying - Part 1: Burp Interception and Proxy Listeners</title><link>https://parsiya.net/blog/2016-03-27-thick-client-proxying-part-1-burp-interception-and-proxy-listeners/</link><pubDate>Sun, 27 Mar 2016 02:45:03 -0400</pubDate><guid>https://parsiya.net/blog/2016-03-27-thick-client-proxying-part-1-burp-interception-and-proxy-listeners/</guid><description>&lt;p&gt;Burp is not just used for web application testing. I usually use it during mobile and thick client tests. If the application is using HTTP methods then Burp is your best friend.&lt;/p&gt;
&lt;p&gt;I am going to document a bunch of Burp tips and tricks that have helped me during my work. One purpose is to share it with the world and not be the other guy from Wham! (:D) and the other is to have it in an accessible place (similar to the cheat sheet in the menu).&lt;/p&gt;
&lt;p&gt;This part one I talk about Interception and Proxy listeners which are configured via &lt;code&gt;Proxy &amp;gt; Options&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;At the time of writing the current version of Burp Pro is &lt;code&gt;1.6.39&lt;/code&gt; and most items should apply to the current Burp Free version (&lt;code&gt;1.6.32&lt;/code&gt;). Most settings have not changed since I started working with Burp (v1.5). You can download Burp from: &lt;a href="https://portswigger.net/burp/download.html" target="_blank" rel="noreferrer noopener"&gt;https://portswigger.net/burp/download.html&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When I started this, I did not think I have so much stuff to write about Burp. So I broke it into multiple parts. Please note that these series of posts are not targeted towards web application testing so I have skipped some functionalities. If you have any favorite tips or usecases and want them included with credit please let me know, as usual feedback is always welcome.&lt;/p&gt;</description></item><item><title>Cheat Sheet</title><link>https://parsiya.net/cheatsheet/</link><pubDate>Wed, 24 Feb 2016 22:29:57 -0500</pubDate><guid>https://parsiya.net/cheatsheet/</guid><description>&lt;p&gt;You will find those commands and tips that I need from time to time (and usually
forget when I need them). This is a page to complement
&lt;a href="https://parsiya.io" target="_blank" rel="noreferrer noopener"&gt;my clone at parsiya.io&lt;/a&gt; and gives me a simple repository of
how-tos I can access online. Look at the table of contents below or &lt;code&gt;ctrl+f&lt;/code&gt; and
search for keywords.&lt;/p&gt;
&lt;nav id="TableOfContents"&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#tar"&gt;Tar&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#compress-a-directory-using-tar"&gt;Compress a Directory Using tar&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#decompress-a-targz-file"&gt;Decompress a tar.gz file&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#openssl"&gt;OpenSSL&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#dump-the-tls-certificate-of-a-domain-with-openssl"&gt;Dump The TLS Certificate of a Domain with OpenSSL&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#tls-connection-with-a-specific-ciphersuite-with-openssl"&gt;TLS Connection with a Specific Ciphersuite with OpenSSL&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#aws"&gt;AWS&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#how-to-use-s3deploy"&gt;How to Use s3deploy&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#sync-a-directory-with-an-amazon-s3-bucket-with-s3cmd"&gt;Sync a Directory with an Amazon S3 bucket with s3cmd&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#change-the-mime-type-of-the-css-file-after-upload-to-fix-css-not-displaying-correctly"&gt;Change the MIME-Type of the CSS file After Upload to Fix CSS not Displaying Correctly&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#set-the-website-index-to-a-non-root-file-in-a-static-website-on-s3"&gt;Set the Website Index to a Non-Root file in a Static Website on S3&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#use-aws-cli-without-credentials"&gt;Use AWS CLI Without Credentials&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#windows"&gt;Windows&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#shortcut-to-ie-or-wininet-proxy-settings"&gt;Shortcut to IE (or WinINET) Proxy Settings&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#whereexe"&gt;where.exe&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#delete-file-or-directory-with-a-path-or-name-longer-than-the-windows-limit"&gt;Delete File or Directory with a Path or Name Longer than the Windows Limit&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#exit-status-3221225781"&gt;Exit Status 3221225781&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#map-a-drive-to-a-specific-directory"&gt;Map a Drive to a Specific Directory&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#prevent-monitors-from-going-to-sleep-after-locking-the-computer"&gt;Prevent Monitors from Going to Sleep after Locking the Computer&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#convert-a-plist-file-to-xml-on-windows"&gt;Convert a plist File to XML on Windows&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#oneliner-to-find-unquoted-service-paths"&gt;Oneliner to Find Unquoted Service Paths&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#run-chromium-browsers-with-a-proxy"&gt;Run Chromium Browsers with a Proxy&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#microphone-does-not-work-in-discord"&gt;Microphone does not Work in Discord&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#extract-msi-files"&gt;Extract MSI Files&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#disable-autofocus-for-microsoft-lifecam-cinema"&gt;Disable Autofocus for Microsoft Lifecam Cinema&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#install-windbg-as-the-post-mortem-debugger"&gt;Install WinDbg as the Post-Mortem Debugger&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#remove-windbg-as-the-post-mortem-debugger"&gt;Remove WinDbg as the Post-Mortem Debugger&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#open-a-network-monitor-cap-file-in-wireshark-and-save-is-disabled"&gt;Open a Network Monitor cap File in Wireshark and Save is Disabled&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#keyboard-shortcut-to-run-applications-elevated"&gt;Keyboard Shortcut to Run Applications Elevated&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#firewall-rules-in-the-registry"&gt;Firewall Rules in the Registry&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#install-packages-on-windows-from-the-command-line-needs-admin"&gt;Install Packages on Windows from the Command Line (Needs Admin)&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#uninstall-ie-11-from-windows-7-and-install-an-older-version"&gt;Uninstall IE 11 from Windows 7 (and Install an Older Version)&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#read-scheduled-tasks-dacl"&gt;Read Scheduled Task's DACL&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#find-users-under-the-hkey_users-registry-hive"&gt;Find Users Under the HKEY_USERS Registry Hive&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#find-the-open-handle-to-a-file-or-resource"&gt;Find The Open Handle to a File or Resource&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#powercfg"&gt;powercfg&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#add-edit-to-the-context-menu-for-images-in-windows-11"&gt;Add &amp;quot;Edit&amp;quot; to the Context Menu for Images in Windows 11&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#wsl"&gt;WSL&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#file-locations"&gt;File locations:&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#access-wsl2-files"&gt;Access WSL2 Files&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#import-and-export"&gt;Import and Export&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#use-wsl-distributions-without-the-microsoft-store"&gt;Use WSL Distributions without the Microsoft Store&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#hugo-server-doesnt-see-file-notifications-events-in-wsl2"&gt;Hugo Server doesn't see File Notifications Events in WSL2&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#docker-in-wsl2"&gt;Docker in WSL2&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#powershell"&gt;PowerShell&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#list-all-files-including-hidden-files"&gt;List All Files (Including Hidden Files)&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#diff-in-powershell"&gt;Diff in PowerShell&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#pseudo-grep-in-powershell"&gt;Pseudo-grep in PowerShell&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#grep-in-command-results"&gt;grep in Command Results&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#get-acl-and-icaclsexe"&gt;Get-Acl and icacls.exe&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#time-in-powershell"&gt;time in PowerShell&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#vhd-file-is-open-in-system-and-cannot-be-deleted"&gt;VHD File is Open in System (and Cannot be Deleted)&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#base64-encode-and-decode-without-powershell"&gt;Base64 Encode and Decode without PowerShell&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#load-a-managed-dll-from-powershell"&gt;Load a Managed DLL from PowerShell&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#zip-a-directory-with-powershell"&gt;Zip a Directory with PowerShell&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#hyper-v"&gt;Hyper-V&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#cannot-create-virtual-switch"&gt;Cannot Create Virtual Switch&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#cloning-vms-in-hyper-v"&gt;Cloning VMs in Hyper-V&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#the-guest-has-no-internet"&gt;The Guest Has No Internet&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#higher-resolution-for-debianubuntu-guest-in-hyper-v"&gt;Higher Resolution For Debian/Ubuntu Guest in Hyper-V&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#creating-an-ubuntu-vm-in-hyper-v"&gt;Creating an Ubuntu VM in Hyper-V&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#windows-dns-cache-is-not-getting-populated-in-hyper-v-guest"&gt;Windows DNS Cache is not Getting Populated in Hyper-V Guest&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#virtualbox"&gt;VirtualBox&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#restart-clipboard-functionality-in-virtualbox-after-guest-resume"&gt;Restart Clipboard Functionality in VirtualBox After Guest Resume&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#change-the-hardware-uuid-of-cloned-windows-vms-to-avoid-windows-reactivation"&gt;Change the Hardware UUID of Cloned Windows VMs to Avoid Windows Reactivation&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#increase-vm-disk-size"&gt;Increase VM Disk Size&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#git"&gt;Git&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#create-new-branch-and-merge"&gt;Create New Branch and Merge&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#only-clone-a-certain-branch"&gt;Only Clone a Certain Branch&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#clone-and-populate-submodules"&gt;Clone and Populate Submodules&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#undo-remote-git-history-after-push"&gt;Undo Remote git History after Push&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#sync-a-fork-with-the-original-repository"&gt;Sync a Fork with the Original Repository&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#use-notepad-as-git-editor-on-windows-via-cygwin"&gt;Use Notepad++ as git Editor on Windows via Cygwin&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#change-remote-for-an-existing-git-repository"&gt;Change Remote for an Existing Git Repository&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#list-all-authors-in-a-git-repository"&gt;List All Authors in a Git Repository&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#rewrite-author-for-older-commits"&gt;Rewrite Author for Older Commits&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#remove-uncommitted-files-from-staging"&gt;Remove Uncommitted Files from Staging&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#make-git-case-sensitive-with-a-catch"&gt;Make git Case Sensitive (with a Catch)&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#exclude-a-committed-file-with-gitignore"&gt;Exclude a Committed File with gitignore&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#sign-git-commits"&gt;Sign git Commits&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#visual-studio-code"&gt;Visual Studio Code&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#associate-an-extension-with-a-specific-language"&gt;Associate an Extension with a Specific Language&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#install-a-specific-version-of-an-extension"&gt;Install a Specific Version of an Extension&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#couldnt-start-client-gopls-unsupported-uri-scheme"&gt;couldn't start client gopls unsupported URI scheme&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#sublime-text-3"&gt;Sublime Text 3&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#fix-margo-build-failed-for-gosublime-on-windows"&gt;Fix &amp;quot;MarGo build failed&amp;quot; for GoSublime on Windows&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#open-the-same-file-in-a-new-tab"&gt;Open the Same File in a New Tab&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#burp"&gt;Burp&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#quality-of-life-tips-and-tricks-for-burp"&gt;Quality of Life Tips and Tricks for Burp&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#selected-text-in-burp-is-black"&gt;Selected Text in Burp is Black&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#using-iptables-to-proxy-android-apps-with-burp"&gt;Using iptables to Proxy Android Apps with Burp&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#linux"&gt;Linux&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#python-module-installed-with-pip-but-command-is-not-available"&gt;Python Module Installed with pip but Command is not Available&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#add-a-user-to-sudoers-on-debian"&gt;Add a User to sudoers on Debian&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#grep"&gt;grep&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#docker"&gt;Docker&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#commands"&gt;Commands&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#troubleshooting"&gt;Troubleshooting&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#python"&gt;Python&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#create-all-possible-combinations-of-two-lists-of-strings"&gt;Create All Possible Combinations of Two Lists of Strings&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#multi-line-string"&gt;Multi-line String&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#main"&gt;Main&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#format-string-with"&gt;Format String with&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#bytearray"&gt;bytearray&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#cyclic-xor-on-bytearrays"&gt;Cyclic XOR on bytearrays&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#cyclic-xor-on-strings"&gt;Cyclic XOR on Strings&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#python-one-liners-in-command-line"&gt;Python One-Liners in Command Line&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#java"&gt;Java&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#enable-log4j-for-a-java-app"&gt;Enable Log4j for a Java App&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#angular"&gt;Angular&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#find-the-version-of-angular-on-a-website-with-devtools"&gt;Find the Version of Angular on a Website with DevTools&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#misc"&gt;Misc&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#download-youtube-videos-with-subtitles-with-youtube-dl"&gt;Download Youtube Videos with Subtitles with youtube-dl&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#download-different-qualities-with-youtube-dl"&gt;Download Different Qualities with youtube-dl&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#print-envelopes-with-brother-printers-and-libreoffice"&gt;Print Envelopes with Brother printers and LibreOffice&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#tab-size-4-in-the-github-web-interface"&gt;Tab Size 4 in the GitHub Web Interface&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#ffmpeg"&gt;ffmpeg&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#wrap-long-lines-in-page-source-in-firefox"&gt;Wrap Long Lines in Page Source in Firefox&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#wireshark-not-equal-filter"&gt;Wireshark Not Equal Filter&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#copy-ebooks-to-ipad-with-calibre"&gt;Copy Ebooks to iPad with Calibre&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#regex"&gt;Regex&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#regex-to-search-for-urls-in-burp-responses"&gt;Regex to Search for URLs in Burp Responses&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#bash"&gt;Bash&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#bash-function-to-change-to-a-directory-and-open-it-in-vs-code"&gt;Bash Function to Change to a Directory and Open it in VS Code&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;/ul&gt;
&lt;/nav&gt;

&lt;hr&gt;
&lt;h1 id="tar"&gt;Tar
&lt;a class="header-link" href="#tar"&gt;&lt;svg class="fill-current o-60 hover-accent-color-light" height="22px" viewBox="0 0 24 24" width="22px" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M0 0h24v24H0z" fill="none"/&gt;&lt;path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/&gt;&lt;/svg&gt;&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;Insert &lt;a href="https://xkcd.com/1168/" target="_blank" rel="noreferrer noopener"&gt;XKCD 1168&lt;/a&gt;, hur dur!&lt;/p&gt;</description></item><item><title>Installing Burp Certificate Authority in Windows Certificate Store</title><link>https://parsiya.net/blog/2016-02-21-installing-burp-certificate-authority-in-windows-certificate-store/</link><pubDate>Sun, 21 Feb 2016 14:42:41 -0500</pubDate><guid>https://parsiya.net/blog/2016-02-21-installing-burp-certificate-authority-in-windows-certificate-store/</guid><description>&lt;p&gt;I was writing another blog post and I realized that I keep repeating how to do the same things, so I decided to write some tutorial-ish things and just link them.&lt;/p&gt;
&lt;p&gt;Burp uses custom certificates to Man-in-the-Middle (MitM) the traffic. All of these certificates are signed by Burp's root Certificate Authority (CA). Each installation of Burp generates its own root CA that needs to be installed in the browser or Operating System's certificate store to be recognized properly. Otherwise browsers will return warnings and some thick client applications will not recognize these certificates as valid.&lt;/p&gt;
&lt;p&gt;Each installation of Burp generates its own root CA so it is unlikely that others can gain access to it and sign certificates to MitM your connection. To get the certificate's private key, the attackers need to get to your local machine and if so they have better ways to look at your traffic anyway.&lt;/p&gt;
&lt;p&gt;Alternate instructions by Portswigger: &lt;a href="https://support.portswigger.net/customer/en/portal/articles/1783075-installing-burp-s-ca-certificate-in-your-browser" target="_blank" rel="noreferrer noopener"&gt;https://support.portswigger.net/customer/en/portal/articles/1783075-installing-burp-s-ca-certificate-in-your-browser&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For instructions on installing/removing Burp's CA in other browsers and devices please use Portswigger's website: &lt;a href="https://support.portswigger.net/customer/en/portal/articles/1783075-installing-burp-s-ca-certificate-in-your-browser" target="_blank" rel="noreferrer noopener"&gt;https://support.portswigger.net/customer/en/portal/articles/1783075-installing-burp-s-ca-certificate-in-your-browser&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: These instructions are for Burp version 1.6.37 Pro and 1.6.32 Free. As long as I remember (v1.5) these instructions have not changed, although they may change in the future but I really doubt it.&lt;/p&gt;</description></item><item><title>Archive Page in Hugo</title><link>https://parsiya.net/blog/2016-02-14-archive-page-in-hugo/</link><pubDate>Sun, 14 Feb 2016 20:52:45 -0500</pubDate><guid>https://parsiya.net/blog/2016-02-14-archive-page-in-hugo/</guid><description>&lt;p&gt;This is a re-hash of my answer on Hugo forums about creating a custom archive page. You can see the answer &lt;a href="https://discuss.gohugo.io/t/blog-archives-page/2577/16" target="_blank" rel="noreferrer noopener"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Creating a custom archive page in Hugo is pretty simple. I think there are better ways to do this but this works as of version 0.15.&lt;/p&gt;</description></item><item><title>From Octopress to Hugo</title><link>https://parsiya.net/blog/2016-02-02-from-octopress-to-hugo/</link><pubDate>Tue, 02 Feb 2016 22:58:26 -0500</pubDate><guid>https://parsiya.net/blog/2016-02-02-from-octopress-to-hugo/</guid><description>&lt;p&gt;In &lt;a href="https://parsiya.net/blog/2016-01-31-why-hugo/" title="Why Hugo?"&gt;my previous post&lt;/a&gt; I talked about why I moved from Octopress to Hugo. You can also see the last archive of my Octopress blog (previously a private repo on Bitbucket) on &lt;a href="https://github.com/parsiya/Octopress-Blog" target="_blank" rel="noreferrer noopener"&gt;github&lt;/a&gt; and this is the new site. If I had wanted to use an already existing Hugo theme, it would have not taken more than a few hours.&lt;/p&gt;
&lt;p&gt;In this post I am going to talk about how I managed the migration and any interesting things that I encountered in the process. I will also introduce the &lt;a href="https://github.com/parsiya/hugo-octopress/" target="_blank" rel="noreferrer noopener"&gt;Hugo-Octopress&lt;/a&gt; theme (you are looking at it), which is the classic Octopress theme ported to Hugo. If you like what you see, please go ahead and use it. If there are any issues please use the &lt;a href="https://github.com/parsiya/Hugo-Octopress/issues" target="_blank" rel="noreferrer noopener"&gt;Github issue tracker&lt;/a&gt; or contact me another way. I will try my best to fix them but please remember that I am not a developer and do not know much about css :).&lt;/p&gt;</description></item><item><title>Why Hugo?</title><link>https://parsiya.net/blog/2016-01-31-why-hugo/</link><pubDate>Sun, 31 Jan 2016 20:22:19 -0500</pubDate><guid>https://parsiya.net/blog/2016-01-31-why-hugo/</guid><description>&lt;p&gt;As you may have noticed (well no one reads this so I am fine), I have moved from &lt;a href="http://octopress.org" target="_blank" rel="noreferrer noopener"&gt;Octopress&lt;/a&gt; to &lt;a href="https://gohugo.io" target="_blank" rel="noreferrer noopener"&gt;Hugo&lt;/a&gt;. I have been trying to make this change for a while but due to laziness and some other matters it did not happen. I am going to talk about why I decided on the move and what I did. In then ext post I will talk about my migration from Octopress to Hugo.&lt;/p&gt;</description></item><item><title>Intro to .NET Remoting for Hackers</title><link>https://parsiya.net/blog/2015-11-14-intro-to-.net-remoting-for-hackers/</link><pubDate>Sat, 14 Nov 2015 16:22:36 +0000</pubDate><guid>https://parsiya.net/blog/2015-11-14-intro-to-.net-remoting-for-hackers/</guid><description>&lt;p&gt;This is a simple tutorial about &lt;a href="https://msdn.microsoft.com/en-us/library/kwdt6w2k%28v=vs.71%29.aspx" target="_blank" rel="noreferrer noopener"&gt;.NET Remoting&lt;/a&gt;. I am going to re-create a very simple RCE and local privilege escalation that I encountered in my projects and use it to explain .NET Remoting and simple debugging in &lt;code&gt;dnSpy&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In this post we will:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Do a brief introduction to .NET Remoting&lt;/li&gt;
&lt;li&gt;Develop a simple .NET Remoting client and a vulnerable server in Visual Studio&lt;/li&gt;
&lt;li&gt;Observe .NET Remoting traffic&lt;/li&gt;
&lt;li&gt;See .NET Remoting in action by doing some basic debugging with dnSpy&lt;/li&gt;
&lt;li&gt;Re-create the vulnerable application&lt;/li&gt;
&lt;li&gt;Use dnSpy to patch and create modified .NET modules to exploit our sample vulnerable server&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you know of any applications that use .NET Remoting please let me know. I want to look at them.&lt;/p&gt;
&lt;p&gt;Code is at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/net-remoting" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/net-remoting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Proxying Hipchat Part 3: SSL Added and Removed Here :^)</title><link>https://parsiya.net/blog/2015-10-19-proxying-hipchat-part-3-ssl-added-and-removed-here/</link><pubDate>Mon, 19 Oct 2015 21:42:10 +0000</pubDate><guid>https://parsiya.net/blog/2015-10-19-proxying-hipchat-part-3-ssl-added-and-removed-here/</guid><description>&lt;p&gt;Finally we are at part 3 of proxying Hipchat. This has been quite the adventure. In &lt;a href="https://parsiya.net/blog/2015-10-08-proxying-hipchat-part-1-where-did-the-traffic-go/" title="Proxying Hipchat Part 1: Where did the Traffic Go?"&gt;&lt;strong&gt;part1&lt;/strong&gt;&lt;/a&gt; we identified the endpoints. In &lt;a href="https://parsiya.net/blog/2015-10-09-proxying-hipchat-part-2-so-you-think-you-can-use-burp/" title="Proxying Hipchat Part 2: So You Think You Can Use Burp?"&gt;&lt;strong&gt;part2&lt;/strong&gt;&lt;/a&gt; we answered the question “So you think you can use Burp” with yes and proxied some of Hipchat's traffic with Burp.&lt;/p&gt;
&lt;p&gt;In this part we will talk about developing our own proxy in Python to view Hipchat's traffic to/form &lt;code&gt;hipchatserver.com&lt;/code&gt; (our example Hipchat server). First we are going to discuss how proxies work and we will get over Burp breaking our heart by creating our own proxy in Python to observe and dump the traffic in plaintext.&lt;/p&gt;
&lt;p&gt;Related (crappy) code is at now in my clone at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/hipchat-proxy" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/hipchat-proxy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For a similar effort (although with a much more complex proxy in &lt;code&gt;erlang&lt;/code&gt;) look at &lt;a href="http://blog.silentsignal.eu/2015/10/02/proxying-nonstandard-https-traffic/" target="_blank" rel="noreferrer noopener"&gt;http://blog.silentsignal.eu/2015/10/02/proxying-nonstandard-https-traffic/&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Proxying Hipchat Part 2: So You Think You Can Use Burp?</title><link>https://parsiya.net/blog/2015-10-09-proxying-hipchat-part-2-so-you-think-you-can-use-burp/</link><pubDate>Fri, 09 Oct 2015 22:34:37 +0000</pubDate><guid>https://parsiya.net/blog/2015-10-09-proxying-hipchat-part-2-so-you-think-you-can-use-burp/</guid><description>&lt;p&gt;In &lt;a href="https://parsiya.net/blog/2015-10-08-proxying-hipchat-part-1-where-did-the-traffic-go/" title="Proxying Hipchat Part 1: Where did the Traffic Go?"&gt;&lt;strong&gt;part1&lt;/strong&gt;&lt;/a&gt; I talked about identifying Hipchat endpoints and promised to discuss proxying the application. In this post I will show how to proxy &lt;em&gt;some&lt;/em&gt; of Hipchat's traffic using Burp.&lt;/p&gt;
&lt;p&gt;This is specific to Hipchat client for Windows. The current version at the time of writing was is &lt;strong&gt;2.2.1361&lt;/strong&gt;. Atlassian is skipping version 3 and version 4 still in beta.&lt;/p&gt;</description></item><item><title>Proxying Hipchat Part 1: Where did the Traffic Go?</title><link>https://parsiya.net/blog/2015-10-08-proxying-hipchat-part-1-where-did-the-traffic-go/</link><pubDate>Thu, 08 Oct 2015 23:05:24 +0000</pubDate><guid>https://parsiya.net/blog/2015-10-08-proxying-hipchat-part-1-where-did-the-traffic-go/</guid><description>&lt;p&gt;This is a slightly different version of a series of blog post that I wrote on our internal blog about proxying. I see that proxying traffic is a time consuming step in testing thick client applications so I thought I would share what I know. I tackled Hipchat. Why Hipchat? Because it uses a known protocol (XMPP) and I thought it's an interesting application.&lt;/p&gt;
&lt;p&gt;I used Hipchat Windows client version 2. At the time of writing version 4 is in beta. In this part we will see how we can identify endpoints from traffic captures even when they are behind a load balancer/shared hosting etc. In next parts we will start proxying.&lt;/p&gt;</description></item><item><title>Network Traffic Attribution on Windows</title><link>https://parsiya.net/blog/2015-08-01-network-traffic-attribution-on-windows/</link><pubDate>Sat, 01 Aug 2015 19:37:42 +0000</pubDate><guid>https://parsiya.net/blog/2015-08-01-network-traffic-attribution-on-windows/</guid><description>&lt;p&gt;Thick client assessments come in different flavors. Most of our work is on
&lt;code&gt;consumer applications&lt;/code&gt; where &lt;code&gt;consumer&lt;/code&gt; means either the customer or an
employee of our client. But these applications usually have network
communications.&lt;/p&gt;
&lt;p&gt;When looking at thick client applications from a network traffic perspective, we
face two big challenges:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Traffic Attribution&lt;/strong&gt; or &lt;strong&gt;Where does this traffic come from?&lt;/strong&gt;: How to we
identify application's traffic? The operating system (in this case Windows)
is running many applications and services. Each of them may have network
connectivity.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Proxying Traffic&lt;/strong&gt; or &lt;strong&gt;How do I look view/modify traffic?&lt;/strong&gt;: This is more
challenging and involves capturing, modifying and in a lot of cases
decrypting/decoding target application's traffic. This could be as easy as
setting up Burp via an application setting (EZ-mode) or as hard as setting up
your own access point to capture a device's traffic then developing your own
decryption plugin for your proxy tool (good luck).&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In this post, I will be talking about the much easier first challenge. I will be
talking about some of the tools and techniques that I use to accomplish this.
This is not a groundbreaking post ;). We will use a simple application, in this
case &lt;code&gt;notepad++&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Image Popup and Octopress</title><link>https://parsiya.net/blog/2015-07-26-image-popup-and-octopress/</link><pubDate>Sun, 26 Jul 2015 23:02:58 +0000</pubDate><guid>https://parsiya.net/blog/2015-07-26-image-popup-and-octopress/</guid><description>&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: I have migrated the blog to &lt;a href="https://gohugo.io" target="_blank" rel="noreferrer noopener"&gt;Hugo&lt;/a&gt; and I do not use this anymore. However, it is still in the repository.&lt;/p&gt;
&lt;p&gt;I finally realized that I need an image popup plugin. The image plugins that I usually use do not support this. They are fine for normal images but not for larger ones. When I see a screenshot of a tool, I want to be able to zoom in. In my quest I looked at a few plugins and methods and finally decided to use &lt;a href="https://github.com/ctdk/octopress-image-popup" target="_blank" rel="noreferrer noopener"&gt;https://github.com/ctdk/octopress-image-popup&lt;/a&gt;. It creates resized thumbnails automatically and the installation procedure is short and simple.&lt;/p&gt;
&lt;p&gt;However, it did not work for me out of the box. I created a test post with just an image and while the plugin worked, there are things that I did not like about it.&lt;/p&gt;</description></item><item><title>Tales from the Crypt(o) - Leaking AES Keys</title><link>https://parsiya.net/blog/2015-01-06-tales-from-the-crypto-leaking-aes-keys/</link><pubDate>Tue, 06 Jan 2015 23:36:48 +0000</pubDate><guid>https://parsiya.net/blog/2015-01-06-tales-from-the-crypto-leaking-aes-keys/</guid><description>&lt;p&gt;This post is part one of a two part internal blog entry on creating a Pintool for an assessment. Unfortunately I cannot talk about it, so I decided to put the first part out. If I find an opensource program similar to the assessment I will try and recreate the tool (but I am not holding my breath). As this part is essentially a build up, it may not be coherent at times. Alteratively, if you really want to read it, you can join us. We are almost always hiring (let me do the referral though ;).&lt;/p&gt;
&lt;p&gt;Today we are going to talk about discovering encryption keys in sneaky ways. We will start with simple examples, do a bit of Digital Forensics or DF (for low standards of DF) and finally in part two we will use our recently acquired knowledge of Pintool to do &lt;code&gt;[redacted]&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;First let's talk a bit about the inner-workings of AES decryption. By inner-workings of AES I do not mean the following diagrams that you have seen so many times.&lt;/p&gt;</description></item><item><title>Pin Adventures - Chapter 1 - PinSolver Mk1</title><link>https://parsiya.net/blog/2014-12-08-pin-adventures-chapter-1-pinsolver-mk1/</link><pubDate>Mon, 08 Dec 2014 20:46:59 +0000</pubDate><guid>https://parsiya.net/blog/2014-12-08-pin-adventures-chapter-1-pinsolver-mk1/</guid><description>&lt;p&gt;While writing the writeups for the &lt;a href="http://parsiya.net/blog/2014-10-07-my-adventure-with-fireeye-flare-challenge/#ch6" target="_blank" rel="noreferrer noopener"&gt;Flare On Challenge 6&lt;/a&gt; I came upon &lt;a href="http://gaasedelen.blogspot.com/2014/09/solving-fireeyes-flare-on-six-via-side.html" target="_blank" rel="noreferrer noopener"&gt;an alternative solution&lt;/a&gt; by &lt;a href="https://twitter.com/gaasedelen" target="_blank" rel="noreferrer noopener"&gt;@gaasedelen&lt;/a&gt; to use the number of executed instructions as a side-channel. Recently during an engagement I used &lt;a href="https://software.intel.com/en-us/articles/pintool" target="_blank" rel="noreferrer noopener"&gt;Pintool&lt;/a&gt; to do &lt;code&gt;[redacted]&lt;/code&gt;. Now that I have a bit of time, I decided to use the idea to write such a tool.&lt;/p&gt;
&lt;p&gt;As an example, we will use a C program that checks input for a hardcoded value using &lt;code&gt;strncmp&lt;/code&gt;. We want to see if it's vulnerable to this side-channel (number of executed instructions).&lt;/p&gt;</description></item><item><title>Building memfetch on Kali + Comments</title><link>https://parsiya.net/blog/2014-11-18-building-memfetch-on-kali--comments/</link><pubDate>Tue, 18 Nov 2014 23:21:01 +0000</pubDate><guid>https://parsiya.net/blog/2014-11-18-building-memfetch-on-kali--comments/</guid><description>&lt;p&gt;I've used Disqus to add comments. At the moment, guests can comment and comments
do not need to be approved (unless they have links). Hopefully there won't be
much spam to sink the occasional comment that I think will be posted.&lt;/p&gt;
&lt;p&gt;Update from 2020: Comments without approval were a mistake. I got so much spam
and harassment.&lt;/p&gt;
&lt;p&gt;Note: I just wanted to make it work in a hurry. There are probably better ways
of doing this.&lt;/p&gt;
&lt;p&gt;I stumbled upon the very useful tool
&lt;a href="http://lcamtuf.coredump.cx/soft/memfetch.tgz" target="_blank" rel="noreferrer noopener"&gt;memfetch&lt;/a&gt; by the talented
&lt;em&gt;lcamtuf&lt;/em&gt;. The utility is quite old (from 2003 if I recall correctly) and I
could not build it using the provided makefile.&lt;/p&gt;</description></item><item><title>My Adventure with Fireeye FLARE Challenge</title><link>https://parsiya.net/blog/2014-09-23-my-adventure-with-fireeye-flare-challenge/</link><pubDate>Tue, 23 Sep 2014 02:31:44 +0000</pubDate><guid>https://parsiya.net/blog/2014-09-23-my-adventure-with-fireeye-flare-challenge/</guid><description>&lt;p&gt;These are my (rather long) solutions to Fireeye's FLARE challenge. This is just not the solution but other ways that I tried. This was a great learning experience for me so I am writing this post to document everything I tried. As a result, this post is somewhat long.&lt;/p&gt;
&lt;p&gt;If you have any feedback, please let me know. I spent a lot of time on this writeup and I am always happy to learn new stuff. My email and twitter handle are in the sidebar.&lt;/p&gt;
&lt;p&gt;I am a bit late to the party. There &lt;del&gt;were two&lt;/del&gt; are now other three solutions posted (that I know of). Check them out.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.codeandsec.com/Detailed-Solutions-to-FireEye-FLARE-Challenge" target="_blank" rel="noreferrer noopener"&gt;Detailed Solutions to FireEye FLARE Challenge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ghettoforensics.com/2014/09/a-walkthrough-for-flare-re-challenges.html" target="_blank" rel="noreferrer noopener"&gt;A Walk through for FLARE RE Challenges&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The FLARE On Challenge Solutions by Fireye
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.fireeye.com/blog/technical/cyber-exploits/2014/11/the-flare-on-challenge-solutions-part-1-of-2.html" target="_blank" rel="noreferrer noopener"&gt;Part 1 - solutions for challenges 1 to 5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fireeye.com/blog/threat-research/2014/11/flare_on_challengep.html" target="_blank" rel="noreferrer noopener"&gt;Part 2 - solutions for challenges 6 and 7&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Malware Adventure</title><link>https://parsiya.net/blog/2014-09-21-malware-adventure/</link><pubDate>Sun, 21 Sep 2014 19:11:43 +0000</pubDate><guid>https://parsiya.net/blog/2014-09-21-malware-adventure/</guid><description>&lt;p&gt;&lt;strong&gt;Update 28 Oct 2017:&lt;/strong&gt;\
I have moved most of my code under one repository. Malware adventure is copied at two places:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/malwareadventure" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/malwareadventure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/parsiya/Parsia-Code/tree/master/malware-adventure" target="_blank" rel="noreferrer noopener"&gt;https://github.com/parsiya/Parsia-Code/tree/master/malware-adventure&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A fork of PAWS is here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Moonbase59/PAWS" target="_blank" rel="noreferrer noopener"&gt;https://github.com/Moonbase59/PAWS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;I finally caved in and started to push some of my code to &lt;del&gt;github&lt;/del&gt; bitbucket. It is located at &lt;a href="https://bitbucket.org/parsiya" target="_blank" rel="noreferrer noopener"&gt;https://bitbucket.org/parsiya&lt;/a&gt; and is almost empty ;).&lt;/p&gt;
&lt;p&gt;This is Malware Adventure. It's a small adventure game I wrote using PAWS. PAWS is Pyhton Adventure Writing System by Roger Plowman. Get it from &lt;a href="http://home.fuse.net/wolfonenet/PAWS.htm" target="_blank" rel="noreferrer noopener"&gt;http://home.fuse.net/wolfonenet/PAWS.htm&lt;/a&gt;. It's great.&lt;/p&gt;</description></item><item><title>Fireeye's FLARE Challenge</title><link>https://parsiya.net/blog/2014-09-02-fireeyes-flare-challenge/</link><pubDate>Tue, 02 Sep 2014 00:34:00 +0000</pubDate><guid>https://parsiya.net/blog/2014-09-02-fireeyes-flare-challenge/</guid><description>&lt;p&gt;It's been a while. I know I should have updated more frequently but lazyness prevails.&lt;br&gt;
Anyway, I was busy doing Fireeye's FlARE challenges for a month or so (it was depressing to see people finish in 10 hours :). You can find the challenges at &lt;a href="http://flare-on.com" target="_blank" rel="noreferrer noopener"&gt;http://flare-on.com&lt;/a&gt;. I learned a lot doing them. They will release solutions in 2 weeks. I am also working on a writeup which I will release then. I think it will be interesting as it will be a n00b's perspective.&lt;/p&gt;</description></item><item><title>Apple's Common Crypto Library Defaults to a Zero IV if One is not Provided</title><link>https://parsiya.net/blog/2014-07-03-apples-common-crypto-library-defaults-to-a-zero-iv-if-one-is-not-provided/</link><pubDate>Thu, 03 Jul 2014 01:30:18 +0000</pubDate><guid>https://parsiya.net/blog/2014-07-03-apples-common-crypto-library-defaults-to-a-zero-iv-if-one-is-not-provided/</guid><description>&lt;p&gt;Today I was writing some guidelines about generating keys for mobile applications at work. While providing code examples in Java and Obj-C for AES encryption I happened to look at Apple's [Common Crypto] &lt;a href="http://opensource.apple.com/source/CommonCrypto/CommonCrypto-60049/lib/" target="_blank" rel="noreferrer noopener"&gt;CCLink&lt;/a&gt; library . While going through the source code for [CommonCryptor.c] &lt;a href="http://opensource.apple.com/source/CommonCrypto/CommonCrypto-60049/lib/CommonCryptor.c" target="_blank" rel="noreferrer noopener"&gt;CCLink2&lt;/a&gt;, I noticed that IV is commented as &lt;code&gt;/* optional initialization vector */&lt;/code&gt;. This makes sense because not all ciphers use IV and not all AES modes of operation (e.g. ECB mode). However; if an IV is not provided, the library will default to a zero IV.&lt;/p&gt;</description></item><item><title>Piping SSL/TLS Traffic from SoapUI to Burp</title><link>https://parsiya.net/blog/2014-06-25-piping-ssl/tls-traffic-from-soapui-to-burp/</link><pubDate>Wed, 25 Jun 2014 22:04:53 +0000</pubDate><guid>https://parsiya.net/blog/2014-06-25-piping-ssl/tls-traffic-from-soapui-to-burp/</guid><description>&lt;p&gt;Recently I was trying to test a web service. The traffic was over SSL/TLS and everything was fine. As I am better with Burp than SoapUI, I wanted to use Burp as a proxy for SoapUI. This should be an easy matter. Burp will create a custom certificate (signed by its root CA) for each site and effectively Man-in-the-Middle the connection. But this time it was different, I was getting the dreaded &lt;code&gt;Peer not Authenticated&lt;/code&gt; error. This meant that SoapUI did not recognize Burp's custom certificate.&lt;/p&gt;</description></item><item><title>Pasting Shellcode in GDB using Python</title><link>https://parsiya.net/blog/2014-05-25-pasting-shellcode-in-gdb-using-python/</link><pubDate>Sun, 25 May 2014 18:39:58 +0000</pubDate><guid>https://parsiya.net/blog/2014-05-25-pasting-shellcode-in-gdb-using-python/</guid><description>&lt;p&gt;A few days ago I was trying to write an exploit for a buffer overflow with GDB. This was a console application and pasting shellcode would mess with it.&lt;/p&gt;
&lt;p&gt;There are a few options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Writing shellcode to a file and then using it as input for GDB.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#586e75"&gt;# you can also include GDB commands like setting up breakpoints (e.g. b * 0xDEADBEEF)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#586e75"&gt;# remember to include a new line after each command&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ python &lt;span style="color:#719e07"&gt;-&lt;/span&gt;c &lt;span style="color:#2aa198"&gt;&amp;#39;print &amp;#34;b * 0xDEADBEEF&amp;#34; + &amp;#34;&lt;/span&gt;&lt;span style="color:#cb4b16"&gt;\n&lt;/span&gt;&lt;span style="color:#2aa198"&gt;&amp;#34; + &amp;#34;&lt;/span&gt;&lt;span style="color:#cb4b16"&gt;\x41&lt;/span&gt;&lt;span style="color:#2aa198"&gt;&amp;#34;*1000 + &amp;#34;&lt;/span&gt;&lt;span style="color:#cb4b16"&gt;\n&lt;/span&gt;&lt;span style="color:#2aa198"&gt;&amp;#34;&amp;#39;&lt;/span&gt; &lt;span style="color:#719e07"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#b58900"&gt;input&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#586e75"&gt;# $ perl -e for perl&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#586e75"&gt;# start debugging with GDB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#586e75"&gt;# -q (quiet mode): no text at startup&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ gdb executable1 &lt;span style="color:#719e07"&gt;-&lt;/span&gt;q
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(gdb) run &lt;span style="color:#719e07"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#b58900"&gt;input&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After this you can manually debug in GDB.&lt;/p&gt;</description></item><item><title>Amazon S3 and CSS</title><link>https://parsiya.net/blog/2014-04-22-amazon-s3-and-css/</link><pubDate>Tue, 22 Apr 2014 14:03:32 +0000</pubDate><guid>https://parsiya.net/blog/2014-04-22-amazon-s3-and-css/</guid><description>&lt;p&gt;After I deployed my blog to Amazon S3, I realized that there was no CSS applied to the pages. In Octopress, the look and feel of website is managed by &lt;code&gt;stylesheets/screen.css&lt;/code&gt;. It was fine in &lt;code&gt;rake preview&lt;/code&gt; but not on the S3 bucket. I looked around for a few hours to no avail. There was one other person who had the same issue on [stackoverflow] &lt;a href="http://stackoverflow.com/questions/17138615/discrepency-in-rake-preview-vs-rake-deploy" target="_blank" rel="noreferrer noopener"&gt;stackoverflowlink&lt;/a&gt; but no answers. Relevant [xkcd] &lt;a href="https://xkcd.com/979/" target="_blank" rel="noreferrer noopener"&gt;xkcdlink&lt;/a&gt;:&lt;/p&gt;</description></item><item><title>Now hosted on Amazon S3</title><link>https://parsiya.net/blog/2014-04-20-now-hosted-on-amazon-s3/</link><pubDate>Sun, 20 Apr 2014 13:20:24 +0000</pubDate><guid>https://parsiya.net/blog/2014-04-20-now-hosted-on-amazon-s3/</guid><description>&lt;p&gt;I moved my blog from Bluehost to Amazon S3. I have not used Cloudfront yet, I doubt my blog has any visitors to justify that.&lt;/p&gt;
&lt;p&gt;It was really easy to redirect everything to &lt;a href="http://www.cryptogangsta.com" target="_blank" rel="noreferrer noopener"&gt;cryptogangsta.com&lt;/a&gt;. &lt;a href="http://parsiya.net" target="_blank" rel="noreferrer noopener"&gt;parsiya.net&lt;/a&gt;, &lt;a href="http://www.parsiya.net" target="_blank" rel="noreferrer noopener"&gt;www.parsiya.net&lt;/a&gt; and &lt;a href="http://www.cryptogangsta.com" target="_blank" rel="noreferrer noopener"&gt;www.cryptogangsta.com&lt;/a&gt; should all point to cryptogangsta.com.&lt;/p&gt;
&lt;p&gt;I have decided (for n-th time) to start updating this blog. Hopefully I will do it this time, I have some ideas to keep this blog running ;).&lt;/p&gt;</description></item><item><title>How do I TLS Ciphersuite?</title><link>https://parsiya.net/blog/2013-11-17-how-do-i-tls-ciphersuite/</link><pubDate>Sun, 17 Nov 2013 00:00:00 +0000</pubDate><guid>https://parsiya.net/blog/2013-11-17-how-do-i-tls-ciphersuite/</guid><description>&lt;p&gt;“Should we use RC4 or AES-CBC ?”
This is a legitimate question. Many have heard of the highly publicized attacks against AES-CBC (CRIME, BEAST etc) and lean towards RC4.
If asked (granted no one asks me), my answer would be: If you can control web servers (not feasible in all situations) and users' browsers
(almost impossible), upgrade to TLS 1.2 and go with AES-GCM. However, not many browsers supported these and to be honest, more users trumps loss
of security in many cases.&lt;/p&gt;</description></item><item><title>Microsoft Bluehat Challenges</title><link>https://parsiya.net/blog/2013-09-29-microsoft-bluehat-challenges/</link><pubDate>Sun, 29 Sep 2013 00:00:00 +0000</pubDate><guid>https://parsiya.net/blog/2013-09-29-microsoft-bluehat-challenges/</guid><description>&lt;p&gt;Microsoft has released their Bluehat challenges. You answer the challenge,
send it out and if correct they will send the next level (at least that is
what they say).&lt;/p&gt;
&lt;p&gt;There are three categories: Reverse Engineering, Web and Vulnerabilities.&lt;/p&gt;
&lt;p&gt;The first Reverse Engineering challenge was quite easy. But it was level 1
and I do not expect anti-debugging techniques. Let's see about the next level.&lt;/p&gt;
&lt;p&gt;Anyway, Enjoy. &lt;a href="https://www.microsoft.com/security/msrc/collaboration/bluehatchallenge.aspx" target="_blank" rel="noreferrer noopener"&gt;Linkie&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Snow Crash and Malware</title><link>https://parsiya.net/blog/2013-09-23-snow-crash-and-malware/</link><pubDate>Mon, 23 Sep 2013 00:00:00 +0000</pubDate><guid>https://parsiya.net/blog/2013-09-23-snow-crash-and-malware/</guid><description>&lt;p&gt;So I finished &amp;quot;Snow Crash&amp;quot; and it was quite nice. The concept of linguistic malware was interesting and ahead of its time.
I noticed that the term &amp;quot;Virus&amp;quot; was used correctly in the book as the malware
was not propagating between people (then it would become a worm).
Although I suspect it was due to the fact that most people (read almost everyone)
calls any malware a &amp;quot;virus&amp;quot;. Nevertheless, it was a very enjoyable read.&lt;/p&gt;</description></item><item><title>Update Inc</title><link>https://parsiya.net/blog/2013-09-20-update-inc/</link><pubDate>Fri, 20 Sep 2013 00:00:00 +0000</pubDate><guid>https://parsiya.net/blog/2013-09-20-update-inc/</guid><description>&lt;p&gt;So, I transferred my domain from my last provider, it has not taken effect yet.
Also, I need to start populating the website with relevant stuff. Hang on, I will be back &lt;strong&gt;soon ™&lt;/strong&gt;!&lt;/p&gt;</description></item><item><title>MarkDown and Cookie Clicker</title><link>https://parsiya.net/blog/2013-09-15-markdown-and-cookie-clicker/</link><pubDate>Sun, 15 Sep 2013 00:00:00 +0000</pubDate><guid>https://parsiya.net/blog/2013-09-15-markdown-and-cookie-clicker/</guid><description>&lt;p&gt;Markdown looks like an easy-ish language to start (probably not so easy to master of course).
Although compared to writing LaTeX source, it is a breeze. During my last year at JHU I started writing the reports and what not directly into LaTeX,
I think using MarkDown for blogging and MS Office at work is going to take away my old skills.&lt;/p&gt;
&lt;p&gt;On a side note, I am now up to around 500 million cookies per second (CpS) in
&lt;strong&gt;&lt;a href="http://orteil.dashnet.org/cookieclicker/" target="_blank" rel="noreferrer noopener"&gt;Cookie Clicker&lt;/a&gt;&lt;/strong&gt;. I was stuck at 200 million CpS for a week or so until I could start making Antimatter Condensers. I may have missed them before
as they were not visible in the side-bar and I had to scroll down to see them.&lt;/p&gt;</description></item><item><title>Hello Octopress</title><link>https://parsiya.net/blog/2013-09-14-hello-octopress/</link><pubDate>Sat, 14 Sep 2013 00:00:00 +0000</pubDate><guid>https://parsiya.net/blog/2013-09-14-hello-octopress/</guid><description>&lt;p&gt;** Octopress is here **&lt;/p&gt;
&lt;p&gt;To be honest setting it up took a while (I had this feeling that I should set it up on my host but well let's say I am a n00b and am allowed to make mistakes) :D&lt;/p&gt;
&lt;p&gt;Now I have to learn markdown which is probably a good thing, unless I can write blog posts in different formats. Note to self: search to see if we can write blogs in LaTeX. That would be too geeky.&lt;/p&gt;</description></item><item><title>Who is this guy?</title><link>https://parsiya.net/about/</link><pubDate>Tue, 01 Jan 2013 21:40:56 -0500</pubDate><guid>https://parsiya.net/about/</guid><description>&lt;p&gt;I am Parsia, I try to do security most days.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2024-Present&lt;/strong&gt;: Senior Offensive Security Engineer at Microsoft. Ignore my
title, I am an application security engineer :).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2022-2024&lt;/strong&gt;: Sabbatical. Dev contract work for a static analysis tool that
automatically generates an OpenAPI spec from the backend source code. Some
security research, mainly static analysis and Rust. See
&lt;a href="https://github.com/parsiya/personal-semgrep-server" target="_blank" rel="noreferrer noopener"&gt;Personal Semgrep Server in Rust&lt;/a&gt;,
&lt;a href="https://github.com/parsiya/semgrep-rs" target="_blank" rel="noreferrer noopener"&gt;semgrep-rs: Rust crate to interact with Semgrep&lt;/a&gt;, and
&lt;a href="https://parsiya.net/categories/tree-sitter/" target="_blank" rel="noreferrer noopener"&gt;some tree-sitter stuff&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>All Posts</title><link>https://parsiya.net/archive/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://parsiya.net/archive/</guid><description/></item><item><title>License</title><link>https://parsiya.net/license/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://parsiya.net/license/</guid><description>&lt;p&gt;I want people to be able to use anything if they want to with attribution and without warranty. I think these licenses are appropriate. Please let me know if there are better licenses that achieve this goal.&lt;/p&gt;
&lt;h3 id="content-license"&gt;Content License
&lt;a class="header-link" href="#content-license"&gt;&lt;svg class="fill-current o-60 hover-accent-color-light" height="22px" viewBox="0 0 24 24" width="22px" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M0 0h24v24H0z" fill="none"/&gt;&lt;path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/&gt;&lt;/svg&gt;&lt;/a&gt;
&lt;/h3&gt;&lt;p&gt;Except where otherwise noted, &lt;strong&gt;my non-code content&lt;/strong&gt; on this website is licensed under a &lt;a rel="license" target="_blank" href="https://creativecommons.org/licenses/by-nc/4.0/"&gt;Creative Commons BY-NC 4.0&lt;/a&gt; (Creative Commons Attribution-Non Commercial 4.0).&lt;/p&gt;</description></item></channel></rss>