<dl id="opymh"></dl>

<div id="opymh"></div>
      <div id="opymh"><tr id="opymh"></tr></div>

        <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

        <em id="opymh"></em>

        <em id="opymh"><ol id="opymh"></ol></em>

              频道栏目
              首页 > 安全 > 系统安全 > 正文

              如何快速找出Linux服务器上不该存在恶意或后门文件

              2018-05-22 16:36:53           
              收藏   我要投稿

              如何快速找出Linux服务器上不该存在恶意或后门文件¡£前段时间我在APT写作时注意到一个问题£¬我发现网上大多都是关于Windows恶意软件检测的文章以及教程£¬而关于如何寻找Linux系统上恶意软件的资料却少之又少¡£因此£¬这篇文章主要是向大家介绍一些有关检查Linux系统恶意软件的技巧和方法¡£话不多说£¬让我们进入正题¡£

              校验二进制文件

              有一件事需要检查确认即没有运行的二进制文件被修改¡£这种类型的恶意软件可以用sshd的版本来支持£¬以允许使用特定的密码连接到系统£¬甚至是一些二进制文件的修改版本£¬它以root?#27809;?#36523;份运?#26657;?#21482;需监听触发器数据包?#33041;?#22987;套接字即可¡£为此£¬我们将以Redhat和Debian为例¡£

              寻找不属于的二进制文件

              find /proc/*/exe -exec readlink {} + | xargs rpm -qf | grep “not owned”

              find /proc/*/exe -exec readlink {} + | xargs dpkg -S | grep “no path”

              校验运行的二进制文件是否与包中的文件匹配

              find /proc/*/exe -exec readlink {} + | xargs rpm -qf | xargs rpm -V

              find /proc/*/exe -exec readlink {} + | xargs dpkg -S | cut -d: -f1 | xargs dpkg -V

              \

              校验所有包文件

              另一件需要检查确?#31995;?#20107;是?#27492;?#26377;属于包的二进制文件都没有被修改¡£这个过程可能需要一段时间才能完成£¬但这是值得¡£我们可以设置一个cron jobs£¬以在指定时间来运行它¡£

              校验所有包文件

              rpm -Va

              dpkg -V

              \

              输出结果

              输出应该?#20801;?#23646;于包的任何二进制文件£¬计算二进制文件的哈希值£¬并将其与包安装或更新时保存的?#21040;?#34892;比较¡£以下是基于Redhat系统的输出¡£使用dpkg的Debian系统不校验其中的大部分£¬因此如果修改了二进制文件£¬只?#20801;?ldquo;5”¡£

              S 文件大小不同

              M 模式不同(包括权限和文件类型)

              5 摘要(以前的MD5 sum)不同

              D 设备主/?#25105;?#21495;不匹配

              L readLink(2)路径不匹配

              U ?#27809;?#25152;有权不同

              G 组的所有权不同

              T mTime不同

              P caPabilities不同

              检查RAW套接字

              我们经常能看到RAW socket后门¡£它们侦听传入的数据包并触发事件£¬例如最近发现的“Chaos”后门£¬以及一个在github上搜索raw socket后门时弹出的示例¡£对于这个检查£¬我们只会看看使用RAW套接字的过程¡£使?#30431;?#20204;的常用程序并不多£¬因此我们可以缩小要查看的进程的?#27573;§¡?/p>

              使用 raw sockets listening检查二进制文件

              netstat -lwp or ss -lwp

              lsof | grep RAW

              \

              检查可能的注入内存

              这里可能会存在各种误报的情况¡£RWX内存(读写执行)被许多程序使用£¬其?#20889;?#22810;数是解释型语言£¬所以像python和java之类的£¬或使用任何库解析脚本的都会有这种情况£¬这是非常正常的¡£如果你找到RWX内存的许多条目并且该进程不是python或java£¬那你就应该仔细的查看一下了¡£该命令将列出RWX内存的进程id¡£可以看到以下列出了cron£¬这显然是不正常的进程¡£

              命令查找pid

              grep -r “rwx” /proc/*/maps | cut -d/ -f 3|uniq -c | sort -nr

              \

              检查修改的PAM模块

              一个常见的后门是插入或替换PAM模块进行?#29616;¤¡?这可以允许远程访问£¬并?#19968;?#20801;许攻击者从任何?#27809;?#33719;取root权限¡£这个后门程序也不关心对/etc/passwd的修改£¬所以所有?#33041;?#22987;密码和修改后的密码仍然有效¡£由于它提供的访问类型£¬在我看来这是一种非常危险的后门类型¡£你可以使用合法登录条目的正常协议£¬因此看起来显然像是没有任何恶意网络活动一样¡£

              校验PAM模块

              find /lib64/security/ | xargs rpm -qf | grep “not owned”

              find /lib64/security/ | xargs rpm -qf | grep -v “not “| xargs rpm -V

              \
              \
              \

              SSH访问

              保持访问权限并不需要删除二进制文件的一种非常简单的方法是£¬只需将ssh密钥添加到特定?#27809;?#30340;authorized_keys文件?#26657;?#24182;允许攻击者像普通?#27809;?#37027;样进入ssh¡£这也是最难检测的方法之一£¬因为你需要确定ssh密钥是合法的还是恶意的£¬这要求?#27809;?#39564;证只有他们的密钥在该文件中¡£攻击者也可以窃取?#27809;?#30340;密钥£¬如果他们之前被盗用过的话¡£

              列出所有?#27809;?#30340;.ssh文件夹

              cat /etc/passwd |cut -d: -f 6 | xargs [email protected] /bin/sh -c “echo @; ls -al @/.ssh/ 2>/dev/null”

              \

              总结

              有许多不同的方式可以保持对Linux服务器的权限访问¡£以上查找列表并不完整£¬但都是一些较为常见的查找后门的方法£¬包括Meterpreter和github上发现的其他常见后门程序¡£

              上一篇£ºLinux 服务器惊现比特币勒索事件£¬做?#30431;?#28857;可免遭损失
              下一篇£º最后一页
              相关文章
              图文推荐

              关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报?#34892;?/a>

              版权所有: 红黑联盟--致力于做实用的IT技术学习网站

              ¼«ËÙ·ÉͧºÃ¼Ù
              <dl id="opymh"></dl>

              <div id="opymh"></div>
                  <div id="opymh"><tr id="opymh"></tr></div>

                    <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                    <em id="opymh"></em>

                    <em id="opymh"><ol id="opymh"></ol></em>

                          <dl id="opymh"></dl>

                          <div id="opymh"></div>
                              <div id="opymh"><tr id="opymh"></tr></div>

                                <em id="opymh"><ins id="opymh"><mark id="opymh"></mark></ins></em><sup id="opymh"><menu id="opymh"></menu></sup>

                                <em id="opymh"></em>

                                <em id="opymh"><ol id="opymh"></ol></em>