经常有人问我这个问题“怎样进入内网”, 怎么回答呢, 归纳起来就是一句话“突破网关, 利用端口重定向进入内网”。
首选要突破网关(GetWay), 这很容易理解, 因为一个内网要访问internet总是必然通过网关接入的, 至于怎样突破网关, 这和进入不是网关的服务器没有什么两样, 就不说了。
突破网关以后, 我们的目标就是通过网关(IP为202.98.*.*)上网的192.168.21.75。 以后的方法就是在网关力端口重定向, 建立包转发。 端口重定向分两种(local和remote), 但是我们要进而内网, 显然不能用local方式的重定向, local方式的重定向主要用来绕过防火墙(关于这个问题我将在随后单独写一篇文章来讨论怎样用端口重定向绕过防火墙)。
一、利用Fpipe建立端口重定向。
Fpipe是个非常有趣的东东。 为了证明Fpipe的端口重定向功能, 我们来做这样的试验。
首先在自己的机器上运行Fpipe, 如下:
E:\tool\FPip>fpipe -l 80 -s 90 -r 80 202.98.177.162
FPipe v2.1 - TCP/UDP port redirector.
Copyright 2000 (c) by Foundstone, Inc.
http://www.foundstone.com
//解释一下这个命令
fpipe -l 80 -s 90 -r 80 202.98.177.162
将到本机80端口的连接通过90端口连接到202.98.177.162的80端口。
一下是详细语法:
FPipe [-hv?] [-brs <port>] IP
-?/-h - shows this help text
-c - maximum number of allowed simultaneous connections. Default is 32 #连接的最大数目,默认是32
-l - listening port number #要监听的TCP端口号
-r - remote TCP port number #要定向到的IP主机的端口号
-s - outbound connection source port number #从哪个端口发出重定向信息
-v - verbose mode #详细显示过程
在上面的过程中, 我们在自己的机器上建立了端口重定向:将到本机80端口的连接通过90端口连接到202.98.177.162的80端口
然后我们在浏览器中输入:http://127.0.0.1, 结果发现昆明高新区的网页打了, 这说明我们的重定向成功。
此时fpipe现实了如下的内容:
Pipe connected:
In: 127.0.0.1:2092 --> 127.0.0.1:80
Out: 192.168.168.112:90 --> 202.98.177.162:80
从上面的输出可以看出数据包经过的路径(192.168.168.112是我的IP)
好了成功以后, 下面的东西我不说大家也知道了, 将Fpipe拷贝到我们控制的网关上, 执行重定向:
fpipe -l 81 -s 91 -r 21 192.168.21.75 #在网关(202.98.*.*)执行, 将到202.98.*.*的81端口的数据通过91端口转发向192.168.21.75的21端口。 同样的:
fpipe -l 82 -s 92 -r 23 192.168.21.75 #将到202.98.*.*的82端口的数据通过92端口转发向192.168.21.75的23端口
fpipe -l 83 -s 93 -r 80 192.168.21.75 #将到202.98.*.*的83端口的数据通过93端口转发向192.168.21.75的80端口
fpipe -l 84 -s 94 -r 139 192.168.21.75 #将到202.98.*.*的84端口的数据通过94端口转发向192.168.21.75的139端口
下面的你更应该知道了:
如果你在本机telnet到202.98.*.*的81就等价于你telnet到192.168.21.75的21, 不对啊!192.168.21.75的21应该FTP上去才对啊(哈哈), 那就ftp到202.98.*.*的81端口吧!
写到这里我也忍不住喊“真牛…………真牛…………”
二、利用rinetd建立重定向。
方法和上面一样。 在网关上运行rineted, 不过要建立个配置文件(文件名和扩展名随意了在这里我以配置文件为conf.ini做例子说)
在本地用计事本建立如下内容的配置文件(其中的*不方便说, 别找这写哦!他的意思是将到202.98.*.* 的90的包转发到192.168.21.75的80)
202.98.*.* 90 192.168.21.75 80
将他存为conf.ini文件然后和rineted拷贝到那个网关上(202.98.*.* ), 然后
在网关上执行
rinetd -c conf.ini
然后你连接到202.98.*.* 90和连接到192.168.21.75 80的效果是一样的。
顺便说说rinetd配置文件的语法为
bindaddress bindport connectaddress connectport
写在后面:
Fpipe和rineted是很牛的两个工具, 通常我是用这两个工具来突破防火墙的, 以后抽空说说这个问题。
什么什么, 这两个小东西在那下载(别懒了, 自己找把):
http://www.boutell.com/rinetd/
http://www.foundstone.com
去看看吧!
……