当前位置: 首页 > news >正文

做网站页面珠海网站建立

做网站页面,珠海网站建立,自助建站系统源源码,wordpress文件下载Linux执行命令监控详细实现原理和使用教程#xff0c;以及相关工具的使用。 0x00 背景介绍 Linux上的HIDS需要实时对执行的命令进行监控#xff0c;分析异常或入侵行为#xff0c;有助于安全事件的发现和预防。为了获取执行命令#xff0c;大致有如下方法#xff1a; 遍…Linux执行命令监控详细实现原理和使用教程以及相关工具的使用。 0x00 背景介绍 Linux上的HIDS需要实时对执行的命令进行监控分析异常或入侵行为有助于安全事件的发现和预防。为了获取执行命令大致有如下方法 遍历/proc目录无法捕获瞬间结束的进程。Linux kprobes调试技术并非所有Linux都有此特性需要编译内核时配置。修改glic库中的execve函数但是可通过int0x80绕过glic库这个之前360 A-TEAM一篇文章有写到过。修改sys_call_table通过LKM(loadable kernel module)实时安装和卸载监控模块但是内核模块需要适配内核版本。 确定了Hook点之后就可以选择Hook方案了这时有几个选择 在应用层 1、在ring3通过/etc/ld.so.preload劫持系统调用 2、二次开发glibc加入监控代码(据说某产品就是这么做监控的) 3、基于调试器思想通过ptrace()主动注入 在应用层做Hook的好处是不受内核版本影响通用性较好而且技术难度相对较低但是缺点更明显因为ring3层的Hook都是针对glibc库做的监控只要直接陷入0x80中断就可以绕过glibc库直接调用系统调用比如近期分析的某挖矿木马 既然应用层的监控行不通那就看看内核层的监控手段 1、API Inline Hook 2、sys_call_table Hook 3、IDT Hook 4、利用LSM(Linux Security Module) API Inline Hook以及IDT Hook操作难度较大而且兼容性较差利用LSM监控API虽然性能最好但是必须编译进内核才能使用不可以实时安装卸载而sys_call_table的Hook相对易于操作作为防御者也可以直接从” /boot/System.map-uname -r ”中直接获取sys_call_table地址也可以利用LKM(loadable kernel module)技术实现实时安装卸载所以最后选择在内核层Hook sys_call_table实现监控。 综合上面方案的优缺点我们选择修改sys_call_table中的execve系统调用虽然要适配内核版本但是能100%监控执行的命令。 Linux执行命令监控是一种安全机制它允许系统管理员跟踪和记录用户在系统上执行的所有命令。这种监控对于确保系统安全、防止滥用和进行事后分析非常重要。以下是Linux执行命令监控的详细实现原理和使用教程。 实现原理 Linux执行命令监控的实现原理主要基于以下几个方面 审计系统 Linux的审计系统auditd是一个强大的工具它可以记录系统调用和关键文件的更改。通过配置审计规则管理员可以监控特定用户的命令执行情况。 命令历史记录 Linux的history命令可以记录用户在终端会话中执行的所有命令。这个功能默认启用并且可以通过.bash_history文件来查看。 进程监控 使用如ps、top、htop等工具可以实时监控系统上运行的进程。结合其他工具如awk和grep可以过滤出特定用户的进程。 日志文件 Linux系统会生成多种日志文件如/var/log/auth.log记录了用户的登录和注销信息而/var/log/secure在某些发行版中记录了认证相关的事件。 系统调用跟踪 通过使用如strace这样的工具可以监控和记录进程执行的系统调用。这对于理解命令执行的底层行为非常有用。 文件系统监控 使用inotify工具可以监控文件系统事件如文件的创建、修改和删除。这对于跟踪命令对文件系统的影响很有帮助。 使用教程 以下是如何在Linux系统中设置和使用命令监控的教程 1. 使用auditd监控命令执行 安装auditd sudo apt-get install auditd audispd-plugins # Debian/Ubuntu sudo yum install auditd audispd-plugins # CentOS/RedHat配置审计规则 使用auditctl命令添加规则例如监控所有用户的sudo命令 sudo auditctl -w /usr/bin/sudo -p x -k sudo_rule这里-w指定要监控的文件或目录-p x表示监控所有执行权限-k用于为规则命名。 查看审计日志 审计日志通常存储在/var/log/audit/audit.log。可以使用ausearch工具来搜索和分析日志 sudo ausearch -k sudo_rule2. 查看命令历史记录 查看历史命令 history或者查看历史记录文件 cat ~/.bash_history配置历史记录 可以编辑用户的.bashrc或.bash_profile文件来更改历史记录的行为例如增加历史记录的大小或自动记录命令。 3. 监控进程 实时监控进程 top或者使用htop如果已安装 htop过滤特定用户的进程 ps -u username4. 分析日志文件 查看认证日志cat /var/log/auth.log或者使用less或tail进行分页查看。 5. 使用strace跟踪系统调用 监控特定进程strace -p pid其中pid是要监控的进程ID。 6. 监控文件系统事件 监控特定目录inotifywait -m -r /path/to/directory-m表示监控模式-r表示递归监控。 Linux执行命令监控是一个涉及多个工具和机制的复杂过程。通过合理配置和使用这些工具系统管理员可以有效地监控和记录用户的行为从而提高系统的安全性和可审计性。需要注意的是监控活动应当遵守相关的隐私和法律规定确保在合法和道德的框架内进行。 0x01 总体架构 首先sys_execve监控模块需要替换原有的execve系统调用。在执行命令时首先会进入监控函数将日志通过NetLink发送到用户态分析程序如想在此处进行命令拦截修改代码后也是可以实现的然后继续执行系统原生的execve函数。 0x02 获取sys_call_table地址 获取sys_call_table的数组地址可以通过/boot目录下的System.map文件中查找。 命令如下 cat /boot/System.map-uname-r| grep sys_call_table 这种方式比较麻烦在每次insmod内核模块的时候需要将获取到的地址通过内核模块传参的方式传入。而且System.map并不是每个系统都有的删除System.map对于系统运行无影响。 我们通过假设加偏移的方法获取到sys_call_table地址首先假设sys_call_tale地址为sys_close然后判断sys_call_table[__NR_close]是否等于sys_close如果不等于则将刚才的sys_call_table偏移sizeof(void *)这么多字节直到满足之前的判断条件则说明找到正确的sys_call_table的地址了。 代码如下 unsigned long **find_sys_call_table(void) {unsigned long ptr;unsigned long *p;pr_err(Start foundsys_call_table.\n);for (ptr (unsignedlong)sys_close;ptr (unsignedlong)loops_per_jiffy;ptr sizeof(void*)) {p (unsigned long*)ptr;if (p[__NR_close] (unsigned long)sys_close) {pr_err(Foundthe sys_call_table!!! __NR_close[%d] sys_close[%lx]\n__NR_execve[%d] sct[__NR_execve][0x%lx]\n,__NR_close,(unsigned long)sys_close,__NR_execve,p[__NR_execve]);return (unsignedlong **)p;} } return NULL; }0x03 修改__NR_execve地址 即使获取到了sys_call_table也无法修改其中的值因为sys_call_table是一个const类型在修改时会报错。因此需要将寄存器cr0中的写保护位关掉wp写保护的对应的bit位为0x00010000。 代码如下 unsigned long original_cr0; original_cr0 read_cr0(); write_cr0(original_cr0 ~0x00010000); #解除写保护 orig_stub_execve (void *)(sys_call_table_ptr[__NR_execve]); sys_call_table_ptr[__NR_execve] (void *)monitor_stub_execve_hook; write_cr0(original_cr0); #加上写保护在修改sys_call_hook[__NR_execve]中的地址时不只是保存原始的execve的地址同时把所有原始的系统调用全部保存下载。 void *orig_sys_call_table [NR_syscalls]; for(i 0; i NR_syscalls - 1; i ) {orig_sys_call_table[i] sys_call_table_ptr[i]; }0x04 Execve进行栈平衡 除了execve之外的其他系统调用基本只要自定义函数例如my_sys_write函数在此函数中预先执行我们的逻辑然后再执行orig_sys_write函数参数原模原样传入即可。但是execve不能模仿上面的写法用以上的方法可能会导致Kernel Panic。 需要进行一下栈平衡操作如下 定义替换原始execve函数的函数monitor_stub_execve_hook .text .global monitor_stub_execve_hook monitor_stub_execve_hook:在执行execve监控函数之前将原始的寄存器进行入栈操作 pushq %rbx pushq %rdi pushq %rsi pushq %rdx pushq %rcx pushq %rax pushq %r8 pushq %r9 pushq %r10 pushq %r11执行监控函数并Netlink上报操作 call monitor_execve_hook 入栈的寄存器值进行出栈操作 pop %r11 pop %r10 pop %r9 pop %r8 pop %rax pop %rcx pop %rdx pop %rsi pop %rdi pushq %rbx执行系统的execve函数 jmp *orig_sys_call_table(, %rax, 8) 0x05 执行命令信息获取 监控执行命令如果用户态使用的是相对路径执行此模块也需要获取出全路径。通过getname()函数获取执行文件名通过open_exec()和d_path()获取出执行文件全路径。通过current结构体变量获取进程pid父进程名ppid等信息。同时也获取运行时的环境变量中PWDLOGIN相关的值。 最终将获取到的数据组装成字符串用ascii码值为0x1作为分隔符通过netlink_broadcast()发送到到用户态分析程序处理。 0x06 监控效果 在加载内核模块在用户态执行netlink消息接收程序。然后使用相对路径执行命令./t my name is xxxx然后查看用户态测试程序获取的数据。 0x07 版本支持及代码 支持内核版本2.6.32, 3.10.0 源代码路径https://github.com/ysrc/yulong-hids/tree/master/syscall_hook 在Linux系统中有多种工具可以用来监控执行命令这些工具可以帮助系统管理员跟踪用户行为、审计系统操作或进行安全分析。以下是20个用于监控Linux执行命令的工具以及它们的访问链接 auditd - Linux审计守护进程 访问链接: https://www.linux-audit.com/ syslog-ng - 灵活的日志管理工具 访问链接: https://www.syslog-ng.com/ rsyslog - 用于日志处理的系统服务 访问链接: http://www.rsyslog.com/ logrotate - 管理日志文件的轮换、压缩和删除 访问链接: https://github.com/logrotate/logrotate logwatch - 监视系统日志并生成报告 访问链接: https://sourceforge.net/projects/logwatch/ Swatch - 监视系统日志文件的变化 访问链接: http://swatch.sourceforge.net/ Glog - C日志库支持日志监控 访问链接: https://github.com/google/glog Logstash - 收集、解析和丰富日志数据 访问链接: https://www.elastic.co/de/products/logstash Filebeat - 轻量级日志文件收集器 访问链接: https://www.elastic.co/de/products/beats/filebeat GoAccess - 实时日志分析器和交云式查看器 访问链接: https://goaccess.io/ Graylog - 强大的日志管理平台 访问链接: https://www.graylog.org/ Fluentd - 开源数据收集器 访问链接: https://www.fluentd.org/ Prometheus - 监控系统和应用程序的时间序列数据库 访问链接: https://prometheus.io/ Netdata - 性能监控和可视化工具 访问链接: https://www.netdata.cloud/ Zabbix - 企业级监控解决方案 访问链接: https://www.zabbix.com/ Nagios - 监控系统、网络和基础设施 访问链接: https://www.nagios.org/ Icinga - 监控系统Nagios的分支 访问链接: https://www.icinga.com/ Puppet - 配置管理平台可以用于监控配置变更 访问链接: https://puppet.com/ Chef - 自动化平台用于管理服务器和应用程序 访问链接: https://www.chef.io/ Ansible - 自动化工具可以用于监控和执行任务 访问链接: https://www.ansible.com/ 请注意上述工具的使用应遵守法律法规并在获得授权的情况下进行。这些工具主要用于教育和安全研究目的以提高系统的安全性。在使用这些工具时应确保不侵犯他人的隐私和权益。
http://www.hkea.cn/news/14456003/

相关文章:

  • 怎么让网站快速被收录门户网站管理流程
  • 建设网站需要多少钱济南兴田德润地址网站建设及运营 经营范围
  • 网站接广告安康 住房城乡建设部网站
  • 河南省建设厅网站 吴浩太原市建设交易中心网站
  • 梁山网站建设价格wordpress怎么设计网站
  • 公司做网站需要服务器吗网站建设工种
  • 福田附近网站建设苏州和城乡建设局网站首页
  • 坪山网站建设哪家效益快自适应主题 wordpress
  • 旅游网站开发的背景全网营销销售
  • 网站建设上线多久魔域永恒网页游戏
  • 网站建设二级分销公众号官方
  • 平板电脑 做网站开发wordpress搜索标题
  • 个人怎么建立网站吗凡科网站怎么做友情链接
  • 广州网站开发十度网络最好新网站前期seo怎么做
  • 公司网站管理实验报告网站建设如何去找客户
  • 我自己做的网站打开很慢建设社团网站的可行性分析
  • 网站建设开发综合实训小结阜阳企业网站推广
  • 别人能打开的网站我打不开优秀电商网站设计
  • 长沙网站的优化如何编辑企业网站
  • 网站名网页制作实践 做网站
  • 邱启良 深圳网站建设微信分销平台系统
  • 网站排名大全网站上的图片怎么替换
  • 怎么推广自己的偏方抚州seo快速排名
  • 海外房产网站建设校网站建设方案
  • 石家庄seo网站优化报价网站这么做404页面
  • 新乡网站建设桂林象鼻山景区介绍
  • 汕尾网站开发python网站开发教程
  • 小白node怎么做网站单本小说wordpress
  • 沛县互助网站开发柳州网站建设招聘
  • 网站定制化价格工程公司有哪些