点击星标,即时接收最新推文
本文选自《内网安全攻防:红队之路》
扫描二维码五折购书
为加强内网的安全防范,安全管理员往往会限制内网计算机访问互联网,当然不同机构的限制策略是不一样的,有的完全阻断了内网计算机访问互联网;有的机构会设置只允许白名单中的计算机访问互联网或者允许特定协议出网;有的机构会设置只允许访问特定网站,比如Baidu、Github等。
在没有获取到内网防火墙的权限,不知道完整的防火墙规则前,攻击者只能尝试在各种时间段、各个计算机上通过各种协议访问互联网,进而找到能够构建出网通信隧道的计算机。
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇,同时是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。
TCP/IP协议中最重要的特点就是分层。由上往下分别为应用层,传输层,网络层,数据链路层,物理层。如图所示。
TCP/IP协议
常用的隧道列举如下。
网络层:IPv6隧道、ICMP隧道、GRE隧道。
传输层:TCP隧道、UDP隧道、常规端口转发。
应用层:SSH隧道、HTTP隧道、HTTS隧道、DNS隧道。
可用于构建出网通信隧道的协议
判断内网的连通性是指判断机器能否上外网等。要综合判断各种协议(ICMP、TCP、UDP、HTTP、HTTPS、DNS等)及端口通信的情况。常见的允许流量流出的端口有80、8080、443、53、110、123等。常用的内网连通性判断方法如下。
1.ICMP协议
执行命令“ping <IP地址或域名>”,如图所示。
ICMP协议探测
2.TCP协议
探测TCP协议可以使用curl、telent、nc、Test-PortConnectivity或者端口扫描器。netcat(简称nc)被誉为网络安全界的“瑞士军刀”,是一个短小精悍的工具,通过使用TCP或UDP协议的网络连接读写数据。
使用nc工具,执行“nc <IP地址 端口号>”命令,如图3-3所示。
TCP协议探测
3.UDP协议
通过UDP协议上线的速度要快很多,而且不那么容易被防守方发现。探测UDP协议可以使用telent、nc或者Test-PortConnectivity。
Test-PortConnectivity用法如下:
nc -lvup 53 # 在服务器上监听UDP端口
C:\Users\test\Desktop>powershell -exec bypass Import-Module .\TestPortConnectivity.ps1;Test-PortConnectivity -Source
'localhost' -RemoteDestination '192.168.130.129' 53 -protocol UDP
DESKTOP-6G7FO7V Not connected to 192.168.130.129 on UDP port : 53
# 在服务器上监听UDP端口
4.HTTP协议
探测HTTP协议可以使用curl、certutil。curl是一个利用URL规则在命令行下工作的综合文件传输工具,支持文件的上传和下载。curl命令不仅支持HTTP、HTTPS、FTP等众多协议,还支持POST、Cookie、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。Linux操作系统自带curl命令。在Windows操作系统中,需要下载并安装curl命令。
在使用curl时,需要执行“curl <IP地址: 端口号>”命令。如果远程主机开启了相应的端口,会输出相应的端口信息,如图所示。如果远程主机没有开通相应的端口,则没有任何提示。按“Ctrl+C”键即可断开连接。
HTTP协议探测
5 . HTTPS协议
Windows操作系统下从Win10版本开始系统自带了curl的命令,Linux系统一般也有curl的命令,对于没有curl的系统,也可以上传一个curl到目标计算机上。
curl -k -vv -m 10 https://www.baidu.com
curl -k -vv -m 10 https://IP
当https可以访问百度但是不能访问我们的上线服务器时,可能的原因有:
1. 我们的服务器没有绑定域名,直接使用IP访问;
2. 我们的服务器是红标证书;
3. 我们的服务器在黑名单里;
4. 目标限制了仅允许访问特定地区的服务器;
5. 目标限制了仅允许访问特定域名的服务器;(可以给Curl加一个 -H "Host: www.baidu.com" 参数进行测试)
6.DNS协议
DNS协议上线比较隐蔽,但是速度较慢。在进行DNS连通性检测时,Windows平台下常用的命令为nslookup、LINUX平台下常用命令为dig。
nslookup是Windows操作系统自带的DNS探测命令,其用法如下所示。在没有指定vps-ip时,nslookup会从系统网络的TCP/IP属性中读取DNS服务器的地址。具体的使用方法是:打开Windows操作系统的命令行环境,输入“nslookup 域名”命令,按“回车”键,如图所示。
nslookup www.baidu.com
DNS协议探测-nslookup
dig是Linux默认自带的DNS探测命令,其用法如下所示。在没有指定vps-ip时,dig会到 /etc/resolv.conf文件中读取系统配置的DNS服务器的地址。如果vps-ip为192.168.43.1,将解析百度网的IP地址,说明目前DNS协议是连通的,如图3-6所示。具体的使用方法,可在Linux命令行环境中输入“dig -h”命令获取。
dig@vps-ip www.baidu.com
DNS协议探测-dig
还有一种情况是流量不能直接流出,需要在内网中设置代理服务器,常见于通过企业办公网段上网的场景。常用的判断方法如下。
查看网络连接,通过netstat –ano命令判断是否存在与其他机器的8080(不绝对)等端口的连接。如果有可以尝试运行“ping -n 1 -a ip”命令进一步获得主机名。
查看内网中是否有主机名类似于“proxy”的机器。
查看IE浏览器的直接代理。
根据pac文件的路径(可能是本地路径,也可能是远程路径),将其下载下来并查看。
执行如下命令,利用curl工具进行确认。
curlwww.baidu.com //不通
curl –x proxy-ip:port www.baidu.com //通
也可以使用在线平台DNSLog.cn探测。现在平台上申请一个域名(iruh9g.dnslog.cn),然后在目标上通过ping命令测试解析(这里将当前计算机名环境变量 %computername% 加入到访问的url中,这样在web访问日志中,可以直接确定能出网的计算机,而不需要去返回结果),如图所示:
HTTP协议探测
成功解析后,可以在平台上查看解析记录,如图所示。
HTTP协议探测
— 实验室旗下直播培训课程 —
和20000+位同学加入MS08067一起学习