<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on THALIUM</title><link>/posts/</link><description>Recent content in Posts on THALIUM</description><generator>Hugo</generator><language>en-us</language><copyright>Copyright (c) 2026, all rights reserved.</copyright><lastBuildDate>Tue, 13 Jan 2026 00:00:00 +0000</lastBuildDate><atom:link href="/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Symless: an IDA assistant for structure reconstruction</title><link>/posts/symless-an-ida-assistant-for-structure-reconstruction/</link><pubDate>Tue, 13 Jan 2026 00:00:00 +0000</pubDate><guid>/posts/symless-an-ida-assistant-for-structure-reconstruction/</guid><description>&lt;p&gt;Symless is an IDA Pro plugin designed to assist with structure reconstruction and cross-reference placement. It comes in two flavors: an &lt;strong&gt;automatic pre-analysis&lt;/strong&gt; that can reconstruct most of the structures used in a binary, and an &lt;strong&gt;interactive plugin&lt;/strong&gt; that reconstructs a single structure from user selection.&lt;/p&gt;
&lt;p&gt;We are now releasing a &lt;strong&gt;new architecture-agnostic version&lt;/strong&gt; of Symless, and use this opportunity to describe its internal logic.&lt;/p&gt;</description></item><item><title>Don't judge an audiobook by its cover: taking over your Amazon account with a Kindle</title><link>/posts/dont-judge-an-audiobook-by-its-cover-taking-over-your-amazon-account-with-a-kindle/</link><pubDate>Tue, 16 Dec 2025 08:00:00 +0000</pubDate><guid>/posts/dont-judge-an-audiobook-by-its-cover-taking-over-your-amazon-account-with-a-kindle/</guid><description>&lt;p&gt;Although Kindle e-readers are a prime target in modding and jailbreaking communities, there is little public work about vulnerability research in remote code execution scenarios.&lt;/p&gt;
&lt;p&gt;In this post, we give technical details about a chain of vulnerabilities we identified that can be triggered by downloading a malicious Audible audiobook, allowing to take full control of the device and its registered Amazon account.&lt;/p&gt;</description></item><item><title>Linux kernel Rust module for rootkit detection</title><link>/posts/linux-kernel-rust-module-for-rootkit-detection/</link><pubDate>Wed, 12 Mar 2025 08:00:00 +0000</pubDate><guid>/posts/linux-kernel-rust-module-for-rootkit-detection/</guid><description>The introduction of Rust into the Linux kernel allows to write kernel drivers in Rust, which we can use to build a kernel-level EDR. This post explores this possibility by designing various checks to detect kernel-level rootkits and implementing them using the kernel&amp;rsquo;s Rust API. We then discuss the experience of developing in Rust within the Linux kernel.</description></item><item><title>LLVM-powered deobfuscation of virtualized binaries</title><link>/posts/llvm-powered-devirtualization/</link><pubDate>Fri, 22 Nov 2024 08:00:00 +0000</pubDate><guid>/posts/llvm-powered-devirtualization/</guid><description>Virtualization is a powerful technique for code obfuscation, and reversing it can be challenging. In this post, we cover the work done during an internship on developing an &lt;strong&gt;automated devirtualization tool&lt;/strong&gt;. We explore a simplified taint-based approach and discuss its limitations. For a more in-depth analysis, the full report is also made available.</description></item><item><title>Achieving Remote Code Execution in Steam: a journey into the Remote Play protocol</title><link>/posts/achieving-remote-code-execution-in-steam-remote-play/</link><pubDate>Mon, 04 Dec 2023 08:00:00 +0000</pubDate><guid>/posts/achieving-remote-code-execution-in-steam-remote-play/</guid><description>&lt;p&gt;&lt;em&gt;Remote Play Together&lt;/em&gt;, developed by Valve, allows sharing local multi-player games with friends over the network through streaming. The associated protocol is elaborate enough to shelter a valuable attack surface that has scarcely been ventured into in the past.&lt;/p&gt;
&lt;p&gt;This post covers the reverse engineering of the protocol and client/server implementations inside Steam, before presenting a dedicated fuzzer that unveiled a few critical vulnerabilities.&lt;/p&gt;</description></item><item><title>ECW 2023: Centralized Memory (write-up)</title><link>/posts/ecw-2023-centralized-memory-write-up/</link><pubDate>Tue, 07 Nov 2023 12:00:00 +0100</pubDate><guid>/posts/ecw-2023-centralized-memory-write-up/</guid><description>&lt;strong&gt;Centralized Memory&lt;/strong&gt; was a hard Linux pwn challenge created for the European Cyber Week CTF 2023 qualifiers. This write-up covers the intended method of exploitation through a race condition, an AES padding bug and a stack overflow.</description></item><item><title>ECW 2023: kaleidoscope (write-up)</title><link>/posts/ecw-2023-kaleidoscope-write-up/</link><pubDate>Tue, 07 Nov 2023 12:00:00 +0100</pubDate><guid>/posts/ecw-2023-kaleidoscope-write-up/</guid><description>&lt;strong&gt;kaleidoscope&lt;/strong&gt; was a hard reverse engineering challenge created for the European Cyber Week CTF 2023 qualifiers, with a focus on Windows-specific mechanisms and VM-based obfuscation.</description></item><item><title>ECW 2023: The Calculator in Shadow (write-up)</title><link>/posts/ecw-2023-the-calculator-in-shadow-write-up/</link><pubDate>Tue, 07 Nov 2023 12:00:00 +0100</pubDate><guid>/posts/ecw-2023-the-calculator-in-shadow-write-up/</guid><description>&lt;strong&gt;The Calculator in Shadow&lt;/strong&gt; was a hard pwn challenge created for the European Cyber Week CTF 2023 qualifiers. It included exploiting a RISC-V calculator running on top of a customized QEMU that featured a poorly implemented shadow stack.</description></item><item><title>Rooting Xiaomi WiFi Routers</title><link>/posts/rooting-xiaomi-wifi-routers/</link><pubDate>Mon, 25 Sep 2023 00:00:00 +0000</pubDate><guid>/posts/rooting-xiaomi-wifi-routers/</guid><description>In this article, we discuss our research approach for investigating Xiaomi routers. We discovered multiple vulnerabilities allowing Remote Code Execution (RCE) on several models, through both LAN and WAN interfaces. This work led to the publication of four CVEs specifically targeting Xiaomi routers.</description></item><item><title>Leveraging Android Permissions: A Solver Approach</title><link>/posts/leveraging-android-permissions/</link><pubDate>Tue, 20 Jun 2023 00:00:00 +0000</pubDate><guid>/posts/leveraging-android-permissions/</guid><description>&lt;p&gt;The Android permission management system has already suffered from several vulnerabilities in the past. Such weaknesses can grant dangerous permissions to a malevolent application, an example being &lt;code&gt;CALL_LOG&lt;/code&gt;, which gives access to all incoming and outgoing calls.&lt;/p&gt;
&lt;p&gt;This post dives into the Android permission system and how a solver was leveraged to find new vulnerabilities. With this approach, a privilege escalation was identified, which was fixed and assigned CVE-2023-20947 by Google.&lt;/p&gt;</description></item><item><title>kSMBd: a quick overview</title><link>/posts/ksmbd-trailer/</link><pubDate>Fri, 12 May 2023 12:00:00 +0000</pubDate><guid>/posts/ksmbd-trailer/</guid><description>In this blogpost, we introduce the analysis of one SMB implementation: kSMBd. It will be followed up by a talk at OffensiveCon 2023 named &amp;ldquo;Abusing Linux in-kernel SMB server to gain kernel remote code execution&amp;rdquo;.</description></item><item><title>The Fuzzing Guide to the Galaxy: An Attempt with Android System Services</title><link>/posts/fuzzing-samsung-system-services/</link><pubDate>Thu, 20 Apr 2023 00:00:00 +0000</pubDate><guid>/posts/fuzzing-samsung-system-services/</guid><description>Although the Android base is open source, many different constructors customize it with their own UIs and APIs. All these additions represent an extra attack surface that can change from one phone model to another. We tried to automatically fuzz the closed-source system services powering these modifications, discovering &lt;code&gt;CVE-2022-39907&lt;/code&gt; and &lt;code&gt;CVE-2022-39908&lt;/code&gt; along the way.</description></item><item><title>ARM TrustZone: pivoting to the secure world</title><link>/posts/pivoting_to_the_secure_world/</link><pubDate>Fri, 24 Mar 2023 13:37:00 +0000</pubDate><guid>/posts/pivoting_to_the_secure_world/</guid><description>&lt;ol&gt;
&lt;li&gt;Discovery of two vulnerabilities in secure world components&lt;/li&gt;
&lt;li&gt;Exploitation to get code execution in a trusted driver, while not having a debugger for this obscure environment&lt;/li&gt;
&lt;li&gt;Leverage of aarch32 T32 instruction set to find nice stack pivots&lt;/li&gt;
&lt;li&gt;Turning an arbitrary write into an arbitrary code execution&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Fuzzing RDPEGFX with "what the fuzz"</title><link>/posts/rdpegfx/</link><pubDate>Fri, 14 Oct 2022 00:00:00 +0000</pubDate><guid>/posts/rdpegfx/</guid><description>Microsoft’s Remote Desktop Protocol (RDP) client was fuzzed by various teams in the past few years, it thus seemed like a good target to try a recent snapshot fuzzer: &lt;a href="https://github.com/0vercl0k/wtf"&gt;what the fuzz (wtf)&lt;/a&gt; (of which we are only users). In this companion post to our &lt;a href="https://www.hexacon.fr/conference/speakers/#fuzzing_rdpegfx"&gt;Hexacon 2022 talk&lt;/a&gt; (&lt;a href="/posts/misc/rdpegfx/Hexacon2022-Fuzzing_RDPEGFX_with_wtf.pdf"&gt;slides&lt;/a&gt;, &lt;a href="https://youtu.be/4pftjmKqeoM"&gt;video&lt;/a&gt;) we’ll show how we took advantage of wtf flexibility in order to efficiently fuzz the RDPEGFX channel of Microsoft RDP client and uncover &lt;a href="https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2022-30221"&gt;CVE-2022-30221&lt;/a&gt;.</description></item><item><title>Remote Deserialization Bug in Microsoft's RDP Client through Smart Card Extension (CVE-2021-38666)</title><link>/posts/deserialization-bug-through-rdp-smart-card-extension/</link><pubDate>Fri, 10 Dec 2021 06:00:01 +0100</pubDate><guid>/posts/deserialization-bug-through-rdp-smart-card-extension/</guid><description>&lt;p&gt;This is the &lt;strong&gt;third installment&lt;/strong&gt; in my three-part series of articles on fuzzing Microsoft&amp;rsquo;s RDP client, where I explain a bug I found by fuzzing the &lt;strong&gt;smart card extension&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Remote ASLR Leak in Microsoft's RDP Client through Printer Cache Registry (CVE-2021-38665)</title><link>/posts/leaking-aslr-through-rdp-printer-cache-registry/</link><pubDate>Fri, 10 Dec 2021 06:00:00 +0100</pubDate><guid>/posts/leaking-aslr-through-rdp-printer-cache-registry/</guid><description>&lt;p&gt;This is the &lt;strong&gt;second installment&lt;/strong&gt; in my three-part series of articles on fuzzing Microsoft&amp;rsquo;s RDP client. I will explain a bug I found by fuzzing the &lt;strong&gt;printer sub-protocol&lt;/strong&gt;, and how I exploited it.&lt;/p&gt;</description></item><item><title>Fuzzing Microsoft's RDP Client using Virtual Channels: Overview &amp; Methodology</title><link>/posts/fuzzing-microsoft-rdp-client-using-virtual-channels/</link><pubDate>Wed, 10 Nov 2021 12:00:00 +0000</pubDate><guid>/posts/fuzzing-microsoft-rdp-client-using-virtual-channels/</guid><description>&lt;p&gt;This article begins my three-part series on fuzzing Microsoft&amp;rsquo;s RDP client. In this &lt;strong&gt;first installment&lt;/strong&gt;, I set up a methodology for &lt;strong&gt;fuzzing Virtual Channels&lt;/strong&gt; using WinAFL and share some of my findings.&lt;/p&gt;</description></item><item><title>ECW 2021 - WriteUp</title><link>/posts/ecw2021-writeup/</link><pubDate>Mon, 25 Oct 2021 12:00:01 +0100</pubDate><guid>/posts/ecw2021-writeup/</guid><description>&lt;p&gt;For the &lt;a href="https://www.european-cyber-week.eu/"&gt;European Cyber Week&lt;/a&gt; CTF 2021 Thalium created some challenges in our core competencies: reverse and exploitation. This blog post presents some of the write-ups:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#chest"&gt;Chest (36 solve) - reverse&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#fsb-as-a-service"&gt;FSB as a service (3 solve) - exploitation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#wysiwyg"&gt;WYSIWYG (3 solve) - reverse&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pipe Dream (1 solve) - reverse
&lt;ul&gt;
&lt;li&gt;the author posted his solution on &lt;a href="https://face.0xff.re/posts/ecw-ctf-2021-pipe-dream-writeup/"&gt;his personal blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thalium&amp;rsquo;s challenges have been less resolved than others. They were not that difficult, but probably a bit more unexpected. A few additional challenges designed by Thalium are:&lt;/p&gt;</description></item><item><title>NT objects access tracing</title><link>/posts/nt_py_icebox/</link><pubDate>Mon, 07 Jun 2021 12:00:00 +0100</pubDate><guid>/posts/nt_py_icebox/</guid><description>&lt;h1 id="draw-me-a-map"&gt;Draw me a map&lt;/h1&gt;
&lt;p&gt;As homework during the lockdown, I wanted to automate the attack surface analysis of a target on &lt;strong&gt;Windows&lt;/strong&gt;. The main objective was to construct a view of a software architecture to highlight the attack surface (whether remote or local).&lt;/p&gt;
&lt;p&gt;The software architecture can be composed of several elements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;processes&lt;/li&gt;
&lt;li&gt;privileges&lt;/li&gt;
&lt;li&gt;ipc&lt;/li&gt;
&lt;li&gt;etc&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Usually, software architecture analysis is done with tools that give a view at a specific time (&lt;code&gt;ProcessHacker&lt;/code&gt;, &lt;code&gt;WinObjEx&lt;/code&gt;, etc). However, the different components of the software architecture might be invoked dynamically and temporarily on certain conditions. Monitoring tools such as &lt;code&gt;ProcMon&lt;/code&gt; can help in this context but these involve manual operations.&lt;/p&gt;</description></item><item><title>SSTIC : how to setup a ctf win10 pwn user environment</title><link>/posts/sstic_infra_windows/</link><pubDate>Wed, 02 Jun 2021 15:30:00 +0100</pubDate><guid>/posts/sstic_infra_windows/</guid><description>&lt;h1 id="introduction"&gt;Introduction&lt;/h1&gt;
&lt;p&gt;This post aims to present how to easily setup a lightweight secure user pwning environment for Windows.
From your binary challenge communicating with stdin/stdout, this environment provides a multi-client broker listening on a socket, redirecting it to the IO of your binary, and executing it in a jail.
This environment is mainly based on the project &lt;a href="https://github.com/trailofbits/AppJailLauncher-rs"&gt;AppJaillauncher-rs&lt;/a&gt; from trailofbits, with some security fixes and some tips to easily setup the RW rights to the system files from the jail.&lt;/p&gt;</description></item><item><title>Cyber Apocalypse 2021 5/5 - Artillery</title><link>/posts/apocalypse2021-artillery/</link><pubDate>Wed, 28 Apr 2021 12:00:04 +0100</pubDate><guid>/posts/apocalypse2021-artillery/</guid><description>&lt;p&gt;&lt;strong&gt;Artillery&lt;/strong&gt; was a web challenge of the Cyber Apocalypse 2021 CTF organized by HackTheBox. We were given the source code of the server to help us solve the challenge. This challenge was a nice opportunity to learn more about &lt;strong&gt;XXE&lt;/strong&gt; vulnerabilities.&lt;/p&gt;</description></item><item><title>Cyber Apocalypse 2021 4/5 - Discovery</title><link>/posts/apocalypse2021-discovery/</link><pubDate>Wed, 28 Apr 2021 12:00:03 +0100</pubDate><guid>/posts/apocalypse2021-discovery/</guid><description>&lt;p&gt;One of the least solved challenges, yet probably not the most difficult one. It is a Hardware challenge, though it is significantly different from the other challenges of this category. The first thing to spot is that when starting the challenge machine, we have access to two network services:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;an HTTP server, requesting an authentication&lt;/li&gt;
&lt;li&gt;an AMQP broker, &lt;code&gt;rabbitmq&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Cyber Apocalypse 2021 3/5 - Off the grid</title><link>/posts/apocalypse2021-off-the-grid/</link><pubDate>Wed, 28 Apr 2021 12:00:02 +0100</pubDate><guid>/posts/apocalypse2021-off-the-grid/</guid><description>&lt;p&gt;&lt;strong&gt;Off-the-grid&lt;/strong&gt; was the 4th hardware challenge of the Cyber Apocalypse 2021 CTF organized by HackTheBox.
We were given an &lt;a href="/posts/misc/off-the-grid/off_the_grid.sal"&gt;Saleae trace&lt;/a&gt; and schematics to analyse. Thalium was one of the very first of 99 players to complete it.&lt;/p&gt;</description></item><item><title>Cyber Apocalypse 2021 2/5 - Wii-Phit</title><link>/posts/apocalypse2021-wii-phit/</link><pubDate>Wed, 28 Apr 2021 12:00:01 +0100</pubDate><guid>/posts/apocalypse2021-wii-phit/</guid><description>&lt;p&gt;&lt;strong&gt;Wii-Phit&lt;/strong&gt; was the only &lt;em&gt;Hard&lt;/em&gt; crypto challenge designed by &lt;a href="https://cryptohack.org/"&gt;CryptoHack&lt;/a&gt; for the &lt;a href="https://www.hackthebox.eu/cyber-apocalypse-ctf-2021"&gt;Cyber Apocalypse 2021&lt;/a&gt; CTF (there were also 4 challenges categorized as &lt;em&gt;Insane&lt;/em&gt; though).&lt;/p&gt;
&lt;p&gt;There is already an excellent &lt;a href="https://blog.cryptohack.org/cyber-apocalypse-2021#wii-phit"&gt;writeup&lt;/a&gt; by the challenge organizers:
one could recognize a well known equation related to the &lt;a href="https://en.wikipedia.org/wiki/Erd%C5%91s%E2%80%93Straus_conjecture"&gt;Erdős–Straus conjecture&lt;/a&gt;, some participants used &lt;a href="https://github.com/Z3Prover/z3"&gt;Z3&lt;/a&gt;.
We took a different approach.&lt;/p&gt;</description></item><item><title>Cyber Apocalypse 2021 1/5 - PWN challenges</title><link>/posts/apocalypse2021-pwn/</link><pubDate>Wed, 28 Apr 2021 12:00:00 +0100</pubDate><guid>/posts/apocalypse2021-pwn/</guid><description>&lt;p&gt;Thalium participated in the &lt;a href="https://www.hackthebox.eu/cyber-apocalypse-ctf-2021"&gt;Cyber Apocalypse 2021&lt;/a&gt; CTF organized last week by &lt;a href="https://www.hackthebox.eu/"&gt;HackTheBox&lt;/a&gt;.
It was a great success with 4,740 teams composed of around 10,000 hackers from all over the world.
Our team finished in fifth place and solved sixty out of the sixty-two challenges:&lt;/p&gt;
&lt;p&gt;
 &lt;a href="/posts/img/Cyber_Apocalypse_2021-scoreboard.png" target="_blank"&gt;
 &lt;img src="/posts/img/Cyber_Apocalypse_2021-scoreboard.png" alt="fig_scoreboard"&gt;
 &lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;This article explains how we solved each pwn challenge and what tools we used, it is written to be accessible to beginners:&lt;/p&gt;</description></item><item><title>Windows Memory Introspection with IceBox</title><link>/posts/windows-full-memory-introspection-with-icebox/</link><pubDate>Mon, 22 Jun 2020 12:00:00 +0100</pubDate><guid>/posts/windows-full-memory-introspection-with-icebox/</guid><description>&lt;p&gt;&lt;strong&gt;Virtual Machine Introspection (VMI)&lt;/strong&gt; is an extremely powerful technique to explore a guest OS.
Directly acting on the hypervisor allows a stealth and precise control of the guest state, which means its CPU context as well as its memory.&lt;/p&gt;
&lt;p&gt;Basically, a common use case in VMI consists in (1) setting a breakpoint on an address, (2) wait for a break and (3) finally read some virtual memory.
For example, to simply monitor the user file writing activity on Windows, just set a breakpoint on the &lt;code&gt;NtWriteFile&lt;/code&gt; function in kernel land.
Once triggered, you can retrieve the involved process and capture its corresponding callstack.
All these actions eventually require accessing the guest virtual memory.&lt;/p&gt;</description></item><item><title>Getting Started with Icebox VMI</title><link>/posts/getting_started/</link><pubDate>Fri, 24 Jan 2020 12:00:00 +0100</pubDate><guid>/posts/getting_started/</guid><description>&lt;p&gt;&lt;strong&gt;Icebox&lt;/strong&gt; is a VMI (Virtual Machine Introspection) framework enabling you to stealthily trace and debug any kernel or user code system-wide.&lt;/p&gt;
&lt;p&gt;All Icebox source code can be found on our &lt;a href="https://github.com/thalium/icebox"&gt;github page&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="try-icebox"&gt;Try Icebox&lt;/h2&gt;
&lt;p&gt;Icebox now comes with full Python bindings enabling fast prototyping on top of VMI, whether you want to trace a user process or inspect the kernel internals.&lt;/p&gt;
&lt;p&gt;The core itself is in C++ and exposes most of its public functions into an &lt;code&gt;icebox&lt;/code&gt; Python 3 module.&lt;/p&gt;</description></item></channel></rss>