自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

转载 CobaltStrike逆向学习系列(8):Beacon 结果回传流程分析

这是[信安成长计划]的第 8 篇文章关注微信公众号[信安成长计划]0x00 目录0x01 Beacon 接收与处理0x02 结果回传Beacon 在接受完命令并执行后,会将数据加密回传给 TeamServer,TeamServer 进行解析后,并根据类型对结果的格式进行处理后,再回传给 Controller0x01 Beacon 接收与处理直接在通信相关函数上下断,HttpSendRequest 发送任务,InternetReadFile 接收任务跟出函数以后再根据其上下文分析,也就能推

2022-01-19 12:13:56 291

转载 CobaltStrike逆向学习系列(7):Controller 任务发布流程分析

这是[信安成长计划]的第 7 篇文章关注微信公众号[信安成长计划]0x00 目录0x01 Controller->TeamServer0x02 TeamServer->Beacon0x03 流程图所有的任务在 Controller 处理以后,都会直接发送到 TeamServer,接着等待 Beacon 回连的时候将任务取走,文章以 shell whoami 为例0x01 Controller->TeamServer当在 Console 中输入命令回车后,会进入 Beaco

2022-01-14 19:45:09 270

转载 CobaltStrike逆向学习系列(6):Beacon sleep_mask 分析

这是[信安成长计划]的第 6 篇文章关注微信公众号[信安成长计划]0x00 目录0x01 C2Profile 分析0x02 set userwx “true”0x03 set userwx “false”CobaltStrike 提供了一个内存混淆功能,它会在 Sleep 的时候将自身混淆从而避免一定的检测0x01 C2Profile 分析因为 sleep_mask 是从 C2Profile 中设置的,所以就需要先搞清楚 TeamServer 是如何解析的很明显它还跟其他的设置项有关,

2022-01-14 19:44:33 646

转载 CobaltStrike逆向学习系列(5):Bypass BeaconEye

这是[信安成长计划]的第 5 篇文章关注微信公众号[信安成长计划]0x00 目录0x01 BeaconEye 检测原理0x02 Bypass 10x03 Bypass 20x04 效果图在之前的三篇文章《Stageless Beacon 生成流程分析》《Beacon C2Profile 解析》《Beacon 上线协议分析》中,已经穿插着将 C2Profile 的全部内容介绍完了,也把 Bypass 所需要的一些内容也都穿插着提到过了,接下来就该说如何对其进行 Bypass0x01 Beac

2022-01-14 19:43:52 328

转载 CobaltStrike逆向学习系列(4):Beacon 上线协议分析

这是[信安成长计划]的第 4 篇文章关注微信公众号[信安成长计划]0x00 目录0x01 Beacon 发送0x02 TeamServer 处理0x03 流程图0x04 参考文章在上一篇讲解 C2Profile 解析的时候,已经提到过如何断入到真正的 beacon.dll 当中,并且也清楚了它执行时的调用顺序,Beacon 上线的所有流程也都是在第二次主动调用 DLLMain 时执行的。因为主要说明的是上线流程,功能性的暂且不提,但是中间会穿插 C2Profile 的读取操作。0x01

2022-01-14 19:43:16 389

转载 CobaltStrike逆向学习系列(3):Beacon C2Profile 解析

这是[信安成长计划]的第 3 篇文章关注微信公众号[信安成长计划]0x00 目录0x01 Controller 端分析0x02 Beacon 端分析0x03 展示图在上一篇文章中完成了 Stageless Beacon 生成的分析,接下来就是对 Beacon 的分析了,在分析上线之前先将 C2Profile 的解析理清楚,因为 Beacon 中大量的内容都是由 C2Profile 决定的。而且,目前 C2Profile 也是被作为检测 CobaltStrike 的一种手段,只有在理解了它的实

2022-01-14 19:42:16 265

转载 CobaltStrike逆向学习系列(2):Stageless Beacon 生成流程分析

这是[信安成长计划]的第 2 篇文章关注微信公众号[信安成长计划]0x00 目录0x01 Patch Beacon0x02 Patch Loader0x03 文件对比0x04 流程图CobaltStrike 的 Beacon 生成分为两种,Stage Beacon 和 Stageless Beacon,这次主要来说明的是无阶段的 Stageless Beacon,最终文件比较大,不用从网络中来拉取。本文的分析流程使用的 payload 是 windows/beacon_http/rever

2022-01-14 19:41:27 305

转载 CobaltStrike逆向学习系列(1):CS 登陆通信流程分析

这是[信安成长计划]的第 1 篇文章关注微信公众号[信安成长计划]0x00 目录0x01 密码校验0x02 aggressor.authenticate0x03 aggressor.metadata0x04 数据同步0x05 流程图0x06 参考文章先统一一下后续文章所提到的一些名词,以确保大家都在聊同一个东西,文中将 CobaltStrike分为 Controller、TeamServer、Beacon 三端,本文所描述的是 TeamServer 启动之后,从 Controller 登

2022-01-14 19:39:12 424

原创 深入IAT HOOK

在上一篇文章手动打造一个弹窗程序中,我们自己手写了一份导入表,在调用函数的时候,我们CALL的是导入地址表的一个地址,为什么要调用这里,而且在构造导入表的时候,导入名称表(INT)和导入地址表(IAT)里面装的内容是一样的,程序又是怎么去调用的,在这篇文章中就来分析一下。注:以下操作是在 XP 上实现的,其他版本注意写保护机制目录0x00 IAT表的填写0x01 IAT HOOK的原理0x02 实现代码0x00 IAT表的填写在上一篇文章中,我们构造导入表的时候,将 IAT 表和 INT 表都

2020-07-13 10:12:47 2167 1

原创 手动打造一个弹窗程序

在平时的分析当中,经常会碰到PE结构的文件,虽然 010 Editor 等工具会提供一个模板,把各个部分都详细的标记出来,但是在调试的时候,经常会需要在 VS 等程序框中进行调试,所以,就需要对PE结构有一定的了解,才能够快速定位到自己想要的地方。为了更好的了解PE结构中的每一位的作用,最好的办法就是自己手写一个PE文件,这样对每一个部分的理解,都会清晰很多。 目录0x00 准备工作 0x01 构造DOS头0x02 构造File头0x03 构造Optional头0x04 构造节表0x05

2020-07-11 09:57:30 1405

原创 探讨进制的本质

文章来源:https://blog.seclibs.com/2020/02/25/进制的本质/什么是进制,进制的本质又是什么,为什么在计算的时候都会把十进制作为中间转换,其实这样的思维完全是错误的,进制的本质并不是我们熟悉的十进制。进制的本质进制的本质就是查表,与各种的转换没有任何关系,并不是说计算八进制,就把它转为十进制计算后再转回八进制,这种思想本来就是错误的,进制的本质就是写表和查表,...

2020-03-10 14:15:26 359

原创 基于数组越界的缓冲区溢出

文章来源:https://blog.seclibs.com/基于数组越界的缓冲区溢出/上一篇文章说了函数调用时候的堆栈变化,这里就基于这个内容来验证一下基于数组越界的缓冲区溢出。在c语言中,数组必须是静态的,也就是在定义的时候必须明确数组的大小,在根本上来说,这个是堆栈提升的原因,只有在数组的大小确定的时候,才能明确堆栈到底要提升多少,如果数组的大小是动态变化的,就极容易发生缓冲区溢出;而且c...

2020-02-15 23:27:02 1132 1

原创 函数调用堆栈图-c语言

文章来源:https://blog.seclibs.com/函数调用堆栈图-c语言/我们就使用一个简单的c语言程序来对描述一下在函数调用的时候都发生了什么。中间的一小段没有意义的汇编语言是为了方便设置断点,为后面的调试做好铺垫,因为有时会碰到找不到断点位置的情况,使用这个方法,可以在找不到断点的时候向后执行一次,而不破坏我们想调试的程序当前的堆栈状态,这里对main函数和sum函数的效果是类...

2020-02-15 22:59:44 890

原创 算法之二分查找(上)-c语言实现

文章来源:http://blog.seclibs.com/算法之二分查找上-c语言实现/使用递归来实现的,逻辑比较简单,也不是太复杂的东西,直接上代码了如果需要下载代码,请移步至文末代码:Github文章首发公众号和个人博客公众号:无心的梦呓(wuxinmengyi)博客:http://blog.seclibs.com/...

2020-02-08 22:43:50 164

原创 算法之二分查找(上)

文章来源:http://blog.seclibs.com/算法之二分查找上/二分查找在平时的生活中也挺常用的,比如说以前玩的猜数游戏,每次都取中间数,然后得知是大了,还是小了,这个例子也就是二分查找。比如下面的这个例子,要查找有没有数值19,其中low和high是查找的区间的下标,mid是查找区域的中间值的下标。二分查找的思想是比较容易理解的,而且它的时间复杂度也是比较低的。假设数据大小为...

2020-02-08 22:36:52 133

原创 Nginx学习-架构

文章来源:http://blog.seclibs.com/nginx学习-架构/Nginx程序架构图如下后面就先按照这个图所展示出来的内容对Nginx的架构进行一次梳理,文中所涉及到的内容,主要都是针对Linux系统的。最上面的Master进程是管理员直接控制的,也只有Master进行接受管理员信号,一个Master用户可以fork多个Worker进程,一个Worker进程可以响应多个用户...

2020-02-07 22:33:18 227

原创 算法之排序(下)

文章来源:http://blog.seclibs.com/算法之排序下/前面两篇文章说了时间复杂度为O(n2)的冒泡排序、插入排序和选择排序;也说了时间复杂度为O(nlogn)的归并排序和快速排序;这次来说一下时间复杂度为O(n)的桶排序、计数排序和基数排序,由于它们的时间复杂度是线性的,所以它们也叫做线性排序(Linear sort),之所以能够做到线性复杂度,是因为它们在排序的时候,不涉及元...

2020-02-06 21:39:08 160

原创 算法之排序(中)-c语言实现

文章来源:http://blog.seclibs.com/算法之排序中-c语言实现/上一篇文章里说了归并排序和快速排序,它们的代码实现是非常相似的,只要理解了其中的具体实现,还是比较容易写出代码的。归并排序代码如下,需要下载代码的请移步至文末快速排序代码如下,需要下载代码的请移步至文末代码:归并排序:GitHub快速排序:GitHub文章首发公众号和个人博客公众号:无...

2020-02-05 20:36:38 112

原创 算法之排序(中)

文章来源:http://blog.seclibs.com/算法之排序中/上一篇文章说了时间复杂度为O(n2)的冒泡、插入和选择三个排序方式,它们只适合在数据规模比较小的时候,接下来要说的是两个时间复杂度为O(nlogn)的算法,归并排序和快速排序,它们比较适合在大规模数据的时候使用,相比于前面的三个算法就更加常用。首先来看归并排序(Merge Sort)归并排序的操作还是比较简单的,它是将...

2020-02-05 20:28:15 284

原创 算法之排序(上)-c语言实现

文章来源:http://blog.seclibs.com/算法之排序(上)-c语言实现/在上一篇文章中,我们说了时间复杂度为 O(n2)的几个排序算法,冒泡排序、插入排序、选择排序,在理解上和实现上都没有太难的地方,这里在实现的时候,没有再自己实现数组或链表,而是使用了c语言自带的数组进行实现的,代码中没有太难理解的地方,就直接上代码了如果需要下载代码,请移步文末代码:GitHub文章...

2020-02-04 19:50:54 123

原创 算法之排序(上)

文章来源:http://blog.seclibs.com/算法之排序(上)/排序算法有很多种,甚至有很多都完全没有听过,我们最常见,也最经典的就是:冒泡排序、插入排序、选择排序、归并排序、快速排序、计数排序、基数排序、桶排序。按照时间复杂度来进行划分可以将其划分为三类O(n2) :冒泡、插入、选择;基于比较O(nlogn):快排、归并;基于比较O(n):桶、计数、基数;不基于比较这...

2020-02-04 19:44:45 148

原创 算法之递归-c语言实现

文章来源:http://blog.seclibs.com/算法之递归-c语言实现/在上一篇文章里说了递归,这里就使用其中的上楼梯问题来进行代码实现,在上一篇文章里也说过了中间会有重复计算的情况,这里我们使用一维动态数组来进行存储,一维数组的索引值就与楼梯层数相同,可以更加清晰的理解其中的含义,代码如下如果需要下载代码,请移步至文末代码:GitHub文章首发公众号和个人博客公众号:无心...

2020-02-03 17:22:17 804

原创 算法之递归

文章来源:http://blog.seclibs.com/算法之递归/递归是一种应用非常广泛的算法,在很多的数据结构和算法的编码中都会用到,理解递归是非常重要的。递归在平时的生活中也是非常常用的,当你排队的时候需要知道自己排在第几个位置,而前面的人又比较多,你不能自己数出来,就可以询问你前一个人他的位置,在他的位置基础上加一便是你的位置,那如果他也不知道他的位置呢,就可以用同样的方法,继续向前...

2020-02-03 16:40:10 127

原创 数据结构之顺序队列、链式队列、循环队列-c语言实现

文章来源:http://blog.seclibs.com/数据结构之顺序队列、链式队列、循环队列-c语言实/在上一篇文章里,说了队列的相关内容,其中除了这篇文章说的顺序队列、链式队列和循环队列三个,还提到了阻塞队列和并发队列,这两个因为能力原因,还没能实现,这个坑等以后再来补。回来说这次实现的三个队列,首先是顺序队列,顺序队列是基于数组来实现的队列,在原数组的实现基础上增加了head和tail...

2020-02-02 22:56:31 467

原创 数据结构之队列

文章来源:http://blog.seclibs.com/数据结构之队列/上一篇文章说了一种“功能受限”的顺序表——栈,现在再来说一个 “功能受限”的顺序表 ——队列(queue)。队列也是一个常用的数据结构,在大部分资源有限的情况下,当没有空闲资源的时候,基本上都是使用队列这种数据结构来实现请求排队的。队列,顾名思义,就是排的一条队,比如在买票的时候排的一条队伍,先来的先买,后来的后买,不...

2020-02-01 22:21:11 644

原创 数据结构之循环链表-c语言实现

文章来源:http://blog.seclibs.com/数据结构之循环链表-c语言实现/之前在链表那一节说了单链表、双向链表和循环链表,前面已经把单链表和双向链表用代码实现过了,当时没有实现循环链表是在实现的过程中有一点没有想明白,今天在实现栈的时候突然相通了,就把这两条给补上。循环链表有两种实现方式,循环单链表和循环双向链表因为在前面的实现过程中,我的考虑不是很全面,导致后面在它们的基础...

2020-02-01 13:39:35 2063

原创 数据结构之栈-c语言实现

文章来源:http://blog.seclibs.com/数据结构之栈-c语言实现/在上一篇文章中说过,栈在实现上分为顺序栈和链式栈两种。顺序栈: 用数组实现的栈链式栈: 用链表实现的栈因为栈就是一种“功能受限”的顺序表,所以在实现的时候,在之前数组和链表的基础上进行修改即可达到效果。顺序栈在实现顺序栈的时候,为了更好的表示栈顶元素top,我将之前数组中的使用个数used替换为top,...

2020-01-31 16:55:20 857

原创 数据结构之栈

文章来源:http://blog.seclibs.com/数据结构之栈/前面说完了数组和列表两个常用的数据结构,虽然它们的实现代码还很粗糙,但是不妨碍自己对数据结构的深入理解,接下来就说一说栈(stack)栈,可以用一个很常见的事物来说明,比如我们放了一摞盘子,如果我们想取走下面的某一个盘子,就必须先将上面的盘子挨个移走才可以,跟小时候玩的汉诺塔益智游戏是一样的结构, 也就是后放上去的先拿出来...

2020-01-30 20:27:05 474

原创 数据结构之双向链表-c语言实现

原文链接:http://blog.seclibs.com/数据结构之双向链表-c语言实现/这次完成了双向链表的代码实现,同时也发现了一处单链表中同样存在的错误,如果有兴趣可以回去再研究一下,文章链接如下:http://blog.seclibs.com/数据结构之单链表-c语言实现/双向链表相对于单链表来说,复杂之处在于对数据的插入和删除操作时,如何处理指针的指向关系,这个时候画图来帮助理解是一...

2020-01-29 22:50:20 633 1

原创 数据结构之单链表-c语言实现

文章来源:http://blog.seclibs.com/数据结构之单链表-c语言实现/常用的链表有单链表、双向链表和循环链表,这次只完成了单链表的c语言实现,在写代码中所遇到的问题在代码注释中也都有标注,在实现上最关键的还是对整体结构的理解,只有对整体结构有一定的了解,才能在具体的代码实现中少走很多的弯路,在具体的代码实现过程中,要着重关注每一个变量的内容和具体的含义,只有搞清楚了这一点才能在...

2020-01-28 22:30:30 622

原创 数据结构之链表

文章来源:http://blog.seclibs.com/数据结构之链表/前面讲了数据结构中最常用、最基础的数组,接下来说一说数据结构中另一个比较基础比较常用的数据结构——链表,相比于数组来说,链表更为复杂一点,在理解和实现上都比较困难。首先数组必须是一段连续的内存空间来进行存储的,即使剩余的内存碎片整合在一起大于所需要的内存也是不能申请成功的,而链表则不然,它不需要连续的内存空间,而是靠“...

2020-01-27 16:41:26 960

原创 数据结构之数组-c代码实现

在上一篇文章里讲了数组的具体内容,然后自己使用c语言对数组进行了实现。其中定义了一个结构体,定义了长度、已使用长度和地址指针。定义alloc函数来分配内存空间之后便是插入元素的insert函数、打印数组的dump函数、搜索数组的search函数和删除数组的del函数所有的操作步骤都是在main函数中提前定义好了,来进行验证前面所实现的函数如果需要下载代码,请移步文章最后。运行结果...

2020-01-27 12:49:18 1188

原创 数据结构之数组

文章来源:http://blog.seclibs.com/数据结构之数组/在说数组之前咱们先明确两个概念,什么是线性表,什么是非线性表顾名思义,线性表就是把数据排成一条,每个数据只有前后两种情况,常见的线性表有数组、链表、队列、栈等那非线性表就更好理解了,数据不是按照一条线来排列的,每个数据并不只有前后两个方向,常见的有二叉树、堆、图等明白了这个概念之后,咱们再来说数组,什么是数组?...

2020-01-27 12:43:40 586

原创 时间复杂度分析

在上一篇文章中我们提到了时间复杂度大O分析法的使用,这次继续来探究时间复杂度的分析我们先来看一下下面这段代码这段代码的作用是在数组中寻找x的位置,找到了直接返回位置,没有找到的话返回-1,用上一篇文章所学到的知识,可以很清楚的看出来,这段代码的时间复杂度为O(n)但是这段代码明显还有优化的空间,如果我们在数组中间寻找到x的话,就不需要把整个数组都循环一边了,所以可以优化为下面这段代码。...

2020-01-27 12:33:05 1949

原创 认知的局限性

有一句话大家应该都很熟悉,你知道的越多,你不知道的也就越多。如果按照我们正常的理解,你往一个杯子里面装水,水装的越多,那剩余的空间应该越小才对。但是实际的情况并不是这样的,我们每个人的认知都是由我们当前所拥有的知识量决定的,好比拿我们跟爱因斯坦来进行比较,我们的认知范围是一个比较小的圆圈,而爱因斯坦的认知范围是一个大的圆圈,由于小圆圈的周长小,接触到的面就比较少,能认识到的未知也就相对较少...

2019-11-24 18:09:41 1930

原创 Linux定时任务简述

目录0x01 介绍0x02 实践举例0x01 介绍在Linux中,可以用来做定时任务的有好几个软件,我们只说基于cron服务的crontabcron是执行定时任务的守护进程,可以在etc下找到具体的内容crontab定时任务分为两种,系统自动运行的和管理员操作的系统自动运行的主要就是系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等任务,在/etc/crontab中进...

2019-11-03 14:34:31 384

原创 Linux特殊权限详解

实际上Linux有12位权限,我们前面说的Linux权限都只说了常用的9位权限,剩下的特殊权限也经常被用来进行Linux提权,如果没有了解了的,可以移步之前的文章《Linux权限详解》、《Linux安全权限》目录0x01 介绍0x02 特殊权限详解0x01 介绍Linux一共有12位权限,除过之前说的rwxrwxrwx的9位权限,还有3位的特殊权限suid位:setuid,用S表...

2019-11-02 16:03:29 882

原创 Apache Solr velocity模板注入RCE漏洞复现

目录0x01 漏洞介绍0x02 漏洞范围0x03 漏洞复现0x01 漏洞介绍Solr是一个独立的企业级搜索应用服务器,它对外提供类似于web-service的API接口。10月31号,国外安全研究院S00pY在GitHub发布了Apache Solr Velocity模板注入RCE的poc,截至写稿之时,Apache Solr官方还未发布该漏洞的补丁。0x02 漏洞范围Apache So...

2019-11-01 11:29:12 1125

原创 域渗透 | 白银票据防御

昨天的文章中我们说了在域渗透中白银票据的利用,但是如何对其进行防御呢,如果没有看过白银票据利用的文章,请移步《域渗透 | 白银票据利用》目录0x01 介绍0x02 防御方法0x03 防御效果0x01 介绍对于白银票据的利用,我们昨天已经说的很明白了,就是因为server在接收到client发送的ticket时,server仅仅只知道自己的hash,也就是server hash,而对...

2019-10-30 22:41:42 851

原创 域渗透 | 白银票据利用

目录0x01 介绍0x02 白银票据利用0x01 介绍之前,我们已经详细说过Kerberos认证的流程,这次我们就来说说如何对其进行利用,这次主要说的是白银票据伪造(Silver Tickets)白银票据伪造利用的是Kerberos认证中的第三个步骤,在第三步的时候,client会带着ticket向server的某个服务进行请求,如果验证通过就可以访问server上的指定服务了,这里...

2019-10-30 22:35:25 2963

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除