<span id="hs_cos_wrapper_post_body" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_rich_text" style="" data-hs-cos-general-type="meta_field" data-hs-cos-type="rich_text" ><p>Obfuscation in malware delivery has always been an effective trick in a cybercriminal’s toolbox—concealing the true intentions of code so it can slip past detection and remain hidden as long as possible. Recently, our ThreatSTOP Intelligence, Research, and Security (TIS) Team, uncovered a surge of traffic targeting <span><strong>IP 139.45.197.242</strong></span>, which telemetry shows is a primary hosting point for malicious domains serving heavily obfuscated pop-up/pop-under scripts used in phishing campaigns.</p> <!--more--><p><strong>What We Found</strong></p> <p>Upon analyzing the malicious JavaScript, we discovered a large block of code, packed with deceptive function names, scrambled variables, and random string transformations. The purpose? Injecting forced pop-ups, redirects, and overlay ads that lead unsuspecting users to phishing pages or potentially malicious content. This stealthy approach helps attackers hide from conventional detection methods and frustrate would-be debuggers by throwing up multiple layers of obfuscation.</p> <p>We're not going to include the code directly in the blog post, but we'll post a screenshot of it so you can see, clearly, this is not meant to be figured out easily:</p> <p><img src="https://www.threatstop.com/hubfs/Screenshot%202025-02-20%20at%2012.33.20.png" width="3210" height="2424" loading="lazy" alt="Screenshot 2025-02-20 at 12.33.20" style="height: auto; max-width: 100%; width: 3210px;"></p> <p>Here’s a high-level look at what this code does:</p> <p><span>1. </span><strong>Pop-Up and Redirect Logic</strong></p> <p>The script secretly rewrites links, hooking into user clicks to open pop-ups or forcibly redirect them to attacker-controlled sites.</p> <p><span>2. </span><strong>Session and Click Tracking</strong></p> <p>The code stores data on how many times it has displayed an ad or forced a redirect, so it can pace itself—thus avoiding immediate suspicion.</p> <p><span>3. </span><strong>Anti-Debugging Tactics</strong></p> <p>By measuring function runtimes and checking for certain DevTools signatures, the script can alter its behavior or shut down if it detects a security analyst’s presence.</p> <p><span>4. </span><strong>Persistent Updates</strong></p> <p>The attacker regularly updates the code or domain endpoints. The IP we identified—<span><strong>139.45.197.242</strong></span>—hosts many of these domains, signaling a persistent campaign that pivots quickly when one host is blocked. &nbsp;We'll include the domains we're seeing our telemetry at the appendix to the blog post.</p> <p><span style="font-weight: bold;">In the weeds</span>:</p> <p>In short, it is a pop‑up/pop‑under/redirect “ad loader” script. It has a lot of logic to hook user clicks, bypass pop‐up blockers, track impressions, store information in cookies/localStorage, and optionally detect if developer tools are open. The script is heavily obfuscated so that all of this ad/redirect behavior is hidden under weird variable names and large inline data structures.<br><br><span style="font-weight: bold;">High‐Level Behavior</span></p> <p>&nbsp; &nbsp; 1. &nbsp; &nbsp;<span style="font-weight: bold;">Environment &amp; Feature Detection</span><br>The script checks many environment details—things like:<br>&nbsp; &nbsp; • &nbsp; &nbsp;Whether the browser has certain plugins installed<br>&nbsp; &nbsp; • &nbsp; &nbsp;Whether navigator or document includes certain properties<br>&nbsp; &nbsp; • &nbsp; &nbsp;Whether the user might be in DevTools<br>&nbsp; &nbsp; • &nbsp; &nbsp;Whether local or session storage is available<br>This is done to decide which “pop‑under” or “redirect” technique will work best without being blocked.</p> <p><br>&nbsp; &nbsp; 2. &nbsp; &nbsp;<span style="font-weight: bold;">Setting Event Listeners</span><br>It listens for user interactions (like click, mousedown, touchstart, etc.) on the page. Whenever the user first interacts, the script:<br>&nbsp; &nbsp; • &nbsp; &nbsp;May open pop‐ups/pop‐unders<br>&nbsp; &nbsp; • &nbsp; &nbsp;May rewrite anchor tags (so a normal link becomes a forced pop‐up)<br>&nbsp; &nbsp; • &nbsp; &nbsp;Often tries to do it on the “first click” or “first valid click” to get around modern browser restrictions.</p> <p><br>&nbsp; &nbsp; 3. &nbsp; &nbsp;<span style="font-weight: bold;">Pop‑Under and Redirect Logic</span><br>There is elaborate logic for:<br>&nbsp; &nbsp; • &nbsp; &nbsp;Pop‐under vs. pop‐up: picking which window‐opening approach to use<br>&nbsp; &nbsp; • &nbsp; &nbsp;Interstitial flows: sometimes shows an interstitial ad if you click back or close a tab<br>&nbsp; &nbsp; • &nbsp; &nbsp;“<code>OnCloseInterstitialUrl</code>” or “smart overlay” references: hooking up overlay ads or full‐page pop‐ups<br>&nbsp; &nbsp; • &nbsp; &nbsp;Checking if the user has already been shown a pop‐up (tracking via cookie or local storage) so it does not spam too many times.</p> <p><br>&nbsp; &nbsp; 4. &nbsp; &nbsp;<span style="font-weight: bold;">Session/Click Counting</span><br>You see code that increments click counts, sets timeouts, or reads/writes “how many times we have shown an ad.” That’s to limit (or sometimes ensure) a certain number of forced ads per session. For example, isImpressionAvailable or shouldImpressionBeCollected methods track the “session counters” or “impression counters.”</p> <p><br>&nbsp; &nbsp; 5. &nbsp; &nbsp;<span style="font-weight: bold;">Prefetching Ad URLs</span><br>It will sometimes “prefetch” an ad URL—i.e. it sends a hidden request beforehand—so that when you do click, it can redirect you more reliably. This helps avoid slow ad servers or pop‐up blockers.</p> <p><br>&nbsp; &nbsp; 6. &nbsp; &nbsp;<span style="font-weight: bold;">Obfuscation</span><br>&nbsp; &nbsp; • &nbsp; &nbsp;Dozens of single‐letter or two‐letter properties (e.g. <code>V, rK, KK, jK</code>) that map to bizarre string constants<br>&nbsp; &nbsp; • &nbsp; &nbsp;The script uses a big object/dictionary that re‐maps short keys to strings or regex patterns.<br>&nbsp; &nbsp; • &nbsp; &nbsp;A function like <code>Pe(...)</code> or <code>p(...)</code> that decodes/munges strings at runtime.<br>&nbsp; &nbsp; • &nbsp; &nbsp;Large “enums” stored in variables like <code>mr, fr</code>, etc. that stand for different internal codes or status flags.</p> <p><br>&nbsp; &nbsp; 7. &nbsp; &nbsp;<span style="font-weight: bold;">Developer Tools “Anti‐Debug”</span><br>There are references to <code>getComputedStyle</code> checks, intervals, or code that times how long a function call took. This is typically used by ad scripts to see if someone has DevTools open (for example, certain properties read slower under breakpoint). If it detects that, it may abort or reduce functionality so the user can’t easily debug or tamper with the script.</p> <p><br>&nbsp; &nbsp; 8. &nbsp; &nbsp;<span style="font-weight: bold;">Final Payload</span><br>The very last line is a monstrous gibberish invocation:<br><br><code><span style="font-family: 'Courier New', Courier, monospace;">("c.#i6M.#.J.#.4.4Z#llBWi5oo6#i.)=ow.4.n65.Ge.x=K.x.T&amp;M.Xo.|3.QW....")</span></code><br><br>That’s basically a giant obfuscated string the script decodes or interprets to get its final config (domains, zone IDs, tracking parameters, etc.). The code near the top,<br><br><code><span style="font-family: 'Courier New', Courier, monospace;">(function(lczxsusin) {</span></code><br><code><span style="font-family: 'Courier New', Courier, monospace;">&nbsp; &nbsp; ...</span></code><br><code><span style="font-family: 'Courier New', Courier, monospace;">})("c.#i6M.#.J.#.4.4Z#llBWi5oo6#i...)"</span></code><br><br>simply calls the whole “engine” with that big scrambled argument, so the script can set up its ad logic.<br><br>What It’s Actually Doing (In Plain Terms)<br>&nbsp; &nbsp; • &nbsp; &nbsp;Primary Goal: Force the user’s browser to open ads—pop‐ups, pop‐unders, or forced redirects—on the user’s first click or on subsequent clicks.<br>&nbsp; &nbsp; • &nbsp; &nbsp;Avoid Blockers &amp; Quotas: Hides inside normal click handlers, tries multiple fallback methods, and uses localStorage/cookies to see if it’s already shown an ad.<br>&nbsp; &nbsp; • &nbsp; &nbsp;Hide &amp; Confuse: The script is stuffed with random variables and references (like <code>V.e, V.x, V.L</code>, etc.) to break up the real logic flow. This is standard “adware obfuscation.”<br><br>Key Points in the Code<br>&nbsp; &nbsp; • &nbsp; &nbsp;<code>function ve(t,e,r)</code> – Hooks up events to the document or window, such as onclick, mousedown, etc., to trigger the ad opening.<br>&nbsp; &nbsp; • &nbsp; &nbsp;<code>function Ft(t,e)</code> – One of the “open pop‐up/pop‐under” routines, deciding how to open a new window or rewrite a link if you click an anchor.<br>&nbsp; &nbsp; • &nbsp; &nbsp;<code>function Lt(t,e,r,n)</code> – Overlays or “smart overlay” logic; also controlling advanced “interstitial” or “overlay” ads.<br>&nbsp; &nbsp; • &nbsp; &nbsp;<code>function br()</code> – In some code, you see references to br() or “cookie sync.” This is so the script can keep track of user data across domains or iframes.<br>&nbsp; &nbsp; • &nbsp; &nbsp;<code>function Pt() / function Nt() / function Bt()</code> – Variation of the same “open a new window or rewrite the anchor tag, then call track/ log.”<br>&nbsp; &nbsp; • &nbsp; &nbsp;Lots of <code>setInterval</code>, <code>setTimeout</code>, watchers that keep rechecking whether the user’s environment changed—dev tools open, or new clicks, etc.<br><br><span style="font-weight: bold;">Bottom Line</span><br><br>This is a pop‐up/pop‐under ad script with all the usual trimmings:<br>&nbsp; &nbsp; • &nbsp; &nbsp;Hooks user clicks<br>&nbsp; &nbsp; • &nbsp; &nbsp;Does forced opens/redirects<br>&nbsp; &nbsp; • &nbsp; &nbsp;Tracks usage, impressions, concurrency<br>&nbsp; &nbsp; • &nbsp; &nbsp;Obfuscated with big dictionaries and weird variable references<br>&nbsp; &nbsp; • &nbsp; &nbsp;Optionally tries to detect dev tools or debugging<br><br>All of that is typical for “forced redirect” or “pop‐under ad” providers that want to avoid easy detection or blocking.</p> <p><strong>Why It’s Dangerous</strong></p> <p>This obfuscated JavaScript is more than mere nuisance pop-up spam. At scale, such code often funnels users to phishing pages crafted to steal credentials or payment information. In some of my past work at previous companies, I would see javascript like this inside of exploit kits It may also redirect victims to exploit kits delivering malware that can compromise their entire system. The layering of obfuscation indicates that threat actors are actively investing in advanced evasion techniques, making it critical to have proactive protections in place.</p> <p>&nbsp;</p> <p><strong>How ThreatSTOP’s Proactive Protections Help</strong></p> <p><span>1. </span><strong>DNS Defense Cloud</strong></p> <p>Protect endpoints wherever they roam by pointing them to ThreatSTOP’s cloud-based DNS service. This instantly blocks lookups to malicious domains—including those behind suspicious pop-up code—based on ThreatSTOP intelligence.</p> <p><span>2. </span><strong>DNS Defense</strong></p> <p>For organizations that run their own DNS resolvers on-premises, ThreatSTOP integrates directly into your existing servers. This offers the same robust intelligence enforcement as our cloud service, proactively blocking malicious endpoints before they can impact users.</p> <p>Together, <span><strong>DNS Defense Cloud</strong></span> and <span><strong>DNS Defense</strong></span> form our <span><strong>Protective DNS</strong></span> suite, designed to filter out threats in real time.</p> <p><span>3. </span><strong>IP Defense</strong></p> <p>Malicious code often relies on rogue IP addresses. With IP Defense, you can proactively manage a block list across routers, firewalls, IPS devices, AWS WAF, and more—ensuring that threat actors can’t establish inbound or outbound communication with your network.</p> <p>&nbsp;</p> <p><strong>ThreatSTOP Intelligence, Research, and Security (TIS) Team</strong></p> <p>The malicious domains behind IP 139.45.197.242 showcase how attackers can quickly pivot their hosting infrastructure. The ThreatSTOP TIS Team continuously tracks threats like command and control activity, invalid traffic, peer-to-peer connections, data exfiltration, phishing, spam, and DDoS endpoints. As new campaigns emerge, they create updated protections that are automatically delivered to our customers’ environments—providing round-the-clock coverage against a wide range of malicious activity. &nbsp;This IP and the domains associated with it have been blocked in our product line.</p> <p>&nbsp;</p> <p><strong>Connect with Customers, Disconnect from Risks</strong></p> <p>For those interested in joining the ThreatSTOP family, or to learn more about our proactive protections for all environments, we invite you to visit our&nbsp;<a href="/threatstop-platform" rel="noopener" target="_blank">product page</a>. Discover how our solutions can make a significant difference in your digital security landscape. We have&nbsp;pricing&nbsp;for all sizes of customers!&nbsp;Get started with a Demo today!</p> <p style="font-weight: bold;">IOCs:</p> <p style="font-weight: normal;">139.45.197.242</p> <p style="font-weight: normal;">gloolsukre[.]com<br>shagrixove[.]com<br>choomopteet[.]com<br>neechaipoad[.]com<br>oartoopesti[.]com<br>ptirsuckais[.]com<br>thumumoucku[.]com<br>faphomtotapt[.]com<br>greewoabaikr[.]com<br>jozekupteesh[.]com<br>oalseessonoo[.]com<br>oargusongous[.]com<br>woawewostoas[.]com<br>zidreersatsy[.]com<br>aughoomsoushy[.]com<br>fagloafexeele[.]com<br>phopaushoutch[.]com<br>pseexauboorsu[.]com<br>thautsooladsu[.]com<br>bijophomsorsig[.]com<br>chossoovauthuh[.]com<br>gorgadricmitsu[.]com<br>taiteemozathou[.]com<br>ekoortouksalert[.]com<br>glaigaunsoroogh[.]com<br>ofobsilreehoukr[.]com<br>pokastaiptoalto[.]com<br>raicaustenuphoo[.]com<br>caihaujeer[.]net<br>chetsoamta[.]net<br>dolsukophe[.]net<br>geeburouje[.]net<br>mufackoopt[.]net<br>numaigluwo[.]net<br>oofegleemy[.]net<br>pashulroak[.]net<br>piwhourumt[.]net<br>stouksomsi[.]net<br>behaiptoube[.]net<br>dauzaiwhaig[.]net<br>shedroobsoa[.]net<br>shuwoockoun[.]net<br>uhartomoaks[.]net<br>vodsoamsoun[.]net<br>apauzauxauls[.]net<br>chirsaidsoun[.]net<br>foupeestokiy[.]net<br>glabsuckoupy[.]net<br>grikooghoakr[.]net<br>halraingitsy[.]net<br>nauthaugroce[.]net<br>oaweekoorsew[.]net<br>sodreegrocee[.]net<br>southeestais[.]net<br>staimpaissoy[.]net<br>steetsoftehy[.]net<br>veewheephime[.]net<br>voptosteejee[.]net<br>whailacelump[.]net<br>bimaissebsiph[.]net<br>laushosoujedu[.]net<br>masouckomirtu[.]net<br>moaloamoaruno[.]net<br>naumezeephovy[.]net<br>oackaudrikrul[.]net<br>oastoarsewaip[.]net<br>shisheghustou[.]net<br>vouphoanooque[.]net<br>widrelroalrie[.]net<br>woojouthoowoa[.]net<br>boazeerizeepsi[.]net<br>jimtighoafoorg[.]net<br>oamoacirdaures[.]net<br>pauleeroupsacu[.]net<br>ptaujursissain[.]net<br>sorsoazucmumso[.]net<br>steemozoomeepi[.]net<br>suchizainsairg[.]net<br>tudroutchaigne[.]net<br>edoxoonsackefte[.]net<br>gouloaroustalun[.]net<br>ivaursersaipaul[.]net<br>ounoaksivoutsim[.]net<br>phoukriphoossid[.]net<br>soglaiksouphube[.]net<br>terumoumsaibsoa[.]net<br>toatobaijauvoly[.]net<br>whidsugnoackili[.]net<br>woakathugraimoh[.]net<br>woathaphachainy[.]net<br>wugoughurtaitsu[.]net<br>zoogoucaitakast[.]net<br>ocheejacheb[.]xyz<br>sterteeraisti[.]xyz<br>fauseepetoozuk[.]xyz<br>koomoaboatapoa[.]xyz<br>rilseessinipto[.]xyz<br>cugaksoogleptix[.]xyz<br>dooptoupouwhuwu[.]xyz<br>chirsaidsoun[.]net<br>numaigluwo[.]net<br>choomopteet[.]com<br>oofegleemy[.]net<br>toatobaijauvoly[.]net<br>tudroutchaigne[.]net<br>phopaushoutch[.]com<br>oargusongous[.]com<br>dolsukophe[.]net<br>oartoopesti[.]com<br>ofobsilreehoukr[.]com<br>ptaujursissain[.]net<br>zoogoucaitakast[.]net<br>whailacelump[.]net<br>halraingitsy[.]net<br>mufackoopt[.]net<br>gorgadricmitsu[.]com<br>shisheghustou[.]net<br>boazeerizeepsi[.]net<br>chossoovauthuh[.]com<br>thumumoucku[.]com<br>thautsooladsu[.]com</p></span>