Hi there 👋

welcome to ca110us' blog

SQL Server Weak Password Detection

Recently, during the development of the Windows security agent, there is a feature to perform weak password detection on SQL Server. To obtain a feasible solution, we need to first understand how SQL Server stores and verifies passwords. Hash algorithm and verification function The calculation and verification of password hash are actually reverse processes and former can deduce the latter. This article only focuses on versions after SQL Server 2012. Since that, SQL Server has been using the same algorithm, which is more universal....

April 19, 2023 · 3 min · ca110us

基于内核 Kprobe 的服务器监控防护方案

在介绍文章内容前,首先必须要提一下 HIDS HIDS 全称是 Host-based Intrusion Detection System,即基于主机型入侵检测系统,专注于系统内部,监视系统全部或部分地动态的行为以及整个计算机系统的状态 HIDS 的一般架构是这样: Agent:安装在企业内每台主机,进行系统事件监控,基线采集 管理端:管理每台agent的配置下发,状态检测,版本管理 规则分析中心:接收各种 agent 上传的数据,进行分类重整化,关联分析 展示平台:展示规则分析的结果 这篇文章主要讨论的内容是 Agent 中非常重要的系统事件监控环节,分享一种基于 Kprobe 的事件监控方案。 Kprobe 介绍 Kprobes 是 Linux 的一种特性,它主要被用来调试内核,如探测一些内核函数是否被调用、何时被调用、函数的入参和返回值等,相比于在内核代码中用 printk 来 log 调试信息,Kprobes 的优势在于不用重新编译内核代码,并且可以跟踪内核几乎所有位置的代码,也正是因为这样,它也被用作于监控一些系统事件,就是我今天要分享的内容。 不知道细心的朋友有没有发现,上面讲的是 Kprobes 而不是 Kprobe,网上很多文章都混用这两个词,我觉得他们是有区别的。Kprobes 上面讲了,是 Linux 的一种特性,一种轻量级 Linux 内核调试技术。而 Kprobe 仅是该技术中的一种探测手段(探针类型),除了 Kprobe ,还有 Jprobe 和 Kretprobe。 如何利用 Kprobe 进行事件监控防护 HIDS 常常以 hook 一些 syscall 的方式来捕获异常行为。如 hook execve 来获取异常的执行命令,hook connect 来分析异常的网络行为等。 本文的目的就是通过具体的例子,用 Kprobe 来 hook 一个具体的系统调用,并输出信息以供分析。...

September 2, 2021 · 5 min · ca110us

一次 lua 虚拟机堆栈溢出排查

起因 这一次的问题出现在我开发的安全系统的 agent 中,在正式发布之前,测试到了这个问题,还算幸运😅 在内网测试环境中,agent 一直都没出现问题,直到运行五六天后,突然发现 lua 虚拟机崩溃了… 日志分析 {"level":"error","ts":"2021-05-31 19:50:27.023","caller":"workers/luaworker.go:132","msg":"call run func failed","error":"/data/dep/agent/lua/utils.lua:38: registry overflow\nstack traceback:\n\t[G]: in function 'gsub'\n\t/data/dep/agent/lua/utils.lua:38: in function 'split'\n\tlua/port.lua:42: in function 'inspect'\n\tlua/port.lua:21: in main chunk\n\t[G]: ?","lua":"port.lua"} {"level":"error","ts":"2021-05-31 19:51:27.104","caller":"workers/luaworker.go:132","msg":"call run func failed","error":"/data/dep/agent/lua/utils.lua:38: registry overflow\nstack traceback:\n\t[G]: in function 'gsub'\n\t/data/dep/agent/lua/utils.lua:38: in function 'split'\n\tlua/port.lua:42: in function 'inspect'\n\tlua/port.lua:21: in main chunk\n\t[G]: ?","lua":"port.lua"} {"level":"error","ts":"2021-05-31 19:53:27.296","caller":"workers/luaworker.go:132","msg":"call run func failed","error":"/data/dep/agent/lua/utils.lua:38: registry overflow\nstack traceback:\n\t[G]: in function 'gsub'\n\t/data/dep/agent/lua/utils.lua:38: in function 'split'\n\tlua/port.lua:42: in function 'inspect'\n\tlua/port.lua:21: in main chunk\n\t[G]: ?...

September 1, 2021 · 2 min · ca110us

Mimi

狗是人类最好的朋友 有时候总是觉得世界是有造物主的,科学的解释,宇宙起源于大爆炸,但总很难理解一抔没有思想的尘土何以造就有情感和智慧的生物。小时候总会想象一个场景:有一天,造物主召集了地球上的所有生物,对人类的可耻行为进行审判,所有的生物都唾弃人类的时候,只有猫和狗,投了反对票。猫和狗都是我很喜欢的家养宠物,但在我的主观感受上,狗与人的情感联结似乎更加密切。 前几年,我总爱半夜出门吃夜宵。也是一个普通的夜宵日,碰见了你。当时的你,毛发乱的像一颗球,拖着牵引绳,一看就是离家出走。如果不是你也喜欢出门吃夜宵,那我们大概也不会相遇。那会是冬天,很冷,于是我决定接济你一晚,第二天带你找主人。后来才知道,你是家里第二个毛孩子,和大哥不和,才决心离家出走。你的原主人问我愿不愿意领养你,我就欣然答应了。 第一天晚上,就感觉你好像也喜欢和我一起,可能是之前的主人对你不好。在我家你也是第二个毛孩子,然而还好,66(大白狗)像是一个大哥,在家有吵闹,在外都护着你。听说你们狗一生只认一个主人,66认的是我妈。你应该不是因为因为怕争宠,才认的我吧?你肯定也明白,只有我会在雨天抱着你回家,只有我会给你多些吃的,或者说你一直都觉得是我帮你脱离了苦海😊,总之你只认我,无论我回校读书几个月,只要一回家,你总抛弃我妈,跟我形影不离,好像真的就怕我的屁掉了,你接不到。一起吃夜宵、上网、逛街、熬夜,永远都跟在我身边,只要一下不见我,就开始慌张,有时候我也会躲在角落里,看慌张的你,然后哈哈笑。我还带你去过学校,为了躲保安,拎着你翻墙,还给围栏捅了一刀。直到我工作,还以为有能力把你接到我身边。我把你接来我的城市,在房子里给你安排了一个角落。但是那会,老大也是初入社会,以为工作除了认真别无选择。我总很晚下班,然后才带你在小区走一遭。那段时间,你一天就外出一次,所有屎尿都得憋到晚上,一定很难受,但每次带你出门,你都开心到发癫,不过好像也从来没有怪过我。就这样过了大半年,直到我被通知要“处理掉”你。那时候虽然有点无奈,但毕竟这大半年,你的生活质量很不高,就决定送你回去了。 后来我也是很久回一次家,你也还是和以前一样。只要我回来,就跟着我。你一定很期待我回家,每次返程都想跳上车跟我走。一直想着,等以后有条件了,再接你过来,直到11月9日,你的生命戛然而止,没有告别,我也再也没有机会了。 我不会忘记我的小棕狗,你让我懂得了珍惜身边的人和东西,谢谢你这些年的陪伴。...

November 10, 2020 · 1 min · ca110us