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 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(第三个数字):其他用户权限。
这样就可以有用阻止攻击者的程序修改防火墙的配置文件。
接着我们查察体系的日记。
一条一条日记举行检查。
通过查察日记发现有一个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举行登录我们的机子。
查察体系邮件是否有对外订阅。
发现有几条可疑的邮件。
发现邮件通知了防火墙自动禁用的通知而且另有一个可疑的/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历程, 然后开启新的终端观察体系日记。
最终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到这两个目次下去将这两个服务删除。
查察体系自启动中的全部开启的服务
- 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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |