<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Custom Tools, Reverse Engineering, and Threat Research</title><link>https://blog.xorhex.com/</link><description>Recent content on Custom Tools, Reverse Engineering, and Threat Research</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Sun, 08 Jan 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.xorhex.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Z3 Solver Simplifying String Decryption</title><link>https://blog.xorhex.com/blog/z3-simplify-obfuscation/</link><pubDate>Sun, 08 Jan 2023 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/blog/z3-simplify-obfuscation/</guid><description/></item><item><title>Self Improving IDAPro</title><link>https://blog.xorhex.com/blog/ida-plugin-contextmenu/</link><pubDate>Sun, 11 Dec 2022 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/blog/ida-plugin-contextmenu/</guid><description/></item><item><title>YARA - Following FALLCHILL's E8 Call</title><link>https://blog.xorhex.com/blog/yarafollowingfallchills_e8_call/</link><pubDate>Sun, 31 Jul 2022 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/blog/yarafollowingfallchills_e8_call/</guid><description>Summary This article covers how to follow a near relative call instruction, 0xE8 in YARA.
TL;DR Calculation: Address of the instruction following the call instruction + the int32 value passed to the 0xE8 opcode == Function Start Address
Near Relative Call - Explained The 0xE8 instruction on c9x is defined as: Call near, relative, displacement relative to next instruction . This means that the address passed to the call instruction is added to the next instruction address in order to calculate the location of the function being called.</description></item><item><title>Day 7 of 100 Discontiguous Days of YARA</title><link>https://blog.xorhex.com/blog/onehundreddiscontiguousdaysofyara-day7/</link><pubDate>Thu, 13 Jan 2022 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/blog/onehundreddiscontiguousdaysofyara-day7/</guid><description>Summary Partaking in Greg&amp;rsquo;s #100DaysOfYARA, but to be honest it&amp;rsquo;s more likely to be #100DiscontiguousDaysOfYARA for me - if I make it that far.
I doubt that the rules shared these 100 days will contain any truly original ideas, but I&amp;rsquo;d still like to share what I&amp;rsquo;ve learned.
Day 7 This is the second of at least a 3 (maybe 4) part series targeting SFX 4.x files. Yes, I&amp;rsquo;m absolutely stretching my #100DaysOfYARA content.</description></item><item><title>Day 6 of 100 Discontiguous Days of YARA</title><link>https://blog.xorhex.com/blog/onehundreddiscontiguousdaysofyara-day6/</link><pubDate>Mon, 10 Jan 2022 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/blog/onehundreddiscontiguousdaysofyara-day6/</guid><description>Summary Partaking in Greg&amp;rsquo;s #100DaysOfYARA, but to be honest it&amp;rsquo;s more likely to be #100DiscontiguousDaysOfYARA for me - if I make it that far.
I doubt that the rules shared these 100 days will contain any truly original ideas, but I&amp;rsquo;d still like to share what I&amp;rsquo;ve learned.
Day 6 This is the first of at least a 3 (maybe 4) part series targeting SFX 4.x files. Yes, I&amp;rsquo;m absolutely stretching my #100DaysOfYARA content.</description></item><item><title>ImHex Pattern and YARA Functionality</title><link>https://blog.xorhex.com/blog/quickimhexpatternyaratutorial/</link><pubDate>Sat, 08 Jan 2022 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/blog/quickimhexpatternyaratutorial/</guid><description>Summary This article covers:
Installing and setting up ImHex Using the pattern editor YARA integration Installation I prefer to install ImHex by source. There are also nightlies that can be downloaded. I recommend trying those first before trying the compiling guide below, as it should be simpler. ImHex works on Windows, Linux, and MacOS.
ImHex installation steps on a Ubuntu 21.10 VM are roughly as follows:
Build
git clone --recurse-submodules https://github.</description></item><item><title>Day 5 of 100 Discontiguous Days of YARA</title><link>https://blog.xorhex.com/blog/onehundreddiscontiguousdaysofyara-day5/</link><pubDate>Fri, 07 Jan 2022 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/blog/onehundreddiscontiguousdaysofyara-day5/</guid><description>Summary Partaking in Greg&amp;rsquo;s #100DaysOfYARA, but to be honest it&amp;rsquo;s more likely to be #100DiscontiguousDaysOfYARA for me - if I make it that far.
I doubt that the rules shared these 100 days will contain any truly original ideas, but I&amp;rsquo;d still like to share what I&amp;rsquo;ve learned.
Day 5 First, credit for this goes to @wxs who has patiently helped me more than once with my rules over the years.</description></item><item><title>Day 4 of 100 Discontiguous Days of YARA</title><link>https://blog.xorhex.com/blog/onehundreddiscontiguousdaysofyara-day4/</link><pubDate>Wed, 05 Jan 2022 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/blog/onehundreddiscontiguousdaysofyara-day4/</guid><description>Summary Partaking in Greg&amp;rsquo;s #100DaysOfYARA, but to be honest it&amp;rsquo;s more likely to be #100DiscontiguousDaysOfYARA for me - if I make it that far.
I doubt that the rules shared these 100 days will contain any truly original ideas, but I&amp;rsquo;d still like to share what I&amp;rsquo;ve learned.
Day 4 import &amp;#34;pe&amp;#34; rule pdb_guid{ meta: Author = &amp;#34;xorhex&amp;#34; Description = &amp;#34;Search for a PDB Guid String&amp;#34; PDB_guid = &amp;#34;dcabb77e-c56c-4f3a-90f5-e604e0d01a87&amp;#34; HundredDaysOfYARA = &amp;#34;Day 4&amp;#34; condition: // RSDS Sig uint32(uint32(pe.</description></item><item><title>Day 3 of 100 Discontiguous Days of YARA</title><link>https://blog.xorhex.com/blog/onehundreddiscontiguousdaysofyara-day3/</link><pubDate>Mon, 03 Jan 2022 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/blog/onehundreddiscontiguousdaysofyara-day3/</guid><description>Summary Partaking in Greg&amp;rsquo;s #100DaysOfYARA, but to be honest it&amp;rsquo;s more likely to be #100DiscontiguousDaysOfYARA for me - if I make it that far.
I doubt that the rules shared these 100 days will contain any truly original ideas, but I&amp;rsquo;d still like to share what I&amp;rsquo;ve learned.
Day 3 rule no_mz_sig__no_pe_sig__but_could_be_a_pe_file { meta: author = &amp;#34;xorhex&amp;#34; description = &amp;#34;Identifies PE files whose MZ sig and PE sig are wiped by inspecting the machine type value at the expected offset&amp;#34; warning = &amp;#34;Further tweaking maybe required to lessen the FP rate&amp;#34; HundredDaysOfYARA = &amp;#34;Day 3&amp;#34; condition: uint16be(0) !</description></item><item><title>Day 2 of 100 Discontiguous Days of YARA</title><link>https://blog.xorhex.com/blog/onehundreddiscontiguousdaysofyara-day2/</link><pubDate>Sun, 02 Jan 2022 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/blog/onehundreddiscontiguousdaysofyara-day2/</guid><description>Summary Partaking in Greg&amp;rsquo;s #100DaysOfYARA, but to be honest it&amp;rsquo;s more likely to be #100DiscontiguousDaysOfYARA for me - if I make it that far.
I doubt that the rules shared these 100 days will contain any truly original ideas, but I&amp;rsquo;d still like to share what I&amp;rsquo;ve learned.
Day 2 import &amp;#34;pe&amp;#34; rule pe_created_after_cert_expired { meta: author = &amp;#34;xorhex&amp;#34; description = &amp;#34;Find PE files that were compiled (assuming the timestamp was not modified) after their code signing certificate expired&amp;#34; HundredDaysOfYara = &amp;#34;Day 2&amp;#34; condition: for any s in pe.</description></item><item><title>Day 1 of 100 Discontiguous Days of YARA</title><link>https://blog.xorhex.com/blog/onehundreddiscontiguousdaysofyara-day1/</link><pubDate>Sat, 01 Jan 2022 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/blog/onehundreddiscontiguousdaysofyara-day1/</guid><description>Summary Partaking in Greg&amp;rsquo;s #100DaysOfYARA, but to be honest it&amp;rsquo;s more likely to be #100DiscontiguousDaysOfYARA for me - if I make it that far.
I doubt that the rules shared these 100 days will contain any truly original ideas, but I&amp;rsquo;d still like to share what I&amp;rsquo;ve learned.
Day 1 import &amp;#34;pe&amp;#34; import &amp;#34;time&amp;#34; rule cert_expired { meta: author = &amp;#34;xorhex&amp;#34; description = &amp;#34;Find PE files whose code signing certificate is expired as of current date&amp;#34; HundredDaysOfYara = &amp;#34;Day 1&amp;#34; condition: for any s in pe.</description></item><item><title>Mlget - For all Your Malware Download Needs</title><link>https://blog.xorhex.com/blog/mlget-for-all-your-malware-download-needs/</link><pubDate>Mon, 11 Oct 2021 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/blog/mlget-for-all-your-malware-download-needs/</guid><description>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Source&lt;/td>
&lt;td>&lt;a href="https://github.com/xorhex/mlget/releases">Releases&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>License Type&lt;/td>
&lt;td>MIT License&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Version At Blog Release&lt;/td>
&lt;td>&lt;a href="https://github.com/xorhex/mlget/releases/tag/v2.1">v2.1&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>RedDelta PlugX Undergoing Changes and Overlapping Again with Mustang Panda PlugX Infrastructure</title><link>https://blog.xorhex.com/blog/reddeltaplugxchangeup/</link><pubDate>Wed, 02 Jun 2021 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/blog/reddeltaplugxchangeup/</guid><description>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Family&lt;/td>
&lt;td>PlugX - RedDelta Variant&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Threat Actor&lt;/td>
&lt;td>Mustang Panda&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Encrypted&lt;/td>
&lt;td>1c7897a902b35570a9620c64a2926cd5d594d4ff5a033e28a400981d14516600&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Decryption Key&lt;/td>
&lt;td>0x78, 0x61, 0x6c, 0x72, 0x45, 0x5a, 0x6f, 0x78, 0x43, 0x59, 0x73, 0x71, 0x6c, 0x52, 0x6e, 0x77, 0x78, 0x46, 0x63, 0x43, 0x46&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Key Length&lt;/td>
&lt;td>21&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Decrypted&lt;/td>
&lt;td>ec1c29cb6674ffce989576c51413a6f9cbb4a8a41cbd30ec628182485a937160&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Config C2&lt;/td>
&lt;td>101.36.125.203:965&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Config C2&lt;/td>
&lt;td>101.36.125.203:110&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Config C2&lt;/td>
&lt;td>vitedannews.com:965&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Config C2&lt;/td>
&lt;td>vitedannews.com:110&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>Mustang Panda PlugX - Reused Mutex and Folder Found in the Extracted Config</title><link>https://blog.xorhex.com/blog/mustangpandaplugx-2/</link><pubDate>Thu, 27 May 2021 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/blog/mustangpandaplugx-2/</guid><description>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Family&lt;/td>
&lt;td>PlugX - Variant: &lt;code>XXXXXXXX&lt;/code> Config Check&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Threat Actor&lt;/td>
&lt;td>Mustang Panda / Red Delta&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Encrypted&lt;/td>
&lt;td>de0f65a421ce8ee4a927f4f9228f29ff12be69ac71edecb18c35cb5101e4c3cf&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Decrypted&lt;/td>
&lt;td>2bfd100498f70938dedef42116af09af2db77ef1315edcea0ffd62c93015ddf5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>XOR Decyption Key&lt;/td>
&lt;td>0x4b, 0x73, 0x51, 0x4f, 0x74, 0x6d, 0x49, 0x68, 0x63, 0x43&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>XOR Decryption Key Length&lt;/td>
&lt;td>10&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>Mustang Panda PlugX - 45.251.240.55 Pivot</title><link>https://blog.xorhex.com/blog/mustangpandaplugx-1/</link><pubDate>Mon, 17 May 2021 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/blog/mustangpandaplugx-1/</guid><description>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Family&lt;/td>
&lt;td>PlugX&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Threat Actor&lt;/td>
&lt;td>Mustang Panda&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Encrypted&lt;/td>
&lt;td>589e87d4ac0a2c350e98642ac53f4940fcfec38226c16509da21bb551a8f8a36&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Decrypted&lt;/td>
&lt;td>dce920f5db90efecc7fb7a6b6399c80fc83e3f1251f160cd1295b6a4b67125d4&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>About</title><link>https://blog.xorhex.com/about/</link><pubDate>Mon, 01 Mar 2021 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/about/</guid><description>This about page will host more as research is posted.</description></item><item><title>Contact</title><link>https://blog.xorhex.com/contact/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/contact/</guid><description/></item><item><title>Mlget README</title><link>https://blog.xorhex.com/mlget/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.xorhex.com/mlget/</guid><description/></item></channel></rss>