RSSAmplifier

Blog

Hackerman's Hacking Tutorials

Recent content on Hackerman's Hacking Tutorials

parsiya.netRSS feed ↗168 posts

Latest posts

Brain the Size of a Planet: Are LLMs Thonking too Hard?

It looks like higher reasoning effort (and even later models) are not always better for triaging security results. I continued Kurt's experiments from Needles and haystacks: Can open-source & flagship models do what Mythos did? with 26 distinct claude-4.6/4.7 and gpt-5.4/5.5 combinations with different context window sizes and reasoning efforts.

Harnessing the Wayward Machine-God, 1: Manual Markdown Cleanup Is a Bug

LLMs regularly ignore my Markdown instructions. As the I part of (A)I , I got tired and created some deterministic automation to format the output to my preferences. I will discuss the problem, our solutions, bugs, lessons learned, and the final product. I am going to try a new format here. This blog has the important stuff that I care about. This is for humans. All the AI discussions and the…

AI Borked my Keyboard - Reversing the Aula F108 Pro Software

I used GPT-5.4 and Claude Opus 4.6 to reverse engineer the Aula F108 Pro keyboard's software using Ghidra MCP. This is how I did it, what setbacks I had, and how (A)I borked the keyboard's screen despite constant supervision and review. A common issue with the keyboard is that it ACKs bad messages, then silently drops them. Did Gene Wolfe write this firmware? I also introduce the novel wording of…

Manual Context is a Bug

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 "SAST is dead." The war is, well. Welcome to the age of AI. In this blog I reflect on "Manual Work is a Bug" and on how AI has changed my workflow. I introduce the (not so novel concept) of "AI-Docs." A knowledge base for both humans…

AI-Native SARIF

The "radical" idea to add prompts and code context directly to SARIF files for AI triage.

WTF is ... - AI-Native SAST?

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). 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…

So You Wanna Use Your Own LLMs in GitHub Copilot Chat

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. Problem Statement GitHub Copilot Chat in VS Code (moving forward, called Chat 1 ) allows custom LLM deployments, but only supports API keys and not AAD/Entra ID. API keys are icky and not cool…

Kusto Detective Agency: Echoes of Deception - 0-8 Solves

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. 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…

How Burp AI Works

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. I covered a shorter version in my DEF CON 33 Bug Bounty Village talk The Year of the Bounty Desktop: Bugs from Binaries . See the extended slides (pages…

Kusto-Mice: Optimizing Kusto joins

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.

Steam's 'Open in Desktop' Button

This is not a bug, but some notes about the new Steam "Open in Desktop" button. I am going to show how to look for bugs in these kinds of browser-to-desktop interactions.

Knee Deep in tree-sitter CST

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). In the previous post , I focused on just using queries. While they're useful for finding specific nodes, they're not enough. Code is at https://github.com/parsiya/knee-deep-tree-sitter . Don't forget…

Knee Deep in tree-sitter Queries

tree-sitter 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. TL;DR : Queries are great for capturing text from code. But to extract anything moderately structured we need to traverse the syntax tree. And, yes, the title is based on Doom Episode 1 Knee…

A Few Fun Semgrep Experiments

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. The type of these experiments is inspired by Martin Jambon who is actually a core Semgrep developer. These are supposed to be self-contained but short experiments. You can see his at https://github.com/mjambon/dev-random .

Some SANS Holiday Hack 2023 Solutions

As is tradition, I started the SANS Holiday Hack and this time I almost did everything. Previous years' writeups: /categories/holiday-hack/ . Holiday Hack Orientation Picked up the fishing pole. Cranberry Pi: Type answer . Linux 101 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.

Semgrep's Experimental Rule Syntax

Semgrep has an experimental and (IMO) more readable rule syntax. I am converting my own reference into a tutorial.

Some SANS Holiday Hack 2022 Solutions

As is tradition, I started the SANS Holiday Hack and stopped midway. A very fun static analysis problem came along ;) Previous years' writeups: /categories/holiday-hack/ .

YAML Wrangling with Rust

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.

Code Review Hot Spots with Semgrep

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.

Security Nightmares of Game Package Managers

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 "game package managers" Origin and the EA App and we have our own unique issues.

Some SANS Holiday Hack 2021 Solutions

Here are some of my answers to the SANS Holiday Hack 2021. As usual, it's a pretty fun and accessible challenge. Previous writeups: SANS Holiday Hack 2018 Solutions Some SANS Holiday Hack 2019 Solutions Some SANS Holiday Hack 2020 Solutions

RCE in Visual Studio Code's Remote WSL for Fun and Negative Profit

The Visual Studio Code server in Windows Subsystem for Linux uses a local WebSocket WebSocket connection to communicate with the Remote WSL extension. JavaScript in websites can connect to this server and execute arbitrary commands on the target system. Assigned CVE-2021-43907 and zero bounty. I paid 5 USD for the EC2 machine hosting the proof-of-concept. It's really funny that PlayStation paid…

A Hands-On Intro to Semgrep's Autofix

Semgrep's experimental autofix 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. 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…

Modify GitLab Repositories from the CI Pipeline

You would think modifying a GitLab repository from its CI job should be straightforward. Well, it's not. Here's how I did it.

Attack Surface Analysis - Part 3 - Resurrected Code Execution

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 part 2 of the series . 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.

The Thick Client Vulns That Weren't

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. The Original Tweet Well, most of these are not vulnerabilities. So, I am compiling my tweets into a blog post. It's important that we only go after actual vulnerabilities and not spread misinformation. Funnily, I have talked about several of…

Semgrep: The Surgical Static Analysis Tool

Why are We Here? What this blog is about: Why I like Semgrep. Why I think you should use it. How I use Semgrep. What this blog is not about: What static analysis is. Semgrep tutorial.

The JavaScript Bridge in Modern Desktop Applications

We have an XSS in a desktop application, what happens next? How can you escalate it to remote code execution? Let's see.

Public Remote File Share in The Cloud

In Part 2 of the Attack Surface Analysis series I talked about how passing a remote file with a UNC path can lead to unexpected results. 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.

Testing Extensions in Chromium Browsers - Nordpass

Recently, I looked at the NordPass Password Manager browser extension . I could not find any guides on manual testing of browser extensions. I decided to write my own. So, here we are, "pushing the boundaries of science."

Attack Surface Analysis - Part 2 - Custom Protocol Handlers

Custom protocol handlers are an obscure attack surface. They allow us to convert local attacks into remote ones and are an alternative way to jump the browser sandbox without 0days ). Similar to the first part of this series A Novel Way to Bypass Executable Signature Checks with Electron I will analyze this attack surface and discuss a few interesting public bugs. I wanted to discuss two of my…

Automagically Deploying Websites with Custom Domains to GitHub Pages

Recently, I have started moving my non-critical websites to GitHub pages. I am documenting the process in one place for future me.

Some SANS Holiday Hack 2020 Solutions

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. Previous writeups: SANS Holiday Hack 2018 Solutions Some SANS Holiday Hack 2019 Solutions

Attack Surface Analysis - Part 1 - Application Update: 'A Novel Way to Bypass Executable Signature Checks with Electron'

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.

The $15000 PlayStation Bounty

Earlier in December 2020, my PlayStation Now report was disclosed. You can see the report at https://hackerone.com/reports/873614 . That is my first paid bounty and my first disclosed report. It was quite exciting. I doubt I can top it.

Customizing Python's SimpleHTTPServer

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.

The Same-Origin Policy Gone Wild

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 localghost talk.

localghost: Escaping the Browser Sandbox Without 0-Days

I had the hono(u)r of presenting in the DEF CON 28 Appsec village . Unfortunately, my super-duper awesome $15K PlayStation bug was not disclosed yet so I did not talk about it. Be sure to read it, it's great. Slides in PDF Youtube link: https://youtu.be/Cgl51ZcACLg?t=90

No, You Are Not Getting a CVE for That

An intentionally insecure system is insecure. As Raymond Chen says , "You can't make up for the absence of any actual vulnerability by piling on style points and cranking up the degree of difficulty."

Thick Client Proxying - Part 11 - GOG Galaxy and Extract-SNI

In this post we will use our knowledge from Thick Client Proxying - Part 10 - The hosts File to proxy GOG Galaxy 2. I will also introduce some automation to make our lives easier.

Go Slices and Their Oddities

A friend pointed me to this Go quiz about slices by Serge Gotsuliak . 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.

Thick Client Proxying - Part 10 - The hosts File

Welcome to the 10th installment of Thick Client Proxying . A series running since 2016. Woot! Today I will talk about traffic redirection using the hosts file.

Towards a Quieter Burp History

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.

The Encrypted Logz - Some Simple Reverse Engineering

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.

The Golang int and the Overlooked Bug

This blog is about a GitHub Security Lab Spot The Bug challenge that had an overlooked bug. Github Security Lab's Twitter account tweets code snippets from time to time. The challenge is to spot the bug. Disclosure : 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.

Time Management For Systems Administrators - Lessons Learned

A while ago I read Time Management for System Administrators by Tom Limoncelli . This blog is my reviewed notes. You can find my raw notes in my clone at: https://parsiya.io/automation/time-management-sysadmins-notes/ Tom is also the author of one of my favorite articles Manual Work is a Bug . I have written about it: Reflections on 'Manual Work is a Bug' The Dark Side of 'Manual Work is a Bug'

Old ContextIS Challenge Solutions

A few years ago I did the Context Information Security challenges. They used it for recruiting so I never published the results. However, they have now switched to Hack The Box and the old challenges are gone. So I am publishing what I did. You can see the page with the old challenges using the Wayback Machine at:…

Documentation Writing for System Administrators - Notes

These are my notes for the booklet Documentation Writing for System Administrtors . It's from 2003, so some of the tools and procedures are old. However, somethings never change and it's still useful. https://www.usenix.org/short-topics/documentation-writing-system-administrators

Some SANS Holiday Hack 2019 Solutions

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: SANS Holiday Hack 2018 Solutions

Using Mozilla Rhino to Run JavaScript in Java

This post discusses what I learned about executing JavaScript code in Java with Mozilla Rhino. By the end of this post, you will know: What Rhino is. How to use Rhino in your Java application (e.g., a Burp extension). Some tips and tricks when dealing with Rhino. Alternative options to using Rhino. Code is at: https://github.com/parsiya/Parsia-Code/tree/master/java-rhino