来自 CC防护 2021-02-08 14:19 的文章

应对ddos_能不能_如何防止网站被攻击

应对ddos_能不能_如何防止网站被攻击

从事信息安全工作的一件大事就是没有正常的。我们经常会遇到奇怪和新奇的事情,而这正是过去几周在Pastebin上闲逛之后发现的。作为一个背景,不限内容高防cdn,对手在Pastebin上托管shell、可执行文件和其他攻击基础设施是很常见的。如果你在网站上搜寻正确的指标或模式,那么你一定会找到一些东西。当然,Pastebin上的许多攻击工具都是非常普通的,但是有时候如果您愿意检查一个冗长而复杂的脚本序列,您会发现一个持久的Linux后门,它用隐写术隐藏了自己。让我们从头开始我用Pastebin搜索了一些经典的shell技巧的证据,其中的对手使用curl或wget下载并执行后期的有效负载,结果似乎可以忽略不计:但是,由于只需要一分钟就可以看到下载是否可用,所以检查一下是有意义的。当然,它是可以得到的,接下来的一切最终都是迷人的。这是发现的看看第12行:虽然这不是一个全新的想法,但是使用unixdd命令肯定是不寻常的。通常,dd用于复制和转换数据。安全专业人员在制作取证磁盘拷贝和覆盖数据时经常会遇到这种情况。在本例中,他们似乎在使用dd和skip选项从图像中提取可执行文件,这表明这不是您日常使用的bashshell恶意软件。现在我们跟着面包屑走幸运的是,托管图片的网站没有被取下,我能够检索到它(见下文)。更妙的是,该图像仍然隐藏了可执行文件,谷歌搜索该图像时没有找到匹配项。dd命令按预期工作,在提取之后,显示了一个名为rcu_bh的可执行程序。通过使用file命令,我们发现提取的程序是一个可执行和链接格式(ELF)二进制文件,这基本上相当于Windows的可移植可执行(PE)二进制文件格式。当时,没有人将该文件上传到VirusTotal,59个反恶意软件引擎中的0个将其标记为恶意。在写这篇文章时,它的分数是一样的。VirusTotal确实注意到它正在向Pastebin发出curl命令,但没有其他命令。混合分析沙盒系统也没能找到关于这个文件的任何有趣的东西,确定它"没有构成特定的威胁"超越沙盒和恶意软件存储库此时,常规的基于文本的分析毫无进展,VirusTotal和Hybrid分析无法报告任何恶意活动的存在。逻辑上的下一步是通过在一个隔离的、插入指令的虚拟机中执行二进制文件来进行更深入的分析,这最终揭示了它的目的:从Pastebin下载并执行另一个脚本。此后续脚本执行的命令与此报告中显示的第一个命令相同,只是在Pastebin上使用了不同的目标URL。这个网址怎么了?让我们把这个分解一下,因为这里有一些有趣的东西。首先,该脚本确保/tmp的副本可用(参见第四行),这表明攻击需要根级别的访问权限,因为在/中创建目录通常需要根权限。然后,从第七行开始,它检查是否存在一个在Linux系统中通常不会出现的异常文件:lsx。如果该程序确实在系统中,攻击者运行它并离开。但是,如果系统上尚未安装lsx,攻击者将执行以下操作:尝试安装git尝试安装gcc(C的编译器)下载另一个不同的图像(与之前相同的位置)通过dd从图像中提取一个程序并执行它(与之前相同)运行lsx(这意味着lsx应该由步骤4中运行的程序安装)清理并退出。等等,还有更多!第二个映像最终看起来与第一个完全相同,它提取的程序是一个64位ELF可执行文件。再一次,怎么建立高防cdn,零病毒厂商在VirusTotal上将其标记为恶意的,路由器有ddos防御,行为分析报告显示了一些与git相关的活动,但除此之外没有什么显著的变化。所以我们再一次需要在受控环境中执行程序。这一次,它没有让程序从Pastebin运行,也没有从图像中提取它,而是使用git克隆代码库并从生成的目录树中执行脚本。具体来说,它执行了以下命令:好吧,现在我们知道为什么前面的脚本要安装git了。我们看到了初始值,它将继续执行各种功能,我们将对此进行分解。它首先找到这个ls程序,然后调用一个新的Python脚本(副总裁)在那个地方。Python脚本的大部分内容都是死代码或中文注释,所以我们只需要检查其中的几部分:此例程接受初始值脚本,并将其重命名为ls。-请注意,结尾处的句点是文件新名称的一部分。它还会在/etc中创建一个名为系统配置,是/etc中文件的一个非常合理的名称,但不是合法的配置文件。接下来,程序向该文件写入一个带有数字和日期的字典数组(格式为json)。我们可以在这里看到副总裁运行并执行这两个例程。但是还有一点初始值我们需要关注的是:现在ls命令被以下shell脚本替换:路易斯安那州自然,我们需要看看什么路易斯安那州做。因此ls被一个调用原始ls的shell脚本替换(记住:in副总裁,ls被重命名为ls.)。此外,脚本将传递给ls。最初调用它时使用的所有参数("$@"扩展为调用脚本时使用的所有参数)。在脚本运行了原始ls(又名ls.)之后,脚本将运行另一个名为lsx的程序。换句话说,脚本以调用脚本的用户期望实际ls实用程序运行的方式执行ls的合法副本。意外的部分是lsx的额外执行。情节越来越复杂下一段初始值是我们下一个需要研究的重要问题:现在我们知道了为什么要更早地安装gcc。这个初始值脚本编译C程序x.C并创建一个名为lsx的可执行程序。然后lsx被复制到ls所在的目录,从而允许shell脚本路易斯安那州,它将替换ls命令,以便在运行实际ls(已重命名为ls)后运行lsx。让我们看看x.c程序:实际上,lsx调用一个名为key的Python程序,这让我们回到初始值最后一个重要细节:这只是安装键.py-以及系统python库中的一些辅助python代码。因为它在syskey目录中,所以最简单的方法是键.py将其视为syskey模块的一部分(例如。系统键.key正如我们在x.c项目中看到的)。对于一个只想跑步的人来说,这似乎是一个很大的努力键.py每次ls运行。值得等待维鲁斯托尔没有看到键.py之前,58个杀毒引擎中的0个目前正在对其发出警报。我们会检查的键.py为了清楚地解释它在做什么。好吧,现在我们知道/系统配置文件是为。变量ts最终得到存储为start的日期,表示为自epoch以来的秒数。时间。时间()是当前时间,表示为自纪元以来的秒数。在if块中,我们可以看到当前日期是否早于/etc中存储的时间/系统配置,则此函数只返回而不执行任何操作。否则,变量latency_time被设置为/etc中存储的延迟值的值/系统配置在这个函数中继续执行。这可能会阻止程序在某个开始日期之前运行。在我的示例中,开始日期是2018-01-01,因此该程序目前可以免费运行。这可以防止在某个开始日期之前执行。它也可以作为一种终止开关,通过指定一个遥远的未来日期。这是延迟时间机制的另一部分:这个例程(正在运行)使用文件/tmp/系统跟踪上次运行此程序的时间。如果程序运行时间小于延迟时间秒,则返回True。否则,它将当前时间(从epoch开始以秒为单位)写入该文件并返回False。此例行程序用作检查,以确保键.py不会因为键.py如果运行时间小于延迟时间秒,则中止。如您所见,check()中还有更多内容:这很有趣,因为变量b中有一个保存的SSH身份验证公钥。在上面的图像中,您可以看到身份验证密钥被添加到根帐户的authorized_keys文件中,并确保SSH正在运行。此时,任何知道相应SSH私钥的人都可以通过SSH登录到root帐户。最后,很清楚所有这些努力的目的:提供持久的根级访问。每次此计算机上的root用户运行"ls"命令时,ddos防御安装,程序键.py'将由root用户运行,并将此后门重新安装到root帐户。但是再等等……还有更多!解码解压后,url中的字符串,u中的变量包含以下字符串:这个平台.平台()调用返回正在运行的操作系统的版本。这意味着在u.strip之后'运行时,此程序将连接到一个web服务器,该服务器的名称被base64编码隐藏、压缩、嵌入分心器主机名中。当它连接到web服务器时,除了通过简单的连接来提供其IP地址外,linuxddos防御软件,它还将把正在运行的操作系统(在刚刚安装了根后门的计算机上)的详细信息上载到服务器上。把松散的东西捆起来