基础知识
内网渗透,从字面上理解便是对目标服务器所在内网进行渗透并最终获取域控权限的一种渗透。内网渗透的前提需要获取一个 Webshell,可以是低权限的 Webshell,因为可以通过提权获取高权限。
在进行内网渗透之前需要了解一个概念,域环境。在内网中,往往可能存在几百上千台机器,例如需要对机器进行升级、打补丁、设置权限等,管理员不可能一台一台地更新修改。因此便衍生出了域环境。管理员以一台主机作为域控制器新建一个域,将所有其他主机加入域中,以域控来操作其他主机。因为域控的高权限,导致了域控所在的主机的管理员账号密码,可以登录任意一台主机,所以内网渗透的最终目标,往往便是拿下域控的权限。
首先通过提权获取一个具有管理员权限的账号密码。具体提权过程视环境而定。下面将利用获取的这个具有管理员权限的账号密码正式开始内网渗透实践。
内网穿透
在渗透测试过程中,我们拿下了一台服务器的权限,并且通过 netstat -ano 发现开启了 3389 端口,想要远程桌面连接的时候发现无法连接。这是因为我们获取的服务器所处的环境为内网,而内网主机的 3389 端口,是公网 IP 通过端口映射的。也就是说,我们连接的外网 IP 地址的 3389 端口,映射到内网中,不一定是那台服务器的 3389 端口。
解决这种问题的方法有两种:
- 让目标机器去连接外网主机(必须有一台公网服务器,内网主机能够访问互联网)
- 在目标机器上设置一个信号站(放一个 WEB 文件在目标机器上,所有流量都经过这个文件通信)
在渗透测试过程中,内网主机不能够访问互联网是很常见的,下面通过方法 2 进行内网穿透。
具体流程
- 首先需要一款工具 reGeorg 来建立一个信号站。
- 这里以 PHP 站点为例,将
tunnel.nosocket.php文件通过之前获取的 Webshell 上传到站点,尝试使用 web 端访问确定文件存在。 - 以 python 环境运行 reGeorgSocksProxy.py 脚本,将从本机的 3344 端口经过的数据都发送给目标机器的 tunnel.nosocket.php 文件。
python reGeorgSocksProxy.py -l 127.0.0.1 -p 3344 -u http://192.168.229.151/tunnel.nosocket.php
- 使用工具 Proxifier,设置远程桌面软件 mstsc.exe 的数据包从本地的 3344 端口出网。
- 成功进行内网穿透,通过远程桌面连接到目标主机。
其他内网穿透方法还有 Frp、Ew、nps 等,都是一些可以穿透的工具,原理为搭建一条直通内网的隧道,这里就不详细介绍了。
内网信息收集
- 使用 PsExec.exe 获取 SYSTEM 权限 进行内网信息收集需要具有一定的权限,所以先进行提权获取 SYSTEM 权限。
PsExec.exe -s -i -d cmd
-
获取所有域用户列表 使用
net user /domain命令获取内网的域为 ajie.cool,域中具有 Administrator、Guest、krbtgt、web 用户。 -
获取域用户组信息 使用
net group /domain命令获取域用户组信息。 -
获取域管理员列表 使用
net group "domain admins" /domain命令获取域管理员列表,域管账户只有 Administrator。 -
获取域服务器的 IP 地址 通过 ping 域名称来获取域服务器的 IP 地址。(也可以通过查看 dns 服务器的 IP 地址,结合进行判断域服务器的 IP 地址。)
-
安装 Nmap 进行扫描 前面介绍了 Nmap 工具,在内网渗透过程中也可以通过 Nmap 获取内网信息。
- 首先通过 Webshell 上传 Nmap 的安装包。
- 远程连接目标服务器并安装 Nmap 进行内网信息收集。
-
内网主机存活探测 因为动静比较大,也可以通过 nbtscan 工具进行。因为相对于 Nmap 的大规模扫描行为,nbtscan 基于 NetBios 进行探测,即是相当于 windows 打开我的电脑中的网络一样,被发现的几率相对低一些。


