Windows内网渗透-详细
https://security.tencent.com/index.php/blog/msg/154 将Windows内网渗透总结的很好 可以好好学习一下
信息收集
在攻陷一台机器后,不要一味的直接去抓取机器密码、去做一些扫描内网的操作,因为如果网内有IDS等安全设备,有可能会造成报警,丢失权限。本节主要介绍当一台内网机器被攻破后,我们收集信息的一些手法。
(一般来说存在在内网中的Windows机器才是会在域中)
(就是不能使用fscan的情况下 因为ids会检测流量)
先查看是否存在域中
systeminfo
命令就可以进行查看
查看系统进程
首先的话我们是建议先使用tasklist
查看系统进程 看看有没有杀毒软件这些 然后就生成对应的免杀马上去 进行权限维持住
复制这些进程去杀软识别网站去进行查看
判断是否出网
然后根据杀软来使用特定的免杀来进行权限维持 然后搭建隧道
SPN
SPN:服务主体名称。使用Kerberos须为服务器注册SPN,因此可以在内网中扫描SPN,快速寻找内网中注册的服务,SPN扫描可以规避像端口扫描的不确定性探测动作。主要利用工具有:setspn、GetUserSPNs.vbs和Rubeus。
setspn -T domain.com -Q */*
在上述截图中可以清晰的看到WIN2019机器上运行了dns服务。如果网内存在mssql,利用SPN扫描也可以得到相应的结果。 其实通过查看这个spn服务 看到了dns服务运行在win2019这台机器上 也能猜到了这个win2019的机器就是域控了 因为一般来说dns服务器是在域控上的
端口连接
利用netstat
-ano命令获取机器通信信息,根据通信的端口、ip可以获取到如下信息。如果通信信息是入流量,则可以获取到跳板机/堡垒机、管理员的PC来源IP、本地web应用端口等信息;如果通信信息是出流量,则可以获取到敏感端口(redis、mysql、mssql等)、API端口等信息。
类似像这种 就能以此来获取相关的信息
查看主机路由
route print
在网络目标中就能看到主机的ip 并且也能知道该机器存在两个网卡 (ipconfig也能查看到)
配置文件
一个正常的Web应用肯定有对应的数据库账号密码信息,是一个不错的宝藏。
可以使用如下命令寻找包含密码字段的文件:
cd /web findstr /s /m “password” .
下面是常用应用的默认配置路径:
a、
Tomcat: CATALINA_HOME/conf/tomcat-users.xml
b、
Apache: /etc/httpd/conf/httpd.conf
c、
Nginx: /etc/nginx/nginx.conf
d、
Wdcp: /www/wdlinux/wdcp/conf/mrpw.conf
e、
Mysql: mysql\data\mysql\user.MYD
用户信息
可以在网内收集用户等信息,对高权限用户做针对性的攻击,包括定位到域控,对域控发起攻击。
- 查看域用户
net user /domain
普通域用户就行
- 查看域管理员
net group “domain admins” /domain
其实域管的话一般都是Administrator (也可能是有别的账户也是域管 后面被加进去的)
快速定位域控ip,一般是dns、时间服务器:
其实在上面的查看spn服务的时候就可以定位到域控了 因为就是可以看到域控对应的是dns服务
直接ping域名和域控机器名字就行了 就能看到域控的ip地址了 如果域控上有时间服务器的话
net time /domain
也行
- 查看域控
net group “domain controllers” /domain
- 查看当前会话信息 (查看当前主机与所连接的客户端之间的会话)
- 查看网络共享信息
- 查看已连接的网络共享
- 查看当前主机登录用户
query user
- 查看计划任务
schtasks /query /v /fo list
内网主机发现
a、查看共享资料:
net view
b、查看arp表:
arp -a
这种接口的话就是本机的ip地址 然后动态的也是内网中的ip地址 就是域内机器的ip
c、查看hosts文件:
linux: cat /etc/hosts
windows: type c:\Windows\system32\drivers\etc\hosts
d、查看dns缓存:
ipconfig /displaydns
e、也可以利用一些工具 (知道怎么会对抗ids才能做)
不然一般的扫描工具应该一扫设备就会告警
(使用icmp协议 netbios协议 arp协议 smb协议)
扫端口的话就指定端口来扫 不使用1-65535
这种大范围的端口来扫
会话收集
在网内收集会话,如看管理员登录过哪些机器、机器被谁登录过,这样攻击的目标就会清晰很多。
可以使用NetSessionEnum api来查看其他主机上有哪些用户登录。
api相关介绍如下:
https://docs.microsoft.com/en-us/windows/win32/api/lmshare/nf-lmshare-netsessionenum
利用powershell脚本PowerView为例。
(直接拿别人的图了)
a、可以查看域用户登录过哪些机器:
b、也可以查看机器被哪些用户登陆过:
其他工具、api类似。当有了上述信息后,就可以对发现到的域管或者登录着域管的机器进行攻击,只要能拿下这些机器,就可以有相应的权限去登录域控。
在这一步的话就可以进行尝试进行密码hash值得抓取了
凭据收集
cmdkey /list
还有一些常用软件的注册表地址
还有Google浏览器记录
域信任 (等会细看一下)
信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。
查看域信任:
nltest /domain_trusts
上述结果显示child.jumbolab.com和jumbolab.com两个域是双向信任的。
域传送(等会看一下)
当存在域传送漏洞时,可以获取域名解析记录。当有了解析记录后,也能提高对网络环境的进一步认知,比如www解析的ip段可能在dmz区,mail解析的ip段可能在核心区域等等。
windows:
nslookup -type=ns domain.com nslookup sserver dns.domain.com ls domain.com
linux:
dig @dns.domain.com axfr domain.com
DNS记录获取
在网内收集dns记录,可以快速定位一些机器、网站。常用工具有Dnscmd、PowerView。
a、在windows server上,可以使用Dnscmd工具获取dns记录。
获取dns记录
1 | dnscmd /ZonePrint vulntarget.com |
1 | Dnscmd . /EnumRecords jumbolab.com . |
b、在非windows server机器上,可以使用PowerView获取。
1 | Import-Module PowerView.ps1 Get-DNSRecord -ZoneName vulntarget.com |
Kerberoasting
就是说在进行tgt票据申请的时候 会进行预身份认证 如果验证通过才会返回tgt票据 但是如果关闭了 预身份认证的话 就会无条件返回tgt (那么在这个时候 也会返回用户密码加密过的sessionkey)
所以说我们就可以通过爆破这个session 然后获取到用户的密码
https://ke1nys.github.io/posts/9fa2b7fe.html
Bloodhound
我们可以利用Bloodhound做一些自动化的信息收集,包括用户、计算机、组织架构、最快的攻击途径等。但是自动化也意味着告警,该漏洞做自动化信息收集时,会在内网设备上产生大量的告警,按需使用。
这个收集域内的信息做成拓扑图确实很好用 但是容易产生告警
横向移动
账号密码连接
在上述流程中 如果我们对一台已经被入侵的域机器信息收集完成后 我们就可以收集到的信息 来攻击下一台机器
例如pth攻击
- impacket套件
- Psexec
- WMI
等等方法都可以
其他方法 (后续补充一下)
我觉得 如果尝试其他方法都行不通的时候 可以尝试看看能不能打 委派 nopac 证书模板 ntlm-relay攻击等漏洞 能直接打到域控的洞