内网渗透(五)--横向移动
本文最后更新于:2 年前
简介
在内网渗透中,当攻击者获取到内网某台机器的控制权后,会以被攻陷的主机为跳板,通过收集域内凭证等各种方法,访问域内其他机器,进一步扩大资产范围。通过此类手段,攻击者最终可能获得域控制器的访问权限,甚至完全控制基于Windows操作系统的整个内网环境,控制域环境下的全部机器。当然,域内也有可能出现Linux主机,但概率很低。
利用方式
首先,信息收集是必不可少的。我们一般使用mimikatz(俗称”法国大面包“)进行密码或hash值的抓取。注意,使用这款工具需要管理员权限,并且实战中还要做好免杀。如果目标主机是Linux系统,则可使用mimipenguin抓取。
下面列举出了几个常用命令:
1 |
|
当mimikatz无法正常上传或者被查杀时,mimikatz也可以配合procdump使用。procdump是Windows自带的软件,不会被杀软拦截查杀。下面是常用命令:
1 |
|
通过IPC连接创建计划任务(目标主机需开放135和445端口)
IPC$(Internet Process Connection) 是共享 “ 命名管道 “ 的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。IPC$是NT2000的一项新功能,它有一个特点,即在同一时间内,两个IP之间只允许建立一个连接。IPC 可以通过验证用户名和密码获得相应的权限,通常在远程管理计算机和查看计算机的共享资源时使用。
通过ipc$,可以与目标机器建立连接。利用这个连接,不仅可以访问目标机器中的文件,进行上传、下载等操作,还可以在目标机器上运行其他命令,以获取目标机器的目录结构、用户列表等信息。
利用流程:
1.建立 IPC 链接到目标主机
2.拷贝要执行的命令脚本到目标主机
3.查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
4.删除 IPC 链接
这里仅介绍at和schtasks两种计划任务的使用,实战中要根据不同的系统版本来选择不同种类的计划任务。
1.at(Windows server<2012)
1 |
|
2.schtasks(Windows server>=2012)
1 |
|
利用SMB服务(目标主机需开放445端口)
下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec
psexec 是 windows 下非常好的一款远程命令行工具。psexec的使用不需要对方主机开放3389端口,只需要对方开启admin$共享 (该共享默认开启)。但是,假如目标主机开启了防火墙,psexec也是不能使用的,会提示找不到网络路径。由于psexec是Windows提供的工具,所以杀毒软件将其列在白名单中。并且连接会产生日志,所以要注意清理。
psexec的基本原理:
1.通过ipc$连接,释放二进制文件psexecsvc.exe到目标
2.通过服务管理SCManager远程创建一个psexec服务,并启动服务
3.客户端连接执行命令,服务端通过服务启动相应的程序执行命令并回显数据
4.运行结束后删除服务
它的利用分为两种情况,一种需要建立IPC连接,需要知道明文密码;另一种不需要建立IPC连接,可以用hash值认证,但是需要使用第三方软件包IMpacket,且实战中需要做免杀处理。
第一种情况:
1 |
|
第二种情况:
1 |
|
当然也可以用msf自带的psexec模块进行攻击,模块路径是exploit/windows/smb/psexec
。
利用WMI服务(目标主机需开放135管理端口和445回显端口)
WMI的全名为“Windows Management Instrumentation”。从Windows 98开始,Windows操作系统都支持WMI。WMI是由一系列工具集组成的,可以通过/node选项使用端口135上的远程过程调用(RPC)进行通信以进行远程访问,它允许系统管理员远程执行自动化管理任务,例如远程启动服务或执行命令。
同样的,WMI服务有三种连接方式,它们各有优缺点。
第一种是Windows自带的wmic,它只支持明文传递密码,且命令执行没有回显,我们只能把回显输出到txt文本里查看。但正因为它是系统自带的,我们不需要考虑免杀的问题。
1 |
|
第二种同样是Windows自带的CScript,需要配合vbs脚本使用(下载地址:https://pan.baidu.com/s/1Vh4ELTFvyBhv3Avzft1fCw 提取码:xiao)。它只支持明文传递密码,但命令执行有回显,同样无需考虑免杀。
1 |
|
第三种需要借助第三方软件包IMpacket,支持明文或hash传递密码,有回显,但是要考虑免杀。
1 |
|
利用Python脚本批量利用hash
该脚本是impacket工具包中的一个工具,主要在从Linux像Windows进行横向渗透时使用,十分强大,可以走socks代理进入内网。
GitHub项目地址:https://github.com/CoreSecurity/impacket/blob/master/examples/wmiexec.py
部分转载自:[内网渗透测试:内网横向移动基础总结 - FreeBuf网络安全行业门户https://www.freebuf.com/articles/network/251364.html](内网渗透测试:内网横向移动基础总结 - FreeBuf网络安全行业门户https://www.freebuf.com/articles/network/251364.html)
哈希传递(PTH)
大多数渗透测试人员都听说过哈希传递(Pass The Hash)攻击,该方法通过找到与账户相关的密码散列值(通常是 NTLM Hash)来进行攻击。在域环境中,用户登录计算机时使用的大都是域账号,大量计算机在安装时会使用相同的本地管理员账号和密码,因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就能使用哈希传递攻击的方法登录内网中的其他计算机。同时,通过哈希传递攻击攻击者不需要花时间破解哈希密在Windows网络中,散列值就是用来证明身份的(有正确的用户名和密码散列值,就能通过验证),而微软自己的产品和工具显然不会支持这种攻击,于是,攻击者往往会使用第三方工具来完成任务。在Windows Server2012R2及之后版本的操作系统中,默认在内存中不会记录明文密码,因此,攻击者往往会使用工具将散列值传递到其他计算机中,进行权限验证,实现对远程计算机的控制。
下面以mimikatz为例:
1 |
|
然后在mimikatz弹回的cmd命令行中建立连接,执行命令即可。例如:
1 |
|
但是,实战中我们不知道获得的ntlm值属于哪一台主机,这就需要在弹出来的cmd命令行中进行测试。
票据传递(PTT)
我们在渗透测试中,要使用哈希传递攻击,则必须要获取目标机器的管理员权限。如果没有管理员权限,我们不妨用用票据传递攻击(PTT)。
在开始学习票据传递之前,我们有必要了解一下Kerberos协议:Kerberos协议认证过程(理论篇) - FreeBuf网络安全行业门户
在票据传递攻击(PTT)中,我们常用的有MS14-068、黄金票据、白银票据。其中MS14-068可用来横向获取域内主机权限,黄金票据、白银票据则可以用来对域控进行权限维持。这里我们主要结合mimikatz结合exp来利用MS14-068漏洞,至于黄金票据、白银票据我们将在未来的域内权限维持中讲解。
首先获取域用户的sid:
1 |
|
用exp生成伪造的凭证(exp下载地址点这里):
1 |
|
利用mimikatz清空凭证,因为有域成员凭证会影响伪造:
1 |
|
注入成功后,即可使用net use
命令登录目标机器:
1 |
|
国产内网杀器–Ladon
由于是图形化工具,所以这里不再赘述。它的功能包括信息收集、协议扫描、漏洞探针、传递攻击等,有兴趣的自行了解。