pub const WINDOWS_MASQUERADE_TARGETS: &[&str] = &[
"svchost.exe",
"lsass.exe",
"csrss.exe",
"spoolsv.exe",
"dllhost.exe",
"conhost.exe",
"wermgr.exe",
"services.exe",
"winlogon.exe",
"smss.exe",
"taskhost.exe",
"taskhostw.exe",
"explorer.exe",
"system",
"registry",
];
pub const KNOWN_MALWARE_PROCESS_NAMES: &[&str] = &[
"xmrig",
"mimikatz",
"meterpreter",
"beacon",
"empire",
"cobaltstrike",
"ngrok",
"frp",
"chisel",
"ligolo",
"sliver",
"havoc",
"brute",
"pwncat",
"reptile",
"diamorphine",
];
pub fn is_masquerade_target(name: &str) -> bool {
let lower = name.to_ascii_lowercase();
WINDOWS_MASQUERADE_TARGETS
.iter()
.any(|t| t.to_ascii_lowercase() == lower)
}
pub fn is_known_malware_process(name: &str) -> bool {
let lower = name.to_ascii_lowercase();
KNOWN_MALWARE_PROCESS_NAMES
.iter()
.any(|t| t.to_ascii_lowercase() == lower)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn masquerade_targets_contains_svchost() {
assert!(WINDOWS_MASQUERADE_TARGETS.contains(&"svchost.exe"));
}
#[test]
fn masquerade_targets_contains_lsass() {
assert!(WINDOWS_MASQUERADE_TARGETS.contains(&"lsass.exe"));
}
#[test]
fn malware_names_contains_mimikatz() {
assert!(KNOWN_MALWARE_PROCESS_NAMES.contains(&"mimikatz"));
}
#[test]
fn malware_names_contains_xmrig() {
assert!(KNOWN_MALWARE_PROCESS_NAMES.contains(&"xmrig"));
}
#[test]
fn detects_svchost_lowercase() {
assert!(is_masquerade_target("svchost.exe"));
}
#[test]
fn detects_lsass_uppercase() {
assert!(is_masquerade_target("LSASS.EXE"));
}
#[test]
fn detects_explorer_mixed_case() {
assert!(is_masquerade_target("Explorer.exe"));
}
#[test]
fn does_not_flag_random_process() {
assert!(!is_masquerade_target("mygame.exe"));
}
#[test]
fn empty_string_not_masquerade_target() {
assert!(!is_masquerade_target(""));
}
#[test]
fn detects_mimikatz() {
assert!(is_known_malware_process("mimikatz"));
}
#[test]
fn detects_meterpreter_uppercase() {
assert!(is_known_malware_process("METERPRETER"));
}
#[test]
fn detects_beacon() {
assert!(is_known_malware_process("beacon"));
}
#[test]
fn does_not_flag_chrome() {
assert!(!is_known_malware_process("chrome"));
}
#[test]
fn empty_string_not_malware_process() {
assert!(!is_known_malware_process(""));
}
}