telnet、curl、nmap、masscan用法参数信息以及优缺点
telnet命令格式
telnet [options] hostname [port]
hostname:远程主机的域名或IP地址。
options:可选参数。
port:远程主机的端口号,默认为23。
telnet常用参数
- -4:使用IPv4地址连接远程主机
- -6:使用IPv6地址连接远程主机
- -8:允许使用8位字符资料,包括输入与输出
- -a:尝试自动登入远端系统
- -b:<主机别名> 使用别名指定远端主机名称
- -c:不读取用户专属目录里的.telnetrc文件
- -d:启动排错模式
- -e:<脱离字符> 设置脱离字符
- -E:滤除脱离字符
- -F:使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机
- -k:<域名> 使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名
- -K:不自动登入远端主机
- -l:<用户名称> 指定要登入远端主机的用户名称
- -L:允许输入8位字符资料
- -n:<记录文件> 指定文件记录相关信息
- -r:使用类似rlogin指令的用户界面
- -S:<服务类型> 设置telnet连线所需的IP TOS信息
- -x:假设主机有支持数据加密的功能,就使用它
- -X:<认证形态> 关闭指定的认证形态
curl命令格式
curl [options] [url...]
options:可选参数
url:web地址
参考:curl命令最全详解
curl常用参数
-a/--append | 上传文件时,附加到目标文件 |
---|---|
--anyauth | 可以使用“任何”身份验证方法 |
--basic | 使用HTTP基本验证 |
-B/--use-ascii | 使用ASCII文本传输 |
-d/--data <data> | HTTP POST方式传送数据 |
--data-ascii <data> | 以ASCII的方式post数据 |
--data-binary <data> | 以二进制的方式post数据 |
--negotiate | 使用HTTP身份验证 |
--digest | 使用数字身份验证 |
--disable-eprt | 禁止使用EPRT或LPRT |
--disable-epsv | 禁止使用EPSV |
--egd-file <file> | 为随机数据(SSL)设置EGD socket路径 |
--tcp-nodelay | 使用TCP_NODELAY选项 |
-E/--cert <cert[:passwd]> | 客户端证书文件和密码(SSL) |
--cert-type <type> | 证书文件类型(DER/PEM/ENG)(SSL) |
--key <key> | 私钥文件名(SSL) |
--key-type <type> | 私钥文件类型(DER/PEM/ENG)(SSL) |
--pass <pass> | 私钥密码(SSL) |
--engine <eng> | 加密引擎使用(SSL).“–engine list” for list |
--cacert <file> | CA证书(SSL) |
--capath <directory> | CA目(made using c_rehash)to verify peer against(SSL) |
--ciphers <list> | SSL密码 |
--compressed | 要求返回是压缩的形式(using deflate or gzip) |
--connect-timeout <seconds> | 设置最大请求时间 |
--create-dirs | 建立本地目录的目录层次结构 |
--crlf | 上传是把LF转变成CRLF |
--ftp-create-dirs | 如果远程目录不存在,创建远程目录 |
--ftp-method [multicwd/nocwd/singlecwd] | 控制CWD的使用 |
--ftp-pasv | 使用PASV/EPSV代替端口 |
--ftp-skip-pasv-ip | 使用PASV的时候,忽略该IP地址 |
--ftp-ssl | 尝试用SSL/TLS来进行ftp数据传输 |
--ftp-ssl-reqd | 要求用SSL/TLS来进行ftp数据传输 |
-F/--form <name=content> | 模拟http表单提交数据 |
-form-string <name=string> | 模拟http表单提交数据 |
-g/--globoff | 禁用网址序列和范围使用{}和[] |
-G/--get | 以get的方式来发送数据 |
-h/--help | 帮助 |
-H/--header <line> | 自定义头信息传递给服务器 |
--ignore-content-length | 忽略的HTTP头信息的长度 |
-i/--include | 输出时包括protocol头信息 |
-I/--head | 只显示文档信息 |
-j/--junk-session-cookies | 读取文件时忽略session cookie |
--interface <interface> | 使用指定网络接口/地址 |
--krb4 <level> | 使用指定安全级别的krb4 |
-k/--insecure | 允许不使用证书到SSL站点 |
-K/--config | 指定的配置文件读取 |
-l/--list-only | 列出ftp目录下的文件名称 |
--limit-rate <rate> | 设置传输速度 |
--local-port <NUM> | 强制使用本地端口号 |
-m/--max-time <seconds> | 设置最大传输时间 |
--max-redirs <num> | 设置最大读取的目录数 |
--max-filesize <bytes> | 设置最大下载的文件总量 |
-M/--manual | 显示全手动 |
-n/--netrc | 从netrc文件中读取用户名和密码 |
--netrc-optional | 使用.netrc或者URL来覆盖-n |
--ntlm | 使用HTTP NTLM身份验证 |
-N/--no-buffer | 禁用缓冲输出 |
-p/--proxytunnel | 使用HTTP代理 |
--proxy-anyauth | 选择任一代理身份验证方法 |
--proxy-basic | 在代理上使用基本身份验证 |
--proxy-digest | 在代理上使用数字身份验证 |
--proxy-ntlm | 在代理上使用ntlm身份验证 |
-P/--ftp-port <address> | 使用端口地址,而不是使用PASV |
-Q/quote <cmd> | 文件传输前,发送命令到服务器 |
--range-file | 读取(SSL)的随机文件 |
-R/--remote-time | 在本地生成文件时,保留远程文件时间 |
--retry <num> | 传输出现问题时,重试的次数 |
--retry-delay <seconds> | 传输出现问题时,设置重试间隔时间 |
--retry-max-time <seconds> | 传输出现问题时,设置最大重试时间 |
-S/--show-error | 显示错误 |
--socks4 <host[:port]> | 用socks4代理给定主机和端口 |
--socks5 <host[:port]> | 用socks5代理给定主机和端口 |
-t/--telnet-option <OPT=val> | Telnet选项设置 |
--trace <file> | 对指定文件进行debug |
--url <URL> | Spet URL to work with |
-U/--proxy-user <user[:password]> | 设置代理用户名和密码 |
-V/--version | 显示版本信息 |
-X/--request <command> | 指定什么命令 |
-y/--speed-time | 放弃限速所要的时间。默认为30 |
-Y/--speed-limit | 停止传输速度的限制,速度时间‘秒 |
-z/--time-cond | 传送时间设置 |
-0/--http1.0 | 使用HTTP1.0 |
-1/--tlsv1 | 使用TLSv1(SSL) |
-2/--sslv2 | 使用SSLv2(SSL) |
-3/--sslv3 | 使用SSLv3(SSL) |
--3p-quote | like -Q for the source URL for 3rd party transfer |
--3p-url | 使用url,进行第三方传送 |
--3p-user | 使用用户名密码,进行第三方传送 |
-4/--ipv4 | 使用IP4 |
-6 /–ipv6 | 使用IP6 |
nmap常见参数解读
- 目标规格
nmap 192.168.1.1 扫描一个IP
nmap 192.168.1.1 192.168.2.1 扫描IP段
nmap 192.168.1.1-254 扫描一个范围
nmap nmap.org 扫描一个域名
nmap 192.168.1.0/24 使用CIDR表示法扫描
nmap -iL target.txt 扫描文件中的目标
nmap -iR 100 扫描100个随机主机
nmap --exclude 192.168.1.1 排除列出的主机
- 扫描手法
nmap 192.168.1.1 -sS TCP SYN端口扫描(有root权限默认)
nmap 192.168.1.1 -sT TCP连接端口扫描(没有root权限默认)
nmap 192.168.1.1 -sU UDP端口扫描
nmap 192.168.1.1 -sA TCP ACK端口扫描
nmap 192.168.1.1 -sW 滑动窗口扫描
nmap 192.168.1.1 -sM TCP Maimon扫描
nmap 192.168.1.1-3 -sL 不扫描,仅列出目标
nmap 192.168.1.1/24 -sn 只进行主机发现,禁用端口扫描
nmap 192.168.1.1-5 -Pn 跳过主机发现,直接扫描端口
nmap 192.168.1.1-5 -PS22-25,80 端口X上的TCP SYN发现,默认80
nmap 192.168.1.1-5 -PA22-25,80 端口X上的TCP ACK发现,默认80
nmap 192.168.1.1-5 -PU53 端口X上的UDP发现,默认40125
nmap 192.168.1.1/24 -PR 本地网络上的ARP发现
nmap 192.168.1.1 -n 不做DNS解析
- 端口规则
nmap 192.168.1.1 -p 21 扫描特定端口
nmap 192.168.1.1 -p 21-100 扫描端口范围
nmap 192.168.1.1 -p U:53,T:21-25,80 扫描多个TCP和UDP端口
nmap 192.168.1.1 -p- 扫描所有端口
nmap 192.168.1.1 -p http,https 基于服务名称的端口扫描
nmap 192.168.1.1 -F 快速扫描(100个端口)
nmap 192.168.1.1 --top-ports 2000 扫描前2000个端口
nmap 192.168.1.1 -p-65535 从端口1开始扫描
- 时间和性能
nmap 192.168.1.1 -T0 妄想症,非常非常慢,用于IDS逃逸
nmap 192.168.1.1 -T1 猥琐的,相当慢,用于IDS逃逸
nmap 192.168.1.1 -T2 礼貌的,降低速度以消耗更小的带宽,比默认慢十倍
nmap 192.168.1.1 -T3 正常的,默认,根据目标的反应自动调整时间模式
nmap 192.168.1.1 -T4 野蛮的,在一个很好的网络环境,请求可能会淹没目标
nmap 192.168.1.1 -T5 疯狂的,很可能会淹没目标端口或是漏掉一些开放端口
- NSE脚本
nmap 192.168.1.1 -sC 使用默认的NSE脚本进行扫描
nmap 192.168.1.1 --script=banner 使用单个脚本扫描,banner示例
nmap 192.168.1.1 --script=http,banner 使用两个脚本扫描,示例http,banner
nmap 192.168.1.1 --script=http* 使用通配符扫描,http示例
nmap 192.168.1.1 --script "not intrusive" 扫描默认值,删除侵入性脚本
nmap 192.168.1.1 --script=smb-vuln* 扫描所有smb漏洞
nmap 192.168.1.1 --script=vuln 扫描常见漏洞
- 输出
nmap 192.168.1.1 -v 增加详细程度,-vv效果更好
nmap 192.168.1.1 -oN test.txt 标准输出写入到指定文件中
nmap 192.168.1.1 -oX test.xml 将输入写成xml的形式
nmap 192.168.1.1 -oG grep.txt 将输出写成特殊格式
nmap 192.168.1.1 -oA results 将输出所有格式,有三种 .xml/.gnmap/.nmap
nmap 192.168.1.1 --open 仅显示开放的端口
nmap 192.168.1.1 -T4 --packet-trace 显示所有发送和接收的数据包
nmap --resume test.txt 恢复扫描,配合-oG等命令使用
7.扫描结果端口状态
- open:端口是开放的
- closed:端口是关闭的
- filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态
- unfiltered:端口没有被屏蔽,但是否开放需要进一步确定
- open / filtered:端口是开放的或被屏蔽
- closed / filtered :端口是关闭的或被屏蔽
参考:nmap命令详解及实现
masscan简单用法
masscan --ports 1-10000 192.168.26.131 --adapter-ip 192.168.26.1
masscan详细参数
<ip/range> IP地址范围,有三种有效格式:
1、单独的IPv4地址
2、类似"10.0.0.1-10.0.0.233"的范围地址
3、CIDR地址 类似于"0.0.0.0/0",多个目标可以用都好隔开
-p <ports,--ports <ports>> 指定端口进行扫描
--banners 获取banner信息,支持少量的协议
--rate <packets-per-second> 指定发包的速率
--max-rate 每秒发的包数量,根据机器和网络情况自行选择
例:--max-rate 100000
-c <filename>, --conf <filename> 读取配置文件进行扫描
-iL 扫描文件中的ip地址 例:-iL ip.txt
--echo 将当前的配置重定向到一个配置文件中
-e <ifname> / --adapter <ifname> 指定用来发包的网卡接口名称
--adapter-ip <ip-address> 指定发包的IP地址
--adapter-port <port> 指定发包的源端口
--adapter-mac <mac-address> 指定发包的源MAC地址
--router-mac <mac address> 指定网关的MAC地址
--exclude <ip/range> IP地址范围黑名单,防止masscan扫描
--excludefile <filename> 指定IP地址范围黑名单文件
--includefile,-iL <filename> 读取一个范围列表进行扫描
--ping 扫描应该包含ICMP回应请求
--append-output 以附加的形式输出到文件
--iflist 列出可用的网络接口,然后退出
--retries 发送重试的次数,以1秒为间隔
--nmap 打印与nmap兼容的相关信息
--http-user-agent <user-agent> 设置user-agent字段的值
--show [open,close] 告诉要显示的端口状态,默认是显示开放端口
--noshow [open,close] 禁用端口状态显示
--pcap <filename> 将接收到的数据包以libpcap格式存储
--regress 运行回归测试,测试扫描器是否正常运行
--ttl <num> 指定传出数据包的TTL值,默认为255
--wait <seconds> 指定发送完包之后的等待时间,默认为10秒
--offline 没有实际的发包,主要用来测试开销
-sL 不执行扫描,主要是生成一个随机地址列表
--readscan <binary-files> 读取从-oB生成的二进制文件,可以转化为XML或者JSON格式.
--connection-timeout <secs> 抓取banners时指定保持TCP连接的最大秒数,默认是30秒。
telnet、curl、nmap、masscan的优缺点
telnet优缺点
优点:
- 简单易用,可用于测试端口是否开放和连接是否正常。
- 支持多种协议,如Telnet协议、SMTP协议、POP3协议等。
缺点:
- 传输数据不加密,安全性较差。
- 仅支持文本协议,无法传输二进制数据。
- 不支持多线程操作。
curl优缺点
优点:
- 支持多种协议,包括HTTP、FTP、SMTP、TELNET、LDAP等。
- 支持多种数据传输方式,如URL、POST、PUT等。
- 支持自定义HTTP头部信息、Cookie等。
缺点:
- 不支持多线程操作,速度较慢。
- 对于复杂的数据格式支持不足。
nmap优缺点
优点:
- 可扫描多种协议,如TCP、UDP、ICMP等。
- 可进行端口扫描、操作系统识别、服务识别、漏洞扫描等。
- 支持大规模扫描。
缺点:
- 扫描时间较长(速度慢)。
- 对于一些防火墙和入侵检测系统会被识别为攻击行为。
masscan优缺点
优点:
- 高速、高效,可在极短的时间内扫描大量端口。
- 支持自定义扫描范围和速度。
缺点:
- 只支持TCP协议。
- 扫描结果不稳定,有些端口可能会被误判为开放或关闭。