netcat指北

环境

两台kali

0x01

初级的功能:

  1. 及时通信
    设server的ip为192.168.0.104,在其上执行
    nc –l –p port
    netcat指北
    意为绑定6666端口作为自己的通信端口
    输入命令后回车,等待client连接
    设client的IP为192.168.0.105,输入
    nc serverip port
    netcat指北
    意为连接到server(IP为192.168.0.104的6666端口)
    在server端和client端都搭建好了以后,就可以互相进行即时通信
    此时在cliet上开始输入信息,便可以看到server接收到了相应的信息
    netcat指北
    在server输入,在client同样可以看到
    netcat指北
    这便是使用netcat进行即时通信的用法

注意:在使用netcat进行即时通信的时候,要首先搭建server端然后搭建client端。否则会出现如图所示情况
因为server的端口还没有开放
netcat指北
2. 文件传输
同样设server为192.168.0.104,client为192.168.0.105
大部分时间中,我们都在试图通过网络或者其他工具传输文件。有很多种方法,比如FTP,SCP,SMB等等,但是当你只是需要临时或者一次传输文件,真的值得浪费时间来安装配置一个软件到你的机器上嘛。假设,你想要传一个文件file.txt 从server 到client。
首先我们在server新建file.txt
netcat指北
在client端执行
netcat指北
意为将从本地端口8888收到的内容存到transfer.txt
接着在server端执行
netcat指北
以为将file.txt的内容传到192.168.0.105的8888
此时client端回显如下:
netcat指北
可以看到在client已经收到file.txt的内容,并保存在transfer.txt了
netcat指北

0x02中级:

  1. 扫端口
    server:192.168.0.104
    client:192.168.0.105
    netcat可以用来扫描端口,为了验证效果,我们首先在server上开启apache服务,相当于就开发了80端口
    netcat指北
    接着在client上使用netcat扫描
    netcat指北
    可以看到扫描出了开放的80端口
  2. 抓取banner
    在server上安装vsftpd
    netcat指北
    开启ftp服务
    netcat指北
    接下来来到client,连接相应端口
    netcat指北
    可以看到很轻易就抓到了banner

5.与web服务器交互
server端现在已经可以作为web服务器使用
首先连接
netcat指北
然后运行http请求
即输入 HEAD /HTTP/1.0回车

netcat指北

0x03高级:

  1. shell
    attacker:192.168.0.104
    victim:192.168.0.105
    netcat反弹shell时分为正向shell和反向shell
    6.1正向shell
    在victim上执行:
    netcat指北
    在attacker上执行:
    netcat指北
    此时在attacker上输入的命令,所回显的内容其实都是在victim上执行的结果
    netcat指北
    而在victim端显示如图
    netcat指北

6.2反向shell
6.2.1最普通的反向shell
在attacker上执行
netcat指北
在victim上执行
netcat指北
此时在attacker就拿到shell了
netcat指北
这是最普遍的一种反向shell方式,接下来在扩充下知识点~~敲黑板,划重点啦~
当victim上没有nc上我们怎么反弹shell呢?下面介绍几种方法。
第一步都一样,都要在attacker上执行
netcat指北
不同的是接下来的步骤
6.2.2python
在victim上执行
netcat指北
此时在attacker上就收到shell了:
netcat指北
6.2.3ruby
在victim上执行
netcat指北
在attacker上拿到shell
netcat指北
6.2.4perl
在victim上执行
netcat指北
在attacker上收到shell
netcat指北
6.2.5php
在victim上执行
netcat指北
在attacker收到shell
netcat指北
7.web服务器
server:192.168.0.104
client:192.168.0.105
在server上新建test.txt
netcat指北
然后输入
netcat指北
开启web服务
接着启动
netcat指北
在victim上访问
netcat指北
在server上可以看到如下回显
netcat指北
但是这个命令开启的服务访问一次后就关闭了,再次访问会如图所示:
netcat指北

所以我们可以改进,将其写入脚本提供持久化的web服务
脚本内容如下:
netcat指北
脚本就是讲关键的那行代码加入了一直为真的while循环中:
运行脚本
netcat指北
此时可以持久访问了
netcat指北
刷新后依旧可以访问
访问一次,在server上就会重复回显如下内容

netcat指北
拓展:使用python自制netcat–《python黑帽子》
代码如下:

netcat指北netcat指北netcat指北
在192.168.0.105上运行
查看帮助
netcat指北
建立监听
netcat指北

在192.168.0.104上使用nc连接,可以看到成功拿到shell
netcat指北
此时在105机器上回显如下

netcat指北
最后附上netcat的参数中文翻译:
-g<网关>:设置路由器跃程通信网关,最多设置8个;
-d 无命令行界面,使用后台模式
-c 程序重定向,比如-c bash,nc传输过来的数据就会指向bash去执行
-e 这个也是程序重定向,用在windows下
-G<指向器数目>:设置来源路由指向器,其数值为4的倍数;
-h:在线帮助; -i<延迟秒数>:设置时间间隔,以便传送信息及扫描通信端口;
-l:使用监听模式,监控传入的资料;
-L:也是用作监听,不过监听端不终止nc的话,连接端终止后,监听端依然保持监听状态。
-n:直接使用ip地址,而不通过域名服务器;
-o<输出文件>:指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存;
-p<通信端口>:设置本地主机使用的通信端口;
-r:指定源端口和目的端口都进行随机的选择;
-s<来源位址>:设置本地主机送出数据包的IP地址;
-u:使用UDP传输协议;
-v:显示指令执行过程;
-w<超时秒数>:设置等待连线的时间,一般扫描时加上;
-z:使用0输入/输出模式,只在扫描通信端口时使用。

参考:

  1. https://www.cnblogs.com/r00tgrok/p/reverse_shell_cheatsheet.html
  2. https://blog.****.net/angie_q/article/details/78768227
  3. https://bitrot.sh/cheatsheet/19-12-2017-ncat/
  4. http://www.cnblogs.com/hyq20135317/p/5491298.html
  5. http://www.binarytides.com/netcat-tutorial-for-beginners/