网站精华渗透测试之嗅探流量抓包剖析
在浩瀚的网络中安全问题是最普遍的需求,很多想要对网站进行渗透测试服务的,来想要保障网站的安全性防止被入侵被攻击等问题,在此我们Sine安全整理了下在渗透安全测试中抓包分析以及嗅探主机服务类型,以及端口扫描等识别应用服务,来综合评估网站安全。
8.2.1. TCPDump
TCPDump是一款数据包的抓取分析工具,可以将网络中传送的数据包的完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供逻辑语句来过滤包。
8.2.1.1. 命令行常用选项
- -B <buffer_size> 抓取流量的缓冲区大小,若过小则可能丢包,单位为KB
- -c <count> 抓取n个包后退出
- -C <file_size> 当前记录的包超过一定大小后,另起一个文件记录,单位为MB
- -i <interface> 指定抓取网卡经过的流量
- -n 不转换地址
- -r <file> 读取保存的pcap文件
- -s <snaplen> 从每个报文中截取snaplen字节的数据,0为所有数据
- -q 输出简略的协议相关信息,输出行都比较简短。
- -W <cnt> 写满cnt个文件后就不再写入
- -w <file> 保存流量至文件
- 按时间分包时,可使用strftime的格式命名,例如 %Y_%m_%d_%H_%M_%S.pcap
- -G <seconds> 按时间分包
- -v 产生详细的输出,-vv -vvv 会产生更详细的输出
- -X 输出报文头和包的内容
- -Z <user> 在写文件之前,转换用户
8.2.2. Bro
Bro是一个开源的网络流量分析工具,支持多种协议,可实时或者离线分析流量。
8.2.2.1. 命令行
- 实时监控 bro -i <interface> <list of script to load>
- 分析本地流量 bro -r <pcapfile> <scripts...>
- 分割解析流量后的日志 bro-cut
8.2.2.2. 脚本
为了能够扩展和定制Bro的功能,Bro提供了一个事件驱动的脚本语言。
8.2.3. tcpflow
tcpflow也是一个抓包工具,它的特点是以流为单位显示数据内容,在分析HTTP等协议的数据时候,用tcpflow会更便捷。
8.2.3.1. 命令行常用选项
- -b max_bytes 定义最大抓取流量
- -e name 指定解析的scanner
- -i interface 指定抓取接口
- -o outputdir 指定输出文件夹
- -r file 读取文件
- -R file 读取文件,但是只读取完整的文件
8.2.4. tshark
WireShark的命令行工具,可以通过命令提取自己想要的数据,可以重定向到文件,也可以结合上层语言来调用命令行,实现对数据的处理。
8.2.4.1. 输入接口
- -i <interface> 指定捕获接口,默认是第一个非本地循环接口
- -f <capture filter> 设置抓包过滤表达式,遵循libpcap过滤语法,这个选项在抓包的过程中过滤,如果是分析本地文件则用不到
- -s <snaplen> 设置快照长度,用来读取完整的数据包,因为网络中传输有65535的限制,值0代表快照长度65535,默认为65535
- -p 以非混合模式工作,即只关心和本机有关的流量
- -B <buffer size> 设置缓冲区的大小,只对windows生效,默认是2M
- -y <link type> 设置抓包的数据链路层协议,不设置则默认为 -L 找到的第一个协议
- -D 打印接口的列表并退出
- -L 列出本机支持的数据链路层协议,供-y参数使用。
- -r <infile> 设置读取本地文件
8.2.4.2. 捕获停止选项
- -c <packet count> 捕获n个包之后结束,默认捕获无限个
- -a <autostop cond>
- duration:NUM 在num秒之后停止捕获
- filesize:NUM 在numKB之后停止捕获
- files:NUM 在捕获num个文件之后停止捕获
8.2.4.3. 处理选项
- -Y <display filter> 使用读取过滤器的语法,在单次分析中可以代替 -R 选项
- -n 禁止所有地址名字解析(默认为允许所有)
- -N 启用某一层的地址名字解析。m 代表MAC层, n 代表网络层, t 代表传输层, C 代表当前异步DNS查找。如果 -n 和 -N 参数同时存在, -n 将被忽略。如果 -n 和 -N 参数都不写,则默认打开所有地址名字解析。
- -d 将指定的数据按有关协议解包输出,如要将tcp 8888端口的流量按http解包,应该写为 -d tcp.port==8888,http 。可用 tshark -d 列出所有支持的有效选择器。
8.2.4.4. 输出选项
- -w <outfile> 设置raw数据的输出文件。不设置时为stdout
- -F <output file type> 设置输出的文件格式,默认是 .pcapng,使用 tshark -F 可列出所有支持的输出文件类型
- -V 增加细节输出
- -O <protocols> 只显示此选项指定的协议的详细信息
- -P 即使将解码结果写入文件中,也打印包的概要信息
- -S <separator> 行分割符
- -x 设置在解码输出结果中,每个packet后面以HEX dump的方式显示具体数据
- -T pdml|ps|text|fields|psml 设置解码结果输出的格式,默认为text
- -e 如果 -T 选项指定, -e 用来指定输出哪些字段
- -t a|ad|d|dd|e|r|u|ud 设置解码结果的时间格式
- -u s|hms 格式化输出秒
- -l 在输出每个包之后flush标准输出
- -q 结合 -z 选项进行使用,来进行统计分析
- -X <key>:<value> 扩展项,lua_script、read_format
- -z 统计选项,具体的参考文档
8.2.4.5. 其他选项
- -h 显示命令行帮助
- -v 显示tshark的版本信息
网络渗透测试嗅探
8.3. 嗅探工具
8.3.1. Nmap
nmap [<扫描类型>...] [<选项>] {<扫描目标说明>}
8.3.1.1. 指定目标
- CIDR风格 192.168.1.0/24
- 逗号分割 www.baidu.com,www.zhihu.com
- 分割线 10.22-25.43.32
- 来自文件 -iL <inputfile>
- 排除不需要的host --exclude <host1 [, host2] [, host3] ... > --excludefile <excludefile>
8.3.1.2. 主机发现
- -sL List Scan - simply list targets to scan
- -sn/-sP Ping Scan - disable port scan
- -Pn Treat all hosts as online -- skip host discovery
- -sS/sT/sA/sW/sM TCP SYN/Connect()/ACK/Window/Maimon scans
- -sU UDP Scan
- -sN/sF/sX TCP Null, FIN, and Xmas scans
8.2.1.3. 端口扫描
- --scanflags 定制的TCP扫描
- -P0 无ping
- PS [port list] (TCP SYN ping) // need root on Unix
- PA [port list] (TCP ACK ping)
- PU [port list] (UDP ping)
- PR (Arp ping)
- p <port message>
- F 快速扫描
- r 不使用随机顺序扫描
8.2.1.4. 服务和版本探测
- -sV 版本探测
- --allports 不为版本探测排除任何端口
- --version-intensity <intensity> 设置 版本扫描强度
- --version-light 打开轻量级模式 // 级别2
- --version-all 尝试每个探测 // 级别9
- --version-trace 跟踪版本扫描活动
- -sR RPC 扫描
8.2.1.5. 操作系统扫描
- -O 启用操作系统检测
- --osscan-limit 针对指定的目标进行操作系统检测
- --osscan-guess
- --fuzzy 推测操作系统检测结果
8.2.1.6. 时间和性能
- 调整并行扫描组的大小
- --min-hostgroup<milliseconds>
- --max-hostgroup<milliseconds>
- 调整探测报文的并行度
- --min-parallelism<milliseconds>
- --max-parallelism<milliseconds>
- 调整探测报文超时
- --min_rtt_timeout <milliseconds>
- --max-rtt-timeout <milliseconds>
- --initial-rtt-timeout <milliseconds>
- 放弃低速目标主机
- --host-timeout<milliseconds>
- 调整探测报文的时间间隔
- --scan-delay<milliseconds>
- --max_scan-delay<milliseconds>
- 设置时间模板
- -T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane>
8.2.1.7. 逃避渗透测试检测相关
mtu 使用指定的MTU
- -D<decoy1[, decoy2][, ME], ...> 使用诱饵隐蔽扫描
- -S<IP_Address> 源地址哄骗
- -e <interface> 使用指定的接口
- --source-port<portnumber>;-g<portnumber> 源端口哄骗
- --data-length<number> 发送报文时 附加随机数据
- --ttl <value> 设置ttl
- --randomize-hosts 对目标主机的顺序随机排列
- --spoof-mac<macaddress, prefix, orvendorname> MAC地址哄骗
8.2.1.8. 输出
- -oN<filespec> 标准输出
- -oX<filespec> XML输出
- -oS<filespec> ScRipTKIdd|3oUTpuT
- -oG<filespec> Grep输出 -oA<basename> 输出至所有格式
8.2.1.9. 细节和调试
- -v 信息详细程度
- -d [level] debug level
- --packet-trace 跟踪发送和接收的报文
- --iflist 列举接口和路由
- 在网站安全渗透测试中遇到的检测方法以及绕过方法太多太多,而这些方法都是源于一个目的,就是为了确保网站或平台的安全性想要了解更多的安全检测以及上线前的渗透测试评估可以咨询专业的网站安全公司来达到测试需求,国内推荐Sinesafe,绿盟,启明星辰,深信服等等都是很不错的安全大公司。