HIDS(Host-based Intrusion Detection System)作为网络安全的最后一条战线,我们现阶段是否处于攻防不对等的地位?现在主流的HIDS的建设思路和方式是否又存在各种不可忽视的缺陷?

1.为何是最后一条战线

我们面对各种不同的针对生产环境的威胁,攻击者最终诉求大多是维持一个可长期访问的/有一定权限的通道,便于从内部寻找弱点,得到想要的诸如核心系统,数据库,git/svn/邮件系统的权限,从而实现自己的目的.

那么在这么常规的攻击路径中,HIDS作为主机层的一双眼,往往是离真相最近的那一双,NIDS存在镜像流量可能不全/HTTPS/加密/规则绕过等问题,而据我的经验,稍微高级的入侵者往往并不会采用扫描/暴力破解等动作;WAF作为入口的看门大爷往往没有能力管理从内出去的安全问题;各种架构问题总会导致各处的日志收集不全/或者没有关键上下文难以甄别异常等等.

那么HIDS的作用就异常重要了,即:其他安全防线失效的情况下,HIDS是最后一道防线.如果这里也没有办法发现如:后门,webshell等行为,那么企业可能会长期处于被入侵但是自己丝毫不知情的糟糕地步.

2.现在部分的HIDS技术

我们来大概看看现在主流的HIDS部分关键技术.

  1. Linux Auditd,作为一款以Hook框架发展起来的安全组件,可以Hook任意Syscall和一些关键操作.缺点是性能略差,不支持Namespace(即不支持容器技术,如Docker),还有比如Connect Hook位置靠前导致得不到源端口等小坑,使用Netlink传输性能略差,且难以二次开发等.

  2. cn_proc,很多都采用cn_proc来获取进程创建信息,缺点也是很明显的,获取信息缺失严重,大多数场景需要自己去/proc取(瞬时进程还取不到),不支持Namespace,用户态的功能叠加同样可能会导致性能问题的出现.

  3. 用户态Hook,比如LD_PRELOAD,容易被绕过,且有时不是故意绕过...

  4. clamAV/BusyBox/Rootkit Hunter等其他开源组件,使用规则的问题就是容易被绕过,开源组件拼凑往往难以实现威胁的全覆盖.

  5. 其他系统日志,比如bash_history等等,部分容易被绕过.

3.我们谈谈绕过的问题

为什么我总是说到被绕过?因为我们防御到不是普通的正常用户,面对已知的防御能力,入侵者会想出各种的绕过方法,逃避检测.笔者在之前处理了一起APT攻击事件,攻击组织使用了Kernel Rootkit来逃避检测,而发现时居然已距入侵估计时间节点长达数年之久.

HIDS上一起被绕过的入侵行为,很有可能就是企业安全最不想面对的梦魇,而梦魇来袭,防御者往往毫不知情.

我们随意例举几个笔者所知道的绕过姿势,如果有参与研发HIDS的甲方/乙方的同事不妨评估一下自己的HIDS是否可以精准捕获有效数据已足以支撑你们的决策部分作出判断:

1.更换默认Bash,如csh/zsh

2.巧用shell 命令:

或者:

3.反弹shell时不用bash,而是cp /usr/bin/bash test,然后使用test进行反弹shell

4.进程注入

5.pwnginx/mod_rootme/Knock-out等“复古后门”

6.各种隐秘通道技术(不仅仅有大家都熟知的DNS/ICMP)

7.Rootkit

7.自定义system_call,逃避Auditd等Hook技术

8.nc -e

9.利用memfd_create无文件渗透/利用ptrace模糊执行参数

仔细思考上面随便列举的几个方法,就会发现,攻防不对等技术一直存在.安全工程师过于理想的考虑攻击方手段,逐渐失去Hack的本质.大量使用开源检测组件而逐步失去思考能力,“无开源,不安全” 又导致检测规则和逻辑逐步被绕过而不知.

对于HIDS的检测能力,太多的依赖规则和”进程名“这种不可信的信息来源.而想要的到更精准/全面的信息,要么会出现短连接/短进程捕获不到,性能出现压力,没有成熟的开源组件而放弃想法,一直妥协最终出现目前的状态.

又有多少企业在虚假的安全中而忽视了这些风险呢?我们不得而知.当针对性的攻击出现时,很可能就是:防御终将失效.

4.我们谈谈内核态HIDS

笔者之前开源了Hook system_call的HIDS:AgentSmith-HIDS,反响寥寥.大多数的评价是:“内核态不稳定”,我相信大多数评价者应该都没有使用过/测试过这款开源的产品.习惯性的“Kernel态不稳定”总是政治正确的.当然笔者承认,稳定性和适配性的确是他的一大短板.我们暂且不讨论AgentSmith-HIDS,我们聊聊内核态的HIDS有哪些优势:

  1. 性能,内核态HIDS无需遍历/proc之类的,天然支持Namespace.传输方案也可以用共享内存代替Netlink

  2. 二次开发友好,想要stdin/out?简单,几行代码的事.想要tgid?简单.

  3. 天然支持微隔离,隔离到进程级别-syscall级别(大多数场景connect应该就够了)

  4. 难以绕过(但还是可能,相对困难些,比如“??/!!”这种还是是无法绕过的)

  5. 可以做到一定程度的实时行为检测Rootkit(之前说的APT的后门就是通过这种方式检测出的)

  6. 内核态HIDS并不全是内核态,通常是LKM+用户态Agent,所以,可以做到相互补充,用户态也可以做一些诸如:资产盘点,漏洞检测.webshell静态查杀等等行为

  7. 监控能力到达syscall级别,面对很多绕过的行为,可以支撑更多的行为监测逻辑.比如上文所述的一些绕过的反弹shell

  8. 可以借鉴LKRG(Linux Kernel Runtime Guard)这样优秀的产品,面对各种Linux Kernel的0day也可以做到一定程度的防御

  9. 良好可信的数据收集,带来的是后续优质的,可持续的,可以作为数据分析的数据源,可以建立不同维度的行为模型来发现更隐蔽的异常

  10. Hook部分syscall甚至可以做到业务级的资产梳理,比如A发出了HTTP的Request,Host是XXX(理论可行)

诚然,依然会有很多缺点,但是内核态HIDS并非仅仅有一个LKM,肯定会伴随着用户态Agent的存在,可以发挥的地方比起传统的HIDS只多不少.整体信息收集能力更可信且难以被绕过,由于有进程的完整的syscall信息(hook的syscall)作为支撑,可以做更多的行为检测能力,后期也可以向进程级别微隔离/可信计算/Linux Kernel 0day漏洞检测方向发展,性能/容器化的支持也具有天然优势.

5.思考

作为防御方,我们应该有哪些盾来抵御潜在的“暗箭”呢?这是每一个防御方都要思考的问题,我们更要思考攻击者会有那些可能的方法,绕过我们的防御.想想马奇诺防线吧,臆想的防御方式很有可能不那么奏效.最后,笔者对HIDS的了解和研究也不是很深入,HIDS的学习/研发/测试也只有4-5个月的时间.后来一直在研究其他领域,也欢迎大家提出不同的观点和意见.

最后,这是笔者和老友Gaba还有另一位安全从业10年的老兵一起创建的公众号,偶尔发发技术干货和吐吐槽,欢迎大家关注

为什么我认为现阶段HIDS处于攻防不对等的地位?(ids、nta、绕过)相关推荐

  1. 处于计算机学科的基础地位,谈谈离散数学在计算机学科中的地位和作用(原稿)...

    <谈谈离散数学在计算机学科中的地位和作用(原稿).doc>由会员分享,可免费在线阅读全文,更多与<谈谈离散数学在计算机学科中的地位和作用(原稿)>相关文档资源请在帮帮文库(ww ...

  2. 理清逻辑,确保云原生时代应用开发的全生命周期安全

    摘要:正所谓"道高一尺魔高一丈",不断的攻防对抗中,安全设计者也面临很大的挑战.华为云MVP毛哲文是一个偏向于安全防守的安全工程师,他认为,"攻防之间要做到平衡,知己知彼 ...

  3. 【山外笔记-四级计算机网络】第1章 网络技术基础

    一.计算机网络的形成和发展 1.计算机网络的形成 (1)面向终端的远程联机系统 面向终端的远程联机系统是实现了以单个计算机为中心的联机系统,是一种典型的计算机与数据通信相结合的产物. 1946年世界第 ...

  4. 解码2022中国网安强星丨注重攻防实战化验证,长亭以安全原子能力打造体系化安全

    科技云报道原创. 由中国网络安全产业联盟(CCIA).科技云报道共同主办的"解码2022中国网安强星"活动正式拉开帷幕.本次活动以"网安力量 照见未来"为主题, ...

  5. 2020HW必备-蜜罐如何在攻防演练中战术部防

    原创作者:长亭科技,已获授权. 文末记得获取<红蓝对抗--蓝队手册>,或许对你目前的HW工作有参考价值. 网络攻防演练活动以模拟真实攻击为重要标准,对参与演练单位的各类系统进行渗透,通过设 ...

  6. 区块链应用落地者众,“分布式商业”正处于爆发前夜

    12月21日,金链盟中国区块链应用大赛(以下简称"金链盟大赛")总决赛在深圳落下帷幕. 从8月份以来,近300支参赛队伍基于FISCO BCOS平台,在政务.金融.公益.医疗.教育 ...

  7. [系统安全] 虚拟化安全之虚拟化概述

    本文为笔者从零基础学习系统安全相关内容的笔记,如果您对系统安全.逆向分析等内容感兴趣或者想要了解一些内容,欢迎关注.本系列文章将会随着笔者在未来三年的读研过程中持续更新,由于笔者现阶段还处于初学阶段, ...

  8. 山东大学软件学院网络攻击与防范2022-2023林丰波100词详解

    本篇博客仅对100词作解释,干背的话会发现真的很难背完,可以结合攻防思路来看这一份提纲,没必要连着看. 比如攻击流程从信息收集到最后隐藏撤退,中间相关的流程和工具都是什么 防守呢?常识类?Linux类 ...

  9. [系统安全] MyCCL免杀实验

    本文为笔者从零基础学习系统安全相关内容的笔记,如果您对系统安全.逆向分析等内容感兴趣或者想要了解一些知识,欢迎关注.本系列文章将会随着笔者在未来三年的读研过程中持续更新,由于笔者现阶段还处于初学阶段, ...

最新文章

  1. appium怎么操作物理返回键_Appium Studio使用指南(windows做ios自动化,录制appium脚本)...
  2. Mybatis中typeAliases的使用
  3. leetcode1028. 从先序遍历还原二叉树(dfs/栈)
  4. arcgis字段计算器--随机数
  5. 一文带你了解混淆矩阵!
  6. SAP License:我们到底需要什么能力?
  7. php7视频处理扩展_PHP7扩展开发之类型处理
  8. numpy.zeros(np.zeros)
  9. FSCapture录屏软件
  10. matlab各种分布计算公式,SPC常见项目的计算公式
  11. spss的独立样本T检验
  12. MessageQueue消息队列——基础(笔记)
  13. k8s--基础--12.2--pod--生命周期,状态,重启策略
  14. 网络安全建设网络可用性管理方法
  15. 使用硕正插件在strtus2框架下返回数据问题
  16. 手机的键盘是这样的: 1 2 abc 3 def 4 ghi 5 jkl 6 mno 7 pqrs 8 tuv 9 wxyz * 0 #
  17. c语言如何初始化程序,浅谈C语言的初始化
  18. 米哈游维尔薇vs千劫
  19. 内地人去香港旅游注意事项
  20. java摩尔常量,摩尔气体常量 摩尔气体常数如何理解?

热门文章

  1. 推荐几个常用的生物通路数据库
  2. Mac文本操作实用技巧,快速提升你的工作效率!
  3. 1.3 编程基础之算术表达式与顺序执行 10 计算并联电阻的阻值
  4. php网站跨站脚本监测,基于PHP的在线跨站脚本检测工具.pdf
  5. mysql对结果限制_在查询中限制MySQL结果
  6. 在html标签中写三元运算符,如何在剃须刀中使用三元运算符(特别是在HTML属性上)?...
  7. MySQL笔记-Slave_IO_Running:No【Could ... ... in binary log index file (server_errno=1236)】
  8. Java笔记-Spring Boot生成MD5摘要
  9. java题-如何递归遍历一个文件夹下的所有文件
  10. Qt可执行程序写入版本信息