位置:
首页

>

>

各种Shell命令的用法和功能
时间:
[序言]通过“有趣的”在研究挖掘病毒方面的经验,本文不仅展示了各种Shell命令的用法和功能,而且还加深了读者的理解。了解Linux进程和文件系统。
同时,在本文中,还有各种各样的工具网站,我认为这些网站对某些专业人员会非常有帮助。希望它能对我们有帮助。
CPU起飞。最近,一个朋友在小组中报告我的服务器CPU处于高占用状态,但是我无法通过top,ps和其他命令找到哪个进程正在占用它。
我怀疑这是一种采矿病毒,急忙转过身来。根据经验,我迅速请他查看当前服务器的网络连接,以查看是否存在可疑连接。
果然,我发现了一些东西:检查Shodan上的IP地址:反向查找,发现许多域名已解析为该IP地址。 :这是位于德国的IP地址,并且打开了一些特殊服务端口,例如4444、5555、7777:其中,在朋友服务器上找到的连接是端口7777。
HTTP服务。直接访问返回的信息如下:miningpool!服务器正在挖矿!但是神奇的是,这个过程似乎是看不见的,并且没有存在的痕迹。
如何隐藏进程现在回到本文的主题:在Linux操作系统上,隐藏进程的技巧是什么?为了回答这个问题,让我们首先了解用诸如ps和top之类的命令枚举系统进程列表的原理。 Linux的设计理念是:一切都是文件!过程也不例外。
Linux系统中有一个特殊目录:/ proc /。该目录的内容不是硬盘上的文件系统,而是操作系统内核公开的内核中与进程和线程相关的数据接口。
它是procfs,它记录有关系统上运行的进程和线程的信息。我们来看看:这些以数字命名的目录是进程的PID,它记录了进程的详细信息。
诸如ps和top之类的命令的工作原理实质上是遍历此目录。了解该原理后,如果要实现隐藏,您将具有以下想法:命令替换直接替换了系统中的ps和顶级命令工具。
您可以从GitHub下载其源代码,添加相应的过滤逻辑,并在遍历过程时消除挖掘过程以达到隐藏的目的。模块注入会编写一个动态链接库,以便HOOK遍历相关函数(readdir / readdir64),并在遍历时过滤挖掘过程。
通过修改LD_PRELOAD环境变量或/etc/ld.so.preload文件,配置动态链接库以将其注入目标进程。内核级隐藏模块注入方法是在应用程序层执行函数HOOK来隐藏挖掘过程。
此外,可以通过加载驱动程序将相应的系统调用挂在内核空间中来将其隐藏。但是,这对攻击者有更高的技术要求,清理此类病毒的挑战甚至更大。
通过以上过程隐藏原理可以发现挖掘过程。他们正在尽力将内容隐藏在/ proc目录中,这类似于“模糊方法”,因此包括ps,top,ls等命令都无法看到采矿过程。
但是眼罩并不意味着它不存在。有一个称为取消隐藏的工具,可用于查看隐藏的进程。
我请这个朋友安装此工具以查找隐藏的进程,但是奇怪的是,一旦执行yuminstall安装,远程连接的SSH会话就会立即断开连接。因此,我选择通过源代码进行安装,并且不断报告各种错误...由于我无法亲自操作该服务器,因此交流很麻烦,因此我决定研究取消隐藏工具的源代码,然后编译一个python脚本被发送给他执行。
源地址:https://github.com/YJesus/Unhide-NG/blob/master/unhide-linux.c在寻找隐藏的进程模块时,它大致使用以下方法:通过以下方式访问/ proc / pid /目录:一个,其中,Pid从1累积到max_pid。如果目录不存在,请跳过该目录是否取消隐藏其自身的进程,如果在ps命令中可以看到该目录,则跳过该目录,跳过其余的目录,既不包括self也不在ps命令的输出中,然后确定为隐藏进程。
根据这个想法,我编写了一个Python脚本并将其发送给这个朋友。执行后,我发现了一个隐藏的过程:不用担心,没有那么多的过程。
这是一个清单。
产品资料
行业信息