内网渗透——PSExec工具
内网渗透——PSExec工具
简介
PsExec 是由 Mark Russinovich 创建的 Sysinternals Suite中包含的工具。最初,它旨在作为系统管理员的便利工具,以便他们可以通过在远程主机上运行命令来执行维护任务。后来因为太过方便,被利用到内网渗透之中。现在PsExec类的工具有各种语言的实现,如Metasploit的psexec psexec psh, Impacket psexec, pth-winexe, Empire Invoke-Psexec等等。
PsExec是一个轻量级的telnet替代工具,它使您无需手动安装客户端软件即可执行其他系统上的进程,并且可以获得与命令控制台几乎相同的实时交互性。PsExec最强大的功能就是在远程系统和远程支持工具(如ipconfig、whoami)中启动交互式命令提示窗口,以便显示无法通过其他方式显示的有关远程系统的信息。
系统管理员通常会使用这款工具来远程执行脚本,例如组件安装脚本或数据收集脚本。这种方法不仅操作起来非常的简单,而且还可以节省资源。最重要的是,这种方法还可以避免服务器出现漏洞。除此之外,很多人也会将其用于软件部署的过程中,虽然也有很多其他的工具可以选择,但是PsExec追求的是性价比。
同样的,攻击者也是考虑到了这些因素所以才会选择PsExec的。除了上述原因之外,还有下面这几点:
-
这些工具属于合法工具,因此当反病毒软件或终端检测产品检测到了这类恶意软件之后,有可能只会发出警告,或者直接忽略它们。具体将取决于用户的设置情况。
-
这些工具可以直接从微软的官方网站免费下载获取。
-
如果攻击者在恶意软件中使用这些工具的话,目标用户的计算机中很可能已经安装好这些工具了,所以这也为攻击者提供了方便。
工作原理
PsExec特点:
- psexec远程运行需要远程计算机启用文件和打印共享且默认的Admin$共享映射到C:windows目录。
- psexec建立连接之后目标机器上会被安装一个“PSEXESVC”服务。但是psexec安全退出之后这个服务会自动删除(在命令行下使用exit命令退出)。
PsExec详细运行过程:
-
- TCP三次握手,通过SMB会话进行身份验证。
- 连接
admin$
共享,通过 SMB 访问默认共享文件夹ADMIN$
,写入PSEXESVC.exe文件; - 利用ipc命名管道调用svcctl服务
- 利用svcctl服务开启psexesvc服务
- 生成4个命名管道以供使用。一个psexesvc管道用于服务本身,另外的管道stdin(输入)、stdout(输出)、stderr(输出)用于重定向进程。
作为渗透工具的缺点
- 特征明显,psexec类工具会释放文件,市面上的杀毒软件基本都能检测到。
- 执行过程中需要安装服务,会留下日志,容易通过溯源推测出攻击过程,并且退出时偶尔会出现服务不能删除的情况。
- 条件限制,需要开启admin$ 445端口共享。
使用流程
定位域控
利用nslookup定位DC
无IPC连接
我们在win7的机器上查看了解情况,若无共享的连接,则我们在使用PsExec的时候需要使用账号密码进行验证
PsExec.exe \\192.168.43.100 -u username -p password
无需弹出新的cmd窗口,直接拿下域控
有IPC连接
这个时候无需验证账号密码
PsExec.exe \\192.168.43.100 cmd.exe
Msf中的Psexec模块
use exploit/windows/smb/psexec
set RHOST 192.168.43.100
set smbuser usernmae
set smbpass password
run
使用技巧
remote UAC
UAC是什么?UAC是微软在Windows Vista 以后版本引入的一种安全机制,可以阻止未经授权的应用程序自动进行安装,并防止无意中更改系统设置。对于UAC保持默认或者更高的话,共享时可能会出现拒绝访问的情况
这时,可以修改注册表,将UAC设置为最低
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem添加新DWORD值,键值:LocalAccountTokenFilterPolicy 为1。