From 44a2506e1ac9d59f266532e9ec07553145792ffc Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Fri, 5 Mar 2021 14:58:00 -0800 Subject: [PATCH] Intel AMT ACM activation improvements. --- MeshCentralServer.njsproj | 3 +- agents/MeshCmd-signed.exe | Bin 4430960 -> 4434272 bytes agents/MeshCmd64-signed.exe | Bin 4038256 -> 4041568 bytes agents/meshcmd.js | 2 +- agents/meshcore.js | 16 +++-- agents/modules_meshcore/amt-manage.js | 2 +- amtmanager.js | 93 ++++++++++++++++++-------- meshcentral.js | 2 +- 8 files changed, 78 insertions(+), 40 deletions(-) diff --git a/MeshCentralServer.njsproj b/MeshCentralServer.njsproj index af52c4fa..a62f2e11 100644 --- a/MeshCentralServer.njsproj +++ b/MeshCentralServer.njsproj @@ -35,9 +35,9 @@ - + @@ -63,6 +63,7 @@ + diff --git a/agents/MeshCmd-signed.exe b/agents/MeshCmd-signed.exe index 5f6a8d4a3300d74db7bfb531adc013a6d32be4c4..2279702fdca1aade3773b9d1da4ead476a41fe78 100644 GIT binary patch delta 7813 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®DS!ct2TbTFi!3WTkxmJ7RhB8$Q>rGGS5;~ax~Y>@ zQw&v=9rI3?WzECwb5%pew!pmsg9J^zl zUC56t5sHLj|0}mkG8PU2O1Ga<#p0Q)is*RhQB~ZgQr;DW)wFX|77)a&z;Y zZlR+=*yw<-S)79tPBB*tRpk~T{yI(lr@U%zMA!~ByC znJD-F04$a)Q)l57Z>SU1e2$xYM?F8ByKwbon}nc|z$izHFii7kykUHKGCrTCZvXG| znA2zx-k%Nf3g-f^|6#ljNgKohxkN7u@N2`>kKnyA>L`3>n>r0oXjR1W8COa$-NUcvY{C z>$<(SYKP?e`uA>ie$bh+`_|&?bJ7GWv~?LBa~GFi8zv!FCQWT!_OtH5wSu+n%H+J< z{d>2jtXX#Y#*3HH)?@2;uoS%b#kSdEt-7*UVMBO1>o4 z?Ob(hW^wGlik>_)?Uz~eT_f*nyw5dn|K>}Rr1C>Ok1aj6W#6Wr?DwM?}A3d$jZ+!Th)AhN+URM@gtkfLJ=uFEHQzkj`M>fXHLc%0QQDSRv}0%4#z7-L zDO_o5d1>FE2fI7Ez8pnIrk^TIJoHHO>F94|+afbokw0i(TzVnXy2ib84ObjgGvF?mb$ORmNXVxpw7C`s}g(Vs6Fw%1)%nYrkz z1I2p_O2@8w>%+9RPo=jfY&-Ml&R4tkB}&&WAC%ZKXZsW1ItnH6p#=nj!Gogy5HTou z=n~I6Jz7oU&C&zQEq`BhplteEUN=2;{mz@F9Z^YNWVD@MG4pumr#GK|cFi`;?(f!S zD;RpoQF?jC^Y2a6_6VQtdPWelrmAFaPKDyc#q58s7_#|QN!K31;)g4>|6H;Az5Scr zhs!puV-4?qHF>;X$c1Tz#KPp9n{^2bCoLS>_4cWhtsmWINiJ~I9n}-dKY973$(ItA zCB1xdnVwwy#k6yek6yX*%j8ROufM(S#$`{1 zV(AUa{@~*4%Eu;)%Lvc;Y17|MJpWnGr+oicvX>o^459-O)2^b%jo#+m(DJU-uWq=(aJ@ zdtSZ&qbHi%skwFAUa7czs_UT*JSC;fHdf=gSU+R{~5Is4<$+4}CqWck6&dG9<&H9Th;bn9aKBOgyT-1>YZll#WT qEy^R`=Coz4&MO|gZr9|QZ`D8fL&D0pmndX~KmCwDCn{nP{Qe*LR5~mG delta 6244 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 Q5YK$D|D*O3kHNqH0qk_|=Kufz diff --git a/agents/MeshCmd64-signed.exe b/agents/MeshCmd64-signed.exe index 14e57f4736f18917555eaa29ed561d00c2352f60..2a0e402d5a3cb3d1619f7a7eae43f94b71387017 100644 GIT binary patch delta 7791 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 delta 6222 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 diff --git a/agents/meshcmd.js b/agents/meshcmd.js index 05026e42..e8dec629 100644 --- a/agents/meshcmd.js +++ b/agents/meshcmd.js @@ -2722,7 +2722,7 @@ function getMeiState(flags, func) { try { amtMeiModule = require('amt-mei'); amtMei = new amtMeiModule(); } catch (ex) { func(null); return; } amtMei.on('error', function (e) { func(null); return; }); try { - var amtMeiTmpState = { OsHostname: require('os').hostname(), Flags: 0 }; // Flags: 1=EHBC, 2=CCM, 4=ACM + var amtMeiTmpState = { 'core-ver': 1, OsHostname: require('os').hostname(), Flags: 0 }; // Flags: 1=EHBC, 2=CCM, 4=ACM amtMei.getProtocolVersion(function (result) { if (result != null) { amtMeiTmpState.MeiVersion = result; } }); if ((flags & 1) != 0) { amtMei.getVersion(function (result) { if (result) { amtMeiTmpState.Versions = {}; for (var version in result.Versions) { amtMeiTmpState.Versions[result.Versions[version].Description] = result.Versions[version].Version; } } }); } amtMei.getProvisioningMode(function (result) { if (result) { amtMeiTmpState.ProvisioningMode = result.mode; } }); diff --git a/agents/meshcore.js b/agents/meshcore.js index 620534e4..5b454dfb 100644 --- a/agents/meshcore.js +++ b/agents/meshcore.js @@ -1198,14 +1198,16 @@ function handleServerCommand(data) { } if (data.action == 'close') { try { apftunnel.disconnect(); } catch (e) { } apftunnel = null; } // Close the CIRA-LMS connection if (data.action == 'startTlsHostConfig') { // Request start of host based TLS ACM activation - amt.startConfigurationHBased(Buffer.from(data.hash, 'hex'), data.hostVpn, data.dnsSuffixList, function (response) { - apftunnel.sendStartTlsHostConfigResponse(response); - }); + var amtMeiModule, amtMei; + try { amtMeiModule = require('amt-mei'); amtMei = new amtMeiModule(); } catch (ex) { if (apftunnel) apftunnel.sendMeiDeactivationState(1); return; } + amtMei.on('error', function (e) { if (apftunnel) apftunnel.sendStartTlsHostConfigResponse({ state: -104 }); }); + amtMei.startConfigurationHBased(Buffer.from(data.hash, 'hex'), data.hostVpn, data.dnsSuffixList, function (response) { apftunnel.sendStartTlsHostConfigResponse(response); }); } if (data.action == 'stopConfiguration') { // Request Intel AMT stop configuration. - amt.stopConfiguration(function (response) { - apftunnel.sendStopConfigurationResponse(response); - }); + var amtMeiModule, amtMei; + try { amtMeiModule = require('amt-mei'); amtMei = new amtMeiModule(); } catch (ex) { if (apftunnel) apftunnel.sendMeiDeactivationState(1); return; } + amtMei.on('error', function (e) { if (apftunnel) apftunnel.sendStopConfigurationResponse({ state: -104 }); }); + amtMei.stopConfiguration(function (status) { apftunnel.sendStopConfigurationResponse(status); }); } } apftunnel.onChannelClosed = function () { addAmtEvent('LMS tunnel closed.'); apftunnel = null; } @@ -1232,7 +1234,7 @@ function handleServerCommand(data) { break; } case 'coredump': - // Set the current agent coredump situation. + // Set the current agent coredump situation.s if (data.value === true) { if (process.platform == 'win32') { // TODO: This replace() below is not ideal, would be better to remove the .exe at the end instead of replace. diff --git a/agents/modules_meshcore/amt-manage.js b/agents/modules_meshcore/amt-manage.js index 8fb38542..63af1289 100644 --- a/agents/modules_meshcore/amt-manage.js +++ b/agents/modules_meshcore/amt-manage.js @@ -87,7 +87,7 @@ function AmtManager(agent, db, isdebug) { obj.getMeiState = function(flags, func) { if ((amtMei == null) || (amtMeiState < 2)) { if (func != null) { func(null); } return; } try { - var amtMeiTmpState = { OsHostname: require('os').hostname(), Flags: 0 }; // Flags: 1=EHBC, 2=CCM, 4=ACM + var amtMeiTmpState = { 'core-ver': 1, OsHostname: require('os').hostname(), Flags: 0 }; // Flags: 1=EHBC, 2=CCM, 4=ACM if (getMeiStateCache.MeiVersion != null) { amtMeiTmpState.MeiVersion = getMeiStateCache.MeiVersion; } else { amtMei.getProtocolVersion(function (result) { if (result != null) { getMeiStateCache.MeiVersion = amtMeiTmpState.MeiVersion = result; } }); } if ((flags & 1) != 0) { if (getMeiStateCache.Versions != null) { diff --git a/amtmanager.js b/amtmanager.js index 747f3870..6be15300 100644 --- a/amtmanager.js +++ b/amtmanager.js @@ -242,9 +242,18 @@ module.exports.CreateAmtManager = function (parent) { deactivateIntelAmtCCMEx(dev, jsondata.value); break; case 'meiState': - if (dev.pendingUpdatedMeiState != 1) break; - delete dev.pendingUpdatedMeiState; - attemptInitialContact(dev); + if (dev.acmactivate == 1) { + // Continue ACM activation + dev.consoleMsg("Got new Intel AMT MEI state. Holding 40 seconds prior to ACM activation..."); + delete dev.acmactivate; + var continueAcmFunc = function continueAcm() { if (isAmtDeviceValid(continueAcm.dev)) { activateIntelAmtAcmEx0(continueAcm.dev); } } + continueAcmFunc.dev = dev; + setTimeout(continueAcmFunc, 40000); + } else { + if (dev.pendingUpdatedMeiState != 1) break; + delete dev.pendingUpdatedMeiState; + attemptInitialContact(dev); + } break; case 'startTlsHostConfig': if (dev.acmTlsInfo == null) break; @@ -256,10 +265,14 @@ module.exports.CreateAmtManager = function (parent) { break; case 'stopConfiguration': if (dev.acmactivate != 1) break; - delete dev.acmactivate; - if (jsondata.value == 3) { activateIntelAmtAcmEx0(dev); } // Intel AMT was already not in in-provisioning state, keep going right away. - else if (jsondata.value == 0) { dev.consoleMsg("Cleared in-provisioning state. Holding 20 seconds prior to ACM activation..."); setTimeout(function () { activateIntelAmtAcmEx0(dev); }, 20000); } - else { dev.consoleMsg("Unknown stopConfiguration() state of " + jsondata.value + ". Continuing with ACM activation..."); activateIntelAmtAcmEx0(dev); } + if (jsondata.value == 3) { delete dev.acmactivate; activateIntelAmtAcmEx0(dev); } // Intel AMT was already not in in-provisioning state, keep going right away. + else if (jsondata.value == 0) { + dev.consoleMsg("Cleared in-provisioning state. Holding 30 seconds prior to getting Intel AMT MEI state..."); + var askStateFunc = function askState() { if (isAmtDeviceValid(askState.dev)) { askState.dev.controlMsg({ action: 'mestate' }); } } + askStateFunc.dev = dev; + setTimeout(askStateFunc, 30000); + } + else { dev.consoleMsg("Unknown stopConfiguration() state of " + jsondata.value + ". Continuing with ACM activation..."); delete dev.acmactivate; activateIntelAmtAcmEx0(dev); } break; } } @@ -1813,23 +1826,31 @@ module.exports.CreateAmtManager = function (parent) { // Attempt Intel AMT TLS ACM activation function activateIntelAmtTlsAcm(dev, password, acminfo) { - // Generate a random Intel AMT password if needed - if ((password == null) || (password == '')) { password = getRandomAmtPassword(); } - dev.temp = { pass: password, acminfo: acminfo }; + // Check if MeshAgent/MeshCMD can support the startConfigurationhostB() call. + if ((dev.mpsConnection != null) && (dev.mpsConnection.tag != null) && (dev.mpsConnection.tag.meiState != null) && (typeof dev.mpsConnection.tag.meiState['core-ver'] == 'number') && (dev.mpsConnection.tag.meiState['core-ver'] > 0)) { + // Generate a random Intel AMT password if needed + if ((password == null) || (password == '')) { password = getRandomAmtPassword(); } + dev.temp = { pass: password, acminfo: acminfo }; - // Get our ACM activation certificate chain - var acmTlsInfo = parent.certificateOperations.getAcmCertChain(parent.config.domains[dev.domainid], dev.temp.acminfo.fqdn, dev.temp.acminfo.hash); - if (acmTlsInfo.error == 1) { dev.consoleMsg(acmTlsInfo.errorText); removeAmtDevice(dev, 44); return; } - dev.acmTlsInfo = acmTlsInfo; + // Get our ACM activation certificate chain + var acmTlsInfo = parent.certificateOperations.getAcmCertChain(parent.config.domains[dev.domainid], dev.temp.acminfo.fqdn, dev.temp.acminfo.hash); + if (acmTlsInfo.error == 1) { dev.consoleMsg(acmTlsInfo.errorText); removeAmtDevice(dev, 44); return; } + dev.acmTlsInfo = acmTlsInfo; - // Send the MEI command to enable TLS connections - dev.consoleMsg("Performing TLS ACM activation..."); - dev.controlMsg({ action: 'startTlsHostConfig', hash: acmTlsInfo.hash, hostVpn: false, dnsSuffixList: null }); + // Send the MEI command to enable TLS connections + dev.consoleMsg("Performing TLS ACM activation..."); + dev.controlMsg({ action: 'startTlsHostConfig', hash: acmTlsInfo.hash, hostVpn: false, dnsSuffixList: null }); + } else { + // MeshCore or MeshCMD is to old + dev.consoleMsg("This software is to old to support ACM activation, pleasse update and try again."); + removeAmtDevice(dev); + } } // Attempt Intel AMT TLS ACM activation after startConfiguration() is called on remote device function activateIntelAmtTlsAcmEx(dev, startConfigData) { - console.log('activateIntelAmtTlsAcmEx'); + console.log('activateIntelAmtTlsAcmEx', dev.mpsConnection.tag.meiState.OsAdmin.user, dev.mpsConnection.tag.meiState.OsAdmin.pass); + // Setup the WSMAN stack, no TLS var comm = CreateWsmanComm(dev.nodeid, 16993, 'admin', '', 1, { cert: dev.acmTlsInfo.certs, key: dev.acmTlsInfo.signkey }, dev.mpsConnection); // TLS with client certificate chain and key. // TODO: Intel AMT leaf TLS cert need to SHA256 hash to "startConfigData.hash" @@ -1843,25 +1864,39 @@ module.exports.CreateAmtManager = function (parent) { console.log('activateIntelAmtTlsAcmEx1', status, responses); const dev = stack.dev; if (isAmtDeviceValid(dev) == false) return; // Device no longer exists, ignore this request. - if (status != 200) { dev.consoleMsg("Failed to get Intel AMT state."); removeAmtDevice(dev, 45); return; } - - // TODO!!! + if (status != 200) { + dev.consoleMsg("Failed to perform ACM TLS connection, falling back to legacy host-based activation."); + activateIntelAmtAcm(dev); // Falling back to legacy WSMAN ACM activation, start by refreshing $$OsAdmin username and password. + } else { + // TODO!!! + } } // Attempt Intel AMT ACM activation function activateIntelAmtAcm(dev, password, acminfo) { - // Generate a random Intel AMT password if needed - if ((password == null) || (password == '')) { password = getRandomAmtPassword(); } - dev.temp = { pass: password, acminfo: acminfo }; - dev.acmactivate = 1; + // Check if MeshAgent/MeshCMD can support the stopConfiguration() call. + if ((dev.mpsConnection != null) && (dev.mpsConnection.tag != null) && (dev.mpsConnection.tag.meiState != null) && (typeof dev.mpsConnection.tag.meiState['core-ver'] == 'number') && (dev.mpsConnection.tag.meiState['core-ver'] > 0)) { + // Generate a random Intel AMT password if needed + if (acminfo != null) { + if ((password == null) || (password == '')) { password = getRandomAmtPassword(); } + dev.temp = { pass: password, acminfo: acminfo }; + } + dev.acmactivate = 1; - // Send the MEI command to stop configuration. - // If Intel AMT is "in-provisioning" mode, the WSMAN ACM activation will not work, so we need to do this first. - dev.consoleMsg("Getting ready for ACM activation..."); - dev.controlMsg({ action: 'stopConfiguration' }); + // Send the MEI command to stop configuration. + // If Intel AMT is "in-provisioning" mode, the WSMAN ACM activation will not work, so we need to do this first. + dev.consoleMsg("Getting ready for ACM activation..."); + dev.controlMsg({ action: 'stopConfiguration' }); + } else { + // MeshCore or MeshCMD is to old + dev.consoleMsg("This software is to old to support ACM activation, pleasse update and try again."); + removeAmtDevice(dev); + } } function activateIntelAmtAcmEx0(dev) { + if (isAmtDeviceValid(dev) == false) return; // Device no longer exists, ignore this request. + // Setup the WSMAN stack, no TLS var comm = CreateWsmanComm(dev.nodeid, 16992, dev.mpsConnection.tag.meiState.OsAdmin.user, dev.mpsConnection.tag.meiState.OsAdmin.pass, 0, null, dev.mpsConnection); // No TLS var wsstack = WsmanStackCreateService(comm); diff --git a/meshcentral.js b/meshcentral.js index 5ef6ccf6..b746e1fc 100644 --- a/meshcentral.js +++ b/meshcentral.js @@ -454,7 +454,7 @@ function CreateMeshCentralServer(config, args) { if (error != null) { // This is an un-expected restart console.log(error); - console.log('ERROR: MeshCentral failed with critical error, check MeshErrors.txt. Restarting in 5 seconds...'); + console.log('ERROR: MeshCentral failed with critical error, check mesherrors.txt. Restarting in 5 seconds...'); setTimeout(function () { obj.launchChildServer(startArgs); }, 5000); } }