AgentSmith-HIDS:高性能主机信息收集工具,可帮助安全研究人员构建自己的HIDS
摘要: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
容器兼容性
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"}
相关热词搜索:AgentSmith-HIDS 主机信息收集工具 构建HIDS 重庆软件开发
上一篇:通过 .git深入理解功能强大的Git工具的构成
下一篇:Ctftool:交互式命令行工具,对CTF进行安全测试
人机验证(Captcha)绕过方法:使用Chrome开发者工具在目标网站登录页面上执行简单的元素编辑,以实现Captcha绕过
牛创网络: " 人机身份验证(Captcha)通常显示在网站的注册,登录名和密码重置页面上。 以下是目标网站在登录页面中排列的验证码机制。 从上图可以
2020-01-26 12:44:09 )8872( 亮了
自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
牛创网络: "自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
2020-01-30 14:04:47 )6288( 亮了
Grafana CVE-2020-13379漏洞分析:重定向和URL参数注入漏洞的综合利用可以在任何Grafana产品实例中实现未经授权的服务器端请求伪造攻击SSRF
牛创网络: "在Grafana产品实例中,综合利用重定向和URL参数注入漏洞可以实现未经授权的服务器端请求伪造攻击(SSRF)。该漏洞影响Grafana 3 0 1至7 0 1版本。
2020-08-12 14:26:44 )4301( 亮了
Nginx反向代理配置及反向代理泛目录,目录,全站方法
牛创网络: "使用nginx代理dan(sui)是http响应消息写入服务地址或Web绝对路径的情况。 写一个死的服务地址是很少见的,但它偶尔也会发生。 最棘手的是写入web绝对路径,特别是如果绝对路径没有公共前缀
2019-06-17 10:08:58 )3858( 亮了
fortify sca自定义代码安全扫描工具扫描规则(源代码编写、规则定义和扫描结果展示)
牛创网络: "一般安全问题(例如代码注入漏洞),当前fortify sca规则具有很多误报,可通过规则优化来减少误报。自带的扫描规则不能检测到这些问题。 需要自定义扫描规则,合规性角度展示安全风险。
2020-02-12 10:49:07 )3505( 亮了
整理几款2020年流行的漏洞扫描工具
牛创网络: "漏洞扫描器就是确保可以及时准确地检测信息平台基础架构的安全性,确保业务的平稳发展,业务的高效快速发展以及公司,企业和国家 地区的所有信息资产的维护安全。
2020-08-05 14:36:26 )2536( 亮了
微擎安装使用技巧-微擎安装的时候页面显示空白是怎么回事?
牛创网络: "我们在公众号开发中,有时候会用到微擎,那我们来看一下微擎安装的时候页面显示空白是怎么回事吧
2019-06-08 15:34:16 )2261( 亮了
渗透测试:利用前端断点拦截和JS脚本替换对前端加密数据的修改
牛创网络: " 本文介绍的两种方法,虽然断点调试比JS脚本代码替换更容易,但是JS脚本代码替换方法可以实现更强大的功能,测试人员可以根据实际需要选择适当的测试方法
2020-01-07 09:34:42 )1995( 亮了
从工业界到学界盘点SAS与R优缺点比较
牛创网络: "虽然它在业界仍然由SAS主导,但R在学术界广泛使用,因为它的免费开源属性允许用户编写和共享他们自己的应用程序 然而,由于缺乏SAS经验,许多获得数据分析学位的学生很难找到工作。
2019-07-13 22:25:29 )1842( 亮了
41款APP侵犯用户隐私权:QQ,小米,搜狐,新浪,人人均被通报
牛创网络: "随着互联网的不断发展,我们进入了一个时代,每个人都离不开手机。 但是,APP越来越侵犯了用户隐私权。12月19日,工业和信息化部发布了《关于侵犯用户权益的APP(第一批)》的通知。
2019-12-20 11:28:14 )1775( 亮了