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

服务器遭受攻击_能不能防止_棋牌防cc

服务器遭受攻击_能不能防止_棋牌防cc

Red Canary intel团队花了大量时间研究Linux系统的端点威胁情况和相关检测可能性。在研究一个特别有趣的持久性策略时,我们有点惊讶地发现ATT&CK中还没有这种技术™ 框架。虽然恶意使用systemd服务对于Linux系统来说并不一定是新鲜事,但是关于对手如何利用它来实现持久性,几乎没有公开的研究或文档。什么是systemd服务?简而言之(主要来源于systemd手册页),systemd是一个Linux发行版的系统和服务管理器。从Windows的角度来看,这个过程完成了wininit.exe文件以及服务.exe合并。它冒着简化systemd功能的风险,初始化Linux系统并启动服务单元文件中定义的相关服务。这些单元文件可以定义诸如httpd之类的二进制文件的执行,在线ddos防御,或者使用类似bash-c的命令行来执行脚本脚本服务.sh.以前的Linux发行版在过去使用过不同的初始化系统,通常是SysVInit。这个系统利用shell脚本来执行提供服务所需的相关组件。几年来,现代Linux系统已经采用systemd来定义服务,不再使用以前的init脚本。许多人并没有张开双臂迎接这一决定,但它似乎一直在这里。系统服务是由什么组成的?服务单元文件定义的结构与此类似:[单位]Description=原子红队服务[服务]类型=简单ExecStart=/bin/touch/tmp/art systemd ExecStart标记[安装]想要的=默认值.target让我们把它分解成碎片。单位描述为定义的服务提供可理解的名称。服务要指定服务执行信息,可以使用多个指令:ExecStart:指定服务启动时执行的命令ExecStartPre:在ExecStart之前执行的命令ExecStartPost:在ExecStart之后执行的命令ExecStop:指定服务停止时执行的命令ExecStopPre:在ExecStop之前执行的命令ExecStopPost:在ExecStop之后执行的命令ExecReload:触发服务配置重新加载的命令安装最后,不限流量高防cdn加速,单元文件指定一个WantedBy指令。如果您是SysVinit系统的老手,您会记得运行级别以及每个init脚本是如何存在于一个文件夹下的,该文件夹编号与相关的运行级别一致。这使得系统可以根据主机如何启动或更改模式来确定将执行哪些服务。在systemd的世界里,目标取代了运行级别。每个目标大致对应于SysVinit的一个运行级别,在本例中,我们的目标是默认目标。它指定该服务应该针对当前设置的任何目标执行,以确保它将在下一次引导时执行。当然比这更复杂…在许多地方,管理员和对手可能会隐藏系统服务文件。对于在系统级别执行的systemd服务,可以将服务文件放在以下文件夹中:/lib/systemd/系统/usr/lib/systemd/系统/etc/系统D/系统/运行/systemd/system对于在单个用户上下文中执行的systemd服务,可以将服务文件放在以下文件夹中:/etc/系统/用户~/.config/systemd/用户~/.local/share/systemd/user/运行/系统/用户/usr/lib/systemd/用户在许多情况下,软件安装会在这些文件夹中放置符号链接(如Windows快捷方式),允许他们将自己的服务文件放在文件系统的任何位置,同时允许systemd发现它。正常是什么样子的?执行时,cc攻击和云防御,systemd服务指定的命令应该始终具有systemd的父进程。在大多数情况下,父systemd进程的进程ID应为1,但也存在可能不是的边缘情况。默认情况下,系统级服务将作为根用户执行。这相当于Windows管理员帐户。如果需要,可以指定附加的配置指令User=,以允许系统级服务模拟另一个用户。但是,不在root的安全上下文中的用户级服务无法模拟其他用户。最后,在管理systemd服务时,必须使用systemctl实用程序来执行某些任务。在某个程序将单元文件写入磁盘后,systemctl enable允许systemd在引导时将其作为服务加载,systemctl start根据需要执行服务文件指定的命令。敌方使用systemd服务Systemd服务是一个很棒的工具,可以让对手利用它来实现持久性。有了适当的权限,对手可以创建一个恶意服务(就像在Windows中一样),允许他们在重新启动之间持续存在,安全狗能防御cc吗,可能是作为root用户。据报道,在2018年,将systemd服务用于持久性的最显著的案例是,archlinux的"acroread"软件包不再维护孤立的软件包。毫无防备的用户下载了acroread,允许其中的恶意脚本通过systemd服务创建持久性。一旦被用户发现,Arch用户存储库的维护人员就会将这些包还原为良性版本。在这里,c语言做ddos防御,敌方在造成巨大伤害之前就被阻止了,这在很大程度上是因为一个有效载荷没有按设计执行。至少有一个主要的威胁参与者Rocke在Linux服务器上的机会主义攻击中使用了这种持久性技术。当他们将有效负载从简单的脚本发展为利用Golang二进制文件时,rock还包括了一个Systemd服务,以确保他们的有效负载在引导时执行。Metasploit框架已经将这种持久性技术整合到其功能中。通过使用服务持久性攻击模块,对手可以在磁盘上创建服务文件,以作为系统级服务或用户级服务执行。自2018年12月起,此功能已成为该工具的一部分。为了利用这一点,对手可以指定自己的有效负载以供执行,而Metasploit可以处理将有效负载写入磁盘、将服务文件写入磁盘以及计划在下次启动时执行的详细信息。如果您想在不设置Metasploit的情况下在您的环境中进行测试,可以使用Atomic Red Team进行测试。我们有一个原子测试,它指导您创建一个简单的systemd服务,并安排它在引导时执行。搜索恶意systemd服务如前所述,systemd服务文件可以存在于磁盘上的多个位置。使用EDR技术进行搜索时,您可以检查这些文件夹的可疑文件修改。默认情况下,通常编写这些文件的进程是Python,这是因为在CentOS/RHEL上通过Yum进行包管理,dpkg是因为在Debian衍生工具上通过apt进行包管理,以及systemctl本身来启用和禁用服务。除了上面提到的那些之外,bashshell脚本和进程很少接触这些文件,所以在搜索时它们会更加可疑。如果您没有EDR工具,并且希望通过Linux命令行查找恶意持久性,可以使用以下命令执行此操作:find/-path"*/systemd/system/*.service"-exec grep-H-E"ExecStart | ExecStop | ExecReload"{}\;2>/dev/nullfind/-path"*/systemd/user/*.service"-exec grep-H-E"ExecStart | ExecStop | ExecReload"{}\;2>/dev/null这些命令将枚举主机上系统和用户systemd服务指定的所有命令。如果有胆量,可以将这些命令与ssh命令结合起来,在远程主机上执行它们,并将输出保存到文件中,以便以后进行查找和处理。请特别注意与您无法识别的服务对应的服务文件,以及执行包含bash、python或sh的命令。在EDR平台上搜索时,请注意涉及systemd的进程祖先。在现代Linux系统上,systemd进程应该启动所有服务,作为所有进程树的根进行操作。大多数时候,systemd会产生守护进程,比如httpd或mysqld。当它产生诸如bash之类的shell进程时,这明确地表明bash被指定为一个服务执行。登录后出现的bashshell的合法用户实例不会作为systemd的直接子级生成,它们存在于祖先链的下游。虽然一个系统->bash祖先并不一定是邪恶的,但当你在自己的环境中狩猎时,这是一个很好的开始。结论通过了解一些Linux系统的内部结构,我们可以找到对手并移除他们的立足点。恶意持久性有多种形式,与Windows一样,了解操作系统的功能会产生很大的不同。