一 网络流量分析软件
1 wireshark
1.1 wireshark及启动
- undefinedundefinedwireshark:(前称Ethereal)它是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。
- 为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。
wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容,总结,如果是处理HTTP,HTTPS 还是用Fiddler, 其他协议比如TCP,UDP 就用wireshark. - 直接在命令行启动:wireshark,也可在菜单中直接启动。
- 在选择了要监听的网卡后,即可抓取网络的流量包
1.2 wireshark的基础使用
- 默认的情况下,wireshark会抓取所有的流量,为此进行针对性的提取数据包,可以简化我们的工作量。
1.2.1 流量过滤的A方案--使用捕获过滤器
- 在启动页面中,选择绿色图标,选择"管理捕获过滤器"
- 默认软件提供了一些模板,可以选择+自定义规则,规则模式可采用照猫画虎的方式进行填入
- 例如写入一条规则:只采集主机192.168.0.1的80端口的通讯流量。
host 192.168.0.1 and port 80
- 随后启动对应的捕获过滤规则即可。
1.2.2 流量过滤的B方案--使用显示过滤器
- 在工具启动抓包后,选择蓝色的图标,选择“管理显示过滤器”
- 同样可以照猫画虎的建立规则。
###所有过滤方式皆可使用逻辑运算符:and/or
ip.src==192.168.0.250(只显示源地址为192.168.0.250的数据包)
ip.dst==192.168.0.250 (只显示目的地址为192.168.0.250的数据包)
tcp.srcport==80 (只显示tcp的源端口为80端口的数据包)
tcp.dstport==80 (只显示tcp的目的端口为80端口的数据包)
http.request.method=="GET" (只显示http中的get请求)
http.request.uri contains login (只显示url中包含login的请求)
http.response.code ==200 (显示200状态码的返回包)
http contains "admin" (搜索关键字admin)
http.request.method=="POST" && http contains "admin" (显示POST请求,并且包含admin关键字的数据包)
http.response.code ==200 && http contains "admin" (显示200状态码的返回包,并且带有admin关键字的)
- 随后建立好规则后,使用即可。
1.2.3 TCP的三次握手
- 一个完整的tcp三次握手过程,各字段在TCP三次握手中的做用:
SYN:用于创建链接。
ACK:用于肯定收到了请求。
seq:发送本身的数据。
ack:发送接收到的对方的数据。
- 在我们抓到的数据包中,1-4号数据包实际上就是个tcp三次握手及正式传递数据的过程。
- 数据包列表:列表的面板中显示:编号,时间戳,源地址,目标地址,协议,长度,以及数据包信息。
1.2.4 流量包的分析
- 在单个数据包的页面中,
Frame: 数据包整体的一个描述
Ethernet II: 链路层详细信息,主要的是双方的mac地址
Internet Protocol Version 4: 网络层详细信息,主要的是双方的IP地址
Transmission Control Protocol: 传输层的详细信息,主要的是双方的端口号
Hypertext Transfer Protocol: 应用层的详细信息,此处是HTTP协议(不局限于http,tcp与udp传输的数据也会有)
- Transmission Control Protocol中同样可以通过sequence/Ack关注下握手包的状态。
- Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议
1.2.5 使用追踪流的功能
- 我们的一个完整的数据流一般都是由很多个包组成的,所以当我们想查看某条数据包对应的数据流的话。可以选中数据,右键选择追踪流,可以看到有几种流,选中的数据包属于什么流就选择什么流,此处选中的是http数据包。
- 如果数据包内容较多,可使用查找的功能搜索对应的关键字。
1.3 wireshark的实战
1.3.1 通过wireshark提取流量包中的文件
- 假如有一天,我们接到了举报信,派大星是一名间谍,经常给国外情报组织提供高水平的情报。然后咱们就偷偷摸摸的把他们家网线给噶了:)
- 从而做到了监听派大星的上网流量。我们通过这个模拟的案例进行实验。
1.3.1.1制作一个敏感的文件
- 我们在一个文档中,写入一些内容后,压缩成压缩包即可。
1.3.1.2 启动wireshark抓包并上传文件
- 抓取通过dvwa的upload上传压缩包的流量(所抓到的流量为分享的pcap包)
- 还原攻击者的顺序
1.3.1.3 提取文件
- 通过追踪HTTP数据流不难判定数据存在于下图箭头位置。
- 将show data as 调整为原始数据后,通过另存为保存到本地。
- 通过ghex编辑文件(kali中如果没有直接apt-get install ghex即可)
- 找到1F 8B开头的字段,选择出来对应的数据段,复制-->新建文件-->粘贴-->save as (这步找内容比较繁琐)
- 随后即可提取出tar.gz进行查看。
1.3.2 通过wireshark溯源分析
- 在下面的攻击流量中,尝试分析攻击者的操作?(分享在工具包中的attack.pcap)
2 科来技术交流版
- 科来网络分析系统是网络故障分析、数字安全取证、协议分析学习等使用场景的“利器”。它无需复杂的部署工作,当您有网络流量分析的需求时,可直接安装在您的随行电脑中使用,无论是固定节点使用,还是临检需求,都可以灵活、高效的帮助用户解决网络性能与安全方面的实际问题。
科来的特点:
快速查找和排除网络故障;
找到网络瓶颈提升网络性能;
发现和解决各种网络异常危机,提高安全性;
管理资源,统计和记录每个节点的流量与带宽;
规范网络,查看各种应用,服务,主机的连接,监视网络活动;
资产识别与梳理;
- 科来官网:http://www.colasoft.com.cn/ 科来网络分析系统下载地址:http://www.colasoft.com.cn/download/capsa.php
2.1 科来技术交流版的安装
- 由于众所周知的原因,我们这次使用技术交流版,下载好后直接安装即可(windows安装) 。
2.2 使用实时分析功能
- 启动页面选择实时分析即可。个人觉得很有创意的公司在于把IP所在地有个标识。
- 其他的功能可以自由发挥了,我们也不是很擅长:)
3 tcpdump
- tcpdump:tcpdump是一个用于截取网络分组,并输出分组内容的工具,tcpdump 支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。与它功能类似的工具有 wireshark ,不同的是,wireshark 有图形化界面,而 tcpdump 则只有命令行。
tcpdump参数:
option 可选参数:
-n:不把ip转化成域名,直接显示 ip
-nn:不把协议和端口号转化成名字
-N:不打印出host 的域名部分
-w :后接一个以 .pcap 后缀命令的文件名,保存的文件可以用wireshark打开
-r :从文件中读取数据
-i:指定要过滤的网卡接口
-Q:选择是入方向还是出方向的数据包,可选项有:in, out, inout
-A:以ASCII码方式显示每一个数据包(不显示链路层头部信息). 在抓取包含网页数据的数据包时, 可方便查看数据
-s : tcpdump 默认只会截取前 96 字节的内容,要想截取所有的报文内容,可以使用 -s number, number 就是你要截取的报文字节数,如果是 0 的话,表示截取报文全部内容。
tcpdump参数:
option 可选参数:
-n:不把ip转化成域名,直接显示 ip
-nn:不把协议和端口号转化成名字
-N:不打印出host 的域名部分
-w :后接一个以 .pcap 后缀命令的文件名,保存的文件可以用wireshark打开
-r :从文件中读取数据
-i:指定要过滤的网卡接口
-Q:选择是入方向还是出方向的数据包,可选项有:in, out, inout
-A:以ASCII码方式显示每一个数据包(不显示链路层头部信息). 在抓取包含网页数据的数据包时, 可方便查看数据
-s : tcpdump 默认只会截取前 96 字节的内容,要想截取所有的报文内容,可以使用 -s number, number 就是你要截取的报文字节数,如果是 0 的话,表示截取报文全部内容。
- 默认直接启动tcpdump:
第一段:时间
第二段:网络协议 IP
第三段:发送方的ip地址(主机名)+端口号,其中farmsec.lan是主机名,而59482是端口号
第四段:箭头 >, 表示数据流向
第五段:接收方的ip地址+端口号(协议),其中 162.125.2.5是 ip,而https是协议
第六段:冒号
第七段:数据包内容,包括Flags 标识符,seq 号,ack 号,win 窗口,数据长度 length,其中 [P.] 表示 PUSH 标志位为 1
- 使用 tcpdump 抓包后,会遇到的 TCP 报文 Flags,有以下几种:
[S] : SYN(开始连接)
[P] : PSH(推送数据)
[F] : FIN (结束连接)
[R] : RST(重置连接)
[.] : 没有 Flag,由于除了 SYN 包外所有的数据包都有ACK,所以一般这个标志也可表示 ACK
- 常用useage:
tcpdump host 192.168.0.1 ###基于IP地址过滤:host
tcpdump -i wlan0 src 192.168.0.1 ###根据源ip进行过滤
tcpdump -i wlan0 dst 192.168.0.1 ###根据目标ip进行过滤
tcpdump -i wlan0 src 192.168.199.206 and dst 192.168.199.152 ###根据源ip与目标ip进行过滤
tcpdump net 192.168.10.0/24 ###基于网段进行过滤:net
tcpdump src net 192.168 ###根据源网段进行过滤
tcpdump dst net 192.168 ###根据目标网段进行过滤
tcpdump port 80 ###基于端口进行过滤:port
tcpdump src port 80 ###根据源端口进行过滤
tcpdump dst port 80 ###根据目标端口进行过滤
tcpdump port 80 or port 8088 ###同时指定两个端口
tcpdump port 80 or 8088 ###也可以简写成这样
tcpdump portrange 8000-8080 ###指定一个端口段
tcpdump src portrange 8000-8080 ###指定一个源端口段
tcpdump dst portrange 8000-8080 ######指定一个目的端口段
tcpdump tcp ###基于协议进行过滤,常见的网络协议有:tcp, udp, icmp, http,ip,ipv6 等
and:所有的条件都需要满足,也可以表示为 &&
or:只要有一个条件满足就可以,也可以表示为 ||
not:取反,也可以使用 !
tcpdump src 192.168.199.152 and dst port 3389
当你在使用多个过滤器进行组合时,有可能需要用到括号,而括号在 shell 中是特殊符号,因为你需要使用引号将其包含。比如说在溯源过程中,我发现攻击ip为192.168.199.152,那么我想知道它现在有没有对22以及3389这两个端口进行连接,则可以使用以下命令:
tcpdump 'src 192.168.199.152 and (dst port 3389 or 22)'
提取 HTTP POST 请求中的密码
从 HTTP POST 请求中提取密码和主机名:
-s(为截取前多少字节的内容,如果是0的话则是全部)
-A(以ASCII码显示每一个数据包不显示链路层的头部信息)
-l (基于行的输出)
tcpdump -s 0 -A -n -l | egrep -i "POST /|pwd=|passwd=|password=|Host:"
抓取多协议的用户名与密码
tcpdump port http or port ftp or port smtp or port imap or port pop3 or port telnet -l -A | egrep -i -B5 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user '
提取 HTTP 请求的 URL
提取 HTTP 请求的主机名和路径:
tcpdump -s 0 -v -n -l | egrep -i "POST /|GET /|Host:"
找出一段时间内发包最多的 IP,或者从一堆报文中找出发包最多的 IP,可以使用下面的命令:
-t (在每行的输出中不输出时间)
-c(为抓取多少个包就退出) cut(以 . 为分隔符,打印出每行的前四列,取ip)
tcpdump -nnn -t -c 200 | cut -f 1,2,3,4 -d '.' | sort | uniq -c | sort -nr | head -n 20
抓取 DNS 请求和响应
DNS 的默认端口是 53,因此可以通过端口进行过滤
tcpdump -i any -s0 port 53
使用tcpdump -w生成pcap格式的文件。
打开wireshark,点击文件>open>选择pcap的文件
4 ngrep
- ngrep:ngrep工具是grep命令的网络版,ngrep用于抓包,并可以通过正则表达式,过滤、获取指定样式的数据包。能识别TCP、UDP和ICMP协议,理解bpf的过滤机制。可以用来分析、定位服务中的问题。
因为如果包含多个服务的大型服务出现问题,需要逐步分析定位问题到具体的服务。使用ngrep抓包可以确定数据包是否已经到了某个服务模块,从而定位是哪个部分的问题。 - 使用案例:抓取本地wlan0网口与192.168.0.250的所有通信信息,并且以行来打印出来
ngrep -d wlan0 -W byline host 192.168.0.250 ###抓取本地wlan0网口与192.168.0.250的所有通信信息,并且以行来打印出来
ngrep -W byline host 192.168.0.250 and port 80 ###获取本机与192.168.0.250的通信端口为80的信息
ngrep -q -W byline "(GET|POST) .*" ###抓取所有包含有GET或POST请求数据包
ngrep -q -W byline "login" host 192.168.0.250 and port 80 ###抓取与192.168.0.250通信的80端口并且数据包中包含login的的关键字
ngrep -W byline host 192.168.0.250 or host 192.168.1.250 and port 80 ###抓本机与192.168.0.250和192.168.1.250的通信,并且端口为80
5 tcpreplay
- Tcpreplay是一套免费的开源实用程序集合,用于编辑和重放以前捕获的网络数据流量。最初的目标是重放恶意流量到入侵检测预防系统。
- 现在已经有很多用途,例如重放报文到Web服务器等。
- tcprewrite – 修改pcap文件,例如修改报文的二层或三层消息头。
- tcpreplay – 以捕获报文的速度来重放pcap文件,并支持以任意的速度来重放pcap文件。
tcpreplay -i eth0 dvwa.pcap
ngrep -W byline -d eth0 host 192.168.0.104
tcprewrite --infile=dvwa.pcap --outfile=dvwa_1.pcap --dstipmap=0.0.0.0/0:192.168.0.104 --enet-dmac=72:d3:35:88:58:e7
tcprewrite --infile=dvwa_1.pcap --outfile=dvwa_2.pcap -C
tcpreplay -i eth0 dvwa_3.pcap
二 有点刑的工具
2.1 Siege
- Siege是Linux下的一个web系统的压力测试工具,支持多链接,支持get和post请求,可以对web系统进行多并发下持续请求的压力测试。
Siege命令常用参数
-c 200 指定并发数200
-r 5 指定测试的次数5
-f urls.txt 制定url的文件
-i internet系统,随机发送url
-b 请求无需等待 delay=0
-t 5 持续测试5分钟
-r和-t一般不同时使用
1000个并发对http://192.168.199.210发送请求100次
siege -c 1000 -r 100 http://192.168.199.210
# 在urls.txt中列出所有的网址
siege -c 200 -r 100 -f urls.txt
# 随机选取urls.txt中列出所有的网址
siege -c 200 -r 100 -f urls.txt -i
# delay=0,更准确的压力测试,而不是功能测试
siege -c 200 -r 100 -f urls.txt -i -b
# 指定http请求头 文档类型
siege -H "Content-Type:application/json" -c 200 -r 100 -f urls.txt -i -b
- Siege输出结果说明:
Siege输出结果说明
Transactions: 总共测试次数
Availability: 成功次数百分比
Elapsed time: 总共耗时多少秒
Data transferred: 总共数据传输
Response time: 等到响应耗时
Transaction rate: 平均每秒处理请求数
Throughput: 吞吐率
Concurrency: 最高并发
Successful transactions: 成功的请求数
Failed transactions: 失败的请求数
2.2 t50
- T50可以用于在多种类型的网络基础架构上执行“压力测试”(2.45版本),使用多种协议,可以修改请求的数据包,扩展测试范围(5.3版本),覆盖常 用的协议(ICMP、TCP和UDP),基础架构协议(GRE、IPSec和RSVP),一些路由协议(RIP、EIGRP和OSPF)。
t50 192.168.0.140 --flood
- 可观察对面主机的CPU、内存、网卡的波动。
三 口令破解工具
3.1 hydra
- hydra是著名组织thc的一款开源的暴力破解密码工具,功能非常强大
- kali下是默认安装的,几乎支持所有协议的在线破解。
Options:
-R restore a previous aborted/crashed session
-I ignore an existing restore file (don't wait 10 seconds)
-S perform an SSL connect
-s PORT if the service is on a different default port, define it here
-l LOGIN or -L FILE login with LOGIN name, or load several logins from FILE
-p PASS or -P FILE try password PASS, or load several passwords from FILE
-x MIN:MAX:CHARSET password bruteforce generation, type "-x -h" to get help
-y disable use of symbols in bruteforce, see above
-r use a non-random shuffling method for option -x
-e nsr try "n" null password, "s" login as pass and/or "r" reversed login
-u loop around users, not passwords (effective! implied with -x)
-C FILE colon separated "login:pass" format, instead of -L/-P options
-M FILE list of servers to attack, one entry per line, ':' to specify port
-o FILE write found login/password pairs to FILE instead of stdout
-b FORMAT specify the format for the -o FILE: text(default), json, jsonv1
-f / -F exit when a login/pass pair is found (-M: -f per host, -F global)
-t TASKS run TASKS number of connects in parallel per target (default: 16)
-T TASKS run TASKS connects in parallel overall (for -M, default: 64)
-w / -W TIME wait time for a response (32) / between connects per thread (0)
-c TIME wait time per login attempt over all threads (enforces -t 1)
-4 / -6 use IPv4 (default) / IPv6 addresses (put always in [] also in -M)
-v / -V / -d verbose mode / show login+pass for each attempt / debug mode
-O use old SSL v2 and v3
-K do not redo failed attempts (good for -M mass scanning)
-q do not print messages about connection errors
-U service module usage details
-m OPT options specific for a module, see -U output for information
-h more command line options (COMPLETE HELP)
server the target: DNS, IP or 192.168.0.0/24 (this OR the -M option)
service the service to crack (see below for supported protocols)
OPT some service modules support additional input (-U for module help)
Supported services: adam6500 asterisk cisco cisco-enable cvs firebird ftp[s] http[s]-{head|get|post} http[s]-{get|post}-form http-proxy http-proxy-urlenum icq imap[s] irc ldap2[s] ldap3[-{cram|digest}md5][s] memcached mongodb mssql mysql nntp oracle-listener oracle-sid pcanywhere pcnfs pop3[s] postgres radmin2 rdp redis rexec rlogin rpcap rsh rtsp s7-300 sip smb smtp[s] smtp-enum snmp socks5 ssh sshkey svn teamspeak telnet[s] vmauthd vnc xmpp
- 常用useage:
hydra -l user -P passlist.txt ftp://192.168.0.1
hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
hydra -L logins.txt -P pws.txt -M targets.txt ssh
hydra -P pws.txt redis://IP
3.2 弱口令爆破工具
- 一款windows下的口令破解工具,用法简单不再赘述。
3.3 john
- John是一个破解系统密码的工具。johnny为其图形化版本。
- 鼠标点着用吧就,毕竟拿到shadow的情形本身就比较鸡肋。
3.4 hashcat
- 支持破解windows密码、linux密码、office密码、Wi-Fi密码、mysql密码、sql server密码、以及md5、sha1、sha256等哈希散列
- 通过GPU的技术速度更快,由于环境匹配问题,仅测试下Linux shadow的演示。更多细节可以扩展资料阅读即可。
hashcat -a 0 -m 1800 pass top500.txt