0x00 内网靶机搭建
红日安全提供的内网渗透靶场环境(13G)
百度网盘:https://pan.baidu.com/s/1nC6V8e_EuKfaLb2IuEbe7w&shfl=sharepset
下载密码为:n1u2
系统登录密码:hongrisec@2019,登录后可能会要求你更改密码
靶场涉及3台虚拟机如下内网拓扑结构:
分别如下:
VM1:Windows 7 x64,开放 Web 服务的服务器
VM2:Win2K3 Metasploitable,内网机器
VM3:Windows Server 2008 R2 x64,内网机器,域控服务器(关于域控的介绍见下文)
靶场练习的攻击目的就是在攻破 VM1 拿到 webshell 之后,继续向内网的 VM2 和 VM3 机器进行渗透,最终拿到域控服务器的最高权限。 (下面内容不是基于这个靶场)
0x01 域
域(Domain)是将网络中的多台计算机通过逻辑的方式组织到一起,进行集中管理的环境。用户以合法身份登录域后,就可以访问域内的资源,默认一个域中的用户无法访问另一个域中的资源。
举例个应用场景:公司内有 1000 台计算机,需要在每台计算机上创建一个叫 lagou 的统一用户,按传统方法就是一台台去建号并设置密码,一旦要改密码又要一台台去修改。
如果通过域来统一管理就方便多了,在域中通过活动目录(域中提供目录服务的组件,可用于存储网络对象,比如账号、计算机、共享资源、打印机和联系人等信息)创建 lagou 账号就可在 1000 台计算机任意一台中登录,更改密码也同样适用。
【命令参考链接】
如何判断是否存在域呢?
- 通过查看计算机属性可以获取一些域信息如:
- 使用
ipconfig /all
命令 - 使用
systeminfo
如果不存在域,域那里会显示workgroup,意为工作组
- 使用命令
net config workstation
- 使用 net time来判断
正常显示时间说明当前是域用户,报错无权限说明有域但当前不是域用户,报错找不到服务器说明不存在域。
查看域内指定用户详细信息
如果存在域中,可以使用以下命令查看指定用户的详细信息:net user mayi /domain
注意,需要是域里面的用户才可以执行此命令。
查看本域内有哪些机器
- 书上说使用
net view /domain:域名
如:net view /domain:one
(好像需要在dc中使用)我win10的mayi域用户执行不了。而且查询的并不准确呀。
- 使用
dsquery computer
命令也是在域控中可以执行。
查询域内用户组列表
使用命令net group /domain
0x02 域控制器
域控制器是域中拥有管理域内其他主机的计算机,它负责所有本域内的计算和用户的验证工作,它是整个域的通信枢纽,域内所有用来验证身份的账号和密码哈希都存在域控制器中。所以,内网渗透的最终目标常常就是为了攻下域控服务器,这样就等同于控制整个域内的计算机。
查看域控的机器名
nl test /dclist:域名
查看域控制器和域管理员组的组成员
- 域控制器组
net group "Domain Controllers" /domain
- 域管理员组
net group "domain admins" /domain
0x03 扫描内网主机,寻找对应机器名的 IP
利用NetBIOS协议
使用 【nbtscan】工具,命令nbtscan 192.168.52.0/24
(这里win10默认的防火墙竟然拦截了,扫不出来,关了才扫出如下图)
利用ICMP协议
for /L %i in (1,1,254) DO @ping -w 1 -n 1 192.168.152.%i | findstr "TTL="
1 | -n count 发送 count 指定的 ECHO 数据包数 |
比工具慢
利用ARP扫描探测内网
- 利用【empire】 中的arpscan 模块。
- 利用arp-scan工具等等
0x04 扫描域内端口
通过查询目标主机开放的端口信息,可以了解目标主机开启的服务,可以根据目标开放的服务查找相应的漏洞以及分析目标的网络拓扑结构。主要关注:
- 端口的Banner信息(banner欢迎信息,大致还可能表明端口的身份 )
- 端口上运行的服务
- 常见应用的默认端口
利用telnet命令进行端口扫描
如果只想快速探测某台主机的某个端口是否开放,可以使用telnet命令方便的判断。但是默认win似乎都没有telnet这个命令,linux可用此命令。nelnet ip 端口
如:
Metasploit端口扫描
- kali中输入
msfconsole
进入msf界面。 - 接着我们运行
search portscan
命令搜索端口扫描的模块 - 设置被扫描ip并且运行
Nishang的Invoke-PortScan模块
使用nishang的invoke-portscan模块,也可以完成端口扫描工作。
- 下载【nishang源码】 并保证powershell版本为3.0以上,
get-host
- 然后就是导入模块,二种思路第一种是直接用绕过来导入如:第二种设置一下执行策略如:
1
powershell.exe -exec bypass -command {Import-Module .\nishang.psm1}
虽然有警告但还是导入成功了,使用1
2》》》 Set-ExecutionPolicy RemoteSigned
》》》 Import-Module .nishang.psm1Get-Command -Module nishang
可以查看(win10自带就杀了)。 - 导入后记得在当前窗口使用
get-help Invoke-PortScan -full
获取帮助文档,新开窗口无效,应为import只对本窗口有效。 - 使用命令
Invoke-PortScan -StartAddress 192.168.152.1 -EndAddress 192.168.152.254 -ResolveHost