分享
 
 
 

netcat-网络的瑞士军刀--高手的不二选择

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

有关netcat的文章实在是太多了,关于它的强大我就不再复述了.我来说说它在实际中的用途.

netcat可以作为类似于telent的客户端,也可以监听某个端口作为服务器,还可以作为扫描工具扫描对方主机的端口,还可以用来传输文件,不相

信吗?听我慢慢道来

首先我们要弄明白netcat的工作原理,其实netcat的原理很简单,它就是从网络的一端读入数据,然后输出到网络的另一端,它可以使用tcp和udp

协议.之所以叫做netcat,因为它是网络上的cat,想象一下cat的功能,读出一个文件的内容,然后输出到屏幕上(默认的stdout是屏幕,当然可以重

定向到其他地方).netcat也是如此,它读取一端的输入,然后传送到网络的另一端,就这么简单.但是千万不要小看了它,netcat可以完成很多任务,,尤其是和其他程序组合时.好了,废话少说,进入正题吧.

网上有两种版本的netcat,一个是@stake公司的netcat,http://www.atstake.com/research/too...work_utilities/ 也就是最初的版本,还

有一个是GNU的netcat.http://netcat.sourceforge.net/download.php 我个人更倾向于使用GNU的netcat,因为它的功能更多,不过GNU的没有

windows平台的版本

至于编译和安装我想就不用说了,如果这关都过不了,我想也有点太……,看看readme和install文件,一般情况下./configure&&make&&make

install就ok了,具体的./configure选项看看帮助。

netcat的命令行程序名字为nc,是netcat的缩写,安装完了是找不到netcat这个程序的.

root@mail etc #nc -h

GNU netcat 0.7.0, a rewrite of the famous networking tool.

Basic usages:

connect to somewhere: nc [options] hostname port [port] ...

listen for inbound: nc -l -p port [options] [hostname] [port] ...

tunnel to somewhere: nc -L hostnameort -p port [options]

Mandatory arguments to long options are mandatory for short options too.

Options:

-c, --close close connection on EOF from stdin

-e, --exec=PROGRAM program to exec after connect

-g, --gateway=LIST source-routing hop point[s], up to 8

-G, --pointer=NUM source-routing pointer: 4, 8, 12, ...

-h, --help display this help and exit

-i, --interval=SECS delay interval for lines sent, ports scanned

-l, --listen listen mode, for inbound connects

-L, --tunnel=ADDRESS:PORT forward local port to remote address

-n, --dont-resolve numeric-only IP addresses, no DNS

-o, --output=FILE output hexdump traffic to FILE (implies -x)

-p, --local-port=NUM local port number

-r, --randomize randomize local and remote ports

-s, --source=ADDRESS local source address (ip or hostname)

-t, --tcp TCP mode (default)

-T, --telnet answer using TELNET negotiation

-u, --udp UDP mode

-v, --verbose verbose (use twice to be more verbose)

-V, --version output version information and exit

-x, --hexdump hexdump incoming and outgoing traffic

-w, --wait=SECS timeout for connects and final net reads

-z, --zero zero-I/O mode (used for scanning)

Remote port number can also be specified as range. Example: '1-1024'

我用的是GNU的netcat,比起@stake公司的netcat多了-c选项,不过这是很有用的一个选项,后面我们会讲到.还有GNU的-L,-t ,-T选项和@stake的

-L -t用途是不一样的,自己琢磨吧.

一.客户端

这是最简单的使用方式,nc <hostname> <portnumber>

nc www.apache.org 80

get / http/1.1

HTTP/1.1 400 Bad Request

Date: Mon, 08 Dec 2003 06:23:31 GMT

Server: Apache/2.0.48-dev (Unix)

Content-Length: 310

Connection: close

Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>400 Bad Request</title>

</head><body>

<h1>Bad Request</h1>

<p>Your browser sent a request that this server could not understand.<br />

</p>

<hr />

<address>Apache/2.0.48-dev (Unix) Server at www.apache.org Port 80</address>

</body></html>

呵呵,看到了什么,我什么也没说哦

二.简单服务器

nc -l -p <portnumber> //这里-l参数表明nc处于监听模式,-p指定端口号.

nc -l -p 1234[假设这台主机ip为192.168.0.1]

然后从客户端输入,nc 192.168.0.1 1234 然后你从任一端输入的数据就会显示在另一端了.其实netcat的server和client的区别并不大,区别仅

仅在于谁执行了-l来监听端口,一旦连接建立以后,就没有什么区别了.从这里我们也可以了解netcat的工作原理了,通过网络链接读写数据.[It is a simple Unix utility which reads and writes data across network connections, using TCP or UDP protocol]--@stake主页是这么说的.

三.telnet服务器

nc有一个-e的选项,用来指定在连接后执行的程序.

在windows平台上可以指定-e cmd.exe[winxp,win2000,]如果是98就指定command.exe.linux则指定-e bash,或者任何你喜欢的shell,或者是你

自己编写的程序,通常是做为后门

指定-e的效果是由你指定的程序代替了nc自己来接受另一端的输入,并把输入(命令)后反馈的结果显示到另一端.

server: nc -l -p 1234 -e bash

client: nc 192.168.0.1 1234 就可以远程登陆server了

其实我们不一定非要在server端指定-e,也可以在client端指定.

server: nc -l -p 1234

client: nc -e 192.168.0.1 1234 .这样,就相当于在server上远程登陆client了.我前面说过,有关client和server的区分是没有什么意义的.

谁做为telnet server的标准只有一个,谁执行了-e [shell].

四.ftp服务器

nc可以从任何地方接受输入,不仅仅是-e指定的程序,还可以是文件;nc可以将输入重定向到任何地方,不仅仅是默认的屏幕.指定的方法很简单,

使用 > 和 < 重定向符号.

例1; server: nc -l -c -p 1234 </etc/passwd [这是很危险的,不要放在公网上,如果被我看到了,哼哼……]

client: nc 192.168.0.1 1234 >somefile

例2; server: nc -l -c -p 1234 >somefile

client: nc 192.168.0.1 1234 </etc/passwd

其中,-c选项指定在文件传输结束的时候关闭链接,这是GNU netcat特有的选项.不指定-c或者你使用@stake的netcat的话,你要在文件传输结束

是按Ctrl+c关闭链接.

五.扫描端口

nc -z -w 2 -v -v www.somewhere.com port[,port[,port-port]]

-z 指定zero-I/O 模式,它让netcat禁止任何来自源系统的I/O,如果不指定它,netcat会无限期的挂起端口.所以在网络扫描时要指定-z选项.

-w 指定超时时间,单位为秒

-v 详细模式

例: nc -z -w 2 -v -v www.somewhere.com 20-30,80,100-112,443

不过我不赞成使用netcat来扫描,因为我觉得它的速度不够快,而且得到的信息不够全,而且更重要的是不够隐蔽.nmap倒是个上好的选择,如果有

时间,我会在另一篇文章里讨论nmap的超酷功能.[做做广告先]

六.综合应用

unix的强大不在于其某个程序自身,而在于多个简单工具的组合,只要发挥你的想象力,你会发现unix的世界是多么美好.

例1.[背景]有一台主机被怀疑遭到入侵并被安装了rootkit,现在要和另一台干净的主机做一下比较.

被入侵主机:

find /etc -type f|xargs md5sum|nc -l -p 1234 -c

干净主机:

nc 192.168.0.1 1234|md5sum -c -|grep -v OK //md5sum -c 表示检查给定列表的md5sum. 后跟文件名,这里指定-,即标准输入.

//当文件的md5sum匹配是显示OK,我们过滤掉这些行,显示不匹配的行

例2.检查被入侵的主机上的suid和sgid程序.

被入侵主机: find / -xdev -type f -user root \( -perm -4000 -o -perm -2000 \)|xargs md5sum |nc -l -c -p 1234

远程主机: nc 192.168.0.33 1234|md5sum -c -|grep -v OK

例3. 远程对被入侵主机做镜像.

被入侵主机:

dd if=/dev/hda1 bs=1024|nc -l -p 1234 -c

远程主机:

nc 192.168.0.1 1234 >/check/host.disk1

然后,可以利用linux内核的loopback特性,把host.disk以只读的方式mount上,然后就可以做取证分析了.

[如果真的做取证分析,一定不要在原始的受害主机硬盘上find和类似的操作,因为这会修改时间标记而破坏原始的证据]

例4. 将文件压缩后再传送.

如果你的文件很大,何不先压缩它呢,利用管道,我们甚至不用生成压缩后的中间文件!

源主机: tar czf - work|nc -l -c -p 1234

目的主机: nc 192.168.0.1 1234|tar xzvf -

[tar打包时最好不要使用绝对路径,虽然GNU的tar能把它转换成相对路径,但不是所有的平台都能做到,所以如果不想把你的文件系统搞乱的话,

就使用相对路径吧!]

…………

这里的server和client的组合是可以互换的,以第六节中例1来说明:

你也可以这样:

干净主机: nc -l -p 1234 -c |md5sum -c -|grep -v OK

被入侵主机:find /etc -type f|xargs md5sum|nc 192.168.0.2 1234

其实,这些都不是固定的程式,根据你的实际需要,你可以想出更多的使用方法。因为,你是在使用UNIX,这就是UNIX。

that's all.抛砖引玉,写到这里吧,这就是"瑞士军刀",觉得怎么样?其实netcat还有许多许多其他的用法,唯一限制就是你的想象力,把你知道的

告诉我,OK?

当然还有些方面我没有写出来,比如,netcat中继的问题.某些黑客就拿netcat中继功能用做跳板来躲避追踪的

这方面没有怎么研究过,再者也没有时间,如果哪位高手知道,请告诉我.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有