这是我参与8月更文挑战的第12天,活动详情查看:8月更文挑战
简介
NetCat是一款调试TCP/UDP网路联接的神器,常被叫做网路调试的英国军刀,可见其功能强悍。
NetCat的基本功能如下:
使用方式
查看帮助信息:
选项参数:
-c shell commands shell模式
-e filename 程序重定向 [危险!!]
-b 允许广播
-d 无命令行界面,使用后台模式
-g gateway 源路由跳跃点, 不超过8
-G num 源路由指示器: 4, 8, 12, ...
-h 获取帮助信息
-i secs 延时设置,端口扫描时使用
-k 设置在socket上的存活选项
-l 监听入站信息
-n 以数字形式表示的IP地址
-o file 使进制记录
-p port 本地端口
-r 随机本地和远程的端口
-q secs 在标准输入且延迟后退出(翻译的不是很好,后面实例介绍)
-s addr 本地源地址
-T tos 设置服务类型
-t 以TELNET的形式应答入站请求
-u UDP模式
-v 显示详细信息 [使用=vv获取更详细的信息
-w secs 连接超时设置
-z I/O 模式 [扫描时使用]
端口扫描
nc拿来进行端口扫描的命令是nc-nvzip地址端标语
-z参数翻译过来就是不进行i/o,拿来扫描,意思就是仅仅是去ping去侦测目标是否开启指定端口,不进行任何的交互。
-v参数就是列举执行过程的详尽信息,n参数翻译过来就是只接收ip地址,没有dns。
-n参数是由于使用命令的过程中只去传入ip,降低了nc把域名解析为ip的过程,这样可以节约时间提升效率。
nc -nvz 192.168.254.4 1-100
从wireshark可以看出,底层原理是通过发送TCP数据包去进行三次握手来判定端口是否打开,和nmap的SYN扫描是一样的原理
传输文本信息
nc可以在两台机器之间互相传递信息,首先须要有一台机器进行窃听一个端口,另一台以联接的方法去联接其指定的端口,这样两台机器之间构建了通讯后,互相之间可以传输信息。
-l参数是窃听模式的意思,-p是指定一个端口。
nc -lp 666 #监听本地的666端口
另外一台笔记本联接开放的端口linux nc命令,然后就可以互相发送文本信息了
我们可以在TCP数据包中看出传输的数据,即便数据是没有经过加密处理,所以存在一定的安全问题
还有一个作用就是可以运行命令的结果通过`管线符(|)传输到窃听主机的端口上,主要的应用就在于渗透功击时借助这个功能区传输一些信息
假如输出内容过多,则可以将内容定向输出到文件中
通过wireshark的追踪流功能可以看出全部传输的数据
传输文件和目录
作为文件传输和目录这种功能,虽然和文本信息传输类似,只不过是把文本信息换成了文件和目录。首先用一台机器窃听一个端口,假如有人联接并传来信息时,则将信息使用>重定向到文件。另一台机器联接目标指定端口之后通过<输出要传送的文件即可。
前面这个是正向传输的,同样的也有一个反向传输,这个须要理解一下linux软件下载,由于和常常用到的正反向shell原理一样。原本是我打开指定端口,等待他人连我,给我传文件。如今是我打开指定端口把文件打算好,他人连我,我传给他文件。
远程控制/正反向shell
原理和传输信息传输文件一样,只不过传输得是bashlinux nc命令,windows系统是cmd,正向是目标机器主动指定bash,之后通过他人联接自己的端口,他人联接自己后,执行的命令就是自己的机器,如右图
一般情况下,通常的服务器就会有防火墙,甚少会容许其他外在的机器来联接自己的某一个端口,只有个别指定端口可能会准许访问,比如web服务的80端口。这时正向的shell就不不起作用了,而防火墙通常还会严禁外在机器来联接自己机器的其他端口,但自己的机器访问外边的端口通常不会做限制,这时侯就可以使用反向shell,也就是功击者指定一个端口和bash,让目标服务器来联接自己,这样就可以写一个脚本放在目标服务器的开机启动中,只要目标服务器运行都会联接自己。
ncat
nc也有不足之处,首先就是明文传输linux培训,可能会被嗅探。其次对于反向shell,倘若其他人通过网路扫描发觉了这个端口,也就意味着任何人都可以去窃听这个端口进行联接,缺少身分验证功能。
ncat则填补了这种缺点,ncat不是linux系统自带的命令,而是nmap中的。ncat中好多参数和nc一样,其中可以通过--alow参数来指定容许联接的机器,通过--ssl进行数据的加密,如右图
nc精巧功能强悍,所以被成为英国军刀,不足之处是明文传输,也没有相关的身分验证,而ncat在nc基础上填补了其不足,nc可以做的ncat也可以做到,所以ncat被成为21世纪的英国军刀。
NC文件加密传输
apt-get install mcrypt
A:nc -lp port|mcrypt - -flush -Fbqd -a rijndael-256 -m ecb >文件名
B:mcrypt --flush -Fbq -a rijndael-256 -m ecb <文件名|nc -nv ip port -q 1
理解:B将文件加密发送,A接受后先揭秘再保存到本地,B在1s后退出。主要是借助mcrypt进行加密
NC复制c盘
A:nc -lp port |dd of=/dev/sda
B:dd if=/dev/sda | nc -nc ip port -q 1
If是inputfilter
Of是outputfilter
B将数据复制到A挂载的硬碟上