Some security software may flag ndtrack (a component of the FlexNet Inventory Agent) for executing a PowerShell command that includes unusual characters. You may encounter a string that looks like the following:
NOTE: The exact string may vary depending on the environment.
powershell.exe -command "$string = '㉻䀉崔ㅸُ瀹Ռ㕼紴稳' $bytes...
The inventory-gathering capabilities of the FlexNet Inventory Agent are extended using InventorySettings.xml, which includes PowerShell scripts to collect data about various software, including:
- Microsoft Windows Server user access logging
- Microsoft CAL/SharePoint Server
- Microsoft Exchange Server
- Microsoft Lync Server
The script related to Exchange Server in InventorySettings.xml dynamically builds and executes a PowerShell command line to decrypt Exchange Server edition information that has been retrieved from Active Directory. The command line includes an encrypted byte array containing information retrieved from Active Directory.
Some security software can detect and flag execution of PowerShell in this way. Command line may be reported as containing non-ASCII character data.
Exchange edition decode algorithm
The PowerShell script described above decodes binary data containing Exchange edition information retrieved from Active Directory. This is a decoding method derived from Microsoft’s documentation on Exchange Server Active Directory schema changes. Details on this method are available in Exchange Server 2003 to Exchange Server 2010 Active Directory Schema Changes Reference.doc.
Using the type attribute of the msExchExchangeServer object from Active Directory, the following steps represented in C#-like pseudocode decode the encrypted value.
- Establish constants for encoding
Two constants establish the encoding seed and magic numbers used by the algorithm.
const byte Seed = 0x49;
const byte Magic = 0x43;
- Convert the Unicode string to a little-endian byte array
byte[] decodeBuf = Encoding.Unicode.GetBytes((string)value);
- Decode the byte array
Start from the end of the buffer and decode each byte [n-1] by XORing it with the result of XOR between the seed and byte [n-2]. This decodes all bytes except the first one. Each decoded byte will be an ASCII printable character.
for (int i = decodeBuf.Length; i > 1; i--) {
decodeBuf[i - 1] ^= (byte)(decodeBuf[i - 2] ^ Seed);
}
- Decode the first byte
Use XOR with the bitwise OR of the seed and magic number:
decodeBuf[0] ^= Seed | Magic;
- Convert the byte array back to a Unicode string
The byte array now has a little-endian array of Unicode bytes that can be converted back to a Unicode string.
string decodedType = Encoding.Unicode.GetString(decodeBuf);
- Interpret the converted string
The converted string has the following format: {ServerType};{EncodeDate};{SetupType}
Each field is a hexadecimal string of the format 0xhhhhhhhh. For example: 0x00000001;0x32984c50;0x00000001.
The MAP Toolkit is concerned only with the ServerType and SetupType fields, each of which shares the same enumeration values, as shown in the following table.
Additional information about processes executed during the inventory gathering process on Windows operating systems can be found here: Common: Child Processes on Windows Platforms.
Related Articles
Gathering diagnostic tracing from a FlexNet inventory agent process on Unix-like operating systems 144Number of Views Common causes of high CPU usage by the ndtrack component of FlexNet inventory agent 424Number of Views Snow Inventory Agent: How to verify the authenticity of Snow Powershell scripts 18Number of Views Inventory gathering ndtrack process may crash with error on MacOS if a bundle metadata contains a non-numeric "last modifi… 1Number of Views ndtrack process running for days and with high CPU usage potentially due to Trend Micro Antivirus (or Trend Micro Deep Sec… 8Number of Views
Hi, I am Reva - Ask me anything.
No new updates
Thanks for the feedback!
Your feedback has been saved.Rate this response:
Add Additional feedback ( Optional )
Are you sure you want to cancel
the case creation?
Are you sure you want to cancel the case creation?
Are you sure you want to close this case
| Products | Region | Phone Numbers |
|---|---|---|
| FlexNet Operations FlexNet Embedded FlexNet Publisher FlexNet Connect FlexNet Code Insight InstallAnywhere InstallShield |
North America * |
+1 630-332-2513 (toll) +1 877-279-2853 (toll-free in North America) |
| Europe * |
+44 1925 944367 (toll) +44 800 047 8642 (toll-free in Europe) |
|
| Japan * | +81 3-4540-5335 (select option 2) | |
| Australia * |
+61 3 9895 2177 +61 1800 560 603 (toll-free in Australia) |
|
|
Usage Intelligence (formerly
Revulytics) Compliance Intelligence |
Please use the Case Portal to submit your support ticket or reach out to your Revenera contact. | |
Revenera Assistant
Case id: 00001065
Activity: Status change: 2 hours ago