内网穿透

在一次场景搭建(其概念图大致为:以liunx-1做跳板机,进入win10-1,在从win10-1访问与之相连的win7-1的80端口和linux-2的21端口)。在主机渗透时使用msf攻击时,若要访问win10,win7主机需要配置相关路由,因此要掌握内网穿透的知识。

NAT转换的多种模式

(三种模式的讲解参考《网络地址转换用户指南》 《静态NAT、动态NAT、PAT(端口多路复用)之间的区别》 《三张图解释静态 NAT、动态 NAT、PAT》

静态转换

静态NAT将网络信息流从静态外部 IP 地址映射到内部 IP 地址或网络。它创建实际地址到映射地址的静态转换。静态NAT通过具有未注册专用 IP 地址的专用 LAN 提供与网络设备的互联网连接。

静态NAT可定义从一个 IP 子网到另一个 IP 子网的一对一映射。映射包括一个方向的目标 IP 地址转换,以及反向的源 IP 地址转换。从NAT设备,原始目标地址是虚拟主机 IP 地址,而映射至地址是真正的主机 IP 地址。手动写入 IP 地址映射条目,配置 NAT 表,一个内网地址对应着一个外网地址,举例,192.168.x.x 对应 1.1.x.x。当 192.168.x.x 向外网发包,则过路由的时候,会根据静态 NAT 表,将 192.168 .x.x更换为 1.1.x.x。–>但并不意味着一个公网IP只能对应一个IP。

动态转发

指将内部私有IP转换为公网IP地址时,IP的对应关系是不确定的。也就是说只要指定哪些内部地址可以进行NAT转换,以及哪些可以的合法的IP地址可以作为外部地址,就可以进行动态转换了。也可以使用多个合法地址集。

在动态转发中,一个公网IP可以对应一个网关IP,例如:192.168.1.0/24 这个网段对应着 100.1.x.x;192.168.1.1 发包;在 NAT 地址转换里,形成了一条映射(条目),就是,192.168.1.1 映射 100.1.x.x,这个时候,由于 192.168.1.1 占用着 100.1.x.x,则别人无法再使用这个 100.1.x.x,直到 192.168.1.映射表项老化后 ,则可以把 100.1 .x.x给别人;别人无法使用的原因是,如果别人也在使这个 100.1, 得不到回包。内网主机发起连接请求时,会自动分配一个公网IP和端口。

端口多路复用(PAT)

端口多路复用(OverLoad)是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation).采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。

例如在一个网段中,192.168.1.1向外发送请求,经过路由时,会将192.168.1.1映射到8.0.130.x(公网IP)的一个端口上,当12.168.1.1的会话不结束,那该IP会一直占用8.0.130.x这个IP和端口号(端口号已使用,其他主机无法在使用,直至会话结束)。

内网穿透-msf配置路由和sock代理穿透内网配合

  • 本机环境搭建下网络拓扑图为:

操作大致流程:

kali msf(msf17_010)–>get shell(windos7)–>上传+socks穿透->win7 反弹.exe –>kali msf监听端口

攻击流程

进行windows7永恒之蓝攻击(因为已知存在永恒之蓝,便不再扫描是否存在

执行返回shell

向window7上传natbypass可执行文件到temp目录下(temp目录具有可执行权限)该步骤用于之后win7反弹shell使用(先埋个坑,等以后学到时再更新。

arp -a后找到存在的内网主机,发现目标主机192.168.56.102,但该主机只能window7可以ping通,因此要内网穿透。

设置自动路由,发现设置成功。

设置socks代理

设置/ect/proxychains4.conf文件:将dynamic_chain取消注释,proxy_dns加入注释,在[ProxyList]选项中加入代理:

之前扫描开放了80端口:使用kali下载内容:

发现可以正常访问。在firefox下设置好proxy后同样可以访问web服务

然后就可以找漏洞上传shell了。(其实这里可以用natbypass.exe来进行)当然如果win7开启了远程连接,那么直接rdesktop连接。

流程详解

socks代理

SOCKS是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递。socks协议属于会话层的协议,位于表示层和传输层之间。socks代理相较于http代理还可以转发UDP代理,socks代理有socks4,socks4a,socks5多个分支。此次实验使用的时socks5版本。

msf中内置了三个socks代理模块,分别是socks4a、socks5、socks_unc。一般常使用 socks4a和socks5进行代理。其二者只是由于所支持的具体应用不同而存在差异。socks4只支持TCP协议而socks5支持TCP/UDP协议,还支持各种身份验证机制等协议,也就是说这里使用socks5的话还需要设置用户名与密码。

​ 等以后学习socks代理后,单独写文章深入研究.

全局代理proxychain4

用于对指定工具进行代理,例如实验中proxychains4 nmap -sn xxx.xxx.xx.xxx,是指proxychains4通过socks5代理,对内网主机win7进行nmap扫描。

ProxyChains 是一个 UNIX 程序,它通过预加载的 DLL(dlsym()、LD_PRELOAD)在动态链接程序中挂钩网络相关的 libc 函数,并通过 SOCKS4a/5 或 HTTP 代理重定向连接。它仅支持 TCP(不支持 UDP/ICMP 等)。

通过修改配置文件/ect/proxychains4.conf,来指定代理的具体功能,例如代理方式,IP,端口等。

远程连接win7

这种情况十分少,多是可以通过代理可以ping通主机后,寻找漏洞点,再反弹shell。

msf正向路由和反向路由
  • 正向连接是受害主机监听一个端口,由攻击主机主动去连接受害主机的过程,适用于受害主机具有公网ip的情况.

  • 反向连接是控制机主机监听一个端口,由受害主机反向去连接攻击主机的过程,适用于受害主机出网(或出网且没有公网ip)的情况.

内网穿透-frp

frp 是一个反向代理工具.可以轻松地进行内网穿透.对外网提供服务,frp支持 tcp协议, http协议, https 等协议类型,并且 web 服务支持根据域名进行路由转发。之前在搭建赵师傅CTFd时,对于动态靶机的使用用到了frp技术。

主要文件为frpc(客户端),frps(服务端),配置文件为frpc.ini,frps.ini文件。

攻击流程

修改frp客户端:

上传frpc文件(反向的代理

运行服务端,win7执行客户端。(shell乱码解决:chcp 65001

显示失败?????靠,以后再弄,哭!!

//12-13日 补坑,frp的穿透已经实施成功,补充到了这篇文章中《frp内网渗透》(点击进入)。