Adversaries may use hidden windows to conceal malicious activity from the plain sight of users. In some cases, windows that would typically be displayed when an application carries out an operation can be hidden. This may be utilized by system administrators to avoid disrupting user work environments when carrying out administrative tasks.
On Windows, there are a variety of features in scripting languages in Windows, such as PowerShell, Jscript, and Visual Basic to make windows hidden. One example of this is powershell.exe -WindowStyle Hidden
. [1]
Similarly, on macOS the configurations for how applications run are listed in property list (plist) files. One of the tags in these files can be apple.awt.UIElement
, which allows for Java applications to prevent the application's icon from appearing in the Dock. A common use for this is when applications run in the system tray, but don't also want to show up in the Dock.
Adversaries may abuse these functionalities to hide otherwise visible windows from users so as not to alert the user to adversary activity on the system.[2]
ID | Name | Description |
---|---|---|
S0331 | Agent Tesla |
Agent Tesla has used |
G0073 | APT19 |
APT19 used |
G0007 | APT28 |
APT28 has used the WindowStyle parameter to conceal PowerShell windows.[5] [6] |
G0022 | APT3 |
APT3 has been known to use |
G0050 | APT32 |
APT32 has used the WindowStyle parameter to conceal PowerShell windows. [8] [9] |
S0373 | Astaroth |
Astaroth loads its module with the XSL script parameter |
S0360 | BONDUPDATER |
BONDUPDATER uses |
G0052 | CopyKittens |
CopyKittens has used |
S0625 | Cuba | |
G0079 | DarkHydrus |
DarkHydrus has used |
G0009 | Deep Panda |
Deep Panda has used |
G0078 | Gorgon Group |
Gorgon Group has used |
S0037 | HAMMERTOSS |
HAMMERTOSS has used |
G0126 | Higaisa | |
S0431 | HotCroissant |
HotCroissant has the ability to hide the window for operations performed on a given file.[19] |
S0260 | InvisiMole |
InvisiMole has executed legitimate tools in hidden windows.[20] |
S0387 | KeyBoy |
KeyBoy uses |
S0437 | Kivars |
Kivars has the ability to conceal its activity through hiding active windows.[22] |
G0059 | Magic Hound |
Magic Hound malware has a function to determine whether the C2 server wishes to execute the newly dropped file in a hidden window.[23] |
S0500 | MCMD |
MCMD can modify processes to prevent them from being visible on the desktop.[24] |
S0455 | Metamorfo |
Metamorfo has hidden its GUI using the ShowWindow() WINAPI call.[25] |
G0133 | Nomadic Octopus |
Nomadic Octopus executed PowerShell in a hidden window.[26] |
S0441 | PowerShower |
PowerShower has added a registry key so future powershell.exe instances are spawned with coordinates for a window position off-screen by default.[27] |
S0491 | StrongPity |
StrongPity has the ability to hide the console window for its document search module from the user.[28] |
S0386 | Ursnif |
Ursnif droppers have used COM properties to execute malware in hidden windows.[29] |
S0466 | WindTail |
WindTail can instruct the OS to execute an application without a dock icon or menu.[30] |
ID | Mitigation | Description |
---|---|---|
M1038 | Execution Prevention |
Limit or restrict program execution using anti-virus software. On MacOS, allowlist programs that are allowed to have the plist tag. All other programs should be considered suspicious. |
ID | Data Source | Data Component |
---|---|---|
DS0017 | Command | Command Execution |
DS0022 | File | File Modification |
DS0009 | Process | Process Creation |
DS0012 | Script | Script Execution |
Monitor processes and command-line arguments for actions indicative of hidden windows. In Windows, enable and configure event logging and PowerShell logging to check for the hidden window style. In MacOS, plist files are ASCII text files with a specific format, so they're relatively easy to parse. File monitoring can check for the apple.awt.UIElement
or any other suspicious plist tag in plist files and flag them.