记录一次Linux服务器被人使用SSH字典爆破

news2025/4/19 7:27:55

2024年1.20凌晨睡了一觉,早上起来用termux远程ssh登录小主机发现密码没法登录了,一直显示密码错误,到了晚上用电脑ssh连接小主机,发现小主机真的没法登录了,直接把小主机接上屏幕查看,发现密码被人修改了,系统都进不去,而且主机风扇一直呼呼转,估计是cpu使用率上来了,这下只能进到linux的安全模式进行密码修改了。

重启ubuntu,开机的时候同时按住shift+esc键进入安全模式。

选择ubuntu高级选项然后enter进入。

向下选择括号内有recovery mode的选项,然后按e进入编辑模式。

光标移动到前面单词为linux的那一行, 将那一行的ro recovery nomodeset 以及本行他后面的都删掉(比如图中的dis_ucode_ldr)。

改为quiet splash rw init=/bin/bash,改完如下:

按'F10'键,数秒后,进入界面如下:

输入命令passwd 用户名,如下:

这样的
:passwd 用户名
:密码
:确认密码
这样就好了,不加的话你的执行步骤是对的但用户密码有可能还是原来的
---
比如我用户名是 root,要修改的目标密码是123456。
输入passwd root
输入12345
确认输入12345

然后输入命令保存重启。

reboot -f #此处只输入reboot是没用的,必须加-f

重启之后就可以登录小主机了。

开机之后, 发现cpu一直居高不下, 开机几分钟cpu直顶99%。

但是top命令查看了一下进程,发现没有进程占用过高,表现十分正常。

使用netstat -napt命令查看tcp进程服务,发现一个可疑的IP地址。

查一下ip来源。

kill掉ntools进程之后第二次查看, 发现原来的可疑IP地址变了,但是用shodan查了一下还是香港的服务器。

使用shodan查询ip地址的方法:

https://www.shodan.io/

使用sysdig查看隐藏进程。

sysdig -c topprocs_cpu # 该命令可以输出cpu占用的排行,经测试可以显示出被隐藏的进程

sysdig安装教程https://www.yundongfang.com/Yun6123.html

安装sysdig排错教程:https://zhuanlan.zhihu.com/p/112788242

使用sysdig查看到的隐藏进程:

有一个隐藏的进程占用率看起来十分离谱。

百度了一下这个工具,果然是挖矿软件。

使用命令搜索隐藏进程的更多信息。

unhide proc # 自助搜索隐藏进程,linux系统中一切皆文件,proc目录下保存的就是所有正在运行程序的进程ID,即PID

发现以下结果, 全都是这个tmp/ntools, 跟百度上的石锤了。

先把他kill掉看看,不过感觉是有定时任务的。

直接kill !!!!

kill掉了之后发现机子风扇变慢了, 但是过了一会又转了。

没错他又启动了!那么可以判断这一定是定时任务了!

挖矿程序一般都设置了定时任务启动脚本程序,查看定时任务,crontab -l查看是找不到的��得看/etc/crontab文件,执行 cat /etc/crontab 。果然有任务在启动程序脚本 /var/log/oneav/cron.lock。

不过后来查了一下这个是宝塔面板的定时任务, 初步判断应该不是这个原因引起的。

查看ssh是否被暴力破解。

find /var/log -name 'secure*' -type f | while read line;do awk '/Failed/{print $(NF-3)}' $line;done | awk '{a[$0]++}END{for (j in a) if(a[j] > 20) print j"="a[j]}' | sort -n -t'=' -k 2

查看防火墙状态。

sudo ufw status

发现防火墙是不活动的。

将防火墙开启。

sudo ufw enable
sudo systemctl start ufw # 并且设置开机自启动 或者用sudo service ufw start 

同时修改防火墙配置,确保万无一失。

sudo vim /etc/ufw/ufw.conf

将防火墙的enabled改为yes。

但是过了十秒钟左右配置文件中的ENABLED又被改成no了。

并且sudo ufw status查看防火墙状态也是未激活状态。

如下:

不管怎么改他都能将防火墙关闭。

于是我想到了一个方法:

在修改防火墙之后直接将防火墙的配置文件/etc/ufw/ufw.conf修改权限为“只读”。

在修改防火墙的配置文件后随即修改权限为“只读”。

chmod 400 /etc/ufw/ufw.conf
  • 4(读权限): 表示对文件或目录有读权限。
  • 2(写权限): 表示对文件或目录有写权限。
  • 1(执行权限): 对于文件,表示可以执行;对于目录,表示可以进入。

数字1(第一个数字):所有者权限。

数字2(第二个数字):组权限。

数字3(第三个数字):其他用户权限。

这样就可以有效阻止攻击者的程序修改防火墙的配置文件。

接着我们查看系统的日志。

journalctl -e

一条一条日志进行检查。

通过查看日志发现有一个unix系统(也是linux)似乎在与我们的主机建立会话。

蓝色框内似乎是在执行一个命令行。

绿色框可以知道这个pam_unix尝试使用root用户与我们的主机建立会话但是被关闭了。

连续对比了几次日志,发现这个cmd命令输入很稳定的一分钟执行一次,而且有一次是用名称为smmsp的user发送邮件测试,邮件程序被放在了以下三个文件夹里面,猜测攻击者做了备用的邮件发送系统,并且做了软链接。

  • /etc/init.d/sendmail
  • /usr/share/sendmail/sendmail
  • /usr/libexec/sendmail/sendmail

经百度发现这个邮件系统其实是linux自带的。

那么我们接着往下探。

想到攻击者想要访问我们的服务器进行命令行输入,那应该是用到了ssh进行远程登录的。

我们看一下ssh的日志, 查询ssh的日志。

journalctl -u ssh -e #参数-e是直接将日志输出全部到底

好家伙,我们发现上面一台unix机器一直在尝试用不同的user登录我们的机子,而且每次使用的IP地址都是不一样的,猜测这位攻击者在使用字典进行ssh爆破攻击。

查了一下这些IP地址,都是国外的,联系到上面的几次可疑IP地址的归属地都不是大陆的,可以确定这就是攻击者使用梯子匿名攻击我们的服务器。

还好刚刚把防火墙立起来了而且加了只读权限,才重新把防火墙立起来,现在攻击者被拦截在外面无法通过ssh进行登录我们的机子。

查看系统邮件是否有对外订阅。

cat var/mail/root

发现有几条可疑的邮件。

发现邮件通知了防火墙自动禁用的通知而且还有一个可疑的/bin/dtjbdjkw 1 1。

前面有个单词cron(定时任务的全称是crontab)那么初步猜测这东西可能跟定时任务有关,查看定时任务的配置文件,看到都是很常规的定时任务,那我们直接进入到系统的这四个定时任务的文件中去查看是否有可疑文件:

  • /etc/cron.hourly
  • /etc/cron.daily
  • /etc/cron.weekly
  • /etc/cron.monthly

这四个文件夹就是系统专门存放定时任务的地方, 分别查看这四个文件夹内部的异样。

观察这几个定时任务的执行时间和 journalctl -e 日志中异常脚本的启动时间间隔是否相似可以进行判断 相关程度。

接着查看后发现,有一个定时任务的文件名字很可疑,使用ls -al可以看到创建时间就是1.20号凌晨的时候。

观察了三个定时任务目录后可以确认这个Wsqsg3Wo就是一个可疑文件, 我们直接rm -rf Wsqsg3Wo 将其删掉, 同时使用 kill -9 pid 结束掉ntools进程, 然后开启新的终端观察系统日志。

journalctl -e

最终cpu不再处于高占用状态, 并且攻击者包ntools不再再生,但是还是能看到攻击者在不断地进行ssh字典爆破,真是穷追不舍啊,又过了几天之后使用journalctl -e查看日志。

发现清除了定时任务后还有个自启动任务在以间隔一分钟的频率执行,但是因为我把它的脚本(定时任务)给移除了, 所以他每次执行的时候都找不到脚本, 就以执行失败告终。

那么我们现在cd 到自启动目录下查看这个日志中出现的 DJI2YwVz.service。

cd /lib/systemd/system/
cat DJI2YwVz.service 

DJI2YwVz.service 的内容如下:

  • [Service] :这个部分定义了服务的启动行为。
  • Type=simple:表示这是一个简单的服务类型,它意味着主进程由 ExecStart 指定的命令启动,并且当该命令退出时,整个服务被视为失败。但由于 RemainAfterExit=yes,服务的状态将保持活动,即使 ExecStart 的进程已经退出。
  • ExecStart=/bin/dtjbdJk:这是启动服务时要运行的命令。这里指定了一个路径 /bin/dtjbdJkw,它应该是一个可执行文件。不过,这个文件名看起来有些不常见,可能是某个特定应用或脚本。
  • RemainAfterExit=yes:即使 ExecStart 指定的进程退出,服务也将保持活动状态。这通常与 Type=oneshot 一起使用,但在这里与 Type=simple 一起使用有些不寻常。
  • Restart=always:如果服务退出(无论是由于失败还是正常退出),它总是会被重新启动。
  • RestartSec=60s:在尝试重新启动服务之前,系统会等待60秒。
[Install]  
WantedBy=multi-user.target
  • [Install] :这个部分提供了服务的安装信息。
  • WantedBy=multi-user.target:表示当系统达到 multi-user.target 运行级别时,这个服务应该被启动。multi-user.target 是一个标准的运行级别,表示系统已经准备好供多个用户登录和使用。

总的来说,这个服务单元文件定义了一个简单的服务,该服务依赖于网络,并在网络启动后运行 /bin/dtjbdJkw 命令。如果命令退出,服务会尝试每隔60秒重新启动它。这个服务被配置为在系统达到多用户模式 (表示系统已经完成基本初始化,并且允许多个用户同时登录和访问系统资源) 时自动启动。

现在我们使用locate定位这个服务的位置。

分别cd到这两个目录下去将这两个服务删除。

sudo rm DJI2YwVz.service 

查看系统自启动中的所有开启的服务

systemctl list-unit-files --type=service | grep enabled

我们发现了一个可疑的包,cat命令查看一下:

果然还是这个病毒的启动文件,使用rm删除它。

cd /etc/systemd/system/
sudo rm DJI2YwVz.service
systemctl status YaIjzjZB.service #再次查看是否删除成功

成功删除,至此,机子已经处于安全稳定的状态了,日志中也只有攻击者ssh登录失败的信息。

写一个python脚本来查看一下这七天内被可疑ip登录的ip信息和登陆次数(登录失败的),统计总共的攻击次数。

可以看到,这是过滤掉了本机的IP地址以及内网 192.168 开头的IP地址后的统计结果,这七天时间,总共有100个左右的IP地址尝试通过ssh登录主机,总共登录次数为15584次,这些ip归属地分布世界各地,猜测使用了ip池子进行伪装。

曾经我以为互联网到至今应该是很和平的状态,但是经历了这次ssh字典爆破攻击后我才意识到网络攻击无处不在,建议系统密码使用比较复杂的随机字符组合,七八十位都没问题,数据可贵,电脑该装杀毒软件的就装上,别因为那占用那点内存而舍弃杀毒软件,防网络攻击于未然 !

作者:Sinvon
链接:https://juejin.cn/post/7385410225829740544

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1954612.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是Socket、Socket在Java中的应用、Socket和SocketChannel区别

目录 什么是Socket TCP\IP UDP体系结构 Socket和TCP\IP的关系 Socket在Java中的应用 Socket和SocketChannel的区别 SocketChannel和Selector的关系 服务器的设计演化历程---多线程版 服务器的设计演化历程---线程池版 服务器的设计演化历程---Selector版 参考链接 什么…

深度学习loss

pytorch模型训练demo代码 在PyTorch中,模型训练通常涉及几个关键步骤:定义模型、定义损失函数、选择优化器、准备数据加载器、编写训练循环。以下是一个简单的PyTorch模型训练演示代码,该代码实现了一个用于手写数字识别(使用MNIS…

大数据——HBase原理

摘要 HBase 是一个开源的、非关系型的分布式数据库系统,主要用于存储海量的结构化和半结构化数据。它是基于谷歌的 Bigtable 论文实现的,运行在 Hadoop 分布式文件系统(HDFS)之上,并且可以与 Hadoop 生态系统的其他组…

线程与进程的区别与联系,线程状态的切换

目录 什么是线程?进程?协程? 线程和进程的区别? 多线程的好处: 单核CPU有没有必要上多线程? 为什么没有变成单进程多线程的操作系统? 线程的状态 sleep () 和wait&…

1.4 操作系统结构

操作系统的体系结构:操作系统的内核设计(本节内容简要了解即可) 宏内核 & 微内核 操作系统的内核 计算机系统的层次结构将操作系统部分更详细地划分为内核部分和非内核部分 宏内核 & 微内核 从操作系统的内核架构来划分&#xff…

【初阶数据结构篇】时间(空间)复杂度

文章目录 算法复杂度时间复杂度1. 定义2. 表示方法3. 常见时间复杂度4.案例计算分析冒泡排序二分查找斐波那契数列(递归法)斐波那契数列(迭代法) 空间复杂度案例分析冒泡排序斐波那契数列(递归法)斐波那契数…

【ACM独立出版,高录用】第四届物联网与机器学习国际学术会议(IoTML 2024,8月23-25)

2024年第四届物联网与机器学习国际学术会议(IoTML 2024)将于2024年8月23-25日在中国南昌召开。 会议将围绕着物联网和机器学习开展,探讨本领域发展所面临的关键性挑战问题和研究方向,以期推动该领域理论、技术在高校和企业的发展和…

yolov8标注细胞、识别边缘、计算面积、灰度值计算

一、数据标注 1. 使用labelme软件标注每个细胞的边界信息,标注结果为JSON格式 2. JSON格式转yolo支持的txt格式 import json import os import glob import os.path as osp此函数用来将labelme软件标注好的数据集转换为yolov5_7.0sege中使用的数据集:param jsonfi…

数据库技术深度解析与未来趋势展望

数据库技术深度解析与未来趋势展望 引言 在当今信息化高速发展的时代,数据库作为数据存储和管理的核心基础设施,扮演着至关重要的角色。无论是传统行业还是新兴的互联网领域,数据库的稳定性和性能直接影响到业务系统的运行效率和用户体验。本…

计算机基础-IO

一、裸机中的IO 我们先看下计算机的组成部分: 从图中我们很清楚的看到Input/Output 即为 IO,也就是计算机主机和外部设备进行信息的交换。 这种交换可能是磁盘IO也有可能是网络IO。 二、操作系统中的IO 操作系统分为内核态和用户态,且默认…

GPT-4o mini 震撼登场:开发者的新机遇与挑战

GPT-4o mini 震撼登场:开发者的新机遇与挑战 一、引言二、GPT-4o mini 模型的卓越性能三、极具竞争力的价格优势四、开发者的探索与实践五、提升开发效率和创新能力的策略六、面临的挑战与应对措施七、未来展望八、总结 在科技的浪潮中,OpenAI 最新推出的…

基于springboot+vue+uniapp的网上花店小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…

概率论--置信区间和置信度

目录 置信区间 置信度 关系与权衡 置信区间的计算公式有哪些不同的变体,以及它们各自的适用情况是什么? 基于正态分布的置信区间: 基于t分布的置信区间: 单边置信区间: 如何根据不同的研究目的和数据类型选择合…

【React】详解自定义 Hook

文章目录 一、自定义 Hook 的基本用法1. 什么是自定义 Hook?2. 创建自定义 Hook3. 使用自定义 Hook 二、自定义 Hook 的进阶应用1. 处理副作用2. 组合多个 Hook3. 参数化 Hook4. 条件逻辑 三、自定义 Hook 的实际应用案例1. 实现用户身份验证2. 实现媒体查询 四、最…

【NPU 系列专栏 2.5 -- GPU 与 NPU 的区别】

请阅读【嵌入式及芯片开发学必备专栏】 文章目录 GPU 简介GPU 缺点NPU 特点NPU 应用场景NPU 与 GPU 的关系和区别NPU 与 GPU 区别GPU 简介 GPU 最初设计用于图形渲染和图像处理。近年来,由于其强大的并行计算能力,GPU 被广泛应用于通用计算领域,特别是深度学习和科学计算。…

堆的实现-适用于算法竞赛

首先讲一下能够实现的操作。 插入一个数查找最小值删除最小值删除任意一个元素修改任意一个元素 什么是堆? 堆其实是一棵完全二叉树。 即处理叶子节点和倒数第一层节点,其他节点都有两个子节点,而且顺序是从上到下,从左到右。 …

C# 简单的单元测试

文章目录 前言参考文档新建控制台项目新建测试项目添加引用添加测试方法测试结果(有错误)测试结果,通过正规的方法抛出异常 总结 前言 听说复杂的项目最好都要单元测试一下。我这里也试试单元测试这个功能。到时候调试起来也方便。 参考文档 C# 单元测试&#xf…

JavaFX布局-TilePane

JavaFX布局-TilePane 常用属性alignmenttileAlignmentorientationhgapvgappadding 实现方式Javafxml 自动排列其子节点成网格状根据容器的大小以及子节点的数量和大小自动计算最佳的排列方式推荐子节点固定大小,参差不齐的子节点,效果很诡异 常用属性 …

【VS2019安装+QT配置】

【VS2019安装QT配置】 1. 前言2. 下载visual studio20193. visual studio2019安装4. 环境配置4.1 系统环境变量配置4.2 qt插件开发 5. Visual Studio导入QT项目6. 总结 1. 前言 前期安装了qt,发现creator编辑器并不好用,一点都不时髦。在李大师的指导下&…

基于Springboot的高校毕业生资格审查系统/计算机项目/Java、Web/课设

摘 要 计算机网络与信息化管理相配合,可以有效地提高管理人员的工作效能和改进工作的质量。良好的高校毕业生资格审查系统可以使管理员工作得到更好的管理和应用,并有助于管理员更好地管理高校毕业生资格审查,并有助于解决人力管理中出现的差…