Identifier / Programs / Linux and Unix
g++
Compile C++ source files. Part of GCC (GNU Compiler Collection). tldr-pages
GTFOBins file-read, file-write, shell 1 ATT&CK technique 4 documented commands
How g++ is abused
file-read
-x-Efile-write
-x-oshell T1059.004 Command and Scripting Interpreter: Unix Shell
-wrapperEach abuse is GTFOBins's category and the options and words it uses; the full write-up is on GTFOBins's page for g++.
4 documented commands
GTFOBins documents g++ with the commands of gcc.
file-read unprivileged, with sudo
gcc -x c -E /path/to/input-fileIdentifyTrips no Sigma process-creation rule.
file-read unprivileged, with sudo
The file is read and parsed as a list of files (one per line), the content is displayed as error messages.
gcc @/path/to/input-fileIdentifyTrips no Sigma process-creation rule.
file-write unprivileged, with sudo
This actually deletes the file.
gcc -x c /dev/null -o /path/to/input-fileIdentifyTrips no Sigma process-creation rule.
shell unprivileged, with sudo
In some older versions, the x argument must instead reference any existing file.
gcc -wrapper /bin/sh,-s xIdentifyTrips 1 Sigma rule: highShell Execution GCC - Linux by Li Ling, Andy Parkidomo, Robert Rakowski, Blake Hartstein (Bloomberg L.P.)
1 of the 4 commands the identifier reads trips a Sigma process-creation rule; 3 trip none. These commands are, with GTFOBins’ notes, 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 g++. The identifier reads the line of each that runs gcc.
What detects it
Everyday use
Compile a source code file into an executable binary
g++ path/to/source1.cpp path/to/source2.cpp ... --output path/to/output_executableIdentifyActivate output of all errors and warnings
g++ path/to/source.cpp -Wall --output path/to/output_executableIdentifyShow common warnings, debug symbols in output, and optimize without affecting debugging
g++ path/to/source.cpp -Wall --debug -Og --output path/to/output_executableIdentifyNone of the 3 examples the identifier reads matches GTFOBins abuse or trips a Sigma process-creation rule.