CTF流量分析wp

2021湖南.pcapng


过滤多次握手

查看哪些IP建立的连接最多

⽬前⼤多数的连接都是基于TCP的,那么TCP在建⽴连接之前会进⾏三次握⼿

TCP协议位于传输层,作用是提供可靠的字节流服务,为了准确无误地将数据送达目的地,TCP协议采纳三次握手策略。
三次握手原理:

  • 第1次握手:客户端发送一个带有SYN(synchronize)标志的数据包给服务端;
  • 第2次握手:服务端接收成功后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了;
  • 第3次握手:客户端再回传一个带有ACK标志的数据包,表示我知道了,握手结束。其中:SYN标志位数置1,表示建立TCP连接;ACK标志表示验证字段。

过滤所有带SYN标志位

1
tcp.connection.syn

image-20250329192855543

通过这个过滤规则,可以知道哪些IP向哪些端口建立连接最多

上面是192.168.100.88这个向192.168.100.154这个IP建立的连接最多,并且连接的端口都是些易受攻击的端口,由此可以判断是恶意攻击者


找到黑客在网站中下载的私钥文件

可以通过wireshark自带的协议分级功能去找

image-20250329193947075

可以发现,IPV4走的流量比IPV6多,优先看IPV4,展开IPV4后发现http占比最多。由此先推断是走的HTTP协议

image-20250329194514679

协议简介
  1. Hypertext Transfer Protocol (HTTP)

    • MIME类型text/html(HTML文档)、application/json(JSON数据)等,具体取决于传输内容。
    • 说明:HTTP本身不直接关联固定MIME类型,但通过Content-Type头字段指定传输内容的类型,如网页用text/html,图片用image/jpegimage/png
  2. Portable Network Graphics (PNG)

    • MIME类型image/png
    • 说明:PNG是一种无损压缩图像格式,支持透明背景,适合网络传输。
  3. JPEG File Interchange Format (JFIF)

    • MIME类型image/jpeg
    • 说明:JFIF是JPEG的存储格式之一,MIME类型与JPEG共享,用于标识压缩图像文件。
  4. JavaScript Object Notation (JSON)

    • MIME类型application/json
    • 说明:JSON是一种轻量级数据交换格式,广泛用于前后端数据传输和API接口。
  5. HTML Form URL Encoded

    • MIME类型application/x-www-form-urlencoded
    • 说明:用于HTML表单提交的默认编码类型,将键值对编码为URL格式(如key1=value1&key2=value2)。
  6. eXtensible Markup Language (XML)

    • MIME类型application/xmltext/xml
    • 说明:XML是一种可扩展标记语言,用于存储和传输结构化数据,如配置文件或Web服务消息。

总结
MIME类型(如image/pngapplication/json)是服务器通过HTTP头(如Content-Type)告知客户端如何处理数据的标准方式。正确设置MIME类型能确保浏览器或应用程序正确解析内容。

所以我们先过滤出http数据包内包含key关键字的

1
http contains "key"

最后发现明文请求的key文件

image-20250329200044199


找到⿊客通过 SQL 注⼊攻击时的软件名称及软件版本号

在此之前需要先将上面的key密钥进行复制保存到txt文件后面会用的到。

右键追踪TCP流

image-20250329201154100

发现给了一个mars-server.key的密钥,我们选中后右键进行复制保存到txt文件中

image-20250329201309204

题⽬让我们提价sql注⼊时所使⽤的⼯具 ,sql注入其实是走的http协议

SQL注入攻击通常利用HTTPHTTPS协议进行,以下是具体说明:

点击展开

1. HTTP协议

  • 攻击原理:攻击者通过构造恶意的HTTP请求(如修改URL参数、表单字段、Cookie或HTTP头部),将恶意SQL代码注入到Web应用程序的输入中。
  • 示例
    • URL参数注入:在URL中插入恶意代码,如:
      1
      http://example.com/user?id=1' OR '1'='1
    • 表单字段注入:在登录表单的用户名或密码字段中输入:
      1
      ' OR '1'='1' --
    • Cookie注入:篡改Cookie值,注入恶意SQL代码。
  • 风险:HTTP协议本身无加密,攻击者更容易截获和篡改请求内容。

2. HTTPS协议

  • 攻击原理:与HTTP类似,但攻击者需通过HTTPS加密通道注入恶意代码。虽然HTTPS加密了传输数据,但:
    • 如果Web应用程序未对用户输入进行严格的验证和过滤,攻击者仍可通过注入恶意SQL代码绕过安全措施。
  • 示例:通过HTTPS提交的表单中注入:
    1
    '; DROP TABLE users; --
  • 风险:HTTPS仅保证传输过程的安全,无法防御应用程序逻辑漏洞导致的SQL注入。

总结

SQL注入攻击主要利用HTTP/HTTPS协议的漏洞,通过注入恶意SQL代码操纵数据库。防御需结合代码安全、输入验证和加密传输,而非仅依赖协议本身的安全性。

因此我们过滤http协议,通过翻找,发现get传⼊的参数可疑

image-20250329202441594

查看其请求头,在user-agent字段发现了⼯具名称

image-20250329202515365


找⿊客登陆⽹站后台所⽤的账号密码

由于登录功⻚⾯提交数据表单⽤的都是POST请求,所以我们过滤所有POST请求即可,通过检索发现并未向内⽹服务器的登录⻚⾯提交⻚⾯,也没有提交成功等表单和用户名及密码等字样

1
http.request.method == POST

image-20250329203929638

所以猜测是HTTPS,所以前面保存的key密钥起到了关键作用,用于解密HTTPS的数据包。

在wireshark中打开设置-⾸选项,在Protocol中找到SSL或者 TLS,新版本中叫TLS,旧版本中叫SSL

点击 RSA keys list 旁边的 edit ,然后将key⽂件导⼊到⾥⾯

image-20250329204628371

然后重启wireshark,再次打开该流量包

使用该过滤规则,过滤出带有password关键字的,并且登录⻚⾯提交数据使⽤的都是POST⽅法

1
http contains "password" and http.request.method == POST

image-20250329205750492

在追踪流里搜索username字段,发现客户端向服务器提交的POST数据,其中用户名为admin密码为123456,服务器所返回的状态码是302,并且跳转到system_wws/index.php⻚⾯,疑似⽹站后台⾸⻚,此处是登录成功的 。

image-20250329205842563


找到⿊客上传到我们服务器上的⼀句话⽊⻢

上传⼀般都有upload关键字,并且都是使⽤POST的⽅法,因此有了如下过滤规则:

1
http contains "upload" and http.request.method == POST

image-20250329211116507

搜索关键字upload

image-20250329211302160

这里上传的是图片马,正常的图片中包含了php代码,可以看到一句话木马的名称是aa.php


找到⿊容扫描我们服务器开放了哪些端⼝

前⾯我们已经知道攻击者的IP是192.168.100.88,服务器的IP为 192.168.100.154,题⽬说的是服务器所开放的端⼝,我们在前⾯了解完TCP的三次握⼿,要建⽴连接的前提是SYN,如果服务器上被连接的端⼝是开放的,则会返回SYN,ACK

因为是服务器返回SYN,ACK,所以过滤规则为服务器是src(发送方)攻击者是dst(接收方)

,因此我们有了如下过滤规则:

1
ip.src == 192.168.100.154 and ip.dst == 192.168.100.88 and tcp.flags.syn ==1 and tcp.flags.ack ==1

image-20250329211747451

找出⿊客曾经利⽤服务器中最⼤的端⼝提权所保存的⽂件名

目前开放的最大端口是6379 端口,运行的是readis数据库服务,而readis 服务提权存在多种思路,每种思路都需要使用save命令保存配置。因此过滤语句为如下:

于是有了如下过滤规则:

1
tcp.port == 6379 and tcp contains"save"

image-20250329213055873

通过搜索发现image-20250329213218554

# 这⾥在redis服务中执⾏的命令是:
config set dir /root/.ssh # 设置操作的⽬录为
/root/.ssh
config set dbfilename authorized_keys # 在操作⽬录下创建⼀个⽂件名为
authorized_keys
save # 执⾏操作
# 最终就是在/root/.ssh⽬录下创建⼀个秘钥⽂件,⽤于替换原有秘钥⽂件,从⽽实现免密登录