目录
1、TCP/UDP
使用nc探测
使用Telnet探测
使用UDP探测
2、HTTP/HTTPS
Windows
(1)Bitsadmin
(2)Certuil
Linux
(1)Curl
(2)Wget
3、ICMP
Windows
(1)Ping
(2)Tracert
Linux
4、DNS
Windows
Linux
(1)Dig
(2)Nslookup
当我们在进行内网渗透的时候,经常会遇到目标主不出网的问题,因此在获取目标主机的权限后,可以通过各种方式来探测一下是否可以出网,下面我会通过常用的几种协议来演示一下
1、TCP/UDP
使用nc探测
首先介绍一下Netcat(NC)这款工具,它是一款比较简单并且非常有用的工具,既支持通过TCP和UDP在网络连接中读写数据,也是一个稳定的后门工具,支持其它程序和脚本驱动,同时它还是一个功能强大的网络调试和探测工具,可以建立使用中所需要的几乎所有类型的网络连接,若要利用NC工具来探测TCP协议是否出网,但是它需要我们去下载,Windows或Linux操作系统的版本都有
这里提供一个windows的下载链接:netcat 1.11 for Win32/Win64 (eternallybored.org)
Linux的版本可以自行使用下载工具下载
这里假设我们拿到了一台windows机器的权限,然后将nc软件下载完成后,我们使用NC工具在目标服务器中执行nc.exe -lvp 8888"命令来监听目标服务器的8888端口
在使用nc开启监听执行连接的过程中,会发起TCP请求和响应时,同时也会产生数据包,通过在本地主机中使用Wireshark流量分析软件来抓取发起连接过程的数据包,后续通过抓取到的数据包来查看TCP三次握手连接过程。
在Wireshark抓包的同时,我们来进行连接:
然后再来看看Wireshark抓到的tcp包:
可以看到进行了TCP的三次握手
从我们远程连接的情况和Wireshark抓包的结果都可以看到该主机是可以出网的
使用Telnet探测
使用Telnet命令来探测目标服务器是否出网,首先还是需要在目标服务器使用nc工具开启监听8888端口,执行命令nc.exe -lvp 8888,成功开启目标服务器监听
然后我们在客户端使用telnet来尝试远程连接:
可以看到成功的远程登录了,这也说明目标主机是可以出网的
使用UDP探测
上面两种都是针对tcp的测试,下面来演示一下udp,其实udp大致流程都是和tcp相同的
我们还是先要在目标机器上进行监听,只不过多了一个参数u表示协议使用udp
然后在打开Wireshark抓包后,我们在客户端来使用nc进行连接:
然后查看Wireshark中也会发现有udp包:
可以看到这里是连接成功的,则表示目标主机是可以出网的
2、HTTP/HTTPS
对目标服务器探测Http/Https协议是否出网时,要根据目标系统类型去执行命令,不同类型的操作系统,使用的探测方式也不同,这里我会分别基于windows操作系统和Linux操作系统分别演示
Windows
(1)Bitsadmin
Bitsadmin命令在Windows操作系统是用于创建、下载或上传作业,并监视作业进度的命令行工具
可通过该命令行工具测试能否从网站下载文件,以此来检测http或https是否出网,下面我们以百度官网的robots.txt为例进行演示,使用Bitsadmin命令下载百度官网目录下的robots.txt文件,并保存到本地C盘下的robots.txt中。
执行bitsadmin /rawreturn /transfer down "https://www.baidu.com/robots.txt" c:\robots.txt"命令下载,执行完成后就会将该文件下载到C盘下
然后通过"type C:\robots.txt "命令读取查看,验证其存在,如果正常显示则证明探测出网成功:
可以看到成功的下载了,说明目标是可以出网的
(2)Certuil
Certuil命令是windows操作系统中的一款下载文件的命令行工具,可作为证书服务的安装,用来转储和显示证书颁发机构 (CA) 配置信息,配置证书服务,备份和还原CA组件,以及验证证书、密钥对和证书链。
下面我们还是以百度网站下的的robots.txt文件为案例,使用Certuil命令执行certutil -urlcache -split -f https://www.baidu.com/robots.txt c:\robots.txt"将百度网站下的robots.txt文件保存到本地C盘目录下,通过验证发现robots.txt文件存在,则证明http/https协议出网:
Linux
(1)Curl
Curl是Linux自带的命令行工具,用于传输来自服务器或者到服务器的数据,可支持的协议有很多,Curl测试出网时使用命令很简单,只需要curl验证的url即可。
以百度网站为案例,执行curl 百度一下,你就知道"命令成功,显示下述HTML前端代码,证明http/https协议出网:
可以看到,成功访问到了,说明目标主机可以出网
(2)Wget
Wget是Linux下一款命令行下载工具,支持http和ftp协议,支持多种下载模式,一般用于批量下载文件。
在Linux中使用Wget探测出网,使用方法同前文演示一样,使用wget工具执行wget http://www.baidu.com/robots.txt命令下载百度根目录的robots.txt文件,探测协议出网成功,如图1-14所示。
可以看到成功的下载,说明目标主机可以出网
3、ICMP
ICMP(Internet Control Message Protocol)是一种面向无连接的协议,属于网络层的协议,用于检测网络通信故障和实现链路追踪。当我们需要判断探测ICMP协议是否出网时,可通过Ping和Tracert命令进行探测,下面以这两个命令为案例分别在Windows操作系统和Linux操作系统中进行演示。
Windows
(1)Ping
Ping命令经常用于测试网络连通性,由于该命令是基于ICMP协议来实现的,因此Ping是ICMP出网测试中最常用的命令,执行ping baidu.com,如果可以得到回复,则证明ICMP协议出网探测成功。
(2)Tracert
Tracert命令是Windows中用来跟踪路由的命令,它依靠ICMP协议实现,在ICMP出网测试中只需要使用Tracert命令跟踪下目标地址即可,以百度为案例,执行tracert baidu.com命令,获得如图1-16所示的返回信息,即证明出网成功。
Linux
在Linux系统中探测ICMP协议出网通常可以使用ping命令,同上述Windows系统操作实验类似,但linux系统需要使用-c来指定次数,Windows系统下ping 命令执行第4次后会自动停止,linux系统则不会自动停止。执行ping -c 4 baidu.com命令,如果收到回复了则说明目标主机可以出网:
4、DNS
DNS(Domain Name System)即域名解析系统,可将域名解析到对应访问IP。下面我们还是以系统自带命令为案例,在windows和Linux操作系统中分别进行演示DNS协议探测出网。
Windows
在Windows系统中测试DNS协议出网可使用Nslookup命令。这是一种网络管理命令行工具,可以用来查询DNS域名和IP解析。
执行nslookup www.baidu.com"命令,返回响应结果,证明出网成功
可以看到响应了,说明目标主机是可以出网的
Linux
(1)Dig
Dig命令在Linux操作系统中用于询问DNS,域名服务器的查询工具可以查询DNS协议下的NS记录、A记录、MX记录相关信息。执行dig @8.8.8.8 www.baidu.com命令,这里指定DNS服务器,8.8.8.8是Google的DNS服务器。返回响应结果,证明出网成功
可以看到解析成功了,说明目标主机可以出网
(2)Nslookup
Linux系统中同样也可以使用nslookup命令对系统进行DNS协议探测出网。方法同Windows系统一样,执行nslookup baidu.com命令,执行后通过返回的响应结果证明出网成功
可以看到解析成功了,说明目标主机可以出网
到此几种探测主机是否出网的方法的演示就到此完毕了