
系列文章
简介
渗透测试-地基篇
该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。
请注意:
本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。
名言:
你对这行的兴趣,决定你在这行的成就!
一、前言
渗透测试人员需谨记《网络安全法》,根据《网络安全法》所示,未经授权的渗透测试都是不合法的,不管是出于何种目的。红队渗透人员在进行渗透期间,渗透测试的行为和项目必须在被渗透方授予权限可渗透后,才可进行渗透测试操作。
如今有一家dayu公司,需要对自己的业务以及整体的内网框架体系进行隐患挖掘,授予权限我进行对dayu公司的渗透测试操作,在签署了双方的《渗透测试授权书》后,我开始了对dayu公司的渗透之旅。
跳开思维讲,我此篇内容是内网渗透篇章,通过我的专栏:
社工钓鱼 -> 免杀过全杀软 -> 内网渗透
那么我通过了社工钓鱼的各种方式,将钓鱼文件进行免杀后,成功钓鱼到了该公司外围人员计算机,并控制了该计算机权限获得shell,并成功登录对方电脑。
通过前期对域用户大量的信息收集,画出了相对应的简单网络拓扑图,下一步需要进攻子域控制器,思路如下:
域普通用户 -> 子域控制器 -> 父域控制器 ->辅域控制器
通过该思路进攻即可,还有另外一条思路:
域普通用户 -> 10.10.21.0/24二级区域 -> 父子域控制器 -> 横向延伸
渗透人员最爱系统之一有kali,还有各类windows集成的武器库系统,通过上期隐藏通信隧道技术已经在内网域森林中建立了一级隧道,并在上期权限提升中将普通用户权限提升为system最高权限后,今天我们就来对域森林进行横向移动,总结实战中会遇到的横向移动各种方法,利用这些方法在内网中遨游!
不会内网横向移动技术,就无法对内网机器进行进一步的渗透!!
二、环境介绍
目前信息收集获得的网络情况:(模拟环境)
拓扑图简介
为了更好的演示接下来的渗透和回看总拓扑图公司搭建环境情况:
接下来将演示分析内网中的横向移动各种方法,利用该方法在域森林中旅行!
三、域內横向移动分析
域内横向移动技术是在复杂的内网攻击中被广泛使用的一种技术,尤其是在高级持续威胁(Advanced Persistent Threats,APT)中。攻击者会利用该技术,以被攻陷的系统为跳板,访问其他域内主机,扩大资产范围(包括跳板机器中的文档和存储的凭证,以及通过跳板机器连接的数据库、域控制器或其他重要资产)。
通过此类攻击手段,攻击者最终可能获取域控制器的访问权限,甚至完全控制基于Windows操作系统的基础设施和与业务相关的关键账户。因此,必须使用强口令来保护特权用户不被用于横向移动攻击,从而避免域内其他机器沦陷。建议系统管理员定期修改密码,从而使攻击者获取的权限失效。
那么在攻击域森林渗透测试中,拿到目标计算机的用户明文密码或者NTLM Hash后,可以通过PTH (Pass the Hash,凭据传递)的方法,将散列值或明文密码传送到目标机器中进行验证。与目标机器建立连接后,可以使用相关方法在远程Windows操作系统中执行命令。在多层代理环境中进行渗透测试时,由于网络条件较差,无法使用图形化界面连接远程主机。此时,可以使用命令行的方式连接远程主机(最好使用Windows自带的方法对远程目标系统进行命令行下的连接操作)并执行相关命令。
通过以上简单的铺垫了解后,实战中由于网络偏差,无法进行3389等远程图形化界面操作,尽可能的也别远程登录对方桌面进行操作,接下来将带大家在域森林内网大型环境中进行各种内网横向移动实战操作演示!
四、IPC横向移动
IPC( Internet Process Connection)共享"命名管道"的资源,是为了实现进程间通信而开放的命名管道。IPC 可以通过验证用户名和密码获得相应的权限,通常在远程管理计算机和查看计算机的共享资源时使用。
通过ipc,可以与目标机器建立连接。利用这个连接,不仅可以访问目标机器中的文件,进行上传、下载等操作,还可以在目标机器上运行其他命令,以获取目标机器的目录结构、用户列表等信息。
1、建立IPC通道条件
1)被攻击方开启了139、445端
IPC可以实现远程登录及对默认共享资源的访问,而139端口的开启表示NetBIOS协议的应用。通过139、445 (Window 2000)端口,可以实现对共享文件/打印机的访问。因此,一般来讲,IPC需要139、445端口的支持。
2)管理员开启了默认共享
默认共享是为了方便管理员进行远程管理而默认开启的,包括所有的逻辑盘(c$、d$、e$
等)和系统目录或 windows(admin$
)。通过 ipc$,可以实现对这些默认共享目录的访问。
2、建立IPC横向
1)建立ICP
首先在得知普通域用户名密码的情况下,需要建立一个ipc$输入以下命令:
net use \\目标IP\ipc$ "密码" /user:用户名
net use \\10.10.3.6\ipc$ "QWEasd1234" /user:xiyou1\administrator
2)查询IPC情况
成功和域森林用户建立IPC!
3)建立IPC失败原因总结
用户名或密码错误。
目标没有打开 ipc$默认共享。
不能成功连接目标的139、445端口。
命令输入错误。
4)建立IPC常见错误号
错误号5:拒绝访问。
错误号51: Windows 无法找到网络路径,即网络络中存在问题
错误号53:找不到网络路径,包括IP地址错误、目标未开机,目标的 lanmanserver服务未启动、目标有防火墙(端口过滤)。
错误号67:找不到网络名,包括 lanmanworkstation服务未启动、ipc$ 已被删除。
错误号1219:提供的凭据与已存在的凭据集冲突。例如,已经和目标建立了ipc$,需要在删除原连接后重新进行连接。
错误号1326:未知的用户名或错误的密码。
错误号1792:试图登录,但是网络登录服务器没有启动,包括目标NetLogon服务未启动(连接域控制器时会出现此情况)
错误号2242:此用户的密码已过期。例如目标机器设置了账号管理策略,强制用户定期修改密码。
3、IPC交互
建立完成IPC通道后,接下来教大家如何使用命令进行横向操作!
1)dir命令
在使用net use命令与远程目标机器建立ipc$后,可以使用dir命令列出远程主机中的文件:
dir \\10.10.3.6\c$
2)tasklist命令
在使用net use命令与远程目标机器建立ipc$后,可以使用tasklist命令的/S、/U、 /P参数列出远程主机上运行的进程,从而查看是否存在杀软和进程枚举等:
tasklist /S 10.10.3.6 /U xiyou1\administrator /P QWEasd1234
到此IPC就简单介绍完毕,接下来会介绍各种横向实战有用小技巧,联动IPC甚至各种骚操作!!
五、计划任务横向移动
建立完IPC目前简单的介绍了基础命令后,如果进行横向CS或者MSF上线shell呢,接下来将演示通过IPC创建计划任务后门进行操作!
1、at建立计划任务
at是Windows自带的用于创建计划任务的命令,它主要工作在Windows Sever 2008之前版本的操作系统中。使用at命令在远程目标机器上创建计划任务的横向流程思路大致如下:
使用net time命令确定远程机器当前的系统时间。
使用copy命令将Payload文件复制到远程目标机器中。
使用at命令定时启动该Payload文件。
删除使用at命令创建计划任务的记录。
在创建完IPC通道后,使用at建立计划任务!
1)查看目标系统时间
net time命令可用于查看远程主机的系统时间。
net time \\10.10.3.6
查看到对方子域控制器上的时间
2)将文件复制到目标系统中
在本地创建一个dayu.bat文件,其内容为“calc”。意思是让 Windows运行一个“计算器“程序,使用Windows自带的copy命令将一个文件复制到远程主机的C盘中。命令如下:
copy dayu.bat \\10.10.3.6\C$
通过copy将bat文件通过IPC管道复制文件到对方系统目录下!
3)使用at创建计划任务
前面通过使用net time命令获取当前远程主机的系统时间。使用at命令让目标系统在指定时间运行一个程序:
at \\10.10.3.6 14:51 C:\dayu.txt
由于历史原因,windows2016版本系统不支持at,但是windows2008系统以下都支持,我对另外一台2008系统版本进行at使用:
at \\192.168.52.138 21:57 cmd.exe /c "ipconfig >C:/dayu.txt"
type \\192.168.52.138\C$\dayu.txt
成功使用at远程执行命令后,先将执行结果,写入本地文本文件,再使用type命令远程读取该文本文件!
4)清除at记录
计划任务不会随着它本身的执行而被删除,我们需要进行痕迹清理:
at \\192.168.52.138 7 /delete #删除创建的计划任务
2、schtasks建立计划任务
前面也提到了at的历史问题,Windows Vista、Windows Server 2008及之后版本的操作系统已经开始使用schtasks 命令代替at命令。
1)创建计划任务
在远程主机上创建一个名称为“test”的计划任务。该计划任务在开机时启动,启动程序为C盘下的dayu.txt,启动权限为System:
schtasks /create /s 192.168.52.138 /tn test /sc onstart /tr c:\dayu.txt /ru system /f
2)在远程主机上运行名为test的计划任务
schtasks /run /s 192.168.52.138 /i /tn "test"
成功运行dayu.txt文件,如果该文件修改为后门程序,shell就上线了!
3)账号密码输入建立
在使用schtasks命令时不需要输入密码,原因是此前已经与目标机器建立了ipc$
。如果没有建立ipc$,可以添加参数/u /p!!
/u 用户名
/p "密码"
/f 强制删除
4)任务执行后删除计划任务
schtasks /delete /s 192.168.52.138 /tn "test" -f
成功删除刚建立的test任务!
5)退出痕迹清理IPC
net use \\10.10.3.6 /del /y
net use 名称 /del /y #在删除ipc$时,要确认删除的是自己创建的ipc$
在使用schtasks命令时,会在系统中留下日志文件C:\Windows\Tasks\SchedLgU.txt。如果执行schtasks命令后没有回显,可以配合ipc$执行文件,使用type命令远程查看执行结果。
在域森林中横向移动(中)会继续讲如果连接IPC建立更深入的管道横向操作!敬请期待!
六、Windows系统散列值获取分析
前面也简单提及横向移动可以使用的方法,接下来将给大家铺垫密码哈希票据知识体系,没有密码哈希票据知识体系就很难进行进一步的横向渗透!
1、LM Hash和 NTLM Hash
Windowus 操作系统通常使用两种方法对用户的明文密码进行加密处理。在域环境中,用户信息存储在ntds.dit中进行加密后为散列值。Widows操作系统中的密码一般由两部分组成,一部分为LM Hash,另部分为NTLM Hash。
在Windows操作系统中,Hash的结构通常如下:
username:RID:LM-HASH:NT-HASH
LM Hash的全名为 “LAN Manager Hash”,是微软为了提高Windows操作系统的安全性面采用的散列加密算法,其本质是DES加密。尽管LM Hash较容易被破解,但为了保证系统的兼容性,Windows只是将LM Hash禁用了(从Windows Vista 和WindowsSever 2008版本开始,Windows操作系统默认禁用LM Hash)。LM Hash明文密码被限定在14位以内,也就是说,如果要停止使用LM Hash,将用户的密码设置为14位以上即可。如果LM Hash被禁用了,攻击者通过抓取的LM Hash通常为 “ab35454a3435451404046” (表示LMHash为空值或被禁用)。
NTLM Hash是微软为了在提高安全性的同时保证兼容性而设计的散列加者算法,NTLM Hash是基于MD4加密算法进行加密的。个人版从Windows Vista以后,服务器版从Wndows Sever 2003以后,Windows操作系统的认证方式均为NTLM Hash!
2、NTLM hash获取
如何进行NTLM hash获取进行横向移动呢?在域森林中横向移动(中)将详细介绍NTLM hash获取、进而连接PTH、PTT攻击,例如用到了白银票据、黄金票据等都在域森林中横向移动(中)进行详细攻击演示!
七、总结
经过横向移动分析 -> IPC横向移动 -> at建立计划任务 -> schtasks建立计划任务 -> 上线shell -> 了解hash横向思路后,层层连接建立横向思路进行攻击渗透,给小伙伴们建立了在提权模块后横向移动的多级思路!
如果不会这几种方法进行横向移动,就很难在内网中旅行,无法见到更多的风景,学习今天的方法,横向分析建立IPC后建立计划任务执行后门上线shell进而获取hash值进行横向移动,就可以在该公司域森林中遨游了!
公司域森林搭建 -> 域森林信息收集上 -> 域森林信息收集下 -> 域森林通信隧道建立上 -> 域森林通信隧道建立下 -> 域森林中权限提升上 -> 域森林中权限提升中 -> 域森林中权限提升下 -> 域森林中横向移动(上)-> ......
接下来在《域森林中横向移动(中)》中会接触mimikatz获取hash、进行pth哈希攻击、进行PTT票据攻击等横向移动的方式方法!如何建立内网渗透框架一步步攻击该公司内网环境的思路和方法,请看下篇域森林中横向移动篇章!
希望大家提高安全意识,没有网络安全就没有国家安全!
今天基础牢固就到这里,虽然基础,但是必须牢记于心。
作者:大余
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)