TL; ਡਾ
ਜ਼ਾਇਜੇਨੀ ਸੁਰੱਖਿਆ ਖੋਜ ਟੀਮ ਦੋ ਖਤਰਨਾਕ ਪੈਕੇਜਾਂ ਰਾਹੀਂ ਪ੍ਰਦਾਨ ਕੀਤੀ ਗਈ ਇੱਕ ਸੂਝਵਾਨ npm ਇਨਫੋਸਟੀਲਰ ਮੁਹਿੰਮ ਦੀ ਪਛਾਣ ਕੀਤੀ: ਕੰਸੋਲਲੋਫੀ ਅਤੇ ਸੈਲਫ਼ਬੋਟ-ਲੋਫੀ.
ਨਵੀਨਤਮ ਸੰਸਕਰਣ (consolelofy@1.3.0) ਇੱਕ 216KB AES-ਇਨਕ੍ਰਿਪਟਡ ਪੇਲੋਡ ਨੂੰ ਏਮਬੈਡ ਕਰਦਾ ਹੈ ਜੋ ਰਨਟਾਈਮ 'ਤੇ ਡਿਕ੍ਰਿਪਟ ਹੁੰਦਾ ਹੈ ਅਤੇ ਇਸ ਰਾਹੀਂ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ vm.runInNewContext(). ਕਿਉਂਕਿ ਖਤਰਨਾਕ ਤਰਕ ਪੂਰੀ ਤਰ੍ਹਾਂ ਏਨਕ੍ਰਿਪਟ ਕੀਤਾ ਗਿਆ ਹੈ, ਸਟ੍ਰਿੰਗ ਨਿਰੀਖਣ 'ਤੇ ਨਿਰਭਰ ਕਰਨ ਵਾਲੇ ਸਟੈਟਿਕ ਸਕੈਨਰ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਸਮੇਂ ਤੱਕ ਇਸਦੇ ਵਿਵਹਾਰ ਨੂੰ ਨਹੀਂ ਦੇਖ ਸਕਦੇ।
ਇੱਕ ਵਾਰ ਡੀਕ੍ਰਿਪਟ ਹੋਣ ਤੋਂ ਬਾਅਦ, ਪੇਲੋਡ, ਅੰਦਰੂਨੀ ਤੌਰ 'ਤੇ ਬ੍ਰਾਂਡ ਕੀਤਾ ਜਾਂਦਾ ਹੈ Nyx ਸਟੀਲਰ, ਟੀਚੇ:
- ਡਿਸਕਾਰਡ ਪ੍ਰਮਾਣੀਕਰਨ ਟੋਕਨ
- 50+ ਬ੍ਰਾਊਜ਼ਰ ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ ਸਟੋਰ
- 90+ ਕ੍ਰਿਪਟੋਕਰੰਸੀ ਵਾਲੇਟ ਐਕਸਟੈਂਸ਼ਨ
- ਰੋਬਲੋਕਸ, ਇੰਸਟਾਗ੍ਰਾਮ, ਸਪੋਟੀਫਾਈ, ਸਟੀਮ, ਟੈਲੀਗ੍ਰਾਮ, ਅਤੇ ਟਿੱਕਟੌਕ ਸੈਸ਼ਨ
- ਡਿਸਕਾਰਡ ਡੈਸਕਟੌਪ ਕਲਾਇੰਟ ਸਥਿਰਤਾ
ਦੋਵਾਂ ਪੈਕੇਜਾਂ ਦੇ ਸਾਰੇ 20 ਸੰਸਕਰਣਾਂ ਦੀ ਰਿਪੋਰਟ ਕੀਤੀ ਗਈ ਸੀ ਅਤੇ ਇਸਦੀ ਪੁਸ਼ਟੀ ਕੀਤੀ ਗਈ ਸੀ ਕਿ ਇਹ ਖਤਰਨਾਕ ਸਨ।
ਇਸ npm ਇਨਫੋਸਟੇਲਰ ਦਾ ਤਕਨੀਕੀ ਸੰਖੇਪ ਜਾਣਕਾਰੀ
ਰਵਾਇਤੀ ਇੰਸਟਾਲ-ਟਾਈਮ ਮਾਲਵੇਅਰ ਦੇ ਉਲਟ, ਇਹ ਮੁਹਿੰਮ ਇੱਕ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ ਰਨਟਾਈਮ ਡਿਕ੍ਰਿਪਸ਼ਨ ਮਾਡਲ.
ਓਥੇ ਹਨ:
- ਕੋਈ ਖਤਰਨਾਕ ਨਹੀਂ
preinstallorpostinstallhooks - ਕੋਈ ਸਪੱਸ਼ਟ ਇੰਸਟਾਲ-ਟਾਈਮ ਨੈੱਟਵਰਕ ਕਾਲਾਂ ਨਹੀਂ
- ਕੋਈ ਸਾਦਾ ਟੈਕਸਟ ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ ਹਾਰਵੈਸਟਿੰਗ ਤਰਕ ਨਹੀਂ
ਜਦੋਂ ਮੋਡੀਊਲ ਆਯਾਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਤਾਂ ਪੇਲੋਡ ਕਿਰਿਆਸ਼ੀਲ ਹੋ ਜਾਂਦਾ ਹੈ। ਪੂਰਾ ਖਤਰਨਾਕ ਸਰੀਰ ਏਨਕ੍ਰਿਪਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਸਿਰਫ ਰਨਟਾਈਮ 'ਤੇ ਮੈਮੋਰੀ ਵਿੱਚ ਹੀ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ।
ਇਹ ਡਿਜ਼ਾਈਨ ਖਾਸ ਤੌਰ 'ਤੇ ਪੈਕੇਜ ਇੰਸਟਾਲੇਸ਼ਨ ਦੌਰਾਨ ਖੋਜ ਤੋਂ ਬਚਦਾ ਹੈ।
ਇਹ npm ਇਨਫੋਸਟੀਲਰ ਅਸਲ ਵਿੱਚ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ
Nyx Stealer ਕੀ ਚੋਰੀ ਕਰਦਾ ਹੈ ਇਸਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ, ਸਾਨੂੰ ਇਹ ਸਮਝਣ ਦੀ ਲੋੜ ਹੈ ਇਹ ਕਿਵੇਂ ਚਲਾਉਂਦਾ ਹੈ.
ਇਸ npm ਇਨਫੋਸਟੀਲਰ ਦੇ ਅੰਦਰ ਖਤਰਨਾਕ ਤਰਕ ਇੱਕ ਇਕਸਾਰ ਪੈਟਰਨ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ:
ਇੱਕ ਛੋਟਾ ਲੋਡਰ ਇੱਕ ਵੱਡੇ ਏਨਕ੍ਰਿਪਟਡ ਪੇਲੋਡ ਨੂੰ ਡੀਕ੍ਰਿਪਟ ਕਰਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ Node.js VM ਸੰਦਰਭ ਦੇ ਅੰਦਰ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਚਲਾਉਂਦਾ ਹੈ।
ਇਹ ਡਿਜ਼ਾਈਨ ਜਾਣਬੁੱਝ ਕੇ ਕੀਤਾ ਗਿਆ ਹੈ। ਹਮਲਾਵਰ ਸਿਰਫ਼ ਗੁੰਝਲਦਾਰਤਾ ਪਿੱਛੇ ਕਾਰਜਸ਼ੀਲਤਾ ਨੂੰ ਨਹੀਂ ਲੁਕਾ ਰਿਹਾ ਹੈ, ਉਹ ਹਨ ਸਥਿਰ ਦ੍ਰਿਸ਼ਟੀ ਤੋਂ ਖਤਰਨਾਕ ਕੋਡ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਹਟਾਉਣਾ.
ਉੱਚ-ਪੱਧਰੀ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਮਾਡਲ
ਉੱਚ ਪੱਧਰ 'ਤੇ, ਰੈਪਰ ਚਾਰ ਕੰਮ ਕਰਦਾ ਹੈ:
- SHA-256 ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਇੱਕ ਹਾਰਡਕੋਡ ਕੀਤੇ ਪਾਸਫਰੇਜ ਤੋਂ ਇੱਕ AES ਕੁੰਜੀ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ।
- AES-256-CBC ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਵੱਡੇ ਹੈਕਸ-ਏਨਕੋਡ ਕੀਤੇ ਸਾਈਫਰਟੈਕਸਟ ਨੂੰ ਡੀਕ੍ਰਿਪਟ ਕਰਦਾ ਹੈ।
- ਡੀਕ੍ਰਿਪਟਡ ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਨੂੰ ਵਰਤ ਕੇ ਚਲਾਉਂਦਾ ਹੈ
vm.runInNewContext() - ਇੱਕ ਸੈਂਡਬੌਕਸ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਜੋ ਅਜੇ ਵੀ ਸ਼ਕਤੀਸ਼ਾਲੀ ਰਨਟਾਈਮ ਪ੍ਰਾਈਮਿਟਿਵ ਨੂੰ ਉਜਾਗਰ ਕਰਦਾ ਹੈ
ਮੁੱਖ ਤਕਨੀਕ ਦਾ ਸਾਰ
| ਭਾਗ | ਸੰਰਚਨਾ / ਮੁੱਲ |
|---|---|
| ਐਲਗੋਰਿਥਮ | ਏਈਐਸ-256-ਸੀਬੀਸੀ |
| ਕੁੰਜੀ ਡੈਰੀਵੇਸ਼ਨ | SHA-256(ਪਾਸਫਰੈਜ਼) |
| ਸ਼ੁਰੂਆਤੀ ਵੈਕਟਰ (IV) | 0x00 ਦੇ 16 ਬਾਈਟ |
| ਐਗਜ਼ੀਕਿਊਸ਼ਨ | vm.runInNewContext(ਡੀਕ੍ਰਿਪਟਡ, ਸੈਂਡਬੌਕਸ) |
ਨਾਜ਼ੁਕ ਤੌਰ 'ਤੇ, ਸੈਂਡਬੌਕਸ ਇਹਨਾਂ ਵਿੱਚੋਂ ਲੰਘਦਾ ਹੈ:
requireprocessBuffer- ਟਾਈਮਰ
- ਮੋਡੀਊਲ ਨਿਰਯਾਤ
ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਡੀਕ੍ਰਿਪਟਡ ਪੇਲੋਡ ਪੂਰੀ ਸਮਰੱਥਾ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਦਾ ਹੈ:
- ਸਪੌਨ ਪ੍ਰਕਿਰਿਆਵਾਂ
- ਫਾਈਲਾਂ ਪੜ੍ਹੋ ਅਤੇ ਲਿਖੋ
- ਨੈੱਟਵਰਕ ਕਾਲਾਂ ਕਰੋ
- ਸਥਾਨਕ ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਸੋਧੋ
ਇਹ ਇੱਕ ਸੀਮਤ VM ਨਹੀਂ ਹੈ। ਇਹ ਇੱਕ VM ਹੈ ਜੋ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਟ੍ਰੈਂਪੋਲਿਨ ਵਜੋਂ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
ਰਨਟਾਈਮ ਇਨਕ੍ਰਿਪਸ਼ਨ ਪੈਟਰਨ (ਕੋਰ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਵਿਧੀ)
ਲੋਡਰ ਛੋਟਾ ਹੈ।
ਦੁਸ਼ਟ ਸਰੀਰ ਨਹੀਂ ਹੈ।
ਹੇਠਾਂ ਪੈਕੇਜ ਦੇ ਅੰਦਰ ਪਾਇਆ ਜਾਣ ਵਾਲਾ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਪੈਟਰਨ ਹੈ:
const crypto = require('crypto'); const vm = require('vm'); function decryptAndExecute(encryptedHex, passphrase) { const key = crypto.createHash('sha256') .update(passphrase) .digest(); const iv = Buffer.alloc(16, 0); const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv); let decrypted = decipher.update(encryptedHex, 'hex', 'utf8'); decrypted += decipher.final('utf8'); const sandbox = { require, module, exports, console, process, Buffer, __dirname, __filename, setTimeout, setInterval, clearTimeout, clearInterval }; vm.runInNewContext(decrypted, sandbox); } ਇਹ ਕਿਉਂ ਮਾਇਨੇ ਰੱਖਦਾ ਹੈ
ਡੀਕ੍ਰਿਪਟਡ ਪੇਲੋਡ:
- ਕੀ ਨਾ npm ਪੈਕੇਜ ਦੇ ਅੰਦਰ ਪਲੇਨਟੈਕਸਟ ਵਿੱਚ ਮੌਜੂਦ ਹੈ
- ਸਧਾਰਨ ਲਈ ਅਦਿੱਖ ਹੈ
grepਜਾਂ ਸਥਿਰ ਸਟ੍ਰਿੰਗ ਸਕੈਨਿੰਗ - ਸਿਰਫ਼ ਰਨਟਾਈਮ 'ਤੇ ਮੈਮੋਰੀ ਵਿੱਚ ਸਾਕਾਰ ਹੁੰਦਾ ਹੈ
- ਪੂਰੀ ਨੋਡ ਰਨਟਾਈਮ ਸਮਰੱਥਾਵਾਂ ਨਾਲ ਚੱਲਦਾ ਹੈ
ਇਹ AES + VM ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਸੁਮੇਲ ਇੱਕ ਦਾ ਇੱਕ ਮਜ਼ਬੂਤ ਵਿਵਹਾਰਕ ਸੂਚਕ ਹੈ ਐਨਪੀਐਮ ਇਨਫੋਸਟੀਲਰ ਸਟੈਟਿਕ ਇੰਸਪੈਕਸ਼ਨ ਤੋਂ ਬਚਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ.
ਹੋਰ ਸ਼ਬਦਾਂ ਵਿਚ:
ਜੇਕਰ ਤੁਸੀਂ ਪੈਕੇਜ ਸੋਰਸ ਟ੍ਰੀ ਨੂੰ ਸਕੈਨ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਕੋਈ ਸਟੀਲਰ ਦਿਖਾਈ ਨਹੀਂ ਦਿੰਦਾ।
ਤੁਸੀਂ ਇੱਕ ਡਿਕ੍ਰਿਪਟਰ ਦੇਖਦੇ ਹੋ।
ਡੀਕ੍ਰਿਪਸ਼ਨ ਤੋਂ ਬਾਅਦ ਕੀ ਹੁੰਦਾ ਹੈ
ਇੱਕ ਵਾਰ ਲਾਗੂ ਹੋਣ ਤੋਂ ਬਾਅਦ, Nyx Stealer ਸਮਾਨਾਂਤਰ ਡੇਟਾ ਸੰਗ੍ਰਹਿ ਤਰੰਗਾਂ ਲਾਂਚ ਕਰਦਾ ਹੈ।
ਵੇਵ 1: ਬ੍ਰਾਊਜ਼ਰ ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ ਐਕਸਟਰੈਕਸ਼ਨ
ਮਾਲਵੇਅਰ:
- NuGet CDN ਤੋਂ ਇੱਕ Python ਰਨਟਾਈਮ ਡਾਊਨਲੋਡ ਕਰਦਾ ਹੈ।
- ਕ੍ਰਿਪਟੋਗ੍ਰਾਫਿਕ ਲਾਇਬ੍ਰੇਰੀਆਂ ਸਥਾਪਤ ਕਰਦਾ ਹੈ
- ਕ੍ਰੋਮੀਅਮ-ਅਧਾਰਿਤ ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ ਸਟੋਰਾਂ ਨੂੰ ਕੱਢਦਾ ਹੈ
- DPAPI-ਸੁਰੱਖਿਅਤ ਰਾਜ਼ਾਂ ਨੂੰ ਡੀਕ੍ਰਿਪਟ ਕਰਦਾ ਹੈ
ਨੇਟਿਵ ਬਾਈਡਿੰਗਾਂ ਨੂੰ ਕੰਪਾਇਲ ਕਰਨ ਦੀ ਬਜਾਏ, ਇਹ Windows DPAPI ਨੂੰ ਸਿੱਧਾ ਕਾਲ ਕਰਨ ਲਈ PowerShell ਦਾ ਲਾਭ ਉਠਾਉਂਦਾ ਹੈ।
function dpapiUnprotectWithPowerShell(dataBuf) { const b64 = dataBuf.toString('base64'); const ps = "Add-Type -AssemblyName System.Security;" + "$b=[Convert]::FromBase64String('" + b64 + "');" + "$p=[System.Security.Cryptography.ProtectedData]::Unprotect(" + "$b,$null,[System.Security.Cryptography.DataProtectionScope]::CurrentUser);" + "[Console]::Out.Write([Convert]::ToBase64String($p))"; const cmd = `powershell -NoProfile -ExecutionPolicy Bypass -Command "${ps}"`; return Buffer.from(execSync(cmd, { encoding: 'utf8' }).trim(), 'base64'); } ਇਹ ਪਹੁੰਚ:
- ਸੰਕਲਨ ਕਲਾਕ੍ਰਿਤੀਆਂ ਤੋਂ ਬਚਦਾ ਹੈ
- ਮੂਲ Windows ਕ੍ਰਿਪਟੋ API ਵਰਤਦਾ ਹੈ
- ਪ੍ਰਬੰਧਕੀ ਟੂਲਿੰਗ ਵਿੱਚ ਰਲ ਜਾਂਦਾ ਹੈ
ਇਹ OS-ਪੱਧਰੀ ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ ਡੀਕ੍ਰਿਪਸ਼ਨ ਹੈ, ਸਕ੍ਰੈਪਿੰਗ ਨਹੀਂ।
ਵੇਵ 2: ਡਿਸਕਾਰਡ ਟੋਕਨ ਡੀਕ੍ਰਿਪਸ਼ਨ
ਚੋਰੀ ਕਰਨ ਵਾਲਾ ਪ੍ਰੋਟੋਕੋਲ ਤੋਂ ਜਾਣੂ ਹੈ। ਇਹ ਡਿਸਕਾਰਡ ਦੇ ਇਨਕ੍ਰਿਪਟਡ ਟੋਕਨ ਫਾਰਮੈਟ ਨੂੰ ਸਮਝਦਾ ਹੈ।
function decryptToken(encryptedToken, key) { const tokenParts = encryptedToken.split('dQw4w9WgXcQ:'); const encryptedData = Buffer.from(tokenParts[1], 'base64'); const iv = encryptedData.slice(3, 15); const ciphertext = encryptedData.slice(15, -16); const tag = encryptedData.slice(-16); const decipher = crypto.createDecipheriv('aes-256-gcm', key, iv); decipher.setAuthTag(tag); return decipher.update(ciphertext).toString('utf8'); } ਕਾਰਜਸ਼ੀਲ ਪ੍ਰਵਾਹ:
- ਡਿਸਕਾਰਡ ਤੋਂ ਮਾਸਟਰ ਕੀ ਕੱਢੋ
Local State - DPAPI ਰਾਹੀਂ ਮਾਸਟਰ ਕੁੰਜੀ ਨੂੰ ਡੀਕ੍ਰਿਪਟ ਕਰੋ
- AES-GCM ਟੋਕਨ ਬਲੌਬਸ ਨੂੰ ਡੀਕ੍ਰਿਪਟ ਕਰੋ
- ਡਿਸਕਾਰਡ API ਦੇ ਵਿਰੁੱਧ ਟੋਕਨਾਂ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰੋ
- ਨਾਈਟ੍ਰੋ, ਬੈਜ, ਬਿਲਿੰਗ ਜਾਣਕਾਰੀ ਨਾਲ ਅਮੀਰ ਬਣੋ
ਇਹ ਆਮ ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ ਡੰਪਿੰਗ ਨਹੀਂ ਹੈ। ਇਹ ਪ੍ਰੋਟੋਕੋਲ-ਜਾਗਰੂਕ ਸੈਸ਼ਨ ਹਾਈਜੈਕਿੰਗ ਹੈ।
ਵੇਵ 3: ਕ੍ਰਿਪਟੋਕਰੰਸੀ ਵਾਲੇਟ ਟਾਰਗੇਟਿੰਗ
npm ਇਨਫੋਸਟੀਲਰ ਦੱਸਦਾ ਹੈ:
- 90+ ਬ੍ਰਾਊਜ਼ਰ ਵਾਲਿਟ ਐਕਸਟੈਂਸ਼ਨ
- 27 ਡੈਸਕਟਾਪ ਵਾਲਿਟ
- ਠੰਡੇ ਵਾਲਿਟ ਰਸਤੇ
- ਐਕਸੋਡਸ ਸੀਡ ਫਾਈਲਾਂ
ਬੀਜ ਡੀਕ੍ਰਿਪਸ਼ਨ ਕੋਸ਼ਿਸ਼ ਦੀ ਉਦਾਹਰਣ:
function decryptSeco(content, password) { const key = crypto.pbkdf2Sync(password, 'exodus', 10000, 32, 'sha512'); const decipher = crypto.createDecipheriv( 'aes-256-gcm', key, content.slice(0, 12) ); decipher.setAuthTag(content.slice(-16)); return Buffer.concat([ decipher.update(content.slice(12, -16)), decipher.final() ]).toString('utf8'); } ਜੇਕਰ ਸਫਲ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਵਾਲਿਟ ਸਮਝੌਤਾ ਤੁਰੰਤ ਅਤੇ ਅਟੱਲ ਹੈ।
ਇਹ ਮੁਹਿੰਮ ਦੇ ਸਭ ਤੋਂ ਵੱਧ ਮੁੱਲ ਵਾਲੇ ਮੁਦਰੀਕਰਨ ਵੈਕਟਰ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।
ਡਿਸਕਾਰਡ ਡੈਸਕਟੌਪ ਇੰਜੈਕਸ਼ਨ ਰਾਹੀਂ ਦ੍ਰਿੜਤਾ
ਪ੍ਰਮਾਣ ਪੱਤਰ ਇਕੱਠਾ ਕਰਨ ਤੋਂ ਬਾਅਦ, Nyx ਸਟੀਲਰ ਸਥਾਨਕ ਨੂੰ ਸੋਧ ਕੇ ਨਿਰੰਤਰਤਾ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ ਵਿਵਾਦ ਗਾਹਕ ਨੂੰ.
ਟੀਚਾ:
%LOCALAPPDATA%\Discord*\app-*\modules\discord_desktop_core\index.js ਕਾਰਜਸ਼ੀਲ ਕ੍ਰਮ
ਇਨਫੋਸਟੀਲਰ ਹੇਠ ਲਿਖੇ ਕਦਮ ਚੁੱਕਦਾ ਹੈ:
- ਚੱਲ ਰਹੀਆਂ ਡਿਸਕਾਰਡ ਪ੍ਰਕਿਰਿਆਵਾਂ ਨੂੰ ਖਤਮ ਕਰਦਾ ਹੈ
- ਸਥਾਪਿਤ ਡਿਸਕਾਰਡ ਰੂਪਾਂ (ਸਥਿਰ, ਕੈਨਰੀ, ਪੀਟੀਬੀ) ਦਾ ਪਤਾ ਲਗਾਉਂਦਾ ਹੈ।
- ਓਵਰਰਾਈਟ ਕਰਦਾ ਹੈ
discord_desktop_core/index.js - ਹਮਲਾਵਰ-ਨਿਯੰਤਰਿਤ ਵੈੱਬਹੁੱਕ ਤਰਕ ਨੂੰ ਇੰਜੈਕਟ ਕਰਦਾ ਹੈ
- ਡਿਸਕਾਰਡ ਮੁੜ ਚਾਲੂ ਕਰਦਾ ਹੈ
ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਭਵਿੱਖ ਦੇ ਡਿਸਕਾਰਡ ਸੈਸ਼ਨ ਆਪਣੇ ਆਪ ਹੀ ਨਵੇਂ ਪ੍ਰਮਾਣੀਕਰਨ ਟੋਕਨ ਲੀਕ ਕਰਦੇ ਹਨ।
ਮਹੱਤਵਪੂਰਨ ਗੱਲ ਇਹ ਹੈ ਕਿ ਇਹ ਦ੍ਰਿੜਤਾ ਅਨੁਸੂਚਿਤ ਕੰਮਾਂ ਜਾਂ ਰਜਿਸਟਰੀ ਸੋਧਾਂ 'ਤੇ ਨਿਰਭਰ ਨਹੀਂ ਕਰਦੀ। ਇਹ ਐਪਲੀਕੇਸ਼ਨ-ਪੱਧਰ ਦੇ ਕੋਡ ਸੋਧ ਦਾ ਲਾਭ ਉਠਾਉਂਦੀ ਹੈ, ਜੋ ਕਿ ਇੱਕ ਗੁਪਤ ਪਹੁੰਚ ਹੈ।
ਭਾਵੇਂ ਖਤਰਨਾਕ npm ਪੈਕੇਜ ਨੂੰ ਬਾਅਦ ਵਿੱਚ ਹਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਡਿਸਕਾਰਡ ਕਲਾਇੰਟ ਨਾਲ ਸਮਝੌਤਾ ਰਹਿੰਦਾ ਹੈ।
ਤਕਨੀਕੀ ਤੁਲਨਾ: ਜਾਇਜ਼ ਸੈਲਫਬੋਟ ਬਨਾਮ ਐਨਪੀਐਮ ਇਨਫੋਸਟੀਲਰ
| ਭਾਗ | ਜਾਇਜ਼ ਲਾਇਬ੍ਰੇਰੀ | Nyx npm ਇਨਫੋਸਟੀਲਰ |
|---|---|---|
| ਇੰਕ੍ਰਿਪਸ਼ਨ | ਕੋਈ | ਪੂਰਾ AES-ਇਨਕ੍ਰਿਪਟਡ ਪੇਲੋਡ |
| ਰਨਟਾਈਮ VM | ਲੋੜ ਨਹੀਂ | vm.runInNewContext ਲਾਗੂ ਕਰਨਾ |
| ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ ਪਹੁੰਚ | ਸਿਰਫ਼ ਡਿਸਕਾਰਡ API | ਬ੍ਰਾਊਜ਼ਰ, ਵਾਲਿਟ, DPAPI |
| ਬਾਹਰੀ ਡਾਊਨਲੋਡ | ਨਹੀਂ | NuGet ਰਾਹੀਂ ਪਾਈਥਨ ਰਨਟਾਈਮ |
| ਅਤਿਰਿਕਤ | ਨਹੀਂ | ਡਿਸਕਾਰਡ ਕਲਾਇੰਟ ਇੰਜੈਕਸ਼ਨ |
| ਮੁਦਰੀਕਰਨ | ਬੋਟ ਆਟੋਮੇਸ਼ਨ | ਪ੍ਰਮਾਣ ਪੱਤਰ ਦੀ ਮੁੜ ਵਿਕਰੀ |
ਇਕੱਲੀ ਏਨਕ੍ਰਿਪਸ਼ਨ ਪਰਤ ਪਹਿਲਾਂ ਹੀ ਇਸ ਮੁਹਿੰਮ ਨੂੰ ਇੱਕ ਆਮ ਓਪਨ-ਸੋਰਸ ਫੋਰਕ ਤੋਂ ਵੱਖ ਕਰਦੀ ਹੈ।
ਇੱਕ ਜਾਇਜ਼ ਡਿਸਕਾਰਡ ਸੈਲਫਬੋਟ ਕੋਲ ਆਪਣੇ ਪੂਰੇ ਕੋਡਬੇਸ ਨੂੰ ਏਨਕ੍ਰਿਪਟ ਕਰਨ, DPAPI ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਲਈ PowerShell ਪੈਦਾ ਕਰਨ, ਬਾਹਰੀ ਰਨਟਾਈਮ ਡਾਊਨਲੋਡ ਕਰਨ, ਜਾਂ ਡੈਸਕਟੌਪ ਐਪਲੀਕੇਸ਼ਨ ਇੰਟਰਨਲ ਨੂੰ ਸੋਧਣ ਦਾ ਕੋਈ ਕਾਰਨ ਨਹੀਂ ਹੈ। ਜਦੋਂ ਉਹ ਸਮਰੱਥਾਵਾਂ ਇੱਕ ਨਿਰਭਰਤਾ ਦੇ ਅੰਦਰ ਦਿਖਾਈ ਦਿੰਦੀਆਂ ਹਨ ਜੋ ਡਿਸਕਾਰਡ ਇੰਟਰੈਕਸ਼ਨਾਂ ਨੂੰ ਸਵੈਚਲਿਤ ਕਰਨ ਦਾ ਦਾਅਵਾ ਕਰਦੀ ਹੈ, ਤਾਂ ਆਰਕੀਟੈਕਚਰਲ ਬੇਮੇਲ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਨਾ ਅਸੰਭਵ ਹੋ ਜਾਂਦਾ ਹੈ।
ਜਾਂਚ ਦੇ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਤੋਂ, ਇਹ npm ਇਨਫੋਸਟੀਲਰ ਕਈ ਪਰਤਾਂ ਵਿੱਚ ਨਿਸ਼ਾਨ ਛੱਡਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਸਭ ਤੋਂ ਭਰੋਸੇਮੰਦ ਸੰਕੇਤਕ ਹਾਰਡਕੋਡ ਕੀਤੇ URL ਜਾਂ ਖਾਸ ਫਾਈਲ ਮਾਰਗ ਨਹੀਂ ਹਨ, ਕਿਉਂਕਿ ਉਹ ਸੰਸਕਰਣਾਂ ਵਿਚਕਾਰ ਬਦਲ ਸਕਦੇ ਹਨ। ਇਸ ਦੀ ਬਜਾਏ, ਟਿਕਾਊ ਸੰਕੇਤ ਢਾਂਚਾਗਤ ਹਨ।
ਪੈਕੇਜ ਪੱਧਰ 'ਤੇ, ਸਭ ਤੋਂ ਮਜ਼ਬੂਤ ਲਾਲ ਝੰਡਾ ਇੱਕ ਵੱਡੇ ਇਨਕ੍ਰਿਪਟਡ ਪੇਲੋਡ ਅਤੇ ਇੱਕ ਰਨਟਾਈਮ ਡੀਕ੍ਰਿਪਸ਼ਨ ਰੈਪਰ ਦਾ ਸੁਮੇਲ ਹੈ ਜੋ ਤੁਰੰਤ ਇਸ ਰਾਹੀਂ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ vm.runInNewContext(). ਜਦੋਂ ਕਿ ਸਿਰਫ਼ ਏਨਕ੍ਰਿਪਸ਼ਨ ਹੀ ਕੁਦਰਤੀ ਤੌਰ 'ਤੇ ਖਤਰਨਾਕ ਨਹੀਂ ਹੈ, ਪਰ ਡਿਸਕਾਰਡ ਯੂਟਿਲਿਟੀ ਪੈਕੇਜ ਦੇ ਅੰਦਰ AES ਡੀਕ੍ਰਿਪਸ਼ਨ ਤੋਂ ਬਾਅਦ ਡਾਇਨਾਮਿਕ VM ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਬਹੁਤ ਹੀ ਅਸਧਾਰਨ ਹੈ।
ਹੋਸਟ ਪੱਧਰ 'ਤੇ, ਸ਼ੱਕੀ ਪੈਟਰਨਾਂ ਵਿੱਚ ਅਚਾਨਕ DPAPI ਡੀਕ੍ਰਿਪਸ਼ਨ ਗਤੀਵਿਧੀ, Node.js ਨਿਰਭਰਤਾ ਸੰਦਰਭ ਤੋਂ ਪ੍ਰਕਿਰਿਆ ਪੈਦਾ ਕਰਨਾ, ਅਤੇ ਸਥਾਨਕ ਐਪਲੀਕੇਸ਼ਨ ਫਾਈਲਾਂ ਦੀ ਸੋਧ ਸ਼ਾਮਲ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੀਜੀ-ਧਿਰ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੁਆਰਾ ਕਦੇ ਵੀ ਬਦਲਿਆ ਨਹੀਂ ਜਾਣਾ ਚਾਹੀਦਾ। ਇਸੇ ਤਰ੍ਹਾਂ, ਨੈੱਟਵਰਕ ਲੇਅਰ 'ਤੇ, ਵਿਕਾਸ ਨਿਰਭਰਤਾ ਦੁਆਰਾ ਸ਼ੁਰੂ ਕੀਤਾ ਗਿਆ ਆਊਟਬਾਉਂਡ ਵੈੱਬਹੁੱਕ-ਸ਼ੈਲੀ ਸੰਚਾਰ ਇੱਕ ਹੋਰ ਅਰਥਪੂਰਨ ਵਿਗਾੜ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।
ਦੂਜੇ ਸ਼ਬਦਾਂ ਵਿੱਚ, ਖੋਜ ਸਤਹ ਸਮਝੌਤਾ ਦਾ ਇੱਕ ਵੀ ਸੂਚਕ ਨਹੀਂ ਹੈ। ਇਹ ਏਨਕ੍ਰਿਪਸ਼ਨ, ਰਨਟਾਈਮ ਐਗਜ਼ੀਕਿਊਸ਼ਨ, ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ ਐਕਸੈਸ, ਅਤੇ ਸਥਿਰਤਾ ਵਿਵਹਾਰ ਦਾ ਸਬੰਧ ਹੈ ਜੋ ਖ਼ਤਰੇ ਨੂੰ ਪ੍ਰਗਟ ਕਰਦਾ ਹੈ।
ਜ਼ਾਇਜੇਨੀ ਨਾਲ ਖੋਜ ਅਤੇ ਘਟਾਓ
ਇਸ npm ਇਨਫੋਸਟੀਲਰ ਦੀ ਪਛਾਣ ਇਹਨਾਂ ਦੁਆਰਾ ਕੀਤੀ ਗਈ ਸੀ ਜ਼ਾਇਜੇਨੀ ਦੀ ਮਾਲਵੇਅਰ ਸ਼ੁਰੂਆਤੀ ਚੇਤਾਵਨੀ (MEW) ਸਧਾਰਨ ਦਸਤਖਤ ਮੇਲਣ ਦੀ ਬਜਾਏ ਪਰਤਬੱਧ ਵਿਵਹਾਰਕ ਸਬੰਧਾਂ ਰਾਹੀਂ।
ਜਾਣੇ-ਪਛਾਣੇ ਖਤਰਨਾਕ ਤਾਰਾਂ ਦੀ ਖੋਜ ਕਰਨ ਦੀ ਬਜਾਏ, MEW ਪੂਰੇ ਸਰੋਤ ਰੁੱਖ ਵਿੱਚ ਢਾਂਚਾਗਤ ਵਿਗਾੜਾਂ ਦਾ ਮੁਲਾਂਕਣ ਕਰਦਾ ਹੈ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਖੋਜ ਕਈ ਸਿਗਨਲਾਂ ਦੇ ਕਨਵਰਜੈਂਸ ਤੋਂ ਉਭਰ ਕੇ ਸਾਹਮਣੇ ਆਈ: ਮੋਡੀਊਲ ਐਂਟਰੀ ਪੁਆਇੰਟ ਵਿੱਚ ਇੱਕ ਏਮਬੈਡਡ AES ਡੀਕ੍ਰਿਪਸ਼ਨ ਰੁਟੀਨ, ਇੱਕ VM ਸੰਦਰਭ ਦੇ ਅੰਦਰ ਤੁਰੰਤ ਐਗਜ਼ੀਕਿਊਸ਼ਨ, ਅਤੇ ਇੱਕ ਸਪੱਸ਼ਟ ਸਮਰੱਥਾ-ਤੋਂ-ਇਰਾਦੇ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ।
ਮਹੱਤਵਪੂਰਨ ਗੱਲ ਇਹ ਹੈ ਕਿ ਇਹਨਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਸੰਕੇਤ ਇਕੱਲੇ ਖਤਰਨਾਕ ਇਰਾਦੇ ਨੂੰ ਸਾਬਤ ਨਹੀਂ ਕਰਦੇ। ਹਾਲਾਂਕਿ, ਜਦੋਂ ਇਕੱਠੇ ਵਿਸ਼ਲੇਸ਼ਣ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਉਹ ਰਨਟਾਈਮ ਵਿਵਹਾਰ ਨੂੰ ਛੁਪਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਦਾ ਪਰਦਾਫਾਸ਼ ਕਰਦੇ ਹਨ। ਇਹ ਪੱਧਰੀ ਪਹੁੰਚ ਉੱਚ-ਵਿਸ਼ਵਾਸ ਸਪਲਾਈ ਚੇਨ ਖਤਰਿਆਂ ਦੀ ਪਛਾਣ ਕਰਦੇ ਹੋਏ ਝੂਠੇ ਸਕਾਰਾਤਮਕਤਾ ਨੂੰ ਕਾਫ਼ੀ ਘਟਾਉਂਦੀ ਹੈ।
ਇਸ ਤੋਂ ਇਲਾਵਾ, ਇਹ ਕੇਸ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਸਿਰਫ਼ ਇੰਸਟਾਲ-ਟਾਈਮ ਨਿਰੀਖਣ ਕਿਉਂ ਨਾਕਾਫ਼ੀ ਹੈ। ਖਤਰਨਾਕ ਤਰਕ ਜੀਵਨ-ਚੱਕਰ ਸਕ੍ਰਿਪਟਾਂ ਵਿੱਚ ਨਹੀਂ ਰਹਿੰਦਾ। ਇਹ ਸਿਰਫ਼ ਮੋਡੀਊਲ ਲੋਡ ਹੋਣ ਤੋਂ ਬਾਅਦ ਹੀ ਕਿਰਿਆਸ਼ੀਲ ਹੁੰਦਾ ਹੈ ਅਤੇ ਮੈਮੋਰੀ ਵਿੱਚ ਡੀਕ੍ਰਿਪਟ ਹੋਣ ਤੋਂ ਬਾਅਦ ਹੀ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ। ਇਸ ਲਈ, ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਬਚਾਅ ਲਈ ਏਨਕ੍ਰਿਪਸ਼ਨ-ਜਾਗਰੂਕ ਵਿਸ਼ਲੇਸ਼ਣ, ਵਿਵਹਾਰਕ ਪੈਟਰਨ ਪਛਾਣ, ਅਤੇ ਇੰਸਟਾਲੇਸ਼ਨ ਘਟਨਾਵਾਂ ਤੋਂ ਪਰੇ ਨਿਰੰਤਰ ਨਿਰਭਰਤਾ ਨਿਗਰਾਨੀ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
ਰਜਿਸਟਰੀ ਹਟਾਉਣਾ ਪ੍ਰਤੀਕਿਰਿਆਸ਼ੀਲ ਹੈ। ਰਨਟਾਈਮ-ਜਾਗਰੂਕ ਵਿਸ਼ਲੇਸ਼ਣ ਰੋਕਥਾਮ ਵਾਲਾ ਹੈ।
ਇਹ npm ਇਨਫੋਸਟੀਲਰ ਕਿਉਂ ਮਾਇਨੇ ਰੱਖਦਾ ਹੈ
Nyx Stealer npm-ਅਧਾਰਿਤ ਮਾਲਵੇਅਰ ਵਿੱਚ ਇੱਕ ਢਾਂਚਾਗਤ ਵਿਕਾਸ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।
ਇਤਿਹਾਸਕ ਤੌਰ 'ਤੇ, ਬਹੁਤ ਸਾਰੇ ਖਤਰਨਾਕ ਪੈਕੇਜ ਦਿਖਾਈ ਦੇਣ ਵਾਲੇ ਇੰਸਟਾਲ-ਟਾਈਮ ਸਕ੍ਰਿਪਟਾਂ ਜਾਂ ਸਪੱਸ਼ਟ ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ ਐਕਸਫਿਲਟਰੇਸ਼ਨ ਐਂਡਪੁਆਇੰਟਸ 'ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਸਨ। ਇਸਦੇ ਉਲਟ, ਇਹ ਮੁਹਿੰਮ ਆਪਣੇ ਪੇਲੋਡ ਨੂੰ ਏਨਕ੍ਰਿਪਟ ਕਰਦੀ ਹੈ, ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਨੂੰ ਰਨਟਾਈਮ ਤੱਕ ਮੁਲਤਵੀ ਕਰਦੀ ਹੈ, ਜਾਇਜ਼ ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ API ਦਾ ਲਾਭ ਉਠਾਉਂਦੀ ਹੈ, ਅਤੇ ਭਰੋਸੇਯੋਗ ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੇ ਅੰਦਰ ਸਥਿਰਤਾ ਸਥਾਪਤ ਕਰਦੀ ਹੈ।
ਸਿੱਟੇ ਵਜੋਂ, ਹਮਲਾਵਰ ਨੂੰ npm ਬੁਨਿਆਦੀ ਢਾਂਚੇ ਦਾ ਸ਼ੋਸ਼ਣ ਕਰਨ ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ। ਇਸ ਦੀ ਬਜਾਏ, ਹਮਲਾ ਸਫਲ ਹੁੰਦਾ ਹੈ ਕਿਉਂਕਿ ਨਿਰਭਰਤਾ ਸਥਾਪਨਾ ਵਿਸ਼ਵਾਸ ਨੂੰ ਦਰਸਾਉਂਦੀ ਹੈ। ਡਿਵੈਲਪਰ ਮੰਨਦੇ ਹਨ ਕਿ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਆਯਾਤ ਕਰਨਾ ਇੱਕ ਸੁਰੱਖਿਅਤ ਕਾਰਜ ਹੈ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਇਹ ਆਪਣੇ ਆਪ ਨੂੰ ਇੱਕ ਪ੍ਰਸਿੱਧ ਟੂਲ ਦੇ ਇੱਕ ਸੰਭਾਵੀ ਫੋਰਕ ਵਜੋਂ ਪੇਸ਼ ਕਰਦਾ ਹੈ।
ਜਿਵੇਂ-ਜਿਵੇਂ ਈਕੋਸਿਸਟਮ ਵਧਦੇ ਰਹਿੰਦੇ ਹਨ ਅਤੇ ਫੋਰਕ ਫੈਲਦੇ ਰਹਿੰਦੇ ਹਨ, ਉਹ ਅਪ੍ਰਤੱਖ ਵਿਸ਼ਵਾਸ ਸੀਮਾ ਇੱਕ ਵਧਦੀ ਆਕਰਸ਼ਕ ਹਮਲੇ ਦੀ ਸਤ੍ਹਾ ਬਣ ਜਾਂਦੀ ਹੈ। ਇਸ ਲਈ, ਆਧੁਨਿਕ npm ਇਨਫੋਸਟੀਲਰਾਂ ਤੋਂ ਬਚਾਅ ਲਈ ਸਥਿਰ ਤਾਰਾਂ ਦੀ ਖੋਜ ਕਰਨ ਦੀ ਬਜਾਏ ਆਰਕੀਟੈਕਚਰਲ ਪੈਟਰਨਾਂ ਨੂੰ ਪਛਾਣਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
ਅੰਤ ਵਿੱਚ, ਇਹ ਮੁਹਿੰਮ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਸਬਕ ਨੂੰ ਮਜ਼ਬੂਤ ਕਰਦੀ ਹੈ software supply chain security: ਸਭ ਤੋਂ ਖ਼ਤਰਨਾਕ ਖ਼ਤਰੇ ਉਹ ਨਹੀਂ ਹਨ ਜੋ ਪਹਿਲੀ ਨਜ਼ਰ ਵਿੱਚ ਖਤਰਨਾਕ ਲੱਗਦੇ ਹਨ, ਸਗੋਂ ਉਹ ਹਨ ਜੋ ਢਾਂਚਾਗਤ ਤੌਰ 'ਤੇ ਜਾਇਜ਼ ਜਾਪਦੇ ਹਨ ਜਦੋਂ ਤੱਕ ਰਨਟਾਈਮ ਉਨ੍ਹਾਂ ਦੇ ਅਸਲ ਵਿਵਹਾਰ ਨੂੰ ਪ੍ਰਗਟ ਨਹੀਂ ਕਰਦਾ।




