网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

系统工具团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 工具 > 系统工具 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

AgentSmith-HIDS:高性能主机信息收集工具,可帮助安全研究人员构建自己的HIDS

文章来源:重庆软件开发 发布时间:2020-02-20 14:15:38 围观次数:
分享到:

摘要:AgentSmith-HIDS并不是严格的传统“基于主机的入侵检测系统”(HIDS),它缺少规则引擎和相关的测试能力。 但是它可以用作高性能主机信息收集工具,以帮助安全研究人员构建自己的HIDS。

  AgentSmith-HIDS并不是严格的传统“基于主机的入侵检测系统”(HIDS),因为就项目的当前开源部分而言,它缺少规则引擎和相关的测试能力。但是它可以用作高性能主机信息收集工具,以帮助安全研究人员构建自己的HIDS。


与用户模式的HIDS相比,AgentSmit-HIDS的出色特性(从内核模式获取最完整的数据)具有巨大的优势:


  1.更好的性能:通过内核模式驱动程序获取相关信息,无需执行“遍历/ proc”之类的操作来提高性能或完成数据;数据传输使用共享内存,因此性能相对较好。


  2.避免和绕过更困难:由于我们的信息是从内核状态驱动程序获得的,因此面对非常恶意的行为都无法绕过AgentSmith-HIDS的检测。


  3.易于集成:AgentSmith-HIDS不仅可以用作安全工具,还可以用作监视工具,或帮助员工组织内部资产。 我们通过内核模块组织进程/用户/文件/网络连接。如果检测到与CMDB相关的信息,集成后您将获得一个从网络到主机/容器/业务信息的呼叫/依赖关系图;如果还部署了数据库审计工具,则集成后可以获取数据库的用户/数据库表字段/应用程序/网络/主机容器关系;此外,您还可以与NIDS /威胁情报集成以实现可追溯性目的。


  4.用户模式内核模式:AgentSmith-HIDS同时具有内核模式和用户模式模块,它们可以一起工作。


AgentSmith-HIDS实现以下主要功能:


  1.内核堆栈模块为通过Kprobe的执行,通信连接,进程注入,文件创建,DNS查询和LKM加载设置钩子,并通过兼容的Linux名称空间监视容器环境。


  2.用户栈模块实用程序具有内置的检测功能,包括系统用户列表查询,系统端口监视列表查询,系统RPM LIST查询和系统计划任务查询。


  3.基于Tyton的实现的AntiRootKit,目前已移植PROC_FILE_HOOK,SYSCALL_HOOK,LKM_HIDDEN和INTERRUPTS_HOOK,目前仅支持Kernel> 3.10。


  4.cred 变化检测(sudo / su / sshd除外)


  5.用户登录监控


内核版本兼容性

  Kernel > 2.6.25

  AntiRootKit > 3.10


容器兼容性

blob.png


AgentSmith-HIDS的组件


  1.内核驱动程序模块(LKM),该模块通过Kprobe挂钩关键功能以完成数据捕获;


  2.用户模式代理接收驱动程序捕获的指令并对其进行处理,然后将数据发送到Kafka; 将heartbeat包发送到服务器进行确认,然后接收并执行服务器发送的指令


  3.代理服务器(可选组件),向代理发送控制指令,并检查当前代理的状态和数量;


Execve


  通过挂钩sys_execve()/sys_execveat()/compat_sys_execve()/compat_sys_execveat(),使用以下示例:

  {    "uid":"0",    "data_type":"59",    "run_path":"/opt/ltp/testcases/bin/growfiles",    "exe":"/opt/ltp/testcases/bin/growfiles",    "argv":"growfiles -W gf26 -D 0 -b -i 0 -L 60 -u -B 1000b -e 1 -r 128-32768:128 -R 512-64000 -T 4 -f gfsmallio-35861 -d /tmp/ltp-Ujxl8kKsKY ",    "pid":"35861",    "ppid":"35711",    "pgid":"35861",    "tgid":"35861",    "comm":"growfiles",    "nodename":"test",    "stdin":"/dev/pts/1",    "stdout":"/dev/pts/1",    "sessionid":"3",    "dip":"192.168.165.1",    "dport":"61726",    "sip":"192.168.165.128",    "sport":"22",    "sa_family":"1",    "pid_tree":"1(systemd)->1384(sshd)->2175(sshd)->2177(bash)->2193(fish)->35552(runltp)->35711(ltp-pan)->35861(growfiles)",    "tty_name":"pts1",    "socket_process_pid":"2175",    "socket_process_exe":"/usr/sbin/sshd",    "SSH_CONNECTION":"192.168.165.1 61726 192.168.165.128 22",    "LD_PRELOAD":"/root/ldpreload/test.so",    "user":"root",    "time":"1579575429143",    "local_ip":"192.168.165.128",    "hostname":"test",    "exe_md5":"01272152d4901fd3c2efacab5c0e38e5",    "socket_process_exe_md5":"686cd72b4339da33bfb6fe8fb94a301f"}


文件创建挂钩


  这是通过使用以下示例挂钩security_inode_create()来实现的:

链接挂钩

  这是通过挂钩sys_connect()实现的。

{    "uid":"0",    "data_type":"42",    "sa_family":"2",    "fd":"4",    "dport":"1025",    "dip":"180.101.49.11",    "exe":"/usr/bin/ping",    "pid":"6294",    "ppid":"1941",    "pgid":"6294",    "tgid":"6294",    "comm":"ping",    "nodename":"test",    "sip":"192.168.165.153",    "sport":"45524",    "res":"0",    "sessionid":"1",    "user":"root",    "time":"1575721921240",    "local_ip":"192.168.165.153",    "hostname":"test",    "exe_md5":"735ae70b4ceb8707acc40bc5a3d06e04"}


DNS查询挂钩


  通过使用以下示例,挂钩sys_recvfrom()来实现:


{    "uid":"0",    "data_type":"601",    "sa_family":"2",    "fd":"4",    "dport":"53",    "dip":"192.168.165.2",    "exe":"/usr/bin/ping",    "pid":"6294",    "ppid":"1941",    "pgid":"6294",    "tgid":"6294",    "comm":"ping",    "nodename":"test",    "sip":"192.168.165.153",    "sport":"53178",    "qr":"1",    "opcode":"0",    "rcode":"0",    "query":"www.baidu.com",    "sessionid":"1",    "user":"root",    "time":"1575721921240",    "local_ip":"192.168.165.153",    "hostname":"test",    "exe_md5":"39c45487a85e26ce5755a893f7e88293"}


文件创建挂钩


  这是通过使用以下示例挂钩security_inode_create()来实现的:

{    "uid":"0",    "data_type":"602",    "exe":"/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/jre/bin/java",    "file_path":"/tmp/kafka-logs/replication-offset-checkpoint.tmp",    "pid":"3341",    "ppid":"1",    "pgid":"2657",    "tgid":"2659",    "comm":"kafka-scheduler",    "nodename":"test",    "sessionid":"3",    "user":"root",    "time":"1575721984257",    "local_ip":"192.168.165.153",    "hostname":"test",    "exe_md5":"215be70a38c3a2e14e09d637c85d5311",    "create_file_md5":"d41d8cd98f00b204e9800998ecf8427e"}


进程注入钩


  通过使用以下示例,挂钩sys_ptrace()可实现此目的:

{    "uid":"0",    "data_type":"101",    "ptrace_request":"4",    "target_pid":"7402",    "addr":"00007ffe13011ee6",    "data":"-a",    "exe":"/root/ptrace/ptrace",    "pid":"7401",    "ppid":"1941",    "pgid":"7401",    "tgid":"7401",    "comm":"ptrace",    "nodename":"test",    "sessionid":"1",    "user":"root",    "time":"1575722717065",    "local_ip":"192.168.165.153",    "hostname":"test",    "exe_md5":"863293f9fcf1af7afe5797a4b6b7aa0a"}


LKM文件加载钩子


  通过挂钩load_module()来实现,使用以下示例:

{    "uid":"0",    "data_type":"603",    "exe":"/usr/bin/kmod",    "lkm_file":"/root/ptrace/ptrace",    "pid":"29461",    "ppid":"9766",    "pgid":"29461",    "tgid":"29461",    "comm":"insmod",    "nodename":"test",    "sessionid":"13",    "user":"root",    "time":"1577212873791",    "local_ip":"192.168.165.152",    "hostname":"test",    "exe_md5":"0010433ab9105d666b044779f36d6d1e",    "load_file_md5":"863293f9fcf1af7afe5797a4b6b7aa0a"}


Cred修改钩子


  通过挂钩commit_creds(),使用以下示例实现:

{    "uid":"0",    "data_type":"604",    "exe":"/tmp/tt",    "pid":"27737",    "ppid":"26865",    "pgid":"27737",    "tgid":"27737",    "comm":"tt",    "old_uid":"1000",    "nodename":"test",    "sessionid":"42",    "user":"root",    "time":"1578396197131",    "local_ip":"192.168.165.152",    "hostname":"test",    "exe_md5":"d99a695d2dc4b5099383f30964689c55"}


用户登录警报

{    "data_type":"1001",    "status":"Failed",    "type":"password",    "user_exsit":"false",    "user":"sad",    "from_ip":"192.168.165.1",    "port":"63089",    "processor":"ssh2",    "time":"1578405483119",    "local_ip":"192.168.165.128",    "hostname":"localhost.localdomain"}


PROC文件挂钩警报

{    "uid":"-1",    "data_type":"700",    "module_name":"autoipv6",    "hidden":"0",    "time":"1578384987766",    "local_ip":"192.168.165.152",    "hostname":"test"}


系统调用钩子警报

{    "uid":"-1",    "data_type":"701",    "module_name":"diamorphine",    "hidden":"1",    "syscall_number":"78",    "time":"1578384927606",    "local_ip":"192.168.165.152",    "hostname":"test"}


LKM隐藏警告

{    "uid":"-1",    "data_type":"702",    "module_name":"diamorphine",    "hidden":"1",    "time":"1578384927606",    "local_ip":"192.168.165.152",    "hostname":"test"}


拦截钩子警报

{    "uid":"-1",    "data_type":"703",    "module_name":"syshook",    "hidden":"1",    "interrupt_number":"2",    "time":"1578384927606",    "local_ip":"192.168.165.152",    "hostname":"test"}


blob.png

本文由 重庆软件开发 整理发布,转载请保留出处,内容部分来自于互联网,如有侵权请联系我们删除。

相关热词搜索:AgentSmith-HIDS 主机信息收集工具 构建HIDS 重庆软件开发

上一篇:通过 .git深入理解功能强大的Git工具的构成
下一篇:Ctftool:交互式命令行工具,对CTF进行安全测试

热门资讯

鼠标向下滚动