add Defender for Windows Server (#5646)
Signed-off-by: si458 <simonsmith5521@gmail.com>
Simon Smith committed
Jan 4, 2024 at 02:16 UTC
f33dbd31e52c0980747ed058db83c884e45aede8
5 files changed
+47
-2
agents/meshcore.js
+8
@@ -5623,6 +5623,14 @@ function sendPeriodicServerUpdate(flags, force) {
5623
});
5624
} catch (ex) { }
5625
}
5626
+ // Get Defender for Windows Server
5627
+ try {
5628
+ var d = require('win-info').defender();
5629
+ d.then(function(res){
5630
+ meshCoreObj.defender = res;
5631
+ meshCoreObjChanged();
5632
+ });
5633
+ } catch (ex){ }
5634
}
5635
5636
// Send available data right now
agents/modules_meshcore/win-info.js
+19
-2
@@ -239,12 +239,29 @@ function installedApps()
239
return (ret);
240
}
241
242
+function defender(){
243
+ var promise = require('promise');
244
+ var ret = new promise(function (a, r) { this._resolve = a; this._reject = r; });
245
+ ret.child = require('child_process').execFile(process.env['windir'] + '\\System32\\WindowsPowerShell\\v1.0\\powershell.exe', ['powershell', '-noprofile', '-nologo', '-command', '-'], {});
246
+ ret.child.promise = ret;
247
+ ret.child.stdout.str = ''; ret.child.stdout.on('data', function (c) { this.str += c.toString(); });
248
+ ret.child.stderr.str = ''; ret.child.stderr.on('data', function (c) { this.str += c.toString(); });
249
+ ret.child.stdin.write('Get-MpComputerStatus | Select-Object RealTimeProtectionEnabled,IsTamperProtected | ConvertTo-JSON\r\n');
250
+ ret.child.stdin.write('exit\r\n');
251
+ ret.child.on('exit', function (c) {
252
+ if (this.stdout.str == '') { this.promise._resolve({}); return; }
253
+ var abc = JSON.parse(this.stdout.str.trim())
254
+ this.promise._resolve({ RealTimeProtection: abc.RealTimeProtectionEnabled, TamperProtected: abc.IsTamperProtected });
255
+ });
256
+ return (ret);
257
+}
258
+
259
if (process.platform == 'win32')
260
{
244
- module.exports = { qfe: qfe, av: av, defrag: defrag, pendingReboot: pendingReboot, installedApps: installedApps };
261
+ module.exports = { qfe: qfe, av: av, defrag: defrag, pendingReboot: pendingReboot, installedApps: installedApps, defender: defender };
262
}
263
else
264
{
265
var not_supported = function () { throw (process.platform + ' not supported'); };
249
- module.exports = { qfe: not_supported, av: not_supported, defrag: not_supported, pendingReboot: not_supported, installedApps: not_supported };
266
+ module.exports = { qfe: not_supported, av: not_supported, defrag: not_supported, pendingReboot: not_supported, installedApps: not_supported, defender: not_supported };
267
}
\ No newline at end of file
meshagent.js
+4
@@ -1920,6 +1920,10 @@ module.exports.CreateMeshAgent = function (parent, db, ws, req, args, domain) {
1920
if (!device.wsc) { device.wsc = {}; }
1921
if (JSON.stringify(device.wsc) != JSON.stringify(command.wsc)) { /*changes.push('Windows Security Center status');*/ device.wsc = command.wsc; change = 1; log = 1; }
1922
}
1923
+ if (command.defender != null) { // Defender For Windows Server
1924
+ if (!device.defender) { device.defender = {}; }
1925
+ if (JSON.stringify(device.defender) != JSON.stringify(command.defender)) { /*changes.push('Defender status');*/ device.defender = command.defender; change = 1; log = 1; }
1926
+ }
1927
1928
// Push Messaging Token
1929
if ((command.pmt != null) && (typeof command.pmt == 'string') && (device.pmt != command.pmt)) {
views/default-mobile.handlebars
+8
@@ -5894,6 +5894,14 @@
5894
x += addDetailItem("Windows Security", y.join(', '));
5895
}
5896
5897
+ // Defender for Windows Server
5898
+ if(node.defender && !node.wsc) {
5899
+ var y = [];
5900
+ if (node.defender.RealTimeProtection != null) { if (node.defender.RealTimeProtection == true) { y.push("RealTimeProtection" + ' - <span style=color:green>' + "On" + '</span>'); } else { y.push("RealTimeProtection" + ' - <span style=color:red>' + "Off" + '</span>'); } }
5901
+ if (node.defender.TamperProtected != null) { if (node.defender.TamperProtected == true) { y.push("TamperProtection" + ' - <span style=color:green>' + "On" + '</span>'); } else { y.push("TamperProtection" + ' - <span style=color:red>' + "Off" + '</span>'); } }
5902
+ x += addDetailItem("Windows Defender", y.join(', '));
5903
+ }
5904
+
5905
// Antivirus
5906
if (node.av && node.av.length > 0) {
5907
var y = [];
views/default.handlebars
+8
@@ -7396,6 +7396,14 @@
7396
x += addDeviceAttribute("Windows Security", y.join(', '));
7397
}
7398
7399
+ // Defender for Windows Server
7400
+ if(node.defender && !node.wsc) {
7401
+ var y = [];
7402
+ if (node.defender.RealTimeProtection != null) { if (node.defender.RealTimeProtection == true) { y.push("RealTimeProtection" + ' - <span style=color:green>' + "On" + '</span>'); } else { y.push("RealTimeProtection" + ' - <span style=color:red>' + "Off" + '</span>'); } }
7403
+ if (node.defender.TamperProtected != null) { if (node.defender.TamperProtected == true) { y.push("TamperProtection" + ' - <span style=color:green>' + "On" + '</span>'); } else { y.push("TamperProtection" + ' - <span style=color:red>' + "Off" + '</span>'); } }
7404
+ x += addDeviceAttribute("Windows Defender", y.join(', '));
7405
+ }
7406
+
7407
// Antivirus
7408
if (node.av && node.av.length > 0) {
7409
var y = [];