【技术分享】内网渗透——网络环境的判断
前言
对于一个内网来说,当我们拿到了一个机器(例如webshell)之后,首要的就是内网信息的探测,而网络环境的判断则是其中一个重点。
这里的判断我分为三种。一种是机器所处位置区域的判断,一种是机器角色的判断,还有一种是进出口流量是否连通的判断,是否出的去,进的来。
位置的判断
位置判断是指机器处于网络拓扑中的某个区域,是在DMZ区,办公网,还是核心区,核心DB等多个位置,当然这里的区域并不是绝对的,只是大概的一个环境,不同的地方网络环境不一样,区域的界限也不一定明显。
多数情况下在外围Web中我们拿到权限多数是在DMZ区,不属于正式的内网,如果是布置好的话,DMZ区会处于一种内网能访问DMZ,而DMZ访问不了内网的一种状态。例如DMZ区的服务器访问不了管理员机器所处的内网机器。
办公网,顾名思义是办公人员所处的网络,例如一般办公人员,服务器管理员等等,能够渗透进办公网将对后续的渗透起到很大的帮助。一般情况刚开始是很少会直接到达办公网段的,除非是进行钓鱼种马啥的。
核心区,例如域控,核心生产机器等等,这些都在后续的渗透才会慢慢接触到。
角色的判断
了解自己的机器会是什么角色,会对我们后续的进程起到一个很好的推进作用。
假如是服务器,看看自己是否是普通Web服务器,是开发测试服务器,公共服务器,文件服务器,还是代理服务器,DNS服务器、存储服务器等等。
具体的判断要通过对机器内的主机名、文件、网络连接等多种情况进行综合判断。
例如通过主机名是最好判断的,开发服务器就是dev , Web服务器可能是web或者app,存储服务器可能是NAS,文件服务器可能是fileserver等等。
例如通过网络连接进行判断,代理服务器可能就会有很多机器来连代理端口,更新服务器(例如WSUS)可能开放了更新端口8530,DNS服务器开放了53端口等等,当然不能一概而论,必须进行综合判断。
联通性的判断
这里是指机器能否外面进的来,能否出的去。这与我们后续的上马或者做代理息息相关。这里的判断主要有两种,一种是端口,一种是协议。我们着重于是否出的去。
1. 协议的判断
主要是看能够通过什么协议出去,主要有tcp\http\dns\icmp等协议。常见判断手法如下:
[+]tcp协议
1
2
|
外网vps : nc –lvp port 内网机器:nc ip port |
[+]dns协议
1
2
3
4
|
外网vps: nc –u –lvp 53 内网机器: windows: nslookup www.baidu.com vps-ip linux:dig @vps-ip www.baidu.com |
[+]http协议
1
2
|
外网vps : nc –lvp 80 (or 8080等) 内网机器 : curl vps-ip:8080 |
[+]icmp协议
1
2
|
外网vps:抓包、tcpdump icmp 内网机器:直接ping |
2. 端口的判断
外网vps做监听,内网机器测试常见端口,或直接使用端口扫描器进行扫描。
常见能出去的端口有80,8080,443,53,110,123等。
3. 额外情况--代理服务器
还有一种是机器不能直接出来的,需要进行代理设置,这种多数是为了办公网段得办公人员进行上网用的。
常用的判断手法与情况如下:
[+]查看网络连接看是否有连接其他机器的8080(不绝对)等端口,尝试ping –n 1 –a ip
[+]是否有hostname类似于proxy的机器
[+]IE直接代理情况
可以通过查询注册表得到:
1
2
|
reg query "HKEY_USERS\S-1-5-21-1563011143-1171140764-1273336227-500\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" |
[+]通过pac文件自动代理情况
1
|
reg query "HKEY_USERS\S-1-5-21-1563011143-1171140764-1273336227-500\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL |
我们可以通过pac文件的路径(可能是本地路径或远程路径)将pac文件下载回来查看,例如某pac文件如下:从中我们能看到其带来服务器为172.16.10.168:8080
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
function islocalip(ip) { return isInNet(ip, "127.0.0.0", "255.0.0.0") || isInNet(ip, "169.254.0.0", "255.255.0.0") || isInNet(ip, "10.0.0.0", "255.0.0.0") || isInNet(ip, "192.168.0.0", "255.255.0.0") ||} function FindProxyForURL(url, host) { var DefaultScanner = "PROXY 172.16.10.168:8080; DIRECT"; var target_ip = dnsResolve(host); if (islocalip(target_ip)) { return 'DIRECT'; } else { return DefaultScanner; } } |
最终我们可以利用curl进行确定:
1
2
|
curl www.baidu.com //不通 curl –x proxy-ip:8080 www.baidu.com //通 |