Ceplin Command Identifier

Identifier / Programs / Windows

dotnet.exe

Cross platform .NET tools for .NET Core. Some subcommands such as build have their own usage documentation. tldr-pages

LOLBAS AWL Bypass, Execute 1 Sigma rule name it 2 ATT&CK techniques 4 documented commands 2 known copies with hashes

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

How dotnet.exe is abused

documented by LOLBAS

AWL Bypass T1218 System Binary Proxy Execution

Execute T1218 System Binary Proxy Execution

Execute T1059 Command and Scripting Interpreter

fsi

AWL Bypass T1218 System Binary Proxy Execution

msbuild

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

4 documented commands

from LOLBAS, each read by the identifier

AWL Bypass T1218 System Binary Proxy Execution User privileges

dotnet.exe will execute any DLL even if applocker is enabled.

dotnet.exe {PATH:.dll}
Identify

Trips 1 Sigma rule: mediumArbitrary DLL or Csproj Code Execution Via Dotnet.EXE by Beyu Denis, oscd.community

Execute T1218 System Binary Proxy Execution User privileges

dotnet.exe will execute any DLL.

dotnet.exe {PATH:.dll}
Identify

Trips 1 Sigma rule: mediumArbitrary DLL or Csproj Code Execution Via Dotnet.EXE by Beyu Denis, oscd.community

Execute T1059 Command and Scripting Interpreter User privileges

dotnet.exe will open a console which allows for the execution of arbitrary F# commands

dotnet.exe fsi
Identify

Trips no Sigma process-creation rule.

AWL Bypass T1218 System Binary Proxy Execution User privileges

dotnet.exe with msbuild (SDK Version) will execute unsigned code

dotnet.exe msbuild {PATH:.csproj}
Identify

Trips 1 Sigma rule: mediumArbitrary DLL or Csproj Code Execution Via Dotnet.EXE by Beyu Denis, oscd.community

3 of the 4 commands the identifier reads trip a Sigma process-creation rule; 1 trips none. These commands and their descriptions are from LOLBAS’s entry for dotnet.exe, by felamos, at commit 2056cb766250 of 2026-09-26, under the GPL-3.0 and LOLBAS’s notice, with no warranty. Changed: Markdown is shown formatted. The source is in lolbas-gtfobins-commands.json.gz, and the full entry is on LOLBAS’s page for dotnet.exe. The identifier reads each with LOLBAS’s placeholders filled in: a URL as https://example.com/file, a share as \\192.0.2.10\share\file, a path as C:\Data\file and a command as calc.exe.

What detects it

Sigma process creation rules
T1059Command and Scripting Interpreter
T1218System Binary Proxy Execution

Is it the real dotnet.exe?

file version info and known copies
Original name.NET Host in the file’s header: a renamed copy still carries it
Installed inC:\Program Files (x86)\dotnet\
C:\Program Files\dotnet\
Signed byMicrosoft Corporation
ProductMicrosoft .NET Framework, Microsoft Corporation
Description.NET Host

2 known copies

5,0,1121,47308 @Commit: f431858f8b1f1510723ace6343786c9194dbd7fc · C:\Program Files\dotnet\dotnet.exe · signed by Microsoft Corporation

0bbb5e1fa31ac3abb683248029253473208164b6316690b7cf49d50998413315

5,0,1121,47308 @Commit: f431858f8b1f1510723ace6343786c9194dbd7fc · C:\Program Files (x86)\dotnet\dotnet.exe · signed by Microsoft Corporation

fc799367f5ddb02755d3938c92a56262474fd9ca65ba53e5efdd5021a2584deb

From the file’s version info and the copies recorded by xCyclopedia (MIT). A copy in another folder, signed by someone else or with another hash is not necessarily malicious, but it is worth a closer look. In Ceplin, "<sha256>".whatis() says which known copy a hash is.

Everyday use

from tldr-pages, CC BY 4.0

Initialize a new .NET project

dotnet new template_short_nameIdentify

Restore NuGet packages

dotnet restoreIdentify

Build and execute the .NET project in the current directory

dotnet runIdentify

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