Linux应急响应思路和技巧:进程分析篇

news2024/11/15 19:47:21

前言

本文总结自网宿安全演武实验室安全应急响应团队日常工作实践,主要介绍在Linux服务器环境出现明确或疑似的被入侵表现之后,安全人员如何在服务器系统中确认入侵结果,执行入侵后的溯源取证、入口定位、行为还原、后门定位等工作,以便及时清理病毒后门、加固系统,降低入侵影响。

应急响应流程

在实际安全事件处理中,应急响应流程从处置过程可总结为调查、评估、抑制、分析、恢复、报告这6个阶段:

  1. 调查:定位涉事资产、涉事部门人员、以及相关业务信息,组建应急沟通群。
  2. 评估:判断事件类型(如挖矿、勒索、DDoS、Webshell等),评估事件影响范围和影响严重程度。
  3. 抑制:根据影响情况及时进行备份数据(如果安全事件与数据和程序相关,则要求相关业务方、机器管理员对存有数据和程序的存储介质进行备份,以保护数据和证据的安全、完整)、隔离涉事资产(如配置防火墙、关站、关服务、断网等)、备走流量等措施,以保护现场、防止扩散。
  4. 分析:对受影响的服务器主机和业务系统进行入侵排查,主要进行取证和溯源,并根据定位到的入侵点提出相关安全加固建议。可通过信息收集、日志查看、样本分析、业务系统漏洞测试等方法来分析。
  5. 恢复:清理服务器主机上涉事的病毒和后门,若无法全部定位清理,则建议重装系统。业务方按照给出的加固建议进行相关配置加固和漏洞修复并经过安全部门应急处置组的验证后,方可恢复业务。后续安全组将基于分析提取的恶意样本特征、入侵漏洞、攻击行为等,根据实际情况增加相应的检测规则并持续监控。
  6. 报告:将安全事件发现和处理的全过程进行总结,形成安全事件应急响应处置报告,并通报上级。

图1 应急响应流程图

应急排查思路

基于Linux系统一切皆文件的特性和网宿应急团队历史应急实践,Linux系统服务器入侵事件排查可从4个方面入手分析:

  1. 进程分析:通过运行进程分析,可以发现异常或未知的进程,这些可能是恶意软件或攻击工具执行的迹象;进程运行细节,如进程ID、启动时间、关联用户、执行路径、子进程创建、资源使用情况,可以帮助安全人员理解攻击意图、进行溯源分析。
  2. 文件分析:通过检查文件的创建、修改、删除痕迹,可以识别系统中的可疑文件或被篡改的文件;对可疑文件进行深入分析,可以提取恶意代码样本,进一步分析其功能和攻击手段。
  3. 网络分析:对系统网络连接、流量进行分析,可以发现恶意软件命令和控制(C&C)服务器、横向渗透和对外攻击的行为,可以帮助确定攻击的来源和目标,为切断攻击链、隔离受感染系统提供依据,在其他入侵特征不明显的情况下,还可以通过网络流量分析来进一步确认入侵与否。
  4. 日志分析:系统和应用的日志文件中记录了大量的操作信息,可以追踪攻击者的活动路径和行为模式,可查找到攻击者留下的入侵痕迹,帮助明确攻击活动时间线,揭示系统或组件中存在的安全漏洞(如弱口令爆破)。

这4个分析维度相互依赖、相互补充,通过综合分析这些维度,可以更全面地理解和响应安全事件,构建起对整个安全事件脉络的完整理解。

下图为Linux应急排查思维导图,本篇先从进程方面进行介绍。

图2 Linux应急排查思维导图

进程分析

进程是木马、病毒或后门程序运行的体现,如果能够定位到某恶意进程,则可以该进程作为突破,定位出一系列的恶意行为。

排查工具

入侵事件可分为两种场景:无rootkit行为和有rootkit行为。rootkit攻击技术是指恶意软件隐藏自身或指定目标进程、网络、文件等信息从而避免入侵被发现的行为。rootkit攻击技术又分为用户态的rootkit和内核态的rootkit,用户态的rootkit主要手法有系统命令替换、进程注入、动态库劫持等;内核态的rootkit比较复杂,主要利用内核模块LKM实现,这里先不做展开。一种粗略判断系统命令是否被替换的方法是利用软件包校验,如centos上,利用rpm -Vf [系统命令所在路径],若对应的系统命令出现S.5....T.,则表明系统命令已被修改。一种粗略判断是否存在LKM rootkit的方法是查看/sys/module目录下是否有加载可疑内核模块,当然LKM rootkit可隐藏自身加载行为。可借助其它rootkit查杀工具判断服务器是否存在rootkit,如chkrootkit、rkhunter等。

两种场景所需排查工具不同,无rootkit行为的攻击事件,用系统自带的命令或工具基本就能定位清楚,有rootkit行为的攻击需要借助一些专业化的工具,比如busybox、LiME+Volatility内存取证。无rootkit情况下,常用排查工具有系统自带的top、ps、lsof、pstree、strace、ltrace等,还可查看/proc/[pid]目录下各项进程相关信息进行排查。有rootkit情况下,常用的系统命令可能被替换,影响排查结果,需要借助一些专业化的工具,如使用busybox自带的ps、top、lsof等工具。busybox是一个集成了三百多个常用Linux命令和工具的软件,从简单的,如ls、cat、echo等,到复杂的,如grep、find、mount、telnet等,有Linux工具里的瑞士军刀之称。安装后在busybox后直接带上对应命令即可执行,如busybox ls。下载地址:https://www.busybox.net/downloads/busybox-x.x.x.tar.bz2

恶意进程定位

  • 高mem/cpu占用

关注高mem内存占用和cpu占用高的进程。如果mem占用高,则可能为内存型DoS病毒。如果cpu占用高,且进程为多线程,并伴有外连行为,则大概率为挖矿木马;如果外连行为数量多,且连接端口为常见远程服务端口,则大概率为横向扫描工具;如果外连行为数量多,连接类型和端口各异,则大概率为僵尸网络DDoS病毒

图3 高cpu占用挖矿木马进程示例

常用排查命令:

[root@localhost ~]#top    #查看进程资源占用情况
[root@localhost ~]#ps -aux --sort=-%mem|more    #按mem占用大小排序
[root@localhost ~]#ps -aux --sort=-%cpu|more    #按cpu占用大小排序
  • 伪装内核进程

关注父进程pid非2的带“[]”的进程,一般为恶意进程伪装成内核进程。[kthreadd]进程(pid = 2)由idle通过kernel_thread创建,是所有内核进程的父进程。内核进程的命名规则都是[xxx],用中括号括起来的,带中括号的进程的父进程正常情况下应该是2(也就是[kthreadd]),而用户态的进程正常情况下不会这样命名。

图4 伪装内核进程示例

常用排查命令:

[root@localhost ~]#ps -ef|awk '{if($2!="2"&&$3!="2"&&$NF~/^\[.*\]/)print$0}'    #查看进程名带中括号的非内核进程
  • 带隐藏路径进程

关注进程路径带“.“开头的隐藏路径的进程,一般恶意进程会隐藏自身恶意程序文件。

图5 隐藏路径进程示例

常用排查命令:

[root@localhost ~]#ps -ef|awk '{if($0~/(\/| )\./)print$0}'    #查看进程参数带隐藏路径的进程
  • 进程名随机

关注进程名比较随机的进程,可能有固定前缀或后缀,一般同类型进程位数固定。

图6 随机进程名示例

常用排查命令:

[root@localhost ~]#ps aux|more    #查看所有进程,自行观察进程名是否随机
[root@localhost ~]#ps -ef|more    #查看所有进程,自行观察进程名是否随机
  • 带特征字符串

关注带一些恶意程序常用的特征字符串的进程,如带scan/transfer的通常为横向扫描工具,带payload/dos的通常为恶意软件,带miner/coin/xmrig的通常为挖矿木马。部分特征用于伪装,如带systemd/manage/update/service的通常是伪装成系统进程、带watchbog/sec的通常是伪装成安全程序。或者将一些系统或第三方组件中部分字符进行修改,达到掩人耳目的目的,如0&O&o、 1&l&I。可收集历史恶意样本提取的特征字符串,查看进程名、进程参数、进程路径是否匹配。查看带反弹shell特征字符串的进程,如进程参数带/dev/tcp/\d+.\d+.\d+.\d+。查看进程名或进程参数为空的进程。查看进程名或进程参数带base64的进程,恶意进程通常采用base64编码恶意指令。

图7 带特征字符串进程示例

常用排查命令:

[root@localhost ~]#ps -ef|egrep "[特征字符串/特征字符串正则]"|more    #查看带特征字符串的进程
[root@localhost ~]#ps -eo pid,comm,cmd|awk '{if($2==""||$3=="")print$0}'    #查看进程名或进程参数为空的进程
  • 带恶意域名

关注进程参数带域名或url的进程,若查询威胁情报为恶意域名或url,通常为下载恶意程序或脚本的可疑进程。

图8 带恶意域名进程示例

常用排查命令:

[root@localhost ~]#ps -ef|grep "http"|more    #查看带域名或url进程,自行观察是否包含恶意域名或url
  • 带可疑路径进程

关注进程路径带可疑路径的进程,如/tmp、/var/tmp、/dev/shm、/var/run、/var/lock、/root、/boot、/etc等,攻击者常将恶意文件落盘在这些目录下。

图9 带敏感目录进程示例1

或者进程打开文件路径带有上述可疑路径且非日志类文件的,这种进程也较为可疑。

图10 带敏感目录进程示例2

常用排查命令:

[root@localhost ~]#ps -ef|egrep "/tmp|/var/tmp/|/dev/shm|/var/run|/var/lock|/root|/boot|/etc"|more    #查看带敏感目录进程
[root@localhost ~]#lsof -p [pid]|egrep "/tmp|/var/tmp/|/dev/shm|/var/run|/var/lock|/root|/boot|/etc"|more    #查看指定进程打开文件是否包含敏感目录路径
  • 带delete标识进程

关注进程路径带deleted标识的进程,特别是打开文件中也有大量伴有deleted标识的情况,恶意进程通常启动后即刻删除自身程序,这类进程较为可疑。

图11 带delete标识进程示例

常用排查命令:

[root@localhost ~]#lsof|grep deleted    #查看带delete标识的进程
  • memfd无文件进程

关注进程路径带有/memfd:标识的情况,恶意进程可能通过无文件执行的方式隐藏自身。

图12 memfd无文件进程示例

常用排查命令:

[root@localhost ~]#lsof|grep "/memfd:"    #查看memfd无文件进程
  • 隐藏进程

关注使用ps命令无法查看到,但在/proc目录下存在对应pid文件夹的非瞬时进程。

关注利用mount --bind /tmp/empty /proc/[pid]的隐藏进程,挂载后,对应进程目录为空。

图13 mount挂载隐藏进程示例

常用排查命令:

[root@localhost ~]#a=`ps -eo pid|grep -v PID|xargs echo|tr ' ' '|'`;b=`ls /proc/|egrep "[0-9]+"`;echo "$b"|tr ' ' '\n'|egrep -v "$a"    #查看ps隐藏进程
[root@localhost ~]#cat /proc/$$/mountinfo|awk '{if($5~/^\/proc\/[0-9]/)print$0}'    #查看mount隐藏进程
  • 异常启动用户

关注已定位出的后门用户启动的进程,关注非运维管理用户并且与服务无关的用户启动的进程。

常用排查命令:

[root@localhost ~]#ps -ef | grep "^[后门或可疑用户]"    #查看异常启动用户进程
  • 提权进程

关注提权进程,如一条进程链上存在由非root启动进程fork出root启动进程的行为,且非正常的su、或sudo提权。

常用排查命令:

[root@localhost ~]#pstree -up    #查看进程树,自行观察是否有提权行为
  • 异常shell执行进程(如tcsh)

关注非常用的shell(即非bash、sh)启动的进程,这类进程较为可疑。

常用排查命令:

[root@localhost ~]#a=`cat /etc/shells|egrep -v "nologin|\/sh|\/bash"|awk -F '/' '{print$NF}'|xargs echo|tr ' ' '|'`;ps -ef|egrep -w "$a"    #查看非常用shell执行的进程
  • 进程名伪造

关注进程参数和进程路径中执行路径不一致的进程,如/proc/[pid]/exe与/proc/[pid]/cmdline中的执行路径不一致。

常用排查命令:

[root@localhost ~]#ls -al /proc/[pid]/exe    #查看进程路径
[root@localhost ~]#ps -p [pid] -o cmd    #查看完整进程参数
  • audit审计追踪异常行为进程

可开启audit审计来追踪异常进程行为,再根据日志进行进一步的深入分析。可监控setuid/setreuid/setresuid/setgid/setregid/setresgid系统调用提权行为,异常shell提权行为,异常更新密码行为,系统命令异常修改行为,系统关键配置文件异常修改行为(如selinux配置、环境变量脚本、sudo特权配置、系统服务启动脚本),关键密码文件异常修改行为,定时任务异常修改行为,内核模块异常操作行为,异常编译行为,敏感目录下的程序执行行为,关键日志文件异常修改行为(特别是非正常回滚的清空行为),异常ptrace进程注入行为,异常登录行为,异常服务启动或停止行为(如停止防火墙服务、停止系统日志管理服务),还可设置蜜罐文件监控其异常清除或修改行为,具体规则和分析方法将在日志分析篇列出。如果存在怀疑的进程,可加入-F pid=[可疑进程pid]来过滤出关心进程。auditctl使用参考链接:https://linux.die.net/man/8/auditctl

  • 恶意容器进程

基于容器轻量级、灵活性、快速部署与可扩展性、环境一致性与隔离性、持续集成与持续部署(CI/CD)、可降低基础设施成本等优势的展现,越来越多的企业选择容器技术来帮助自身提升竞争力,攻击者也逐渐将攻击视线移向容器。当入侵事件产生时,如果服务器上有搭建容器环境,那么可以关注下是否存在配置了恶意进程启动命令的容器,如下为攻击者设置了恶意容器启动进程命令的示例,容器创建时将宿主机/目录挂载至容器/host目录,然后拷贝ssh后门公钥至宿主机,通过访问127.0.0.1从而进行容器逃逸,之后下载TeamTNT黑产团队挖矿木马并执行。

图14 恶意容器启动命令示例

常用排查命令:

[root@localhost ~]#docker ps -a --no-trunc|more    #查看所有容器基本信息
[root@localhost ~]#docker inspect [容器id]    #查看指定容器完整配置信息
  • 其它
[root@localhost ~]#strace -o result -ff -p [pid]    #跟踪指定进程的系统调用以及所接收到的信号。-ff用于追踪所有子进程,-o用于各自单独输出跟踪结果到各自进程的文件
[root@localhost ~]#strace -e access,open -p [pid]    #跟踪进程的指定系统调用(这里是open()和access())
[root@localhost ~]#strace -e access,open -p [file_path]    #跟踪程序、系统命令等文件的指定系统调用(这里是open()和access())
[root@localhost ~]#ltrace -p [pid]    #跟踪进程的库调用
[root@localhost ~]#systemctl status [pid]    #查询对应进程所运行的服务,还能看到服务启动相关命令,观察是否有异常服务或服务启动命令
[root@localhost ~]#ls -al /proc/[pid]/cwd    #查看对应进程的启动目录,若改目录包含隐藏路径、恶意特征字符串等,则增加了该进程的可疑程度
[root@localhost ~]#strings -f /proc/[pid]/environ | cut -f2 -d ' '    #查看该进程启动时的完整环境变量,观察是否有可疑的环境变量,如PATH=/tmp

溯源技巧

  • 追踪启动用户

可追踪恶意进程启动用户,定位入侵入口。如下,恶意进程启动用户为postgres,由此追踪至postgresql组件,根据日志定位出postgres有弱口令爆破痕迹,以及服务器PostgreSQL使用版本存在任意代码执行漏洞(CVE-2019-9193,影响9.3-11.2版本)。

图15 追踪启动用户溯源示例1

如下,恶意进程启动用户为portalnav,由此追踪到通过某业务平台部署的portalnav组件,由此进一步定位到该组件web相关目录下存在有漏洞版shiro包(CVE-2020-17510)。

图16 追踪启动用户溯源示例2

  • 追踪父进程

可层层追踪恶意进程父进程,查看是否父进程组件或服务有漏洞,定位入侵入口。

如下,恶意进程/tmp/tomcat父进程为java进程,-jar参数带自定义jar包,发现该jar包存在有漏洞的低版本子jar包log4j-api-2.11.2.jar、log4j-core-2.11.2.jar。查看该java服务日志,发现入侵痕迹。

图17 追踪父进程溯源示例

  • 利用audit审计

恶意程序通常存在守护进程,多个进程间互相守护,kill掉后会自动重启,可利用audit审计,层层向上定位守护进程,最终定位到启动初始恶意进程的进程,可能就可以定位到入侵入口。还可利用audit审计监控落盘的恶意程序文件,层层向上可能会定位到最初存在rce的进程。还可以利用audit审计监控下载相关(如curl、wget)操作命令,定位到最初调用下载的进程。

  • 利用病毒家族特征

根据可疑进程特征,或病毒引擎检测结果,查找病毒所属家族、黑产组织、类似样本分析资料,根据网上资料和样本分析结果提供的入侵方式(如利用的组件漏洞、web漏洞、爆破、未授权访问等),对照当前服务器是否存在对应的有漏洞组件、网站是否存在对应的漏洞、弱密等,进行有针对性地进一步验证。

小结

进程分析主要目标是能够完整定位服务器上存在的恶意进程并进行取证,确认服务器是否被黑和被黑后产生什么活动和后果,分析出恶意进程之间的调用和守护关系,以及大致了解恶意进程所采用的攻击技术和所进行的恶意活动(如伪装、隐藏、性能消耗等),以便于后续结合其它方向的应急排查结果做进一步的分析,对样本分析、病毒清理和特征提取有辅助作用。以下总结了Linux应急排查进程分析过程中的一些排查命令。

图18 Linux应急排查进程分析思维导图

下一篇我们将介绍Linux应急排查的文件分析部分。Linux系统“一切皆文件”的设计哲学提供了更直观透明的与系统交互的方式,同时也方便我们更快速准确地排查安全问题,因为攻击本身与系统的交互也需要通过文件,持久化、防御绕过、恶意样本落盘、提权等攻击阶段都会涉及到文件。相信在下一篇,通过对文件内容分析、文件权限&属性分析、文件修改&创建活动分析、恶意样本分析等的介绍,能够对安全事件应急排查有更深入的了解。

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

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

相关文章

大数据框架总结(全)

☔️ 大数据框架总结(全) 关注“大数据领航员”,在公众号号中回复关键字【大数据面试资料】,即可可获取2024最新大数据面试资料的pdf文件 一. Hadoop HDFS读流程和写流程 HDFS写数据流程 (1)客户端通过…

TypeScript 语言在不改变算法复杂度前提下,细节上性能优化,运行时性能提升效果明显吗?

有经验的专家写的代码,和无经验的新手写的代码,在运行时性能上大概会有多少差异? 个人感觉,常规业务逻辑代码通常可以差 1 倍;如果算上框架的影响,可以差 2~4 倍。 仅考虑业务代码的话,新手容易…

Python3 使用 pymssql 连接 SQL Server 报错:DB-Lib error message 20002, severity 9

一、版本说明 python版本: 3.12.1 pymssql版本: 2.3.0 # pymssql.version_info() SQL Server版本:SQL Server 2008 OS版本: rocky linux 9.4二、报错信息 Traceback (most recent call last):File "src/pymssql/_…

四大运营商大流量卡测评,手机卡,物联网卡,纯流量卡

买大流量卡,看4个方面 优惠时间。有的只是12个月,24个月有优惠【可以先用一年,然后注销】通用流量。而不是定向流量全国通话分钟数。而不是亲情通话分钟数销户方式。是否支持随时销户,异地销户,线上销户,额…

【云原生】kubernetes中的认证、权限设置---RBAC授权原理分析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

【云擎未来,智信天下】移动云服务器Docker部署+远程连接Redis

文章目录 引言: 移动云:云擎未来,智信天下一、什么是Redis?二、Redis 与其他 key-value 存储有什么不同?Redis 架构 三、环境准备四、部署流程使用Redis Desktop Manager远程连接操作数据库总结与未来展望云擎未来&…

Matlab进阶绘图第57期—带填充纹理的横向柱状图

带填充纹理的横向柱状图是通过在原始横向柱状图的基础上添加不同的纹理得到的,可以很好地解决由于颜色区分不足而导致的对象识别困难问题。 由于Matlab中未提供纹理填充选项,因此需要大家自行设法解决。 本文使用Kesh Ikuma制作的hatchfill2工具&#…

Nginx | 正向代理与Proxy插件整合

写在前面 🍁个人主页:微枫Micromaple 在企业开发环境中,局域网内的设备通常需要通过正向代理服务器访问互联网。正向代理服务器充当中介,帮助客户端请求外部资源并返回结果。局域网内也就是我们俗称的内网,局域网外的互…

docker安装etcd

1.查找etcd镜像 docker search etcdNAME: 镜像仓库源的名称 DESCRIPTION: 镜像的描述 STARS: 类似 Github 里面的 star,表示点赞、喜欢的意思。 OFFICIAL: 是否 docker 官方发布 2.拖取镜像并生成对应容器 docker run --name etcd -d -p 2379:2379 -p 2380:2380 …

zstd库数据压缩与解压缩

在 Visual Studio 2019 中使用 C 的 zstd 库进行数据压缩与解压缩 在今天的博客中,我们将探讨如何在 Visual Studio 2019 中使用 zstd 库进行高效的数据压缩和解压缩。zstd(也称为 Zstandard 或 zstd)是由 Facebook 开发的开源压缩库&#x…

每日一题24:数据操作之第N高的薪水

一、每日一题 表: Employee ------------------- | Column Name | Type | ------------------- | id | int | | salary | int | ------------------- 在 SQL 中,id 是该表的主键。 该表的每一行都包含有关员工工资的信息。查询 Employee 表中第 …

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 5月27日,星期一

每天一分钟,知晓天下事! 2024年5月27日 星期一 农历四月二十 1、 气象台:今天,广西、广东、福建等十余省份部分地区有大到暴雨,局地有雷暴大风等强对流天气。 2、 我国已有24省份已出台省级控烟相关法规,…

易备数据备份软件:从 .VMDK 文件中对虚拟机进行文件级别的恢复

VMDK 是 VMware 创建的开放式的文件格式,主要用于云计算和虚拟化服务。从基本上讲,.vmdk 文件是虚拟磁盘,其中包含 VMware 虚拟机的所有信息。 可以使用多种应用(Winzip、7zip 等,当然也可以使用易备数据备份软件&…

2024年中国电机工程学会杯数学建模思路 - 案例:感知机原理剖析及实现

# 前言 2024电工杯(中国电机工程学会杯)数学建模思路解析 最新思路更新(看最新发布的文章即可): https://blog.csdn.net/dc_sinor?typebloghttps://blog.csdn.net/dc_sinor/article/details/128779911) 一、感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法…

杰理蓝牙WiFi芯片AC7916A—云信通讯

杰理蓝牙WiFi芯片AC7916A是一种高性能、低功耗的解决方案芯片,具有卓越的传输速度、连接稳定性和覆盖范围。其提供的多种芯片型号,可以满足不同场景的需求,例如,BLE Mesh Mesh网络、智能穿戴、身体监测、智能家居和灯光控制等。 …

辽宁省实验OJ 235. Sting(manacher+trie)

题目 登录 - Lnsyzx Online Judge 思路来源 辽宁省实验oj官方题解 题解 manacher,对回文这一半的串建个trie树, manacher初始对半径取min的时候,先倍增当前回文串定位到树上这个深度的位置 然后不断往外扩展时在trie树上扩展&#xff0c…

电脑太卡怎么办?这些技巧你必须知道

电脑卡顿是许多电脑用户都会遇到的问题,它可能导致工作效率低下,甚至影响到日常生活。可是电脑太卡怎么办呢?其实电脑卡顿问题通常是可以解决的,只要我们采取正确的方法。本文将介绍三种解决电脑卡顿问题的方法,帮助您…

Excel分类汇总,5个做法,提高数据处理效率!

在日常的工作中,我们经常需要使用Excel中的各种功能,Excel分类汇总功能无疑是数据分析和报告制作中的一把利器,它极大地提高了数据处理的效率和准确性。在现代商业环境中,数据无处不在,而如何从这些数据中提取有效信息…

2024年03月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,共50分) 第1题 下列哪个命令,可以将2024转换成’2024’ 呢?( ) A:str(2024) B:int(2024) C:float(2024) D:bool(2024) 答案:A 本题考察的是str() 语句,将数字转换成字符串用到的是str() 语句。 …