标签 - nc

? Netcat ? ? nc ? ? Reverse Shell ?    2020-01-10 17:24:53    511    0    0

实验1 - 使用Netcat在本地Kali主机上监听公网Ubuntu的连接

为了展示 netcat 将会使用两台主机。
1. Kali linux 虚拟机
2. Ubuntu vps

Ubuntu vps:
title

在公网 UBUNTU 上:
title
这行命令表示监听本机的8888端口。

在 Kali 上:
title
这行命令表示与公网 ip 为 144.168.*.70的主机进行通信。

在其他基于Debian的操作系统上:apt-get netcat

然后尝试在两边的命令行里面输入命令,结果发现另一个命令行都能看到输出:

Ubuntu:
title

Kali:
title

上面就是使用Netcat在远程Ubuntu系统上创建了一个侦听器。然后在本地Kali系统上的端口8888(可以是任何端口)上打开了Netcat侦听器。

实验2 - 使用Netcat进行Banner抓取以进行OS指纹识别

在攻击任何系统之前,我们需要尽可能多地了解目标。因此,一旦我们与Web服务器建立了TCP连接,就可以使用Netcat抓住已提供新连接的Web服务器的标识,以识别目标正在运行的Web服务软件。

可以使用HEAD / HTTP/1.0命令将Banner抓取到Web服务器。请注意并完全按照斜杠和空格进行复制。或者,如果这不起作用,则可以改用 HEAD / HTTP/1.1

实验:
先在shodan上面找一个nginx的主机:
title

然后抓取banner。在我的kali输入:
title
可以看到抓回的信息显示web服务器是nginx。记得多按几次回车。

再在shodan上面找一个apache的主机:
title

title

总之都可以找出它们正在运行的服务器,获取服务器信息。

实验3 - reverse shell

在公网 Ubuntu 上面输入下列命令,结果报错了:
title

修复: https://www.fengdingbo.com/netcat-invalid-option-e.html
我自己一不小心把nc删了,重新apt-get install netcat了一遍就好了。
title

在kali上面开始监听此Ubuntu vps的6996端口:
title

在ka

? Netcat ? ? nc ?    2020-01-10 17:24:51    1473    0    0

netcat

❤ 功能1:【网络诊断】测试某个远程主机的【监听】端口是否可达

使用场景:

已经有某个网络软件开启了监听端口,然后用 nc 测试端口是否可达。
需求:要判断某个主机的监听端口是否能连上。
导致监听端口无法连上,通常有两种原因:
1. 这个监听端口根本就【没开启】;
2. 监听端口虽然开启,但是被防火墙阻拦了。
对于第1个原因,(如果我们能在该主机上运行命令)可以直接用netstat这个命令来查看监听端口是否开启:

使用 netstat 查看正在监听的端口:
title

当前主机 tcp 开放了哪些端口:
title

当前主机 udp 开放了哪些端口:
title

但是对于第2个原因(防火墙拦截了监听端口),netstat就用不上了,这时候可以用nc来搞定。

方法

  1. nc -nv x.x.x.x xx
  2. (nc -nv IP port)

使用这个命令可以测试某个IP地址(x.x.x.x)上的某个监听端口是否开启。

选项 -v
-v 选项——通过更详细的输出,能帮你搞明白状况。

选项 -n
由于测试的是【IP 地址】,用该选项告诉 nc,【无须】进行域名(DNS)解析;
反之,如果要测试的主机是基于【域名】,就【不能】用选项 -n

补充说明:超时设置

在测试链接的时候,如果你【没】使用 -w 这个【超时选项】,默认情况下 nc 会等待很久,然后才告诉你连接失败。
如果你所处的网络环境稳定且高速(比如:局域网内),那么,你可以追加-w选项,设置一个比较小的超时值。在下面的例子中,超时值设为3秒。

  1. nc -nv -w 3 x.x.x.x xx

补充说明:UDP —— -u 选项

通常情况下,要测试的端口都是【TCP】协议的端口;如果你碰到特殊情况,需要测试某个【UDP】的端口是否可达。nc 同样能胜任。只需要追加-u 选项。

实验

实验环境:

主机1: 本地 Windows10 主机
title

主机2:WSL —— Linux 子系统(Ubuntu 18.04)

  1. nc 测试 CLOSE_WAIT 的端口
    Windows 主机上 6666 端口处于 CLOSE_WAIT 状态:
    title
    WSL 上

? Netcat ? ? nc ?    2020-01-10 17:24:45    1069    0    0

title

Netcat 简称为nc,中文名网猫。网络里的一只猫,可见其灵活性。

❤ Netcat 是什么?

nc 是一个【命令行】工具,通过nc,可以很灵活地操纵【传输层协议】(TCP&UDP)。

OSI 7层模型:
title

划重点! 协议非常重要。比如,在实战中,我们可能遇到一种情况:走 TCP 无法出网、走 UDP 也无法出网,只有 DNS 才能出网。那么 nc 支持这种场景吗?NC 是支持 DNS 的。因为DNS协议位于应用层,而 netcat 操纵的 TCP 和 UDP 是传输层,只要位于传输层之上的协议, nc 就都是支持的。
要做到根据支持的协议划分工具。这样在实战中才能以不变应对万变。

❤ nc 命令行简介

nc 所有的功能,都以命令行的方式呈现。

nc 命令行的常规形式

  1. nc 命令选项 主机 端口
  • 命令选项
    这部分可能包含 0~N 个选项。
  • 主机
    这部分可能没有,可能是IP,也可能是域名。
  • 端口
    这部分可能没有,可能是单个端口,也可能是端口范围。
    对于【端口范围】,以两个数字分别表示“开始和结束”,中间用【半角减号/连号】相连。举例: 1-1024

命令行选项

nc 提供了很多【命令行选项】,分别对应它提供的功能。每个选项都是【单字母】。有些选项需要带选项值,有些则不需要。
选项要放在 nc 这个命令之后,每个选项前面要有一个【半角减号】,选项之间以空格分开。

title

一些常见的 nc 命令行选项:
title

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