M2kar’s Security World

欢迎来到M2kar的安全世界博客!

  • 本博客用于记录系统安全研究的论文笔记,安全技术思考,欢迎和我留言讨论。

[技术分享]套娃之arm架构下的MacBook通过parallels+rosetta安装Linux amd64版本的IDA Pro

前言 苹果公司在MacBook这种生产力平台使用无疑是个伟大且大胆的创新,经过几年的软件生态环境的改善,各种常用工具基本都能在mac下运行。但仍有些闭源发布的软件仍需要在amd64架构下的Linux环境中才能运行,比如本文中的IDA Pro 7.6版,因此整理一下踩坑记录,可供相关需求的同学参考。 划重点:arm环境下运行amd64程序;ldd跨架构运行 环境和工具 MacBook with M3 chip parallels Desktop 19 IDA Pro 8.3 for Linux 安装包 支持amd64的Linux环境 parallels是Mac生态下非常好用的虚拟机软件,但之前的版本仅支持运行arm架构的虚拟机,不支持amd64的程序。在parallels的v19版本之后,基于苹果官方提供的支持, parallels推出了在arm虚拟机中运行amd64程序的能力,并提供了一套配置好了的ubuntu 22.04虚拟机镜像。 因此,我们只需要点击创建虚拟机,下载Ubuntu with x86_emulation,即可获得amd64的模拟运行环境。如下图。 安装IDA pro并解决各种依赖缺失 打开安装好的虚拟机,把安装包拷贝进来,在终端中运行。 sudo idapronl_xxx.run 但直接报错: rosetta error: failed to open elf at /lib64/ld-linux-x86-64.so.2 这是因为parallel提供的虚拟机仅安装了基础了amd64的组件,仍有大量的组件缺失。比如在这里,是缺失了binutils组件。 因此作者安装了amd64架构下的binutils,注意使用:amd64选择安装的目标架构 sudo apt-get update sudo apt-get install binutils:amd64 然后,安装程序顺利进行,作者将idapro安装在/opt/idapro-8.3目录下。 尝试运行ida64,果然又提示各种库文件缺失。 比如以下报错提示: /opt/idapro-8.3/ida64: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory 表示缺失了libGL.so.1动态链接库,谷歌搜索后发现需要安装libgl1-mesa-glx库,则运行命令sudo apt install libgl1-mesa-glx:amd64安装amd64架构下的libgl1-mesa-glx库。...

三月 25, 2024 · 2 分钟 · M2kar

[技术分享] 工控物联网中非对称加密协议分析

IoT/ICS领域涉及非对称加密的网络协议分析: TLS/SSL协议 TLS/SSL协议。最常见的HTTP/Modbus/MQTT/FTPS/XMPP/AMQP/OPC UA/都可在TLS协议基础上实现安全传输,很多私有协议(如西门子S7comm-Plus)也是在TLS或者HTTPS上层再做了定制。 TLS协议涉及的私钥有两种。一种是用于证书的私钥,遵循X.509格式,用于解密客户端发来的对称秘钥,在设备中存储。申请下来的证书中包含公钥、受信任的设备标识和上级CA机构,通过证书链验证本证书的可信性。证书在建立连接时发给客户端,用于表示设备的可信性。一种是会话私钥,该私钥每次会话临时生成,且不在网络上传输,而是通过DH类秘钥交换协议和对方生成同一个共享加密秘钥,用于后续的对称加密。 证书的秘钥会在服务器端存储。1)有的厂商(比如群晖)会要求用户自行上传证书和秘钥。2)有的是初始化的时候需要联网重新申请证书和秘钥的。3)有的是出厂即预置了相同证书和秘钥。在已知私钥的情况下,破解流量是很容易的。有些情况下,客户端也需要证书验证,这时候客户端也会有对应的证书私钥。 DTLS协议 DTLS协议。和TLS协议类似,但基于UDP实现。CoAP协议是在DTLS协议基础上实现的加密传输。 SSH协议 SSH协议。SSH协议支持口令和非对称密码验证。非对称密码验证是将公钥存在服务器中,私钥存储在客户端中。IoT设备一般作为服务器端,很少作为客户端,因此也不存储私钥。 IPSec协议 IPSec协议。IP层的安全协议,一般用于VPN连接,配置过程较为复杂。同样基于X.509证书,认证过程要求双方均提供证书。相应的,双方均存储自己的私钥。 其他私有协议 其他私有协议。厂商在TCP/HTTP等协议基础上自行实现的全流量加密或部分加密的协议。 欢迎评论以及发邮件和作者交流心得。 版权声明:本文为 m2kar((https://m2kar.cn)) 的原创文章,遵循CC 4.0 BY-SA版权协议,转载请发邮件征求作者同意,并附上原文出处链接及本声明。 合规声明: 本文仅限于技术交流,请读者遵守当地法律,如造成侵权、违法、犯罪行为,与本文无关。如本文侵犯到您的权利,请发邮件告知,本站将会做出适当处理。 作者: m2kar 邮箱: m2kar.cn<at>gmail.com 主页: m2kar.cn Github: github.com/m2kar CSDN: M2kar的专栏 欢迎在ISSUE参与本博客讨论: m2kar/m2kar.github.io#25

八月 21, 2023 · 1 分钟 · M2kar

[IoT安全]CVE-2018-5767分析和复现

[IoT安全]CVE-2018-5767分析和复现 0x00 摘要 0x01 固件介绍 固件名称: US_AC15V1.0BR_V15.03.1.16_multi_TD01.rar 该固件用于腾达AC15V1.0版本的WiFi路由器产品。AC15V1.0是该厂商推出的中高端双频AC系列智能WiFi路由器。该产品支持802.11ac标准,采用Broadcom四核处理器,配备4个高增益内置天线,可提供稳定的WiFi信号。固件版本为V15.03.1.16,支持多语言版本,发布时间为2015年。根据固件名称推测该设备主要用于美国市场。 固件下载地址:https://us.softpedia-secure-download.com/dl/50b0d70af21488030c14cb2bd30e63b3/63008144/300482999/drivers/router/US_AC15V1.0BR_V15.03.1.16_multi_TD01.rar 0x02 环境搭建 最近在用manjaro系统,先踩踩环境的坑。 软件: binwalk ghidra FirmAE binwalk安装踩坑 Manjaro可通过yay -S binwalk安装binwalk。作者安装后缺失sasquatch,通过额外安装sasquatch-git包解决。 FirmAE 在Manjaro上配置有些问题,所以这里使用Docker的方式安装。 (ps: Manjaro确实好用,但大家都在用kali/ubuntu,所以生态上各种小问题) 使用docker配置FirmAE的步骤可参考( https://github.com/pr0v3rbs/FirmAE/tree/master#docker) 针对安装中遇到的各种国内网络无法访问的问题,作者用了用了一台已root的安卓手机作为透明代理,可以解决绝大多数网络问题。具体是使用了VPN Hotspot这个软件,可参考这篇文章( https://vkuajing.net/vpn-hotspot-wifi/) 0x03 解包 直接调用binwalk解包,常规操作。 $ binwalk -Me fw.bin $ ls _fw.bin.extracted/squashfs-root bin etc home lib proc sbin tmp var webroot_ro dev etc_ro init mnt root sys usr webroot 0x04 漏洞原理 0x05 模拟启动 0x06 PoC验证 参考 IoT 安全之 CVE-2018-5767 分析 : https://paper.seebug.org/2065/ 欢迎评论以及发邮件和作者交流心得。 版权声明:本文为 m2kar((https://m2kar....

八月 15, 2023 · 1 分钟 · M2kar

[实验复现] How Machine Learning Is Solving the Binary Function Similarity Problem

0x0 论文信息 标题: How Machine Learning Is Solving the Binary Function Similarity Problem 作者: Andrea Marcelli, Mariano Graziano, Xabier Ugarte-Pedrero, and Yanick Fratantonio, Cisco Systems, Inc.; Mohamad Mansouri and Davide Balzarotti, EURECOM 关键字: 二进制安全 来源: SEC'22 链接: https://www.usenix.org/conference/usenixsecurity22/presentation/marcelli 实验代码: https://github.com/Cisco-Talos/binary_function_similarity 0x0 复现环境 Window Ubuntu18.04(in WSL) 由于环境依赖问题,本人复现时会在Windows和WSL之间切换,涉及到IDA Pro的部分使用Windows,其他部分使用WSL IDA Pro 7.3 For Windows capstone 3.0.5 Python 3.8.16 Python 2.7.13 0x01 数据获取 训练所需的数据作者均整理到了Google云盘,并可通过gdrive_download.py脚本下载。 python gdrive_download.py --binaries --features --results 旧版本的代码中的gdown版本不兼容,需要安装gdown==4.6.4,最新版本已解决此问题 0x02 数据集处理 数据集处理的步骤包括:...

三月 19, 2023 · 2 分钟 · M2kar

[论文笔记] How Machine Learning Is Solving the Binary Function Similarity Problem(机器学习如何解决二进制函数相似性问题)

标题: How Machine Learning Is Solving the Binary Function Similarity Problem 作者: Andrea Marcelli, Mariano Graziano, Xabier Ugarte-Pedrero, and Yanick Fratantonio, Cisco Systems, Inc.; Mohamad Mansouri and Davide Balzarotti, EURECOM 关键字: 二进制安全 来源: SEC'22 链接: https://www.usenix.org/conference/usenixsecurity22/presentation/marcelli 本文是关于二进制函数相似性问题的Measurement研究,这是一个在系统安全领域非常重要和具有挑战性的问题。作者对现有的研究进行了系统化的分析,并重新实现了一些代表性的方法,然后在一个新的数据集上进行了公平和有意义的比较。他们发现当前的研究存在一些主要的挑战,例如可重复性、评估结果的不透明性和研究方向的不清晰。他们希望通过发布他们的整个模块化框架和数据集来激励未来在这个研究领域的工作。 Measuring Function Similarity 函数相似性对比技术的分类。 相似性对比技术 首先介绍了两种测量函数相似度的技术:直接对比和间接对比技术。直接对比是指给定一对函数的特征,用机器学习模型输出一个相似度分数。间接对比是指将输入特征映射到一个"压缩"的低维空间,然后用简单的距离度量计算相似度。这两种技术都需要实现索引策略来提高搜索效率。 其中模糊哈希是低维表示方法的典型代表。模糊哈希是由与传统密码哈希不同的算法产生的,因为它们故意设计成将相似的输入值映射到相似的哈希值。Pagani等人研究了在原始可执行文件上计算传统模糊/局部敏感哈希的局限性,得出结论:输入字节的微小变化会显著影响生成的哈希值。然而,即使普通模糊哈希可能不适合函数相似度,一些方法(如FunctionSimSearch)提出了更专业的哈希技术来比较两个函数。 另一种低维表示形式是基于嵌入。嵌入指的是将高维样本映射到一个低维空间,其中语义上相似的输入被映射到彼此接近的点,而不管它们在原始表示中看起来有多么不同。机器学习模型的目标是学习如何产生嵌入,使得相似函数之间的相似度最大化,而不同函数之间的相似度最小化。在文献中包括两种主要类型的嵌入:函数代码级嵌入和图结构嵌入。 代码嵌入。利用自然语言处理(NLP)技术来解决二进制函数相似性问题,把汇编代码当作文本来处理。代码嵌入根据不同的标记(例如指令、助记符、操作数、规范化指令)生成代码块或指令的嵌入向量。有三类方法:一类是基于word2vec的方法,如Asm2Vec,可以在不同的指令集上训练,但不能跨架构映射语义;一类是基于seq2seq编码器-解码器模型的方法,可以将不同架构的语义映射到同一个嵌入空间;一类是基于BERT的方法,如OrderMatters和Trex,使用预训练的变换器模型来学习近似程序执行语义,并用于识别语义相似的函数。 汇编代码嵌入通常受到它们能够处理的不同指令数量(所谓的词汇外问题)和能够作为模型输入的最大指令数量的影响。因此,某些方法计算指令级嵌入、基本块嵌入或函数级嵌入。 图嵌入。图嵌入是一种为图中的每个实体(通常是节点)确定固定长度向量表示的方法,这些嵌入是图的低维表示,保留了图的拓扑结构。基于函数控制流图的图嵌入方法具有跨架构的特点。这些嵌入可以由定制算法 或更复杂的机器学习技术,如图神经网络(GNN) 生成。一些最新的机器学习方法提出了GNN的变体,如GMN,这些变体能够在向量空间中产生可比较的嵌入 ,这些嵌入包含了从输入模型的两个图中提取的信息。 图嵌入方法还经常为每个基本块在其对应的图节点中编码信息,以增加表达能力。例如,一些解决方案为每个节点计算一组属性,从而导致具有属性的控制流图(ACFG),这些属性可以是手工设计的 或以无监督方式自动学习的。其他作者利用其他嵌入计算层使用前面讨论过的一些技术(例如,在基本块级别)。 函数表示技术 从二进制中提取信息的技术。 raw bytes 原始二进制 直接使用原始二进制信息作为相似性对比的输入(Catalog1 [74]),或者将原始字节与与从控制流图(CFG)或调用图(CG)[44]获取的其他信息结合起来 Assembly 汇编 汇编指令作为输入、使用汇编指令的数量作为输入来计算函数的相似性 Normalized assembly 标准化汇编 由于汇编代码经常编码常量值,导致操作和操作数的组合非常多。汇编规范化是可以抽象掉一些变化,减少词汇量,把同一操作的不同变体统一成一个表示。 Intermediate representations 中间表示 中间表示是一种将二进制代码提升到更高抽象层次的技术,可以统一不同指令的语义,消除不同架构的差异,以及应用程序分析技术来简化代码结构。常用的中间表示有LLVM、VEX和IDA微码等。 structure 结构特征 结构是一种反映函数内部或者在程序中的作用的特征。许多方法提取函数的控制流图(CFG),并且根据基本块的数据或者其他信息对其进行扩展,形成属性控制流图(ACFG)或者其他类型的图。还有一些方法利用CFG的结构来计算其他特征,例如tracelets(CFG中连续基本块的序列)。 Data flow analysis 数据流分析 数据流分析是一种处理汇编级别的算术表达式的不同形式的方法。一些方法通过计算基于数据流依赖的程序切片,并将它们标准化和作为特征来反映函数的行为。另一些方法,例如Vulseeker,使用块之间的数据流边作为额外的特征。 Dynamic analysis 动态分析。 动态分析通过运行函数对并根据输入输出关系提取特征,或者根据执行轨迹提取语义特征,或者使用模拟或混合技术。 Symbolic execution and analysis 符号执行 用符号执行来完全捕获待分析函数的行为,并确定其输入和输出之间的关系,涵盖所有可能的路径。 本文选择的方法 选择标准 可扩展性和实际应用能力 关注具有代表性的方法,而不是特定的论文 涵盖不同的研究领域 优先考虑最新的趋势 二进制代码相似性技术的演变: 根据时间的分类: 实验 关于实验的一点补充说明。 实验中涉及了两种基于神经网络的方法,分别是Order Matters和CodeCMR,它们都是由腾讯安全科恩实验室提出的。Order Matters是一种利用图神经网络和注意力机制来捕捉二进制函数的语义信息,并生成函数嵌入向量的方法。CodeCMR是一种利用多模态检索技术来实现二进制函数和源代码之间的匹配的方法。这两种方法都在BinaryAI平台上进行了实现,BinaryAI是一个免费在线的软件成分分析平台,可以帮助用户检测二进制程序中的漏洞、克隆代码、第三方库等。这段文字还说明了作者没有公开他们的模型实现,但是他们同意在我们提供的数据集上重新训练和测试他们的模型,并与我们分享测试数据的函数嵌入向量。为了计算函数之间的相似度,Order Matters和CodeCMR使用余弦距离作为相似度度量。...

三月 19, 2023 · 1 分钟 · M2kar