一次对app使用socket通信的渗透思路记录

news2024/11/19 17:30:16

0x1 概述

​ 本篇文章记叙了一次测试的目标为app,且该app采用了socket进行通信时,一个非常便秘的渗透测试思路。

0x2 app分析

​ 首先拿到app,对其使用VPN代理抓包、WIFI代理抓包均未果,于是决定脱壳看看,使用MT管理器查看到目标app为360加固,诶,看到360加固,那不就有戏了吗,直接blackdex就能脱,针不戳。

​ 脱下来直接jadx进行分析为啥抓不到包,由于代码量过多,那么试试搜索一下特征字符串,诸如http、https,但是还是未发现关键点,正当我百思不得其解的时候,突然想到:他不会走的socket代理吧?于是搜索socket字段,最终定位到如下图所示处:

image-20230925160201512

​ 好家伙,我直接好家伙,之前我从未有过socket通信渗透的案例,这不就坐牢了?

0x3 socket概念

​ 这部分为socket概念介绍,懂的师傅可以看下一小节了。

​ 于是在网上查找概念进行学习,这里摘取关键片段与各位师傅共同学习:

Socket又称套接字,应用程序通常通过套接字向网络发出请求或者应答网络请求。Socket的本质还是API,是对TCP/IP的封装

每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。

write()/send() 并不立即向网络中传输数据,而是先将数据写入缓冲区中,再由TCP协议将数据从缓冲区发送到目标机器。一旦将数据写入到缓冲区,函数就可以成功返回,不管它们有没有到达目标机器,也不管它们何时被发送到网络,这些都是TCP协议负责的事情。

read()/recv() 函数也是如此,也从输入缓冲区中读取数据,而不是直接从网络中读取。

​ 通过以上片段的学习,已经了解了一点socket的概念,那么就让GPT来帮助我们巩固一下吧:

image-20230925154215408

好好好,直接保存下来执行看看:
#客户端
import socket

# 创建一个 IPv4 TCP 套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 服务器的 IP 地址和端口
server_host = "127.0.0.1"
server_port = 8156

# 连接到服务器
client_socket.connect((server_host, server_port))

# 发送消息给服务器
message = 'Hello, 服务器!'
client_socket.send(message.encode('utf-8'))

# 接收服务器的回复消息
response = client_socket.recv(1024)
print(f"服务器回复: {response.decode('utf-8')}")

# 关闭客户端套接字
client_socket.close()

#服务端
import socket

# 创建一个 IPv4 TCP 套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定到指定的主机和端口
host = "127.0.0.1"  # 服务器的 IP 地址
port = 8156       # 服务器的端口号
server_socket.bind((host, port))

# 监听连接
server_socket.listen(5)

print(f"服务器正在监听 {host}:{port}...")

while True:
    # 等待客户端连接
    client_socket, client_address = server_socket.accept()
    print(f"连接来自 {client_address}")

    # 接收客户端发送的消息
    data = client_socket.recv(1024)
    if not data:
        break

    print(f"接收到消息: {data.decode('utf-8')}")

    # 发送回复消息给客户端
    response = "Hello, 客户端!"
    client_socket.send(response.encode('utf-8'))

    # 关闭客户端连接
    client_socket.close()

# 关闭服务器套接字
server_socket.close()

​ 首先运行服务端:

image-20230925154454339

​ 接着运行客户端:

image-20230925154525967

​ 好好好,这不就明白了,这里再嘴欠一句,send/recv可以发送和接收,同理write/read也是,这俩用一个就行。而python里调用socket库只能是send/recv。

0x4 frida hook数据

​ 既然找到了socket代码片段,并且已知通信时send或write函数,那么只需找到这两个函数其中一个即可,通过翻找socket代码片段所在的类,发现了如下代码:

image-20230925160304053

​ 嗯?post函数,第三个参数为request函数,并且还有回调函数,难道这里能直接获取到原始报文?这不得hook看看,好好好,直接右键post函数名,复制为frida片段,运行看看:

image-20230925155538293

​ 好家伙,还真是,那么响应包夜只需要hook onReceived函数即可,真是得来全不费工夫。

​ 那么,问题来了,我要怎么抓包测试呢?继续分析发现了一个可疑的类名:com.xxx.xxx.xxx.security.impl,里面存放了des、md5、rsa、sm2、sm3、sm4的代码,这里挑选除md5和sm3以外的其他几个加密进行hook,发现sm4居然被执行了,而且居然像是每次发送的请求,啊这。。。。

image-20230925160124765

image-20230925160043972

​ 那这样看来如果要从wireshark抓取包进行分析,似乎也无解了,并且可以看到writeRandomKey函数每一次的key值都是随机生成的,虽然可以frida固定住key值,但是就算固定住,不也没法抓包改包吗?此时陷入了沉思。

0x5 抓包改包

​ 此处小标题叫抓包改包,所以此时我确实想到了两个抓包改包的方案,但实际发现只能实现其中一个,且贼便秘,真是蓝瘦香菇,若有师傅有更好的方案可以一块交谈。

​ 通过前文的分析来看,此时我想到了两个方案进行抓包改包,分别如下:

方案一

描述:实现一个socket通信脚本,通过找到app的socket通信服务器,将数据手动构造发送过去(因为 数据 frida可以搞出来)

难点:这里我确实尝试去实现了,并且发现存在难点无法实现。首先我确实找到了socket通信的服务器及端口,并且通过上述socket客户端脚本发起了socket通信,但是得到的响应为空,这里推测应该是需要传输SM4密文以及key才能有正常的响应。故而这条方案没能成功实现。

方案二

描述:直接通过frida hook出原始报文和响应报文,hook前面图中post函数以及onReceived函数即可,然后转入burp修改数据包即可。

难点:若想要改包,每次都需要点击对应功能并拦截报文进行修改,实在是麻烦(便秘),且有些并发或者遍历导致的漏洞无法进行测试,以及一些其它类型的漏洞,能测的范围实在有限。

​ 总结:方案二确实可以实现,但是既麻烦(便秘)又很难测出一些有效漏洞,因为其可以改的包只能通过拦截数据包去修改,每一次都得单独触发这个功能才能去改包。

​ 故而看到这里的师傅是否还有其它建议呢?

安利一下个人公众号:恒运安全
欢迎大家关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1039378.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【VsCode】vscode创建文件夹有小图标显示和配置

效果 步骤 刚安装软件后, 开始工作目录下是没有小图标显示的。 如下图操作,安装vscode-icons 插件,重新加载即可 创建文件夹,显示图标如下:

小白的二叉树(C语言实现)

前言: 二叉树属于数据结构的一个重要组成部分,很多小白可能被其复杂的外表所吓退,但我要告诉你的是“世上无难事,只怕有心人”,我将认真的对待这篇博客,我相信只要大家敢于思考,肯定会有所收获…

040:vue项目中 transition 动画实现推拉门效果

第040个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

Embeddig技术与应用 (1) :Embedding技术发展概述及Word2Vec

编者按:嵌入(Embedding)是机器学习中一种将高维稀疏向量转换为低维稠密向量的技术。其通常用于处理自然语言、图像等高维离散数据。 嵌入能够有效地解决维度灾难问题,减少存储和计算成本,同时提高模型的表达能力。我们还可以通过得到的嵌入向…

华为云云耀云服务器L实例评测|在Redis的Docker容器中安装BloomFilter 在Spring中使用Redis插件版的布隆过滤器

前言 最近华为云云耀云服务器L实例上新,也搞了一台来玩,期间遇到各种问题,在解决问题的过程中学到不少和运维相关的知识。 本篇博客介绍如何在Redis的docker容器中安装BloomFilter,并且结合spring的使用方式。 其他相关的华为云…

Vue中开发中Mock和总线了解以及应用

🏅我是默,一个在CSDN分享笔记的博主。📚📚 🌟在这里,我要推荐给大家我的专栏《Vue》。🎯🎯 🚀无论你是编程小白,还是有一定基础的程序员,这个专栏…

[补题记录] Atcoder Beginner Contest 321(E)

URL:https://atcoder.jp/contests/abc321 目录 E Problem/题意 Thought/思路 Code/代码 E Problem/题意 有一颗 N 个节点的完全二叉树,现在给出节点 X,一个整数 K,问举例节点 X 的长度为 K 的点有多少个? Thoug…

25436-2010 热封型茶叶滤纸 阅读笔记

声明 本文是学习GB-T 25436-2010 热封型茶叶滤纸. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了热封型茶叶滤纸的产品分类、技术要求、试验方法、检验规则及标志、包装、运输、 贮存。 本标准适用于热封型包装机包装茶叶、咖…

LLM - Make Causal Mask 构造因果关系掩码

目录 一.引言 二.make_causal_mask 1.完整代码 2.Torch.full 3.torch.view 4.torch.masked_fill_ 5.past_key_values_length 6.Test Main 三.总结 一.引言 Causal Mask 主要用于限定模型的可视范围,防止模型看到未来的数据。在具体应用中,Caus…

中国核动力研究设计院使用 DolphinDB 替换 MySQL 实时监控仪表

随着仪表测点的大幅增多和采样频率的增加,中国核动力研究设计院仪控团队原本基于 MySQL 搭建的旧系统已经无法满足大量数据并发写入、实时查询和聚合计算的需求。他们在研究 DB-Engines 时序数据库榜单时了解到国内排名第一的 DolphinDB。经过测试,发现其…

瞄准核心因素:Boruta特征选择算法助力精准决策

一、引言 特征选择在机器学习和数据挖掘中扮演着重要的角色。通过选择最相关和最有信息量的特征,可以降低维度,减少数据复杂性,并提高模型的预测性能和解释能力。在实际应用中,特征选择有助于识别最具影响力的因素,提供…

【内网穿透】在Ubuntu搭建Web小游戏网站,并将其发布到公网访问

目录 前言 1. 本地环境服务搭建 2. 局域网测试访问 3. 内网穿透 3.1 ubuntu本地安装cpolar 3.2 创建隧道 3.3 测试公网访问 4. 配置固定二级子域名 4.1 保留一个二级子域名 4.2 配置二级子域名 4.3 测试访问公网固定二级子域名 前言 网:我们通常说的是互…

复亚智能落地江苏化工,安防巡逻无人机守牢“安全线”

化工业是国民经济的重要组成部分,但其生产环境和条件充满了挑战。大部分化学反应发生在高温、高压且有毒的环境中,而近70%的原料、中间体和终产品都带有易燃、易爆、有毒、有害以及腐蚀性的特性。在这样的情境下,安全生产不仅仅是一项日常任务…

leetCode 968.监控二叉树(利用状态转移+贪心)

968. 监控二叉树 - 力扣(LeetCode) 给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。 >>解题思路: 重要线索->题目示例中的摄…

AP5126 降压恒流 PIN对PIN替LN2566 LED汽车大灯车灯驱动芯片

产品描述 AP5126 是一款 PWM 工作模式,高效率、外 围简单、内置功率管,适用于 12-80V 输入的高 精度降压 LED 恒流驱动芯片。输出最大功率可达 15W,最大电流 1.2A。 AP5126 可实现全亮/半亮功能切换,通过 MODE 切换:全亮/半…

YZ09: VBA_Excel之读心术

【分享成果,随喜正能量】多要求自己,你会更加独立,少要求别人,你会减少失望,宁愿花时间去修炼 不完美的自己,也不要浪费时间去期待完美的别人!。 我给VBA下的定义:VBA是个人小型自动…

SolidJs节点级响应性

前言 随着组件化、响应式、虚拟DOM等技术思想引领着前端开发的潮流,相关的技术框架大行其道,就以目前主流的Vue、React框架来说,它们都基于组件化、响应式、虚拟DOM等技术思想的实现,但是具有不同开发使用方式以及实现原理&#…

Elasticsearch:与多个 PDF 聊天 | LangChain Python 应用教程(免费 LLMs 和嵌入)

在本博客中,你将学习创建一个 LangChain 应用程序,以使用 ChatGPT API 和 Huggingface 语言模型与多个 PDF 文件聊天。 如上所示,我们在最最左边摄入 PDF 文件,并它们连成一起,并分为不同的 chunks。我们可以通过使用 …

在线商城项目EShop【ListView、adapter】

要求如下: 1、创建在线商城项目EShop; 2、修改布局文件activity_main.xml,使用LineaLayout和ListView创建商品列表UI; 3、创建列表项布局list_item.xml,设计UI用于显示商品图标、名称和价格信息; 4、创…

IT监控制度,IT监控体系如何分层

IT监控系统是指监控和管理it服务管理的软件。它涵盖了监控管理、服务台管理、问题管理和变更管理,旨在帮助组织更有效的运营信息系统,提高运营事故的响应速度。  通过建立集中监控平台,IT监控系统与信息系统的融合可以完成统一的展示和管理…