Osquery Source Analysis | Part 1
Osquery架构设计分析
Osquery检测框架初探
Yulong-Hids Process Monitor Principle Analysis
Yulong-Hids架构设计与功能原理分析
Linux环境下ELF无文件执行与检测
一、前言
之前在逛will师傅创建的灾难控制局学习agent_smith的时候偶然看到这么一篇文章,讲的是黑客马拉松比赛期间gaba和will师傅两人设计的项目”kap”。
kap项目设计的主要目的是为保护线上环境中的敏感/重要应用文件在泄漏后无法被攻击者分析和窃取核心逻辑,从而实现企业层面的重要软件的保护。
大概逻辑是这样的,在程序的编译构建过程中首先用公钥对可执行文件进行粉碎式加密,加密完成后用户若要使用,首先运行agent将加密后的执行文件作为参数进行装载、解密,装载过程中agent会向server端api请求下发私钥,拿到私钥后对加密后的可执行文件进行解密,解密完成后才能真正运行。其中,为了防止攻击者拿到主机权限后进行拷贝,加密的可执行文件解密过程中/后首先是不落盘的,其次为了防止执行过程中被调试,师傅们通过agent的提前ptrace防止敏感进程被其他进程附加调试,最后will师傅还发现通过cp /proc/pid/exe还是 能从内存中把解密后的可执行文件dump出来的,于是写lkm去hook fsnotify阻止用户态对解密后进程的读写等。
以上基本就是kap这个项目的大体运行流程了,通过这些技术,无论是主机被入侵还是敏感文件泄漏,都能在一定程度上防止攻击者真正窃取到程序代码从而避免企业核心机密的泄漏。在这个项目中,了解到了linux下无文件执行的概念,自己用cn_proc手测了下发现隐藏效果确实是非常好的,特意学习下,方便之后的红蓝对抗及产品能力输出等等。
elasticsearch & kibana入门学习
一、介绍
全文搜索属于非常常见的需求,开源的elasticsearch是目前全文搜索引擎的首选,它可以快速存储、搜索和分析海量数据,其底层为开源库luence搜索引擎,用户无法直接使用,es对其进行封装,并以restful api的格式将接口提供给使用者。wiki将其描述为一个分布式、支持多租户的全文搜索引擎;
默认的elasticsearch是没有可视化界面的,kibana通常用作es的可视化面板和提供可视化交互功能,方便使用者对es的管理。
es和kibana通常被应用于elk日志管理的解决方中,其中e指elasticsearch,负责数据检索、分析,k指kibana,用于es日志/交互的可视化,剩下的l代指logstash,用于日志收集和解析及传输,这三个框架在实际业务场景中,如日志管理/分析业务中通常被用做一种通用的解决方案;
logstash本身的性能负载相对较高,在一些对性能要求较高的业务环境中可以把logstash换成更轻量的filebeat,形成另一套解决方案efk。
Rootkit principle analysis and behavior detection
原理
rootkit介绍
0x01 功能
rootkit可以简单理解root.kit,即攻击者取得root权限后所用的工具包,一般来说,90%的rootkit主要目标都是来做对攻击者后门行为的隐藏,但仍有部分rootkit是存在系统操纵和数据收集行为的,包括键盘记录、流量嗅探及程序运行重定向等等;通常来说,rootkit的功能越单一,就越难检测到,一旦rootkit行为太多,很可能触及一些checklist导致暴露,所以保持rootkit功能的单一性是一个优秀的渗透人员需要有的理解。
0x02 分类
通常来说目前常见的rootkit基本可以根据应用的层级分为两类,一种是工作在ring0层的rootkit,另一种是工作在ring3层的rootkit,还有一种比较高级,应用在主机bios层,由于当前场景较少,暂不深入。
0x03 lkm
LKM是loadable kernel module的缩写,意为可加载内核模块,内核本身是一个单模块,单内核模块运行效率高,但是由于所有内容都集成在一个模块里,所以可扩展性/可维护性是比较弱的,为了弥补这个问题,内核模块机制就出现了,原生linux的功能也因lkm的出现可以得到扩展。lkm的优点主要集中在两个方面:
1、动态加/卸载
2、轻量
前者在给内核添加新功能时不用频繁的重编译源码,后者则让lkm本身的体积无论编写还是编译都不会太过重量。
Netstat Source Code Debug
前言
之前就对linux上附加的一些小工具像netstat、ps、top等的功能比较感兴趣,虽然知道本质上还是去解析vfs中的信息,但对其细节比较好奇,这边做下源码分析,同时也为后续对其它相对于netstat更复杂的程序/项目的分析做下铺垫,如sysdig、osquery、linux kernel等等;这块spoock江城子师傅已经写过类似的文章,个人觉得写的很好,要点都get到了,作为读者受益匪浅,贴下链接致敬下引路人:https://blog.spoock.com/2019/05/26/netstat-learn/。
下面所做分析可能无法面面俱到,非核心的函数和功能分析将被drop。