{"id":11077,"date":"2025-01-21T10:29:25","date_gmt":"2025-01-21T10:29:25","guid":{"rendered":"\/cybersecurity-blog\/?p=11077"},"modified":"2025-01-22T06:55:50","modified_gmt":"2025-01-22T06:55:50","slug":"invisibleferret-malware-analysis","status":"publish","type":"post","link":"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/","title":{"rendered":"InvisibleFerret Malware: Technical Analysis"},"content":{"rendered":"\n<p><em><strong>Editor&#8217;s note<\/strong>: The current article is authored by Mauro Eldritch, offensive security expert and threat intelligence analyst. You can <a href=\"https:\/\/x.com\/MauroEldritch\" target=\"_blank\" rel=\"noreferrer noopener\">find Mauro on X<\/a>.<\/em><\/p>\n\n\n\n<p>Recently, during October and November, we observed a rise in North Korean activity employing a well-known and distinctive technique: <a href=\"https:\/\/threatchronicles.com\/2024\/11\/dev-popper-contagious-interview-campaign-follow-up-november-2024\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>staging job interview processes to spread multiple malware families.<\/u><\/a><\/p>\n\n\n\n<p>This signature technique was previously used to distribute <a href=\"https:\/\/github.com\/birminghamcyberarms\/QRLog\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>QRLog<\/u><\/a> and <a href=\"https:\/\/otx.alienvault.com\/pulse\/65c0ef492547f1c6b60729e6\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>Docks \/RustDoor<\/u><\/a>, and is now delivering <a href=\"https:\/\/malpedia.caad.fkie.fraunhofer.de\/details\/win.beavertail\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>BeaverTail<\/u><\/a> and <a href=\"https:\/\/malpedia.caad.fkie.fraunhofer.de\/details\/py.invisibleferret\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>InvisibleFerret<\/u><\/a>. In this first article, we will conduct a technical dissection of the latter.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"268\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/1-1024x268.jpg\" alt=\"\" class=\"wp-image-11079\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/1-1024x268.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/1-300x79.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/1-768x201.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/1-370x97.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/1-270x71.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/1-740x194.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/1.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>InvisibleFerret actively seeks source code, wallets, and sensitive files<\/em><\/figcaption><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\"><strong>The Beaver<\/strong><\/h2>\n\n\n\n<p>These malicious components do not simply appear randomly among the files of questionable pirated software, lying in wait for their victim. Instead, they are part of an <em>organized<\/em> effort targeting the technological, financial, and cryptocurrency sectors, with developers as the primary focus. By staging fake job interviews, threat actors aim to <a href=\"https:\/\/otx.alienvault.com\/pulse\/672b4dd2c7b9f03eb412d8ff\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>spread malware<\/u><\/a> disguised either as coding challenges (or their dependencies) or video call software, in a campaign now known as <strong>Contagious Interview<\/strong> or <strong>DevPopper<\/strong>.<\/p>\n\n\n\n<p>One of the implants distributed is <strong>BeaverTail<\/strong>, a stealer and loader written in obfuscated <strong>JavaScript<\/strong> and delivered <a href=\"https:\/\/socket.dev\/npm\/package\/blockscan-api\/overview\/1.3.1\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>as an NPM module<\/u><\/a>. While not the focus of this article, BeaverTail downloads a customized portable <strong>Python<\/strong> environment (\u201c<a href=\"https:\/\/www.virustotal.com\/gui\/file\/6a104f07ab6c5711b6bc8bf6ff956ab8cd597a388002a966e980c5ec9678b5b0\/detection\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>p.zip<\/u><\/a>\u201d) and later deploys <strong>InvisibleFerret<\/strong> as its next stage, which is the main subject of this research.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"641\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/2-1024x641.jpg\" alt=\"\" class=\"wp-image-11080\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/2-1024x641.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/2-300x188.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/2-768x481.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/2-370x232.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/2-270x169.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/2-740x463.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/2.jpg 1208w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>BeaverTail targets major browsers such as Opera, Brave, and Chrome, seeking user and add-on data<\/em><\/figcaption><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\"><strong>The Ferrets<\/strong><\/h2>\n\n\n\n<p><strong>InvisibleFerret<\/strong> is a <strong>Python<\/strong>-based malware that, at first glance, shows a disorganized structure and unnecessary escaping sequences, giving a glimpse of what lies ahead if we dare to explore the code further. A quick look reveals a compact initialization of hardcoded constants used to <a href=\"https:\/\/pypi.org\/project\/pip\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>install dependencies via pip<\/u><\/a>, which are later reused multiple times throughout its execution.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"474\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/3-1024x474.jpg\" alt=\"\" class=\"wp-image-11081\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/3-1024x474.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/3-300x139.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/3-768x355.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/3-370x171.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/3-270x125.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/3-740x342.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/3.jpg 1208w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>InvisibleFerret\u2019s code is messy, with over 100 functions adding to its complexity<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>As expected from malware of its kind, <strong>InvisibleFerret<\/strong> does not generate an output trail or a logfile of its actions. Its silent nature, combined with a somewhat difficult-to-read codebase, led me to add verbosity to its functions and expand some of its compressed syntax and overly compact one-liners for better readability, creating <a href=\"https:\/\/github.com\/MauroEldritch\/prettyvisibleferret\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>PrettyVisibleFerret<\/u><\/a>. This version is more talkative and easier to read for everyone, but still executes malicious instructions and should be handled with care.<\/p>\n\n\n\n<p><a href=\"https:\/\/app.any.run\/tasks\/1951b184-a2fe-4cff-9999-cea0320910d4\/?utm_source=anyrunblog&amp;utm_medium=article&amp;utm_campaign=invisibleferret_analysis&amp;utm_term=210125&amp;utm_content=linktoservice\" target=\"_blank\" rel=\"noreferrer noopener\">View sandbox analysis of InvisibleFerret<\/a><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"640\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/4-1024x640.jpg\" alt=\"\" class=\"wp-image-11082\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/4-1024x640.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/4-300x188.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/4-768x480.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/4-370x231.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/4-270x169.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/4-740x463.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/4.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>PrettyVisibleFerret running on ANY.RUN showing exfiltrated information in real-time<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>After <a href=\"https:\/\/app.any.run\/tasks\/1951b184-a2fe-4cff-9999-cea0320910d4\/?utm_source=anyrunblog&amp;utm_medium=article&amp;utm_campaign=invisibleferret_analysis&amp;utm_term=210125&amp;utm_content=linktoservice\" target=\"_blank\" rel=\"noreferrer noopener\">submitting the malware <\/a>for analysis to <a href=\"https:\/\/any.run\/?utm_source=anyrunblog&amp;utm_medium=article&amp;utm_campaign=invisibleferret_analysis&amp;utm_term=210125&amp;utm_content=linktolanding\" target=\"_blank\" rel=\"noreferrer noopener\">ANY.RUN&#8217;s Interactive Sandbox<\/a>, the first thing this mischievous ferret attempts is to gather basic information about the victim, such as geolocation \u2014 by querying legitimate services like <a href=\"https:\/\/ip-api.com\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>ip-api.com<\/u><\/a> (commonly used by other malware and even drainers like \u201c<a href=\"https:\/\/quetzal.bitso.com\/i\/151569519\/dr-ainer-to-the-autopsy-theatre-immediately\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>ETH Polygon BNB<\/u><\/a>\u201d) \u2014 as well as system details like OS release, version, hostname, and username, before finally generating a unique ID.<\/p>\n\n\n\n<!-- Regular Banner START -->\n<div class=\"regular-banner\">\n<!-- Text Content -->\n<p class=\"regular-banner__text\">\nTry secure malware and phishing analysis <br>with ANY.RUN&#8217;s <span class=\"highlight\">Interactive Sandbox<\/span>&nbsp;   \n<\/p>\n<!-- CTA Link -->\n<a class=\"regular-banner__link\" id=\"article-banner-regular\" href=\"https:\/\/any.run\/demo\/?utm_source=anyrunblog&#038;utm_medium=article&#038;utm_campaign=invisibleferret_analysis&#038;utm_term=210125&#038;utm_content=linktodemo\" rel=\"noopener\" target=\"_blank\">\nGet 14-day free trial\n<\/a>\n<\/div>\n<!-- Regular Banner END -->\n<!-- Regular Banner Styles START -->\n\n<style>\n.regular-banner {\ndisplay: flex;\ntext-align: center;\nflex-direction: column;\nalign-items: center;\ngap: 1.5rem;\nwidth: 100%;\npadding: 2rem;\nmargin: 1.5rem 0;\nborder-radius: 0.5rem;\nfont-family: 'Catamaran Bold';\nmargin-inline: auto;\nbackground: rgba(32, 168, 241, 0.1);\nborder: 1px solid rgba(75, 174, 227, 0.32);\n}\n\n.regular-banner__text {\nfont-size: 1.5rem;\nmargin: 0;\n}\n\n.highlight {\ncolor: #ea2526;\n}\n\n.regular-banner__link {\npadding: 0.5rem 1.5rem;\nfont-weight: 500;\ntext-decoration: none;\nborder-radius: 0.5rem;\ncolor: #FFFFFF;\nbackground-color: #1491D4;\ntext-align: center;\ntransition: all 0.2s ease-in;\n}\n\n.regular-banner__link:hover {\nbackground-color: #68CBFF;\ncolor: white;\n}\n<\/style>\n<!-- Regular Banner Styles END -->\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"636\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/5-1024x636.jpg\" alt=\"\" class=\"wp-image-11084\" style=\"width:650px;height:auto\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/5-1024x636.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/5-300x186.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/5-768x477.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/5-370x230.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/5-270x168.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/5-740x459.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/5.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Outgoing HTTP connections to ip-api.com and the C2 server on an unusual port are shown in ANY.RUN<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>After the <em>\/keys<\/em> endpoint is accessed, the ferret jumps to the next C2 server in the infection chain, registering the host by its name and tagging it based on its OS.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"634\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/6-1024x634.jpg\" alt=\"\" class=\"wp-image-11085\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/6-1024x634.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/6-300x186.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/6-768x476.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/6-370x229.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/6-270x167.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/6-740x458.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/6.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Outgoing HTTP connections to both C2 servers captured by ANY.RUN<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>Our host is now registered within the adversary infrastructure, but before continuing along the infection chain and following the white ferret, let\u2019s review the traffic and noise generated so far.<\/p>\n\n\n\n<p>Up to this point, most of the traffic is <strong>legitimate<\/strong>, either originating from the package manager pip \u2014 even if invoked by the malware itself \u2014 or directed to legitimate services like <em>ip-api<\/em>. However, we can observe three streams to two C2 servers using ports 1244 and 1245, which are correctly flagged as \u2018unusual\u2019 by <strong>ANY.RUN<\/strong>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"634\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/7-1024x634.jpg\" alt=\"\" class=\"wp-image-11086\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/7-1024x634.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/7-300x186.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/7-768x476.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/7-370x229.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/7-270x167.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/7-740x458.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/7.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>As seen in ANY.RUN, initial traffic targets legitimate sources with 3 streams connecting to 2 C2 servers<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>Aside from the unusual port, there\u2019s another interesting yet careless detail: the Python package \u2018<em>requests<\/em>\u2019 is using its default User-Agent (<em>python-requests\/2.25.1<\/em> in this case), making it easier to dissect the traffic, narrow down destinations, and map the adversary\u2019s infrastructure.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"634\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/8-1024x634.jpg\" alt=\"\" class=\"wp-image-11087\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/8-1024x634.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/8-300x186.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/8-768x476.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/8-370x229.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/8-270x167.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/8-740x458.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/8.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Legitimate traffic blends with malicious requests, all generated by the same script<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>What happens next is better understood by examining the code rather than dry-running the sample in a sandbox filled with placebo files. We\u2019ll let the simulation run and return later to gather indicators and behaviors.<\/p>\n\n\n\n<p>Be advised: much of this malware is held together by sticks and mud, so expect confusing and poor practices, such as \u2018obfuscating\u2019 C2 addresses within a sliced <a href=\"https:\/\/security.stackexchange.com\/questions\/194646\/is-it-okay-to-save-passwords-as-base64-strings-with-no-other-hashing-or-encrypti\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>Base64-encoded string<\/u><\/a>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"650\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/9-1024x650.jpg\" alt=\"\" class=\"wp-image-11088\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/9-1024x650.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/9-300x190.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/9-768x488.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/9-370x235.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/9-270x171.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/9-740x470.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/9.jpg 1208w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>The careless use of Base64 obfuscation makes it trivial to decode and retrieve C2 server addresses<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>The <em>Session<\/em> class implements FTP as one of its exfiltration methods, relying on the Python <a href=\"https:\/\/docs.python.org\/3\/library\/ftplib.html\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><em>ftplib<\/em><\/a> package. If the package is not found, it attempts to install it. Once again, the exfiltration host is poorly hidden in plain sight within a Base64-encoded string.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"851\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/10-1024x851.jpg\" alt=\"\" class=\"wp-image-11089\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/10-1024x851.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/10-300x249.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/10-768x638.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/10-370x308.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/10-270x224.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/10-740x615.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/10.jpg 1208w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Python imports are scattered throughout the code, loaded as needed rather than grouped at the top<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>The ferret then moves on to assess what to steal, declaring five extensive arrays: some designed to list extensions, files, directories, and patterns to ignore, and others specifying what to target.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"569\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/11-1024x569.jpg\" alt=\"\" class=\"wp-image-11090\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/11-1024x569.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/11-300x167.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/11-768x427.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/11-370x206.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/11-270x150.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/11-740x411.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/11.jpg 1208w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Targets source code and sensitive files, suggesting corporate espionage<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>The <em>Shell<\/em> class implements new and dangerous methods allowing our fluffy adversary to run arbitrary commands sent by the attacker and downloading and executing a subsequent stage of the infection chain.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"734\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/12-1024x734.jpg\" alt=\"\" class=\"wp-image-11091\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/12-1024x734.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/12-300x215.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/12-768x551.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/12-370x265.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/12-270x194.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/12-740x530.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/12.jpg 1208w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Functions for downloading and executing the next stage adapting to the host OS<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>Remember <em>ftplib<\/em>? It comes into play again in the <em>o_ftp<\/em> method, which opens FTP connections. Meanwhile, the <em>ssh_upload<\/em> method handles the data exfiltration process.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"608\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/13-1024x608.jpg\" alt=\"\" class=\"wp-image-11092\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/13-1024x608.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/13-300x178.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/13-768x456.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/13-370x220.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/13-270x160.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/13-740x439.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/13.jpg 1208w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Functions for preparing and exfiltrating data<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>This process \u2014 defined by the method <em>storbin<\/em> \u2014 is somewhat complex. Files with specific extensions, such as compressed files or virtual machine disk files, are sent directly to the server via the FTP <em>STOR<\/em> command. Other files are obfuscated using <a href=\"https:\/\/stackoverflow.com\/questions\/14526584\/what-does-the-xor-operator-do\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>XOR<\/u><\/a> with a specific key before being transferred to the server. While not a robust encryption method, this technique adds a basic layer of protection.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"541\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/14-1024x541.jpg\" alt=\"\" class=\"wp-image-11093\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/14-1024x541.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/14-300x158.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/14-768x406.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/14-370x195.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/14-270x143.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/14-740x391.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/14.jpg 1208w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>The key \u201cG01d*8@(\u201c is used on files not matching the extensions<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>Files are compressed using <a href=\"https:\/\/pypi.org\/project\/py7zr\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>py7zr<\/u><\/a> in 7z format (on Windows) or zip format with <a href=\"https:\/\/pypi.org\/project\/pyzipper\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>pyzipper<\/u><\/a> (on Unix), with the password defaulting to \u2018<em>2024<\/em>\u2019 if none is provided.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"854\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/15-1024x854.jpg\" alt=\"\" class=\"wp-image-11095\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/15-1024x854.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/15-300x250.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/15-768x640.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/15-370x308.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/15-270x225.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/15-740x617.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/15.jpg 1208w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>\u20182024\u2019 is not a compliant password<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>Finally, <em>down_any<\/em> and <em>ssh_any<\/em>, download and execute <a href=\"https:\/\/anydesk.com\/es\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>AnyDesk<\/u><\/a>, a legitimate remote desktop software, to establish persistence.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"665\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/16-1024x665.jpg\" alt=\"\" class=\"wp-image-11096\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/16-1024x665.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/16-300x195.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/16-768x498.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/16-370x240.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/16-270x175.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/16-740x480.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/16.jpg 1208w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>AnyDesk is downloaded directly from the adversary\u2019s infrastructure<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>Two notable mentions are the <em>ssh_env<\/em> function, responsible for detecting the running OS and mapping points of interest in the corresponding file system: <em>Documents<\/em> and <em>Downloads<\/em> on <strong>Windows<\/strong> and <em>\/Volumes<\/em>, <em>\/home<\/em>, and <em>\/vol<\/em> on <strong>Unix<\/strong>;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"814\" height=\"1024\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/17-814x1024.jpg\" alt=\"\" class=\"wp-image-11098\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/17-814x1024.jpg 814w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/17-238x300.jpg 238w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/17-768x966.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/17-370x466.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/17-270x340.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/17-740x931.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/17.jpg 1208w\" sizes=\"(max-width: 814px) 100vw, 814px\" \/><figcaption class=\"wp-element-caption\"><em>Documents, Downloads, home folders and volumes are targets<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>and the <em>ssh_kill<\/em> one, which kills <strong>Google Chrome<\/strong> and <strong>Brave<\/strong> browsers processes.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"794\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/18-1024x794.jpg\" alt=\"\" class=\"wp-image-11099\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/18-1024x794.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/18-300x233.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/18-768x596.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/18-370x287.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/18-270x209.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/18-385x300.jpg 385w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/18-740x574.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/18.jpg 1208w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Terminates browser processes on both Windows and Unix<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>However, this tricky ferret doesn\u2019t stop there\u2014it has more in store for the victim\u2019s browsers. After identifying the local browser, it defines specific paths to extract user data, such as <strong>profiles, cookies, credentials, and browsing history<\/strong>. Dedicated classes are implemented for <strong>Chrome<\/strong>, <strong>Chromium<\/strong>, <strong>Opera<\/strong>, <strong>Brave<\/strong>, <strong>Edge<\/strong>, and <strong>Vivaldi<\/strong>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"809\" height=\"1024\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/19-809x1024.jpg\" alt=\"\" class=\"wp-image-11100\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/19-809x1024.jpg 809w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/19-237x300.jpg 237w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/19-768x972.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/19-370x468.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/19-270x342.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/19-740x937.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/19.jpg 1208w\" sizes=\"(max-width: 809px) 100vw, 809px\" \/><figcaption class=\"wp-element-caption\"><em>Browser data exfiltration routines for multiple vendors<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>A set of browser extensions is targeted to exfiltrate their data, primarily including crypto exchange and wallets like <strong>Metamask<\/strong>, multi factor authentication apps like <strong>Google Authenticator<\/strong> and password managers like <strong>1Password<\/strong>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"818\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/20-1024x818.jpg\" alt=\"\" class=\"wp-image-11101\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/20-1024x818.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/20-300x240.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/20-768x614.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/20-370x296.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/20-270x216.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/20-740x591.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/20.jpg 1208w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>This function targets a large number of extensions<\/em><\/figcaption><\/figure><\/div>\n\n\n<p><strong>Telegram<\/strong> is also used as an exfiltration channel for files, directly invoking the <strong>Bots<\/strong> <strong>API<\/strong> <em>sendDocument<\/em> endpoint. Since the connection and queries are handled entirely locally, <strong>PrettyVisibleFerret<\/strong> can reveal the<em> Chat ID<\/em> and <em>Bot Secret Token<\/em> used, enabling interaction with the bot and potentially reconfiguring or shutting it down through <strong>@BotFather<\/strong>, Telegram\u2019s Bot Manager.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"434\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/21-1024x434.jpg\" alt=\"\" class=\"wp-image-11103\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/21-1024x434.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/21-300x127.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/21-768x326.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/21-370x157.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/21-270x114.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/21-740x314.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/21.jpg 1208w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>PrettyVisibleFerret discloses the received Telegram Bot token<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>On <strong>Windows<\/strong> systems, the ferret imports (or attempts to install if missing) <strong>pywin32<\/strong> (provides Windows API access), <strong>psutil<\/strong> (used to retrieve system information and manage processes), <strong>pyWinhook<\/strong> (a library for keyboard and mouse event handling), and <strong>pyperclip<\/strong> (used to manage the clipboard). The last two are pretty self-explanatory.<\/p>\n\n\n\n<p><strong>Pyperclip<\/strong> is specifically used to monitor clipboard changes and exfiltrate its content. This is useful to capture <em>passwords, keys and other secrets<\/em>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"686\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/22-1024x686.jpg\" alt=\"\" class=\"wp-image-11105\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/22-1024x686.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/22-300x201.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/22-768x514.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/22-370x248.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/22-270x181.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/22-740x496.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/22.jpg 1208w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>All clipboard changes within 50ms will be copied and exfiltrated using a custom format<\/em><\/figcaption><\/figure><\/div>\n\n\n<p><strong>PyHook<\/strong> is used to hook into the Windows operating system to capture user input events, monitoring both the keyboard (keystrokes) and the mouse.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"699\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/23-1024x699.jpg\" alt=\"\" class=\"wp-image-11106\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/23-1024x699.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/23-300x205.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/23-768x525.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/23-370x253.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/23-270x184.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/23-740x505.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/23.jpg 1208w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Keylogger implementation using pyHook to capture keystrokes and clipboard events<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>And so the code reaches its <em>EOF<\/em>. Let\u2019s return to the simulation to examine the resulting <strong>IOCs<\/strong> and see what conclusions we can draw from them.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Chasing a Ferret: IOCs &amp; TTPs<\/strong><\/h2>\n\n\n\n<p>This playful threat left quite a mess, so let\u2019s summarize the indicators gathered so far. Remember that the earlier stage, <strong>BeaverTail<\/strong>, downloads a portable <strong>Python<\/strong> runtime (\u2018<em>p.zip<\/em>\u2019) from the <em>\/pdown<\/em> endpoint to run <strong>InvisibleFerret<\/strong>, meaning indicators from that activity are also included.<\/p>\n\n\n\n<p><em>SHA256:<\/em><em>47830f7007b4317dc8ce1b16f3ae79f9f7e964db456c34e00473fba94bb713eb<\/em><\/p>\n\n\n\n<p><em>SHA256:<\/em><em>6a104f07ab6c5711b6bc8bf6ff956ab8cd597a388002a966e980c5ec9678b5b0<\/em><\/p>\n\n\n\n<p><em>Filename:p.zip<\/em><\/p>\n\n\n\n<p><em>IPV4:147[.]124[.]214[.]129<\/em><\/p>\n\n\n\n<p><em>IPV4:173[.]211[.]106[.]101<\/em><\/p>\n\n\n\n<p><em>URL:http:\/\/147[.]124[.]214[.]129:1244<\/em><\/p>\n\n\n\n<p><em>URL:http:\/\/147[.]124[.]214[.]129:1244\/keys<\/em><\/p>\n\n\n\n<p><em>URL:http:\/\/147[.]124[.]214[.]129:1244\/pdown<\/em><\/p>\n\n\n\n<p><em>URL:http:\/\/173[.]211[.]106[.]101:1245<\/em><\/p>\n\n\n\n<p><em>URL:http:\/\/173[.]211[.]106[.]101:1245\/brow<\/em><\/p>\n\n\n\n<p><em>URL:http:\/\/173[.]211[.]106[.]101:1245\/bow<\/em><\/p>\n\n\n\n<p><em>URL:http:\/\/173[.]211[.]106[.]101:1245\/adc<\/em><\/p>\n\n\n\n<p>These indicators can be observed in action through <strong>ANY.RUN<\/strong>\u2019s timeline, providing a structured view of how the malware operates in a step-by-step view.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"587\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/24-1024x587.jpg\" alt=\"\" class=\"wp-image-11108\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/24-1024x587.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/24-300x172.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/24-768x440.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/24-370x212.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/24-270x155.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/24-740x424.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/24.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>ANY.RUN\u2019s timeline provides a detailed view of malware behavior, highlighting key actions<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>As previously discussed, not every queried IP or downloaded file is inherently malicious, <em>even if retrieved by malware<\/em>. Many are legitimate packages, dependencies, or services that benefit the broader community but are sometimes misused by bad actors. We can\u2019t label a tool or artifact as an <strong>Indicator of Compromise<\/strong> simply because it\u2019s used by malicious actors.<\/p>\n\n\n\n<p>However, we can trace behaviors, such as \u201c<em>this bad actor uses this API to geolocate victims<\/em>\u201d or \u201c<em>this actor frequently relies on this remote desktop solution for persistence<\/em>\u201d. These behaviors are the essence of <strong>TTPs: Tactics, Techniques, and Procedures<\/strong>\u2014essentially, <em>how an actor operates and achieves its objectives<\/em>.<\/p>\n\n\n\n<!-- CTA Split START -->\n<div class=\"cta-split\">\n<div class=\"cta__split-left\">\n\n<!-- Image -->\n<img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/mcusercontent.com\/663b94f19348582a8dc323efe\/images\/0d88188b-3e89-2314-5a60-cb87e8077326.png\" alt=\"Learn to analyze malware in a sandbox\" class=\"cta__split-icon\" \/>\n<\/div>\n\n<div class=\"cta__split-right\">\n<div>\n\n<!-- Heading -->\n<h3 class=\"cta__split-heading\"><br>Learn to analyze cyber threats<\/h3>\n\n<!-- Text -->\n<p class=\"cta__split-text\">\nSee a detailed guide to using ANY.RUN&#8217;s <span class=\"highlight\">Interactive Sandbox<\/span> for malware and phishing analysis\n<br \/>\n<br \/>\n<\/p>\n<\/div>\n<!-- CTA Link -->\n<a target=\"_blank\" rel=\"noopener\" id=\"article-banner-split\" href=\"https:\/\/any.run\/cybersecurity-blog\/malware-analysis-in-a-sandbox\/\"><div class=\"cta__split-link\">Read full guide<\/div><\/a>\n<\/div>\n<\/div>\n<!-- CTA Split END -->\n<!-- CTA Split Styles START -->\n<style>\n.cta-split {\noverflow: hidden;\nmargin: 3rem 0;\ndisplay: grid;\njustify-items: center;\nborder-radius: 0.5rem;\nwidth: 100%;\nmin-height: 25rem;\ngrid-template-columns: repeat(2, 1fr);\nborder: 1px solid rgba(75, 174, 227, 0.32);\nfont-family: 'Catamaran Bold';\n}\n\n.cta__split-left {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nheight: 100%;\nwidth: 100%;\nbackground-color: #161c59;\nbackground-position: center center;\nbackground: rgba(32, 168, 241, 0.1);\n}\n\n.cta__split-icon { \nwidth: 100%;\nheight: auto;\nobject-fit: contain;\nmax-width: 100%;\n}\n\n.cta__split-right {\ndisplay: flex;\nflex-direction: column;\njustify-content: space-between;\npadding: 2rem;\n}\n\n.cta__split-heading { font-size: 1.5rem; }\n\n.cta__split-text {\nmargin-top: 1rem;\nfont-family: Lato, Roboto, sans-serif;\n}\n\n.cta__split-link {\npadding: 0.5rem 1rem;\nfont-weight: 500;\ntext-decoration: none;\nborder-radius: 0.5rem;\ncolor: white;\nbackground-color: #1491D4;\ntext-align: center;\ntransition: all 0.2s ease-in;\ndisplay: block;\nz-index: 1000;\nposition: relative;\ncursor: pointer !important;\n}\n\n.cta__split-link:hover {\nbackground-color: #68CBFF;\ncolor: white;\ncursor: pointer;\n}\n\n.highlight { color: #ea2526;}\n\n\n\/* Mobile styles START *\/\n@media only screen and (max-width: 768px) {\n\n.cta-split {\ngrid-template-columns: 1fr;\nmin-height: auto;\n}\n\n.cta__split-left {\nheight: auto;\nmin-height: 10rem;\n}\n\n\n.cta__split-left, .cta__split-right {\nheight: auto;\n}\n\n.cta__split-heading { font-size: 1.2rem; }\n\n.cta__split-text { font-size: 1rem; }\n.cta__split-icon {\nmax-height: auto;\nobject-fit: cover;\n}\n\n}\n\/* Mobile styles END *\/\n<\/style>\n<!-- CTA Split Styles END -->\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"495\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/25-1024x495.jpg\" alt=\"\" class=\"wp-image-11110\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/25-1024x495.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/25-300x145.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/25-768x371.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/25-370x179.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/25-270x131.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/25-740x358.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/25.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>ANY.RUN maps IOCs to techniques used by InvisibleFerret<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>Contextualizing these threats helps researchers and the broader community standardize threat <em>behaviors<\/em>, improving their understanding and making collaboration more effective. For example, a threat actor (or malware) querying <em>ip-api<\/em> to geolocate a victim and another one using a different service for the same purpose both fall under the <a href=\"https:\/\/attack.mitre.org\/techniques\/T1016\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>T1016<\/u><\/a> technique, \u201c<strong>System Network Configuration Discovery<\/strong>\u201d, in general terms. While their actions at a more specific level are classified as <strong>Procedures<\/strong>, grouping them under a shared taxonomy significantly reduces information fragmentation and organizes data in a structured manner.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"734\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/26-1024x734.jpg\" alt=\"\" class=\"wp-image-11112\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/26-1024x734.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/26-300x215.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/26-768x550.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/26-370x265.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/26-270x194.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/26-740x530.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/26.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>With proper context, a query to ip-api.com becomes T1016<\/em><\/figcaption><\/figure><\/div>\n\n\n<p>The same applies to the other behaviors discussed in this article, such as using an unusual port to connect to a service. These actions fall under <a href=\"https:\/\/attack.mitre.org\/techniques\/T1571\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>T1571<\/u><\/a>, regardless of the specific port, protocol, or direction used.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"734\" src=\"\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/27-1024x734.jpg\" alt=\"\" class=\"wp-image-11114\" srcset=\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/27-1024x734.jpg 1024w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/27-300x215.jpg 300w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/27-768x550.jpg 768w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/27-370x265.jpg 370w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/27-270x194.jpg 270w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/27-740x530.jpg 740w, https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/27.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>As before, adding context to an unusual connection renders T1571<\/em><\/figcaption><\/figure><\/div>\n\n\n<p><strong>ANY.RUN<\/strong>\u2019s direct integration with the <a href=\"https:\/\/any.run\/cybersecurity-blog\/mitre-ttps-in-ti-lookup\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>MITRE ATT&amp;CK Matrix<\/strong><\/a> simplifies the <strong>TTP<\/strong> mapping process by assembling it in real time.<\/p>\n\n\n\n<p>That said, I think we\u2019ve had enough playtime with our pet\u2014it\u2019s time to put the ferret back in its cage.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Ferret Fever<\/strong><\/h2>\n\n\n\n<p>These campaigns involve large investments not only in infrastructure and human resources but also in developing quite convincing scenarios, like a fake job interview where you are asked to run a coding challenge or download a meeting software, which may seem completely normal if you don\u2019t overthink it.<\/p>\n\n\n\n<p>Always double-check job offers, don\u2019t run software from unknown origins on your company equipment, stay safe out there, and whatever your situation is, <strong>don\u2019<\/strong><strong>t befriend ferrets<\/strong>, <em>invisible<\/em> or <em>pretty visible ones<\/em> alike.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">About ANY.RUN<\/h2>\n\n\n\n<p>ANY.RUN helps more than 500,000 cybersecurity professionals worldwide. Our <a href=\"https:\/\/any.run\/?utm_source=anyrunblog&amp;utm_medium=article&amp;utm_campaign=invisibleferret_analysis&amp;utm_term=210125&amp;utm_content=linktolanding\" target=\"_blank\" rel=\"noreferrer noopener\">interactive sandbox<\/a> simplifies malware analysis of threats that target both Windows and <a href=\"https:\/\/any.run\/cybersecurity-blog\/linux-malware-analysis-cases\/\" target=\"_blank\" rel=\"noreferrer noopener\">Linux<\/a> systems. Our threat intelligence products, <a href=\"https:\/\/any.run\/cybersecurity-blog\/introducing-any-run-threat-intelligence-lookup\/\" target=\"_blank\" rel=\"noreferrer noopener\">TI Lookup<\/a>, <a href=\"https:\/\/any.run\/cybersecurity-blog\/yara-search\/\" target=\"_blank\" rel=\"noreferrer noopener\">YARA Search<\/a> and <a href=\"https:\/\/any.run\/cybersecurity-blog\/ti-feeds-integration\/\" target=\"_blank\" rel=\"noreferrer noopener\">Feeds<\/a>, help you find <a href=\"https:\/\/any.run\/cybersecurity-blog\/indicators-of-compromise\/\" target=\"_blank\" rel=\"noreferrer noopener\">IOCs<\/a> or files to learn more about the threats and respond to incidents faster.&nbsp;&nbsp;<\/p>\n\n\n\n<p><strong>With ANY.RUN you can:<\/strong>&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Detect malware in seconds<\/li>\n\n\n\n<li>Interact with samples in real time<\/li>\n\n\n\n<li>Save time and money on sandbox setup and maintenance<\/li>\n\n\n\n<li>Record and study all aspects of malware behavior<\/li>\n\n\n\n<li>Collaborate with your team&nbsp;<\/li>\n\n\n\n<li>Scale as you need<\/li>\n<\/ul>\n\n\n\n<p><a href=\"https:\/\/any.run\/demo\/?utm_source=anyrunblog&amp;utm_medium=article&amp;utm_campaign=invisibleferret_analysis&amp;utm_term=210125&amp;utm_content=linktodemo\" target=\"_blank\" rel=\"noreferrer noopener\">Get a 14-day free trial to test all features of ANY.RUN&#8217;s Interactive Sandbox \u2192<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Editor&#8217;s note: The current article is authored by Mauro Eldritch, offensive security expert and threat intelligence analyst. You can find Mauro on X. Recently, during October and November, we observed a rise in North Korean activity employing a well-known and distinctive technique: staging job interview processes to spread multiple malware families. This signature technique was [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":11135,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[57,10,34,40],"class_list":["post-11077","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-malware-analysis","tag-anyrun","tag-cybersecurity","tag-malware-analysis","tag-malware-behavior"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.10 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>InvisibleFerret Malware: Technical Analysis - ANY.RUN&#039;s Cybersecurity Blog<\/title>\n<meta name=\"description\" content=\"Discover a detailed technical analysis of the InvisibleFerret malware that targets businesses across different industries.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mauro Eldritch\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/\"},\"author\":{\"name\":\"Mauro Eldritch\",\"@id\":\"https:\/\/any.run\/\"},\"headline\":\"InvisibleFerret Malware: Technical Analysis\",\"datePublished\":\"2025-01-21T10:29:25+00:00\",\"dateModified\":\"2025-01-22T06:55:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/\"},\"wordCount\":2134,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/any.run\/\"},\"keywords\":[\"ANYRUN\",\"cybersecurity\",\"malware analysis\",\"malware behavior\"],\"articleSection\":[\"Malware Analysis\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/\",\"url\":\"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/\",\"name\":\"InvisibleFerret Malware: Technical Analysis - ANY.RUN&#039;s Cybersecurity Blog\",\"isPartOf\":{\"@id\":\"https:\/\/any.run\/\"},\"datePublished\":\"2025-01-21T10:29:25+00:00\",\"dateModified\":\"2025-01-22T06:55:50+00:00\",\"description\":\"Discover a detailed technical analysis of the InvisibleFerret malware that targets businesses across different industries.\",\"breadcrumb\":{\"@id\":\"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/any.run\/cybersecurity-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Malware Analysis\",\"item\":\"https:\/\/any.run\/cybersecurity-blog\/category\/malware-analysis\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"InvisibleFerret Malware: Technical Analysis\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/any.run\/\",\"url\":\"https:\/\/any.run\/\",\"name\":\"ANY.RUN&#039;s Cybersecurity Blog\",\"description\":\"Cybersecurity Blog covers topics for experienced professionals as well as for those new to it.\",\"publisher\":{\"@id\":\"https:\/\/any.run\/\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/any.run\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/any.run\/\",\"name\":\"ANY.RUN\",\"url\":\"https:\/\/any.run\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/any.run\/\",\"url\":\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2020\/08\/ANYRUN-Icon.svg\",\"contentUrl\":\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2020\/08\/ANYRUN-Icon.svg\",\"width\":1,\"height\":1,\"caption\":\"ANY.RUN\"},\"image\":{\"@id\":\"https:\/\/any.run\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/www.any.run\/\",\"https:\/\/twitter.com\/anyrun_app\",\"https:\/\/www.linkedin.com\/company\/30692044\",\"https:\/\/www.youtube.com\/channel\/UCOgCPho7lzmH7m6fPNlukrQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/any.run\/\",\"name\":\"Mauro Eldritch\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/any.run\/\",\"url\":\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/Mauro-copy.jpeg\",\"contentUrl\":\"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/Mauro-copy.jpeg\",\"caption\":\"Mauro Eldritch\"},\"description\":\"Mauro Eldritch is an Argentinian-Uruguayan hacker, founder of BCA LTD and DC5411 (Argentina \/ Uruguay). He has spoken at various events, including DEF CON (12 times). He is passionate about Threat Intelligence and Biohacking.\u00a0He currently leads Bitso\u2019s Quetzal Team, the first in Latin America dedicated to Web3 Threat Research. Follow Mauro on: X LinkedIn GitHub\",\"url\":\"#molongui-disabled-link\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"InvisibleFerret Malware: Technical Analysis - ANY.RUN&#039;s Cybersecurity Blog","description":"Discover a detailed technical analysis of the InvisibleFerret malware that targets businesses across different industries.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/","twitter_misc":{"Written by":"Mauro Eldritch","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/#article","isPartOf":{"@id":"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/"},"author":{"name":"Mauro Eldritch","@id":"https:\/\/any.run\/"},"headline":"InvisibleFerret Malware: Technical Analysis","datePublished":"2025-01-21T10:29:25+00:00","dateModified":"2025-01-22T06:55:50+00:00","mainEntityOfPage":{"@id":"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/"},"wordCount":2134,"commentCount":0,"publisher":{"@id":"https:\/\/any.run\/"},"keywords":["ANYRUN","cybersecurity","malware analysis","malware behavior"],"articleSection":["Malware Analysis"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/","url":"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/","name":"InvisibleFerret Malware: Technical Analysis - ANY.RUN&#039;s Cybersecurity Blog","isPartOf":{"@id":"https:\/\/any.run\/"},"datePublished":"2025-01-21T10:29:25+00:00","dateModified":"2025-01-22T06:55:50+00:00","description":"Discover a detailed technical analysis of the InvisibleFerret malware that targets businesses across different industries.","breadcrumb":{"@id":"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/any.run\/cybersecurity-blog\/invisibleferret-malware-analysis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/any.run\/cybersecurity-blog\/"},{"@type":"ListItem","position":2,"name":"Malware Analysis","item":"https:\/\/any.run\/cybersecurity-blog\/category\/malware-analysis\/"},{"@type":"ListItem","position":3,"name":"InvisibleFerret Malware: Technical Analysis"}]},{"@type":"WebSite","@id":"https:\/\/any.run\/","url":"https:\/\/any.run\/","name":"ANY.RUN&#039;s Cybersecurity Blog","description":"Cybersecurity Blog covers topics for experienced professionals as well as for those new to it.","publisher":{"@id":"https:\/\/any.run\/"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/any.run\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/any.run\/","name":"ANY.RUN","url":"https:\/\/any.run\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/any.run\/","url":"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2020\/08\/ANYRUN-Icon.svg","contentUrl":"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2020\/08\/ANYRUN-Icon.svg","width":1,"height":1,"caption":"ANY.RUN"},"image":{"@id":"https:\/\/any.run\/"},"sameAs":["https:\/\/www.facebook.com\/www.any.run\/","https:\/\/twitter.com\/anyrun_app","https:\/\/www.linkedin.com\/company\/30692044","https:\/\/www.youtube.com\/channel\/UCOgCPho7lzmH7m6fPNlukrQ"]},{"@type":"Person","@id":"https:\/\/any.run\/","name":"Mauro Eldritch","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/any.run\/","url":"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/Mauro-copy.jpeg","contentUrl":"https:\/\/any.run\/cybersecurity-blog\/wp-content\/uploads\/2025\/01\/Mauro-copy.jpeg","caption":"Mauro Eldritch"},"description":"Mauro Eldritch is an Argentinian-Uruguayan hacker, founder of BCA LTD and DC5411 (Argentina \/ Uruguay). He has spoken at various events, including DEF CON (12 times). He is passionate about Threat Intelligence and Biohacking.\u00a0He currently leads Bitso\u2019s Quetzal Team, the first in Latin America dedicated to Web3 Threat Research. Follow Mauro on: X LinkedIn GitHub","url":"#molongui-disabled-link"}]}},"_links":{"self":[{"href":"https:\/\/any.run\/cybersecurity-blog\/wp-json\/wp\/v2\/posts\/11077"}],"collection":[{"href":"https:\/\/any.run\/cybersecurity-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/any.run\/cybersecurity-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/any.run\/cybersecurity-blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/any.run\/cybersecurity-blog\/wp-json\/wp\/v2\/comments?post=11077"}],"version-history":[{"count":33,"href":"https:\/\/any.run\/cybersecurity-blog\/wp-json\/wp\/v2\/posts\/11077\/revisions"}],"predecessor-version":[{"id":11143,"href":"https:\/\/any.run\/cybersecurity-blog\/wp-json\/wp\/v2\/posts\/11077\/revisions\/11143"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/any.run\/cybersecurity-blog\/wp-json\/wp\/v2\/media\/11135"}],"wp:attachment":[{"href":"https:\/\/any.run\/cybersecurity-blog\/wp-json\/wp\/v2\/media?parent=11077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/any.run\/cybersecurity-blog\/wp-json\/wp\/v2\/categories?post=11077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/any.run\/cybersecurity-blog\/wp-json\/wp\/v2\/tags?post=11077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}