Identifier / Programs / Linux and Unix
npm
JavaScript and Node.js package manager. Manage Node.js projects and their module dependencies. Some subcommands such as install, run, etc. have their own usage documentation. tldr-pages
GTFOBins shell 1 ATT&CK technique 3 documented commands
How npm is abused
shell T1059.004 Command and Scripting Interpreter: Unix Shell
exec
shell T1059.004 Command and Scripting Interpreter: Unix Shell
-CEach abuse is GTFOBins's category and the options and words it uses; the full write-up is on GTFOBins's page for npm.
3 documented commands
shell unprivileged, with sudo
npm exec /bin/shIdentifyshell unprivileged, with sudo
echo '{"scripts": {"preinstall": "/bin/sh"}}' >package.json
npm -C . iIdentifyshell unprivileged, with sudo
echo '{"scripts": {"xxx": "/bin/sh"}}' >package.json
npm -C . run xxxIdentifyNone of the 3 commands the identifier reads trips a Sigma process-creation rule. These commands are from GTFOBins, at commit acd524623f9c of 2026-05-27, under the GPL-3.0, with no warranty. Changed: Markdown is shown formatted. The source is in lolbas-gtfobins-commands.json.gz, and the full entry is on GTFOBins’s page for npm. The identifier reads the line of each that runs npm.
What detects it
Everyday use
Create a package.json file with default values (omit --yes to do it interactively)
npm init --yesIdentifyDownload all the packages listed as dependencies in package.json
npm [iIdentifyDownload a specific version of a package and add it to the list of dependencies in package.json
npm [i package_name@versionIdentifyNone of the 3 examples the identifier reads matches GTFOBins abuse or trips a Sigma process-creation rule.