0%

一、起源

大四第一次实习期间曾在公司项目中接触过这个东西,当时还不太了解应用场景,只当成是一个查询主机信息(query os)的普通跨平台开源项目,觉得它用sql进行查询的设计方式很奇怪;第三次实习期间实验室老大手把手教着写安全模型,其中模型计算所用的数据就是osquery在vpc里采集来的,那时才对osquery这类主机数据采集的应用场景有了些了解;后来真正投身主机安全领域才慢慢了解到osquery应用场景还是挺广泛的,目前国内也有很多甲方厂商在安全建设中用直接用它来做数据采集(包括一些知名厂子),而此项目之所以受到甲方安全欢迎,很大程度上包含以下几点原因:

阅读全文 »

一、起源

yulong-hids可以说是国内第一个比较成熟的开源hids项目,虽说项目已经发布很久,但直到几个月前才想着去学习一下其技术原理,主要是之前这块的研究需求不是很高,而且环境搭建过程较为复杂,没有一键化的脚本,自己手搭受挫了几次随即没了兴致(捂脸),最近心血来潮又来玩了一遍终于搭成功了(捂脸),果然还是成长了吗(//雾)

阅读全文 »

一、前言

之前在逛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是目前全文搜索引擎的首选,它可以快速存储、搜索和分析海量数据,其底层为开源库luence搜索引擎,用户无法直接使用,es对其进行封装,并以restful api的格式将接口提供给使用者。wiki将其描述为一个分布式、支持多租户的全文搜索引擎;

​ 默认的elasticsearch是没有可视化界面的,kibana通常用作es的可视化面板和提供可视化交互功能,方便使用者对es的管理。

​ es和kibana通常被应用于elk日志管理的解决方中,其中e指elasticsearch,负责数据检索、分析,k指kibana,用于es日志/交互的可视化,剩下的l代指logstash,用于日志收集和解析及传输,这三个框架在实际业务场景中,如日志管理/分析业务中通常被用做一种通用的解决方案;

​ logstash本身的性能负载相对较高,在一些对性能要求较高的业务环境中可以把logstash换成更轻量的filebeat,形成另一套解决方案efk。

阅读全文 »

原理

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本身的体积无论编写还是编译都不会太过重量。

阅读全文 »

前言

之前就对linux上附加的一些小工具像netstat、ps、top等的功能比较感兴趣,虽然知道本质上还是去解析vfs中的信息,但对其细节比较好奇,这边做下源码分析,同时也为后续对其它相对于netstat更复杂的程序/项目的分析做下铺垫,如sysdig、osquery、linux kernel等等;这块spoock江城子师傅已经写过类似的文章,个人觉得写的很好,要点都get到了,作为读者受益匪浅,贴下链接致敬下引路人:https://blog.spoock.com/2019/05/26/netstat-learn/。

下面所做分析可能无法面面俱到,非核心的函数和功能分析将被drop。

阅读全文 »