201-B8-网络流量相关
2023年 08月 03 日

BIGFISH

一 网络流量分析软件

1 wireshark

1.1 wireshark及启动

  • undefinedundefinedwireshark:(前称Ethereal)它是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。
  • 为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。
    wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容,总结,如果是处理HTTP,HTTPS 还是用Fiddler, 其他协议比如TCP,UDP 就用wireshark.
  • 直接在命令行启动:wireshark,也可在菜单中直接启动。

img

  • 在选择了要监听的网卡后,即可抓取网络的流量包
    img

1.2 wireshark的基础使用

  • 默认的情况下,wireshark会抓取所有的流量,为此进行针对性的提取数据包,可以简化我们的工作量。
1.2.1 流量过滤的A方案--使用捕获过滤器
  • 在启动页面中,选择绿色图标,选择"管理捕获过滤器"

img

  • 默认软件提供了一些模板,可以选择+自定义规则,规则模式可采用照猫画虎的方式进行填入
    img
  • 例如写入一条规则:只采集主机192.168.0.1的80端口的通讯流量。
host 192.168.0.1 and port 80

img

  • 随后启动对应的捕获过滤规则即可。
    img
    img
1.2.2 流量过滤的B方案--使用显示过滤器
  • 在工具启动抓包后,选择蓝色的图标,选择“管理显示过滤器”

img

img

  • 同样可以照猫画虎的建立规则。
###所有过滤方式皆可使用逻辑运算符: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关键字的)
  • 随后建立好规则后,使用即可。

img

1.2.3 TCP的三次握手
  • 一个完整的tcp三次握手过程,各字段在TCP三次握手中的做用:
SYN:用于创建链接。
ACK:用于肯定收到了请求。
seq:发送本身的数据。
ack:发送接收到的对方的数据。
  • 在我们抓到的数据包中,1-4号数据包实际上就是个tcp三次握手及正式传递数据的过程。
    img
  • 数据包列表:列表的面板中显示:编号,时间戳,源地址,目标地址,协议,长度,以及数据包信息。

img

1.2.4 流量包的分析
  • 在单个数据包的页面中,

img

Frame:   数据包整体的一个描述
Ethernet II: 链路层详细信息,主要的是双方的mac地址
Internet Protocol Version 4: 网络层详细信息,主要的是双方的IP地址
Transmission Control Protocol:  传输层的详细信息,主要的是双方的端口号
Hypertext Transfer Protocol:  应用层的详细信息,此处是HTTP协议(不局限于http,tcp与udp传输的数据也会有)
  • Transmission Control Protocol中同样可以通过sequence/Ack关注下握手包的状态。
    img
  • Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议 img
1.2.5 使用追踪流的功能
  • 我们的一个完整的数据流一般都是由很多个包组成的,所以当我们想查看某条数据包对应的数据流的话。可以选中数据,右键选择追踪流,可以看到有几种流,选中的数据包属于什么流就选择什么流,此处选中的是http数据包。
    img

img

  • 如果数据包内容较多,可使用查找的功能搜索对应的关键字。

1.3 wireshark的实战

1.3.1 通过wireshark提取流量包中的文件
  • 假如有一天,我们接到了举报信,派大星是一名间谍,经常给国外情报组织提供高水平的情报。然后咱们就偷偷摸摸的把他们家网线给噶了:)
  • 从而做到了监听派大星的上网流量。我们通过这个模拟的案例进行实验。
1.3.1.1制作一个敏感的文件
  • 我们在一个文档中,写入一些内容后,压缩成压缩包即可。

img

1.3.1.2 启动wireshark抓包并上传文件
  • 抓取通过dvwa的upload上传压缩包的流量(所抓到的流量为分享的pcap包)
  • 还原攻击者的顺序

img

1.3.1.3 提取文件
  • 通过追踪HTTP数据流不难判定数据存在于下图箭头位置。

img

  • 将show data as 调整为原始数据后,通过另存为保存到本地。

img

  • 通过ghex编辑文件(kali中如果没有直接apt-get install ghex即可)

img

  • 找到1F 8B开头的字段,选择出来对应的数据段,复制-->新建文件-->粘贴-->save as (这步找内容比较繁琐)

img

img
img

  • 随后即可提取出tar.gz进行查看。
    img
1.3.2 通过wireshark溯源分析
  • 在下面的攻击流量中,尝试分析攻击者的操作?(分享在工具包中的attack.pcap)

img

img

img

img

img

2 科来技术交流版

  • 科来网络分析系统是网络故障分析、数字安全取证、协议分析学习等使用场景的“利器”。它无需复杂的部署工作,当您有网络流量分析的需求时,可直接安装在您的随行电脑中使用,无论是固定节点使用,还是临检需求,都可以灵活、高效的帮助用户解决网络性能与安全方面的实际问题。
科来的特点:
快速查找和排除网络故障;
找到网络瓶颈提升网络性能;
发现和解决各种网络异常危机,提高安全性;
管理资源,统计和记录每个节点的流量与带宽;
规范网络,查看各种应用,服务,主机的连接,监视网络活动;
资产识别与梳理;

2.1 科来技术交流版的安装

  • 由于众所周知的原因,我们这次使用技术交流版,下载好后直接安装即可(windows安装) 。
    img

img

2.2 使用实时分析功能

  • 启动页面选择实时分析即可。个人觉得很有创意的公司在于把IP所在地有个标识。
    img
  • 其他的功能可以自由发挥了,我们也不是很擅长:)

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:

img

第一段:时间

第二段:网络协议 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: 失败的请求数

img

2.2 t50

  • T50可以用于在多种类型的网络基础架构上执行“压力测试”(2.45版本),使用多种协议,可以修改请求的数据包,扩展测试范围(5.3版本),覆盖常 用的协议(ICMP、TCP和UDP),基础架构协议(GRE、IPSec和RSVP),一些路由协议(RIP、EIGRP和OSPF)。
t50 192.168.0.140 --flood   

img

  • 可观察对面主机的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下的口令破解工具,用法简单不再赘述。
    img

3.3 john

  • John是一个破解系统密码的工具。johnny为其图形化版本。
  • 鼠标点着用吧就,毕竟拿到shadow的情形本身就比较鸡肋。
    img

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

201-B8-网络流量相关

一 网络流量分析软件

1 wireshark

1.1 wireshark及启动

  • undefinedundefinedwireshark:(前称Ethereal)它是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。
  • 为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。
    wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容,总结,如果是处理HTTP,HTTPS 还是用Fiddler, 其他协议比如TCP,UDP 就用wireshark.
  • 直接在命令行启动:wireshark,也可在菜单中直接启动。

img

  • 在选择了要监听的网卡后,即可抓取网络的流量包
    img

1.2 wireshark的基础使用

  • 默认的情况下,wireshark会抓取所有的流量,为此进行针对性的提取数据包,可以简化我们的工作量。
1.2.1 流量过滤的A方案--使用捕获过滤器
  • 在启动页面中,选择绿色图标,选择"管理捕获过滤器"

img

  • 默认软件提供了一些模板,可以选择+自定义规则,规则模式可采用照猫画虎的方式进行填入
    img
  • 例如写入一条规则:只采集主机192.168.0.1的80端口的通讯流量。
host 192.168.0.1 and port 80

img

  • 随后启动对应的捕获过滤规则即可。
    img
    img
1.2.2 流量过滤的B方案--使用显示过滤器
  • 在工具启动抓包后,选择蓝色的图标,选择“管理显示过滤器”

img

img

  • 同样可以照猫画虎的建立规则。
###所有过滤方式皆可使用逻辑运算符: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关键字的)
  • 随后建立好规则后,使用即可。

img

1.2.3 TCP的三次握手
  • 一个完整的tcp三次握手过程,各字段在TCP三次握手中的做用:
SYN:用于创建链接。
ACK:用于肯定收到了请求。
seq:发送本身的数据。
ack:发送接收到的对方的数据。
  • 在我们抓到的数据包中,1-4号数据包实际上就是个tcp三次握手及正式传递数据的过程。
    img
  • 数据包列表:列表的面板中显示:编号,时间戳,源地址,目标地址,协议,长度,以及数据包信息。

img

1.2.4 流量包的分析
  • 在单个数据包的页面中,

img

Frame:   数据包整体的一个描述
Ethernet II: 链路层详细信息,主要的是双方的mac地址
Internet Protocol Version 4: 网络层详细信息,主要的是双方的IP地址
Transmission Control Protocol:  传输层的详细信息,主要的是双方的端口号
Hypertext Transfer Protocol:  应用层的详细信息,此处是HTTP协议(不局限于http,tcp与udp传输的数据也会有)
  • Transmission Control Protocol中同样可以通过sequence/Ack关注下握手包的状态。
    img
  • Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议 img
1.2.5 使用追踪流的功能
  • 我们的一个完整的数据流一般都是由很多个包组成的,所以当我们想查看某条数据包对应的数据流的话。可以选中数据,右键选择追踪流,可以看到有几种流,选中的数据包属于什么流就选择什么流,此处选中的是http数据包。
    img

img

  • 如果数据包内容较多,可使用查找的功能搜索对应的关键字。

1.3 wireshark的实战

1.3.1 通过wireshark提取流量包中的文件
  • 假如有一天,我们接到了举报信,派大星是一名间谍,经常给国外情报组织提供高水平的情报。然后咱们就偷偷摸摸的把他们家网线给噶了:)
  • 从而做到了监听派大星的上网流量。我们通过这个模拟的案例进行实验。
1.3.1.1制作一个敏感的文件
  • 我们在一个文档中,写入一些内容后,压缩成压缩包即可。

img

1.3.1.2 启动wireshark抓包并上传文件
  • 抓取通过dvwa的upload上传压缩包的流量(所抓到的流量为分享的pcap包)
  • 还原攻击者的顺序

img

1.3.1.3 提取文件
  • 通过追踪HTTP数据流不难判定数据存在于下图箭头位置。

img

  • 将show data as 调整为原始数据后,通过另存为保存到本地。

img

  • 通过ghex编辑文件(kali中如果没有直接apt-get install ghex即可)

img

  • 找到1F 8B开头的字段,选择出来对应的数据段,复制-->新建文件-->粘贴-->save as (这步找内容比较繁琐)

img

img
img

  • 随后即可提取出tar.gz进行查看。
    img
1.3.2 通过wireshark溯源分析
  • 在下面的攻击流量中,尝试分析攻击者的操作?(分享在工具包中的attack.pcap)

img

img

img

img

img

2 科来技术交流版

  • 科来网络分析系统是网络故障分析、数字安全取证、协议分析学习等使用场景的“利器”。它无需复杂的部署工作,当您有网络流量分析的需求时,可直接安装在您的随行电脑中使用,无论是固定节点使用,还是临检需求,都可以灵活、高效的帮助用户解决网络性能与安全方面的实际问题。
科来的特点:
快速查找和排除网络故障;
找到网络瓶颈提升网络性能;
发现和解决各种网络异常危机,提高安全性;
管理资源,统计和记录每个节点的流量与带宽;
规范网络,查看各种应用,服务,主机的连接,监视网络活动;
资产识别与梳理;

2.1 科来技术交流版的安装

  • 由于众所周知的原因,我们这次使用技术交流版,下载好后直接安装即可(windows安装) 。
    img

img

2.2 使用实时分析功能

  • 启动页面选择实时分析即可。个人觉得很有创意的公司在于把IP所在地有个标识。
    img
  • 其他的功能可以自由发挥了,我们也不是很擅长:)

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:

img

第一段:时间

第二段:网络协议 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: 失败的请求数

img

2.2 t50

  • T50可以用于在多种类型的网络基础架构上执行“压力测试”(2.45版本),使用多种协议,可以修改请求的数据包,扩展测试范围(5.3版本),覆盖常 用的协议(ICMP、TCP和UDP),基础架构协议(GRE、IPSec和RSVP),一些路由协议(RIP、EIGRP和OSPF)。
t50 192.168.0.140 --flood   

img

  • 可观察对面主机的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下的口令破解工具,用法简单不再赘述。
    img

3.3 john

  • John是一个破解系统密码的工具。johnny为其图形化版本。
  • 鼠标点着用吧就,毕竟拿到shadow的情形本身就比较鸡肋。
    img

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

赞 (0)

猜您想看

评论区(暂无评论)

这里空空如也,快来评论吧~

我要评论